diff --git a/.coverage b/.coverage new file mode 100644 index 0000000..7437710 Binary files /dev/null and b/.coverage differ diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ec4a626 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.pth filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml new file mode 100644 index 0000000..1cddd8d --- /dev/null +++ b/.github/workflows/codeql-analysis.yaml @@ -0,0 +1,71 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ main ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ main ] + schedule: + - cron: '40 7 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'python' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/python-package.yaml b/.github/workflows/python-package.yaml new file mode 100644 index 0000000..db58593 --- /dev/null +++ b/.github/workflows/python-package.yaml @@ -0,0 +1,45 @@ +name: Python package + +on: [push, pull_request] + +jobs: + build: + + runs-on: windows-latest + strategy: + max-parallel: 4 + matrix: + python-version: ['3.10'] + + steps: + - name: Support longpaths + run: git config --system core.longpaths true + - uses: actions/checkout@v1 + with: + lfs: 'true' + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -e .[test] + - name: Checkout submodule + run: | + git submodule sync + git submodule update --init --recursive + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest --cov=bimana --cov-report term-missing --cov-report lcov tests/ + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./coverage.lcov diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8c25ef6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ + +.vscode/ + +bimana.egg-info/ + +*.pyc diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e847094 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "third_party/DexiNed"] + path = third_party/DexiNed + url = https://github.com/AlphonsG/DexiNed diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a40e181 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,34 @@ +# How to contribute to Bimana + +:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: + +## Report issues or problems with the software + +* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/AlphonsG/BIMANA/issues). + +* If you're unable to find an open issue addressing the problem, use the relevant bug report [template](https://github.com/AlphonsG/BIMANA/issues/new/choose) to create one. + +* If not possible, you can [open a blank issue](https://github.com/AlphonsG/BIMANA/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample** or an **executable test case** demonstrating the expected behavior that is not occurring. + +## Submitting Changes + +* Open a new GitHub pull request with the change. + +* Ensure the PR description clearly describes the change. Include the relevant issue number if applicable. + +* At lease one reviewer should be added so that the code is looked over by someone else. + +Always write a clear log message for your commits, for example: + + $ git commit -m "A brief summary of the commit + > + > A paragraph describing what changed and its impact." + + ## Coding conventions + + Please follow the [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html) when contributing to the code. + + ## Seek Support + + Please feel free to send an email to the following address for other matters: + - 0go0vdp95@mozmail.com diff --git a/README.md b/README.md index ff4a40d..13a49af 100644 --- a/README.md +++ b/README.md @@ -1 +1,119 @@ -# BIMANA \ No newline at end of file +# Bimana + +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![Python package](https://github.com/AlphonsG/BIMANA/actions/workflows/python-package.yaml/badge.svg?branch=dev)](https://github.com/AlphonsG/BIMANA/actions/workflows/python-package.yaml) +[![Coverage +Status](https://coveralls.io/repos/github/AlphonsG/BIMANA/badge.svg?branch=dev)](https://coveralls.io/github/AlphonsG/BIMANA?branch=dev) +[![CodeFactor](https://www.codefactor.io/repository/github/alphonsg/bimana/badge/dev)](https://www.codefactor.io/repository/github/alphonsg/bimana/overview/dev) +[![GitHub license](https://img.shields.io/github/license/AlphonsG/BIMANA)](https://github.com/AlphonsG/BIMANA/blob/main/LICENSE) + +![](misc/images/bimana.png?raw=true "Bimana Image Analysis") + +Package for performing automated bio-image analysis tasks. + +# Table of contents +1. Installation +2. Usage +3. License +4. Community Guidelines +5. Acknowledgements +## Installation + +Bimana can be installed on Linux, Windows (with 64 bit Python) & macOS and +supports Python 3.10 and above. It is recommended to install and run Bimana +within a [virtual environment](https://docs.python.org/3/tutorial/venv.html). + +1. Download and install [Python](https://www.python.org/downloads/) (Bimana was + tested using [Python version + 3.10.6](https://www.python.org/downloads/release/python-3106/)), + [Git](https://git-scm.com/) and [Git LFS](https://git-lfs.github.com/). + Linux and macOS users must also install [libvips](https://www.libvips.org/install.html). + +2. Launch the terminal (*Linux* and *macOS* users) or command prompt (*Windows* users). The proceeding commands will be entered into the opened window1. + +3. Create and activate a virtual environment called 'bimana-env' in your desired directory: + + ```pip install --upgrade pip``` + + ```python -m venv bimana-env``` + + ```. bimana-env/bin/activate``` (*Linux* and *macOS* users) or ```bimana-env\Scripts\activate.bat``` (*Windows* users) + +4. Install PyTorch by specifying your system configuration using the official [PyTorch get started tool](https://pytorch.org/get-started/locally/) and running the generated command: +

+ centered image +

+ For example, according to the image above, Windows users without a GPU (i.e. CPU only) will run: + + ```pip3 install torch torchvision torchaudio``` + + +5. Clone this repository into your desired directory: + + ``` + git lfs install + git clone https://github.com/AlphonsG/BIMANA.git + ``` + +6. Navigate into the cloned directory: + + ```cd BIMANA``` + +7. Install Bimana: + + ``` + git submodule update --init --recursive + pip install -e . + ``` + +Notes: + - 1Confirm that the correct python version for Bimana has been installed using the `python -V` command in the terminal. If this command does not report the correct python version, try using the `python3 -v` command instead. If the second command produces the expected result, replace all `python` and `pip` commands in this guide with `python3` and `pip3`, respectively. + + - The virtual environment can be deactivated using: + + ```deactivate``` + +## Usage + +Enter `bimana -h` or `bimana --help` within the `bimana-env` environment after installation for details on how to use Bimana. + +Example commands that can be used to test Bimana using input data provided in +each folder [here](misc/examples) are given below. After +processing is finished for a given folder containing input images, multiple subfolders +containing generated outputs (e.g. images, CSV files, etc) are created. Examples of these are also provided. + +Example commands (first run `cd misc` from the cloned repository folder): + +- Histological Section Analysis + ``` + bimana histological-section-analysis --staining-amount-in-tissue-area --cilia-amount-above-tissue-area + ``` + +- Tight junction analysis + ``` + bimana tight-junction-analysis misc/examples/tight_junctions --analyse-tight-junctions --analyse-cells + ``` +- Live cell imaging metrics analysis + ``` + bimana live-cell-imaging metrics-file-processing misc/examples/live_cell_imaging + ``` + +## License + +[MIT License](LICENSE) + + +## Community guidelines + + Guidelines for third-parties wishing to: + +- Contribute to the software +- Report issues or problems with the software +- Seek support + +can be found [here](CONTRIBUTING.md). + +## Acknowledgements + +- https://github.com/xavysp/DexiNed +- https://github.com/DevonsMo/IJOQ diff --git a/bimana/__init__.py b/bimana/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bimana/__main__.py b/bimana/__main__.py new file mode 100644 index 0000000..86b88f6 --- /dev/null +++ b/bimana/__main__.py @@ -0,0 +1,11 @@ +from bimana.cli import cli + + +def main() -> int: + cli() + + return 0 + + +if __name__ == '__main__': + main() diff --git a/bimana/cli.py b/bimana/cli.py new file mode 100644 index 0000000..2228a89 --- /dev/null +++ b/bimana/cli.py @@ -0,0 +1,21 @@ +import click + +from bimana.histological_section.commands import histological_section_analysis +from bimana.tight_junctions.commands import tight_junction_analysis +from bimana.live_cell_imaging.commands import live_cell_imaging + +CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) + + +@click.group(context_settings=CONTEXT_SETTINGS) +def cli() -> None: + """ Simple command line utility called `bimana`. + + The cli is composed of commands for performing automated bio-image + analysis tasks. + """ + + +cli.add_command(histological_section_analysis) +cli.add_command(tight_junction_analysis) +cli.add_command(live_cell_imaging) diff --git a/bimana/histological_section/__init__.py b/bimana/histological_section/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bimana/histological_section/analysis.py b/bimana/histological_section/analysis.py new file mode 100644 index 0000000..046e7ee --- /dev/null +++ b/bimana/histological_section/analysis.py @@ -0,0 +1,254 @@ +from pathlib import Path +from typing import Any + +import numpy as np +import numpy.typing as npt +from bimana.utils.file_processing import crop_and_save_images, load_imgs +from bimana.utils.image_processing import (binary_to_bgr_image, + bound_foreground, + bounded_foreground_polyline, + draw_polyline, largest_objects, + remove_isolated_segmented_objects, + segment_image, + segment_polyline_bounded_region, + segment_region_above_polyline, + segment_region_within_image, + smooth_foreground_bounds, + subimage_coordinates) +from bimana.utils.quantification import percentage_foreground_in_region + +BIN_IMG_KEY = 'binary_image' +BIN_IMG_NO_ISO_KEY = 'binary_image_without_isolated_non_tissue' +POLYLINE_KEY = 'raw_tissue_boundary' +SMOOTHED_POLYLINE_KEY = 'smoothed_tissue_boundary' +POLYLINE_ORI_KEY = 'tissue_boundary_on_original' +SEGD_FG_IN_RGN_KEY = 'staining_within_tissue_boundary' +SEGD_FG_ABOVE_RGN_KEY = 'cilia_above_tissue_area' +SEGD_FG_ABOVE_RGN_ORI_KEY = 'cilia_region_on_original' +FIN_BIN_IMG_KEY = 'segmented_tissue' + + +def tissue_boundary( + img: npt.NDArray[Any], + non_tissue_lower_bgr: npt.NDArray[np.int_], + non_tissue_upper_bgr: npt.NDArray[np.int_], + selected_tissue: str = 'all', + top: int | None = None, + minimum: int | None = None, + iso_non_tissue_sens: float | None = 0.2, + smooth_segmented_tissue_boundary: bool = True, +) -> tuple[tuple[list[list[npt.NDArray[Any]]], list[list[npt.NDArray[Any]]]], + list[tuple[str, npt.NDArray[np.uint8]]]]: + """Determines the tissue boundary in an image of a histological section. + + Args: + img: A colour histological section image. + non_tissue_lower_bgr: The lower bound of BGR pixel values (all between + 0 and 255) corresponding to non-tissue that will be segmented out. + non_tissue_upper_bgr: The upper bound of BGR pixel values (all between + 0 and 255) corresponding to non-tissue that will be segmented out. + selected_tissue: What to treat as tissue after binarizing the image - + if set to all, creates a bounding polyline around all foreground + pixels in the image and treats the inner area as tissue; if set to + largest, treats only the largest group(s) of connected foreground + pixels (objects) in the image as tissue. + top: The number of top largest objects in the image to treat as + tissue, when the selected_tissue argument is set to 'largest'. + minimum: The minimum area, in pixels, for objects in the image to be + treated as tissue, when the selected_tissue argument is set to + 'largest'. + iso_non_tissue_sens: The sensitivity, between 0 and 1, of the algorithm + that identifies tissue to isolated non-tissue objects. Larger + values reduce the strictness of the criteria objects must meet to + be classified as isolated and thus ignored as non-tissue objects. + If None, will not attempt to detect and ignore isolated non-tissue + objects. + smooth_segmented_tissue_boundary: If True, smooths the generated + boundary of the tissue area. + + Returns: + A sequence of x-coordinates for the upper tissue boundary(s) across the + width of the image and the corresponding y-coordinates of lower tissue + boundary(s) across the image. Also returns a sequence of the + intermediate images generated during processing. + """ + procd_imgs = [] + + # segment image + bin_img = ~segment_image(img, non_tissue_lower_bgr, non_tissue_upper_bgr) + bgr_img = binary_to_bgr_image(bin_img) + procd_imgs.append((BIN_IMG_KEY, bgr_img)) + + if iso_non_tissue_sens is not None: + bin_img = remove_isolated_segmented_objects( + bin_img, iso_non_tissue_sens) + bgr_img = binary_to_bgr_image(bin_img) + procd_imgs.append((BIN_IMG_NO_ISO_KEY, bgr_img)) + + # determine tissue boundary + upper_lower_xs, upper_lower_ys = largest_objects(bin_img, minimum, top) \ + if selected_tissue == 'largest' else bound_foreground(bin_img) + + if not isinstance(upper_lower_xs[0], list): + upper_lower_xs, upper_lower_ys = [upper_lower_xs], [upper_lower_ys] + + tiss_img = np.zeros(bin_img.shape, bool) + polylines = [] + for i, (ul_xs, ul_ys) in enumerate(zip(upper_lower_xs, upper_lower_ys)): + polyline = bounded_foreground_polyline(ul_xs, ul_ys) + tiss_img |= segment_polyline_bounded_region(polyline, bin_img.shape) + polylines.append(polyline) + + bgr_img = binary_to_bgr_image(tiss_img) + procd_imgs.append((FIN_BIN_IMG_KEY, bgr_img)) + smd_polyline_img = polyline_img = bgr_img + + for i, (ul_xs, ul_ys) in enumerate(zip(upper_lower_xs, upper_lower_ys)): + polyline = polylines[i] + polyline_img = draw_polyline(polyline_img, polyline) + + if smooth_segmented_tissue_boundary: + ul_xs, ul_ys = smooth_foreground_bounds(bin_img, ul_xs, ul_ys) + polyline = bounded_foreground_polyline(ul_xs, ul_ys) + smd_polyline_img = draw_polyline(smd_polyline_img, polyline) + upper_lower_xs[i], upper_lower_ys[i] = ul_xs, ul_ys + + img = draw_polyline(img, polyline) + + procd_imgs.append((POLYLINE_KEY, polyline_img)) + procd_imgs.append((POLYLINE_ORI_KEY, img)) + if smooth_segmented_tissue_boundary: + procd_imgs.append((SMOOTHED_POLYLINE_KEY, smd_polyline_img)) + + return (upper_lower_xs, upper_lower_ys), procd_imgs + + +def amount_staining_in_tissue_area( + img: npt.NDArray[Any], + upper_lower_xs: list[list[npt.NDArray[Any]]], + upper_lower_ys: list[list[npt.NDArray[Any]]], + stain_lower_bgr: npt.NDArray[np.int_], + stain_upper_bgr: npt.NDArray[np.int_], +) -> tuple[float, int, int, list[tuple[str, npt.NDArray[np.uint8]]]]: + """Finds how much of a histological section image's tissue area is stained. + + Args: + img: A colour histological section image. + upper_lower_xs: A sequence of the x-coordinates of the upper and lower + tissue boundary(s) across the image. + upper_lower_ys: A sequence of the y-coordinates of the upper and lower + tissue boundary(s) across the image. + stain_lower_bgr: The lower bound of BGR pixel values (all between + 0 and 255) corresponding to staining. + stain_upper_bgr: The upper bound of BGR pixel values (all between + 0 and 255) corresponding to staining. + + Returns: + The percentage of a histological section image's tissue area that is + stained, along with the corresponding amount of staining and size of + the tissue area (in pixels), followed by a sequence of the intermediate + images generated during processing. + """ + # calculate percentage of staining in tissue region + tissue_mask = np.zeros(img.shape[:2], bool) + procd_img = img.copy() + polylines = [] + for ul_xs, ul_ys in zip(upper_lower_xs, upper_lower_ys): + polyline = bounded_foreground_polyline(ul_xs, ul_ys) + tissue_mask = tissue_mask | segment_polyline_bounded_region( + polyline, img.shape[:2]) + polylines.append(polyline) + + stain_mask = segment_region_within_image(img, stain_lower_bgr, + stain_upper_bgr, tissue_mask) + pct_stain, stain_amt, tiss_size = percentage_foreground_in_region( + stain_mask, tissue_mask) + + procd_img[~stain_mask] = (0, 0, 0) + for polyline in polylines: + procd_img = draw_polyline(procd_img, polyline) + + return pct_stain, stain_amt, tiss_size, [(SEGD_FG_IN_RGN_KEY, procd_img)] + + +def amount_cilia_above_tissue_area( + img: npt.NDArray[Any], + upper_lower_xs: list[list[npt.NDArray[Any]]], + upper_lower_ys: list[list[npt.NDArray[Any]]], + cilia_lower_bgr: npt.NDArray[np.int_], + cilia_upper_bgr: npt.NDArray[np.int_], + thickness: int, +) -> tuple[float, int, int, list[tuple[str, npt.NDArray[np.uint8]]]]: + """Finds amount of cilia above a histological section image's tissue area. + + Args: + img: A colour histological section image. + upper_xs: A sequence of the x-coordinates of the upper and lower tissue + boundary(s) across the image. + upper_ys: A sequence of the y-coordinates of the upper and lower tissue + boundary(s) across the image. + cilia_lower_bgr: The lower bound of BGR pixel values (all between + 0 and 255) corresponding to cilia. + cilia_upper_bgr: The upper bound of BGR pixel values (all between + 0 and 255) corresponding to corresponding to cilia. + thickness: The expected vertical thickness, in pixels, of the + cilia-containing region above the tissue area. + + Returns: + The percentage of the region above the tissue area of an image of a + histological section that is occupied by cilia, along with the + corresponding amount of cilia and size of the cilia-containing region + (in pixels), followed by a sequence of the intermediate images + generated during processing. + """ + # calculate percentage of cilia above tissue region + cilia_region_mask = np.zeros(img.shape[:2], bool) + procd_img = img.copy() + polylines = [] + for ul_xs, ul_ys in zip(upper_lower_xs, upper_lower_ys): + polyline = np.array([[x, y] for x, y in zip(ul_xs[0], ul_ys[0])]) + mask = segment_region_above_polyline( + polyline, thickness, img.shape[:2]) + cilia_region_mask |= mask + + reg_coords_xs, reg_coords_ys = largest_objects(mask) + for rc_xs, rc_ys in zip(reg_coords_xs, reg_coords_ys): + polyline = bounded_foreground_polyline(rc_xs, rc_ys) + polylines.append(polyline) + + cilia_mask = segment_region_within_image( + img, cilia_lower_bgr, cilia_upper_bgr, cilia_region_mask) + pct_cilia, cilia_amt, reg_size = percentage_foreground_in_region( + cilia_mask, cilia_region_mask) + + procd_img[~cilia_mask] = (0, 0, 0) + + for polyline in polylines: + procd_img = draw_polyline(procd_img, polyline) + + return pct_cilia, cilia_amt, reg_size, [(SEGD_FG_ABOVE_RGN_KEY, procd_img)] + + +def crop_and_save_tissue_sections( + input_dir: Path, + shrink_factor: int | None = 1000, +) -> list[Path]: + """Crops and saves tissue sections from images in the input directory. + + Args: + input_dir: The input directory. + shrink_factor: Factor to shrink images by before loading them into + memory. + + Returns: + The directories containing the saved tissue sections. Each directory + contains one tissue section image. + """ + imgs = load_imgs(input_dir, shrink_factor) + output_paths = [] + for f, img in imgs: + tissue_section_coords = subimage_coordinates(img) + tissue_section_coords *= shrink_factor + output_paths += crop_and_save_images(f, tissue_section_coords, True) + + return output_paths diff --git a/bimana/histological_section/commands.py b/bimana/histological_section/commands.py new file mode 100644 index 0000000..1db4f89 --- /dev/null +++ b/bimana/histological_section/commands.py @@ -0,0 +1,266 @@ +from collections import defaultdict +from pathlib import Path + +import click + +from bimana.histological_section.analysis import ( + amount_cilia_above_tissue_area, amount_staining_in_tissue_area, + crop_and_save_tissue_sections, tissue_boundary) +from bimana.utils.commands import parse_input_bgr +from bimana.utils.file_processing import (DirFormat, get_dirs, load_imgs, + save_csv, save_imgs) +from bimana.utils.image_processing import scale_bgr_values + +DIR_FORMAT = DirFormat(1).name +NON_TISSUE_LOWER_BGR = ('210', '210', '210') +NON_TISSUE_UPPER_BGR = ('255', '255', '255') +STAIN_LOWER_BGR = ('0', '0', '0') +STAIN_UPPER_BGR = ('255', '255', '150') +CILIA_LOWER_BGR = ('220', '220', '220') +CILIA_UPPER_BGR = ('245', '245', '245') +ISO_NON_TISSUE_SENS = 0.08 +NO_SMOOTH_SEGMENTED_TISSUE_BOUNDARY = False +CILIA_REGION_THICKNESS = 15 +DONT_SAVE_PROCD_IMGS = False +MULTI_SECTION_IMAGES = False +IMAGE_SHRINK_FACTOR = None +DONT_FILTER_ISO_NON_TISSUE = False + +METRICS_CSV_FILENAME = 'metrics.csv' + + +@click.command() +@click.argument('root_directory', type=click.Path( + exists=True, file_okay=False)) +@click.option('--staining-amount-in-tissue-area', is_flag=True, + help='Calculate how much of a histological section image\'s ' + 'tissue area is stained.') +@click.option('--cilia-amount-above-tissue-area', is_flag=True, + help='Calculate the amount of cilia above a histological ' + 'section image\'s tissue area.') +@click.option('--selected-tissue', type=click.Choice(['all', 'largest'], + case_sensitive=False), default='all', show_default=True, + help='What to treat as tissue after binarizing the ' + 'image - if set to all, creates a bounding polyline around all ' + 'foreground pixels in the image and treats the inner area as ' + 'tissue; if set to largest, treats only the largest group(s) of ' + 'connected foreground pixels (objects) in the image as tissue.') +@click.option('--top', type=click.IntRange(1), + help='The number of top largest objects in the image to treat ' + 'as tissue, when \'largest\' is chosen for the ' + '--selected-tissue option.') +@click.option('--minimum', type=click.IntRange(0), + help='The minimum area, in pixels, for objects in the image to ' + 'treat as tissue, when \'largest\' is chosen for the ' + '--selected-tissue option.') +@click.option('--directory-format', type=click.Choice([DirFormat(1).name, + DirFormat(2).name, DirFormat(3).name], case_sensitive=False), + default=DIR_FORMAT, show_default=True, + help='Location of image files to process in the root directory ' + f'tree - if set to {DirFormat(1).name}, processes images ' + f'in the root directory; if set to {DirFormat(2).name}, ' + 'processes images in subdirectories of the root directory; ' + f'if set to {DirFormat(3).name}, processes images ' + 'in all directories of the root directory tree.') +@click.option('--non-tissue-lower-colour-limit', nargs=3, + default=NON_TISSUE_LOWER_BGR, show_default=True, + help='Control the region of the image identified as tissue - ' + 'pixels in the image with blue, green and red intensity values ' + 'greater than the provided values will be considered ' + 'non-tissue.') +@click.option('--non-tissue-upper-colour-limit', nargs=3, + default=NON_TISSUE_UPPER_BGR, show_default=True, + help='Control the region of the image identified as tissue - ' + 'pixels in the image with blue, green and red intensity values ' + 'lesser than the provided values will be considered non-tissue.') +@click.option('--staining-lower-colour-limit', nargs=3, + default=STAIN_LOWER_BGR, show_default=True, + help='Control the colour of the staining to identify in the ' + 'image - pixels in the image with blue, green and red intensity ' + 'values greater than the provided values will be considered ' + 'staining.') +@click.option('--staining-upper-colour-limit', nargs=3, + default=STAIN_UPPER_BGR, show_default=True, + help='Control the colour of the staining to identify in the ' + 'image - pixels in the image with blue, green and red intensity ' + 'values lesser than the provided values will be considered ' + 'staining.') +@click.option('--cilia-lower-colour-limit', nargs=3, + default=CILIA_LOWER_BGR, show_default=True, + help='Control the colour of the cilia to identify in the ' + 'image - pixels in the image with blue, green and red intensity ' + 'values greater than the provided values will be considered ' + 'cilia.') +@click.option('--cilia-upper-colour-limit', nargs=3, default=CILIA_UPPER_BGR, + show_default=True, + help='Control the colour of the cilia to identify in the ' + 'image - pixels in the image with blue, green and red intensity ' + 'values lesser than the provided values will be considered ' + 'cilia.') +@click.option('--no-isolated-non-tissue-filtering', is_flag=True, + default=DONT_FILTER_ISO_NON_TISSUE, show_default=True, + help='Do not filter out isolated objects identified in the ' + 'image as non-tissue.') +@click.option('--sensitivity-to-isolated-non-tissue', + type=click.FloatRange(0, 1), default=ISO_NON_TISSUE_SENS, + show_default=True, + help='Filter out more isolated objects identified in the image ' + 'as non-tissue with greater sensitivity values.') +@click.option('--no-tissue-boundary-smoothing', is_flag=True, + default=NO_SMOOTH_SEGMENTED_TISSUE_BOUNDARY, show_default=True, + help='Do not smooth the identified tissue boundary as a post ' + 'processing step.') +@click.option('--cilia-region-thickness', type=click.IntRange(1), + default=CILIA_REGION_THICKNESS, show_default=True, + help='Vertical thickness, in pixels, of the cilia-containing ' + 'region above the tissue area.') +@click.option('--no-image-processing-visualization', is_flag=True, + help='Do not save image files visualizing different stages of ' + 'image processing.') +@click.option('--multi-section-images', is_flag=True, + help='Treat input images as large images containing multiple ' + 'tissue sections - will crop and save individual tissue ' + 'sections as separate files, then analyse.') +@click.option('--image-shrink-factor', type=click.IntRange(1, min_open=True), + help='Factor to shrink images by before loading into memory.') +def histological_section_analysis( + root_directory: str | Path, + staining_amount_in_tissue_area: bool, + cilia_amount_above_tissue_area: bool, + selected_tissue: str = 'all', + top: int | None = None, + minimum: int | None = None, + directory_format: str = DIR_FORMAT, + non_tissue_lower_colour_limit: tuple[str, str, str] = NON_TISSUE_LOWER_BGR, + non_tissue_upper_colour_limit: tuple[str, str, str] = NON_TISSUE_UPPER_BGR, + staining_lower_colour_limit: tuple[str, str, str] = STAIN_LOWER_BGR, + staining_upper_colour_limit: tuple[str, str, str] = STAIN_UPPER_BGR, + cilia_lower_colour_limit: tuple[str, str, str] = CILIA_LOWER_BGR, + cilia_upper_colour_limit: tuple[str, str, str] = CILIA_UPPER_BGR, + no_isolated_non_tissue_filtering: bool = DONT_FILTER_ISO_NON_TISSUE, + sensitivity_to_isolated_non_tissue: float = ISO_NON_TISSUE_SENS, + no_tissue_boundary_smoothing: bool = NO_SMOOTH_SEGMENTED_TISSUE_BOUNDARY, + cilia_region_thickness: int = CILIA_REGION_THICKNESS, + no_image_processing_visualization: bool = DONT_SAVE_PROCD_IMGS, + multi_section_images: bool = MULTI_SECTION_IMAGES, + image_shrink_factor: int | None = IMAGE_SHRINK_FACTOR, +) -> None: + """Analyse histological section images. + + Analysis consists of calculating how much of a histological section image's + tissue area is stained as a percentage and/or the amount of cilia in the + region above a histological section image's tissue area as a percentage. + Saves generated data in the root directory tree. + + ROOT_DIRECTORY: + + The directory to search for images to process in. When using the web + interface, directory must be zipped. + + + IMPORTANT NOTES + + Colour limit options: + + Options containing the term '...-colour-limit' accept 3 input values. The + first, second and third input value is a blue, green and red pixel + intensity value, respectively. Each intensity value can be either a whole + number between 0 and 255 (raw pixel value) or a decimal number from 0.0 to + 1.0 (representing 0% to 100% intensity) which will be converted to a raw + pixel value internally. Each pixel in any given colour image is composed of + blue, green and red intensity values which result in the observable colour + of the pixel, such as bright yellow. Specific details on what the inputs to + each '...-colour-limit' option affect is provided in the corresponding help + message. + + Default option values: + + The default option values were fine tuned for processing histological + sections of epithelium with alcian blue stain (a mucus stain), for example, + https://github.com/AlphonsG/BIMANA + """ + # check inputs + if not (staining_amount_in_tissue_area or cilia_amount_above_tissue_area): + click.echo('Invalid inputs: --staining-amount-in-tissue-area and/or ' + '--cilia-amount-above-tissue-area option(s) must be ' + 'selected.') + return + + try: + non_tissue_lower_bgr = parse_input_bgr(non_tissue_lower_colour_limit) + non_tissue_upper_bgr = parse_input_bgr(non_tissue_upper_colour_limit) + stain_lower_bgr = parse_input_bgr(staining_lower_colour_limit) + stain_upper_bgr = parse_input_bgr(staining_upper_colour_limit) + cilia_lower_bgr = parse_input_bgr(cilia_lower_colour_limit) + cilia_upper_bgr = parse_input_bgr(cilia_upper_colour_limit) + except ValueError: + click.echo('Invalid value provided for \'...--colour-limit\' ' + 'option(s).') + return + + non_tiss_sens = (not no_isolated_non_tissue_filtering and + sensitivity_to_isolated_non_tissue) or None + + root_dir = output_dir = Path(root_directory) + output_dirs = [] + metrics = defaultdict(list) + input_dirs = get_dirs(root_dir, DirFormat[directory_format]) + + if multi_section_images: + orig_input_dirs = input_dirs.copy() + input_dirs = [] + for input_dir in orig_input_dirs: + input_dirs += crop_and_save_tissue_sections(input_dir) + + for curr_dir in input_dirs: + if curr_dir in output_dirs: # previously generated output directory + continue + for f, img in load_imgs(curr_dir, image_shrink_factor): + curr_output_dir = output_dir / curr_dir.relative_to( + root_dir) / f'{f.stem}_{f.suffix[1:]}' + output_dirs.append(curr_output_dir) + metrics['Image'].append(f.name) + metrics['File path'].append(str(f)) + + procd_imgs = [] + + upper_lower_xs_ys, curr_procd_imgs = tissue_boundary( + img, scale_bgr_values(non_tissue_lower_bgr), + scale_bgr_values(non_tissue_upper_bgr), selected_tissue, + top, minimum, non_tiss_sens, + not no_tissue_boundary_smoothing) + procd_imgs += curr_procd_imgs + + if staining_amount_in_tissue_area: + results = amount_staining_in_tissue_area( + img, upper_lower_xs_ys[0], upper_lower_xs_ys[1], + scale_bgr_values(stain_lower_bgr), + scale_bgr_values(stain_upper_bgr)) + pct_stain, stain_amt, tiss_size, curr_procd_imgs = results + procd_imgs += curr_procd_imgs + + metrics['Amount of staining (no. pixels)'].append(stain_amt) + metrics['Tissue area size (no. pixels)'].append(tiss_size) + metrics['Percentage of staining in tissue area (%)'].append( + pct_stain) + + if cilia_amount_above_tissue_area: + results = amount_cilia_above_tissue_area( + img, upper_lower_xs_ys[0], upper_lower_xs_ys[1], + scale_bgr_values(cilia_lower_bgr), + scale_bgr_values(cilia_upper_bgr), cilia_region_thickness) + pct_cilia, cilia_amt, reg_size, curr_procd_imgs = results + procd_imgs += curr_procd_imgs + + metrics['Amount of cilia (no. pixels)'].append(cilia_amt) + metrics['Cilia-containing region size (no. pixels)'].append( + reg_size) + metrics['Percentage of region occupied by cilia (%)'].append( + pct_cilia) + + if not no_image_processing_visualization: + curr_output_dir.mkdir(parents=True, exist_ok=True) + save_imgs(procd_imgs, curr_output_dir) + + # save metrics + save_csv(metrics, output_dir / METRICS_CSV_FILENAME) diff --git a/bimana/live_cell_imaging/__init__.py b/bimana/live_cell_imaging/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bimana/live_cell_imaging/commands.py b/bimana/live_cell_imaging/commands.py new file mode 100644 index 0000000..cb1e074 --- /dev/null +++ b/bimana/live_cell_imaging/commands.py @@ -0,0 +1,11 @@ +import click +from bimana.live_cell_imaging.metrics_file_processing import ( + metrics_file_processing) + + +@click.group(help='Process live cell imaging data.') +def live_cell_imaging() -> None: + pass + + +live_cell_imaging.add_command(metrics_file_processing) diff --git a/bimana/live_cell_imaging/metrics_file_processing.py b/bimana/live_cell_imaging/metrics_file_processing.py new file mode 100644 index 0000000..87a74de --- /dev/null +++ b/bimana/live_cell_imaging/metrics_file_processing.py @@ -0,0 +1,604 @@ +import os +import re +from collections import defaultdict +from pathlib import Path +from statistics import mean, stdev +from typing import Any + +import click +import matplotlib.pyplot as plt +import numpy as np +import numpy.typing as npt +import pandas as pd +from matplotlib.ticker import MultipleLocator + +MEAN_COL, STD_COL, SEM_COL = 'Average', 'StDev', 'SEM' +VEHICLE_CONTROL = 'DMSO 0.05%' +POSITIVE_CONTROL = 'Pos 10 µM' +NEGATIVE_CONTROL = 'UT 100%' +PLACEHOLDER_COMPOUNDS = 'CA CB CC CD' +DO_NOT_USE_NOTES_COMPOUNDS = False +DO_NOT_GENERATE_FIGURES = False +FIGURE_TIMEPOINTS = '6 12 24' +FIGURE_METRIC_THRESHOLD = 120 + + +class MetricsTxtFileProcessor: + """Processes raw .txt files containing live cell imaging metrics. + + The .txt files are those generated by Incuctye Software from a live cell + imaging experiment, such as airway epithelium wound closure experiments + utilizing, for example, IncuCyte® ImageLock 96-well plates, IncuCyte® + ZOOM, etc, and, for example, various drug compounds, such as DMSO for + control, etc. From these input files, generates data such as image figures + and excel spreed sheets for analysis. + + Attributes: + txt_file: The path to the input .txt file. + metrics_df: A data frame containing the metrics. + info_df: A data frame containing the experiment information. + time_df: A data frame containing the time data. + stats_df: A data frame containing the metrics and computed statistics. + ctrl_df: A data frame with the metrics for the control compound. + dfs: A dictionary of the split data frames, with keys of the compounds + and concentrations per compound. + fld_chg_df: A data frame containing the metrics in terms of fold + changes. + fld_chg_stats_df: A data frame containing the metrics and computed + statistics in terms of fold changes. + """ + + def __init__(self, txt_file: Path) -> None: + """Inits MetricsTxtFileProcessor with the .txt file path. + + Args: + txt_file: The path to the input .txt file. + """ + self.txt_file = txt_file + self.stats_df = None + + def _plot_summary( + self, + df: pd.DataFrame, + ax: plt.Axes, + metric_threshold: int | None = None, + ) -> None: + x = [mean(df[c]) for c in df] + y = [i for i in range(1, len(df.columns) + 1)] + e = [stdev(df[c]) for c in df] + + ax.errorbar(x, y, xerr=e, linestyle='None', marker='|', color='k', + capsize=3.5, markersize=15) + ax.set_ylim(0, len(df.columns) + 1) + ax.set(yticks=[i for i in range(1, len(df.columns) + 1)], + yticklabels=[f'{c}h' for c in df.columns]) + + colour = np.random.rand(3,) + for col in df: + x = list(df[col]) + y = [list(df.columns).index(col) + 1] * len(x) + ax.plot(x, y, c=colour, marker='o', linestyle='None', + markeredgecolor='k') + + if metric_threshold is not None: + ax.vlines(metric_threshold, 0, len(df.columns) + 1, linewidth=1, + linestyles='dashed') + + ax.xaxis.set_major_locator(MultipleLocator(100)) + ax.xaxis.set_minor_locator(MultipleLocator(50)) + ax.set_xlim(0, 300) + + def _flag(self, x: npt.ArrayLike) -> npt.NDArray[Any]: + + return np.where(x > 25, 'background-color: red;text-align: center', + None) + + def _comp_col_wdhs(self, df: pd.DataFrame) -> list[int]: + col_wdhs = [] + for i in range(0, len(df.columns)): + for x in df.iloc[:, i]: + try: + val_len = len(str(round(x, 8))) + except TypeError: + val_len = len(str(x)) + col_wdhs.append(max([val_len, len(df.columns[i])])) + + col_wdhs = [x if x != 0 else col_wdhs[i - 1] for i, x in + enumerate(col_wdhs)] + + return col_wdhs + + def _get_compounds_and_concentrations(self, df: pd.DataFrame) -> list[str]: + compds_concs = [well.rsplit(' ', 1)[0] for well in df.columns if + well != ''] + compds_concs = list(dict.fromkeys(compds_concs).keys()) + + return compds_concs + + def process( + self, + use_notes_compounds: bool, + placeholder_compounds: list[str], + vehicle_control: str, + fig_tpts: list[int], + ) -> None: + """Processes raw .txt by generating corresponding data frames. + + Args: + use_notes_compounds: Replace placeholder compound names in the main + header with compound names listed in the 'Notes' of the input + text file. + placeholder_compounds: The placeholder compound names (to be + replaced with names from the 'Notes' section) in the main + header of input text files. + vehicle_control: The vehicle control used in the experiment. + fig_tpts: The key experiment time points (in hours). + """ + self.metrics_df, self.info_df, self.time_df = self.create_dataframes() + if use_notes_compounds: + self.metrics_df = self.use_notes_compounds( + self.metrics_df, self.info_df, placeholder_compounds) + + self.stats_df = self.compute_stats(self.metrics_df) + self.ctrl_df = self.get_compound_dataframe(self.stats_df, + vehicle_control) + self.fld_chg_df = self.compute_fold_changes(self.metrics_df, + self.ctrl_df) + self.fld_chg_stats_df = self.compute_stats(self.fld_chg_df) + self.compds_df = self.get_timepoints_dataframe( + self.fld_chg_df, self.time_df, fig_tpts) + self.dfs = self.split_dataframe(self.compds_df) + + def create_dataframes( + self, + ) -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: + """Creates data frames from the input .txt file. + + Returns: + A data frame containing the metrics, a data frame containing the + time data, and a data frame containing the experiment information. + """ + with open(self.txt_file, encoding='utf-8') as f: + num_cols = max(len(line.split('\t')) for line in f) + f.seek(0) + df = pd.read_csv(f, names=range(num_cols), delimiter='\t', + header=None) + + if df.loc[6, 0] is not np.nan: + df.loc[5.5] = [np.nan] * num_cols + df = df.sort_index().reset_index(drop=True) + + df.columns = df[7:8].values.tolist()[0] + info_df, df = df.iloc[0:6, 0].copy(), df[8::] + info_df = info_df.to_frame() + info_df.columns = np.arange(1) + df = df.replace(r'^\s*$', np.nan, regex=True) + df = pd.concat([df.iloc[:, 0], df.iloc[:, 1::].apply(pd.to_numeric)], + axis=1) + + time_df, df = df.iloc[:, 0:2].copy(), df.iloc[:, 2::] + prev_compd = df.columns[0].rsplit(' ', 1)[0] + if ' ' not in df.columns[0]: + prev_compd = re.findall(r'\d+', df.columns[0])[-1] + + df.insert(len(df.columns), '', '', True) + offset = 0 + for i, well in enumerate(df.iloc[:, 0:-1]): + if ((' ' in well and (curr_compd := well.rsplit( + ' ', 1)[0]) != prev_compd) or (' ' not in well and ( + curr_compd := re.findall( + r'\d+', well)[-1]) != prev_compd)): + df.insert(i + offset, '', '', True) + offset += 1 + prev_compd = curr_compd + + return df, info_df, time_df + + def compute_stats(self, metrics_df: pd.DataFrame) -> pd.DataFrame: + """Computes the statistics of a metrics data frame. + + Statistics consist of the mean, standard deviation and standard error + of the mean across adjacent rows in the data frame, added as new + columns. + + Args: + metrics_df: The metrics data frame. + + Returns: + The metrics data frame with computed statistics. + """ + stats_df = metrics_df.copy() + metrics = defaultdict(list) + offset = 0 + for i, well in enumerate(metrics_df): + if well == '': + means = [mean(ms) for ms in metrics.values()] + stds = [stdev(ms) for ms in metrics.values()] + sems = [stds[i] / means[i] * 100 if means[i] != 0 else 0 for i + in range(0, len(metrics))] + stats_df.insert(i + offset, MEAN_COL, means, True) + stats_df.insert(i + 1 + offset, STD_COL, stds, True) + stats_df.insert(i + 2 + offset, SEM_COL, sems, True) + offset += 3 + metrics = defaultdict(list) + else: + for i, m in enumerate(metrics_df[well]): + if not np.isnan(m): + metrics[i].append(m) + + return stats_df + + def get_compound_dataframe( + self, + metrics_df: pd.DataFrame, + compd: str, + ) -> pd.DataFrame | None: + """Gets the metrics data frame for the specified compound. + + Args: + metrics_df: The metrics data frame. + compd: The specified compound. + + Returns: + The metrics data frame for the specified compound. + """ + start_idx = end_idx = None + for i, well in enumerate(metrics_df): + if compd in well and start_idx is None: + start_idx = i + elif start_idx is not None and well == '': + end_idx = i + break + + if start_idx is None or end_idx is None: + return + + compd_df = metrics_df.iloc[:, start_idx: end_idx + 1] + + return compd_df + + def compute_fold_changes( + self, + metrics_df: pd.DataFrame, + ctrl_df: pd.DataFrame, + ) -> pd.DataFrame: + """Computes fold changes for the metrics data frame. + + Fold changes are computed relative to the control control compound. + + Args: + metrics_df: The metrics data frame. + ctrl_df: A data frame with the metrics for the control compound. + + Returns: + A metrics data frame with fold changes. + """ + fld_chg_df = metrics_df.copy() + ctrl_idx = 0 + for well in metrics_df: + if well != '': + fld_chg_df[well] /= ctrl_df[MEAN_COL] + fld_chg_df[well] *= 100 + ctrl_idx += 1 + else: + ctrl_idx = 0 + + fld_chg_df.fillna(0, inplace=True) + + return fld_chg_df + + def get_timepoints_dataframe( + self, + metrics_df: pd.DataFrame, + time_df: pd.DataFrame, + timepoints: list[int], + ) -> pd.DataFrame: + """Gets the metrics data frame for the specified time points only. + + Args: + metrics_df: The metrics data frame. + time_df: The time data frame. + timepoints: A sequence of time points to select. + + Returns: + The metrics data frame for the specified time points. + """ + df = pd.concat([time_df, metrics_df], axis=1) + compds_df = df[time_df['Elapsed'].isin(timepoints)] + + return compds_df + + def split_dataframe( + self, + metrics_df: pd.DataFrame, + ) -> dict[str, dict[str, pd.DataFrame]] | None: + """Splits a data frame by empty columns into multiple data frames. + + Args: + metrics_df: The metrics data frame. + + Returns: + A dictionary of the split data frames, with keys of the compounds + and concentrations per compound. + """ + compds_concs = self._get_compounds_and_concentrations( + metrics_df.iloc[:, 2::]) + dfs = {} + i = 0 + for j in range(0, len(metrics_df.columns)): + if metrics_df.columns[j] == '': + compd, conc = compds_concs[i].split(' ', 1) + compd_df = self.get_compound_dataframe(metrics_df, + compds_concs[i]) + dfs.setdefault(compd, {}) + compd_df = pd.concat([metrics_df['Elapsed'], compd_df], axis=1) + columns = compd_df['Elapsed'] + compd_df = compd_df.iloc[:, 1:-1].transpose() + compd_df.columns = list(columns) + dfs[compd][conc] = compd_df + i += 1 + + return dfs + + def generate_compound_summary_figs( + self, + veh_ctrl: str, + pos_ctrl: str, + neg_ctrl: str, + metric_threshold: int, + output_dir: Path, + dpi: int = 600, + ) -> None: + """Generates and saves figures visualizing experiment data. + + Args: + veh_ctrl: The name of the vehicle control. + pos_ctrl: The name of the positive control. + neg_ctrl: The name of the negative control. + metric_threshold: The metric threshold to show in the generated + figures. + output_dir: The output directory to save figures in. + dpi: The dpi of the figures. + """ + dfs = self.dfs + compds = list(dfs.keys()) + num_ctrls = 0 + for ctrl in [pos_ctrl, neg_ctrl]: + if ctrl in compds: + num_ctrls += 1 + compds.remove(ctrl) + + num_axes = len(compds) + num_ctrls + if veh_ctrl in compds: + num_axes -= 1 + np.random.seed(0) + figs = {} + for compd in compds: + if compd == veh_ctrl: + continue + fig, axes = plt.subplots(num_axes, figsize=(6, 10), sharex=True) + if not isinstance(axes, list) and not isinstance(axes, np.ndarray): + axes = [axes] + i = 0 + last_ctrl_idx = None + for ctrl, label in zip([neg_ctrl, pos_ctrl], + ['-ve\nControl', '+ve\nControl']): + try: + df = list(dfs[ctrl].values())[0] + except KeyError: + continue + + self._plot_summary(df, axes[i], metric_threshold) + axes[i].set_ylabel(label) + last_ctrl_idx = i + i += 1 + + for conc, df in dfs[compd].items(): + self._plot_summary(df, axes[i], metric_threshold) + axes[i].set_ylabel(conc) + i += 1 + if last_ctrl_idx is not None: + axes[last_ctrl_idx].tick_params(axis='x', which='both', + bottom=False) + axes[last_ctrl_idx].spines['bottom'].set_linestyle((0, (8, 5))) + axes[last_ctrl_idx].spines['bottom'].set_color('red') + + for x in range(0, i): + axes[x].spines['top'].set_visible(False) + axes[x].spines['right'].set_visible(False) + if x == len(axes) - 1 or last_ctrl_idx == x: + continue + axes[x].spines['bottom'].set_visible(False) + axes[x].axes.get_xaxis().set_visible(False) + + plt.suptitle(compd, fontweight='bold', y=1) + plt.xlabel('Wound Closure Relative to VEH (%)') + fig.subplots_adjust(hspace=0) + plt.setp([a.get_xticklabels() for a in fig.axes[:-1]], + visible=False) + fig.tight_layout() + figs[compd] = plt.gcf() + + for compd, fig in figs.items(): + fig.savefig(os.path.join(output_dir, f'{compd}_wound_closure.png'), + dpi=dpi) + plt.close(fig) + + def use_notes_compounds( + self, + metrics_df: pd.DataFrame, + info_df: pd.DataFrame, + ph_compds: list[str], + ) -> pd.DataFrame: + """Uses compounds from the experiment notes in the metrics data frame. + + Hence replaces the existing (placeholder) compounds in the metrics data + frame header. The compounds in the notes must be separated by an + underscore e.g. "Notes: C55_C56_C57_C58". + + Args: + metrics_df: The metrics data frame. + info_df: The experiment information data frame containing the + notes. + ph_compds: A sequence of names for the placeholder compounds to + replace in the metrics data frame header. Each compound in the + experiment notes will be mapped to each placeholder in this + sequence in order. + """ + notes_compds = info_df.iloc[4][0].split('Notes: ')[1] + notes_compds = notes_compds.split('_') + compd_map = {ph_compd: notes_compd for ph_compd, notes_compd in zip( + ph_compds, notes_compds)} + columns = list(metrics_df.columns) + + for i, df_compd in enumerate(columns): + df_compd = df_compd.split(' ')[0] + if df_compd in compd_map: + columns[i] = columns[i].replace(df_compd, compd_map[df_compd]) + metrics_df.columns = columns + + return metrics_df + + def gen_analysed_excel( + self, + output_path: Path, + ) -> None: + """Generates an excel spreadsheet from data frames and saves as a file. + + Args: + output_path: The path of the output excel file to create. + """ + df = self.stats_df + fld_chg_df = self.fld_chg_stats_df + time_df = self.time_df + info_df = self.info_df + with pd.ExcelWriter(output_path) as writer: + workbook = writer.book + info_df.to_excel(writer, startrow=0, index=False, header=False) + ws = writer.sheets['Sheet1'] + header_format = workbook.add_format({'bold': True, + 'valign': 'centre'}) + old_headers = list(df.columns) + header_mapping2 = [x for x in old_headers] + header_mapping = [i for i, _ in enumerate(old_headers)] + + old_headers = list(df.columns) + header_mapping2 = list(time_df.columns) + [x for x in old_headers] + header_mapping = [i for i, _ in enumerate(old_headers)] + df.columns = header_mapping + fld_chg_df.columns = header_mapping + df = pd.concat([time_df, df], axis=1) + fld_chg_df = pd.concat([time_df, fld_chg_df], axis=1) + df.columns = header_mapping2 + fld_chg_df.columns = header_mapping2 + old_headers = list(df.columns) + header_mapping = [i for i, _ in enumerate(old_headers)] + + df.to_excel(writer, startrow=8, index=False, header=False) + + mean_cols = [i for i, x in enumerate(old_headers) if x == STD_COL] + fld_chg_df.columns = pd.Index(header_mapping) + fld_chg_df_style = fld_chg_df.style.apply(self._flag, axis=0, + subset=mean_cols) + mean_cols = [i for i, x in enumerate(old_headers) if x == SEM_COL] + fld_chg_df_style.columns = pd.Index(header_mapping) + fld_chg_df_style = fld_chg_df_style.apply(self._flag, axis=0, + subset=mean_cols) + + fld_chg_df_style.to_excel(writer, startrow=len(df) + 10, + index=False, header=False) + fld_chg_df.columns = header_mapping2 + for col_num, value in enumerate(df.columns.values): + ws.write(7, col_num, value, header_format) + + for col_num, value in enumerate(fld_chg_df.columns.values): + ws.write(len(df) + 9, col_num, value, header_format) + + for i, wdh in enumerate(self._comp_col_wdhs(df)): + ws.set_column(i, i, wdh) + + for i in range(7, len(df) + 10 + len(df)): + cell_format = workbook.add_format({'valign': 'centre'}) + ws.set_row(i, cell_format=cell_format) + + +@click.command() +@click.argument('root_directory', type=click.Path( + exists=True, file_okay=False)) +@click.option('--vehicle-control', default=VEHICLE_CONTROL, show_default=True, + help='Vehicle control used in the experiment.') +@click.option('--positive-control', default=POSITIVE_CONTROL, + show_default=True, + help='Positive control used in the experiment.') +@click.option('--negative-control', default=NEGATIVE_CONTROL, + show_default=True, + help='Negative control used in the experiment') +@click.option('--placeholder-compounds', required=True, show_default=True, + default=PLACEHOLDER_COMPOUNDS, help='The placeholder ' + 'compound names (to be replaced with names from the \'Notes:\' ' + 'section) in the main header of input text files.') +@click.option('--do-not-use-notes-compounds', is_flag=True, + help='Do not use compound names listed in the \'Notes\' section ' + 'of input text files (by mapping compounds names in notes to ' + 'compound name placeholders in the main header columns), ' + 'instead use compound names in the main header.') +@click.option('--do-not-generate-figures', is_flag=True, + help='Do not generate box plot figures for the wound closure ' + 'over vehicle control (%) at various time points and ' + 'concentrations to summarize compound performance.') +@click.option('--figure-timepoints', required=True, show_default=True, + default=FIGURE_TIMEPOINTS, help='The time points to show (in ' + 'hours) in the generated figures.') +@click.option('--figure-metric-threshold', default=FIGURE_METRIC_THRESHOLD, + show_default=True, + help='The metric threshold to show in the generated figure.') +def metrics_file_processing( + root_directory: str, + vehicle_control: str = VEHICLE_CONTROL, + positive_control: str = POSITIVE_CONTROL, + negative_control: str = NEGATIVE_CONTROL, + placeholder_compounds: str = PLACEHOLDER_COMPOUNDS, + do_not_use_notes_compounds: bool = DO_NOT_USE_NOTES_COMPOUNDS, + do_not_generate_figures: bool = DO_NOT_GENERATE_FIGURES, + figure_timepoints: str = FIGURE_TIMEPOINTS, + figure_metric_threshold: int = FIGURE_METRIC_THRESHOLD, +) -> None: + """Processes raw .txt files containing live cell imaging metrics. + + The .txt files are those generated by Incuctye Software from a live cell + imaging experiment, such as airway epithelium wound closure experiments + utilizing, for example, IncuCyte® ImageLock 96-well plates, IncuCyte® + ZOOM, etc, and, for example, various drug compounds, such as DMSO for + control, etc. From these input files, generates data such as image figures + and excel spreed sheets for analysis. + + ROOT_DIRECTORY: + + The directory to search for .txt files to process in. When using the web + interface, directory must be zipped. + """ + try: + fig_tpts = [int(t) for t in figure_timepoints.split()] + except ValueError: + click.echo('Invalid value provided for \'...--figure-timepoints\' ' + 'option.') + return + + for f in [f for f in Path(root_directory).iterdir() if f.is_file() and + f.suffix == '.txt']: + processor = MetricsTxtFileProcessor(f) + processor.process(not do_not_use_notes_compounds, + placeholder_compounds.split(), vehicle_control, + fig_tpts) + output_dir = f.parent / f.name.replace('.txt', '_txt') + output_dir.mkdir(exist_ok=True) + + output_excel_file = output_dir / (f.stem + '_analysed.xlsx') + processor.gen_analysed_excel(output_excel_file) + + if not do_not_generate_figures: + processor.generate_compound_summary_figs( + vehicle_control.split(' ')[0], + positive_control.split(' ')[0], + negative_control.split(' ')[0], figure_metric_threshold, + output_dir) diff --git a/bimana/tight_junctions/__init__.py b/bimana/tight_junctions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bimana/tight_junctions/analysis.py b/bimana/tight_junctions/analysis.py new file mode 100644 index 0000000..b96280e --- /dev/null +++ b/bimana/tight_junctions/analysis.py @@ -0,0 +1,125 @@ +from typing import Any + +import cv2 +import numpy as np +import numpy.typing as npt + +from bimana.utils.deep_learning.dexined import detect_edges +from bimana.utils.image_processing import (ImageChannel, auto_segment_image, + binary_to_bgr_image, + detect_circular_objects, + extract_channel) + + +def extract_tight_junctions( + img: npt.NDArray[Any], + tight_junction_channel: ImageChannel, +) -> tuple[npt.NDArray[np.bool_], list[tuple[str, npt.NDArray[np.uint8]]]]: + """Extracts stained tight junctions present in a fluorescent image. + + Args: + img: A colour image. + tight_junction_channel: The image channel with the stained tight + junctions. + + Returns: + A binary image where the stained tight junctions present in the + fluorescent image are the foreground. Also returns a sequence of the + intermediate images generated during processing. + """ + grey = extract_channel(img, tight_junction_channel) + edges = detect_edges(grey) + bin_img = ~auto_segment_image(edges) + tight_juncs = grey.copy() + tight_juncs[bin_img] = 0 + + procd_imgs = [] + procd_imgs.append(('tight junctions image channel', grey)) + procd_imgs.append(('tight junctions detected edges', edges)) + procd_imgs.append(('tight junctions binary mask', + binary_to_bgr_image(bin_img))) + procd_imgs.append(('tight junctions', tight_juncs)) + + return bin_img, procd_imgs + + +def segment_cells( + img: npt.NDArray[Any], + cell_channel: ImageChannel, + min_dist: int = 12, + alpha: int = 10, + beta: int = 14, + min_radius: int = 5, + max_radius: int = 15, + min_obj_area: int = 20, + bgd_px_thresh: int = 20, +) -> tuple[list[npt.NDArray[Any]], list[tuple[str, npt.NDArray[np.uint8]]]]: + """Segments stained circular cells present in a fluorescent image. + + Args: + img: A colour image. + cell_channel: The image channel with the stained cells. + min_dist: The minimum distance between the centers of the cells in + pixels. + alpha: A parameter that can be fine tuned for cell segmentation + performance. It may be decreased to identify more objects. + beta: A parameter that can be fine tuned for cell segmentation + performance. The smaller it is, the more false cells may be + identified. + min_radius: The minimum radius of cells in pixels. + max_radius: The maximum radius of cells in pixels. + min_obj_area: The minimum area of cells in pixels². + bgd_px_thresh: The maximum value of background pixels in the image. + + Returns: + A binary image where the stained tight junctions present in the + fluorescent image are the foreground. Also returns a dictionary of the + intermediate images generated during processing. + """ + grey = extract_channel(img, cell_channel) + cells = detect_circular_objects(grey, min_dist, alpha, beta, min_radius, + max_radius, min_obj_area, bgd_px_thresh) + + procd_imgs = [] + procd_imgs.append(('cell image channel', grey)) + cell_img = img.copy() + cv2.drawContours(cell_img, cells, -1, (0, 0, 255), 2) + procd_imgs.append(('cells', cell_img)) + + return cells, procd_imgs + + +NUM_LINES = 10 + + +def perform_ijoq(bin_img: npt.NDArray[np.bool_]) -> float: + """Perform intercellular junction organization quantification (IJOQ). + + IJOQ: https://www.frontiersin.org/articles/10.3389/fcimb.2022.865528. + Code adapted from: https://github.com/DevonsMo/IJOQ. + + Args: + bin_img: A binary image containing tight junctions as the foreground. + + Returns: + The IJOQ value in the original image. + """ + cell_border_frequency = 0 + for axis in range(2): + for i in range(NUM_LINES): + pixel = round((i + 0.5) * bin_img.shape[axis] / NUM_LINES) + previous_pixel = bin_img[0, pixel] if axis else bin_img[pixel, 0] + for j in range(1, bin_img.shape[1 - axis]): + current_pixel = (bin_img[j, pixel] if axis else + bin_img[pixel, j]) + # if the line detects a color change (i.e. black to white or + # white to black) + if previous_pixel != current_pixel: + cell_border_frequency += 0.5 / bin_img.shape[1 - axis] + + # set current pixel as the previous pixel before moving to the + # next pixel + previous_pixel = current_pixel + + # take average of all lines + return round(cell_border_frequency / (2 * NUM_LINES), 4) diff --git a/bimana/tight_junctions/commands.py b/bimana/tight_junctions/commands.py new file mode 100644 index 0000000..98e8ba5 --- /dev/null +++ b/bimana/tight_junctions/commands.py @@ -0,0 +1,208 @@ +from collections import defaultdict +from pathlib import Path + +import click +import numpy as np + +from bimana.tight_junctions.analysis import (extract_tight_junctions, + perform_ijoq, segment_cells) +from bimana.utils.file_processing import (DirFormat, get_dirs, load_imgs, + save_csv, save_imgs) +from bimana.utils.image_processing import (MAX_PX_VAL, ImageChannel, + extract_channel) +from bimana.utils.quantification import ( + area, aspect_ratio, circularity, gen_histogram, gen_stats, + num_connected_components, perimeter, roundness, size_connected_components, + solidity) + +DIR_FORMAT = DirFormat(1).name +TIGHT_JUNC_STAIN_COL = ImageChannel(2).name +CELL_STAIN_COL = ImageChannel(1).name +MIN_DIST = 12 +ALPHA = 10 +BETA = 14 +MIN_RADIUS = 5 +MAX_RADIUS = 15 +MIN_AREA = 20 +BACKGROUND_PIXEL_THRESH = 20 +DONT_SAVE_PROCD_IMGS = False +METRICS_CSV_FILENAME = 'metrics.csv' + + +@click.command() +@click.argument('root_directory', type=click.Path( + exists=True, file_okay=False)) +@click.option('--analyse-tight-junctions', is_flag=True, + help='Analyse tight junctions in the image e.g. by performing ' + 'intercellular junction organization quantification.') +@click.option('--analyse-cells', is_flag=True, + help='Analyse cells in the image e.g. by generating cell shape ' + 'metrics.') +@click.option('--directory-format', type=click.Choice([DirFormat(1).name, + DirFormat(2).name, DirFormat(3).name], case_sensitive=False), + default=DIR_FORMAT, show_default=True, + help='Location of image files to process in the root directory ' + f'tree - if set to {DirFormat(1).name}, processes images ' + f'in the root directory; if set to {DirFormat(2).name}, ' + 'processes images in subdirectories of the root directory; ' + f' if set to {DirFormat(3).name}, processes images ' + 'in all directories of the root directory tree.') +@click.option('--tight-junction-stain-colour', type=click.Choice( + [ImageChannel(1).name, ImageChannel(2).name, + ImageChannel(3).name], case_sensitive=False), + default=TIGHT_JUNC_STAIN_COL, show_default=True, + help='The primary colour (or one of) that the tight junction ' + 'stain is composed of.') +@click.option('--cell-stain-colour', type=click.Choice( + [ImageChannel(1).name, ImageChannel(2).name, + ImageChannel(3).name], case_sensitive=False), + default=CELL_STAIN_COL, show_default=True, help='The primary ' + 'colour (or one of) that the cell stain is composed of.') +@click.option('--min-dist', type=click.IntRange(0), + default=MIN_DIST, show_default=True, + help='The minimum distance between the centers of cells in ' + 'pixels.') +@click.option('--alpha', type=click.IntRange(0), default=ALPHA, + show_default=True, + help='A parameter that can be fine tuned for cell segmentation ' + 'performance; it may be decreased to identify more ' + 'objects.') +@click.option('--beta', type=click.IntRange(0), default=BETA, + show_default=True, + help='A parameter that can be fine tuned for cell segmentation ' + 'performance; the smaller it is, the more false cells may ' + 'be identified.') +@click.option('--min-radius', type=click.IntRange(0), default=MIN_RADIUS, + show_default=True, help='The minimum radius of cells in pixels.') +@click.option('--max-radius', type=click.IntRange(0), default=MAX_RADIUS, + show_default=True, help='The maximum radius of cells in pixels.') +@click.option('--min-area', type=click.IntRange(0), default=MIN_AREA, + show_default=True, help='The minimum area of cells in pixels.') +@click.option('--background-pixel-thresh', type=click.IntRange(0, MAX_PX_VAL), + default=BACKGROUND_PIXEL_THRESH, show_default=True, + help='The maximum intensity of background pixels in the ' + 'greyscale image.') +@click.option('--no-image-processing-visualization', is_flag=True, + help='Do not save image files visualizing different stages of ' + 'image processing.') +def tight_junction_analysis( + root_directory: str | Path, + analyse_tight_junctions: bool, + analyse_cells: bool, + directory_format: str = DIR_FORMAT, + tight_junction_stain_colour: str = TIGHT_JUNC_STAIN_COL, + cell_stain_colour: str = CELL_STAIN_COL, + min_dist: int = MIN_DIST, + alpha: int = ALPHA, + beta: int = BETA, + min_radius: int = MIN_RADIUS, + max_radius: int = MAX_RADIUS, + min_area: int = MIN_AREA, + background_pixel_thresh: int = BACKGROUND_PIXEL_THRESH, + no_image_processing_visualization: bool = DONT_SAVE_PROCD_IMGS, +) -> None: + """Analyse fluorescent tight junction images. + + Analysis is performed with respect to the tight junctions (e.g. by + performing intercellular junction organization quantification) and/or cells + (e.g. by generating cell shape metrics) present in the image. By default, + saves generated data in the root directory tree. + + ROOT_DIRECTORY: + + The directory to search for images to process in. When using the web + interface, directory must be zipped. + + + IMPORTANT NOTES + + Default option values: + + The default option values were fine tuned for processing fluorescent images + containing several tightly packed airway epithelial cells (stained blue) + and tight junctions (stained green), for example, + https://github.com/AlphonsG/BIMANA + """ + # check inputs + if not (analyse_tight_junctions or analyse_cells): + click.echo('Invalid inputs: --analyse-tight-junctions and/or ' + '--analyse-cells option(s) must be selected.') + return + + root_dir = output_dir = Path(root_directory) + output_dirs = [] + metrics = defaultdict(list) + + for curr_dir in get_dirs(root_dir, DirFormat[directory_format]): + if curr_dir in output_dirs: # previously generated output directory + continue + for filename, img in load_imgs(curr_dir): + curr_output_dir = output_dir / curr_dir.relative_to( + root_dir) / f'{filename.stem}_{filename.suffix[1:]}' + output_dirs.append(curr_output_dir) + + metrics['Image'].append(filename.name) + metrics['File path'].append(str(filename)) + + procd_imgs = [] + if analyse_tight_junctions: + tight_juncs, curr_procd_imgs = extract_tight_junctions( + img, ImageChannel[tight_junction_stain_colour]) + + procd_imgs += curr_procd_imgs + + img_tight_junc_chn = extract_channel( + img, ImageChannel[tight_junction_stain_colour]).astype( + float) + img_tight_junc_chn[~tight_juncs] = np.nan + tight_junc_px = img_tight_junc_chn.flatten() + tight_junc_intsty = (tight_junc_px / MAX_PX_VAL * 100).tolist() + stats = gen_stats(tight_junc_intsty) + for name, stat in stats.items(): + metrics['Tight Junction Pixel Intensity (%) ' + f'({name})'].append(stat) + curr_output_dir.mkdir(parents=True, exist_ok=True) + gen_histogram({'Tight Junction Pixel Intensity (%)': + tight_junc_intsty}, curr_output_dir) + + metrics['Intercellular Junction Organization ' + 'Quantification (AU)'].append( + perform_ijoq(tight_juncs)) + metrics['Number of Tight Junction Fragments'].append( + num_connected_components(tight_juncs)) + + tight_junc_sizes = size_connected_components(tight_juncs) + stats = gen_stats(tight_junc_sizes) + for name, stat in stats.items(): + metrics['Tight Junction Fragment Size (No. Pixels) ' + f'({name})'].append(stat) + gen_histogram({'Tight Junction Fragment Size (No. Pixels)': + tight_junc_sizes}, curr_output_dir) + + if analyse_cells: + cells, curr_procd_imgs = segment_cells( + img, ImageChannel[cell_stain_colour], min_dist, alpha, + beta, min_radius, max_radius, min_area, + background_pixel_thresh) + + procd_imgs += curr_procd_imgs + + metrics['Number of Cells'].append(len(cells)) + data = {'Cell Area (No. Pixels)': area(cells), + 'Cell Aspect Ratio (AU)': aspect_ratio(cells), + 'Cell Circularity (AU)': circularity(cells), + 'Cell Perimeter (No. Pixels)': perimeter(cells), + 'Cell Roundness (AU)': roundness(cells), + 'Cell Solidity (AU)': solidity(cells)} + + for data_name, data in data.items(): + stats = gen_stats(data) + for stat_name, stat in stats.items(): + metrics[f'{data_name} ({stat_name})'].append(stat) + gen_histogram({data_name: data}, curr_output_dir) + + if not no_image_processing_visualization: + save_imgs(procd_imgs, curr_output_dir) + + # save metrics + save_csv(metrics, output_dir / METRICS_CSV_FILENAME) diff --git a/bimana/utils/__init__.py b/bimana/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bimana/utils/commands.py b/bimana/utils/commands.py new file mode 100644 index 0000000..e9c29a5 --- /dev/null +++ b/bimana/utils/commands.py @@ -0,0 +1,23 @@ +def parse_input_bgr( + input_bgr: tuple[str, str, str], +) -> tuple[int | float, int | float, int | float]: + """Parses input BGR pixel values. + + Converts input BGR values from strings (of raw pixel values between 0 and + 255) to integers or from strings (of pixel intensity values between 0.0 + and 1.0) to floats. + + Args: + input_bgr: A sequence of BGR values as strings. + + Returns: + A sequence of parsed BGR pixel values. + """ + output_bgr = [] + for val in input_bgr: + try: + output_bgr.append(int(val)) + except ValueError: + output_bgr.append(float(val)) + + return tuple(output_bgr) diff --git a/bimana/utils/deep_learning/dexined.py b/bimana/utils/deep_learning/dexined.py new file mode 100644 index 0000000..7914677 --- /dev/null +++ b/bimana/utils/deep_learning/dexined.py @@ -0,0 +1,68 @@ +import sys +import warnings +from pathlib import Path +from types import SimpleNamespace + +import numpy as np +import numpy.typing as npt + +DEXINET_DIR = Path(__file__).parents[3] / 'third_party/DexiNed' +sys.path.insert(1, str(DEXINET_DIR)) +# try importing Pytorch +try: + import torch + from torch.utils.data import DataLoader + from datasets import TestDataset + from main import test + from model import DexiNed +except ModuleNotFoundError as e: + if e.msg == 'torch': + msg = ('Bimana could not import PyTorch - deep learning functions ' + 'will not be available. Ensure Pytorch is correctly installed ' + 'to utilise these functions: ' + 'https://pytorch.org/get-started/locally/. Reason for import ' + f'failure: {repr(e)}') + warnings.warn(msg) + else: + raise + + +ARGS = SimpleNamespace() +ARGS.is_testing = True +ARGS.test_data = 'CLASSIC' +TEST_IMG_HEIGHT, TEST_IMG_WIDTH = 512, 512 +MEAN_PIXEL_VALUES = [103.939, 116.779, 123.68] +CHECKPOINT_PATH = (Path(__file__).parents[3] / 'misc/checkpoints/DexiNed/' + 'BIPED/10/10_model.pth') + + +def detect_edges( + img: npt.NDArray[np.uint8], + gpu: bool = False, +) -> npt.NDArray[np.uint8]: + """Detects edges in an image using DexiNed. + + DexiNed: https://arxiv.org/pdf/2112.02250.pdf. + + Args: + img: An image. + gpu: If true, will use the GPU for edge detection. + + Returns: + A greyscale image of the edges from the original image. + """ + device = torch.device('cuda' if gpu and torch.cuda.device_count() > 0 else + 'cpu') + model = DexiNed().to(device) + + if len(img.shape) == 2: + img = img[..., None] + img = np.repeat(img, 3, 2) + dataset_val = TestDataset(None, ARGS.test_data, MEAN_PIXEL_VALUES, + TEST_IMG_HEIGHT, TEST_IMG_WIDTH, imgs=[img]) + dataloader_val = DataLoader(dataset_val) + + avg_img, _ = test(CHECKPOINT_PATH, dataloader_val, model, device, None, + ARGS)[0] + + return ~avg_img diff --git a/bimana/utils/file_processing.py b/bimana/utils/file_processing.py new file mode 100644 index 0000000..1f3e3a8 --- /dev/null +++ b/bimana/utils/file_processing.py @@ -0,0 +1,189 @@ +import os +import platform +import struct +import warnings +from enum import Enum +from pathlib import Path +from typing import Any + +os.environ["OPENCV_IO_MAX_IMAGE_PIXELS"] = '1000000000000' + +import cv2 +import numpy.typing as npt +import pandas as pd +from natsort import natsorted + +# try to import vips +if platform.system() == 'Windows' and struct.calcsize("P") * 8 == 64: + VIPS_HOME_DIR = (Path(__file__).parents[2] / 'third_party/' + 'vips-dev-w64-web-8.13.3/vips-dev-8.13/bin') + os.environ['PATH'] = str(VIPS_HOME_DIR) + ';' + os.environ['PATH'] + +if platform.system() == 'Windows' and '64' not in platform.machine(): + msg = ('Bimana requires 64-bit Python on Windows, some functions may fail ' + 'given the current configuration.') + warnings.warn(msg) +else: + try: + import pyvips + except ImportError as e: + msg = ('Bimana could not import Pyvips, some functions may fail. ' + 'Unix-like operating system and MacOS users, please ensure ' + 'vips is installed: https://www.libvips.org/install.html. ' + f'Reason for import failure: {repr(e)}') + warnings.warn(msg) + +IMAGE_FEX = '.png' +IMAGE_FILE_STEM = 'image' + + +class DirFormat(Enum): + """Find_dirs flags. + + ROOT: If set, gets the path to the root directory if it contains at least + one file. + SUB: If set, gets the paths to file-containing subdirectories of the root + directory. + RECURSIVE: If set, gets the paths to all file-containing directories in + the root directory tree. + """ + + ROOT = 1 + SUB = 2 + RECURSIVE = 3 + + +def get_dirs(root_dir: Path, flag: DirFormat) -> list[Path]: + """Gets the paths to directories with files from the root directory tree. + + Args: + root_dir: The path to the root directory. + flag: A flag that can take values of DirFormat. + + Returns: + A sequence of paths to file-containing directories. + """ + match flag: + case flag.ROOT: + dirs = ([root_dir] if len([f for f in root_dir.iterdir() if + f.is_file()]) != 0 else []) + case flag.SUB: + dirs = [curr_dir for curr_dir in root_dir.iterdir() if + curr_dir.is_dir() and len([f for f in curr_dir.iterdir() if + f.is_file()]) != 0] + case flag.RECURSIVE: + dirs = [] + for curr_root_dir, _, files in os.walk(root_dir): + if len(files) != 0: + dirs.append(Path(curr_root_dir)) + + return dirs + + +def load_imgs( + input_dir: Path, + shrink_factor: int | None = None, +) -> list[tuple[Path, npt.NDArray[Any]]]: + """Loads images from a directory. + + Args: + input_dir: A directory containing image files. + shrink_factor: Factor to shrink images by before loading them into + memory. + + Returns: + A sequence of images (and the corresponding image file path) for all + successfully loaded images. The sequence is naturally sorted according + to the image file paths. + """ + # get paths of files in directory + files = natsorted([f for f in input_dir.iterdir() if f.is_file()]) + + # load images + imgs = [] + if shrink_factor is None: + imgs += [(f, img) for f in files if (img := cv2.imread(str(f))) is not + None] # TODO cv2 size error? + else: + for f in files: + if f.suffix == '.csv': + continue + try: + img = pyvips.Image.new_from_file(str(f)) + img = img.shrink(shrink_factor, shrink_factor) + except Exception as e: + msg = (f'Failed to open or shrink file \'{f}\' as ' + f'image: {repr(e)}') + warnings.warn(msg) + continue + img = img.numpy() + img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + imgs.append((f, img)) + + return imgs + + +def save_imgs( + imgs: list[tuple[str, npt.NDArray[Any]]], + output_dir: Path, +) -> None: + """Saves images to a directory. + + Args: + imgs: A list of filename (without the extension) and image pairs. + Images are saved with the corresponding filename in a predefined + lossless format. + output_dir: The directory to save images to. + """ + for img in imgs: + path = output_dir / (img[0] + IMAGE_FEX) + cv2.imwrite(str(path), img[1]) + + +def save_csv(data: dict[Any, Any], csv_path: Path) -> None: + """Saves a csv file with the given data in the specified path. + + Args: + data: The data to save where the keys will be the headers and the + values will be the rows in the csv file. + csv_path: The path to the csv file to save. + """ + df = pd.DataFrame(data) + df.to_csv(csv_path, index=False, encoding='utf-8-sig') + + +def crop_and_save_images( + path: Path, + coords: npt.NDArray[Any], + skip_existing: bool = False, +) -> list[Path]: + """Crops an image without loading it into memory and saves sub-images. + + Useful for dividing an image too large to load into memory into sub-images + that can. Sub-images will be saved as .png files each in a subdirectory + created in the same directory as the input image. + + Args: + path: The file path to an image. + coords: An array of the (x1, y1, x2, y2) coordinates of the bounding + boxes for sub-images to crop in the image. + skip_existing: If true, will not overwrite existing files with same + names as generated subimage names. + + Returns: + The file paths of the saved images. + """ + output_dirs = [] + img = pyvips.Image.new_from_file(str(path)) + for x1, y1, x2, y2 in coords: + h, w = y2 - y1, x2 - x1 + crop = img.crop(x1, y1, w, h) + file_stem = f'{path.stem}_{x1}x1_{y1}y1_{x2}x2_{y2}y2' + output_dir = path.parent / (file_stem + path.suffix.replace('.', '_')) + output_dir.mkdir(exist_ok=True) + output_path = (output_dir / file_stem).with_suffix('.png') + if not skip_existing or not output_path.is_file(): + crop.pngsave(str(output_path)) + output_dirs.append(output_dir) + + return output_dirs diff --git a/bimana/utils/image_processing.py b/bimana/utils/image_processing.py new file mode 100644 index 0000000..525cbf2 --- /dev/null +++ b/bimana/utils/image_processing.py @@ -0,0 +1,557 @@ +from enum import Enum +from typing import Any + +import cv2 +import numpy as np +import numpy.typing as npt +from scipy.signal import find_peaks +from scipy.spatial import KDTree + +MAX_PX_VAL = 255 +KSIZE = 5 +BLOCKSIZE = 11 +C = 2 +DP = 1 + + +class ImageChannel(Enum): + """Get_channel flags. + + BLUE: If set, extracts the blue channel. + GREEN: If set, extracts the green channel. + RED: If set, extracts the red channel. + """ + + BLUE = 1 + GREEN = 2 + RED = 3 + + +def segment_image( + img: npt.NDArray[Any], + lower_bgr: npt.NDArray[np.int_], + upper_bgr: npt.NDArray[np.int_], +) -> npt.NDArray[np.bool_]: + """Segments an image. + + Converts a colour image to a binary image where pixels with BGR values + between (inclusive) the specified upper and lower bounds are the foreground + (with pixel values of 1). + + Args: + img: A colour image. + lower_bgr: The lower bound of BGR pixel values (all between 0 and 255) + to segment. + upper_bgr: The upper bound of BGR pixel values (all between 0 and 255) + to segment. + + Returns: + A binary image where pixels with the specified values in the original + image are the foreground. + """ + # threshold image to binary + return (cv2.inRange(img, lower_bgr, upper_bgr).astype( + float) / MAX_PX_VAL).astype(bool) + + +def scale_bgr_values( + bgr: tuple[int | float, int | float, int | float], +) -> npt.NDArray[np.int_]: + """Scales normalized BGR pixels from [0.0, 1.0] to [0, 255]. + + Ignored individual pixel values that are already un-normalized (int). + + Args: + bgr: A sequence of BGR pixel values (each between 0 and 255 + or normalized between 0.0 and 1.0). + + Returns: + A sequence of un-normalized BGR pixel values (all between 0 and 255). + """ + return np.array([round(val * MAX_PX_VAL) if isinstance(val, float) + else val for val in bgr]) + + +def remove_isolated_segmented_objects( + bin_img: npt.NDArray[np.bool_], + threshold: float = 0.2, +) -> npt.NDArray[np.bool_]: + """Removes isolated objects segmented in an image. + + Removes segmented objects in a binary image that are spatially isolated. A + segmented object is isolated if the proportion of the number of foreground + pixels along the width of the image at the height of the object's vertical + centre to the total number of points along the width of the image with at + least one foreground pixel at any height is below a threshold. + + Args: + bin_img: A binary image. + threshold: The sensitivity, between 0 and 1, of the algorithm to + isolated objects. Larger values reduce the strictness of the + criteria objects must meet to be classified as isolated. + + Returns: + A binary image without isolated segmented objects. + """ + # find all individual segmented objects + cnts, _ = cv2.findContours(bin_img.astype(np.uint8), cv2.RETR_LIST, + cv2.CHAIN_APPROX_NONE) + + # filter isolated objects + num_nonzero_cols = np.count_nonzero(np.sum(bin_img, 0)) + summed_rows = np.sum(bin_img, 1) + dens_of_rows = summed_rows / num_nonzero_cols + iso_cnts = [cnt for cnt in cnts if dens_of_rows[cnt[:, 0, 1].min() + round( + (cnt[:, 0, 1].max() - cnt[:, 0, 1].min()) / 2)] < threshold] + + # remove isolated objects from binary image + fltd_img = bin_img.astype(np.uint8) + cv2.drawContours(fltd_img, iso_cnts, -1, 0, cv2.FILLED) + + cnts, _ = cv2.findContours(fltd_img, cv2.RETR_EXTERNAL, + cv2.CHAIN_APPROX_NONE) + fin_cnts, pts = [], [] + area1, dist, area2 = 50 * threshold, 300 * threshold, 1062.5 * threshold + for i, c in enumerate(cnts): + if cv2.contourArea(c) > area1: + x, y, w, h = cv2.boundingRect(c) + pts.append((x + w / 2, y + h / 2)) + fin_cnts.append(c) + + tree = KDTree(pts) + _, xs = tree.query(pts, 3, distance_upper_bound=dist) + fin_img = np.zeros(bin_img.shape).astype(np.uint8) + for i, x in enumerate(xs): + if cv2.contourArea(fin_cnts[i]) >= area2: + cv2.drawContours(fin_img, [fin_cnts[i]], -1, 1, cv2.FILLED) + if len(pts) in x: + continue + cv2.drawContours(fin_img, [fin_cnts[i]], -1, 1, cv2.FILLED) + + return fin_img.astype(bool) + + +def bound_foreground( + bin_img: npt.NDArray[np.bool_], +) -> tuple[list[npt.NDArray[Any]], list[npt.NDArray[Any]]]: + """Vertically bounds the foreground across the width of a binary image. + + Generates an upper and lower polyline representing the coordinates of the + uppermost and lowermost, respectively, foreground pixels across the width + of the binary image. + + Args: + bin_img: A binary image. + + Returns: + The x-coordinates of the uppermost and lowermost foreground pixels + across the image and the corresponding y-coordinates of the uppermost + and lowermost foreground pixels across the image. + """ + upper_lower_xs, upper_lower_ys = [], [] + for lower, (start, step) in enumerate([[0, 1], [ + bin_img.shape[0] - 1, -1]]): + # get all x-coordinates along the width of the binary image with at + # least one foreground pixel at any height + xs = np.argwhere(np.any(bin_img, axis=0))[:, 0] + + # determine the y-coordinates of the uppermost/lowermost foreground + # pixel for each x-coordinate + ys = (bin_img[start:None:step, :] == 1).argmax(axis=0) + ys = np.take(ys, xs) + if lower: + ys = bin_img.shape[0] - ys - 1 + + upper_lower_xs.append(xs) + upper_lower_ys.append(ys) + + return upper_lower_xs, upper_lower_ys + + +def bounded_foreground_polyline( + upper_lower_xs: list[npt.NDArray[Any]], + upper_lower_ys: list[npt.NDArray[Any]], +) -> npt.NDArray[Any]: + """Generates a polyline of the vertically bounded foreground in an image. + + Combines the x-coordinates of the uppermost and lowermost foreground pixels + across a binary image and the corresponding y-coordinates of the uppermost + and lowermost foreground pixels across the image into a single closed + polyline enclosing all foreground pixels. + + Args: + upper_lower_xs: The x-coordinates of the uppermost and lowermost + foreground pixels across a binary image. + upper_lower_ys: The y-coordinates of the uppermost and lowermost + foreground pixels across a binary image. + + Returns: + A polyline of xy-coordinates enclosing all foreground pixels in the + source binary image. + """ + xs = ys = np.array([], dtype=int) + for lower, (curr_xs, curr_ys) in enumerate(zip( + upper_lower_xs, upper_lower_ys)): + if lower: + curr_xs, curr_ys = curr_xs[::-1], curr_ys[::-1] + + xs, ys = np.concatenate([xs, curr_xs]), np.concatenate([ys, curr_ys]) + + return np.array([[x, y] for x, y in zip(xs, ys)]) + + +def smooth_foreground_bounds( + bin_img: npt.NDArray[np.bool_], + upper_lower_xs: list[npt.NDArray[Any]], + upper_lower_ys: list[npt.NDArray[Any]], +) -> tuple[list[npt.NDArray[Any]], list[npt.NDArray[Any]]]: + """Smooths the vertical bounds of the foreground across a binary image. + + Smoothing is achieved by removing sharp indents from the polylines + vertically bounding the foreground across the width of the image. + + Args: + bin_img: A binary image. + upper_lower_xs: The x-coordinates of the uppermost and lowermost + foreground pixels across the image. + upper_lower_ys: The y-coordinates of the uppermost and lowermost + foreground pixels across the image. + + Returns: + The smoothed x-coordinates of the uppermost and lowermost foreground + pixels across the image and the corresponding smoothed y-coordinates of + the uppermost and lowermost foreground pixels across the image. + """ + smthd_upper_lower_xs = upper_lower_xs.copy() + smthd_upper_lower_ys = upper_lower_ys.copy() + for lower, (xs, ys) in enumerate(zip(upper_lower_xs, upper_lower_ys)): + # convert outline to signal with peaks and use non-peaks as new + # outline + if lower: + if len(np.unique(ys)) == 1: + continue + polyline = np.array([[x, y] for x, y in zip(xs, ys)]) + polyline = cv2.convexHull(polyline) + smthd_xs = polyline[..., 0].flatten() + smthd_ys = polyline[..., 1].flatten() + else: + signal = ys if lower else bin_img.shape[0] - ys + if not (smthd_xs := find_peaks(signal)[0]).size: # no peaks + continue + smthd_ys = np.take(ys, smthd_xs) + + # add first and last boundary coordinates again if removed + if smthd_xs[0] != xs[0]: + smthd_xs = np.insert(smthd_xs, 0, xs[0]) + smthd_ys = np.insert(smthd_ys, 0, ys[0]) + + if smthd_xs[-1] != xs[-1]: + smthd_xs = np.insert(smthd_xs, smthd_xs.shape[0], xs[-1]) + smthd_ys = np.insert(smthd_ys, smthd_ys.shape[0], ys[-1]) + + smthd_upper_lower_xs[lower] = smthd_xs + smthd_upper_lower_ys[lower] = smthd_ys + + smthd_bin_img = bin_img.astype(np.uint8) + cnt = bounded_foreground_polyline(smthd_upper_lower_xs, + smthd_upper_lower_ys) + cv2.drawContours(smthd_bin_img, [cnt], 0, 1, cv2.FILLED) + + return bound_foreground(smthd_bin_img.astype(bool)) + + +def segment_polyline_bounded_region( + polyline: npt.NDArray[Any], + hw: tuple[int, int], +) -> npt.NDArray[np.bool_]: + """Segments all pixels bounded by a closed polyline on a source image. + + Args: + polyline: The xy-coordinates, with respect to a source image, of a + polyline. + hw: The height and width of the source image. + + Returns: + A binary image with all pixels bounded by a closed polyline on a source + mage segmented. + """ + bin_img = np.zeros(hw) + + return cv2.drawContours(bin_img, [polyline], 0, 1, cv2.FILLED).astype(bool) + + +def segment_region_within_image( + img: npt.NDArray[Any], + lower_bgr: npt.NDArray[np.int_], + upper_bgr: npt.NDArray[np.int_], + region: npt.NDArray[np.bool_], +) -> npt.NDArray[np.bool_]: + """Segments a region within an image. + + Converts a colour image to a binary image where pixels, in a specified + region within the image, with BGR values between (inclusive) the specified + upper and lower bounds are the foreground (with pixel values of 1). + + Args: + img: A colour image. + lower_bgr: The lower bound of BGR pixel values (all between 0 and 255) + to segment. + upper_bgr: The upper bound of BGR pixel values (all between 0 and 255) + to segment. + region A binary image specifying a region within the original image. + + Returns: + A binary image where pixels, in a specified region, with the specified + values in the original image are the foreground. + """ + # segment all pixels that fall within the bgr bounds in image + bin_img = segment_image(img, lower_bgr, upper_bgr) + bin_img[~region] = 0 # black out regions outside region + + return bin_img + + +def segment_region_above_polyline( + polyline: npt.NDArray[Any], + thickness: int, + hw: tuple[int, int], +) -> npt.NDArray[np.bool_]: + """Segments the region above an open polyline on a source image. + + The segmented region will have an uppermost boundary that is the same shape + as the initial polyline and will be of the specified thickness. + + Args: + polyline: The xy-coordinates, with respect to a source image, of a + polyline. + thickness: The vertical thickness, in pixels, of the segmented region. + hw: The height and width of the source image. + + Returns: + A binary image with the region above an open polyline on the source + image segmented. + """ + # create a closed polyline of the region above the input polyline + region_polyline = polyline[::-1].copy() + region_polyline[:, 1] -= thickness + region_polyline = np.append(polyline, region_polyline, 0) + + # segment region in the closed polyline + bin_img = np.zeros(hw) + + return cv2.drawContours(bin_img, [region_polyline], 0, 1, + cv2.FILLED).astype(bool) + + +def draw_polyline( + img: npt.NDArray[np.uint8], + polyline: npt.NDArray[Any], + colour: tuple[int, int, int] = (0, 255, 0), + thickness: int = 2, +) -> npt.NDArray[np.uint8]: + """Draws a closed polyline on a colour image. + + Args: + img: A colour BGR image. + polyline: A polyline of xy-coordinates with respect to the image. + colour: The BGR colour of the polyline to be drawn. + thickness: The thickness of the polyline to be drawn. + + Returns: + The colour image with the closed polyline drawn on. + """ + return cv2.polylines(img.copy(), polyline[None, ...], True, colour, + thickness) + + +def binary_to_bgr_image( + bin_img: npt.NDArray[np.bool_], +) -> npt.NDArray[np.uint8]: + """Converts a binary image to a colour image with 3 channels (BGR). + + Args: + bin_img: A binary image. + + Returns: + A colour image with 3 channels (BGR). + """ + bgr_img = bin_img.astype(np.uint8) * MAX_PX_VAL + + return cv2.cvtColor(bgr_img, cv2.COLOR_GRAY2BGR).astype(np.uint8) + + +def extract_channel( + img: npt.NDArray[np.uint8], + flag: ImageChannel, +) -> npt.NDArray[np.uint8]: + """Extracts the chosen colour channel from an image. + + Args: + img: A colour image. + flag: A flag that can take values of ImageChannel. + + Returns: + A 2D image of the extracted channel. + """ + return cv2.split(img)[flag.value - 1] + + +def auto_segment_image(img: npt.NDArray[np.uint8]) -> npt.NDArray[np.bool_]: + """Automatically segments the foreground in a greyscale image. + + Args: + img: A greyscale image. + + Returns: + A binary image of the segmented foreground from the input image. + """ + img = cv2.medianBlur(~img, KSIZE) + bin_img = cv2.adaptiveThreshold(img, MAX_PX_VAL, + cv2.ADAPTIVE_THRESH_MEAN_C, + cv2.THRESH_BINARY, BLOCKSIZE, C) + + return ~(bin_img / MAX_PX_VAL).astype(bool) + + +def detect_circular_objects( + img: npt.NDArray[np.uint8], + min_dist: int = 12, + alpha: int = 10, + beta: int = 14, + min_radius: int = 5, + max_radius: int = 15, + min_obj_area: int = 20, + bgd_px_thresh: int = 20, +) -> list[npt.NDArray[Any]]: + """Detects circular objects in an image. + + Args: + img: A greyscale image. + min_dist: The minimum distance between the centers of the circular + objects in pixels. + alpha: A parameter that can be fine tuned for circular object + detection performance. It may be decreased to detect more objects. + beta: A parameter that can be fine tuned for circular object + detection performance. The smaller it is, the more false objects + may be detected. + min_radius: The minimum radii of circular objects in pixels. + max_radius: The maximum radii of circular objects in pixels. + min_obj_area: The minimum area of circular objects. + bgd_px_thresh: The maximum value of background pixels in the image. + + Returns: + A sequence of coordinates for circular objects detected in the image. + """ + img = cv2.medianBlur(img, KSIZE) + circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, DP, min_dist, + param1=alpha, param2=beta, minRadius=min_radius, + maxRadius=max_radius) + objs = [] + if circles is not None: + circles = np.uint16(np.around(circles)) + for c in circles[0, :]: + mask = np.ones(img.shape) + cv2.circle(mask, (c[0], c[1]), c[2], 0, cv2.FILLED) + mask = mask.astype(bool) + roi = img.copy() + roi[mask] = 0 + roi[roi > bgd_px_thresh] = 255 + roi[roi <= bgd_px_thresh] = 0 + cts, _ = cv2.findContours(roi.astype(np.uint8), cv2.RETR_LIST, + cv2.CHAIN_APPROX_NONE) + objs += [ct for ct in cts if cv2.contourArea(ct) > min_obj_area] + + return objs + + +def centre_coordinates(contours: list[npt.NDArray[Any]]) -> npt.NDArray[Any]: + """Gets the x and y coordinates of the centres of the provided contours. + + Args: + contours: A sequence of contours where each contour is an array of + x and y coordinates. + + Returns: + A sequence of the x and y coordinates of the centres of the respective + input contours. + """ + centres = [] + for c in contours: + m = cv2.moments(c) + x = int(m['m10'] / m['m00']) + y = int(m['m01'] / m['m00']) + centres.append((x, y)) + + return np.array(centres) + + +def subimage_coordinates( + img: npt.NDArray[Any], + background_bgr: tuple[int, int, int] = (255, 255, 255), +) -> npt.NDArray[Any]: + """Finds the coordinates of sub-images in a larger image. + + Args: + img: A colour image. + background_bgr: The BGR value of background pixels in the larger image. + + Returns: + An array of the (x1, y1, x2, y2) coordinates of the bounding boxes for + all sub-images in the larger image. + """ + bin_img = ~segment_image(img, np.array(background_bgr), + np.array(background_bgr)) + contours, _ = cv2.findContours(bin_img.astype(np.uint8), cv2.RETR_EXTERNAL, + cv2.CHAIN_APPROX_SIMPLE) + + coords = [] + for c in contours: + x1, x2 = c[:, 0, 0].min(), c[:, 0, 0].max() + y1, y2 = c[:, 0, 1].min(), c[:, 0, 1].max() + coords.append((x1, y1, x2, y2)) + + return np.array(coords) + + +def largest_objects( + bin_img: npt.NDArray[np.bool_], + min_area: int | None = None, + top_n: int | None = None, +) -> tuple[list[list[npt.NDArray[Any]]], list[list[npt.NDArray[Any]]]]: + """Finds the contours of the largest foreground objects in a binary image. + + Large objects are those with at least the given area and/or those that are + the top n largest objects in the image. + + Args: + bin_img: A binary image. + min_area: The minimum object area. + top_n: The top number of largest objects to find. + + Returns: + The contours of the largest foreground objects in the input image as a + sequence of x-coordinates for the upper object boundary(s) across the + width of the image and the corresponding y-coordinates of lower object + boundary(s) across the image + """ + cnts, _ = cv2.findContours(bin_img.astype(np.uint8), cv2.RETR_LIST, + cv2.CHAIN_APPROX_NONE) + + if min_area is not None: + cnts = [c for c in cnts if cv2.contourArea(c) >= min_area] + if top_n is not None: + cnts = sorted(cnts, key=lambda c: cv2.contourArea(c), + reverse=True)[:top_n] + + upper_lower_xs, upper_lower_ys = [], [] + for c in cnts: + l, r = c[..., 0].argmin(), c[..., 0].argmax() + if l > r: + l, r, c = len(c) - l, len(c) - r, c[::-1] + l_xs, l_ys = c[l:r + 1][..., 0][:, 0], c[l:r + 1][..., 1][:, 0] + u_xs_ys = np.append(c[0:l][::-1], c[r + 1:][::-1], 0) + u_xs, u_ys = u_xs_ys[..., 0][:, 0], u_xs_ys[..., 1][:, 0] + upper_lower_xs.append([u_xs, l_xs]) + upper_lower_ys.append([u_ys, l_ys]) + + return upper_lower_xs, upper_lower_ys diff --git a/bimana/utils/quantification.py b/bimana/utils/quantification.py new file mode 100644 index 0000000..62718e0 --- /dev/null +++ b/bimana/utils/quantification.py @@ -0,0 +1,221 @@ +import re +from math import pi, sqrt +from pathlib import Path +from typing import Any + +import cv2 +import matplotlib.pyplot as plt +import numpy as np +import numpy.typing as npt +import pandas as pd +from scipy.spatial import KDTree +from scipy.stats import describe + + +def percentage_foreground_in_region( + img: npt.NDArray[np.bool_], + region: npt.NDArray[np.bool_], +) -> tuple[float, int, int]: + """Finds the percentage of a region occupied by the foreground in an image. + + Args: + img: A binary image representing the primary image. + region: A binary image specifying a region within the primary image. + + Returns: + The percentage of the specified region within the primary image + occupied by the foreground as well as the size of the corresponding + foreground and region in pixels. + """ + img = img.copy() + img[~region] = 0 + foreground_count = np.count_nonzero(img) + region_count = np.count_nonzero(region) + pct = round(foreground_count / region_count * 100, 2) + + return pct, foreground_count, region_count + + +def nearest_neighbour_distances( + pts: npt.NDArray[Any], +) -> npt.NDArray[np.float_]: + """Finds the nearest neighbor distances for a given set of 2D points. + + Args: + pts: An array of x and y coordinates for a set of 2D points. + + Returns: + A sequence of distances, in pixels, corresponding to each input point's + nearest neighbor. + """ + tree = KDTree(pts) + dists, _ = tree.query(pts, 2) + + return dists[:, 1] + + +def area(contours: list[npt.NDArray[Any]]) -> list[float]: + """Calculates the area enclosed by each given contour. + + Args: + contours: A sequence of contours each as an array of x and y + coordinates. + + Returns: + The areas enclosed by the given contours in pixels. + """ + return [cv2.contourArea(c) for c in contours] + + +def perimeter(contours: list[npt.NDArray[Any]]) -> list[float]: + """Calculates the perimeter of each given contour. + + Args: + contours: A sequence of contours each as an array of x and y + coordinates. + + Returns: + The perimeters of the given contours in pixels. + """ + return [cv2.arcLength(c, True) for c in contours] + + +def circularity(contours: list[npt.NDArray[Any]]) -> list[float]: + """Calculates the circularity of each given contour. + + Args: + contours: A sequence of contours each as an array of x and y + coordinates. + + Returns: + The circularities of the given contours. + """ + return [(4 * pi * area([c])[0]) / perimeter([c])[0]**2 for c in contours] + + +def aspect_ratio(contours: list[npt.NDArray[Any]]) -> list[float]: + """Calculates the aspect ratio of each given contour. + + Args: + contours: A sequence of contours each as an array of x and y + coordinates. + + Returns: + The aspect ratios of the given contours. + """ + aspect_ratios = [] + for c in contours: + _, _, w, h = cv2.boundingRect(c) + aspect_ratios.append(float(w) / h) + + return aspect_ratios + + +def solidity(contours: list[npt.NDArray[Any]]) -> list[float]: + """Calculates the solidity of each given contour. + + Args: + contours: A sequence of contours each as an array of x and y + coordinates. + + Returns: + The solidities of the given contours. + """ + solidities = [] + for c in contours: + area = cv2.contourArea(c) + hull = cv2.convexHull(c) + hull_area = cv2.contourArea(hull) + solidities.append(float(area) / hull_area) + + return solidities + + +def roundness(contours: list[npt.NDArray[Any]]) -> list[float]: + """Calculates the roundness of each given contour. + + Args: + contours: A sequence of contours each as an array of x and y + coordinates. + + Returns: + The roundness values of the given contours. + """ + roundness_vals = [] + for c in contours: + h = cv2.boundingRect(c)[3] + area = cv2.contourArea(c) + roundness_vals.append((4 * area) / (pi * h**2)) + + return roundness_vals + + +def num_connected_components(img: npt.NDArray[np.bool_]) -> int: + """Finds the number of connected foreground regions in a binary image. + + Args: + img: A binary image. + + Returns: + The number of connected foreground regions in the input binary image. + """ + return cv2.connectedComponents(img.astype(np.uint8))[0] - 1 + + +def size_connected_components(img: npt.NDArray[np.bool_]) -> npt.NDArray[Any]: + """Finds the size of each connected foreground region in a binary image. + + Args: + img: A binary image. + + Returns: + The sizes, in pixels, of all connected foreground regions in the binary + image. + """ + stats = cv2.connectedComponentsWithStats(img.astype(np.uint8))[2] + + return stats[1:, cv2.CC_STAT_AREA] + + +def gen_stats(metric: list[Any] | npt.NDArray[Any]) -> dict[str, Any]: + """Calculates statistics for a given metric. + + The statistics are the minimum value, maximum value, mean, standard + deviation and variance. + + Args: + metric: A sequence of values for a given metric. + + Returns: + The statistics for the given metric. + """ + stats = describe(metric, nan_policy='omit') + + return {'Min': stats[1][0], 'Max': stats[1][1], 'Mean (μ)': stats[2], + 'STD (σ)': sqrt(stats[3]), 'Var (σ²)': stats[3]} + + +def gen_histogram( + data: dict[str, Any], + output_dir: Path, + dpi: int = 300, +) -> None: + """Generates a histogram of the input data in the output directory. + + Args: + data: A dictionary of the data values and the name of the corresponding + metric. + output_dir: The output directory. + dpi: The DPI of the histogram. + """ + df = pd.DataFrame(data) + ax = df.hist()[0][0] + name = list(data.keys())[0] + ax.set_title(' '.join((re.sub( + r'\(.*\)', '', name) + ' Histogram').split())) + ax.set_xlabel(name) + ax.set_ylabel('Frequency') + output_path = output_dir / (' '.join((re.sub( + r'\(.*\)', '', name) + ' histogram').split())).lower() + ax.get_figure().savefig(output_path, dpi=dpi) + plt.close() diff --git a/misc/checkpoints/DexiNed/BIPED/10/10_model.pth b/misc/checkpoints/DexiNed/BIPED/10/10_model.pth new file mode 100644 index 0000000..2f6e1b8 --- /dev/null +++ b/misc/checkpoints/DexiNed/BIPED/10/10_model.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd4c603ef71113b447bffb72a73b9a54ca890e78f4bc8f34cb73f1efb2681e74 +size 141069187 diff --git a/misc/examples/histological_section/1.tif b/misc/examples/histological_section/1.tif new file mode 100644 index 0000000..f9c610e Binary files /dev/null and b/misc/examples/histological_section/1.tif differ diff --git a/misc/examples/histological_section/1_tif/binary_image.png b/misc/examples/histological_section/1_tif/binary_image.png new file mode 100644 index 0000000..915d9e3 Binary files /dev/null and b/misc/examples/histological_section/1_tif/binary_image.png differ diff --git a/misc/examples/histological_section/1_tif/binary_image_without_isolated_non_tissue.png b/misc/examples/histological_section/1_tif/binary_image_without_isolated_non_tissue.png new file mode 100644 index 0000000..2467c1d Binary files /dev/null and b/misc/examples/histological_section/1_tif/binary_image_without_isolated_non_tissue.png differ diff --git a/misc/examples/histological_section/1_tif/cilia_above_tissue_area.png b/misc/examples/histological_section/1_tif/cilia_above_tissue_area.png new file mode 100644 index 0000000..5ba060f Binary files /dev/null and b/misc/examples/histological_section/1_tif/cilia_above_tissue_area.png differ diff --git a/misc/examples/histological_section/1_tif/raw_tissue_boundary.png b/misc/examples/histological_section/1_tif/raw_tissue_boundary.png new file mode 100644 index 0000000..f6f0972 Binary files /dev/null and b/misc/examples/histological_section/1_tif/raw_tissue_boundary.png differ diff --git a/misc/examples/histological_section/1_tif/segmented_tissue.png b/misc/examples/histological_section/1_tif/segmented_tissue.png new file mode 100644 index 0000000..efddc8f Binary files /dev/null and b/misc/examples/histological_section/1_tif/segmented_tissue.png differ diff --git a/misc/examples/histological_section/1_tif/smoothed_tissue_boundary.png b/misc/examples/histological_section/1_tif/smoothed_tissue_boundary.png new file mode 100644 index 0000000..50e64b1 Binary files /dev/null and b/misc/examples/histological_section/1_tif/smoothed_tissue_boundary.png differ diff --git a/misc/examples/histological_section/1_tif/staining_within_tissue_boundary.png b/misc/examples/histological_section/1_tif/staining_within_tissue_boundary.png new file mode 100644 index 0000000..f0502a4 Binary files /dev/null and b/misc/examples/histological_section/1_tif/staining_within_tissue_boundary.png differ diff --git a/misc/examples/histological_section/1_tif/tissue_boundary_on_original.png b/misc/examples/histological_section/1_tif/tissue_boundary_on_original.png new file mode 100644 index 0000000..78a167f Binary files /dev/null and b/misc/examples/histological_section/1_tif/tissue_boundary_on_original.png differ diff --git a/misc/examples/histological_section/metrics.csv b/misc/examples/histological_section/metrics.csv new file mode 100644 index 0000000..19a892f --- /dev/null +++ b/misc/examples/histological_section/metrics.csv @@ -0,0 +1,2 @@ +Image,File path,Amount of staining (no. pixels),Tissue area size (no. pixels),Percentage of staining in tissue area (%),Amount of cilia (no. pixels),Cilia-containing region size (no. pixels),Percentage of region occupied by cilia (%) +1.tif,C:\Users\Alphons\Downloads\1.tif,4678,29714,15.74,1560,5670,27.51 diff --git a/misc/examples/live_cell_imaging/raw_metrics.txt b/misc/examples/live_cell_imaging/raw_metrics.txt new file mode 100644 index 0000000..bc5f6b8 --- /dev/null +++ b/misc/examples/live_cell_imaging/raw_metrics.txt @@ -0,0 +1,12 @@ +Vessel Name: 220727_2%FCS_X_C55_C56_C57_C58 +Metric: Relative Wound Density (%) +Cell Type: X +Passage: 24 +Notes: C55_C56_C57_C58 +Analysis: X_Wounding_CS_V2 + +Date Time Elapsed CA 10 µM (A1) CA 10 µM (A2) CA 10 µM (A3) CA 10 µM (A4) CA 10 µM (A5) CC 10 µM (A6) CC 10 µM (A7) CC 10 µM (A8) CC 10 µM (A9) CC 10 µM (A10) DMSO 0.05% (A11) DMSO 0.05% (B11) DMSO 0.05% (C11) DMSO 0.05% (D11) DMSO 0.05% (E11) DMSO 0.05% (F11) UT 100% (A12) UT 100% (B12) UT 100% (C12) UT 100% (D12) UT 100% (E12) UT 100% (F12) CA 1 µM (B1) CA 1 µM (B2) CA 1 µM (B3) CA 1 µM (B4) CA 1 µM (B5) CC 1 µM (B6) CC 1 µM (B7) CC 1 µM (B8) CC 1 µM (B9) CC 1 µM (B10) CA 0.1 µM (C1) CA 0.1 µM (C2) CA 0.1 µM (C3) CA 0.1 µM (C4) CA 0.1 µM (C5) CC 0.1 µM (C6) CC 0.1 µM (C7) CC 0.1 µM (C8) CC 0.1 µM (C9) CC 0.1 µM (C10) CA 0.01 µM (D1) CA 0.01 µM (D2) CA 0.01 µM (D3) CA 0.01 µM (D4) CA 0.01 µM (D5) CC 0.01 µM (D6) CC 0.01 µM (D7) CC 0.01 µM (D8) CC 0.01 µM (D9) CC 0.01 µM (D10) CB 10 µM (E1) CB 10 µM (E2) CB 10 µM (E3) CB 10 µM (E4) CB 10 µM (E5) CD 10 µM (E6) CD 10 µM (E7) CD 10 µM (E8) CD 10 µM (E9) CD 10 µM (E10) CB 1 µM (F1) CB 1 µM (F2) CB 1 µM (F3) CB 1 µM (F4) CB 1 µM (F5) CD 1 µM (F6) CD 1 µM (F7) CD 1 µM (F8) CD 1 µM (F9) CD 1 µM (F10) CB 0.1 µM (G1) CB 0.1 µM (G2) CB 0.1 µM (G3) CB 0.1 µM (G4) CB 0.1 µM (G5) CD 0.1 µM (G6) CD 0.1 µM (G7) CD 0.1 µM (G8) CD 0.1 µM (G9) CD 0.1 µM (G10) Pos 10 µM (G11) Pos 10 µM (G12) Pos 10 µM (H11) Pos 10 µM (H12) CB 0.01 µM (H1) CB 0.01 µM (H2) CB 0.01 µM (H3) CB 0.01 µM (H4) CB 0.01 µM (H5) CD 0.01 µM (H6) CD 0.01 µM (H7) CD 0.01 µM (H8) CD 0.01 µM (H9) CD 0.01 µM (H10) +27/07/2022 18:00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +27/07/2022 21:00 3 2.941424 0.7709512 -0.9661244 1.2095 1.907017 1.891028 1.445611 2.349506 1.624458 1.587884 2.080587 1.17492 0.4584868 0.849259 2.211427 3.804555 2.52322 1.118516 1.60945 2.483132 2.296167 0 0 1.857243 2.125729 2.373146 1.194392 0.8878424 -0.1615143 0.6991959 0.5156834 5.149718 0.6990805 0.9538784 0.6376827 0.8849707 1.343013 0.3406399 1.909729 1.011549 -0.3114207 1.171259 0.5547474 1.48487 0.1732116 0 0.4102185 0.778515 1.776656 0.1189434 0.7330513 0.4719042 0.7252991 0.4734694 0.8170961 2.897962 0.5366114 0.4626927 3.35836 1.302759 2.761429 1.018728 1.988602 1.417326 1.585365 2.739432 4.537059 1.258467 0.985615 1.610166 3.046306 3.7115 1.443673 0.8639878 1.5654 3.624008 5.149839 3.571585 7.690483 3.238868 3.952368 3.987249 3.654827 3.378263 3.771674 2.597566 3.637967 3.37047 3.792182 3.945292 +28/07/2022 0:00 6 3.439121 1.6205 0.08946762 3.070065 4.391799 3.2835 2.698675 3.589451 2.745719 2.628779 4.241597 2.058636 0.5669807 1.397869 3.886579 6.691884 4.031245 3.079788 1.979 3.509718 3.066563 0 0 3.644812 3.306175 3.838465 2.640489 3.025772 0.1791517 1.056791 1.143308 7.459068 1.061978 1.937168 1.175532 2.306213 2.372698 1.178732 3.314485 1.402258 0.9818405 2.02676 1.598561 2.414337 1.259886 0 1.62955 1.222111 2.608018 1.932287 1.126612 2.181001 1.848864 1.295691 1.538294 3.932674 1.358594 0.4188254 5.386405 2.583961 5.516322 2.459945 3.861227 3.130836 2.664682 4.383809 6.429445 3.61166 3.107372 2.625817 4.931927 6.191323 3.711043 3.307125 2.791503 4.252559 8.501356 6.001993 10.31227 6.180362 5.806409 5.472285 6.167523 4.483469 1.760216 5.003536 5.636861 4.774235 5.645293 -2.221393 +28/07/2022 3:00 9 3.740245 2.080393 0.2708296 4.446393 6.11115 5.104506 4.735899 4.781292 4.02871 4.009587 5.759967 3.06436 1.229087 2.486529 5.615928 9.599972 5.95135 4.018443 3.028037 4.631933 4.058403 0 0 5.471172 4.179026 5.418031 4.278059 4.051464 0.3846287 1.295455 1.604261 9.598935 1.321902 2.699774 1.478293 2.644482 2.847978 1.885295 4.702738 1.804498 1.61727 2.03718 2.726338 3.53512 2.024735 0 2.289491 1.925745 4.000076 3.506441 1.503308 2.33948 2.698667 2.474415 2.4721 5.882982 1.669194 0.874815 9.470068 3.560443 8.033844 2.890385 5.567244 4.630435 3.837245 6.945757 10.9377 5.78016 4.265481 5.388308 7.160444 9.596511 5.696442 5.794175 4.79989 7.638964 12.92765 8.235493 13.48496 8.211935 9.269642 10.3357 10.07243 8.349841 4.832891 8.941649 9.623076 10.47854 10.13736 2.531106 diff --git a/misc/examples/live_cell_imaging/raw_metrics_txt/C55_wound_closure.png b/misc/examples/live_cell_imaging/raw_metrics_txt/C55_wound_closure.png new file mode 100644 index 0000000..6912750 Binary files /dev/null and b/misc/examples/live_cell_imaging/raw_metrics_txt/C55_wound_closure.png differ diff --git a/misc/examples/live_cell_imaging/raw_metrics_txt/C56_wound_closure.png b/misc/examples/live_cell_imaging/raw_metrics_txt/C56_wound_closure.png new file mode 100644 index 0000000..b610a1f Binary files /dev/null and b/misc/examples/live_cell_imaging/raw_metrics_txt/C56_wound_closure.png differ diff --git a/misc/examples/live_cell_imaging/raw_metrics_txt/C57_wound_closure.png b/misc/examples/live_cell_imaging/raw_metrics_txt/C57_wound_closure.png new file mode 100644 index 0000000..3822902 Binary files /dev/null and b/misc/examples/live_cell_imaging/raw_metrics_txt/C57_wound_closure.png differ diff --git a/misc/examples/live_cell_imaging/raw_metrics_txt/C58_wound_closure.png b/misc/examples/live_cell_imaging/raw_metrics_txt/C58_wound_closure.png new file mode 100644 index 0000000..090a855 Binary files /dev/null and b/misc/examples/live_cell_imaging/raw_metrics_txt/C58_wound_closure.png differ diff --git a/misc/examples/live_cell_imaging/raw_metrics_txt/raw_metrics_analysed.xlsx b/misc/examples/live_cell_imaging/raw_metrics_txt/raw_metrics_analysed.xlsx new file mode 100644 index 0000000..a3d2371 Binary files /dev/null and b/misc/examples/live_cell_imaging/raw_metrics_txt/raw_metrics_analysed.xlsx differ diff --git a/misc/examples/tight_junctions/1.tif b/misc/examples/tight_junctions/1.tif new file mode 100644 index 0000000..b39eca6 Binary files /dev/null and b/misc/examples/tight_junctions/1.tif differ diff --git a/misc/examples/tight_junctions/1_tif/cell area histogram.png b/misc/examples/tight_junctions/1_tif/cell area histogram.png new file mode 100644 index 0000000..a75d301 Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cell area histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/cell aspect ratio histogram.png b/misc/examples/tight_junctions/1_tif/cell aspect ratio histogram.png new file mode 100644 index 0000000..106ff1d Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cell aspect ratio histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/cell circularity histogram.png b/misc/examples/tight_junctions/1_tif/cell circularity histogram.png new file mode 100644 index 0000000..a77b55e Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cell circularity histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/cell image channel.png b/misc/examples/tight_junctions/1_tif/cell image channel.png new file mode 100644 index 0000000..6ca0316 Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cell image channel.png differ diff --git a/misc/examples/tight_junctions/1_tif/cell perimeter histogram.png b/misc/examples/tight_junctions/1_tif/cell perimeter histogram.png new file mode 100644 index 0000000..75bfee5 Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cell perimeter histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/cell roundness histogram.png b/misc/examples/tight_junctions/1_tif/cell roundness histogram.png new file mode 100644 index 0000000..9b40a0d Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cell roundness histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/cell solidity histogram.png b/misc/examples/tight_junctions/1_tif/cell solidity histogram.png new file mode 100644 index 0000000..d5468f6 Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cell solidity histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/cells.png b/misc/examples/tight_junctions/1_tif/cells.png new file mode 100644 index 0000000..b70be1c Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/cells.png differ diff --git a/misc/examples/tight_junctions/1_tif/tight junction fragment size histogram.png b/misc/examples/tight_junctions/1_tif/tight junction fragment size histogram.png new file mode 100644 index 0000000..4fc011b Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/tight junction fragment size histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/tight junction pixel intensity histogram.png b/misc/examples/tight_junctions/1_tif/tight junction pixel intensity histogram.png new file mode 100644 index 0000000..58a46ba Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/tight junction pixel intensity histogram.png differ diff --git a/misc/examples/tight_junctions/1_tif/tight junctions binary mask.png b/misc/examples/tight_junctions/1_tif/tight junctions binary mask.png new file mode 100644 index 0000000..c9e1c93 Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/tight junctions binary mask.png differ diff --git a/misc/examples/tight_junctions/1_tif/tight junctions detected edges.png b/misc/examples/tight_junctions/1_tif/tight junctions detected edges.png new file mode 100644 index 0000000..16594a1 Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/tight junctions detected edges.png differ diff --git a/misc/examples/tight_junctions/1_tif/tight junctions image channel.png b/misc/examples/tight_junctions/1_tif/tight junctions image channel.png new file mode 100644 index 0000000..05c4ab5 Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/tight junctions image channel.png differ diff --git a/misc/examples/tight_junctions/1_tif/tight junctions.png b/misc/examples/tight_junctions/1_tif/tight junctions.png new file mode 100644 index 0000000..c98a5ae Binary files /dev/null and b/misc/examples/tight_junctions/1_tif/tight junctions.png differ diff --git a/misc/examples/tight_junctions/metrics.csv b/misc/examples/tight_junctions/metrics.csv new file mode 100644 index 0000000..bbe27e5 --- /dev/null +++ b/misc/examples/tight_junctions/metrics.csv @@ -0,0 +1,2 @@ +Image,File path,Tight Junction Pixel Intensity (%) (Min),Tight Junction Pixel Intensity (%) (Max),Tight Junction Pixel Intensity (%) (Mean (μ)),Tight Junction Pixel Intensity (%) (STD (σ)),Tight Junction Pixel Intensity (%) (Var (σ²)),Intercellular Junction Organization Quantification (AU),Number of Tight Junction Fragments,Tight Junction Fragment Size (No. Pixels) (Min),Tight Junction Fragment Size (No. Pixels) (Max),Tight Junction Fragment Size (No. Pixels) (Mean (μ)),Tight Junction Fragment Size (No. Pixels) (STD (σ)),Tight Junction Fragment Size (No. Pixels) (Var (σ²)),Number of Cells,Cell Area (No. Pixels) (Min),Cell Area (No. Pixels) (Max),Cell Area (No. Pixels) (Mean (μ)),Cell Area (No. Pixels) (STD (σ)),Cell Area (No. Pixels) (Var (σ²)),Cell Aspect Ratio (AU) (Min),Cell Aspect Ratio (AU) (Max),Cell Aspect Ratio (AU) (Mean (μ)),Cell Aspect Ratio (AU) (STD (σ)),Cell Aspect Ratio (AU) (Var (σ²)),Cell Circularity (AU) (Min),Cell Circularity (AU) (Max),Cell Circularity (AU) (Mean (μ)),Cell Circularity (AU) (STD (σ)),Cell Circularity (AU) (Var (σ²)),Cell Perimeter (No. Pixels) (Min),Cell Perimeter (No. Pixels) (Max),Cell Perimeter (No. Pixels) (Mean (μ)),Cell Perimeter (No. Pixels) (STD (σ)),Cell Perimeter (No. Pixels) (Var (σ²)),Cell Roundness (AU) (Min),Cell Roundness (AU) (Max),Cell Roundness (AU) (Mean (μ)),Cell Roundness (AU) (STD (σ)),Cell Roundness (AU) (Var (σ²)),Cell Solidity (AU) (Min),Cell Solidity (AU) (Max),Cell Solidity (AU) (Mean (μ)),Cell Solidity (AU) (STD (σ)),Cell Solidity (AU) (Var (σ²)) +1.tif,C:\Users\Alphons\Downloads\1.tif,2.352941176,64.31372549,10.58486385,3.777406814,14.26880224,0.0316,237,1,569139,3313.814346,37099.5823,1376379007,1155,21,539.5,192.0701299,63.61895284,4047.371161,0.388888889,2.363636364,1.005597437,0.122970569,0.015121761,0.218970874,0.91158714,0.807122727,0.088109426,0.007763271,18.14213538,125.3969686,54.13620931,10.08855439,101.7789297,0.185680767,1.650495706,0.794863641,0.116382597,0.013544909,0.47,1,0.938037024,0.042486265,0.001805083 diff --git a/misc/images/bimana.png b/misc/images/bimana.png new file mode 100644 index 0000000..8ec71b8 Binary files /dev/null and b/misc/images/bimana.png differ diff --git a/misc/images/pytorch_get_started.png b/misc/images/pytorch_get_started.png new file mode 100644 index 0000000..d5f4045 Binary files /dev/null and b/misc/images/pytorch_get_started.png differ diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..a021f8b --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,41 @@ +[build-system] +requires = ["setuptools>=64"] +build-backend = "setuptools.build_meta" + +[project] +name = "bimana" +description = "Package for performing automated bio-image analysis tasks." +readme = "README.md" +authors = [ + {name = "Alphons Gwatimba"}, + {email = "0go0vdp95@mozmail.com"} +] +requires-python = ">=3.10" +license = {file = "LICENSE"} +version = "0.1.0" +dependencies = [ + "natsort", + "click-web", + "scipy", + "opencv-python", + "pandas", + "pyvips", + "matplotlib", + "kornia", + 'xlsxwriter', + 'openpyxl', +] + +[project.urls] +homepage = "https://github.com/AlphonsG/BIMANA" +documentation = "https://github.com/AlphonsG/BIMANA" +repository = "https://github.com/AlphonsG/BIMANA" + +[project.optional-dependencies] +test = ['pytest', 'pytest-cov', 'flake8'] + +[project.scripts] +bimana = "bimana.__main__:main" + +[tool.setuptools] +packages = ["bimana"] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..25242e3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,47 @@ +attrs==22.1.0 +certifi==2022.9.24 +cffi==1.15.1 +charset-normalizer==2.1.1 +click==8.1.3 +click-web==0.8.0 +colorama==0.4.6 +contourpy==1.0.6 +coverage==6.5.0 +cycler==0.11.0 +exceptiongroup==1.0.4 +Flask==2.2.2 +Flask-HTTPAuth==4.7.0 +fonttools==4.38.0 +idna==3.4 +iniconfig==1.1.1 +itsdangerous==2.1.2 +Jinja2==3.1.2 +kiwisolver==1.4.4 +kornia==0.6.8 +MarkupSafe==2.1.1 +matplotlib==3.6.2 +natsort==8.2.0 +numpy==1.23.5 +opencv-python==4.6.0.66 +packaging==21.3 +pandas==1.5.2 +Pillow==9.3.0 +pluggy==1.0.0 +pycparser==2.21 +pyparsing==3.0.9 +pytest==7.2.0 +pytest-cov==4.0.0 +python-dateutil==2.8.2 +pytz==2022.6 +pyvips==2.2.1 +requests==2.28.1 +scipy==1.9.3 +six==1.16.0 +tomli==2.0.1 +torch==1.13.0 +torchaudio==0.13.0 +torchvision==0.14.0 +typing_extensions==4.4.0 +urllib3==1.26.13 +Werkzeug==2.2.2 +wheel==0.38.4 \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..da96bd5 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,30 @@ +from pathlib import Path + +DATA_DIR = Path(__file__).parent.resolve() / 'data' + +TEST_IMG_PTH = str(DATA_DIR / 'image.tif') +TEST_BIN_IMG_PTH = str(DATA_DIR / 'binary_image.tif') +TEST_REF_BIN_IMG_PTH = str(DATA_DIR / 'cropped_refined_binary_image.tif') +TEST_TISS_BNDY_PTH = str(DATA_DIR / 'tissue_boundary.pickle') +ROOT_DIR_PTH = DATA_DIR / str('root_directory') +HIST_SECT_IMG_DIR_PTH = str(DATA_DIR / 'histological_section/images') +LENA_IMG_PTH = str(DATA_DIR / 'lena.tif') +GREYSCALE_IMG_PTH = str(DATA_DIR / 'greyscale_image.jpg') +BIN_TGHT_JNCS_PTH = str(DATA_DIR / 'binary_tight_junctions.png') +CIRCLES_IMG_PTH = str(DATA_DIR / 'circles.png') +TIGHT_JUNCS_IMG_PTH = str(DATA_DIR / 'tight_junctions.tiff') +SUBIMG_PTH = str(DATA_DIR / 'subimage/subimage.png') +METRICS_TXT_FILE_PATH = str(DATA_DIR / 'live_cell_imaging/test.txt') +METRICS_DF_PATH = str(DATA_DIR / 'live_cell_imaging/metrics_df.csv') +INFO_DF_PATH = str(DATA_DIR / 'live_cell_imaging/info_df.csv') +TIME_DF_PATH = str(DATA_DIR / 'live_cell_imaging/time_df.csv') +NOTES_COMPDS_DF_PATH = str(DATA_DIR / 'live_cell_imaging/' + 'notes_compounds_df.csv') +STATS_DF = str(DATA_DIR / 'live_cell_imaging/stats_df.csv') +CTRL_DF = str(DATA_DIR / 'live_cell_imaging/ctrl_df.csv') +FLD_CHG_DF = str(DATA_DIR / 'live_cell_imaging/fld_chg_df.csv') +COMPDS_DF = str(DATA_DIR / 'live_cell_imaging/compds_df.csv') +FLD_CHG_STATS_DF = str(DATA_DIR / 'live_cell_imaging/fld_chg_stats_df.csv') +GEND_EXCEL = str(DATA_DIR / 'live_cell_imaging/test.xlsx') +FIGURES_DIR = str(DATA_DIR / 'live_cell_imaging/figures') +DFS_PATH = str(DATA_DIR / 'live_cell_imaging/dfs.pickle') diff --git a/tests/data/binary_image.tif b/tests/data/binary_image.tif new file mode 100644 index 0000000..6fab217 Binary files /dev/null and b/tests/data/binary_image.tif differ diff --git a/tests/data/binary_tight_junctions.png b/tests/data/binary_tight_junctions.png new file mode 100644 index 0000000..30f5b40 Binary files /dev/null and b/tests/data/binary_tight_junctions.png differ diff --git a/tests/data/circles.png b/tests/data/circles.png new file mode 100644 index 0000000..ff2f2b9 Binary files /dev/null and b/tests/data/circles.png differ diff --git a/tests/data/cropped_refined_binary_image.tif b/tests/data/cropped_refined_binary_image.tif new file mode 100644 index 0000000..e6b3dcd Binary files /dev/null and b/tests/data/cropped_refined_binary_image.tif differ diff --git a/tests/data/greyscale_image.jpg b/tests/data/greyscale_image.jpg new file mode 100644 index 0000000..86aa0f9 Binary files /dev/null and b/tests/data/greyscale_image.jpg differ diff --git a/tests/data/histological_section/images/image1.tif b/tests/data/histological_section/images/image1.tif new file mode 100644 index 0000000..f9c610e Binary files /dev/null and b/tests/data/histological_section/images/image1.tif differ diff --git a/tests/data/image.tif b/tests/data/image.tif new file mode 100644 index 0000000..f9c610e Binary files /dev/null and b/tests/data/image.tif differ diff --git a/tests/data/lena.tif b/tests/data/lena.tif new file mode 100644 index 0000000..ffe5c83 Binary files /dev/null and b/tests/data/lena.tif differ diff --git a/tests/data/live_cell_imaging/compds_df.csv b/tests/data/live_cell_imaging/compds_df.csv new file mode 100644 index 0000000..bfe4be4 --- /dev/null +++ b/tests/data/live_cell_imaging/compds_df.csv @@ -0,0 +1,2 @@ +,Date Time,Elapsed,C55 10 µM (A1),C55 10 µM (A2),C55 10 µM (A3),C55 10 µM (A4),C55 10 µM (A5),,C57 10 µM (A6),C57 10 µM (A7),C57 10 µM (A8),C57 10 µM (A9),C57 10 µM (A10),,DMSO 0.05% (A11),DMSO 0.05% (B11),DMSO 0.05% (C11),DMSO 0.05% (D11),DMSO 0.05% (E11),DMSO 0.05% (F11),,UT 100% (A12),UT 100% (B12),UT 100% (C12),UT 100% (D12),UT 100% (E12),UT 100% (F12),,C55 1 µM (B1),C55 1 µM (B2),C55 1 µM (B3),C55 1 µM (B4),C55 1 µM (B5),,C57 1 µM (B6),C57 1 µM (B7),C57 1 µM (B8),C57 1 µM (B9),C57 1 µM (B10),,C55 0.1 µM (C1),C55 0.1 µM (C2),C55 0.1 µM (C3),C55 0.1 µM (C4),C55 0.1 µM (C5),,C57 0.1 µM (C6),C57 0.1 µM (C7),C57 0.1 µM (C8),C57 0.1 µM (C9),C57 0.1 µM (C10),,C55 0.01 µM (D1),C55 0.01 µM (D2),C55 0.01 µM (D3),C55 0.01 µM (D4),C55 0.01 µM (D5),,C57 0.01 µM (D6),C57 0.01 µM (D7),C57 0.01 µM (D8),C57 0.01 µM (D9),C57 0.01 µM (D10),,C56 10 µM (E1),C56 10 µM (E2),C56 10 µM (E3),C56 10 µM (E4),C56 10 µM (E5),,C58 10 µM (E6),C58 10 µM (E7),C58 10 µM (E8),C58 10 µM (E9),C58 10 µM (E10),,C56 1 µM (F1),C56 1 µM (F2),C56 1 µM (F3),C56 1 µM (F4),C56 1 µM (F5),,C58 1 µM (F6),C58 1 µM (F7),C58 1 µM (F8),C58 1 µM (F9),C58 1 µM (F10),,C56 0.1 µM (G1),C56 0.1 µM (G2),C56 0.1 µM (G3),C56 0.1 µM (G4),C56 0.1 µM (G5),,C58 0.1 µM (G6),C58 0.1 µM (G7),C58 0.1 µM (G8),C58 0.1 µM (G9),C58 0.1 µM (G10),,Pos 10 µM (G11),Pos 10 µM (G12),Pos 10 µM (H11),Pos 10 µM (H12),,C56 0.01 µM (H1),C56 0.01 µM (H2),C56 0.01 µM (H3),C56 0.01 µM (H4),C56 0.01 µM (H5),,C58 0.01 µM (H6),C58 0.01 µM (H7),C58 0.01 µM (H8),C58 0.01 µM (H9),C58 0.01 µM (H10), +10,28/07/2022 0:00,6,151.28563299603485,71.285182542305,0.0,3.9356467900805776,0.0,,135.05099903840886,193.19357815742825,144.4399240220046,118.71369330290338,157.898592879765,,120.78314108292199,115.63899467965317,186.5862489453213,90.5586195915832,24.941266706241198,61.49172899427913,,170.9691413021223,294.3734480048936,177.33294396652533,135.4787101336627,87.0554620495042,154.39116834434654,,134.89694738196755,0.0,0.0,0.0,160.33390234642624,,145.43738870213218,168.85262462650337,116.15411315393295,133.1025667086672,7.880815573751472,,46.48783668254553,50.29368681399422,328.1215822125676,0.0,46.71601085215178,,85.21528817964324,51.711208395137845,101.4494382514266,104.37408827384263,51.85197518571813,,145.80294246142037,61.684799445484416,43.19079251461154,89.15640639891518,70.32009422401086,,106.20577214664672,55.42190897407866,0.0,71.6832886219149,53.76020100090027,,114.7257261361414,85.00057483438623,49.5592360841415,95.9414096945077,81.33082859357987,,56.996957391806035,67.6689716715412,172.99684293080946,59.76403658801623,18.42397105359698,,236.94592019240005,113.66746779833194,0.0,0.0,242.66091992109406,,108.21205082939242,169.85391640374988,137.7242923603949,117.21835408034207,192.8421010771981,,282.8288555820488,158.87555839601433,136.69211986846486,115.50869741912229,216.95360473947707,,272.3539587987481,163.24737900483996,145.4791788430857,122.79716193914965,187.06846318230293,,373.9714374064299,264.02540365482054,453.6328598429716,271.87178855138853,,255.42173741455264,240.72374893459886,271.30700579380715,197.2261068113333,77.4312365775291,,220.10365758530983,247.96338497414365,210.01679325816812,248.33430546732274,-97.71823850860753, diff --git a/tests/data/live_cell_imaging/ctrl_df.csv b/tests/data/live_cell_imaging/ctrl_df.csv new file mode 100644 index 0000000..9e17915 --- /dev/null +++ b/tests/data/live_cell_imaging/ctrl_df.csv @@ -0,0 +1,5 @@ +,DMSO 0.05% (A11),DMSO 0.05% (B11),DMSO 0.05% (C11),DMSO 0.05% (D11),DMSO 0.05% (E11),DMSO 0.05% (F11),Average,StDev,SEM, +8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, +9,1.624458,1.587884,2.080587,1.17492,0.4584868,0.849259,1.2959324666666667,0.5872518894102825,45.31500710996019, +10,2.745719,2.628779,4.241597,2.058636,0.5669807,1.397869,2.27326345,1.2607714880504772,55.460861258754555, +11,4.02871,4.009587,5.759967,3.06436,1.229087,2.486529,3.4297066666666667,1.548610256358993,45.15284853395605, diff --git a/tests/data/live_cell_imaging/dfs.pickle b/tests/data/live_cell_imaging/dfs.pickle new file mode 100644 index 0000000..2e64dae Binary files /dev/null and b/tests/data/live_cell_imaging/dfs.pickle differ diff --git a/tests/data/live_cell_imaging/figures/C55_wound_closure.png b/tests/data/live_cell_imaging/figures/C55_wound_closure.png new file mode 100644 index 0000000..1df86d7 Binary files /dev/null and b/tests/data/live_cell_imaging/figures/C55_wound_closure.png differ diff --git a/tests/data/live_cell_imaging/figures/C56_wound_closure.png b/tests/data/live_cell_imaging/figures/C56_wound_closure.png new file mode 100644 index 0000000..2d5bc71 Binary files /dev/null and b/tests/data/live_cell_imaging/figures/C56_wound_closure.png differ diff --git a/tests/data/live_cell_imaging/figures/C57_wound_closure.png b/tests/data/live_cell_imaging/figures/C57_wound_closure.png new file mode 100644 index 0000000..dd3e983 Binary files /dev/null and b/tests/data/live_cell_imaging/figures/C57_wound_closure.png differ diff --git a/tests/data/live_cell_imaging/figures/C58_wound_closure.png b/tests/data/live_cell_imaging/figures/C58_wound_closure.png new file mode 100644 index 0000000..3be8b03 Binary files /dev/null and b/tests/data/live_cell_imaging/figures/C58_wound_closure.png differ diff --git a/tests/data/live_cell_imaging/fld_chg_df.csv b/tests/data/live_cell_imaging/fld_chg_df.csv new file mode 100644 index 0000000..f51300e --- /dev/null +++ b/tests/data/live_cell_imaging/fld_chg_df.csv @@ -0,0 +1,5 @@ +,C55 10 µM (A1),C55 10 µM (A2),C55 10 µM (A3),C55 10 µM (A4),C55 10 µM (A5),,C57 10 µM (A6),C57 10 µM (A7),C57 10 µM (A8),C57 10 µM (A9),C57 10 µM (A10),,DMSO 0.05% (A11),DMSO 0.05% (B11),DMSO 0.05% (C11),DMSO 0.05% (D11),DMSO 0.05% (E11),DMSO 0.05% (F11),,UT 100% (A12),UT 100% (B12),UT 100% (C12),UT 100% (D12),UT 100% (E12),UT 100% (F12),,C55 1 µM (B1),C55 1 µM (B2),C55 1 µM (B3),C55 1 µM (B4),C55 1 µM (B5),,C57 1 µM (B6),C57 1 µM (B7),C57 1 µM (B8),C57 1 µM (B9),C57 1 µM (B10),,C55 0.1 µM (C1),C55 0.1 µM (C2),C55 0.1 µM (C3),C55 0.1 µM (C4),C55 0.1 µM (C5),,C57 0.1 µM (C6),C57 0.1 µM (C7),C57 0.1 µM (C8),C57 0.1 µM (C9),C57 0.1 µM (C10),,C55 0.01 µM (D1),C55 0.01 µM (D2),C55 0.01 µM (D3),C55 0.01 µM (D4),C55 0.01 µM (D5),,C57 0.01 µM (D6),C57 0.01 µM (D7),C57 0.01 µM (D8),C57 0.01 µM (D9),C57 0.01 µM (D10),,C56 10 µM (E1),C56 10 µM (E2),C56 10 µM (E3),C56 10 µM (E4),C56 10 µM (E5),,C58 10 µM (E6),C58 10 µM (E7),C58 10 µM (E8),C58 10 µM (E9),C58 10 µM (E10),,C56 1 µM (F1),C56 1 µM (F2),C56 1 µM (F3),C56 1 µM (F4),C56 1 µM (F5),,C58 1 µM (F6),C58 1 µM (F7),C58 1 µM (F8),C58 1 µM (F9),C58 1 µM (F10),,C56 0.1 µM (G1),C56 0.1 µM (G2),C56 0.1 µM (G3),C56 0.1 µM (G4),C56 0.1 µM (G5),,C58 0.1 µM (G6),C58 0.1 µM (G7),C58 0.1 µM (G8),C58 0.1 µM (G9),C58 0.1 µM (G10),,Pos 10 µM (G11),Pos 10 µM (G12),Pos 10 µM (H11),Pos 10 µM (H12),,C56 0.01 µM (H1),C56 0.01 µM (H2),C56 0.01 µM (H3),C56 0.01 µM (H4),C56 0.01 µM (H5),,C58 0.01 µM (H6),C58 0.01 µM (H7),C58 0.01 µM (H8),C58 0.01 µM (H9),C58 0.01 µM (H10), +8,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0, +9,226.97355577222206,59.49007528015734,0.0,-74.55052055953327,0.0,,93.33048064695963,147.15404151461183,145.92025808752277,111.54987140019179,181.29849050261723,,125.35051337808909,122.52829841390398,160.54748634792543,90.66213172527972,35.37891146282469,65.53265867197709,,170.64369146396362,293.576640593463,194.70304702606157,86.30974443267029,124.19242834001587,191.60967595687984,,177.18261244786058,0.0,0.0,0.0,143.31325495510646,,164.03084687489118,183.1226596324181,92.16467915740671,68.50992801219529,-12.463172592275512,,53.953112371544876,39.79245934986221,397.3754908113267,0.0,53.944207586537296,,73.60556391132933,49.20647613993466,68.28833467505277,103.63294651105019,26.28531260399526,,147.36331167874127,78.05568777838063,-24.030627213239043,90.37963243660793,42.80681395589184,,114.57927308660683,13.365789071210346,0.0,31.654311513249116,60.07373223717881,,137.09479820116138,9.178209749304324,56.56554788580289,36.414258623661816,55.967353134193665,,36.535036522222065,63.05082409901297,223.61983163011527,41.407358315533614,35.703457695609345,,259.14621991362,100.52676613241213,0.0,0.0,213.0843289313378,,78.60965183010823,153.44950845432427,109.36727309915892,122.33392100113034,211.38694109934843,,350.09995634031753,97.10899544302384,76.05450325163548,124.2476781326105,235.06672441316,,286.3960966690291,111.40032657051522,66.66919937751899,120.79333146320843,279.6448189404108,,397.38482771761716,275.5996235812082,593.4323892495015,249.92567771149803,,304.98255901915053,307.67413445978434,282.0229521219393,260.68202525162445,291.03939418242317,,200.43992004315862,280.721958402462,260.08068218781153,292.6218840518799,304.436542912447, +10,151.28563299603485,71.285182542305,0.0,3.9356467900805776,0.0,,135.05099903840886,193.19357815742825,144.4399240220046,118.71369330290338,157.898592879765,,120.78314108292199,115.63899467965317,186.5862489453213,90.5586195915832,24.941266706241198,61.49172899427913,,170.9691413021223,294.3734480048936,177.33294396652533,135.4787101336627,87.0554620495042,154.39116834434654,,134.89694738196755,0.0,0.0,0.0,160.33390234642624,,145.43738870213218,168.85262462650337,116.15411315393295,133.1025667086672,7.880815573751472,,46.48783668254553,50.29368681399422,328.1215822125676,0.0,46.71601085215178,,85.21528817964324,51.711208395137845,101.4494382514266,104.37408827384263,51.85197518571813,,145.80294246142037,61.684799445484416,43.19079251461154,89.15640639891518,70.32009422401086,,106.20577214664672,55.42190897407866,0.0,71.6832886219149,53.76020100090027,,114.7257261361414,85.00057483438623,49.5592360841415,95.9414096945077,81.33082859357987,,56.996957391806035,67.6689716715412,172.99684293080946,59.76403658801623,18.42397105359698,,236.94592019240005,113.66746779833194,0.0,0.0,242.66091992109406,,108.21205082939242,169.85391640374988,137.7242923603949,117.21835408034207,192.8421010771981,,282.8288555820488,158.87555839601433,136.69211986846486,115.50869741912229,216.95360473947707,,272.3539587987481,163.24737900483996,145.4791788430857,122.79716193914965,187.06846318230293,,373.9714374064299,264.02540365482054,453.6328598429716,271.87178855138853,,255.42173741455264,240.72374893459886,271.30700579380715,197.2261068113333,77.4312365775291,,220.10365758530983,247.96338497414365,210.01679325816812,248.33430546732274,-97.71823850860753, +11,109.05437005302687,60.658044614116655,0.0,7.89658202061984,0.0,,129.64353608471862,178.18287666972492,148.83214502309235,138.08466613276937,139.40819039917892,,117.4651476511111,116.90757810191737,167.94342956443307,89.34758268928734,35.83650496835492,72.49975702489621,,163.74368264730123,279.90650318005817,173.52358607927596,117.16579260422661,88.28851252585255,135.0533281757818,,118.33090682196341,0.0,0.0,0.0,159.52303015223848,,121.84791313542851,157.9735973533208,124.73541954997123,118.12858631253206,11.214623796787286,,37.77159757102648,46.77545795947564,279.8762673581415,0.0,38.542713079447026,,78.71734414604941,43.10260741443389,77.10519461333914,83.03853002006002,54.969569798000215,,137.11779044272006,52.61377066260282,47.15476153451413,59.398082634860906,79.4918710249273,,103.07353787301538,59.03522361484753,0.0,66.75471760461535,56.1489709518404,,116.63026575644952,102.23734391279334,43.831970081017616,68.21224750027213,78.68506733326076,,72.14654897600572,72.07905049217037,171.53017945169267,48.668710249273026,25.506991851586918,,276.1188906339901,103.81188089943552,0.0,0.0,234.24288957656242,,84.27499144727635,162.32420265289934,135.0096509711229,111.88260026124684,202.51752336448598,,318.91065513863185,168.53219711695462,124.36868264730123,157.1069634720948,208.77715489760055,,279.80559075994836,166.0912303481736,168.94083264652372,139.95045251683334,222.7293684979862,,376.9316520752017,240.12237198127733,393.18114668698587,239.4354910818418,,270.2750672555087,301.35813364019464,293.6819669709363,243.45641804158177,140.9126630848897,,260.7117712690687,280.5801467958387,305.522921299392,295.5751317896963,73.79948916914176, diff --git a/tests/data/live_cell_imaging/fld_chg_stats_df.csv b/tests/data/live_cell_imaging/fld_chg_stats_df.csv new file mode 100644 index 0000000..fda3f82 --- /dev/null +++ b/tests/data/live_cell_imaging/fld_chg_stats_df.csv @@ -0,0 +1,5 @@ +,C55 10 µM (A1),C55 10 µM (A2),C55 10 µM (A3),C55 10 µM (A4),C55 10 µM (A5),Average,StDev,SEM,,C57 10 µM (A6),C57 10 µM (A7),C57 10 µM (A8),C57 10 µM (A9),C57 10 µM (A10),Average,StDev,SEM,,DMSO 0.05% (A11),DMSO 0.05% (B11),DMSO 0.05% (C11),DMSO 0.05% (D11),DMSO 0.05% (E11),DMSO 0.05% (F11),Average,StDev,SEM,,UT 100% (A12),UT 100% (B12),UT 100% (C12),UT 100% (D12),UT 100% (E12),UT 100% (F12),Average,StDev,SEM,,C55 1 µM (B1),C55 1 µM (B2),C55 1 µM (B3),C55 1 µM (B4),C55 1 µM (B5),Average,StDev,SEM,,C57 1 µM (B6),C57 1 µM (B7),C57 1 µM (B8),C57 1 µM (B9),C57 1 µM (B10),Average,StDev,SEM,,C55 0.1 µM (C1),C55 0.1 µM (C2),C55 0.1 µM (C3),C55 0.1 µM (C4),C55 0.1 µM (C5),Average,StDev,SEM,,C57 0.1 µM (C6),C57 0.1 µM (C7),C57 0.1 µM (C8),C57 0.1 µM (C9),C57 0.1 µM (C10),Average,StDev,SEM,,C55 0.01 µM (D1),C55 0.01 µM (D2),C55 0.01 µM (D3),C55 0.01 µM (D4),C55 0.01 µM (D5),Average,StDev,SEM,,C57 0.01 µM (D6),C57 0.01 µM (D7),C57 0.01 µM (D8),C57 0.01 µM (D9),C57 0.01 µM (D10),Average,StDev,SEM,,C56 10 µM (E1),C56 10 µM (E2),C56 10 µM (E3),C56 10 µM (E4),C56 10 µM (E5),Average,StDev,SEM,,C58 10 µM (E6),C58 10 µM (E7),C58 10 µM (E8),C58 10 µM (E9),C58 10 µM (E10),Average,StDev,SEM,,C56 1 µM (F1),C56 1 µM (F2),C56 1 µM (F3),C56 1 µM (F4),C56 1 µM (F5),Average,StDev,SEM,,C58 1 µM (F6),C58 1 µM (F7),C58 1 µM (F8),C58 1 µM (F9),C58 1 µM (F10),Average,StDev,SEM,,C56 0.1 µM (G1),C56 0.1 µM (G2),C56 0.1 µM (G3),C56 0.1 µM (G4),C56 0.1 µM (G5),Average,StDev,SEM,,C58 0.1 µM (G6),C58 0.1 µM (G7),C58 0.1 µM (G8),C58 0.1 µM (G9),C58 0.1 µM (G10),Average,StDev,SEM,,Pos 10 µM (G11),Pos 10 µM (G12),Pos 10 µM (H11),Pos 10 µM (H12),Average,StDev,SEM,,C56 0.01 µM (H1),C56 0.01 µM (H2),C56 0.01 µM (H3),C56 0.01 µM (H4),C56 0.01 µM (H5),Average,StDev,SEM,,C58 0.01 µM (H6),C58 0.01 µM (H7),C58 0.01 µM (H8),C58 0.01 µM (H9),C58 0.01 µM (H10),Average,StDev,SEM, +8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, +9,226.97355577222206,59.49007528015734,0.0,-74.55052055953327,0.0,42.38262209856923,113.61383158827046,268.06701889288223,,93.33048064695963,147.15404151461183,145.92025808752277,111.54987140019179,181.29849050261723,135.85062843038065,34.25333018658931,25.21396520748751,,125.35051337808909,122.52829841390398,160.54748634792543,90.66213172527972,35.37891146282469,65.53265867197709,100.0,45.31500710996019,45.31500710996019,,170.64369146396362,293.576640593463,194.70304702606157,86.30974443267029,124.19242834001587,191.60967595687984,176.83920463550902,70.95148094921093,40.12203125175332,,177.18261244786058,0.0,0.0,0.0,143.31325495510646,64.09917348059341,88.58448932403468,138.19911320830747,,164.03084687489118,183.1226596324181,92.16467915740671,68.50992801219529,-12.463172592275512,99.07298821692716,78.59072976133423,79.32609198104976,,53.953112371544876,39.79245934986221,397.3754908113267,0.0,53.944207586537296,109.01305402385421,162.70556739654793,149.25328792361395,,73.60556391132933,49.20647613993466,68.28833467505277,103.63294651105019,26.28531260399526,64.20372676827245,28.82041634017362,44.889008459265646,,147.36331167874127,78.05568777838063,-24.030627213239043,90.37963243660793,42.80681395589184,66.91496372727653,63.243470997132526,94.51319626338316,,114.57927308660683,13.365789071210346,0.0,31.654311513249116,60.07373223717881,43.93462118164902,45.46055484966711,103.473191817699,,137.09479820116138,9.178209749304324,56.56554788580289,36.414258623661816,55.967353134193665,59.04403351882482,47.71330478162871,80.80969733616932,,36.535036522222065,63.05082409901297,223.61983163011527,41.407358315533614,35.703457695609345,80.06330165249865,81.01649410478718,101.19054851925256,,259.14621991362,100.52676613241213,0.0,0.0,213.0843289313378,114.55146299547398,119.43317887909154,104.26159191333109,,78.60965183010823,153.44950845432427,109.36727309915892,122.33392100113034,211.38694109934843,135.02945909681404,50.429858233565135,37.34730078227426,,350.09995634031753,97.10899544302384,76.05450325163548,124.2476781326105,235.06672441316,176.51557151614946,114.77101049438768,65.02033192232406,,286.3960966690291,111.40032657051522,66.66919937751899,120.79333146320843,279.6448189404108,172.9807546041365,102.54034018622364,59.27846737683938,,397.38482771761716,275.5996235812082,593.4323892495015,249.92567771149803,379.0856295649562,156.70677568583363,41.33809447371362,,304.98255901915053,307.67413445978434,282.0229521219393,260.68202525162445,291.03939418242317,289.28021300698435,19.095280264701582,6.600963151337471,,200.43992004315862,280.721958402462,260.08068218781153,292.6218840518799,304.436542912447,267.6601975195518,40.99454149342762,15.31589002523735, +10,151.28563299603485,71.285182542305,0.0,3.9356467900805776,0.0,45.301292465684085,66.56458108756063,146.93748779460006,,135.05099903840886,193.19357815742825,144.4399240220046,118.71369330290338,157.898592879765,149.859357480102,28.112248768577942,18.759088015114855,,120.78314108292199,115.63899467965317,186.5862489453213,90.5586195915832,24.941266706241198,61.49172899427913,100.0,55.460861258754555,55.460861258754555,,170.9691413021223,294.3734480048936,177.33294396652533,135.4787101336627,87.0554620495042,154.39116834434654,169.93347896684244,69.04866512240477,40.632761444187,,134.89694738196755,0.0,0.0,0.0,160.33390234642624,59.046169945678756,81.35093073889318,137.7751187142779,,145.43738870213218,168.85262462650337,116.15411315393295,133.1025667086672,7.880815573751472,114.28550175299743,62.505083477668805,54.69204975164704,,46.48783668254553,50.29368681399422,328.1215822125676,0.0,46.71601085215178,94.32382331225183,132.33651617673388,140.30020362792538,,85.21528817964324,51.711208395137845,101.4494382514266,104.37408827384263,51.85197518571813,78.9203996571537,25.826890822294793,32.72524079261138,,145.80294246142037,61.684799445484416,43.19079251461154,89.15640639891518,70.32009422401086,82.03100700888848,39.2979228785023,47.90618122516059,,106.20577214664672,55.42190897407866,0.0,71.6832886219149,53.76020100090027,57.41423414870811,38.399009415911536,66.88064377285708,,114.7257261361414,85.00057483438623,49.5592360841415,95.9414096945077,81.33082859357987,85.31155506855134,23.83463065426015,27.93833805409835,,56.996957391806035,67.6689716715412,172.99684293080946,59.76403658801623,18.42397105359698,75.17015592715398,57.90956659125646,77.03797587885217,,236.94592019240005,113.66746779833194,0.0,0.0,242.66091992109406,118.65486158236521,119.95113953482104,101.09247774188839,,108.21205082939242,169.85391640374988,137.7242923603949,117.21835408034207,192.8421010771981,145.17014295021548,35.653008389227644,24.559463581608824,,282.8288555820488,158.87555839601433,136.69211986846486,115.50869741912229,216.95360473947707,182.17176720102546,67.8172216380619,37.22707567700433,,272.3539587987481,163.24737900483996,145.4791788430857,122.79716193914965,187.06846318230293,178.18922835362528,57.678688641375324,32.36934643821967,,373.9714374064299,264.02540365482054,453.6328598429716,271.87178855138853,340.87537236390267,90.32720663131558,26.498601528445555,,255.42173741455264,240.72374893459886,271.30700579380715,197.2261068113333,77.4312365775291,208.4219671063642,78.24773220555066,37.54293911141258,,220.10365758530983,247.96338497414365,210.01679325816812,248.33430546732274,-97.71823850860753,165.73998055526735,148.24691350713803,89.44547538287172, +11,109.05437005302687,60.658044614116655,0.0,7.89658202061984,0.0,35.52179933755267,48.284621958736196,135.92954990793785,,129.64353608471862,178.18287666972492,148.83214502309235,138.08466613276937,139.40819039917892,146.83028286189685,18.801264078991206,12.804759149497096,,117.4651476511111,116.90757810191737,167.94342956443307,89.34758268928734,35.83650496835492,72.49975702489621,100.0,45.152848533956046,45.152848533956046,,163.74368264730123,279.90650318005817,173.52358607927596,117.16579260422661,88.28851252585255,135.0533281757818,159.61356753541605,66.59312165511189,41.721466842306995,,118.33090682196341,0.0,0.0,0.0,159.52303015223848,55.57078739484038,77.47457421607334,139.41600946843283,,121.84791313542851,157.9735973533208,124.73541954997123,118.12858631253206,11.214623796787286,106.78002802960798,55.74889023020297,52.20909870406187,,37.77159757102648,46.77545795947564,279.8762673581415,0.0,38.542713079447026,80.59320719361813,112.86560324504252,140.04356840383926,,78.71734414604941,43.10260741443389,77.10519461333914,83.03853002006002,54.969569798000215,67.38664919837653,17.404846253526745,25.828330181976256,,137.11779044272006,52.61377066260282,47.15476153451413,59.398082634860906,79.4918710249273,75.15525525992504,36.73757160056493,48.88223913751307,,103.07353787301538,59.03522361484753,0.0,66.75471760461535,56.1489709518404,57.00249000886373,36.98578024824033,64.88449933062424,,116.63026575644952,102.23734391279334,43.831970081017616,68.21224750027213,78.68506733326076,81.91937891675867,28.577361239654284,34.884738651025174,,72.14654897600572,72.07905049217037,171.53017945169267,48.668710249273026,25.506991851586918,77.98629620414575,55.75180383667143,71.48923150642929,,276.1188906339901,103.81188089943552,0.0,0.0,234.24288957656242,122.8347322219976,128.8860179555489,104.92636376054851,,84.27499144727635,162.32420265289934,135.0096509711229,111.88260026124684,202.51752336448598,139.2017937394063,45.619056914968354,32.771888701642624,,318.91065513863185,168.53219711695462,124.36868264730123,157.1069634720948,208.77715489760055,195.5391306545166,75.2785111143658,38.497926661732855,,279.80559075994836,166.0912303481736,168.94083264652372,139.95045251683334,222.7293684979862,195.50349495389304,55.91262918527046,28.599299055219817,,376.9316520752017,240.12237198127733,393.18114668698587,239.4354910818418,312.4176654563267,84.13838126369888,26.93137762898388,,270.2750672555087,301.35813364019464,293.6819669709363,243.45641804158177,140.9126630848897,249.9368497986222,64.99941553969374,26.00633543715732,,260.7117712690687,280.5801467958387,305.522921299392,295.5751317896963,73.79948916914176,243.2378920646275,96.21299853378675,39.55510291473143, diff --git a/tests/data/live_cell_imaging/info_df.csv b/tests/data/live_cell_imaging/info_df.csv new file mode 100644 index 0000000..87dd69e --- /dev/null +++ b/tests/data/live_cell_imaging/info_df.csv @@ -0,0 +1,6 @@ +Vessel Name: 220727_2%FCS_X_C55_C56_C57_C58 +Metric: Relative Wound Density (%) +Cell Type: X +Passage: 24 +Notes: C55_C56_C57_C58 +Analysis: X_Wounding_CS_V2 diff --git a/tests/data/live_cell_imaging/metrics_df.csv b/tests/data/live_cell_imaging/metrics_df.csv new file mode 100644 index 0000000..de90ae6 --- /dev/null +++ b/tests/data/live_cell_imaging/metrics_df.csv @@ -0,0 +1,5 @@ +,CA 10 µM (A1),CA 10 µM (A2),CA 10 µM (A3),CA 10 µM (A4),CA 10 µM (A5),,CC 10 µM (A6),CC 10 µM (A7),CC 10 µM (A8),CC 10 µM (A9),CC 10 µM (A10),,DMSO 0.05% (A11),DMSO 0.05% (B11),DMSO 0.05% (C11),DMSO 0.05% (D11),DMSO 0.05% (E11),DMSO 0.05% (F11),,UT 100% (A12),UT 100% (B12),UT 100% (C12),UT 100% (D12),UT 100% (E12),UT 100% (F12),,CA 1 µM (B1),CA 1 µM (B2),CA 1 µM (B3),CA 1 µM (B4),CA 1 µM (B5),,CC 1 µM (B6),CC 1 µM (B7),CC 1 µM (B8),CC 1 µM (B9),CC 1 µM (B10),,CA 0.1 µM (C1),CA 0.1 µM (C2),CA 0.1 µM (C3),CA 0.1 µM (C4),CA 0.1 µM (C5),,CC 0.1 µM (C6),CC 0.1 µM (C7),CC 0.1 µM (C8),CC 0.1 µM (C9),CC 0.1 µM (C10),,CA 0.01 µM (D1),CA 0.01 µM (D2),CA 0.01 µM (D3),CA 0.01 µM (D4),CA 0.01 µM (D5),,CC 0.01 µM (D6),CC 0.01 µM (D7),CC 0.01 µM (D8),CC 0.01 µM (D9),CC 0.01 µM (D10),,CB 10 µM (E1),CB 10 µM (E2),CB 10 µM (E3),CB 10 µM (E4),CB 10 µM (E5),,CD 10 µM (E6),CD 10 µM (E7),CD 10 µM (E8),CD 10 µM (E9),CD 10 µM (E10),,CB 1 µM (F1),CB 1 µM (F2),CB 1 µM (F3),CB 1 µM (F4),CB 1 µM (F5),,CD 1 µM (F6),CD 1 µM (F7),CD 1 µM (F8),CD 1 µM (F9),CD 1 µM (F10),,CB 0.1 µM (G1),CB 0.1 µM (G2),CB 0.1 µM (G3),CB 0.1 µM (G4),CB 0.1 µM (G5),,CD 0.1 µM (G6),CD 0.1 µM (G7),CD 0.1 µM (G8),CD 0.1 µM (G9),CD 0.1 µM (G10),,Pos 10 µM (G11),Pos 10 µM (G12),Pos 10 µM (H11),Pos 10 µM (H12),,CB 0.01 µM (H1),CB 0.01 µM (H2),CB 0.01 µM (H3),CB 0.01 µM (H4),CB 0.01 µM (H5),,CD 0.01 µM (H6),CD 0.01 µM (H7),CD 0.01 µM (H8),CD 0.01 µM (H9),CD 0.01 µM (H10), +8,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,0,,0,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0,,0,0,0,0,,0,0,0,0,0,,0,0,0,0,0, +9,2.941424,0.7709512,,-0.9661244,,,1.2095,1.907017,1.891028,1.445611,2.349506,,1.624458,1.587884,2.080587,1.17492,0.4584868,0.849259,,2.211427,3.804555,2.52322,1.118516,1.60945,2.483132,,2.296167,0,0,,1.857243,,2.125729,2.373146,1.194392,0.8878424,-0.1615143,,0.6991959,0.5156834,5.149718,,0.6990805,,0.9538784,0.6376827,0.8849707,1.343013,0.3406399,,1.909729,1.011549,-0.3114207,1.171259,0.5547474,,1.48487,0.1732116,0,0.4102185,0.778515,,1.776656,0.1189434,0.7330513,0.4719042,0.7252991,,0.4734694,0.8170961,2.897962,0.5366114,0.4626927,,3.35836,1.302759,,,2.761429,,1.018728,1.988602,1.417326,1.585365,2.739432,,4.537059,1.258467,0.985615,1.610166,3.046306,,3.7115,1.443673,0.8639878,1.5654,3.624008,,5.149839,3.571585,7.690483,3.238868,,3.952368,3.987249,3.654827,3.378263,3.771674,,2.597566,3.637967,3.37047,3.792182,3.945292, +10,3.439121,1.6205,,0.08946762,,,3.070065,4.391799,3.2835,2.698675,3.589451,,2.745719,2.628779,4.241597,2.058636,0.5669807,1.397869,,3.886579,6.691884,4.031245,3.079788,1.979,3.509718,,3.066563,0,0,,3.644812,,3.306175,3.838465,2.640489,3.025772,0.1791517,,1.056791,1.143308,7.459068,,1.061978,,1.937168,1.175532,2.306213,2.372698,1.178732,,3.314485,1.402258,0.9818405,2.02676,1.598561,,2.414337,1.259886,0,1.62955,1.222111,,2.608018,1.932287,1.126612,2.181001,1.848864,,1.295691,1.538294,3.932674,1.358594,0.4188254,,5.386405,2.583961,,,5.516322,,2.459945,3.861227,3.130836,2.664682,4.383809,,6.429445,3.61166,3.107372,2.625817,4.931927,,6.191323,3.711043,3.307125,2.791503,4.252559,,8.501356,6.001993,10.31227,6.180362,,5.806409,5.472285,6.167523,4.483469,1.760216,,5.003536,5.636861,4.774235,5.645293,-2.221393, +11,3.740245,2.080393,,0.2708296,,,4.446393,6.11115,5.104506,4.735899,4.781292,,4.02871,4.009587,5.759967,3.06436,1.229087,2.486529,,5.615928,9.599972,5.95135,4.018443,3.028037,4.631933,,4.058403,0,0,,5.471172,,4.179026,5.418031,4.278059,4.051464,0.3846287,,1.295455,1.604261,9.598935,,1.321902,,2.699774,1.478293,2.644482,2.847978,1.885295,,4.702738,1.804498,1.61727,2.03718,2.726338,,3.53512,2.024735,0,2.289491,1.925745,,4.000076,3.506441,1.503308,2.33948,2.698667,,2.474415,2.4721,5.882982,1.669194,0.874815,,9.470068,3.560443,,,8.033844,,2.890385,5.567244,4.630435,3.837245,6.945757,,10.9377,5.78016,4.265481,5.388308,7.160444,,9.596511,5.696442,5.794175,4.79989,7.638964,,12.92765,8.235493,13.48496,8.211935,,9.269642,10.3357,10.07243,8.349841,4.832891,,8.941649,9.623076,10.47854,10.13736,2.531106, diff --git a/tests/data/live_cell_imaging/notes_compounds_df.csv b/tests/data/live_cell_imaging/notes_compounds_df.csv new file mode 100644 index 0000000..cfb2226 --- /dev/null +++ b/tests/data/live_cell_imaging/notes_compounds_df.csv @@ -0,0 +1,5 @@ +,C55 10 µM (A1),C55 10 µM (A2),C55 10 µM (A3),C55 10 µM (A4),C55 10 µM (A5),,C57 10 µM (A6),C57 10 µM (A7),C57 10 µM (A8),C57 10 µM (A9),C57 10 µM (A10),,DMSO 0.05% (A11),DMSO 0.05% (B11),DMSO 0.05% (C11),DMSO 0.05% (D11),DMSO 0.05% (E11),DMSO 0.05% (F11),,UT 100% (A12),UT 100% (B12),UT 100% (C12),UT 100% (D12),UT 100% (E12),UT 100% (F12),,C55 1 µM (B1),C55 1 µM (B2),C55 1 µM (B3),C55 1 µM (B4),C55 1 µM (B5),,C57 1 µM (B6),C57 1 µM (B7),C57 1 µM (B8),C57 1 µM (B9),C57 1 µM (B10),,C55 0.1 µM (C1),C55 0.1 µM (C2),C55 0.1 µM (C3),C55 0.1 µM (C4),C55 0.1 µM (C5),,C57 0.1 µM (C6),C57 0.1 µM (C7),C57 0.1 µM (C8),C57 0.1 µM (C9),C57 0.1 µM (C10),,C55 0.01 µM (D1),C55 0.01 µM (D2),C55 0.01 µM (D3),C55 0.01 µM (D4),C55 0.01 µM (D5),,C57 0.01 µM (D6),C57 0.01 µM (D7),C57 0.01 µM (D8),C57 0.01 µM (D9),C57 0.01 µM (D10),,C56 10 µM (E1),C56 10 µM (E2),C56 10 µM (E3),C56 10 µM (E4),C56 10 µM (E5),,C58 10 µM (E6),C58 10 µM (E7),C58 10 µM (E8),C58 10 µM (E9),C58 10 µM (E10),,C56 1 µM (F1),C56 1 µM (F2),C56 1 µM (F3),C56 1 µM (F4),C56 1 µM (F5),,C58 1 µM (F6),C58 1 µM (F7),C58 1 µM (F8),C58 1 µM (F9),C58 1 µM (F10),,C56 0.1 µM (G1),C56 0.1 µM (G2),C56 0.1 µM (G3),C56 0.1 µM (G4),C56 0.1 µM (G5),,C58 0.1 µM (G6),C58 0.1 µM (G7),C58 0.1 µM (G8),C58 0.1 µM (G9),C58 0.1 µM (G10),,Pos 10 µM (G11),Pos 10 µM (G12),Pos 10 µM (H11),Pos 10 µM (H12),,C56 0.01 µM (H1),C56 0.01 µM (H2),C56 0.01 µM (H3),C56 0.01 µM (H4),C56 0.01 µM (H5),,C58 0.01 µM (H6),C58 0.01 µM (H7),C58 0.01 µM (H8),C58 0.01 µM (H9),C58 0.01 µM (H10), +8,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0,0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0, +9,2.941424,0.7709512,,-0.9661244,,,1.2095,1.907017,1.891028,1.445611,2.349506,,1.624458,1.587884,2.080587,1.17492,0.4584868,0.849259,,2.211427,3.804555,2.52322,1.118516,1.60945,2.483132,,2.296167,0,0,,1.857243,,2.125729,2.373146,1.194392,0.8878424,-0.1615143,,0.6991959,0.5156834,5.149718,,0.6990805,,0.9538784,0.6376827,0.8849707,1.343013,0.3406399,,1.909729,1.011549,-0.3114207,1.171259,0.5547474,,1.48487,0.1732116,0,0.4102185,0.778515,,1.776656,0.1189434,0.7330513,0.4719042,0.7252991,,0.4734694,0.8170961,2.897962,0.5366114,0.4626927,,3.35836,1.302759,,,2.761429,,1.018728,1.988602,1.417326,1.585365,2.739432,,4.537059,1.258467,0.985615,1.610166,3.046306,,3.7115,1.443673,0.8639878,1.5654,3.624008,,5.149839,3.571585,7.690483,3.238868,,3.952368,3.987249,3.654827,3.378263,3.771674,,2.597566,3.637967,3.37047,3.792182,3.945292, +10,3.439121,1.6205,,0.08946762,,,3.070065,4.391799,3.2835,2.698675,3.589451,,2.745719,2.628779,4.241597,2.058636,0.5669807,1.397869,,3.886579,6.691884,4.031245,3.079788,1.979,3.509718,,3.066563,0,0,,3.644812,,3.306175,3.838465,2.640489,3.025772,0.1791517,,1.056791,1.143308,7.459068,,1.061978,,1.937168,1.175532,2.306213,2.372698,1.178732,,3.314485,1.402258,0.9818405,2.02676,1.598561,,2.414337,1.259886,0,1.62955,1.222111,,2.608018,1.932287,1.126612,2.181001,1.848864,,1.295691,1.538294,3.932674,1.358594,0.4188254,,5.386405,2.583961,,,5.516322,,2.459945,3.861227,3.130836,2.664682,4.383809,,6.429445,3.61166,3.107372,2.625817,4.931927,,6.191323,3.711043,3.307125,2.791503,4.252559,,8.501356,6.001993,10.31227,6.180362,,5.806409,5.472285,6.167523,4.483469,1.760216,,5.003536,5.636861,4.774235,5.645293,-2.221393, +11,3.740245,2.080393,,0.2708296,,,4.446393,6.11115,5.104506,4.735899,4.781292,,4.02871,4.009587,5.759967,3.06436,1.229087,2.486529,,5.615928,9.599972,5.95135,4.018443,3.028037,4.631933,,4.058403,0,0,,5.471172,,4.179026,5.418031,4.278059,4.051464,0.3846287,,1.295455,1.604261,9.598935,,1.321902,,2.699774,1.478293,2.644482,2.847978,1.885295,,4.702738,1.804498,1.61727,2.03718,2.726338,,3.53512,2.024735,0,2.289491,1.925745,,4.000076,3.506441,1.503308,2.33948,2.698667,,2.474415,2.4721,5.882982,1.669194,0.874815,,9.470068,3.560443,,,8.033844,,2.890385,5.567244,4.630435,3.837245,6.945757,,10.9377,5.78016,4.265481,5.388308,7.160444,,9.596511,5.696442,5.794175,4.79989,7.638964,,12.92765,8.235493,13.48496,8.211935,,9.269642,10.3357,10.07243,8.349841,4.832891,,8.941649,9.623076,10.47854,10.13736,2.531106, diff --git a/tests/data/live_cell_imaging/stats_df.csv b/tests/data/live_cell_imaging/stats_df.csv new file mode 100644 index 0000000..ae7c762 --- /dev/null +++ b/tests/data/live_cell_imaging/stats_df.csv @@ -0,0 +1,5 @@ +,C55 10 µM (A1),C55 10 µM (A2),C55 10 µM (A3),C55 10 µM (A4),C55 10 µM (A5),Average,StDev,SEM,,C57 10 µM (A6),C57 10 µM (A7),C57 10 µM (A8),C57 10 µM (A9),C57 10 µM (A10),Average,StDev,SEM,,DMSO 0.05% (A11),DMSO 0.05% (B11),DMSO 0.05% (C11),DMSO 0.05% (D11),DMSO 0.05% (E11),DMSO 0.05% (F11),Average,StDev,SEM,,UT 100% (A12),UT 100% (B12),UT 100% (C12),UT 100% (D12),UT 100% (E12),UT 100% (F12),Average,StDev,SEM,,C55 1 µM (B1),C55 1 µM (B2),C55 1 µM (B3),C55 1 µM (B4),C55 1 µM (B5),Average,StDev,SEM,,C57 1 µM (B6),C57 1 µM (B7),C57 1 µM (B8),C57 1 µM (B9),C57 1 µM (B10),Average,StDev,SEM,,C55 0.1 µM (C1),C55 0.1 µM (C2),C55 0.1 µM (C3),C55 0.1 µM (C4),C55 0.1 µM (C5),Average,StDev,SEM,,C57 0.1 µM (C6),C57 0.1 µM (C7),C57 0.1 µM (C8),C57 0.1 µM (C9),C57 0.1 µM (C10),Average,StDev,SEM,,C55 0.01 µM (D1),C55 0.01 µM (D2),C55 0.01 µM (D3),C55 0.01 µM (D4),C55 0.01 µM (D5),Average,StDev,SEM,,C57 0.01 µM (D6),C57 0.01 µM (D7),C57 0.01 µM (D8),C57 0.01 µM (D9),C57 0.01 µM (D10),Average,StDev,SEM,,C56 10 µM (E1),C56 10 µM (E2),C56 10 µM (E3),C56 10 µM (E4),C56 10 µM (E5),Average,StDev,SEM,,C58 10 µM (E6),C58 10 µM (E7),C58 10 µM (E8),C58 10 µM (E9),C58 10 µM (E10),Average,StDev,SEM,,C56 1 µM (F1),C56 1 µM (F2),C56 1 µM (F3),C56 1 µM (F4),C56 1 µM (F5),Average,StDev,SEM,,C58 1 µM (F6),C58 1 µM (F7),C58 1 µM (F8),C58 1 µM (F9),C58 1 µM (F10),Average,StDev,SEM,,C56 0.1 µM (G1),C56 0.1 µM (G2),C56 0.1 µM (G3),C56 0.1 µM (G4),C56 0.1 µM (G5),Average,StDev,SEM,,C58 0.1 µM (G6),C58 0.1 µM (G7),C58 0.1 µM (G8),C58 0.1 µM (G9),C58 0.1 µM (G10),Average,StDev,SEM,,Pos 10 µM (G11),Pos 10 µM (G12),Pos 10 µM (H11),Pos 10 µM (H12),Average,StDev,SEM,,C56 0.01 µM (H1),C56 0.01 µM (H2),C56 0.01 µM (H3),C56 0.01 µM (H4),C56 0.01 µM (H5),Average,StDev,SEM,,C58 0.01 µM (H6),C58 0.01 µM (H7),C58 0.01 µM (H8),C58 0.01 µM (H9),C58 0.01 µM (H10),Average,StDev,SEM, +8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0,0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, +9,2.941424,0.7709512,,-0.9661244,,0.9154169333333333,1.9577758772817417,213.86712502169232,,1.2095,1.907017,1.891028,1.445611,2.349506,1.7605324,0.44390002680254476,25.213965207487504,,1.624458,1.587884,2.080587,1.17492,0.4584868,0.849259,1.2959324666666667,0.5872518894102825,45.31500710996019,,2.211427,3.804555,2.52322,1.118516,1.60945,2.483132,2.291716666666667,0.9194832772016394,40.12203125175331,,2.296167,0,0,,1.857243,1.0383525,1.2123023269675763,116.75248308908354,,2.125729,2.373146,1.194392,0.8878424,-0.1615143,1.2839190200000001,1.0184827827673928,79.32609198104976,,0.6991959,0.5156834,5.149718,,0.6990805,1.76591945,2.257522778405821,127.838377815354,,0.9538784,0.6376827,0.8849707,1.343013,0.3406399,0.8320369400000001,0.373493132380815,44.88900845926564,,1.909729,1.011549,-0.3114207,1.171259,0.5547474,0.86717274,0.8195926736987575,94.51319626338318,,1.48487,0.1732116,0,0.4102185,0.778515,0.5693630199999999,0.5891380898236439,103.473191817699,,1.776656,0.1189434,0.7330513,0.4719042,0.7252991,0.7651708,0.6183322075847457,80.80969733616935,,0.4734694,0.8170961,2.897962,0.5366114,0.4626927,1.03756632,1.0499190504590235,101.19054851925257,,3.35836,1.302759,,,2.761429,2.4741826666666666,1.05747657648306,42.740440741497125,,1.018728,1.988602,1.417326,1.585365,2.739432,1.7498906,0.6535369057427437,37.34730078227425,,4.537059,1.258467,0.985615,1.610166,3.046306,2.2875226,1.4873547873181772,65.02033192232406,,3.7115,1.443673,0.8639878,1.5654,3.624008,2.24171376,1.3288535599037195,59.27846737683938,,5.149839,3.571585,7.690483,3.238868,4.91269375,2.0308139835792245,41.338094473713625,,3.952368,3.987249,3.654827,3.378263,3.771674,3.7488761999999998,0.24746193655126025,6.600963151337466,,2.597566,3.637967,3.37047,3.792182,3.945292,3.4686954,0.5312615727744666,15.315890025237344, +10,3.439121,1.6205,,0.08946762,,1.7163628733333334,1.6768830339052119,97.69979646836289,,3.070065,4.391799,3.2835,2.698675,3.589451,3.406698,0.6390654762291574,18.759088015114855,,2.745719,2.628779,4.241597,2.058636,0.5669807,1.397869,2.27326345,1.2607714880504772,55.460861258754555,,3.886579,6.691884,4.031245,3.079788,1.979,3.509718,3.8630356666666668,1.5696580669405253,40.632761444187,,3.066563,0,0,,3.644812,1.67784375,1.95173636801155,116.32408369441731,,3.306175,3.838465,2.640489,3.025772,0.1791517,2.5980105399999998,1.420905217089834,54.69204975164704,,1.056791,1.143308,7.459068,,1.061978,2.68028625,3.186100834034016,118.87166283205816,,1.937168,1.175532,2.306213,2.372698,1.178732,1.7940686000000001,0.5871132693346319,32.72524079261138,,3.314485,1.402258,0.9818405,2.02676,1.598561,1.8647809,0.8933453174061808,47.9061812251606,,2.414337,1.259886,0,1.62955,1.222111,1.3051768000000001,0.8729106462139754,66.88064377285708,,2.608018,1.932287,1.126612,2.181001,1.848864,1.9393564,0.541823947105792,27.938338054098356,,1.295691,1.538294,3.932674,1.358594,0.4188254,1.70881568,1.316437011372444,77.03797587885218,,5.386405,2.583961,,,5.516322,4.495562666666666,1.6567695391104742,36.85344109192281,,2.459945,3.861227,3.130836,2.664682,4.383809,3.3000998,0.8104868085377456,24.559463581608824,,6.429445,3.61166,3.107372,2.625817,4.931927,4.1412442,1.5416641123035526,37.22707567700433,,6.191323,3.711043,3.307125,2.791503,4.252559,4.0507106,1.3111885473236866,32.369346438219665,,8.501356,6.001993,10.31227,6.180362,7.74899525,2.053375373755673,26.498601528445548,,5.806409,5.472285,6.167523,4.483469,1.760216,4.7379804000000005,1.778777096682662,37.54293911141257,,5.003536,5.636861,4.774235,5.645293,-2.221393,3.7677064,3.370042900510882,89.44547538287172, +11,3.740245,2.080393,,0.2708296,,2.0304892,1.735245975756786,85.4595028506818,,4.446393,6.11115,5.104506,4.735899,4.781292,5.035848,0.6448282075347669,12.804759149497105,,4.02871,4.009587,5.759967,3.06436,1.229087,2.486529,3.4297066666666667,1.548610256358993,45.15284853395605,,5.615928,9.599972,5.95135,4.018443,3.028037,4.631933,5.474277166666667,2.2839487329468158,41.72146684230699,,4.058403,0,0,,5.471172,2.3823937500000003,2.810762532590089,117.98060386072153,,4.179026,5.418031,4.278059,4.051464,0.3846287,3.6622417400000002,1.9120234048179532,52.20909870406187,,1.295455,1.604261,9.598935,,1.321902,3.45513825,4.098248151691271,118.61314526824711,,2.699774,1.478293,2.644482,2.847978,1.885295,2.3111644,0.5969351722802905,25.828330181976256,,4.702738,1.804498,1.61727,2.03718,2.726338,2.5776048,1.2599909423560156,48.882239137513075,,3.53512,2.024735,0,2.289491,1.925745,1.9550182,1.268503770892582,64.88449933062424,,4.000076,3.506441,1.503308,2.33948,2.698667,2.8095944,0.980119663593839,34.884738651025174,,2.474415,2.4721,5.882982,1.669194,0.874815,2.6747012,1.912123332973242,71.48923150642929,,9.470068,3.560443,,,8.033844,7.021451666666667,3.0821454520512708,43.8961285838271,,2.890385,5.567244,4.630435,3.837245,6.945757,4.7742132,1.564599836283131,32.771888701642624,,10.9377,5.78016,4.265481,5.388308,7.160444,6.7064186,2.5818321142568115,38.497926661732855,,9.596511,5.696442,5.794175,4.79989,7.638964,6.7051964,1.9176391706758336,28.599299055219824,,12.92765,8.235493,13.48496,8.211935,10.7150095,2.8856996714264977,26.93137762898388,,9.269642,10.3357,10.07243,8.349841,4.832891,8.5721008,2.229289288059246,26.00633543715732,,8.941649,9.623076,10.47854,10.13736,2.531106,8.3423462,3.299823624913186,39.55510291473142, diff --git a/tests/data/live_cell_imaging/test.txt b/tests/data/live_cell_imaging/test.txt new file mode 100644 index 0000000..bc5f6b8 --- /dev/null +++ b/tests/data/live_cell_imaging/test.txt @@ -0,0 +1,12 @@ +Vessel Name: 220727_2%FCS_X_C55_C56_C57_C58 +Metric: Relative Wound Density (%) +Cell Type: X +Passage: 24 +Notes: C55_C56_C57_C58 +Analysis: X_Wounding_CS_V2 + +Date Time Elapsed CA 10 µM (A1) CA 10 µM (A2) CA 10 µM (A3) CA 10 µM (A4) CA 10 µM (A5) CC 10 µM (A6) CC 10 µM (A7) CC 10 µM (A8) CC 10 µM (A9) CC 10 µM (A10) DMSO 0.05% (A11) DMSO 0.05% (B11) DMSO 0.05% (C11) DMSO 0.05% (D11) DMSO 0.05% (E11) DMSO 0.05% (F11) UT 100% (A12) UT 100% (B12) UT 100% (C12) UT 100% (D12) UT 100% (E12) UT 100% (F12) CA 1 µM (B1) CA 1 µM (B2) CA 1 µM (B3) CA 1 µM (B4) CA 1 µM (B5) CC 1 µM (B6) CC 1 µM (B7) CC 1 µM (B8) CC 1 µM (B9) CC 1 µM (B10) CA 0.1 µM (C1) CA 0.1 µM (C2) CA 0.1 µM (C3) CA 0.1 µM (C4) CA 0.1 µM (C5) CC 0.1 µM (C6) CC 0.1 µM (C7) CC 0.1 µM (C8) CC 0.1 µM (C9) CC 0.1 µM (C10) CA 0.01 µM (D1) CA 0.01 µM (D2) CA 0.01 µM (D3) CA 0.01 µM (D4) CA 0.01 µM (D5) CC 0.01 µM (D6) CC 0.01 µM (D7) CC 0.01 µM (D8) CC 0.01 µM (D9) CC 0.01 µM (D10) CB 10 µM (E1) CB 10 µM (E2) CB 10 µM (E3) CB 10 µM (E4) CB 10 µM (E5) CD 10 µM (E6) CD 10 µM (E7) CD 10 µM (E8) CD 10 µM (E9) CD 10 µM (E10) CB 1 µM (F1) CB 1 µM (F2) CB 1 µM (F3) CB 1 µM (F4) CB 1 µM (F5) CD 1 µM (F6) CD 1 µM (F7) CD 1 µM (F8) CD 1 µM (F9) CD 1 µM (F10) CB 0.1 µM (G1) CB 0.1 µM (G2) CB 0.1 µM (G3) CB 0.1 µM (G4) CB 0.1 µM (G5) CD 0.1 µM (G6) CD 0.1 µM (G7) CD 0.1 µM (G8) CD 0.1 µM (G9) CD 0.1 µM (G10) Pos 10 µM (G11) Pos 10 µM (G12) Pos 10 µM (H11) Pos 10 µM (H12) CB 0.01 µM (H1) CB 0.01 µM (H2) CB 0.01 µM (H3) CB 0.01 µM (H4) CB 0.01 µM (H5) CD 0.01 µM (H6) CD 0.01 µM (H7) CD 0.01 µM (H8) CD 0.01 µM (H9) CD 0.01 µM (H10) +27/07/2022 18:00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +27/07/2022 21:00 3 2.941424 0.7709512 -0.9661244 1.2095 1.907017 1.891028 1.445611 2.349506 1.624458 1.587884 2.080587 1.17492 0.4584868 0.849259 2.211427 3.804555 2.52322 1.118516 1.60945 2.483132 2.296167 0 0 1.857243 2.125729 2.373146 1.194392 0.8878424 -0.1615143 0.6991959 0.5156834 5.149718 0.6990805 0.9538784 0.6376827 0.8849707 1.343013 0.3406399 1.909729 1.011549 -0.3114207 1.171259 0.5547474 1.48487 0.1732116 0 0.4102185 0.778515 1.776656 0.1189434 0.7330513 0.4719042 0.7252991 0.4734694 0.8170961 2.897962 0.5366114 0.4626927 3.35836 1.302759 2.761429 1.018728 1.988602 1.417326 1.585365 2.739432 4.537059 1.258467 0.985615 1.610166 3.046306 3.7115 1.443673 0.8639878 1.5654 3.624008 5.149839 3.571585 7.690483 3.238868 3.952368 3.987249 3.654827 3.378263 3.771674 2.597566 3.637967 3.37047 3.792182 3.945292 +28/07/2022 0:00 6 3.439121 1.6205 0.08946762 3.070065 4.391799 3.2835 2.698675 3.589451 2.745719 2.628779 4.241597 2.058636 0.5669807 1.397869 3.886579 6.691884 4.031245 3.079788 1.979 3.509718 3.066563 0 0 3.644812 3.306175 3.838465 2.640489 3.025772 0.1791517 1.056791 1.143308 7.459068 1.061978 1.937168 1.175532 2.306213 2.372698 1.178732 3.314485 1.402258 0.9818405 2.02676 1.598561 2.414337 1.259886 0 1.62955 1.222111 2.608018 1.932287 1.126612 2.181001 1.848864 1.295691 1.538294 3.932674 1.358594 0.4188254 5.386405 2.583961 5.516322 2.459945 3.861227 3.130836 2.664682 4.383809 6.429445 3.61166 3.107372 2.625817 4.931927 6.191323 3.711043 3.307125 2.791503 4.252559 8.501356 6.001993 10.31227 6.180362 5.806409 5.472285 6.167523 4.483469 1.760216 5.003536 5.636861 4.774235 5.645293 -2.221393 +28/07/2022 3:00 9 3.740245 2.080393 0.2708296 4.446393 6.11115 5.104506 4.735899 4.781292 4.02871 4.009587 5.759967 3.06436 1.229087 2.486529 5.615928 9.599972 5.95135 4.018443 3.028037 4.631933 4.058403 0 0 5.471172 4.179026 5.418031 4.278059 4.051464 0.3846287 1.295455 1.604261 9.598935 1.321902 2.699774 1.478293 2.644482 2.847978 1.885295 4.702738 1.804498 1.61727 2.03718 2.726338 3.53512 2.024735 0 2.289491 1.925745 4.000076 3.506441 1.503308 2.33948 2.698667 2.474415 2.4721 5.882982 1.669194 0.874815 9.470068 3.560443 8.033844 2.890385 5.567244 4.630435 3.837245 6.945757 10.9377 5.78016 4.265481 5.388308 7.160444 9.596511 5.696442 5.794175 4.79989 7.638964 12.92765 8.235493 13.48496 8.211935 9.269642 10.3357 10.07243 8.349841 4.832891 8.941649 9.623076 10.47854 10.13736 2.531106 diff --git a/tests/data/live_cell_imaging/test.xlsx b/tests/data/live_cell_imaging/test.xlsx new file mode 100644 index 0000000..7680941 Binary files /dev/null and b/tests/data/live_cell_imaging/test.xlsx differ diff --git a/tests/data/live_cell_imaging/time_df.csv b/tests/data/live_cell_imaging/time_df.csv new file mode 100644 index 0000000..ef6f874 --- /dev/null +++ b/tests/data/live_cell_imaging/time_df.csv @@ -0,0 +1,5 @@ +,Date Time,Elapsed +8,27/07/2022 18:00,0 +9,27/07/2022 21:00,3 +10,28/07/2022 0:00,6 +11,28/07/2022 3:00,9 diff --git a/tests/data/root_directory/image1.jpg b/tests/data/root_directory/image1.jpg new file mode 100644 index 0000000..02b045c Binary files /dev/null and b/tests/data/root_directory/image1.jpg differ diff --git a/tests/data/root_directory/image2.jpg b/tests/data/root_directory/image2.jpg new file mode 100644 index 0000000..2011b4e Binary files /dev/null and b/tests/data/root_directory/image2.jpg differ diff --git a/tests/data/root_directory/subdirectory1/file.txt b/tests/data/root_directory/subdirectory1/file.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/root_directory/subdirectory2/subdirectory4/file.txt b/tests/data/root_directory/subdirectory2/subdirectory4/file.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/subimage/file.csv b/tests/data/subimage/file.csv new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/subimage/file.txt b/tests/data/subimage/file.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/subimage/subimage.png b/tests/data/subimage/subimage.png new file mode 100644 index 0000000..6fbbf09 Binary files /dev/null and b/tests/data/subimage/subimage.png differ diff --git a/tests/data/tight_junctions.tiff b/tests/data/tight_junctions.tiff new file mode 100644 index 0000000..76d9a18 Binary files /dev/null and b/tests/data/tight_junctions.tiff differ diff --git a/tests/data/tissue_area.tif b/tests/data/tissue_area.tif new file mode 100644 index 0000000..a7ee9cc Binary files /dev/null and b/tests/data/tissue_area.tif differ diff --git a/tests/data/tissue_boundary.pickle b/tests/data/tissue_boundary.pickle new file mode 100644 index 0000000..658626c Binary files /dev/null and b/tests/data/tissue_boundary.pickle differ diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 0000000..3790200 --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,5 @@ +import subprocess + + +def test_cli() -> None: + assert 'help' in subprocess.check_output(['bimana', '-h'], text=True) diff --git a/tests/test_histological_section/__init__.py b/tests/test_histological_section/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_histological_section/test_analysis.py b/tests/test_histological_section/test_analysis.py new file mode 100644 index 0000000..0900bb4 --- /dev/null +++ b/tests/test_histological_section/test_analysis.py @@ -0,0 +1,113 @@ +import pickle +from pathlib import Path +from shutil import copy2 +from typing import Any + +import cv2 +import numpy as np +import numpy.typing as npt +import pytest + +from bimana.histological_section.analysis import ( + amount_cilia_above_tissue_area, amount_staining_in_tissue_area, + crop_and_save_tissue_sections, tissue_boundary) +from tests import SUBIMG_PTH, TEST_IMG_PTH, TEST_TISS_BNDY_PTH + + +@pytest.fixture(scope='module') +def img() -> npt.NDArray[Any]: + return cv2.imread(TEST_IMG_PTH) + + +@pytest.fixture +def tiss_bndy() -> None: + with open(TEST_TISS_BNDY_PTH, 'rb') as f: + return pickle.load(f) + + +def test_amount_staining_in_tissue_areae( + img: npt.NDArray[Any], + tiss_bndy: list[list[npt.NDArray[Any]]], + tmp_path: Path, +) -> None: + upper_lower_xs, upper_lower_ys = tiss_bndy + stain_lower_bgr = np.array([0, 0, 0]) + stain_upper_bgr = np.array([255, 255, 150]) + + pct_stn, stn_amt, tiss_size, procd_imgs = amount_staining_in_tissue_area( + img, [upper_lower_xs], [upper_lower_ys], stain_lower_bgr, + stain_upper_bgr) + + assert 10 < pct_stn < 25 + assert 10 < (stn_amt / tiss_size) * 100 < 25 + assert tiss_size > stn_amt + + for name, procd_img in procd_imgs: + assert cv2.imwrite(str(tmp_path / f'{name}.png'), procd_img) + + +def test_amount_cilia_above_tissue_area( + img: npt.NDArray[Any], + tiss_bndy: list[list[npt.NDArray[Any]]], + tmp_path: Path, +) -> None: + upper_lower_xs, upper_lower_ys = tiss_bndy + cilia_lower_bgr = np.array([220, 220, 220]) + cilia_upper_bgr = np.array([245, 245, 245]) + thickness = 15 + + pct_cil, cil_amt, reg_size, procd_imgs = amount_cilia_above_tissue_area( + img, [upper_lower_xs], [upper_lower_ys], cilia_lower_bgr, + cilia_upper_bgr, thickness) + + assert 20 < pct_cil < 35 + assert 20 < (cil_amt / reg_size) * 100 < 35 + assert reg_size > cil_amt + + for name, procd_img in procd_imgs: + assert cv2.imwrite(str(tmp_path / f'{name}.png'), procd_img) + + +@pytest.mark.parametrize( + 'iso_non_tissue_sens,smooth_segmented_tissue_boundary', + [(0.2, True), (None, False)] +) +def test_tissue_boundary( + iso_non_tissue_sens: float | None, + smooth_segmented_tissue_boundary: bool, + img: npt.NDArray[Any], + tmp_path: Path, +) -> None: + # TODO compare outputs of the different inputs? + non_tissue_stain_lower_bgr = np.array([210, 210, 210]) + non_tissue_stain_upper_bgr = np.array([255, 255, 150]) + + (upper_lower_xs, upper_lower_ys), procd_imgs = tissue_boundary( + img, non_tissue_stain_lower_bgr, non_tissue_stain_upper_bgr, + iso_non_tissue_sens=iso_non_tissue_sens, + smooth_segmented_tissue_boundary=smooth_segmented_tissue_boundary) + + upper_lower_xs, upper_lower_ys = upper_lower_xs[0], upper_lower_ys[0] + assert len(upper_lower_xs[0]) == len(upper_lower_ys[0]) + assert len(upper_lower_xs[1]) == len(upper_lower_ys[1]) + + assert len(upper_lower_xs[0]) > 2 + assert len(upper_lower_xs[1]) > 2 + + assert np.all(upper_lower_ys[0] < upper_lower_ys[1]) + + for name, procd_img in procd_imgs: + assert cv2.imwrite(str(tmp_path / f'{name}.png'), procd_img) + + +def test_crop_and_save_tissue_sections(tmp_path: Path) -> None: + # TODO Check image contents? + subimg_path = Path(SUBIMG_PTH) + copy2(subimg_path, tmp_path / subimg_path.name) + + dirs = crop_and_save_tissue_sections(tmp_path, 2) + + files = [f for d in dirs for f in d.iterdir()] + assert len(files) == 2 + for f in files: + assert f.is_file() diff --git a/tests/test_histological_section/test_commands.py b/tests/test_histological_section/test_commands.py new file mode 100644 index 0000000..ee5bb79 --- /dev/null +++ b/tests/test_histological_section/test_commands.py @@ -0,0 +1,37 @@ +import shutil +from pathlib import Path + +from bimana.histological_section.commands import ( + METRICS_CSV_FILENAME, histological_section_analysis) +from tests import HIST_SECT_IMG_DIR_PTH + + +def test_histological_section_analysis(tmp_path: Path) -> None: + root_dir = tmp_path / 'root_dir' + shutil.copytree(HIST_SECT_IMG_DIR_PTH, root_dir) + img_filename = list(root_dir.iterdir())[0].name + # TODO dirname hardcoded? + output_dir = root_dir / str(img_filename).replace('.', '_') + amount_staining = amount_cilia = True + + histological_section_analysis.callback(root_dir, False, False) + + assert not output_dir.is_dir() + assert len(list(root_dir.iterdir())) == 1 + + non_tissue_lower_bgr_str = ('x', '10', '10') + histological_section_analysis.callback( + root_dir, amount_staining, amount_cilia, + non_tissue_lower_colour_limit=non_tissue_lower_bgr_str) + + assert not output_dir.is_dir() + assert len(list(root_dir.iterdir())) == 1 + + histological_section_analysis.callback( + root_dir, amount_staining, amount_cilia) + + assert (output_dir.parent / img_filename).is_file() + assert output_dir.is_dir() + assert len([f for f in output_dir.iterdir() if f.is_file()]) > 2 + assert METRICS_CSV_FILENAME in [f.name for f in + output_dir.parent.iterdir()] diff --git a/tests/test_live_cell_imaging/__init__.py b/tests/test_live_cell_imaging/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_live_cell_imaging/test_metrics_file_processing.py b/tests/test_live_cell_imaging/test_metrics_file_processing.py new file mode 100644 index 0000000..67f95e0 --- /dev/null +++ b/tests/test_live_cell_imaging/test_metrics_file_processing.py @@ -0,0 +1,249 @@ +import pickle +from csv import DictReader +from pathlib import Path +from shutil import copy2 + +import cv2 +import numpy as np +import pandas as pd +import pytest +from bimana.live_cell_imaging.metrics_file_processing import ( + MetricsTxtFileProcessor, metrics_file_processing) +from tests import (COMPDS_DF, CTRL_DF, METRICS_DF_PATH, DFS_PATH, FIGURES_DIR, + FLD_CHG_DF, FLD_CHG_STATS_DF, GEND_EXCEL, INFO_DF_PATH, + METRICS_TXT_FILE_PATH, NOTES_COMPDS_DF_PATH, STATS_DF, + TIME_DF_PATH) + + +def load_csv( + csv_path: str, + skip_header: bool = False, + skip_index_col: bool = False, +) -> pd.DataFrame: + df = pd.read_csv(csv_path, index_col=None if skip_index_col else 0, + header=None if skip_header else 'infer') + if not skip_header: + with open(csv_path, encoding='utf-8') as f: + if (cols := DictReader(f).fieldnames) is not None: + df.columns = cols if skip_index_col else cols[1:] + + if '' in df.columns: + df[''] = '' + + return df + + +@pytest.fixture(scope='module') +def processor() -> MetricsTxtFileProcessor: + return MetricsTxtFileProcessor(Path(METRICS_TXT_FILE_PATH)) + + +@pytest.fixture(scope='module') +def metrics_df() -> pd.DataFrame: + return load_csv(METRICS_DF_PATH) + + +@pytest.fixture(scope='module') +def info_df() -> pd.DataFrame: + return load_csv(INFO_DF_PATH, True, True) + + +@pytest.fixture(scope='module') +def time_df() -> pd.DataFrame: + return load_csv(TIME_DF_PATH) + + +@pytest.fixture(scope='module') +def stats_df() -> pd.DataFrame: + return load_csv(STATS_DF) + + +@pytest.fixture(scope='module') +def fld_chg_df() -> pd.DataFrame: + return load_csv(FLD_CHG_DF) + + +@pytest.fixture(scope='module') +def fld_chg_stats_df() -> pd.DataFrame: + return load_csv(FLD_CHG_STATS_DF) + + +@pytest.fixture(scope='module') +def ctrl_df() -> pd.DataFrame: + return load_csv(CTRL_DF) + + +@pytest.fixture(scope='module') +def notes_cmpds_df() -> pd.DataFrame: + return load_csv(NOTES_COMPDS_DF_PATH) + + +@pytest.fixture(scope='module') +def compds_df() -> pd.DataFrame: + return load_csv(COMPDS_DF) + + +@pytest.fixture(scope='module') +def dfs() -> pd.DataFrame: + with open(DFS_PATH, 'rb') as f: + return pickle.load(f) + + +def test_create_dataframes( + processor: MetricsTxtFileProcessor, + metrics_df: pd.DataFrame, + info_df: pd.DataFrame, + time_df: pd.DataFrame, +) -> None: + procd_metrics_df, procd_df_info, procd_df_time = ( + processor.create_dataframes()) + + assert procd_metrics_df.equals(metrics_df) + assert procd_df_info.equals(info_df) + assert procd_df_time.equals(time_df) + + +def test_get_compound_dataframe( + processor: MetricsTxtFileProcessor, + stats_df: pd.DataFrame, + ctrl_df: pd.DataFrame, +) -> None: + vehicle_control = 'DMSO 0.05%' + + procd_df_ctrl = processor.get_compound_dataframe(stats_df, vehicle_control) + + assert procd_df_ctrl.equals(ctrl_df) + + +def test_use_notes_compounds( + processor: MetricsTxtFileProcessor, + metrics_df: pd.DataFrame, + info_df: pd.DataFrame, + notes_cmpds_df: pd.DataFrame, +) -> None: + placeholder_compounds = ['CA', 'CB', 'CC', 'CD'] + + procd_notes_cmpd_df = processor.use_notes_compounds(metrics_df, info_df, + placeholder_compounds) + + assert procd_notes_cmpd_df.equals(notes_cmpds_df) + + +def test_compute_stats( + processor: MetricsTxtFileProcessor, + metrics_df: pd.DataFrame, + stats_df: pd.DataFrame, +) -> None: + procd_stats_df = processor.compute_stats(metrics_df) + + assert procd_stats_df.round(5).equals(stats_df.round(5)) + + +def test_compute_fold_changes( + processor: MetricsTxtFileProcessor, + metrics_df: pd.DataFrame, + ctrl_df: pd.DataFrame, + fld_chg_df: pd.DataFrame, +) -> None: + procd_fld_chg_df = processor.compute_fold_changes(metrics_df, ctrl_df) + + assert procd_fld_chg_df.round(5).equals(fld_chg_df.round(5)) + + +def test_get_timepoints_dataframe( + processor: MetricsTxtFileProcessor, + time_df: pd.DataFrame, + fld_chg_df: pd.DataFrame, + compds_df: pd.DataFrame, +) -> None: + fig_tpts = [6] + + procd_df_compds = processor.get_timepoints_dataframe(fld_chg_df, + time_df, fig_tpts) + + assert procd_df_compds.equals(compds_df) + + +def test_split_dataframe( + processor: MetricsTxtFileProcessor, + compds_df: pd.DataFrame, + dfs: pd.DataFrame, +) -> None: + procd_dfs = processor.split_dataframe(compds_df) + + for (procd_compd, procd_v), (compd, v) in zip(procd_dfs.items(), + dfs.items()): + assert procd_compd == compd + for (procd_conc, procd_df), (conc, df) in zip(procd_v.items(), + v.items()): + assert procd_conc == conc + assert procd_df.round(5).equals(df.round(5)) + + +def test_gen_analysed_excel( + processor: MetricsTxtFileProcessor, + stats_df: pd.DataFrame, + fld_chg_stats_df: pd.DataFrame, + time_df: pd.DataFrame, + info_df: pd.DataFrame, + tmp_path: Path, +) -> None: + processor.stats_df = stats_df + processor.fld_chg_stats_df = fld_chg_stats_df + processor.time_df = time_df + processor.info_df = info_df + + processor.gen_analysed_excel(tmp_path / 'test.xlsx') + + files = [f for f in tmp_path.iterdir() if f.is_file()] + assert len(files) == 1 + + excel = pd.read_excel(files[0]) + expected_excel = pd.read_excel(GEND_EXCEL) + + for df in [excel, expected_excel]: + df.iloc[7:11, 1:] = df.iloc[7:11, 1:].astype(float).round(5) + df.iloc[13:17, 1:] = df.iloc[13:17, 1:].astype(float).round(5) + + assert excel.equals(expected_excel) + + +def test_generate_compound_summary_figs( + processor: MetricsTxtFileProcessor, + dfs: pd.DataFrame, + tmp_path: Path, +) -> None: + vehicle_control = 'DMSO' + positive_control = 'Pos' + negative_control = 'UT' + threshold = 120 + processor.dfs = dfs + + processor.generate_compound_summary_figs( + vehicle_control, positive_control, negative_control, threshold, + tmp_path) + + files = sorted([f for f in tmp_path.iterdir() if f.is_file()]) + assert len(files) == 4 + + expected_files = sorted([f for f in Path(FIGURES_DIR).iterdir() if + f.is_file()]) + + for f, expected_f in zip(files, expected_files): + assert np.array_equal(cv2.imread(str(f)), cv2.imread(str(expected_f))) + + +def test_metrics_file_processing(tmp_path: Path) -> None: + copy2(METRICS_TXT_FILE_PATH, tmp_path) + + fig_tpts = 'fail' + metrics_file_processing.callback(tmp_path, figure_timepoints=fig_tpts) + + assert len(list(tmp_path.iterdir())) == 1 + + metrics_file_processing.callback(tmp_path) + + dirs = [d for d in tmp_path.iterdir() if d.is_dir()] + + assert len(dirs) == 1 + assert len([f for f in dirs[0].iterdir() if f.is_file()]) == 5 diff --git a/tests/test_tight_junctions/__init__.py b/tests/test_tight_junctions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_tight_junctions/test_analysis.py b/tests/test_tight_junctions/test_analysis.py new file mode 100644 index 0000000..c3dbdb6 --- /dev/null +++ b/tests/test_tight_junctions/test_analysis.py @@ -0,0 +1,49 @@ +from pathlib import Path + +import cv2 +import pytest +import numpy as np +import numpy.typing as npt +from bimana.tight_junctions.analysis import (extract_tight_junctions, + perform_ijoq, segment_cells) +from bimana.utils.image_processing import MAX_PX_VAL, ImageChannel +from tests import BIN_TGHT_JNCS_PTH, TIGHT_JUNCS_IMG_PTH + + +@pytest.fixture(scope='module') +def img() -> npt.NDArray[np.uint8]: + return cv2.imread(TIGHT_JUNCS_IMG_PTH) + + +@pytest.fixture +def bin_tght_jncs_img() -> npt.NDArray[np.bool_]: + return (cv2.imread(BIN_TGHT_JNCS_PTH, + cv2.IMREAD_GRAYSCALE) / MAX_PX_VAL).astype(bool) + + +def test_extract_tight_junctions( + img: npt.NDArray[np.uint8], + tmp_path: Path, +) -> None: + tight_juncs, procd_imgs = extract_tight_junctions(img, ImageChannel.GREEN) + + assert len(np.unique(tight_juncs)) == 2 + + for name, procd_img in procd_imgs: + assert cv2.imwrite(str(tmp_path / f'{name}.png'), procd_img) + + +def test_segment_cells( + img: npt.NDArray[np.uint8], + tmp_path: Path, +) -> None: + cells, procd_imgs = segment_cells(img, ImageChannel.BLUE) + + assert len(cells) == 5 + + for name, procd_img in procd_imgs: + assert cv2.imwrite(str(tmp_path / f'{name}.png'), procd_img) + + +def test_perform_ijoq(bin_tght_jncs_img: npt.NDArray[np.bool_]) -> None: + assert perform_ijoq(bin_tght_jncs_img) == 0.0316 diff --git a/tests/test_tight_junctions/test_commands.py b/tests/test_tight_junctions/test_commands.py new file mode 100644 index 0000000..2f5c214 --- /dev/null +++ b/tests/test_tight_junctions/test_commands.py @@ -0,0 +1,30 @@ +import shutil +from pathlib import Path + +from bimana.tight_junctions.commands import (METRICS_CSV_FILENAME, + tight_junction_analysis) +from tests import TIGHT_JUNCS_IMG_PTH + + +def test_tight_junction_analysis(tmp_path: Path) -> None: + root_dir = tmp_path / 'root_dir' + root_dir.mkdir() + shutil.copy2(TIGHT_JUNCS_IMG_PTH, root_dir) + img_filename = list(root_dir.iterdir())[0].name + # TODO dirname hardcoded? + output_dir = root_dir / str(img_filename).replace('.', '_') + analyse_tight_juncs = analyse_cells = True + + tight_junction_analysis.callback(root_dir, False, False) + + assert not output_dir.is_dir() + assert len(list(root_dir.iterdir())) == 1 + + tight_junction_analysis.callback( + root_dir, analyse_tight_juncs, analyse_cells) + + assert (output_dir.parent / img_filename).is_file() + assert output_dir.is_dir() + assert len([f for f in output_dir.iterdir() if f.is_file()]) > 2 + assert METRICS_CSV_FILENAME in [f.name for f in + output_dir.parent.iterdir()] diff --git a/tests/test_utils/__init__.py b/tests/test_utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_utils/test_commands.py b/tests/test_utils/test_commands.py new file mode 100644 index 0000000..8ee537e --- /dev/null +++ b/tests/test_utils/test_commands.py @@ -0,0 +1,9 @@ +from bimana.utils.commands import parse_input_bgr + + +def test_parse_input_bgr() -> None: + input_bgr = ('0.3', '255', '0.0') + output_bgr = parse_input_bgr(input_bgr) + expected_result = (0.3, 255, 0.0) + + assert output_bgr == expected_result diff --git a/tests/test_utils/test_deep_learning/__init__.py b/tests/test_utils/test_deep_learning/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_utils/test_deep_learning/test_dexined.py b/tests/test_utils/test_deep_learning/test_dexined.py new file mode 100644 index 0000000..808d4cd --- /dev/null +++ b/tests/test_utils/test_deep_learning/test_dexined.py @@ -0,0 +1,19 @@ +import cv2 +import numpy as np +import numpy.typing as npt +import pytest + +from bimana.utils.deep_learning.dexined import detect_edges +from tests import LENA_IMG_PTH + + +@pytest.fixture() +def lena_img() -> npt.NDArray[np.uint8]: + return cv2.imread(LENA_IMG_PTH, cv2.IMREAD_GRAYSCALE) + + +def test_detect_edges(lena_img: npt.NDArray[np.uint8]) -> None: + edges = detect_edges(lena_img) + + assert len(edges.shape) == 2 + assert np.array_equal(range(0, 249), np.unique(edges)) diff --git a/tests/test_utils/test_file_processing.py b/tests/test_utils/test_file_processing.py new file mode 100644 index 0000000..797faa1 --- /dev/null +++ b/tests/test_utils/test_file_processing.py @@ -0,0 +1,93 @@ +import csv +from collections import defaultdict +from pathlib import Path +from shutil import copy2 + +import cv2 +import pytest +import numpy as np +import numpy.typing as npt +from bimana.utils.file_processing import (IMAGE_FEX, DirFormat, + crop_and_save_images, get_dirs, + load_imgs, save_imgs, save_csv) +from tests import ROOT_DIR_PTH, SUBIMG_PTH + + +@pytest.fixture() +def subimg() -> npt.NDArray[np.uint8]: + return cv2.imread(SUBIMG_PTH) + + +@pytest.mark.parametrize( + 'flag,num_dirs', + [(DirFormat.SUB, 1), (DirFormat.ROOT, 1), (DirFormat.RECURSIVE, 3)] +) +def test_get_dirs(flag: DirFormat, num_dirs: int) -> None: + dirs = get_dirs(ROOT_DIR_PTH, flag) + + assert len(dirs) == num_dirs + for curr_dir in dirs: + assert curr_dir.exists() + + +def test_load_imgs_no_shrink() -> None: + imgs = load_imgs(ROOT_DIR_PTH) + prev_img_num = -1 + for (path, img) in imgs: + assert len(img.shape) == 3 + assert len(np.unique(img)) > 2 + assert int(path.stem[-1]) > prev_img_num + + +def test_load_imgs_shrink() -> None: + with pytest.warns(UserWarning): + imgs = load_imgs(Path(SUBIMG_PTH).parent, 2) + + assert len(imgs) == 1 + assert imgs[0][1].shape == (50, 50, 3) + assert imgs[0][0] == Path(SUBIMG_PTH) + + +def test_save_imgs(tmp_path: Path) -> None: + img1 = np.random.randint(0, 255, (50, 50)) + img2 = np.random.randint(0, 255, (50, 50)) + + imgs = [('img1', img1), ('img2', img2)] + save_imgs(imgs, tmp_path) + for name, _ in imgs: + assert (tmp_path / (name + IMAGE_FEX)).is_file() + + +def test_save_csv(tmp_path: Path) -> None: + exp_data = {'headerA': [1, 2, 3], 'headerB': [4, 5, 6]} + csv_path = tmp_path / 'test.csv' + + save_csv(exp_data, csv_path) + assert csv_path.is_file() + + data = defaultdict(list) + with open(csv_path, newline='', encoding='utf-8-sig') as f: + reader = csv.DictReader(f) + headers = reader.fieldnames + assert headers is not None + for row in reader: + for header in headers: + data[header].append(int(row[header])) + + assert data == exp_data + + +def test_crop_and_save_images(tmp_path: Path) -> None: + # TODO Check image contents? + subimg_path = Path(SUBIMG_PTH) + input_dir = tmp_path / 'test' + input_dir.mkdir() + copy2(subimg_path, input_dir / subimg_path.name) + + subimg_coords = np.array([[25, 25, 74, 74], [0, 0, 4, 4]]) + + dirs = crop_and_save_images(input_dir / subimg_path.name, subimg_coords) + files = [f for d in dirs for f in d.iterdir()] + assert len(files) == 2 + for f in files: + assert f.is_file() diff --git a/tests/test_utils/test_image_processing.py b/tests/test_utils/test_image_processing.py new file mode 100644 index 0000000..01949a7 --- /dev/null +++ b/tests/test_utils/test_image_processing.py @@ -0,0 +1,259 @@ +import cv2 +import numpy as np +import numpy.typing as npt +import pytest + +from bimana.utils.image_processing import ( + MAX_PX_VAL, binary_to_bgr_image, auto_segment_image, bound_foreground, + bounded_foreground_polyline, centre_coordinates, detect_circular_objects, + draw_polyline, extract_channel, ImageChannel, largest_objects, + remove_isolated_segmented_objects, scale_bgr_values, + smooth_foreground_bounds, segment_image, segment_polyline_bounded_region, + segment_region_above_polyline, segment_region_within_image, + subimage_coordinates) +from tests import (CIRCLES_IMG_PTH, GREYSCALE_IMG_PTH, SUBIMG_PTH, + TEST_BIN_IMG_PTH, TEST_REF_BIN_IMG_PTH) + + +@pytest.fixture(scope='module') +def bin_img() -> npt.NDArray[bool]: + return (cv2.imread(TEST_BIN_IMG_PTH, + cv2.IMREAD_GRAYSCALE) / MAX_PX_VAL).astype(bool) + + +@pytest.fixture +def refd_bin_img() -> npt.NDArray[bool]: + return (cv2.imread(TEST_REF_BIN_IMG_PTH, + cv2.IMREAD_GRAYSCALE) / MAX_PX_VAL).astype(bool) + + +@pytest.fixture() +def grey_img() -> npt.NDArray[np.uint8]: + return cv2.imread(GREYSCALE_IMG_PTH, cv2.IMREAD_GRAYSCALE) + + +@pytest.fixture() +def circles_img() -> npt.NDArray[np.uint8]: + return cv2.imread(CIRCLES_IMG_PTH, cv2.IMREAD_GRAYSCALE) + + +@pytest.fixture() +def subimg() -> npt.NDArray[np.uint8]: + return cv2.imread(SUBIMG_PTH) + + +def test_segment_image() -> None: + hwc = (10, 20, 3) + img, expected_result = np.zeros(hwc), np.zeros(hwc[:2]) + img[5:, :10] = (210, 210, 210) + expected_result[5:, :10] = 1 + bin_img = segment_image(img, (210, 210, 210), (210, 210, 210)) + + assert np.array_equal(bin_img, expected_result) + + +def test_remove_isolated_segmented_objects(bin_img: npt.NDArray[bool]) -> None: + threshs = [0.1, 0.2, 0.5] + refined_bin_imgs = [remove_isolated_segmented_objects(bin_img, thresh) + for thresh in threshs] + + for refined_bin_img in refined_bin_imgs: + unique_elements = np.unique(refined_bin_img) + assert len(unique_elements) == 2 + assert unique_elements[0] == 0 + assert unique_elements[1] == 1 + + assert (np.count_nonzero(refined_bin_imgs[2]) < np.count_nonzero( + refined_bin_imgs[1]) < np.count_nonzero(refined_bin_imgs[0])) + + +def test_bound_foreground(bin_img: npt.NDArray[bool]) -> None: + upper_lower_xs, upper_lower_ys = bound_foreground(bin_img) + + assert len(upper_lower_xs[0]) == len(upper_lower_ys[0]) + assert len(upper_lower_xs[1]) == len(upper_lower_ys[1]) + + assert len(upper_lower_xs[0]) > 2 + assert len(upper_lower_xs[1]) > 2 + + assert np.all(upper_lower_ys[0] < upper_lower_ys[1]) + + +def test_bounded_foreground_polyline() -> None: + upper_lower_xs = [np.array([0, 1]), np.array([0, 1])] + upper_lower_ys = [np.array([10, 20]), np.array([50, 40])] + polyline = bounded_foreground_polyline(upper_lower_xs, upper_lower_ys) + + assert np.array_equal(polyline, np.array([[0, 10], [1, 20], [1, 40], + [0, 50]])) + + +def test_smooth_foreground_bounds(refd_bin_img: npt.NDArray[bool]) -> None: + upper_ys = np.array([43, 43, 42, 43, 42, 42, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 45, 44, 44, 46, 66, 66, 45, 44, 43, 44, 44, + 44, 45, 44, 44, 45, 45, 45, 45, 44, 44, 44, 44, 44, + 44, 44, 44, 45, 46, 46]) + lower_ys = np.array([133, 132, 124, 125, 127, 126, 133, 134, 135, 136, 135, + 136, 136, 136, 136, 135, 135, 138, 138, 120, 117, 117, + 117, 117, 116, 120, 135, 137, 137, 137, 137, 137, 137, + 136, 138, 137, 128, 126, 93, 95, 95, 136, 136, 136, + 136]) + upper_lower_xs = [np.arange(upper_ys.size), np.arange(lower_ys.size)] + upper_lower_ys = [upper_ys, lower_ys] + + refd_upper_lower_xs, refd_upper_lower_ys = smooth_foreground_bounds( + refd_bin_img, upper_lower_xs, upper_lower_ys) + + assert len(refd_upper_lower_xs[0]) == len(refd_upper_lower_ys[0]) + assert len(refd_upper_lower_xs[1]) == len(refd_upper_lower_ys[1]) + + assert np.all(refd_upper_lower_ys[0] < 66) + assert np.all(refd_upper_lower_ys[1] > 127) + + upper_ys = np.ones((50,), int) * 43 + lower_ys = np.ones((50,), int) * 133 + upper_lower_xs = [np.arange(upper_ys.size), np.arange(lower_ys.size)] + upper_lower_ys = [upper_ys, lower_ys] + + img = np.zeros((200, 200)) + polyline = np.array([[0, 43], [upper_ys.size - 1, 43], + [lower_ys.size - 1, 133], [0, 133]]) + cv2.drawContours(img, [polyline], 0, 1, cv2.FILLED) + + refd_upper_lower_xs, refd_upper_lower_ys = smooth_foreground_bounds( + img.astype(bool), upper_lower_xs, upper_lower_ys) + + for i in (0, 1): + assert np.array_equal(upper_lower_xs[i], refd_upper_lower_xs[i]) + assert np.array_equal(upper_lower_ys[i], refd_upper_lower_ys[i]) + + +def test_segment_polyline_bounded_region() -> None: + hw = (10, 20) + polyline = np.array([[0, 0], [10, 0], [10, 10], [0, 10]]) + mask = segment_polyline_bounded_region(polyline, hw) + + assert np.all(mask[:, :11]) + assert np.all(~mask[:, 11:]) + + +def test_segment_region_within_image() -> None: + hwc = (10, 20, 3) + + region = np.zeros(hwc[:2], bool) + region[5:, :] = 1 + + img = np.zeros(hwc) + img[:, :10, :] = (255, 0, 0) + img[:, 10:20, :] = (0, 0, 255) + lower_bgr = upper_bgr = (255, 0, 0) + + produced_result = segment_region_within_image(img, lower_bgr, upper_bgr, + region) + + expected_result = np.zeros(hwc[:2], bool) + expected_result[5:, :10] = 1 + + assert np.array_equal(produced_result, expected_result) + + +def test_segment_region_above_polyline() -> None: + hw = (10, 20) + height = 3 + + upper_ys = np.array([4, 4, 4, 4, 5, 5, 5, 5]) + upper_xs = np.arange(5, 5 + upper_ys.size) + polyline = np.array([[x, y] for x, y in zip(upper_xs, upper_ys)]) + + expected_result = np.zeros(hw, bool) + expected_result[1:5, 5:9] = 1 + expected_result[2:6, 9:13] = 1 + + mask = segment_region_above_polyline(polyline, height, hw) + + assert np.array_equal(mask, expected_result) + + +def test_draw_polyline() -> None: + hwc = (10, 20, 3) + img = np.zeros(hwc) + + expected_result = img.copy() + expected_result[0, :11] = (0, 255, 0) + + polyline = np.array([[0, 0], [10, 0]]) + img = draw_polyline(img, polyline, (0, 255, 0), 1) + + assert np.array_equal(expected_result, img) + + +def test_binary_to_bgr_image() -> None: + hwc = (10, 20, 3) + img = np.zeros(hwc[:2], bool) + img[0, :] = 1 + + bgr_img = binary_to_bgr_image(img) + + assert bgr_img.shape == (10, 20, 3) + assert np.all(bgr_img[0, :] == 255) + assert np.all(bgr_img[1:, :] == 0) + + +def test_scale_bgr_values() -> None: + expected_result = np.array([210, 210, 210]) + bgrs = scale_bgr_values((0.823, 210, 0.823)) + + assert np.array_equal(expected_result, bgrs) + + +def test_extract_channel() -> None: + img = np.zeros((10, 20, 3)) + img[..., 1] = 1 + flag = ImageChannel.GREEN + + channel = extract_channel(img, flag) + assert np.all(channel) == 1 + + +def test_auto_segment_image(grey_img: npt.NDArray[np.uint8]) -> None: + bin_img = auto_segment_image(~grey_img) + + assert len(np.unique(bin_img)) == 2 + assert 0.15 < np.count_nonzero(bin_img) / np.prod(bin_img.shape) < 0.30 + + +def test_detect_circular_objects(circles_img: npt.NDArray[np.uint8]) -> None: + assert len(detect_circular_objects(circles_img)) == 7 + + +def test_centre_coordinates() -> None: + contours = [np.array([[[0, 0]], [[10, 0]], [[10, 10]], [[0, 10]]])] + + assert np.array_equal(centre_coordinates(contours)[0], np.array([5, 5])) + + +def test_subimage_coordinates(subimg: npt.NDArray[np.uint8]) -> None: + coords = subimage_coordinates(subimg).tolist() + + assert [25, 25, 74, 74] in coords + assert [0, 0, 4, 4] in coords + + +@pytest.mark.parametrize('min_area,top_n', [(None, 2), (100, None)]) +def test_largest_objects(min_area: int, top_n: int) -> None: + objs = [np.array([[0, 0], [10, 0], [10, 10], [0, 10]]), + np.array([[20, 20], [25, 20], [25, 25], [20, 25]]), + np.array([[30, 30], [50, 30], [50, 50], [30, 50]])] + img = cv2.drawContours(np.zeros((60, 60), np.uint8), objs, -1, 1, + cv2.FILLED).astype(bool) + + out_img = np.zeros((60, 60), np.uint8) + upper_lower_xs, upper_lower_ys = largest_objects(img, min_area, top_n) + for ul_xs, ul_ys in zip(upper_lower_xs, upper_lower_ys): + polyline = np.array([[x, y] for x, y in zip(np.append( + ul_xs[0], ul_xs[1]), np.append(ul_ys[0], ul_ys[1]))]) + cv2.drawContours(out_img, [polyline], 0, 1, cv2.FILLED) + + expected_result = cv2.drawContours(img.astype( + np.uint8), objs, 1, 0, cv2.FILLED) + assert np.array_equal(out_img, expected_result) diff --git a/tests/test_utils/test_quantification.py b/tests/test_utils/test_quantification.py new file mode 100644 index 0000000..4e1c593 --- /dev/null +++ b/tests/test_utils/test_quantification.py @@ -0,0 +1,131 @@ +from pathlib import Path + +import numpy as np + +from bimana.utils.quantification import (area, size_connected_components, + aspect_ratio, circularity, + gen_histogram, gen_stats, + nearest_neighbour_distances, + num_connected_components, + percentage_foreground_in_region, + perimeter, roundness, solidity) + + +def test_percentage_foreground_in_region() -> None: + hw = (10, 20) + + img = np.zeros(hw, bool) + img[5:, 10:] = 1 + + region = np.zeros(hw, bool) + region[5:, :] = 1 + + pct, fg_ct, reg_cnt = percentage_foreground_in_region(img, region) + exp_pct, exp_fg_cnt, exp_reg_cnt = 50, 50, 100 + + assert (pct, fg_ct, reg_cnt) == (exp_pct, exp_fg_cnt, exp_reg_cnt) + + +def test_nearest_neighbour_distances() -> None: + pts = np.array([[3, 4], [6, 8]]) + dists = nearest_neighbour_distances(pts) + + assert np.all(dists == 5) + + +def test_area() -> None: + contours = [np.array([[[0, 0]], [[10, 0]], [[10, 10]], [[0, 10]]])] + cnt_areas = area(contours) + + assert cnt_areas[0] == 100 + + +def test_perimeter() -> None: + contours = [np.array([[[0, 0]], [[10, 0]], [[10, 10]], [[0, 10]]])] + cnt_perimeters = perimeter(contours) + + assert cnt_perimeters[0] == 40 + + +def test_circularity() -> None: + theta = np.linspace(0, 2 * np.pi, 100) + radius = 5 + xs = radius * np.cos(theta) + ys = radius * np.sin(theta) + contours = [np.array([[[x, y]] for x, y in zip(xs, ys)], dtype=np.float32)] + + cnt_circularity = circularity(contours) + + assert round(cnt_circularity[0], 3) == 1 + + +def test_aspect_ratio() -> None: + contours = [np.array([[[0, 0]], [[10, 0]], [[10, 10]], [[0, 10]]])] + cnt_aspect_ratios = aspect_ratio(contours) + + assert cnt_aspect_ratios[0] == 1 + + +def test_solidity() -> None: + theta = np.linspace(0, 2 * np.pi, 100) + radius = 5 + xs = radius * np.cos(theta) + ys = radius * np.sin(theta) + contours = [np.array([[[x, y]] for x, y in zip(xs, ys)], dtype=np.float32)] + + cnt_solidity = solidity(contours) + + assert cnt_solidity[0] == 1 + + +def test_roundness() -> None: + theta = np.linspace(0, 2 * np.pi, 100) + radius = 5 + xs = radius * np.cos(theta) + ys = radius * np.sin(theta) + contours = [np.array([[[x, y]] for x, y in zip(xs, ys)], dtype=np.float32)] + + cnt_roundness = roundness(contours) + + assert round(cnt_roundness[0], 2) == 1 + + +def test_num_connected_components() -> None: + hw = (20, 20) + img = np.zeros(hw, bool) + img[10, 10] = img[11, 11] = img[12, 12] = 1 + img[5, 5] = img[5, 6] = img[5, 7] = 1 + + num_cnctd_comps = num_connected_components(img) + + assert num_cnctd_comps == 2 + + +def test_size_connected_components() -> None: + hw = (20, 20) + img = np.zeros(hw, bool) + img[10, 10] = img[11, 11] = img[12, 12] = 1 + img[5, 5] = img[5, 6] = img[5, 7] = 1 + + size_cnctd_comps = size_connected_components(img) + + assert np.all(size_cnctd_comps == 3) + + +def test_gen_stats() -> None: + data = [1, 2, 3] + + metrics = gen_stats(data) + + assert list(metrics.values()) == [1, 3, 2, 1, 1] + + +def test_gen_histogram(tmp_path: Path) -> None: + data = {'test': [8, 5, 3, 5, 7, 5, 3, 5, 7, 5]} + + gen_histogram(data, tmp_path) + + files = [f for f in tmp_path.iterdir()] + + assert len(files) == 1 + assert files[0].is_file() diff --git a/third_party/DexiNed b/third_party/DexiNed new file mode 160000 index 0000000..feeb72a --- /dev/null +++ b/third_party/DexiNed @@ -0,0 +1 @@ +Subproject commit feeb72ad55924221bd29f51271864e277301b0ab diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/AUTHORS b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/AUTHORS new file mode 100644 index 0000000..7d2ea5e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/AUTHORS @@ -0,0 +1,28 @@ +Authors of VIPS + +See also the files THANKS and ChangeLog + +Kirk Martinez and Nicos Dessipris started VIPS in 1990. + +John Cupitt started ip in late 1990, and took over maintenance of the VIPS +library in 1995. + +Ruven Pillay, Steve Perry, Lars Raffelt, David Saunders, Jean-Philippe +Laurant, Ahmed Abood, Helene Chahine, Joe Padfield, Andrey Kiselev, Lev +Serebryakov, Simon Goodall, Konrad Lang, Markus Wollgarten, Jesper Friis, +Tom Vajzovic, Chris Leick and others contributed patches for the library +and ip. + +Hans Breuer contributed many win32 compatibility fixes and a win32 build +system. Dennis Lubert cleaned up the C++ API. + +Jose Manuel Menendez Garcia, Javier Alejandre Arenas, and Juan Torres Arjona +contributed the tmake VIPS.DLL build system and the MSVC project files. + +Nicolas Robidoux contributed optimized bilinear and bicubic code to +the VipsInterpolate class and, with Chantal Racette and Adam Turcotte, +contributed the novel LBB, Nohalo and VSQBS interpolators. + +Lovell Fuller and Kleis Auke Wolthuizen made many contributions and fixes. + +Many other active contributors, see https://github.com/libvips/libvips/graphs/contributors diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/COPYING b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/COPYING new file mode 100644 index 0000000..4362b49 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/COPYING @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/ChangeLog b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/ChangeLog new file mode 100644 index 0000000..88de3b1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/ChangeLog @@ -0,0 +1,3764 @@ +11/10/22 started 8.13.3 +- improve rules for 16-bit heifsave [johntrunc] +- improve libspng pallette write [kleisauke] +- improve libspng pallette sort [DarthSim] +- ensure EXIF has prefix before parsing [lovell] +- fix low bit depth pallette spng save [DarthSim] +- fix thumbnail of non-sRGB images with an export profile [kleisauke] + +5/9/22 started 8.13.2 +- in dzsave, add add missing include directive for errno/EEXIST [kleisauke] +- fix 8 bit pallete PNG save [lovell] +- fix null string in buffer print [pclewis] +- revise caching of seq mode loaders [jcupitt] +- reduce latency on dzsave kill [kleisauke] +- improve text too large check [kleisauke] +- fix subifd writing for small images [ruven] +- name ICC profiles in spngsave [lovell] + +24/7/22 started 8.13.1 +- fix im7 feature detection in meson +- add a summary table at the end of configure in meson +- fix libpng fallback when spng is disabled in meson +- add "unlimited" to jpegload +- better 0 detection in unpremultiply +- fix low bitdepth spng save [jeffska] +- fix PNG low bitdepth save of high bitdepth images +- add support for libjxl 0.7 [kleisauke] +- improve compatibility with older libgsf versions [kleisauke] + +21/11/21 started 8.13 +- configure fails for requested but unmet dependencies [remicollet] +- add support for another quantiser [DarthSim] +- add "extend", "background" and "premultiplied" to vips_mapim() to fix edge + antialiasing [GavinJoyce] +- add support for HDR HEIC and AVIF images +- add vips_spngsave() +- jpeg2000 load left-justifies bitdepth +- add "password" option to pdfload, fix byte ordering of "background" +- add vips_operation_block_set(), vips_block_untrusted_set() +- improve the pixel rng +- new meson build system [tintou] +- improve introspection annotations [tintou] +- add "unlimited" to heifload [lovell] +- add support for regions in C++ API [shado23] +- add "maxerror" to gifsave [dloebl] +- update libnsgif API [tlsa] +- deprecate "properties" option to dzsave (now always on) +- add vips_dzsave_buffer() +- always set the min stack size for pthreads, if we can +- add "fail-on" to thumbnail +- add "gap" option to vips_reduce[hv]() and vips_resize() [kleisauke] +- add "ceil" option to vips_shrink() [kleisauke] +- quality improvements for image resizing [kleisauke] +- add vips_source_new_from_target() +- add vips_target_seek(), vips_target_read(), vips_target_new_temp() +- add vips_tiffsave_target() +- add vips_target_end(), deprecate vips_target_finish() +- add "mixed" to webpsave [dloebl] +- add support for ICC profiles and linear encoding to JXL load and save [f1ac] +- add "reoptimise" to gifsave [dloebl] +- add "bitdepth" to magicksave [dloebl] +- change default PNG filter to "none" [lovell] + +26/11/21 started 8.12.3 +- better arg checking for vips_hist_find_ndim() [travisbell] +- fix thumbnail with CMYK output [AdamGaskins] +- fix size_t / ssize_t confusion [flga] +- fix jxl compatibility break [lovell] + +26/11/21 started 8.12.2 +- make exif resuint optional and default to inch +- win: don't set create time on inappropriate file descriptors [lovell] +- fall back to magicksave for gif if cgif is not present [erik-frontify] +- fix a crash with 0 length vectors +- change default frame delay for GIFs from 1s to 0.1s +- remove stray trailing comma from iiif3 dirnames [whalehub] +- fix TTF load [chregu] +- revise GIF save alpha threshold [jfcalvo] +- raise libpng pixel size limit from 1m to 10m pixels [jskrzypek] +- fix gif save change detector [TheEssem] +- fix load from pipe with variable size reads + +21/11/21 started 8.12.1 +- fix insert [chregu] + +14/6/21 started 8.12 +- all tools support `--version` +- add vips_svgload_string() convenience function +- fix thumbnail with small image plus crop plus no upsize [Andrewsville] +- rename speed / reduction-effort / etc. params as "effort" +- add gifsave [lovell] +- arrayjoin minimises inputs during sequential processing, saving a lot of + memory and file descriptors +- add vips_image_get_format_max() +- flatten handles out of range alpha and max_alpha correctly +- don't use atexit for cleanup, it's too unreliable +- tiff writer loops for the whole image rather than per page [LionelArn2] +- fix VipsSource with named pipes [vibbix] +- added restart_interval option to jpegsave [manthey] +- add IIIF3 support to dzsave [martimpassos] +- add atan2 to math2 [indus] +- improve buffer and target save file format selection +- added VipsForeignPpmFormat, format arg to ppm savers +- add fail-on to give better control over loader error sensitivity +- add hyperbolic functions sinh, cosh, tanh, asinh, acosh, atanh [hroskes] +- add untiled jp2k load +- "insert" will minimise in seq mode +- better EXIF string handling [lovell] + +16/8/21 started 8.11.4 +- fix off-by-one error in new rank fast path +- add "unlimited" flag to png load [joshuamsager] +- improve filtering of .v enums [lovell] +- better logic to prevent shrink to nothing in thumbnail [kleisauke] + +14/7/21 started 8.11.3 +- build threadpool later [kleisauke] +- add jxlsave prototypes [adil-benameur] +- limit text chunks in PNGs [randy408] + +15/6/20 started 8.11.2 +- better libdir guessing [remi] +- fix tiff pyramid creation with jp2k compression (was broken by 8.11.1) +- don't load modules if we're built without modules + +18/6/21 started 8.11.1 +- add more example code to C docs +- update libtool support in configure.ac +- more startup info if VIPS_INFO is set +- command-line programs set glib prgname (no longer set for you by VIPS_INIT) +- enable strip chopping for TIFF read [DavidStorm] +- disable modules by default for static builds [kleisauke] +- fix jpeg tiff pyramid save + +14/8/20 started 8.11 +- add vips_jpegload_source() and vips_svgload_source() to public C API +- integrate doxygen in build system to generate C++ API docs +- improve C++ API doc comments +- add VipsInterpolate and guint64 support to C++ API +- add VImage::new_from_memory_steal [Zeranoe] +- vipsthumbnail supports stdin / stdout thumbnailing +- have a lock just for pdfium [DarthSim] +- get pdfium load building again [Projkt-James] +- add _source load support for pdfium +- add "seed" param to perlin, worley and gaussnoise +- add vips_source_g_input_stream_new() to load images from a GInputStream +- add openslideload_source(), vipsload_source(), vipssave_target() +- add hist path to rank for large windows on uchar images +- better 8/16-bit choice for pngsave +- avoid NaN in mapim [afontenot] +- hist_find outputs a double histogram for large images [erdmann] +- fix ref leaks in mosaicing package +- run libvips leak test in CI +- add vips_fitsload_source(), vips_niftiload_source() +- png and gif load note background colour as metadata [781545872] +- add vips_image_[set|get]_array_double() +- add GIF load with libnsgif +- add jp2kload, jp2ksave +- add jp2k compression to tiff load and save +- add JPEG-XL load and save +- add black_point_compensation flag for icc transforms +- add "rgba" flag to vips_text() to enable full colour text rendering +- move openslide, libheif, poppler and magick to loadable modules [kleisauke] +- better detection of invalid ICC profiles, better fallback paths +- add "premultiply" flag to tiffsave +- new threading model has a singe threadpool shared by all pipelines [kleisauke] + +30/4/21 start 8.10.7 +- better vips7 PNG load compatibility [SkyDiverCool] +- fix load of large PPM images from a pipe [ewelot] + +22/12/20 start 8.10.6 +- don't seek on bad file descriptors [kleisauke] +- check for null memory sources [kleisauke] +- improve ppmload, fixing a couple of small bugs +- improve EOF detection in jpegload [bozaro] +- improve error detection in spngload [randy408] +- fix includes of glib headers in C++ [lovell] +- fix build with more modern librsvg [lovell] +- fix a possible segv with very wide images [f1ac] +- fix issue thumbnailing RGBA images in linear mode [jjonesrs] +- improve vipsthumbnail profile handling +- fix tiff deflate predictor setting [Adios] +- fix vector path for composite on i386 [kleisauke] + +18/12/20 started 8.10.5 +- fix potential /0 in animated webp load [lovell] + +14/12/20 started 8.10.4 +- fix spng detection + +18/10/20 started 8.10.3 +- relax heic is_a rules [hisham] +- fix vips7 webp load [barryspearce] +- fix out of bounds exif read in heifload +- fix out of bounds read in tiffload +- fix tiffsave region shrink mode [imgifty] +- add missing flushes on write to target [harukizaemon] +- hide info messages you could get with some older glibs [kleisauke] +- fix --no-strip on dzsave with icc-profiles [altert] +- better GraphicsMagick image write [bfriesen] +- add missing read loops to spng, heif, giflib and ppm load [kleisauke] +- block zero width or height images from imagemagick load [Koen1999] +- check for overflow in gifload height [lovell] +- fix msb_first default in ppm load and save [ewelot] +- force binary mode on win for connection read / write [Alreiber] +- better testing for output to target [barryspearce] +- ppmload_source was missing is_a [ewelot] +- improve webpload rounding and blending behaviour [lovell] +- fix range clip in int32 -> unsigned casts [ewelot] +- fix precision error in clip of float -> int casts [ewelot] +- fix load of HEIC images with 0 length metadata [ddennedy-gpsw] +- revise rounding in reduce [kleisauke] + +6/9/20 started 8.10.2 +- update magicksave/load profile handling [kelilevi] +- better demand hint rules [kaas3000] +- fix tiff thumbnail from buffer and source [vansante] +- in jpegsave, don't set JFIF resolution if we set EXIF resolution +- bump minimum libheif version to 1.3 [lovell] +- dzsave in iiif mode could set info.json dimensions off by one [Linden6] +- pdfload allows dpi and scale to both be set [le0daniel] +- allow gaussblur sigma zero, meaning no blur +- better heif signature detection [lovell] +- fix vips_fractsurf() typo [kleisauke] +- better heif EOF detection [lovell] +- fix gir build with g-o-i 1.66+ [László] +- improve seek behaviour on pipes +- add "speed" param to heifsave [lovell] +- fix regression in C path for dilate / erode [kleisauke] +- fix build with libheif save but no load [estepnv] + +9/8/20 started 8.10.1 +- fix markdown -> xml conversion in doc generation +- remove typedef redefinitions to please old gccs +- fix regression in tiff pyramid thumbnailing [tand826] +- stop 0-length buffer being passed to imagemagick [lovell] +- convert no-profile CMYK to RGB on save [augustocdias] +- ensure SVG loader skips input with chars outside x09-x7F range [lovell] +- better mask sizing in gaussmat [johntrunc] +- fix tiffsave "squash" handling [barryspearce] +- fix jpegload autorotate [chregu] +- only start the background render thread on first use + +24/1/20 started 8.10.0 +- more conformat IIIF output from dzsave [regisrob] +- add @id to dzsave to set IIIF id property [regisrob] +- add max and min to region shrink [rgluskin] +- allow \ as an escape character in vips_break_token() [akemrir] +- tiffsave has a "depth" param to set max pyr depth +- libtiff LOGLUV images load and save as libvips XYZ +- add gifload_source, csvload_source, csvsave_target, matrixload_source, + matrixsave_source, pdfload_source, heifload_source, heifsave_target, + ppmload_source, ppmsave_target +- revise vipsthumbnail flags +- add VIPS_LEAK env var +- add vips_pipe_read_limit_set(), --vips-pipe-read-limit, + VIPS_PIPE_READ_LIMIT +- revise gifload to fix BACKGROUND and PREVIOUS dispose [alon-ne] +- add subsample_mode, deprecate no_subsample in jpegsave [Elad-Laufer] +- add vips_isdirf() +- add PAGENUMBER support to tiff write [jclavoie-jive] +- add "all" mode to smartcrop +- flood fill could stop half-way for some very complex shapes +- better handling of unaligned reads in multipage tiffs [petoor] +- mark old --delete option to vipsthumbnail as deprecated [UweOhse] +- png save with a bad ICC profile just gives a warning +- add "premultipled" option to vips_affine(), clarified vips_resize() + behaviour with alpha channels +- improve bioformats support with read and write of tiff subifd pyramids +- thumbnail exploits subifd pyramids +- handle all EXIF orientation cases, deprecate + vips_autorot_get_angle() [Elad-Laufer] +- load PNGs with libspng, if possible +- deprecate heifload autorotate -- it's now always on +- revised resize improves accuracy [kleisauke] +- add --vips-config flag to show configuration info +- add "bitdepth" param to tiff save, deprecate "squash" [MathemanFlo] +- tiff load and save now supports 2 and 4 bit data [MathemanFlo] +- pngsave @bitdepth parameter lets you write 1, 2 and 4 bit PNGs +- ppmsave also uses "bitdepth" now, for consistency +- reduce operation cache max to 100 +- rework the final bits of vips7 for vips8 [kleisauke] +- --disable-deprecated now works [kleisauke] +- vipsheader allows "stdin" as a filename +- gifload allows gifs with images outside the canvas +- wasm compatibility patches [kleisauke] +- webpsave has a @profile param + +24/4/20 started 8.9.3 +- better iiif tile naming [IllyaMoskvin] + +31/1/19 started 8.9.2 +- fix a deadlock with --vips-leak [DarthSim] +- better gifload behaviour for DISPOSAL_UNSPECIFIED [DarthSim] +- ban ppm max_value < 0 +- add fuzz corpus to dist +- detect read errors correctly in source_sniff +- fix regression in autorot [malomalo] +- thumbnail on HEIC images could select the thumbnail incorrectly under some + size modes [ZorinArsenij] + +20/6/19 started 8.9.1 +- don't use the new source loaders for new_from_file or new_from_buffer, it + will break the loader priority system +- fix thumbnail autorot [janko] +- fix a warning with magicksave with no delay array [chregu] +- fix a race in tiled tiff load [kleisauke] +- better imagemagick init [LebronCurry] +- lock for metadata changes [jcupitt] + +20/6/19 started 8.9.0 +- add vips_image_get/set_array_int() +- disable webp alpha output if all frame fill the canvas and are solid +- support arrays of delays for animated images [deftomat] +- add "unlimited" flag to svgload +- disable webp alpha output if all frames fill the canvas and are solid +- add "compression" option to heifsave [lovell] +- support webp and zstd compression in tiff +- loaders use "minimise" to close input files earlier +- integrate support for oss-fuzz [omira-sch] +- add vips_switch() / vips_case() ... fast many-way ifthenelse +- better const handling for arithmetic operators fixes comparisons against out + of range values +- sharpen restores input colourspace +- handle alpha in heifload / heifsave [meyermarcel] +- add @interpretation and @format to rawload +- nifti load/save uses double for all floating point metadata +- add vips_error_buffer_copy() +- add VipsSource and VipsTarget: a universal IO class for loaders and savers +- jpeg, png, tiff (though not tiffsave), rad, svg, ppm and webp use the + new IO class +- rewritten ppm load/save is faster and uses less memory +- add @no_strip option to dzsave [kalozka1] +- add iiif layout to dzsave +- fix use of resolution-unit metadata on tiff save [kayarre] +- support TIFF CIELAB images with alpha [angelmixu] +- support TIFF with premultiplied alpha in any band +- block metadata changes on shared images [pvdz] +- RGB and sRGB are synonmous + +17/9/19 started 8.8.4 +- improve compatibility with older imagemagick versions +- remove realpath, since it can fail on systems with grsec + +31/8/19 started 8.8.3 +- revert sharpen restoring the input colourspace +- xres/yres tiffsave params were in pixels/cm [f--f] + +9/7/19 started 8.8.2 +- better early shutdown in readers +- don't attempt to save large XMP to jpeg [tnextday] +- always fetch HEIC metadata from the main image [zhoux2016] +- fix loop in malformed ppm [Kyle-Kyle] +- better support for PNGs with long comment names +- fix build with GM +- add locks for pdfium load +- fix build with MSVC +- fix a problem with shinkv tail processing [angelmixu] +- fix a read one byte beyond buffer bug in jpegload +- make GIF parsing less strict +- better feof() handling in GIF load +- clip coding and interpretation on vips image read +- check image bounds for GIF load +- prevent over-pre-shrink in thumbnail [kleisauke] +- fix sharpen with sigma 0.5 [2h4dl] +- sharpen restores input colourspace +- verify bands/format for coded images +- improve data_length handling for jpeg metadata + +24/5/19 started 8.8.1 +- improve realpath() use on older libc +- better magickload error messages +- more consistent behaviour for page-height metadata +- fix for composite with many small images and some combinations of blend modes +- fix memleak in tiff pyr save to memory [scossu] +- istiff attempts to read the first directory rather than just testing the + magic number [przemyslawpluta] +- much faster ismagick() [jcupitt] +- better behaviour for vips_region_fetch() if request lies partly ouside image +- remove 256 band limit in arithmetic.c [erdmann] +- disable Orc if building with CET [lovell] +- fix vipsthumbnail with pyr tiff [kleisauke] +- text autofit could occasionally terminate early [levmorozov] +- fewer warnings on tiffload [chregu] +- vips_resize() breaks aspect ratio and limits shrink to prevent <1px + dimensions [lovell] + +21/9/18 started 8.8.0 +- much faster smartcrop [lovell] +- add low/high to smartcrop [jcupitt] +- add XMP support to png read/write [jcupitt] +- deprecate thumbnail auto_rotate, add no_rotate [jcupitt] +- implement thumbnail shrink-on-load for openslide images [jcupitt] +- add animated webp support [jcupitt] +- revise vips_cast() to improve behaviour with uint images [erdmann] +- add bandand()/or()/eor() to cplusplus binding [clcaalu] +- implement shrink-on-load for tiff pyramids [jcupitt] +- added vips_image_set_blob_copy() [jcupitt] +- don't stop composite on first non-transparent image [felixbuenemann, GDmac] +- add vips_rect_overlapsrect() +- composite is much faster at positioning subimages +- stop tiff pyr layers if width or height drop to 1 [gvincke] +- dzsave has a new skip_blanks option +- add vips_CMYK2XYZ() and vips_XYZ2CMYK(), plus associated routes +- include cmyk and srgb fallback profiles +- add vips_profile_load() and use it everywhere +- fix race in temp filename creation [lhecker] +- add @reduction_effort param to webpsave [lovell] +- add @option_string param to thumbnail_buffer [kleisauke] +- add XMP, IPCT, ICC, EXIF etc. support to magickload/magicksave +- much lower memuse for gifload +- tilecache speedups +- add vips_heifload(), vips_heifsave() +- add heif thumbnail support to vips_thumbnail() +- free threadpool earlier, reducing mem growth for some long-running + processes [jtorresfabra] +- add vips_region_fetch() / _width() / _height() for language bindings +- vips_text() supports justification +- move vips_image_set_kill() and iskilled() to the public API +- dzsave to szi sets suffix correctly [martinweihrauch] +- dzsave szi writes "scan-properties.xml" +- add vips_image_(get|set)_image() +- add openslideload option to attach all associated images as metadata +- dzsave to szi will write all associated images +- remove old c++ and python interfaces +- vipsthumbnail can thumbnail animated and multipage images +- deprecate webpload @shrink, use @scale instead + +31/3/19 started 8.7.5 +- better buffer sizing in tiff reader [omira-sch] + +4/1/19 started 8.7.4 +- magickload with magick6 API did not chain exceptions correctly causing a + memory leak under some conditions [kleisauke] +- zero memory on allocate to prevent write of uninitialized memory under some + error conditions [Balint Varga-Perke] + +21/11/18 started 8.7.3 +- fix infinite loop for autofit with non-scaleable font +- mapim was not offsetting by window offset [erdmann] +- better rounding for scale [kleisauke] +- fix a memleak in magick6load [kleisauke] + +21/11/18 started 8.7.2 +- more info output for temp files to help diagnose problems +- vips_text() could set the wrong DPI +- vips_text() leaked in autofit mode + +23/9/18 started 8.7.1 +- update function list in docs [janko-m] +- test for g_str_to_ascii() [jcupitt] +- fix temp file open on Windows and fallback on linux [lovell] + +23/12/17 started 8.7.0 +- add magicksave, save image with libMagick [dlemstra] +- remove jpeg thumbnail from EXIF if "jpeg-thumbnail-data" has been removed by + user +- hough_line scales width to 0 - 180, not 0 - 360 +- hough_line is 4x faster +- hough_circle is 2x faster +- add vips_sobel() and vips_canny() edge detectors +- add vips_rotate() ... a convenience method for vips_similarity() +- svgload was missing is_a [lovell] +- better header sniffing for small files +- drop incompatible ICC profiles before save +- better hasalpha rules +- create funcs always make MULTIBAND (ie. no alpha) +- use O_TMPFILE, if available [Alexander--] +- set "interlaced=1" for interlaced JPG and PNG images +- add PDFium PDF loader +- jpegload adds a jpeg-chroma-subsample field with eg. 4:4:4 for no + chrominance subsampling. +- tiffload, pdfload, magickload set VIPS_META_N_PAGES "n-pages" metadata item +- add fontfile option to vips_text() [fangqiao] +- add vips_transpose3d() -- swap major dimensions in a volumetric image +- remove vips7 stuff from default API ... you must now #include it explicitly +- added vips_argument_get_id() to fix derived classes on win32 [angelmixu] +- fix compile with MSVC 2017 [angelmixu] +- pdfload has a option for background +- vips7 C++ interface defaults off +- make members, getters and operators "const" in cpp API +- composite has params for x/y position of sub-images [medakk] +- add Mitchell kernel +- pyramid builders have a choice of 2x2 shrinkers [harukizaemon] +- add `palette` option to pngsave [felixbuenemann] +- add basic nifti load/save support +- support writing string-valued fields via libexif +- paste in the test suite from pyvips +- get EXIF tag names from tag plus ifd [@Nan619] +- escape ASCII control characters in XML +- magickload now sniffs some file types itself +- update radiance load from upstream +- add region_shrink to tiffsave +- mapim could fail for float index images with coordinates out of int range +- scale openexr alpha to 0 - 255 +- close input earlier, when we can [kleisauke] +- add vips_object_get_args() for language bindings [kleisauke] + +12/3/18 started 8.6.4 +- better fitting of fonts with overhanging edges [Adrià] +- revise C++ example [fangqiao] +- strict round down on jpeg shrink on load [davidwood] +- configure test for g++ 7.2 and composite.cpp +- don't Ping in magickload, too unreliable +- ensure WebP can add metadata when compiled with libwebpmux [lovell] +- improve accuracy of vector path convolution [felixbuenemann] + +12/2/18 started 8.6.3 +- use pkg-config to find libjpeg, if we can +- better clean of output image in vips_image_write() fixes a crash + writing twice to memory +- better rounding behaviour in convolution means we hit the vector path more + often +- fix a crash if a delayed load failed [gsharpsh00ter] +- icc_import attaches the fallback profile if it used it + +5/1/18 started 8.6.2 +- vips_sink_screen() keeps a ref to the input image ... stops a rare race +- fix a minor accidental ABI break in 8.6.0 -> 8.6.1 [remicollet] +- fix read of plane-separate TIFFs with large strips [remicollet] +- fix a C++ warning in composite.cpp [lovell] +- remove number of images limit in composite +- composite allows 1 mode ... reused for all joins +- fix race in vips_sink() for seq read + +10/12/17 started 8.6.1 +- fix mmap window new/free cycling +- fix some compiler warnings +- remove the 64-image limit on bandary operations +- better version date [bmwiedemann] +- bump wrapper script version [bgilbert] +- fix a memleak on error during jpeg buffer write [lovell] +- fix misspelling of IPTC as IPCT [lovell] +- seq could be set on small images opened in random-access mode [aferrero2707] +- fix small memleak in dzsave [lovell] +- small speedup for rgb->g [lovell] + +15/4/17 started 8.6.0 +- supports fits images with leading non-image HDUs, thanks benepo +- add vips_image_new_from_image() and vips_image_new_from_image1() ... make a + constant image +- add new_from_image() to Python as well +- slight change to cpp new_from_image() to match py/C behaviour +- vips_conv(), vips_compass(), vips_convsep() default to FLOAT precision +- add FORCE resize mode to break aspect ratio +- add vips_thumbnail_image() +- better prefix guessing on Windows, thanks tumagonx +- savers support a "page_height" option for multipage save +- rename 'disc' as 'memory' and default off +- add vips_find_trim(), search for non-background areas +- remove lcms1 support, it had bitrotted +- `join` tagged as seq +- support tiffsave_buffer for pyramids, thanks bubba +- thumbnail and vipsthumbnail have an option for rendering intent, thanks + kleisauke +- set file create time on Windows, thanks dlong500 +- remove python tests ... moved to pyvips test suite +- vips7 and vips8 python bindings default to off ... use the new pyvips + binding instead +- better svgload: larger output, handle missing width/height, thanks lovell +- add vips_gravity() ... embed, but with direction rather than position +- vips_text() can autofit text to a box, thanks gargsms +- add vips_composite() / vips_composite2(): merge a set of images with + a set of blend modes +- better gobject-introspection annotations, thanks astavale +- vips_image_write() severs all links between images, when it can ... thanks + Warren and Nakilon +- vector path for convolution is more accurate and can handle larger masks +- linear and cubic kernels for reduce are higher quality +- added vips_value_set_blob_free() +- "--size Nx" to vipsthumbnail was broken, thanks jrochkind +- fix build with gcc 7 +- add vips_fill_nearest() ... fill pixels with nearest colour +- add VIPS_COMBINE_MIN, a new combining mode for vips_compass() +- vips_hist_find_indexed() now has a @combine parameter +- vips_affine() and vips_similarity() have a "background" parameter +- fix nasty jaggies on the edges of affine output, thanks chregu +- add gif-delay, gif-comment and gif-loop metadata +- add dispose handling to gifload +- dzsave outputs extra right and bottom overlap-only tiles, for closer spec + adherence +- deprecate the "centre" option for vips_resize(): it's now always on +- setting the EXIF data block automatically sets other image tags +- add "extend" option to affine; resize uses it to stop black edges + +29/8/17 started 8.5.9 +- make --fail stop jpeg read on any libjpeg warning, thanks @mceachen +- don't build enumtypes so often, removing perl as a compile dependency +- fix a crash with heavy use of draw operations from language bindings, + thanks @Nakilon + +2/8/17 started 8.5.8 +- fix transparency detection in merge, thanks Haida +- define env var VIPS_WARNING to hide warning messages +- shut down dzsave output earlier to help mark-sweep bindings +- fix webp thumbnail upscale, thanks Kleis + +9/6/17 started 8.5.7 +- better smartcrop +- transform cmyk->rgb automatically on write if there's an embedded profile + and the saver does not support cmyk +- fix DPI mixup in svgload ... we were writing images about 20% too large, + thanks Fosk + +19/5/17 started 8.5.6 +- tiff read with start page > 0 could break edge tiles or strips +- raise b64 limit to allow for huge profiles (thanks jaume) +- fix error return in blob save (thanks jaume) +- tag vipsprofile as py2 (thanks ioquatix) +- don't cache thumbnail (thanks tomasc) + +23/4/17 started 8.5.5 +- doc polishing +- more improvements for truncated PNG files, thanks juyunsang +- improve corrupted jpg handling, thanks juyunsang +- fix small test suite issues on os x + +23/4/17 started 8.5.4 +- don't depend on image width when setting n_lines, thanks kleisauke + +7/4/17 started 8.5.3 +- more link fixing in docs +- revise cache sizing again to help out of order errors under heavy load, thanks + kleisauke + +25/3/17 started 8.5.2 +- better behaviour for truncated PNG files, thanks Yury +- missing proto for vips_tiffsave_buffer(), thanks greut +- move some docs from the wiki and blog into core libvips docs +- add support for markdown in docs + +25/3/17 started 8.5.1 +- init more classes earlier, thanks David + +13/10/16 started 8.5.0 +- rewritten buffer system is safer and frees memory earlier +- added tiff save to buffer +- added dzsave save to buffer (zip only) +- revise header get/set functions +- better vipsheader behaviour with complex field types +- added vips_image_hasalpha() +- added vips_thumbnail() / vips_thumbnail_buffer() +- webpload/webpsave read and write icc, xmp, exif metadata +- better >4gb detect for zip dzsave output [Felix Bünemann] +- all loaders have a @fail option, meaning fail on first warning, though it + only does anything for jpg and csv +- add vips_image_get_fields() to help bindings +- add tiff multi-page read/write +- add VIPS_META_PAGE_HEIGHT metadata +- IM6/IM7 magickload supports page/n/page-height, all_frames deprecated +- gifload supports n/page-height +- added #defines for VIPS_SONAME, VIPS_LIBRARY_CURRENT, VIPS_LIBRARY_REVISION, + VIPS_LIBRARY_AGE +- better support for bscale / bzero in fits images +- deprecate vips_warn() / vips_info(); use g_warning() / g_info() instead +- vipsthumbnail supports much fancier geometry strings, thanks tomasc +- vips_thumbnail() has new @size option +- fix --vips-cache-max etc. +- add compute reordering, plus some new API to support it: + vips_reorder_margin_hint() and vips_reorder_prepare_many(), thanks + aferrero2707 +- kick load operations from cache on read error, thanks gaillard +- fix return from C++ assignment operator overloads (+=, -= etc) +- add @max_slope to vips_hist_local() to implement CLAHE, thanks hunter-87 +- vips_gaussnoise() pixels are reproducible on recalc, thanks MvGulik +- max/min sort values by y and x coordinate +- tiff read uses libtiff scanline API if rows-per-strip is large +- vips_region_shrink() knows about alpha, helps dzsave and tiffsave +- use expat, not libxml, for XML load ... removes a required dependency, since + we get expat as part of glib +- new sequential mode infrastructure is faster and more flexible +- add vips_smartcrop(), based on sharp's smartcropper +- vipsthumbnail has a --smartcrop option +- added vips_rot90() etc. convenience functions +- fix vips_resize() bug when hscale and vscale were very different + +8/12/16 started 8.4.5 +- allow libgsf-1.14.26 to help centos, thanks tdiprima + +11/11/16 started 8.4.4 +- fix crash in vips.exe arg parsing on Windows, thanks Yury + +18/10/16 started 8.4.3 +- fix error detection in gif_close, thanks aaron42net +- fix tiny threading memleak +- improve compatibility with very old glib, see #548 + +27/9/16 started 8.4.2 +- small doc improvements +- fix error message for metadata fetch type mismatch +- resolve a race condition in thread shutdown, thanks Lovell + +1/5/16 started 8.4 +- many more wepsave options [Felix Bünemann] +- added quant_table option to wepsave [Felix Bünemann] +- added @n option to pdfload, thanks andris +- dzsave won't write empty tiles in google mode, thanks bverem, perog, + felixbuenemann +- allow nested [] in CLI args +- restore BandFmt on unpremultiply in vipsthumbnail +- better python detection and build [Felix Bünemann] +- max-alpha defaults to 65535 for RGB16/GREY16 +- added radsave_buffer [Henri Chain] +- support tiff orientation tag +- autorotate option for tiff load +- tiffsave converts for jpg if jpg compression is turned on +- tiffsave supports --strip +- conversions to GREY16 could lock +- free pixel buffers on image close as well as thread exit ... stops main + thread buffers clogging up the system +- dzsave can write compressed zips [Felix Bünemann] +- vips_image_write() only refs the input when it has to ... makes it easier to + combine many images in bounded memory +- VImage::write() implementation was missing +- VImage::write() return value changed from void to VImage to help chaining +- added C++ arithmetic assignment overloads, += etc. +- VImage::ifthenelse() with double args was missing =0 on options +- better accuracy for reducev with smarter multiplication +- better quality for vips_resize() with linear/cubic kernels +- pyvips8 can create new metadata +- better upsizing with vips_resize() +- add imagemagick v7 support, thanks sachinwalia2k8 +- added vips_worley(), vips_perlin() noise generators +- added vips_convf(), vips_convi(), vips_convasep(), vips_conva() ... + im_conv*() functions rewritten as classes +- vips_convsep() calls vips_convasep() for the approximate case +- new fixed-point vector path for convi is up to about 2x faster +- gif loader can make 1, 2, 3, or 4 bands depending on file contents +- support --strip for pngsave +- add svgz support [Felix Bünemann] +- rename boostrap.sh -> autogen.sh to help snapcraft +- support unicode filenames on Windows +- added VIPS_ROUND as well as VIPS_RINT +- resize/reduce*/shrink*/affine now round output size to nearest rather than + rounding down, thanks ioquatix +- better support for tile overlaps in google maps mode in dzsave +- dzsave puts vips-properties.xml in the main dir for gm and zoomify layouts +- resize and reduce have @centre option for centre convention downsampling +- vipsthumbnail uses centre convention to better match imagemagick +_ add vips_foreign_get_suffixes() + +19/8/16 started 8.3.4 +- better transparency handling in gifload, thanks diegocsandrim + +30/7/16 started 8.3.3 +- fix performance regression in 8.3.2, thanks Lovell +- yet more robust vips file reading + +18/5/16 started 8.3.2 +- more robust vips image reading +- more robust tiff read [Matt Richards] + +15/4/16 started 8.3.1 +- rename vips wrapper script, it was still vips-8.2, thanks Benjamin +- export C++ operator overloads for MSVC linking [Lovell] +- fix magickload @page with GraphicsMagick +- add giflib5 support +- allow resize >1 on one axis, <1 on the other +- vips_resize has an optional @kernel argument +- fix giflib4 detection [felixbuenemann] + +29/1/16 started 8.3 +- add vips_reduce*() ... a fast path for affine downsize +- vips_resize() uses vips_reduce() with lanczos3 +- bicubic is better on 32-bit int images +- add pdfload, svgload, gifload for PDF, SVG and GIF rendering +- vipsthumbnail knows about pdfload and svgload +- added @page param to magickload +- matload is more specific (thanks bithive) +- lower mem use for progressive jpg decode +- sharpen has a new @sigma param, @radius is deprecated +- sharpen allows a much greater range of parameters +- sharpen defaults now suitable for screen output +- better handling of deprecated args in python +- much better handling of arrayimage command-line args +- faster hist_find (Lovell Fuller) +- webpload has a @shrink parameter for shrink-on-load +- vipsthumbnail knows about webp shrink-on-load +- better behaviour for vips_cast() shift of non-int types (thanks apacheark) +- python .bandrank() now works like .bandjoin() +- vipsthumbnail --interpolator and --sharpen switches are deprecated +- switches to disable PPM, Rad and Analyze support +- added VIPS_COUNT_PIXELS(), overcomputation tracking +- @out_format in vips_system() can contain [options] +- webpsave_buffer no longer ignores @lossless, thanks aaron42net +- float tiff tagged as scRGB to match photoshop convention, thanks Murat +- better jpeg autorot, thanks otto + +24/3/16 started 8.2.4 +- fix nohalo and vsqbs interpolators, thanks Rafael + +27/1/16 started 8.2.3 +- fix a crash with SPARC byte-order labq vips images +- fix parsing of filenames containing brackets, thanks shilpi230 +- fix hist_entropy (lovell) +- small fixes to radiance load + +12/1/16 started 8.2.2 +- changes to ease compiling C++ binding with MSVC [Lovell Fuller] +- reorder file tests to put slow loaders last +- ifthenelse needs less C stack during eval +- better rounding in bilinear interpolator +- fix to "make check" in non-C locales [felixbuenemann] +- use compiler builtins isnan, isinf, fabs, fmin, fmax, ceil, floor when + possible [Lovell Fuller] +- tune vips_shrinkh(), 30% faster [Lovell Fuller] +- remove SEQ hint from vips_subsample(), fixes cli performance [erdmann] +- fix double free on attach ICC profile from file in tiff write [erdmann] +- use g_assert_not_reached() +- better vips-from-C docs +- remove Duff from im_conv() / im_conv_f() for a 25% speedup [Lovell Fuller] + +1/1/16 started 8.2.1 +- add a compat stub [Benjamin Gilbert] +- python bandjoin is now just an instance function +- small doc improvements +- small vips7 C++ improvement +- remove exception specifications from vips8 C++ interface [Lovell Fuller] +- VImage::get_typeof() now returns GType + +7/10/15 started 8.2.0 +- added im_bufmagick2vips(), a vips7 wrapper for magick load from buffer +- fetch unset property now returns default value rather than warning +- many more const declarations to help gobject-introspection +- rewritten vips_shrink() is 2x faster, much lower memuse, now handles complex +- only allow [] for filename options +- add memory.h to Python API .. makes tracked highwater visible +- added bandjoin_const to add constant bands to an image +- better alpha handling for tiff write, thanks sadaqatullahn +- better cache sizing for vips_resize() +- sizealike / formatalike / bandsalike elide completely if they can for + a x2 saving in C stack use in many cases +- added vips_mapim() ... resample with an index image, plus test +- try to improve vips_resize() quality a little more +- vips_resize() can do non-square resizes +- dzsave removes tile metadata by default, thanks Benjamin +- jpeg strip option removes a little more, thanks Benjamin +- added vips_image_new_from_memory_copy() +- improve vips_sink_screen() stability under heavy load +- added vips_arrayjoin() +- Python x.bandjoin(y) is now x.ibandjoin(y), sorry +- faster and lower-mem TIFF read +- faster bilinear interpolator +- TIFF loads and saves IMAGEDESCRIPTION +- add --properties flag to tiffsave +- dzsave defaults changed: now writes 256x256 jpegs for non-edge tiles, thanks + Daniel + +7/5/15 started 8.1.1 +- oop, vips-8.0 wrapper script should be vips-8.1, thanks Danilo +- fix vips7 pathname parsing on windows, thanks Lovell + +7/5/15 starteld 8.1.0 +- add vips_premultiply(), vips_unpremultiply() +- change the alpha range rules for vips_flatten() to match vips_premultiply() +- vipsthumbnail uses vips_resize() rather than its own code +- vipsthumbnail uses vips_premultiply() for better alpha quality +- added bandand() bandor() bandeor() convenience funcs to Python +- oops, base64 encode could pad by up to two zero bytes +- added VipsRefString as a thing that gi bindings can unpack +- support "with Vips.Image as i:" in Python +- try to support DOS CSV and PPM files on linux +- add vips_byteswap(), remove byteswap option from vips_copy() +- add vips_bandfold()/vips_bandunfold() +- dzsave supports zip output > 4gb, thanks benjamin +- add support for HSV colourspace [Jonas Øgaard] +- skip oversized markers in jpeg write +- jpeg exif tags saved as name rather than title +- can now set any jpeg exif tag, not just modify existing tags +- add vips_hist_entropy() +- vips_log(), vips_log10() are zero-avoiding +- better overlap handling for dzsave, thanks robclouth +- add @spacing option to vips_text() +- tiff loads and saves IPCT and Photoshop data + +7/5/15 started 8.0.3 +- dzsave and tif pyr write could fail for some image dimensions, thanks Jonas + +4/5/15 started 8.0.2 +- fix a refcount error in C++ wrapper, thanks huskier +- better C++ api test +- test suite improvements +- remove a couple of stray header decls, thanks benjamin + +25/4/15 started 8.0.1 +- fix some compiler warnings +- work around a glib bug that can cause segv under load +- add some notes on threading to the docs +- better leak reporting + +11/2/15 started 8.0 +- remove old doc stuff, lots of doc improvements +- add fliphor(), flipver(), rot90(), rot180(), rot270(), median(), dilate(), + erode() convenience methods to Python and C++ +- python: use [] to index and slice image bands, use () to get a point +- c++: use [] to band index, () returns a vector +- add shift option to cast +- sRGB2scRGB and scRGB2sRGB scale 16-bit alpha to and from 8-bit +- add magickload_buffer() [mcuelenaere] +- add vips_foreign_is_a_buffer() [mcuelenaere] +- added test_foreign.py, plus more test images +- added vips_region_shrink(), fast x2 shrinker +- rewritten tiff writer is about 3 - 4x faster at making pyramids +- jpg, magick, png, tiff readers now use only 1 fd per input image +- added vips_info_set(), vips_progress_set(), vips_profile_set() ... bindings + can now support all the vips command-line options if they wish +- better conversion to greyscale, thanks bkw +- add vips_image_copy_memory(), improves stability with heavy threading +- jpegsave supports new mozjpeg features [lovell] +- add vips_vipsload(), vips_vipssave() ... why not + +26/3/15 started 7.42.4 +- im_maxpos_avg() avoids NaN +- small tiffsave doc improvements +- better thresholding for tiffsave "squash" mode +- add @miniswhite mode to tiffsave + +6/2/15 started 7.42.3 +- bump version for back-compat ABI change +- added vips_image_memory(), an alias for vips_image_new_memory() +- improvements to configure for python +- remove --disable-cxx configure flag +- python imageize preserves interpretation +- fix dzsave as a target format + +30/12/14 started 7.42.2 +- C++ required output params were broken, thanks Lovell +- remove VImage::scale() to get scale from header, it clashed with the + VipsScale operator, thanks Lovell +- allow c++ set enum from string +- display param default and range in usage +- better docs +- more tests +- renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help + bindings +- vipsthumbnail will return an error code if one or more conversions failed +- disable chroma subsample in jpeg-tiff if Q >= 90 +- try to handle tiffs with old-style 8-bit colormaps +- rename vipsthumbnail -o as -f, -o stays as a hidden flag +- fix some small leaks +- faster openslide load, thanks Benjamin +- add VInterpolate class to cplusplus binding, thanks Lovell +- add lower-level operation cache access +- turn on leak testing in test suite +- don't use isnormal() to test for crazy FP numbers, thanks Murat +- much faster RGB16 -> sRGB path + +24/12/14 started 7.42.1 +- add gobject-2.0 to Requires: in vips and vips-cpp .pc files +- bump soname +- fix VipsBlob read +- remove "future" dependency, thanks bgilbert + +4/11/14 started 7.42.0 +- better default resolution for png load +- better pbm (one bit) load, better pfm (float) load/save +- added pbm (one bit) save +- changed vips_gaussblur() parameters, sorry +- add .szi as a dzsave zip synonym +- support tiff XMP metadata +- support @density arg to magickload [Lovell] +- support python3.4 and python2.7 in new python binding +- vips_gaussmat() and vips_logmat() are now int by default, to match + vips_conv(), and use @precision, not @integer +- added --disable-pyvips8 switch to turn off new py binding +- "vips thing" exit status can now be used to test for optional components + +25/7/14 started 7.41.0 +- start working on --disable-deprecated +- fix pngload with libpng >1.6.1 +- add vips_resize() +- return of vips_init(), but just for bindings +- revised type.c to make it more binding-friendly +- add @background arg to save: the colour to flatten against +- add VIPS_ARGUMENT_MODIFY flag ... used for draw_circle etc, meaning an op + which modifies its argument +- rename VIPS_OPERATION_RELATIONAL_NOTEQUAL as VIPS_OPERATION_RELATIONAL_NOTEQ + for consistency +- python vips8 binding +- python vips8 test suite: test_arithmetic.py, test_colour.py, + test_conversion.py +- move zoomify ImageProperties file, now a better match to the offical tool +- rename VIPS_ANGLE_180 as VIPS_ANGLE_D180 etc. to help python +- remove cimg support, we have a gmic plugin now instead +- add support for vips8 plugins +- added "autorotate" option to jpeg load +- added autorot operator +- added @filter option to pngsave (Lovell) +- C++ vips8 binding + +27/10/14 started 7.40.12 +- better tiff detection (Lovell) +- fix memleak in sharpen (Lovell) +- fix profile handling in XYZ2scRGB, thanks Lovell + +8/10/14 started 7.40.11 +- rework extra band handling for colour functions +- set interpretation of matlut output more carefully + +8/9/14 started 7.40.10 +- icc_import and icc_transform checks the input profile for compatibility + with the image, thanks James +- try to make vips_thread_shutdown() optional + +8/9/14 started 7.40.9 +- support jfif resunit "none" +- support GRAY as an input and output ICC space +- fix a read loop with setjmp() in png read, if the png file is broken +- fix vipsthumbnail with both input cmyk and output rgb profiles specified +- vipsthumbnail retries with specified input profile if embedded profile is + broken +- add @profile option to pngsave, matching tiff and jpeg +- fix a race in the operation cache [Lovell] + +8/9/14 started 7.40.8 +- fix configure on rhel6 [Lovell] +- mono <-> rgb converters were not handling extra bands, thanks James +- support jpeg resunit "none" + +21/8/14 started 7.40.7 +- width and height were swapped in matlab load +- set interpretation more carefully on matlab load +- fix memleak in tilecache [Lovell] +- fix memleak in VipsArray [Lovell] +- fix memleak in webp load from buffer [Lovell] +- fix memleak in png save to buffer [Lovell] +- make out of order read in png and jpg a fatal error +- add thread_shutdown() to C++ (and thereby to python) + +12/8/14 started 7.40.6 +- more doc fixes +- fix similarity rotate+scale, thanks Topochicho +- fix 16-bit PNG save, thanks John +- fix dzsave date on Windows, thanks John +- fix vipsthumbnail on many-core systems, thanks James + +25/7/14 started 7.40.5 +- fix a race in im_maxpos_avg() +- limit n_thr on tiny images +- don't exit() on memleak detected, just warn +- add "autocrop" option to openslide load +- argh fix affine, again, there were sometimes black bars with nohalo and the + vips8 interface +- pngsave in interlaced mode makes a copy of the image, so it's always seq +- vipsthumbnail shrinks to 1/2 window_size +- vipsthumbnail has an anti-alias filter between shrink and affine +- vipsthumbnail defaults to bicubic +- better rounding behaviour for fixed-point bicubic reduces noise +- fix pngload with libpng >=1.6.11 +- fix colour for openslide read associated + +4/7/14 started 7.40.4 +- fix vips_rawsave_fd(), thanks aferrero2707 +- fix im_point() +- vips_scale() now does round to nearest to avoid rounding errors +- improve im_openout() compat macro +- more vips7 compatibility fixes, thanks steve +- more robust vips_system() +- add webp support to vips7 + +30/6/14 started 7.40.3 +- fix interlaced thumbnails in vipsthumbnail, thanks lovell +- fix use of "header" in benchmark/, thanks David +- fits save now caches the image before write, so it's top-to-bottom +- add --properties argument to dzsave, thanks bgilbert, jhenriksen + +25/6/14 started 7.40.2 +- dzsave write to zip stops at 4gb, thanks bgilbert +- improve short option name handling, thanks bgilbert +- added --enable-docs configure option to help freebsd +- removed a bash-ism from configure to help freebsd +- don't assume GType fits in an int to help freebsd + +24/6/14 started 7.40.1 +- revise man.1 pages +- fix vips_guess_prefix() + +23/6/14 started 7.40.0 +- version bump +- renamed "header" as "vipsheader" and "edvips" as "vipsedit" + +21/1/14 started 7.39.0 +- auto-decode for (almost) all operations, see vips_image_decode() +- background render thread cleans up and quits neatly +- colourspace has a source_space option +- operations can be tagged as "deprecated" +- redo im_draw_circle(), im_draw_flood(), im_draw_line(), im_draw_mask(), + im_draw_image(), im_draw_rect(), im_draw_point(), im_read_point(), + im_draw_smudge(), im_label_regions() as classes +- better rounding in vips_flatten() +- VipsStatistic operations are sequential +- vipsthumbnail has --rotate auto-rotate option +- removed embedded thumbnail reader from vipsthumbnail: embedded thumbnails + are too unlike the main image +- fix to vipsthumbnail --crop, thanks Alessandro +- add vips_sum() +- add vips_hough base class and vips_hough_line() +- add "mode" param to vips_draw_image() +- add vips_hough_circle() +- reduce default cache size to 1,000 operations +- added "postbuild" signal +- vips_system() now supports many input images and you can change image + argument order +- support 16-bit palette TIFFs, plus palette TIFFs can have an alpha +- libgsf-1 is now an optional dependency +- dzsave can directly write a ZIP file +- add ".vips" as an alternative suffix for vips files +- added vips_tiffload_buffer() +- added vips_image_new_from_buffer(), vips_image_write_to_buffer() +- added vips_object_set_from_string() +- added @container option to dzsave +- support 1/2/4 bit palette tiff images with alpha +- vips_system() now uses g_spawn_command_line_sync() +- added im_tile_cache_random() to help nip2 +- added hough_circle() to vips7 C++ API +- added Travis CI config, thanks Lovell +- im_*merge(), im_*mosaic(), im_match*(), im_global_balance*(), im_remosaic(), + im_*mosaic1(), im_*merge1() redone as classes +- better filename tracking for globalbalance +- revised vips8 image load/save API, now simpler and more logical +- operations emit "invalidate" if any of their input images invalidate +- operation cache drops ops on invalidate +- skipahead is back, thanks to a new threadpool tweak + +6/3/14 started 7.38.6 +- grey ramp minimum was wrong +- vipsthumbnail --crop could fail for very non-square images, thanks + Alessandro +- fix a crash in vips_rawsave(), thanks Andrea +- updated German translation, thanks Chris +- fix coordinate error in affine, thanks ferryfax + +24/2/14 started 7.38.5 +- jpeg load from buffer could write to input, thanks Lovell +- fix webpload from buffer, thanks Lovell +- vips_sequential() could fail under heavy load +- remove support for seq mode read for operations like extract + +13/2/14 started 7.38.4 +- --sharpen=none option to vipsthumbnail was broken, thanks ferryfax +- more locking on property create and lookup to help very-threaded systems, + thanks Nick + +22/1/14 started 7.38.3 +- undeprecate VIPS_MASK_IDEAL_HIGHPASS and friends, ruby-vips was using them, + thanks ahacking + +22/1/14 started 7.38.2 +- auto RAD decode for affine +- falsecolour was not working for some image types +- foreign memory buffer images did not have the right dhint, broke + command-line falsecolour on sequential images +- support many Radiance readers active at once +- add secret "rgbjpeg" flag to vips_tiffsave() to help IIP + +19/1/14 started 7.38.1 +- bump soname, thanks benjamin +- better conversion to and from scrgb/xyz for rad (hdr) +- fix --interpolate flag to vipsthumbnail, thanks Lovell + +18/1/14 started 7.38.0 +- version bump + +19/10/13 started 7.37.0 +- redone im_rotate_*mask45(), im_gauss_*mask*(), im_log_*mask(), im_dilate(), + im_erode(), im_rank_image(), im_compass(), im_linedet(), im_gradient(), + im_convsep(), im_convsep_f(), im_fastcor(), im_spcor(), im_sharpen() + as classes +- im_gradcor() deprecated +- vips_init() now does some ABI compat checking, though this change requires + an ABI break +- add "interlace" option to vips_jpegsave() +- remove vips_image_copy_fields() and vips_demand_hint() and add + vips_image_pipeline() to do both jobs +- vipsthumbnail allows non-square bounding boxes, thanks seth +- add vips_matrixprint() +- add @point subsample mode to vips_subsample() +- im_contrast_surface() deprecated: it was slower than calling conv a few + times +- radiance load supports sequential read +- rewritten radiance decode is much faster +- add vips_crop(), a synonym for vips_extract_area() +- rename vips_gammacorrect() as vips_gamma(), now takes 1 / exp +- vips_gamma() works for any format +- add --linear mode to vipsthumbnail +- support XYZ as a PCS for vips_icc_import() and vips_icc_export() +- add --strip option to jpegsave +- added vips_gaussblur() convenience function +- added --vips-profile, records and dumps thread timing and memory use info +- added vipsprofile, visualises --vips-profile output +- auto-vectorization-friendly inner loops +- added vips::init() and vips::shutdown() to C++ API +- reuse pixel buffers on sharing to reduce mem cycling +- conv is SMALLTILE, huge mem use saving on wide images +- vipsthumbnail has a --crop option +- remove video4linux1 code, it was useless on all modern linuxes +- redone freq filter builders as classes +- redone im_fwfft(), im_invfft(), im_freqflt(), im_disp_ps(), im_fractsurf(), + im_phasecor() as classes +- vips_colourspace() allows B_W, GREY16, RGB16 as source / target +- added vips_thread_shutdown(), thanks Lovell +- vips_linear() has a uchar output mode +- redone im_cntlines(), im_rank() as classes +- move im_zerox() to deprecated, it wasm't very useful + +9/1/14 started 7.36.6 +- fix some clang compiler warnings + +20/11/13 started 7.36.5 +- better cache sizing in unbuffered sequential mode +- allow larger tile_size in dzsave +- remove use of PATH_MAX to help gnu hurd +- fix vips_hist_match() + +15/11/13 started 7.36.4 +- improve compat with im_init_world() + +18/10/13 started 7.36.3 +- fix compiler warnings in ubuntu 13.10 +- reverse similarity rotation direction to match the convention used + elsewhere in vips +- fix blocked caching of sequential load operations +- fix cache flags +- fix --delete option to vipsthumbnail + +10/10/13 started 7.36.2 +- better jpeg startup +- rename jpeg bool type to reduce confusion between libraries + +3/10/13 started 7.36.1 +- fix to help OS X build + +3/10/13 started 7.36.0 +- version bump + +1/7/13 started 7.35.0 +- added vips_matrixload() and vips_matrixsave(), load and save vips mat format +- rename image arrays as image matrices ... INTERPRETATION_ARRAY -> + INTERPRETATION_MATRIX etc. +- rewrite im_buildlut(), im_identity*(), im_maplut(), im_falsecolour(), + im_gammacorrect(), im_histgr(), im_histcum(), im_histnorm(), im_heq(), + im_histnD(), im_histindexed(), im_histspec(), im_invertlut(), im_lhisteq(), + im_stdif(), im_project(), im_profile(), im_tone_build*(), im_mpercent*(), + im_ismonotonic() as classes +- vips_hist_local(), vips_stdif() do any number of bands +- thin vips8 wrapper for im_histplot() +- added vips_error_freeze() / vips_error_thaw() +- used freeze() / thaw() to stop file format sniffers logging spurious errors +- vipsthumbnail uses embedded jpg thumbnails if it can +- rename vips_diag() as vips_info(), add --vips-info flag +- deprecate im_hsp() +- added vips_webpload(), vips_webpload_buffer(), vips_webpsave(), + vips_webpsave_buffer(), vips_webpsave_mime() +- tiff reader allows separate planes for strip read +- tiff reader and writer allow many more formats, eg. 32-bit int, complex, etc. +- tiff reader and writer allow any number of bands +- added vips_image_new_matrixv() +- dzsave basename param now called filename, so you can use .dz as a + destination (basename is still there but deprecated) +- new _UNBUFFERED sequential mode saves memory in some important cases +- vips_conv() is a simple wrapper over the old convolution functions +- new optimize_coding param for jpeg write produces optimal Huffman tables, + thanks Lovell +- im_tone_map() and im_tone_analyse() deprecated +- new --band arg to vips_maplut() replaces im_tone_map() functionality +- added vips_similarity(), simple wrapper for vips_affine() that lets you + give a scale and rotate + +3/7/13 started 7.34.2 +- lower priority for Matlab load to reduce segvs from Mat_Open(), thanks + Michael +- null-terminate libexif strings, thanks Mike +- openslide always outputs solid pixels + +28/6/13 started 7.34.1 +- fix morphological operators on non-uchar images +- remove any ICC profile when we use vips to go to srgb + +7/6/13 started 7.34.0 +- version bump +- oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro +- fix no-pango build +- add im_vips2dz(): run the deepzoom writer from vips7 +- vips_magickload() has an option to read all images in a sequence +- redo im_make_xy(), im_*eye(), im_zone*(), im_sines() as classes +- added vips_pngload_buffer() +- faster --centre option to dzsave, thanks Kacey + +12/3/13 started 7.33.0 +- vipsthumbnail lets you specify the sharpening mask +- turn off caching for im_copy()/vips_copy(), we use copy to stop sharing, and + it's cheap so caching doesn't help anyway +- auto rshift down to 8 bits on save, if necessary +- im_gaussnoise(), im_copy_file(), im_grid(), im_scale(), im_scaleps(), + im_wrap(), im_rotquad(), im_zoom(), im_subsample(), im_msb(), im_text(), + im_system(), im_system_image() + redone as classes +- add --angle option to dzsave +- another vips_shrink() fix argh + +14/5/13 started 7.32.4 +- icc import and export could segv on very wide images +- fix centos 5 build, thanks re-boot + +16/4/13 started 7.32.3 +- rename GETTEXT_PACKAGE as vips7.32 to help Debian (thanks Jay) +- added "persistent" option to tilecache + +12/3/13 started 7.32.2 +- removed some left-over debugging code from configure.ac +- better handling of args without values, thanks Ruven +- better error messages from vips.c +- fix demand hints so "vips shrink" works again, thanks Jan +- im_jpeg2vips.c builds without jpeglib.h, thanks Alessandro + +6/2/13 started 7.32.1 +- fix --without-lcms, thanks speckins +- updates to licence, thanks Benjamin +- remove "fred" from dist +- better bootstrap on OS X + +22/1/13 started 7.32.0 +- tilecache in threaded mode could deadlock if the downstream pixel source + raised an error (thanks Todd) +- fix another dzsave corner-case (thanks Martin) +- neater output for "header" +- added VIPS_META_LOADER: record the loader name += header displays this loader hint +- vipsthumbnail is better at cache sizing + +31/8/12 started 7.31.0 +- redone im_Lab2XYZ(), im_XYZ2Lab(), im_Lab2LCh(), im_LCh2Lab(), im_UCS2LCh, + im_LCh2UCS(), im_XYZ2Yxy(), im_Yxy2XYZ(), im_float2rad(), im_rad2float(), + im_Lab2LabQ(), im_LabQ2Lab(), im_Lab2LabS(), im_LabS2Lab(), im_LabQ2LabS(), + im_LabS2LabQ(), im_LabQ2disp(), im_XYZ2disp(), im_disp2XYZ(), + im_icc_import*(), im_icc_export*(), im_icc_transform*(), im_dE_fromLab(), + im_dECMC_fromLab(), im_dE00_from_Lab(), im_icc_ac2rc() as classes +- added vips_colourspace(), vips_colourspace_issupported(), replaces all + derived conversions +- faster and more accurate sRGB <-> XYZ conversion +- support 16-bit sRGB import and export +- rename UCS colourspace as CMC +- dzsave can write zoomify and google maps layout as well +- tilecache supports threaded access, so openslide read now threads +- openslide2vips gets underlying tile size from openslide +- embed has 'background' option +- dzsave --layout google has a @background option +- dzsave has a --depth option +- update for new glib threading API +- remove no threads option, glib no longer support it +- better --help output for vips driver prog +- vipsthumbnail -o allows absolute file names +- much better exif handling for jpg images (thanks Gary) +- preserve jpeg app13 (photoshop ipct) +- vips_max() / _min() track the top n maxima / minima +- deprecate im_maxpos_avg(): too specialised to be worth maintaining +- deprecate im_linreg(): easily done by combining other operators +- deprecate im_point(): easily done by combining other operators +- add binary complex operations, with cross_phase as the only one so far +- added vips_bandbool(), with vips_bandand(), _bandor(), _bandeor() as + convenience functions +- added scRGB colourspace, linear light float space with sRGB primaries +- all interpolators use corner convention ... we had round-to-nearest in + several of them before, causing a range of annoying problems +- redone im_affine*() as a class +- added input space displacement to affine +- VipsArea is threadsafe +- dzsave has a --centre option + +31/12/12 started 7.30.8 +- png icc profile write was broken + +31/12/12 started 7.30.7 +- better option parsing for "vips", thanks Haida +- small fixes to help OS X +- backported threaded tile cache from next version, im_tile_cache() now + uses it to prevent a deadlock, see comment there + +14/11/12 started 7.30.6 +- capture tiff warnings earlier + +14/11/12 started 7.30.5 +- fix libtool version mess up (thanks Benjamin) + +2/10/12 started 7.30.4 +- remove options from format string in .dzi (thanks Martin) +- vipsCC.pc required the wrong version of vips (thanks Alessandro) +- larger max tile size for dzsave +- linecache is 50% larger to leave some slop room + +13/9/12 started 7.30.3 +- linecache sized itself too large +- fix a compile failure if libtiff was not found (thanks Martin) +- dzsave did not work for images with an odd number of scanlines + (thanks Martin) + +4/9/12 started 7.30.2 +- sequential stops all threads on error +- sequential delays ahead threads rather than blocking them completely + +6/8/12 started 7.30.1 +- fixes to dzsave: shrink down to a 1x1 pixel tile, round image size up on + shrink, write a .dzi file with the pyramid params, default tile size and + overlap now matches the openslide writer +- wrap VipsInterpolate for C++ +- so affinei and affinei_all appear in Python +- be more cautious enabling YCbCr mode in tiff write +- add "DEPRECATED" flag to arguments +- jpeg load/save note and use the preferred resolution unit +- better error msgs for enum args +- fix compiler warnings in production build (thanks Dmitry) +- fix spurious warnings about exif updates +- VipsSequential has an integrated cache and stalls out of order threads +- add a line cache ... sizes up dynamically with request size +- tilecache / linecache use a hash table not a linear list + +20/7/12 started 7.30.0 +- support "rs" mode in vips7 +- add --vips-version cmdline arg +- fix --without-tiff / exr / jpeg / png / magick +- add --vips-fatal flag + +19/3/12 started 7.29.0 +- sanity-check PNG read geometry +- nearest-neighbor interpolation rounds coordinates to nearest instead of + rounding down (thanks Nicolas) +- add dzsave, save in deep zoom format +- rework im_shrink() as a class +- remove im_rightshift_size(), just a convenience function now +- vipsthumbnail no longer removes profiles by default +- much more gentle sharpening in thumbnails +- added "minimise" signal, used by tilecache to drop +- add :seq support to im_tiff2vips(), im_jpeg2vips() ... helps ruby-vips +- better thread safety for vips8 operation dispatch +- better thread safety for upstream / downstream image linking +- added "rs" open mode, removed "rd" +- added vips_operation_get_flags() ... system for attaching sets of flags to + operations +- added VIPS_OPERATION_SEQUENTIAL flag +- vips8 command-line interface uses this to turn sequential mode on + automatically when possible +- better handling of input files in vips7 command-line interface +- sequential can skip ahead, so extract / insert are now seq + +16/7/12 started 7.28.10 +- wopconst was broken +- vips_sign() was broken +- png save compression range was wrong +- more/moreeq was wrong +- vips7 ppm save with options was broken +- don't cache write operations + +18/6/12 started 7.28.9 +- slightly more memory debugging output +- remove references to the static bicubic interpolator from the docs +- fix temp file handling on Windows --- was breaking for non-vips files + over 100mb +- better support for using images from multiple threads + +18/6/12 started 7.28.8 +- fixes for centos5 portability + +18/6/12 started 7.28.7 +- add vips_flatten() -- flatten RGBA to RGB +- better alpha handling in PNG load +- don't save RGBA PNG as CMYK JPG (thanks Tobsn) +- fix a crash with malformed jpg files (thanks Grigoriy) +- vipsthumbnail enables sequential mode more and caches lines better + +19/4/12 started 7.28.6 +- better resolution unit handling in deprecated im_vips2tiff() +- use TIFF_CFLAGS output from pkg-config (thanks Jay) +- much faster vips_argument_map() +- make jpeg pyramids work with tiff4 +- tiff loader always offers THINSTRIP (thanks Diuming) +- add "nocache" operation flag, set for sequential load (thanks Diuming) +- fix a crash in the tiff reader for huge values of RowsPerStrip (thanks + Nicolas) +- remove use of G_DEFINE_BOXED_TYPE() to help compat (thanks Jake) + +19/4/12 started 7.28.5 +- ifthenelse blend mode was broken +- small blend speedup +- default to libtiff-4 + +17/4/12 started 7.28.4 +- up max buffer size for vipsbuf + +6/4/12 started 7.28.3 +- vips_divide() failed for int arguments +- fix warning for unused vips7 gvalue argument +- fix openslide read: always return png-style rgba, im_argb2rgba() becomes a + NOP +- cast to unsigned int now removes <0 values +- vips7 interface to openslide now supports :,level,associated options (thanks + Benjamin) +- make vips8 cache smaller +- more accurate progress reporting + +13/3/12 started 7.28.2 +- xres/yres tiffsave args were broken + +13/3/12 started 7.28.1 +- add ICC profile read/write for png files + +30/1/12 started 7.28.0 +- version bump +- added vips_foreign_find_save_options()/vips_foreign_find_load_options() +- delayed write to foreign via a "w" image was not working +- support operations with many returns in Python +- sequential read mode +- better im_shrink() +- added vips_sequential() +- new vips_sink_memory() keeps read ordering +- tiff, jpeg, png readers support sequential read +- max/min avoid NaN +- oop, histnorm was broken by the new vipsstats +- never use IM ping to get a header, fixes BMP load +- set @filename for non-vips formats in vips7 compat layer +- make Xres/Yres double +- completely disable debug by default in production builds + +20/8/11 started 7.27.0 +- version bump for new dev cycle +- im_subtract(), im_avg(), im_min(), im_minpos(), im_copy(), im_embed(), + im_flophor(), im_flipver(), im_insert(), im_insert_noexpand(), im_lrjoin(), + im_tbjoin(), im_extract_area(), im_extract_bands(), im_extract_areabands(), + im_replicate(), im_clip2fmt(), im_gbandjoin(), im_bandjoin(), im_invert(), + im_lintra(), im_lintra_vec(), im_black(), im_rot90, im_rot180(), im_rot270() + im_sintra(), im_costra(), im_tantra(), im_asintra(), im_acostra(), + im_atantra(), im_exptra(), im_exp10tra(), im_logtra(), im_log10tra(), + im_abs(), im_sign(), im_max(), im_maxpos(), im_deviate(), im_divide(), + im_multiply(), im_stats(), im_measure(), im_recomb(), im_floor(), im_ceil(), + im_rint(), im_equal*(), im_notequal*(), im_less*(), im_lesseq*(), im_more*(), + im_moreeq*(), im_remainder*(), im_and*(), im_or*(), im_eor*(), im_shift*(), + im_pow*(), im_exp*(), im_ifthenelse(), im_blend(), im_c2amph(), im_c2rect(), + im_bandmean(), im_c2real(), im_c2imag(), im_ri2c(), im_jpeg*2vips(), + im_vips2jpeg*(), im_tiff2vips(), im_vips2tiff(), im_exr2vips(), + im_fits2vips(), im_vips2fits(), im_analyze2vips(), im_raw2vips(), + im_vips2raw(), im_magick2vips(), im_png2vips(), im_png2*(), im_ppm2vips(), + im_vips2ppm(), im_mat2vips(), im_rad2vips(), im_vips2rad() + redone as classes +- added argument priorites to help control arg ordering +- generate has a 'stop' param to signal successful early termination +- added optional output args, eg. x/y for min +- CLI supports optional output args +- in im_vips2tiff, enable YCbCr compression for jpeg write +- VipsMin stops search early if it can +- C API supports optional output args +- switch back to int-valued operations +- add the operation cache, various --vips-cache-* flags +- fallback vips_init() +- vips_tracked_malloc() tracks allocation size and can report total mem usage +- cache limits, drop, init, flush plus command-line controls +- remove dmalloc support, was never used and valgrind is better +- im_csv2vips() allows quoted strings, including escaped quotes +- added vips_shutdown() +- added --vips-leak flag +- more VipsImage props +- added vips_image_write(), old one becomes vips_image_write_to_file() +- added vips_region_paint_pel() +- added VipsArea as a public struct +- added array members and arguments +- added nary +- remove VipsPool, vips_object_local_array() is much better +- cache.c now drops if you have too many open files +- CLI args to change max files +- new format for handling exif tags +- switch SMALLTILE to 128, 512 was just too big +- oop mode "rd" was not always being used for images +- added ARRAY interpretation for images +- VipsStats tracks minpos/maxpos as well +- moved mask/ to deprecated +- use atexit() to call vips_shutdown() +- set _O_TEMPORARY on delete-on-close temp images if possible +- unlink temps on rewind on *nix, less likely to leave temps on a crash +- added complex conj as a basic operation +- rect/polar/conj work on any format, not just complex +- new VipsFile system for load/save in image formats +- options now introspectable, try "vips jpegsave" +- copy swap uses glib byteswap macros, about 2x faster +- edvips can change vips header byte ordering +- "header" is terse by default +- "header" outputs filenames if working on many files +- added openslide support (Benjamin Gilbert) +- allow new-style load/save options in filenames to + vips_image_new_from_file() etc. +- VipsFormat is deprecated +- remove outchecks from documented API +- support gobject-introspection +- new Python binding based on gobject-introspection +- only spot options at the end of arg strings +- add vips_cache() as a vips8 operator +- remove the old fft fallback +- remove fftw2 support +- much faster im_draw_smudge() + +14/1/12 started 7.26.8 +- interpolate CLI args were broken (thanks speckins) + +5/12/11 started 7.26.7 +- lazy read from tiled tiff from layers other than 0 was broken +- optional args to vips_call*() do not work, disabled (fixed correctly in + master) +- address calculations in files over 4gb were broken on 32-bit platforms + (broken since March 2011, oops) + +12/10/11 started 7.26.6 +- NOCACHE was not being set correctly on OS X causing performance + problems with large files +- update Orientation exif tag on jpeg write + +12/10/11 started 7.26.5 +- jpeg read/write copies over XMP data +- handle offset correctly in separable convolutions (thanks Nicolas) +- macros for class arg boilerplate +- class arg order set by new 'priority' param +- VipsExtend, VipsDirection enums added + +12/9/11 started 7.26.4 +- fallback vips_init() +- im_openout() compat stub was wrong, breaking ruby-vips +- vips_class_map_concrete_all() needed a compat macro too +- vips_class_map_all() was broken + +10/8/11 started 7.26.3 +- don't use G_VALUE_COLLECT_INIT(), many platforms do not have a glib this + recent +- don't leave image->kill set when we detect termination +- test for a working C++ compiler, disable C++ parts of none found + +10/8/11 started 7.26.2 +- oops, im_benchmark.c had some stuff turned off +- configure option --without-cfitsio was broken (thanks Mike) + +26/7/11 started 7.26.1 +- doc fixups +- oops, ==0 missing from a strcmp() in vips7compat +- fixed a race in im_XYZ2Lab() table build +- added im_concurrency_get() to operation db +- better benchmarkn.sh runs for the correct number of CPUs automatically, runs + three times for each one, and just reports the fastest + +26/7/11 started 7.26.0 +- version bunp for 7.26 +- various fixes to get win32 and OS X building + +6/12/10 started 7.25.0 +- attach the jpeg thumbnail and multiscan fields (thanks Mike) +- faster tiff read for some common cases +- faster im_tile_cache() +- if we use C++ in libvips, add -lstdc++ to vips-7.xx.pc +- im_vips2png() / im_png2vips() set / get png resolution (thanks Zhiyu Wu) +- updated README +- don't use tables for bilinear on float data for a small speedup (thanks + Nicolas Robidoux) +- no tables for uchar either, about a 15% speedup (thanks Nicolas) +- dmask write was broken +- lr/tbmerge() cast images to match, like im_insert() +- lr/tbmosaic() work for any mix of image formats / bands +- removed ancient balance stuff from im_lr/tbmosaic() +- gtk-doc for mosaicing +- add im_fits2vips() to the operation database +- im_fits2vips() is lazy and much faster +- im__file_open_write() / _read() has a flag for text_mode, get rid of all the + remaining fopen()s +- move cooc_* and glds_* to deprecated +- move im_dif_std() to almostdeprecated +- move im_simcontr() to almostdeprecated +- add im_sines() to operation db +- move im_spatres() to almostdeprecated +- done gtk-doc for other +- --vips-progress tells you about nthreads, tile size, nlines +- gtk-doc for interpolate +- move im_stretch3() to deprecated +- move im_clamp() to deprecated +- gtk-doc for video ... all operators done! amazing argh +- set MAP_NOCACHE on OS X, otherwise performance dives off a cliff with + files larger than memory +- removed man pages, we are all gtk-doc now +- im_jpeg2vips() ignores weird APP1 chunks +- im_add() for int/uint was broken +- im_ri2c() was broken +- added VIPS_FORMAT_BIGENDIAN format flag +- moved IMAGE and REGION to VipsImage and VipsRegion, classes over VipsObject +- Rect -> VipsRect +- libpng-1.5 supported +- better png read for 1-bit and palette images +- fits write +- better fits metadata support +- renamed all header fields, old names still supported, hopefully +- all of iofuncs moved to vips_ namespace +- lots of old iofuncs API moved to deprecated +- added VipsOperation, an abstract base class for all vips operations +- added VipsAdd, the first operation object +- im_tiff2vips() int/uint mixup for rows_per_strip, thanks Bubba +- removed the links feature, won't work with vips8 +- got rid of the tools/ subdirs +- added im_bufjpeg2vips() +- tiff reader can do 1, 2, 4, 8 bit palette images +- tiff palette read can do mono images +- im_bufjpeg2vips() has a "header_only" parameter +- added vips_image_get_data() +- updated German translation (thanks Chris) +- fixed typo in im_conv() overflow estimation which could cause errors +- vips.c has new action syntax, knows about vips8 operations +- add now has sizealike +- vips7 binops all do sizealike too, also gbandjoin and ifthenelse +- new API is now functional +- vips.c generates GOption flags for vips8 operations +- added im_gauss_dmask_sep() +- laplacian generator lost -ve lobes for large sigma +- added im_aconv(), approximate convolution +- bumped smalltile to 512x512 for testing +- added VipsPool, got rid of floating refs again, argh +- VIPS_EXEEXT is now part of the exported API +- im_blend() also does sizealike, oops +- jpeg write was not inverting CMYK, thanks Ole +- im_falsecolour() converts to mono 8-bit for you +- im_icc_import*/export*() cast inputs for you +- im_vips2tiff() uses im__temp_name() for intermediates +- added vips_wrap7 ... wrap up vips7 operations as vips8 classes +- man pages are back for commands + +30/11/10 started 7.24.0 +- bump for new stable +- added im_dmask2imask(), im_imask2dmask() +- im_rotate_*mask90() can do masks of any size (thanks Adam Turcotte) + +18/7/10 started 7.23.0 +- im_vips2bufjpeg() writes to a linked list, so it will work for any size + image and header +- added im_vips2bufpng() +- use GetTempPath() to pick a temp dir on Windows +- added "rd" mode to im_open() +- vipsthumbnail and vips use "rd" +- im_divide spots /0 +- remove liboil dependency, we will use Orc instead +- various small cleanups (thanks Tim) +- add lcms2 support +- VImage(filename) defaults to "rd" mode +- revise window_offset / window_size, again +- fix a mixup with ANY hints that caused performance problems on the main + benchmark +- rewritten im_circle as im_draw_circle, im_circle moved to almostdeprecated +- added IM_TYPE_RW args for inplace ops --- nip2 uses this to wrap inplace ops + automatically +- special-case 3x3 masks in im_conv() for a 20% speedup +- add IM_TYPE_RW flag for im__rw_image, helps nip2 auto-wrap inplace ops +- im_insertplace() casts and bandalikes +- copy iconv.m4 and friends in bootstrap, thanks Mike +- moved the stupid _copy() versions of the inplace ops to deprecated, since + nip2 can call inplace ops directly now +- added im_draw_rect(), moved im_paintrect() to deprecated +- added im_draw_image(), moved im_insertplace() to deprecated +- added im_draw_line(), now clips, moved im_fastline() to deprecated +- added im_draw_line_user(), now clips, moved im_fastlineuser() to deprecated +- added im_draw_mask(), now wrappable, moved im_plotmask() to deprecated +- added im_draw_point(), moved im_plotpoint() to deprecated +- added im_read_point(), now partial, moved im_readpoint() to deprecated +- added im_draw_smudge(), moved im_smudge() / im_smear() to deprecated +- convolution functions support complex images +- im_blend() can have any format condition image and it's converted to uchar +- security fix for vips-7.23 wrapper script (thanks Jay) +- im_affine() has a larger safety margin +- fix gtk-doc warnings +- small mask load/save improvements +- mask gtk-doc done +- add cfitsio dependency +- add FITS reader +- land the vector branch and the orc dependency ... we have SSE + erode/dilate/add/conv +- add IM_SWAP +- dilate/erode do (!=0) on non-uchar images +- add multipass Orc to im_conv(), 3.5x faster for 5x5 mask +- im_profile() works for any image format, any number of bands +- im_rank_image() works for mix of formats, bands +- morph gtk-doc done +- oops, missing braces in debug.h and util.h, thanks Laurence +- update C++/Python binding +- oop, bool constants are always (int) now, so (^-1) works for unsigned types, + thanks Nicolas Robidoux +- much lower memuse for im_cache() in complex pipelines +- im_scale_dmask() normalises to 20, not 100 ... we hit the fast + conv path more often + +12/5/10 started 7.22.2 +- the conditional image of ifthenelse can be any format, a (!=0) is added if + necessary +- oops vipsthumbnail sharpening was turning off for integer shrinks, + thanks Nicolas Robidoux +- im_vips2jpeg() could fail for very small images (thanks Tim) +- threadpool wasn't stopping on allocate errors (thanks Tim) +- vips_sink_disc() could block if allocate failed (thanks Tim) + +12/5/10 started 7.22.1 +- fix a problem with tiff pyramid write and >1cpu, thanks Ruven +- constant ops clip to target range +- oops, moreconst and moreeqconst were the same +- better buffer handling in sinkdisc for single-line images +- less chatty errors from "vips" +- oops, don't rename "copy_set" as "copy_", thanks Ole + +12/5/10 started 7.22.0 +- bump and rename +- vipsthumbnail has a manualpage and sharpens correctly +- more interpolator work +- fixes to --disable-cxx mode (thanks Mike) +- added German translation, thanks Chris Leick +- fixed typos in some messages, thanks Chris Leick +- fix gettext startup +- all "colour" in messages changed to "color", have a proper en_GB + translation file +- vipsthumbnail delete profile failed if there was a profile +- interpolate cli unref was broken +- more accurate, slightly faster bilinear and bicubic (thanks Nicolas Robidoux) + +21/3/10 started 7.21.3 +- added progress feedback to threadpool +- --vips-wbuffer2 switch does all wbuffer use now +- im_wbuffer2() renamed as vips_discsink(), some cleanups +- im_gammacorrect() can do 16-bit images too +- im_histplot() could fail for signed int histograms +- im_fwfft() and im_invfft() could free their output image too early +- added im_local_imask(), im_local_dmask() +- added im_mpercent_hist() +- im_maplut() casts the index image to one of the uint types +- fixed a couple of /0 problems with scale == 0 masks +- set G_LOG_DOMAIN to VIPS so we can use g_warning etc. +- added VIPS_DEBUG_MSG() macro +- --vips-wbuffer2 turns on threadpool for im_iterate as well +- im_vips2tiff() uses vips_sink() instead of threadgroup +- strip out threadgroup +- add --enable-debug=xxx flag +- im_iterate() -> vips_sink() +- better number-of-bands detection for im_magick2vips() +- added im_get_argv0() +- added PFM read / write + +16/1/10 started 7.21.2 +- "invalidate" is careful to keep images alive, so invalidate callbacks can do + im_close() +- flood_blob could loop if start point == ink +- added im_meta_remove() +- added remove profile option to vipsthumbnail +- added vips_bandfmt_iscomplex() and friends, im_iscomplex() and friends + deprecated +- im_bandjoin()/im_gbandjoin() work with images of varying formats +- added im_copy_native(), deprecated im_copy_from() and friends +- im_check*() name rationalisation +- finally removed old flood stuff +- im_insert*() bandalike and formatalike +- im_*join() bandalike and formatalike +- im_ri2c() bandalike +- im_vips2png() saves 16-bit PNGs, if necessary +- vipsthumbnail has selectable interpolators, optional sharpen +- moved a lot of stuff (eg. im_iscomplex()) from deprecated to + almostdeprecated to avoid breakage +- im_csv2vips(): allow lines that end with EOF rather than \n +- im_vips2tiff has a bigtiff option +- oops, im_lineset() needs to ask for WIO of mask and ink +- move cache invalidation to REGION, fixes a race +- don't im_invalidate() after paint, it can cause horrible performance + problems ... for example, im_plotmask() used as the action operator for + im_fastlineuser() is terrible +- instead, users of the inplace operations need to call im_invalidate() at the + end of a set of paint actions to trigger an update +- parent/child renamed as upstream/downstream in DAG +- set VIPS_ICC_DIR in configure +- ICC profiles are looked for in VIPS_ICC_DIR as a fallback +- im_render() mask image generation no longer triggers image calc +- threadgroups scale output buffers with number of threads for smalltile ... + improves SMP scaling for narrow images on many-way machines +- default to max number of processors (--vips-concurrency and IM_CONCURRENCY + set >0 can override) on linux and win32 +- better nprocs guesser +- im_render() fixes to help the paintbox, some speedups too +- added im_wbuffer2(), a new distributed threading system, and --vips-wbuffer2 + to enable it, thank you Christian + +15/1/10 started 7.21.1 +- added "written" callbacks, used to implement write to non-vips formats + +26/11/09 started 7.21.0 +- branch for new dev cycle +- argh, missing init from colour.c (thanks Peter) +- argh, im_measure() was not looping over bands correctly (thanks Peter) +- removed mmap_limit, we now always use windows ... reduces VM use hugely, + because mmap windows are freed when their regions are freed, while images + are only unmapped when they are closed +- have a min bytes for mmap windows as well, so we don't make too many tiny + windows +- im_disp2Lab() was broken +- deprecated.h is now defined in terms of current functionality, rather than + repeating stuff +- im_flood() and friends rewritten, typically 4x faster +- removed --with-cimg option, added --disable-cxx +- added im_system_image() (thanks Roland) +- added postclose callbacks +- added vipsthumbnail +- oops, generate C++/Python wrappers for deprecated operations by default +- read TIFF images strip-wise, not scanline-wise +- better TIFF YCbCr reading (thanks Ole) +- isanalyze generates fewer silly error messages + +26/11/09 started 7.20.3 +- updated en_GB.po translation +- file_length is gint64 to avoid win32 breakage + +23/11/09 started 7.20.2 +- GETTEXT_PACKAGE now includes lib version number (thanks Jay) + +11/11/09 started 7.20.1 +- oop, im_clip2fmt() was missing PTOP flag, should get a small speedup +- im_conv() / im_convf() didn't like all-zero masks +- small updates to im_convf() from im_conv() +- im_read_imask() produced an incorrect error message if passed a doublemask +- rename im_convf(), im_convsepf() as _f() +- vips.c drops _f suffix when overloading +- regenerate C++ binding, don't make deprecated package + +9/11/09 started 7.20.0 +- removed vips-7.x.spec.in, shouldn't really have this in SVN +- bumped version to 7.20 +- fixes to get "make dist" working again + +3/4/09 started 7.19.0 +- version bump +- tiny conv speedup +- catch lcms error messages +- fix includes for gtk+-3.0 +- report virtual memory too in im__print_all() +- cosmetic changes to nohalo +- im_magick2vips() needs to invert alpha +- now (more or less) passes -Wextra +- added "fail" option to im_jpeg2vips: fail with an error on any warning + (thank you Ole) +- started gtk-doc changes +- renamed im_meta_get_type() and im_header_get_type() as + im_meta_get_typeof() and im_header_get_typeof() to prevent confusion with + GObject type definers (was breaking gtkdoc object scan) +- revised more names, limited documented API +- im_buildlut() could segv for non-zero based tables (thanks Jack) +- VIPS_BUF_STATIC() does not take length arg +- check for SetImageOption() so we work with GraphicsMagick too +- "header" sets a non-zero exit code if anything failed +- add and use im_check_uncoded() and friends +- matlab load handles column-major and plane-separated images (thanks Mikhail) +- JPEG save allows "none" for profile, meaning don't attach a profile +- saner, simpler, faster typecasting for im_add(), im_subtract(), + im_multiply(), im_divide(), im_remainder() +- im_remainder() has a float result for float types +- im_measure() allows sel == NULL, meaning all patches +- added "deprecated" package +- faster, simpler, better im_max(), im_min, im_avg(), im_deviate() +- im_max() returns true modulus, not square of modulus, for complex images +- im_avg() works for complex, returning average modulus +- im_system() fix (thanks Roland) +- im_system() rewrite +- im_maxpos()/im_minpos() are partial and work for complex +- im_max()/im_min() are now convenience functions +- im_maxpos_avg() handles complex and multi-band images +- added im_point(), rewrite im_point_bilinear() in terms of this +- close callbacks now happen *after* images have closed resources (such as + open files) ... this lets them delete temps and stuff. Expect breakage :( +- added vips_interpolate_get_window_offset() +- boolean revised: smaller, more general, faster +- im_remainderconst_vec() renamed to im_remainder_vec() for consistency +- added im_shift*_vec() +- renamed im_eor_vec() as im_eorimage_vec() for consistency, also and, or +- renamed im_eorconst() as im_eorimage_const() for consistency, also and, or +- relational revised: smaller, more general, faster +- im_blend()/im_ifthenelse() allows many-band conditional, 1-band then/else +- im_blend()/im_ifthenelse() allows band and format to differ between then + and else parts +- better im_check() functions +- added im_flood_other() as start of simple segmentation operator +- added im_label_regions() +- im_printlines(), im_debugim() deprecated (use im_vips2csv() instead) +- meta, header, callback, error, region, check, generate, memory gtkdocs +- removed printlines tool, vips2csv is much better +- removed other useless tools as well: debugim, binfile +- fix up addr calcs on 64-bit machines with >2gb images and inplace ops + (thanks Christoph) +- im_generate() checks that im_demand_hint() has been called for this image +- im_jpeg2vips.c, set scale_num on shrink (thanks Guido) +- heh argh reading history always stopped after the first line (thanks Haida) +- added im_histindexed +- new im_iterate() calls start and stop functions from workers so resources + they make are owned by the worker thread ... this makes it possible to have + start functions which create mutiple regions and therefore allows + im_iterate() to scan more than one image at once +- threadgroup no longer has any default action, you must attach a work + function +- added im_copy_file() +- added im_insertset() +- im_insertplace() allows small to be outside big +- added im__colour_difference(), colour ops now work on any image format +- added im_col_display_get_table(), so display tables are now shared by name +- added im__colour_unary() +- drop "set" postfix from names, so "insert" can now take a vector of positions +- deprecate all the "_raw" variants, not really necessary now +- removed "contrib", not very useful anymore +- added im_header_as_string() +- im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes confusion + over whether to use im_free() or g_free() for things like im_header_string() +- added im_history_get(), im_getexp(), im_printdesc() as wrapped functions ... + so you no longer need the "header" program +- image vectors from Python work, woo + +25/3/09 started 7.18.0 +- revised version numbers +- updated vipsmanual +- revised manpages +- removed name and "changed" from vipsobject since we don't use them yet +- explicitly link with stdc++ for nohalo etc. stuff +- wrap im_gauss_imask_sep in C++/Python + +6/3/09 started 7.17.3 +- revised nohalo +- remove fading stuff from im_render() -- cleaner and simpler +- configure spots support for "restrict" +- reset dcm:display-range on magick read to help DICOM +- saner im_buildlut() behaviour +- added im_gauss_imask_sep() +- allow open and view of truncated images (thanks Joe & Rachel) +- revising rounding on im_affine*() coordinate transforms to make them more + stable +- added Radiance write +- added im_float2rad() +- added IM_CODING_RAD, support where it makes sense (extract, flip, rotate, + etc.) +- IM_PROGRESS env var +- docs for rad2float and IM_CODING_RAD + +3/3/09 started 7.17.2 +- im_magick2vips.c: allow funky bit depths, like 14 (thanks Mikkel) +- isradiance was returning TRUE too often +- radiance loader now loads packed RGBE/XYZE instead of unpacking to float +- added im_rad2float() + +11/10/08 started 7.17.0 +- merge vips-7.16 brach back into trunk +- bumped version number to 7.17.0 +- re-added type.[hc] +- added vipsinterpolate and im_affinei +- added yafrsmooth interpolation +- added yafrtest +- added yafrnohalo +- ubuntu 8.10 changes +- interpolators get an output pointer, not region +- tuning for bicubic +- revised transform / clip code, we now do corner not centre +- yafr-smooth reworked along the lines of bicubic +- cleanups after yafr hacking +- added affinei_all +- don't set im_error() on failed callback +- moved im_format_t to VipsFormat, now sits over VipsObject +- IM_FORMAT_FLAG_PARTIAL -> VIPS_FORMAT_PARTIAL +- updated docs +- interpolators use type introspection +- added vips --list classes, does formats too +- include sys/param.h to get PATH_MAX in more places +- added vips_format_get_flags() +- oop, forgot to check for cancel during tiled tiff write +- don't use mmap for tiff read: no performance advantage, chews up VM +- VIPS_INTERPOLATE_SHIFT bumped to 12, we need the extra precision for u16 gel + data +- added string->double transform for cmdline args +- merged class-params branch back into trunk +- IM_FREE() can do "const char*" variables +- im_buf_t renamed as VipsBuf +- added vips_object_to_string() +- added "nickname" and "description" properties to VipsObject +- shift/and/or/eor ops were broken for non-int types +- added nohalo interpolator +- updated format docs +- IM_INPUT_INTERPOLATE() now used by affinei and affinei_all +- added vips_object_new +- resamplers/interpolators now in a resample package +- removed yafrnohalo.c +- added matio as a dependency +- added Matlab save file read +- added Radiance file read +- better file-not-found messages + +11/9/08 started 7.16.3 +- oop typo in manpage for im_project() +- doc fixes +- returning non-zero from eval callbacks was not always stopping computation + +11/9/08 started 7.16.2 +- added --without-v4l option +- added -no-undefined to libsrcCC build, so we get a libvipsCC.dll +- removed the swig dependency: we include the generated bindings in the + distribution tarball + +6/9/08 started 7.16.1 +- trigger eval callbacks on tiled tiff write +- added vips as an im_format_t +- added im_format_write()/_read() convenience functions +- more cleanups for the format API, argh +- removed win32/ directory now mingw finally makes DLLs correctly +- removed the windowed spcor for now, it has some edge effects + +24/8/08 branch for 7.16 +- renames and version numbers +- load plgs from libdir as well as libdir/vips-x.x for compat +- complex -> complex conversion was broken +- refstring <-> gstring transforms +- better behaviour with Magick non-presence +- added --enable-links switch to configure ... we no longer make the bin/im_* + links by default +- started a 'format' section in the docs +- configure fails if no gettext found +- revised po/ +- released as 7.16.0! + +25/5/08 fork for loadable image format branch +- image load/save in non-vips format code moved to own dir +- simple format searching added +- some cleanups for vips load +- im_open() simplified +- add im_format_flags +- only consider formats with a save method in im_format_for_name() +- oops, format sort order was reversed +- im_filename_suffix() includes "." in suffix +- merge back into trunk for 7.15.1 +- remove im_ispng(), im_png2vips_header() etc. & friends +- add "vips --list formats" +- rename VBuf as im_buf_t for consistency +- add type.[hc], start of new type system +- removed man pages for IM_MIN, MAX and RINT to avoid case confusion on + OS X / win + +7/3/08 started 7.15.0 +- MAGIC constants should be tagged as unsigned +- write MAGIC correctly on sparc/powerpc machines (thanks Joe) +- oop, we were still making fade threads even when not fading +- tiny cond jump fixes for valgrind in colour.c +- remove -lstdc++ from libs, except on windows +- push Magick cflags earlier in the include order to make it easier to pick + GraphicsMagick over ImageMagick (thanks Mikhail) +- fix the en_GB translation +- use meta to preserve resunit between tiff load and save +- small doc improvements +- read and write CMYKA tiff (thanks Doron) +- performance improvements for morphology ops, esp. when zooming out +- oop, im_render() was broken for mask == NULL +- better support for multiple Python installs (thanks Jay) +- better IM_SETSTR() stops some warnings +- im_histcum() works for signed histograms +- better rounding for im_conv(), im_convsep() +- tiny speedup for im_conv() +- better /0 test for remainderconst +- revise i18n configure, get rid of intltool +- command-line IMAGVEC input could segv with non-vips image output +- added .tobuffer()/.frombuffer(), .tostring()/.fromstring() to Python binding +- add PIL_mode_from_vips () and vips_from_PIL_mode () utility functions +- update docs for new Python stuff +- FIND_ macros no longer search for stuff, you have to specify prefixes if the + packages are not on the default path (or in $prefix). This avoids some + accidents on some platforms +- configure prints a summary of optional packages found at the end +- im_lhisteq() checks for window too small +- added invalidate callbacks +- now tests for MagickWand before ImageMagick (thanks Adam Turcotte) +- added "-rotate" option to vips2dj +- added man page for im_resize_linear +- better jpeg-in-tiff YCbCr read (thanks Ole) +- oops, invalidatefns were not being freed on im__close() +- VMask() can init from std::vector, so Python can init from [] +- added IM_LIBDIR, im_guess_libdir() +- load plugins from libdir/vips-x.x on startup +- added meta get/set int/double/string/area/blob/GValue to C++ API +- include time_t in vips.h, thanks Nicolas Robidoux +- lock global image list (thanks lee) + +25/1/08 started 7.14.0 +- bump all version numbers for new stable +- better CMYK JPEG read (thanks Ole) +- add __str__ to VError in Python (thanks Ole) +- revert the dynamic wrapping for Python :-( next version! +- added VImage::convert2disc (thanks Ole) +- you can now set the jpeg quality factor for tiff pyramids (thanks Joe) +- you can now shrink jpegs during read, see "man im_jpeg2vips" +- added CMYK JPEG write +- optionally use GraphicsMagick (thanks Bob Friesenhahn) +- look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel) +- set icc profiles in tiff pyramids explicitly (thanks Joe) +- add --without-cimg configure option +- add im_maxpos_subpel +- make im_abs compile without liboil +- add im_align_bands +- fix type overflow in complex division +- fix im_cross_phase and im_addgnoise (Tom) +- updated docs, C++ and python +- header no longer stops on error +- C++ dummy2.cpp helps OS X linking + +12/12/07 started 7.13.3 +- added "include " to VImage.cc to help gcc 4.3 +- started moving the python binding to dynamic wrapping +- added im_wrap(), im_wraptwo(), im_phasecor_fft(), im_cross_phase() (Tom) +- memleak plugged in im_save_string_setf() +- bugfix in and docs for im_gradcor() (Tom) +- use Glib macros to make im_msb work on big-endian platforms (Tom) +- use Glib macros to get rid of needless compile warnings (Tom) +- fix type overflow in im_c2ps/im_abs (Tom) + +31/10/07 started 7.13.2 +- build cimg on windows fixes +- various include cleanups, updated man pages +- break im_wbuffer() out to a separate API +- use im_wbuffer() to make im_vips2jpeg() compress in the background +- also im_vips2png(), im_vips2tiff(), im_vips2ppm() +- revised evaluation progress system +- new evalstart/evalend/preclose callbacks fix over/underflow reporting +- but the meaning of evalend has changed in a non-backwards-compatible way :( + use preclose instead ito get the old behaviour +- added "--vips-progress" flag to turn on a simple eval progress tracker +- make im_spcor[12] static, im_spcor is wrapper (Tom) + +28/9/07 started 7.13.1 +- vips2dj can print RGB images +- oop, include missing +- add protos for generate/iterate function args, fix warnings +- add cimg package, we now have C++ source inside VIPS, sigh +- added OUTPUT_DOUBLEVEC and OUTPUT_INTVEC, use for im_maxpos_vec() and friends + +29/8/07 started 7.13.0 +- we now have a trunk and the version is 7.13.x, woo! +- move manpages into a separate man/ dir ... speeds up builds a lot on windows +- don't install malkovich +- don't fail on unknown args for python (thanks Simon) + +1/8/07 started 7.12.5 +- im_embed() is more general ... x and y can be negative +- predicate.c is smaller and cleaner +- libsrcCC link improvement from Pablo +- support 32/64-bit ImageMagick as well (thanks Marcel) +- better im_magick2vips() for Q8 ImageMagick +- split repository to trunk/branches ready for a stable 7.12.x branch + +27/7/07 started 7.12.4 +- proto.h had vars called small, breaking on win32 +- more python fixing, we now have working matricies too + +17/7/07 started 7.12.3 +- fix to VImage.i for gcc 4.2 (thanks Damir) +- eek, off by 1 for more than 1 band hists +- needed a slightly larger worst-case buffer in im__b64_encode() +- tiny cleanup for make_hI() prevents cond jump on ui in valgrind +- --disable-threads was broken again +- remove .svn dirs from dist +- now passes distcheck again + +17/7/07 started 7.12.2 +- added im_bandmean() +- added support for TIFFTAG_PREDICTOR (Andrey Kiselev) +- fix TIFFOpen() mode snafu (Andrey Kiselev) + +11/5/07 started 7.12.1 +- memory.c abort()s with DEBUG +- oops, im_bits_of_fmt() manpage was not being installed +- im_histcum() can do all image types +- updated NEWS +- added im_csv2vips_header() +- command-line csv read was broken (thanks Tom) +- removed length limit on argument vectors (Tom) +- added IM_PREFIX, configure-time install prefix +- oop, turned off memory.c DEBUG +- fix some bogus gcc 4.1 warnings with im_open_local_array() +- better vips usage message +- oops, IM_ANY missing from im_demand_hint() manpage (thanks Shahid) +- just warn if plugins fail to load in im_init_world() +- expose Vargv and make refblock public rather than private so that + subclasses of VImage can add vips-style member operations (thanks Pablo) +- oops, im_initdesc() needed to have bbits set correctly (thanks Shahid) +- make VError derive from std::exception more officially +- woo, got exceptions working in SWIG +- soname version bumped to 12.x.x +- oops, added vector ops to Python +- check for overflow of int in return of strtol in dispatch system (Tom) +- add im_[di]mask_[xy]size to dispatch system (Tom) +- add im_gradcor(), im_grad_[xy] (Tom) + +26/3/07 started 7.11.21 +- ooo, added %include "std_except.i" & friends to VError.i, VImage.i +- im_init_world() is more lenient about recursive invocation +- im_gbandjoin() falls back to im_copy() for 1 input image +- race condition fixed in im_render.c (thanks Simon) +- bump for 7.12!!! + +26/1/07 started 7.11.20 +- another fix to im_region_image() (thanks Mikkel) +- tiny speed up to im_rect_includesrect() +- avoid recursive invocation in im_init_world() (thanks Christian) +- fix to extract_prefix (thanks Christian) +- buffer cache is now per thread +- combine buffer unref and ref in a single operation to reduce malloc/free + cycles +- new internal API for passing regions between threads means we can remove + buffer locks +- more buffer/region sanity checks, plus a memory barrier +- lock around error buffer changes +- im_vips2mask() was wrong for nx1 m-band images +- liboil back to "test" +- add buffer_cache_list to avoid GHashTable _insert()s +- oop, --vips-concurrency was broken +- renamed (in dispatch layer) im_and/or/eor_const -> im_and/or/eorimageconst + for consistency +- C++ API wraps IMAGEVEC, DOUBLEVEC, INTVEC arguments +- oop, IMAGE % vector was broken + +21/12/06 started 7.11.19 +- added im_linreg() (Tom) +- various C++ API polishes, plus a bugfix (Dennis Lubert) +- vips.spec split to devel and python too (Dennis Lubert) +- be more explicit about sizeof(magic) +- init magic to native order by default (thanks Dennis) +- Hist becomes im_history_get() +- new history mechanism is faster, uses much less memory, and removes + duplicate lines +- added im_get_option_group() +- added official im_concurrency_set()/_get()() +- don't read bbits from vips files ... set ourselves from bandfmt +- oops add RGB16 and GREY16 to C++ header +- --list packages option to vips.c +- updated docs to 7.12 +- oops, im_region_image() snafu was causing a lot of recomputation +- make im_mpercent() suck a little less +- EXIF save was a bit bOrked ... cause of mac crashes? +- im_histgr(), im_heq(), im_hist() all number bands from zero now +- fix stride in liboil calls +- set RGB16 on 16-bit RGB ICC export + +29/11/06 started 7.11.18 +- added im_buffer_t so regions can share calculated pixels: 2-3x speedup on + the benchmark +- im_region_local() -> im_region_buffer() +- im_sharpen() order change to help sharing +- im_invalidate() clears buffer caches +- add sentinel attributes +- add some missing im_demand_hint()s +- paint ops invalidate the output image +- fix nothread eval +- raise threads limit to 1024 (thanks Christian) +- manual redone +- vipsCC python init() hooks +- add liboil dependency +- use liboil for im_abs(), im_add(), im_divide(), im_floor(), im_multiply(), + im_subtract(), im_lintra(), im_avg(),im_deviate() +- quiet libtoolize test (thanks Tom) +- im_benchmarkn now regrows image each time +- strip meta from sample2.v ... saves a lot of mem (esp. Hist) +- added im_isscalar() (Tom) +- added IM_REGION_ADDR_TOPLEFT() (Tom) +- reduce size of im_rightshift_size.c to help compile (Tom) +- make im_stop_many(NULL) safe (Tom) + +24/11/06 started 7.11.17 +1;5Q +- better benchmark script makes graphing easier +- double-buffer image file writes +- reuse write threads +- clean up threadgroup / iterate / generate +- added im_benchmarkn to make it easier to make a CPU-bound op on large + machines +- im_cache() failed for cpus > 1 + +1/11/06 started 7.11.16 +- moved im__convert_saveable() into im_copy() (thanks Christian) +- missing gobject dependency (thanks Christian) +- --enable-threads was broken (thanks Christian) +- eval without theads was broken (thanks Christian) +- LIBADD libvips.la to libvipsCC.la (thanks Simon) +- benchmark.sh is now plain sh, not bash +- set ORIENTATION_TOPLEFT in im_vips2tiff (thanks Josef) +- oops, im_vips2csv() output separator was broken +- added im_benchmark2 +- move XYZ2Lab LUT build outside the eval thread + +30/10/06 started 7.11.15 +- print leaked windows +- oops, race condition in im_window_unref() +- integrated im_region_window() into im_region_image(), tiny speed up + +6/10/06 started 7.11.14 +- ifthenelse and affine dhints revised +- buildlut no longer outputs x cods +- configure asks for glib >= 2.6 (we need GOption) +- configure uses AC_TOOL_CHECK to find tool names to help cross-compiling. +- better configure test for libexif +- add C++ include ... include in a namespace +- added im_benchmark / SMP benchmark script +- add im_maxpos_avg() and im_point_bilinear() (Tom) +- make im_region_free(NULL) safe (Tom) +- link in manpages for im_contrast_surface (Tom) + +8/9/06 started 7.11.11 +- add im_norm_dmask() +- removed old code for gradient and lindetect +- internal decls split from proto.h to help SWIG +- test for python and SWIG during configure +- added python dir for the binding +- python binding done! +- oops, --without-python was broken (thanks Tom) +- added python/test +- add im_lu_decomp() im_lu_solve(), rewrite NR type functions in terms of these (Tom) + +23/6/06 started 7.11.10 +- still more im_affine() rounding/clipping tweaks +- ignore "--" arguments to vips.c +- im_init_world() also sets g_*_prgname() and loads plugins +- add manpage for im_init_world() (oops) +- error_exit() prints prgname +- various cygwin fixes +- fix cache thread assert failure (thanks Joe) +- "header" now uses GOption, slightly different args, will loop over args +- fixed assert() overenthusiasm in im_prepare() +- im_csv2vips() now has separate whitespace / separator tables +- add im_rightshift_size() (Tom) +- add im_maxpos_vec(), im_minpos_vec() (Tom) +- add im_norm_dmask() (Tom) +- make im_free_[di]mask(NULL) safe (Tom) + +23/6/06 started 7.11.9 +- back on sourceforge CVS again +- require openexr 1.2.2 or greater +- range check xy on im_insert*() for sanity +- VMask::invertlut decl removed (thanks Jean) +- added \"all\" option to vips.c + +17/5/06 started 7.11.8 +- debrokened openexr read +- added im_tile_cache() +- added tiled read to im_exr2vips() +- im_tiff2vips() now uses im_tile_cache() rather than its own cache ... + faster in some cases, less RAM use in some cases, saves 200+ lines +- removed 'broken' read option from im_tiff2vips() +- read/write doubles with g_ascii_strtod() and friends where appropriate +- add a "thread" member to region to help sanity check region ownership +- saner threadgroup fixes a race problem on gcc 4.0.3 / amd64 +- added im_vips2csv() +- im_open() now does CSV read/write too +- oops, broke vips main prog for function name in argv1 case + +22/4/06 started 7.11.7 +- split vips_png.c to im_vips2png.c and im_png2vips.c +- added OpenEXR dependency +- added im_exr2vips(), im_exr2vips_header() +- added im_isexr(), im_open() knows about OpenEXR +- added im_contrast_surface(), im_contrast_surface_raw() (Tom) +- added im_msb(), im_msb_band() (Tom) +- im_scale() sets Type on output +- added RGB16, GREY16 types +- im_*2vips() set these types if appropriate +- configure fixes for mac +- vips main prog uses GOption +- im_icc_* locks around calls to cmsDoTransform() to avoid corruption on SMP + machines +- add im_prepare_many() (Tom) + +10/3/06 started 7.11.6 +- typo in manpage and header for im_rect_dup() (Tom) +- don't abort image load if XML read fails +- added im_video_test() ... test video source +- oops, lcms .pc finder was not working +- clipping problem in im_affine() fixed (thanks Clare) +- test for attr support in libmagick +- im_text() returns an error for empty string +- im_falsecolour() scale reversed +- im_remosaic() could crash on bad mosaics +- configure changes to fix --without-magick, lcms and fftw (but sadly we now + require .pc files for these libs) +- im_vips2jpeg() automatically converts to 1 or 3 band sRGB uchar for write +- also im_vips2png() +- added im_project() + +20/2/06 started 7.11.5 +- added im_csv2vips() +- commas in filename options can be escaped with a '\' +- raise tile buffer limit (thanks Ruven) +- im_spcor() and im_fastcor() have prettier borders +- im_fastcor() returns sum of squares of differences, not sum of abs of + differences + +18/11/05 started 7.11.4 +- small win32 fixes, thanks Juan +- added im_flood_blob_copy() ... a temporary hack +- much faster im_histplot() +- read RGBA palette-ized PNG images more robustly (thanks Tom) +- turn on -ms-bitfields automatically for mingw + +26/9/05 started 7.11.3 +- better error recovery for im_binfile() file too large +- all raw files now use mmap windows, so (eg.) ppm and analyze reads can go + >2GB +- remove DISABLE_COMPAT ... you now have to define IM_ENABLE_DEPRECATED to get + broken #defines +- fix to build without exif, thanks Chas +- use native win32 API for seek()/truncate() to work with large files +- use attribute to check printf-style args with gcc +- fix gcc4 warnings +- removed ebuild, since it's in gentoo now +- im_magick2vips() sets meta from attributes (good for dicom) +- im_magick2vips() writes many-frame images as tall thin VIPS images +- im_histcum() was broken for vertical histograms +- im_histnorm() is neater +- simpler and faster inner loop for im_conv() and im_convf() avoids gcc4 bug +- appendc() was reading past the end of the buffer on MSB machines + +13/6/05 started 7.11.2 +- im_copy_set() was messed up in 7.11.1 +- put into CVS, phew +- fixed a rounding bug in im_affine() ... should no longer get black edges on + image resize +- if TIFF open fails in im_open(), try going through libmagick +- merge requires all bands == 0 for transparency (used to just check 1st + band) +- 16 bit LAB TIFF read/write was wrong +- new GType for refstring makes it visible from im_header_map() +- jpeg loader attaches exif data (and human-readable meta fields) +- jpeg saver writes any exif data +- meta not wiped by im_*incheck() in a "w" image +- meta keeps traverse order +- now require glib >= 2.4 +- require libxml-2.0 for meta save and new history mechanism +- no more .desc files, history saved in XML after pixel data +- i/s/d meta fields saved there too +- added base64 encode/decode +- added blob header write +- added a save string type: types which define transforms to and from the + save format get serialized +- GValue meta API now exposed, since we can serialise anything +- jpeg loader loads ICC profiles +- jpeg saver saves ICC profiles from the VIPS header +- src/header.c knows about meta system +- added im_analyze2vips(), im_grid(), im_raw2vips() +- extract/grid/replicate/zoom were not setting TRANSFORM flag +- better falsecolour LUT +- less stupid + more portable read/write of VIPS header +- better im_updatehist() +- jpeg load sets vips xres/yres from exif, if possible +- jpeg save sets exif xres/yres from vips, if possible +- icc_export and icc_transform attach profiles and intents to output images +- added im_icc_import_embedded() to import with an embedded profile +- split vips_jpeg.c into two, it was getting too big +- added im_cp_descv(), im_cp_desc_array(), funcs use them +- removed im_append_Hist() from API +- fixed meta copy bug +- better history copy, removed nonsense about 1st line of Hist being special +- tiff read/write now reads/writes ICC profile from meta +- edvips rewritten to remove stupidness, and can now set xml +- header can now print xml extension block +- IM_ prefix for colour temp names + +1/6/05 started 7.11 +- added im_copy_morph() +- im_region_region() allows Bands and BandFmt to differ, provided + sizeof( pel ) is the same ... makes im_copy_morph() work +- added im_meta*() functions (MW) +- im_header_*() rewritten for meta +- added im_header_exists(), im_header_map() +- use pkg-config to find libpng and ImageMagick +- added im_lineset() +- added im_extract_areabands() (JF) +- added im_copy_from() (JF) + +15/4/05 started 7.10.12 +- im_ifthenelse just evals left/right for region all zero/all one +- also im_blend +- swap g_setenv() back to plain setenv() so we work with glib 2.2 + +9/4/05 JC started 7.10.11 +- docs no longer have broken links +- fixed memleak in im_text() + +8/4/05 +- one bit tiff read was sometimes reading a byte too far in each scanline + +14/1/05 started 7.10.9 +- im_filename_split() will now usually work for filenames containing ':' + characters +- added im_render_fade() for fancier nip2 image repaint +- added "ccittfax4" as a TIFF compression option +- fix all 64-bit compiler warnings +- "," allowed as column separator in mask read +- better at spotting singular matricies +- small im_render() tidies +- glib dependency reduced to just 2.0, but untested ... helps people building + on older systems who aren't interested in nip2 +- removing leading spaces from IMAGEVEC arguments +- load non-interlaced PNGs more efficiently +- 1 point mosaic functions work on more image types +- better memory allocation debugging info +- local memory on regions can shrink as well as grow +- shut down threadgroups on render if no dirty tiles +- limit number of simultaneous renders +- higher mmap window threshold +- allow max == -1 for unlimited render cache +- 'priority' marks non-suspendable renders +- im_embed() mode == 4 paints white pels +- im_tiff2vips() was broken with --disable-threads +- oops, im_errormsg() compat macros were GCC only +- larger default tile size and strip height +- tiff write sets PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can + write float LAB as well as float RGB (thanks Ruven) +- also 16 bit LAB TIFF write +- im_render() rewritten + +20/11/04 started 7.10.8 +- im_sharpen() is ~15% faster +- more quoting for MAGICK finder +- im_XYZ2Lab() uses a LUT rather than cbrt(), 5x faster +- --disable-threads removes gthread dependency completely (thanks Simon) +- intercept TIFF warnings as well as errors ... stops occasional libMagick + exceptions +- add im_init_world() to im_init() as well to help backwards compat (thanks + Simon) +- im_icc_present() function description was broken, thanks Jay +- oops, libtool library versioning was wrong, thanks Jay +- can now make TIFF pyramids of any non-complex image type (was uchar and LAB + only), thanks Ruven +- 1st order mosaic code now works for LABQ too +- build system changes to make "make distcheck" work +- RPM .spec files fixed up and updated by configure (thanks Simon) +- tiny cleanups for vdump +- use g_setenv()/g_getenv() +- tiny improvements to IM_FREE*() +- tiny VImage debug print fixes (thanks Jay) +- swap off_t for gint64 to fix LARGEFILE support on win32 +- computation feedback now uses gint64 for number of pels, so we give feedback + correctly on images with >2**31 pels +- other small fixes for >2**31 pels in an image + +10/11/04 started 7.10.7 +- im_histnD() was not checking BandFmt (thanks Kirk) +- improvements to threading system speed up non-vips output in some cases +- use cbrt(x) where we can ... 10x faster than pow(x,1.0/3) on win32 +- typeo in im_text() when built without PANGOFT2 (thanks Stefan) + +1/11/04 styarted 7.10.6 +- tiny doc fixes +- scripts now only depend on 'vips' program +- im_open( "r" ) is now lazier ... for non-VIPS formats, we delay read until + the first ->generate() +- so im_open_header() now deprecated since im_open("r") is identical +- now looks for fftw3 as well as fftw2 ... slightly faster ffts + +19/10/04 started 7.10.5 +- fix to light_correct (thanks Jay) +- edvips knows about xoffset/yoffset +- better vips enum<->char conversions + +4/10/04 started 7.10.4 +- man page fixes (thanks Jay) +- removed last csh scripts (thanks Jay) +- scripts default VIPSHOME to $prefix (thanks Jay) +- doc build system tidies +- im_rank() edge padding was wrong +- im_vips2tiff() can now embed ICC profiles + +22/9/04 started 7.10.3 +- mildly better im_vips2tiff() +- *, -, +, /, % between two images now work for mixed number of bands +- im_free() was missing a man page +- revised documentation + +1/9/04 started 7.10.2 +- C++ .pc files were still set for 7.9, grr +- im_insertplace() didn't check compatibility of images (thanks Matt) + +27/7/04 started 7.10.1 +- set default stack size explicitly to help platforms with a very low default +- 16 bit RGB tiff read was broken (bug introduced in 7.9.5, thanks Haida) +- !pangoft2 was broken, thanks Kenneth +- win32 build fixes + +12/7/04 renamed as 7.10.0 +- added NOCACHE function flag ... stops nip memoising video & paint ops +- added im_extract_bands() ... takes out many bands from an image +- im_vips2tiff() scanline write speed up for area pipelines + +10/6/04 started 7.9.6 +- tiny polishing of im_ppm2vips() +- im_blend() can now work on labq +- boolean ops all work on float/complex images (by casting to int) +- im_maplut() was broken for 1 band image + many band lut + >8 bit output +- im_lintra_vec() now handles 1 band image and many band vector to make many + band image +- oops, im_lintra_vec() was missing a man page +- im_measure() can work on labq +- im_lhisteq() uses new embed mode, _raw() version is one pixel smaller, sets + Xoffset/Yoffset for new origin scheme +- generalised im_tone_build() to any image type to make im_tone_build_range() + +20/5/04 started 7.9.5 +- tiff output res can be a single number too +- added im_text() to make a bitmap from a string with pango +- im_tiff2vips() does 16 bit RGBA +- im_binfile() was broken since 7.9.2 due to im_mapfile() change +- im_ppm2vips() now works for 16 bit images +- added im_copy_swap() ... copies, reversing byte order +- im_resize_linear() was broken for some images, thanks Javi + +8/3/04 started 7.9.4 +- oops, config.h include missing in a few places +- im_vips2tiff() can now write 1 bit images +- im__find_lr/tboverlap() now exported to nip +- better edge tile handling for tiff read/write (thanks Ruven) +- added extend-pixels-from-edge mode to im_embed() +- im_conv*(), im_rank(), im_stdif(), im_dilate(), im_erode() all use it to + expand their input, so their output now has guess borders, not black borders +- im_fastcor() now does an im_embed( 1 ) on the output ... the zero borders + were very annoying before, since you would usually be searching for the + minimum point +- no change to im_spcor(), since you will usually be searching for the maximum +- better im_render() cache behaviour under heavy loads +- im_affine() revised + * clip, resample and transform is now pixel-perfect for all + inputs (I hope) + * uses the new embed to make sure there are no black borders + from edge interpolation + * about 20 - 30% faster +- policy change: Xoffset and Yoffset are now set by all operations to record + the position of the input origin in the output +- im_replicate() is much faster for some cases +- added tile and mirror flags to im_embed() +- added im_cache() convenience function +- better ETA for image calculation +- im_tiff2vips() now has a "broken" option so it can read tiled tiffs made + with earlier versions of vips +- on convert float to int format, now does floor() not rint() ... more + 'mathematical' +- added im_rint() +- im_sharpen() now uses a gaussian mask +- im_convsep() more resistant to int overflow problems +- added im_make_xy(), avoids rounding problems with the old float-based thing +- im_profile() now makes vertical images for a vertical profile +- added im_vips2tiff() option to set the resolution in inches not cm (thanks + Andrey) +- im_binfile() is now exported + +6/2/04 started 7.9.3 +- added an im_init_world() to im_open(), to help old progs +- renamed VSemaphore as im_semaphore_t +- started using libtool library versioning +- now uses g_module_*() in place of dlopen() +- now uses pkg-config instead of vips-config (thanks Simon) +- fixes to vips.h for _ADDR() with DEBUG on (thanks Konrad) + +10/12/03 started 7.9.2 +- patches for freebsd, thanks Lev Serebryakov +- vips2dj knows about my colour laser printer +- added i18n support, glib/gmodule/gthread dependency +- im_error*() API revised to be more i18n friendly +- List type removed, now uses g_slist +- VBuf added, some more utility funcs pushed down from nip +- im_thread stuff removed, now uses g_thread +- im_lock stuff removed, now uses g_mutex +- im_semaphore_t renamed to VSemaphore, not sure this is a good idea +- build with --disable-threads to turn off threaded render +- #include now pulls in most of the public API, you shouldn't + need other vips includes very often +- im_close() is better at cleaning up if there's an error +- inverse FFTs could fail for wider-than-high images with fftw +- better im_icc_transform error messages +- bug fix in im_render with large caches +- im_binfile() now has an offset parameter +- im_mapfile()/im_unmapfile() now work on IMAGE and record the length of the + file they mapped ... this lets VIPS successfully unmap a file if it changes + size while it's open + +20/10/03 started 7.9.1 +- threadgroups now have their own kill flag +- im_plotmask() now does anti-aliasing +- im_iterate() fix for operations on mmap window images (thanks Clare) +- im_writeline() stops on kill +- fix for im_fwfft() segv for wider-than-high real images (thanks Andrey) +- fix for im_fwfft() to work for non-square real images (thanks Andrey) +- can now read and write 32-bit IEEE float TIFF (Andrey Kiselev) +- clean-ups for colour.c (Andrey Kiselev) +- no longer lets you make an image with width|height|bands == 0 (thanks Joe) +- im_vips2tiff(), im_vips2*jpeg*(), im_vips2png(), im_vips2ppm() could + sometimes fail for mmap window input images (thanks David) +- added IM_RECT_HCENTRE(), IM_RECT_VCENTRE() macros + +20/8/03 JC +- started 7.9.0 +- added im_rank_image() ... im_maxvalue() a special case of this +- im_subtract() goes up to int earlier for better value preserving, thanks + Haida +- im_rank() much faster for large windows, correct result on all platforms + (dratted memcpy() was causing problems before) +- fixed problem with libMagick config if installed somewhere strange +- fixed problem with include order in library compile +- added --without-magick configure option +- added im_render(), threaded background image paint +- added im_replicate(), replicate an image horizontally and vertically + +31/5/03 JC +- started 7.8.11 +- fixed a problem with relational operators and some combinations of input + types (bug introduced in 7.8.9), thanks Haida +- vips-7.8 script overrides VIPSHOME environment variable +- better im_guess_prefix +- stupid light_correct script no longer uses /pics/tmp +- added batch_crop script + +22/5/03 +- started 7.8.10 +- the JPEG writer can embed ICC profiles in output images ... although I've + yet to see it make any difference :-( test this carefully at some point +- fixed a possible coredumper in jpeg write +- jpeg read now spots truncated files +- im_invertlut() now makes an image, not a mask ... sorry :-( +- im_histnD() makes an n-dimensional histogram from an n-band image +- im_col_pythagoras() patch +- IM_NUMBER() now returns int not size_t +- new win32 build system from Juan and friends, based on tmake +- sample project files for MSVC added, thanks Juan +- win32/ subdir now has the win32 build systems +- spec/ subdir now has the spec files for building RPMs +- dist now includes formatted documentation +- license change: VIPS is now LGPL, nip stays GPL ... this means proprietary + programs can link against the vips library +- had a report of a working VIPS build on a 64 bit system (!) +- im_log_dmask() now includes all of the negative lobe, thanks matt +- vips-7.8 start script now auto-relocates +- im_spcor_raw(), im_fastcor_raw() now exported + +29/4/03 +- started 7.8.9 +- changes to build to help MSVC +- oops, makedef.pl missed out function names with an initial cap, and + error_exit() +- im_min() and im_max() gave random wrong results for >1 thread on >1 CPU + machines (bug introduced in 7.7.20), thanks Joe +- vips.c no longer generates C++ wrappers for functions with no image argument + (thanks Haida) +- im_invertlut() now wrapped by hand in VMask.cc +- C++ docs updated +- added im_open_header(), returns an IMAGE with just width/height/etc and no + data +- ... so now "header" will print useful stuff even on truncated files +- tiff writer knows about alpha (thanks Jenny) + +7/2/03 +- started 7.8.8 +- build failed with lcms turned off +- im_spcor() could segv for 16bit images (thanks Joe) +- im_tiff2vips() read resolution expressed as pixels/cm incorrectly +- im_vips2tiff() tries not to write mad resolutions +- header and im_open file type tests reordered for slight speedup +- im_copy_set() had a broken dispatch function for xres/yres +- im_fwfft() exploits libfftw real -> complex transform if possible for a 2x + speed-up (thanks Matt) +- im_invfftr() added for complex -> real inverse transform for 2x speed-up + (thanks Matt) +- im_freqflt() now uses im_invfftr() for real result and speedup +- im_flipver() could segv on some inputs, thanks Clare +- relational operators now work on complex +- relational rewritten ... now fractionally slower, but 1/3 the size +- vips2dj -1:1 produced incorrect height +- better overlap-too-small detection in mosaicing code +- im_system() can have NULL output +- global balance ignores overlaps with only transparent pixels + +3/1/03 +- started 7.8.7 +- worked in patch from Hans Breuer (thanks!) + - png read/write with im_png2vips(), im_png2vips_header(), + im_vips2png(), im_ispng() + - im_errorstring() and im_col_displays() are now functions not externs + (helps DLLs) + - many include fixes to help native win32 build +- added libMagick support, 78 file formats now loadable with + im_magick2vips(), im_magick2vips_header() and im_ismagick(), w00t +- now installs vips.m4 to $prefix/share/aclocal +- added im_icc_export_depth() ... export to device space with a specified bit + depth (8 or 16) +- vips.def now rebuilt with custom rule in libsrc/Makefile.am +- removed externs im_Type, im_BandFmt, im_Coding, im_Compression to simplify + DLL build +- im_mmap() -> im__mmap(), since it's supposed to be an internal function +- new vips-7.8.x/proj directory holds unsupported sample makefiles and + config.h for building with the MSC toolchain +- new scripts batch_image_convert and batch_rubber_sheet (thanks Joe) +- added the RPM .spec files to the main distribution +- InitializeMagic() now passed "" rather than NULL to avoid assert() problems + on some libMagic versions + +2/12/02 +- started 7.8.6 +- now reads 8-bit RGBA tiff +- C++ build guide fixes (thanks fsicre) +- im_Type2char array text slightly messed up +- global_balance is safer for complex mixed mosaics +- removed im_lintra() fallback to im_copy() for scale == 1, offset == 0 ... + too confusing +- im_tiff2vips() now reads 16-bit LAB +- added im_Lab2LabS() and im_LabS2Lab() + +5/11/02 +- started 7.8.5 +- fix for mmap window of local region ... caused im_iterate() to break + sometimes for large images, in turn occasionally breaking + im_max()/im_min()/etc. (thanks Joe) +- tiny speed up for im_rot90()/270() +- on install on win32, add .exe suffix for links +- vips.c knows to remove .exe suffix for linked commands +- added im_errormsg_system() ... decode win32 error codes too +- pagesize calcs for roving mmap windows were messed up on win32 (thanks Kirk) +- some TODO cleanups +- global balance broke horribly if you had filenames with spaces in (thanks + Clare) + +31/10/02 +- started 7.8.4 +- im_unmapfile() includes mixed up on mac os x +- libtool patched for mac os x +- vips.c sets numeric locale to "C" + +27/10/02 +- started 7.8.3 +- configure fixes help mac os x +- im_guess_prefix() adds ".exe" suffix on w32 if not there +- changed im_measure() error messages to number bands from 1 +- added func descriptor for im_read_dmask() to help nip, updated C++ API, docs + +21/10/02 JC +- started 7.8.2 +- tries rand() if random() is not available +- tries mktemp() if mkstemp() is not available +- turns off realpath() if not available +- added IM_DIR_SEP/IM_DIR_SEP_STR directory separator character/string +- added IM_PATH_SEP/IM_PATH_SEP_STR path separator character/string +- added im_path_is_absolute() +- vips.c knows to link to vips.exe on win32 +- spot mingw* and set BINARY_OPEN +- open images in binary too (since we now read() the header) + +10/10/02 JC +- im_lintra() and im_lintra_vec() were broken for complex images :-( thanks + matt +- renamed im_and() as im_andimage(), im_eor() as im_eorimage() and im_or() as + im_orimage() ... avoids breakage in the C++ layer +- added im_dE00_fromLab() +- limited release as vips-7.8.0 + +2/10/02 +- renamed as vips-7.8, woohoo +- revised documentation + +19/9/02 JC +- started sorting out VIPS #defines ... there are now a sensible set of new + names (eg. NOCODING becomes IM_CODING_NONE, LAB becomes IM_TYPE_LAB) +- define IM_NO_VIPS7_COMPAT to turn off the old names +- added im_mmap()/im_munmap() layer for windows portability +- removed the contents of history.h .. obsolete +- added IM_IMAGE_ADDR() macro + +10/9/02 JC +- handle errors from TIFF lib correctly +- configure fixes for cygwin +- CMYK TIFF write fixed +- configure fixes for mingw + +5/9/02 JC +- im_cp_desc() now copies Xoffset/Yoffset + +21/8/02 JC +- started 7.7.24 +- reads CMYK TIFF +- reads dpi from TIFFs +- better float Xres/Yres + +14/8/02 JC +- new header fields Xoffset and Yoffset ... used by functions to hint + the position of the origin in output images +- support added to c++ api and to header +- im__lrmerge(), im__tbmerge(), im__affine(), im_insert(), + set Xoffset/Yoffset +- now uses , not for better suse w0rkage +- better configure for fftw (uses libdfftw name if libfftw not found) + +8/8/02 JC +- large file support with mmap() windows ... had to change + im_prepare_inplace() to im_prepare_to() + + benchmark: + + - system + + hardware: 2 x 2.5GHz P4, 1GB RAM, 15k SCSI, ReiserFS + os: suse 8 (kernel 2.4.18) + compiler: gcc 2.95.3, -O2, threads turned on + images: fred.v, fred2.v; both 4k by 4k LABPACK (64MB) + images: jim.v, jim2.v; both 15k by 15k LABPACK (900MB) + time: smallest real of 5 runs, system idle + vips: 7.7.23, debug on in im_openin.c, window limit set with an + environment variable + + - benchmarks + + cpu-bound: im_sharpen fred.v fred3.v 11 1.5 20 50 1 2 + io-bound: im_insert fred.v fred2.v fred3.v 4000 0 + worst-case: im_rot90 fred.v fred3.v + + - results + + desktop: + + no mmap windows mmap windows + + cpu-bound real 0m3.712s real 0m3.970s + user 0m6.010s user 0m6.390s + sys 0m0.900s sys 0m1.110s + + io-bound real 0m1.813s real 0m1.865s + user 0m0.900s user 0m0.990s + sys 0m1.720s sys 0m1.520s + + worst-case real 0m1.344s real 0m3.039s + user 0m1.270s user 0m2.230s + sys 0m0.850s sys 0m3.050s + + not quite sure why sharpen is a little slower (4%?) ... IO speed is about + the same though ... worst-case is having to constantly move windows about + (500,000 page faults, vs 10,000 for no windows) + + again, with an image larger than RAM + + no mmap windows mmap windows + + io-bound real 2m52.759s real 2m11.172s + user 0m14.940s user 0m14.890s + sys 0m29.940s sys 0m26.560s + + worst-case real 3m35.391s real 3m50.760s + user 0m19.850s user 0m26.600s + sys 0m12.650s sys 0m43.130s + + mmap windows actually slightly faster in this case ... plus they stress the + OS less + +31/7/02 JC +- added -lm for better lcms detect +- README notes for fftw on suse8 +- im_profile() sets HISTOGRAM for output image +- im_copy()/im_copy_set() function descriptor no longer sets PTOP ... helps + avoid LUT problems +- im_subsample()/im_zoom() fall back to im_copy() for shrink/grow == 1 +- im_lintra() falls back to im_copy() for scale == 1, offset == 0 +- no longer use Type == LUT ... all just Type == HISTOGRAM now +- im_blend() was messed up for > 1 band images :( + +16/7/02 JC +- started 7.7.23 +- im_XYZ2sRGB() wasn't setting Type = sRGB +- im_icc_import() was broken for rgb +- im_header_string() had wrong return type in function database + +13/7/02 JC +- added im_flood_blob() +- added im_open_local_array() ... C API convenience function +- oop, im_flood() was missing a man page +- Type == FOURIER added to help visualisation +- released as 7.7.22 + +30/6/02 JC +- JPEG, TIFF and PPM import all now set sRGB Type for RGB import +- im_header_int(), im_header_double() and im_header_string() added to aid + UIs +- now uses gettimeofday(), not time() +- for consistency with other trig functions, im_c2amph() now returns degrees + not radians (ouch) +- added im_c2rect() ... turn (amp, phase) to rectangular +- added im_sign() ... unit vector in direction of value +- better im_scaleps() ... old code was terrible +- rewritten im_rotquad() ... now partial +- im_icc_export()/_import() now do ABSOLUTE correctly +- added im_icc_ac2rc() ... converts absolute to relative colorimetry + +25/6/02 JC +- added im_copy_set(3) ... like im_copy(), but set informational header fields + +20/6/02 JC +- added im_ceil(), im_floor() +- im_Lab2LabQ was not clipping a/b range correctly +- im_icc_export(), own ABSOLUTE mode +- released as 7.7.21 + +28/5/02 JC +- im_remainderconst_vec broken for float/double +- added Yxy colourspace + +16/05/02 JC +- auug, libtool was all messed up ... redone all the autotools stuff +- uses libtool convenience libraries to build vips in sections +- uses config subdir for temp files and .m4 things +- patched stupid suse config.guess +- vips2dj patched for better raw cmyk +- released as 7.7.20 + +12/5/02 JC +- im_vips2jpeg*() and im_vips2ppm() now both partial +- started updating the C++ guide +- had to change the location of the C++ headers :-( all C++ progs should now + have: + + #include + + this is so things can work on systems which do not have case sensitive + file systems + +- changes for Mac OS X + * im_system() TRUE/FALSE removed + * searches /*/[lib|include] to get fink libs for tiff and jpeg + +30/4/02 JC +- several functions were missing IM_FN_PIO in their descriptor ... this was + harmless for nip/ip/C, but broke the ref counting in the C++ layer +- im_system() now defaults "/tmp" for temp files +- STRING input and output args were broken for C++ :-( +- threads exit more quickly on error +- im_min()/im_max() now partial (at last) +- im_remainderconst()/im_remainderconst_vec() added +- --with-dmalloc configure switch +- vips2dj does CMYK and mono too +- im_vips2tiff() allows any number of bands (but not the right way to + write CMYK, see TODO) + +26/4/02 JC +- old ICC profile reader removed +- little cms wrapped ... configure spots it, im_icc_transform() uses it to map + between two images +- also im_icc_import() and im_icc_export() so you can see PCS images +- im_icc_present() to test for existence of lib +- README fixes + +4/4/02 JC +- TODO changes +- oops, DEBUG left on in im_invertlut() + +2/4/02 JC +- im_fwfft.c/im_invfft.c now use libfftw if available ... about 5x speed up + and double precision +- added FIND_FFTW autoconf macro +- include/vips/proto.h changes + +26/3/02 JC +- started 7.7.19 + +25/3/02 JC +- im_log_dmask() was broken (thanks matt) +- casts between VDMask and VIMask were broken (thanks matt) +- various error msgs improvements and tiny man page fixes + +13/3/02 JC +- tb/lr merge first/last cache moved to per-call state for better sharing +- im_remosaic() bails out faster on error and makes better error messages + +13/3/02 ruven +- im_vips2tiff() pyramids stop at tilesize, not 64x64 + +25/02/02 JC +- im_remosaic() is smarter, and works better with im_global_balance() +- im_affine() 2x faster + +14/2/02 JC +- started 7.7.18 +- vips.m4 and libsrc/Makefile.am fixes for IRIX + +11/02/02 JC +- vips/thread.h and vips/threadgroup.h were missing extern "C" for C++ +- VImage::write() now tracks dependencies, so you can write() to a partial + safely ... although it's not a very useful thing to do (thanks Mike) +- new VImage::print() function for debugging +- added im_print() + +22/01/02 JC +- started 7.7.17 + +15/01/02 JC +- im_rect_unionrect() and im_rect_intersectrect() safer for repeated args +- im_video_v4l() no longer perrror()s on ioctl fail for less spam + +03/01/02 JC +- started 7.7.16 +- im_version_string() really does return the date as well now + +12/12/01 JC +- im_guess_prefix() extra smartness for relative path names +- VImage() no longer uses tmpnam() (thanks Paul) + +11/12/01 JC +- renamed im_fexists() as im_existsf() + +7/12/01 JC +- ppm man pages added (doh) + +28/11/01 JC +- warnings on g++ 2.96 fixed + +22/11/01 JC +- started 7.7.15 +- im_video_v4l() failed to compile on non-linux platforms + +7/11/01 JC +- im_remosaic() added +- im_*merge() are more intelligent about transparency in bizarre overlaps +- grr! putenv() semantics change on more recent clibs ... should be safer + now + +19/10/01 JC +- VDisplay( "display name" ) segved on unknown display :-( thanks mike + +26/9/01 JC +- contrib tools get data files from share/vips/xxx area now +- im_vipshome() renamed as im_guess_prefix(), reworked for new package layout +- doc/ build sorted out +- ... but of course, docs still need updating for 7.8 + +20/9/01 JC +- fix to im_vipshome() +- ip2 renamed as nip +- split to library only ... separate ip and nip packages +- new VIPS_VERSION_* macros set from configure.in in vips/version.h.in +- vips.m4 VIPS finder +- reworked README, doc/README and TODO +- now installs to /usr/local/ by default +- fmask4th.c was including varargs.h ... d'oh +- include area reorganised: everything inside now ... hopefully the + only user-visible change is that all plain C progs need to change: + + #include + + to: + + #include + + the C++ API should be unaltered + +21/8/01 ruven +- im_setupout() was missing some #includes + +20/8/01 JC +- started 7.7.14 + +15/8/01 JC +- added libxml dependency for ip2 + +27/7/01 JC +- im_conv(), im_convf(), im_convsep(), im_convsepf() now reject masks with + scale == 0 + +26/7/01 JC +- started 7.7.12 + +25/7/01 JC +- started 7.7.11 +- oop, im_histeq() and im_tonemap() also missed +- better error messages from im_run_command() + +23/7/01 JC +- started 7.7.10 +- im_sharpen() failed due to change in im_band_extract() offset + +20/7/01 JC +- started 7.7.9 + +4/7/01 JC +- im_open(,"w") open() delayed until im_setupout(), very slightly safer +- updated im_open() man page +- im_tiff2vips() now embeds index in filename ... and it's page number (from + 0), not subsample factor +- finally bit the bullet ... im_extract()/im_extract_band() now number from + zero (sorry!) +- and im_lrmosaic()/im_tbmosaic() bandno param too + +29/6/01 JC +- im_region_free() now frees immediately + +27/6/01 JC +- im_vips2tiff() man page updated for deflate, 2 years late + +22/6/01 JC +- oops, limit wrong on im_rank() + +21/6/01 JC +- better post_install for --prefix outside VIPS's tree +- -ltiff needs -lm in acinclude.m4 ... fixes configure on redhat 7.x + +13/6/01 JC +- started 7.7.8 + +6/6/01 JC +- im_invertlut() added + +31/5/01 JC +- im_colour_temperature, im_XYZ2Lab_temp, im_Lab2XYZ_temp added +- ... colour temp stuff needs sorting out properly + +25/5/01 JC +- added vips-config script, cf. gtk-config +- --without-threads option added +- did a bit of work on the C++ API docs + +24/5/01 JC +- added im_tiff2vips_header(), im_jpeg2vips_header() and im_ppm2vips_header() +- header uses these to print fields quickly +- switched to config.h +- configure.in rewritten ... much nicer, fewer options, more automatic + +17/5/01 JC +- im_matinv() didn't free stuff correctly on singular matrix + +16/5/01 JC +- vips2dj now knows about 5000ps printers +- allow RW mode for non-native VIPS image files, for 8 bit images + +2/5/01 JC +- started 7.7.7 + +1/5/01 JC +- im_addgnoise() did not work for >1 band images + +23/4/01 JC +- configure options to remove support for JPEG and TIFF ... helpful for a no- + dependencies build + +20/4/01 JC +- im_(v)snprintf() added +- all sprintf()s removed + +15/4/01 JC +- im_affine() had a rounding problem + +11/4/01 JC +- tiny mosaicing bug fixed in im__lrcalcon +- started 7.7.6 + +21/3/01 JC +- new iblend code in im_tbmerge() was typo-d +- mosaic1 was broken by affine too + +20/3/01 JC +- im_image() failed for FMTUCHAR + +12/3/01 JC +- started 7.7.5 +- im_sharpen() uses seperable convolution for big speed up +- new "Print" menu + +11/3/01 JC +- REALVEC renamed as DOUBLEVEC +- added IMAGEVEC +- added IM_INPUT_IMAGEVEC +- gbandjoin now has function description +- new function im_maxvalue() +- im_compass()/im_lindetect() reimplemented with im_conv()/im_maxvalue(), + about 15% faster, works for any type, partial +- im_gradient() reimplemented with im_conv()/im_abs()/im_add(), about 30% + slower, works for any type, partial + +10/3/01 JC +- new function, im_clip2fmt() converts between any image formats ... + slightly faster than the old im_clip() +- legacy im_clip2us() etc. functions now just call this + +9/3/01 JC +- im_conv() rewritten, simpler, about 10% faster +- im_convsep() rewritten, now does any non-complex type, partial, 20% faster +- new functions: im_convf(), im_convsepf() for DOUBLEMASK +- raw versions of each +- legacy convolvers (eg. im_convbi()) removed + +8/3/01 JC +- new function im_blend() +- new function im_lab_morph() +- speed up to im_ifthenelse() +- speed up to im_*merge() (uses integer arithmetic for integer blends) + +4/3/01 JC +- tiny speed ups to im_histgr() +- speed ups to im_maplut() + +3/3/01 JC +- new functions: im_histnorm(), im_histcum() +- im_histeq() more general +- im_vipshome() --- better behaviour for relative paths + +2/3/01 JC +- new video package +- im_video_v4l1() (video for linux) added +- configure.in switches to turn v4l1 on and off + +1/3/01 JC +- new im_histspec() implementation ... more general, bugs removed + +14/2/01 JC +- better vips2dj usage message + +13/2/01 JC +- im_image_sanity() added, called in various places in iofuncs + +9/2/01 JC +- added 'check' and 'name' class member stuff to ip from ip_gtk2 +- new "Plot" menu +- new "Overlay" menu +- more stuff in _stdenv/_list ... curried forms of head/tail etc. + +7/2/01 JC +- started 7.7.4 +- vips2dj and vdump now use im_vipshome() + +5/2/01 JC +- new im_vipshome() function +- min()/max() macros renamed as MIN()/MAX() +- new im_load_plugins() function +- vips.exe and ip now load $VIPSHOME/lib plugins at startup + +2/2/01 JC +- mosaicing functions now have an extra max blend width parameter + +30/1/01 JC +- fixed tbmerge no overlap detect + +13/12/00 JC +- started 7.7.3 + +30/12/00 JC +- vips.h fixes for cygwin/wingdi conflict + +27/11/00 JC +- added im_vips2ppm(), im_open() imports and exports it +- fixed nasty implicit output conversion problem for PIO dispatch() calls + +21/11/00 JC +- added im_ppm2vips() + +16/11/00 JC +- configure.in fixes ... jpeg found correctly now +- searches for libz as well + +16/11/00 JC +- started 7.7.2 + +5/11/00 JC +- speed up to lab2labq + +19/10/00 JC +- started 7.7.1 + +13/1/00 JC +- oops, im_open() was missing an 'else' in jpeg/tiff load + +5/8/00 JC +- im_vips2tiff() now has mode string embedded in output filename +- im_vips2jpeg() now has qfac in output filename +- im_open() understands this + +11/7/00 JC +- new im_image() function ... wraps a VIPS image around a memory buffer +- C++ layer changes: + * now use #include + * error renamed as VError + * new VMask() constructors + * new VImage() constructor + * new VImage::data() access member + * more operator equivalences: <, >, <=, >=, ==, !=, &, |, ^, % + +17/6/00 JC +- more consts added to vips protos + +10/5/00 JC +- minor configure.in changes to help solaris +- removed _TIFFmalloc() and _TIFFfree() calls + +9/3/00 JC +- fixed rounding problem in generate grid + +8/3/00 JC +- fixup to im_system() temp dir + +7/3/00 JC +- added im_system() +- small tidies + +1/3/00 JC +- better plugin test in configure.in + +26/2/00 JC +- fixes to Makefile.am in ip/src* and configure.in, to help ip find the right + gtk includes on systems with more than one gtk-xxx installed + +21/2/00 JC +- now builds ip and ip_gtk2 + +16/2/00 JC +- configure.in fixes for xil and some TIFF/JPEG strangeness + +15/2/00 JC +- im_global_balancef() was broken! d'oh +- note in README about enabling video cards + +10/2/00 JC +- configure now searches for xil ... FIND_XIL macro +- im_zoom() spots integer overflow +- better shape set on region drag end in ip +- better zoom-too-far handling in ip + +13/1/00 JC +- fixes to configure etc. to help cygwin +- jpeg is now searched for too ... FIND_JPEG macro + +10/1/00 JC +- global_balance() now uses new affine() atuff + +27/12/99 JC +- mosaic1 stuff now uses new affine() funcs + +21/12/99 JC +- added Joe's docs +- im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0 + +20/12/99 JC +- new function: im_affine() +- similarity*() now in terms of affine() +- tests for error return in reduce.c from maplut +- small clean-ups + +15/12/99 +- im_version() added, new iofuncs package for it +- ip did not call zero-input-arg vips functions +- vips.c did not like zero-input-arg functions + +6/12/99 JC +- Sobel filter was a bit broken + +3/12/99 JC +- menu reorganisation +- generate gauss mask dialog + +2/12/99 JC +- reworked text file IO, better error messages + +1/12/99 JC +- reworked .iprc filename stuff, cleaner + +30/11/99 JC +- better menu set switcher in calc preferences +- ip now thinks it's 7.7 +- did a spellcheck on the ip guide + +29/11/99 JC +- 7.7 started! +- srgb D65->D50 converter +- Negate added to arith +- find similar pixel value dialog +- find similar colour dialog +- paste into background dialog + +19/11/99 JC +- adjust labq was mising +- shrink image defaulted to /2 not /1 +- sharpdropshadow broken +- Rotate.* broken +- vips-7.6.3 release + +18/11/99 JC +- ip didn't report space free on >2GB filesystems correctly +- ip did not link statically against libXpm on solaris7 + +17/11/99 JC +- im_histplot() failed for all 0's histogram +- new profile_image dialog +- man pages for im_sRGB2XYZ/im_XYZ2sRGB were broken +- new colourize image dialog +- new shrink image image dialog +- new expand image image dialog +- better doc Makefiles + +16/11/99 JC +- more menu reorganising +- new image_to_mask/mask_to_image buttons +- new match_two_images dialog +- new measure_colour_chart dialog + +15/11/99 JC +- new custom LABQ sharpen in Image menu +- configure support for SGI video (thanks Ruven) +- menu fiddling in ip +- new "resize canvas" menu item +- im_insert_noexpand() added, no docs tho' + +11/11/99 JC +- new ip menu item: Image=>Adjust white/black/saturation of LabQ +- fixed bug in decompose complex number +- browse-icons now ignores errors +- better error msg for "12 12" etc cases + +10/11/99 JC +- open hi-res gives proper error msg if no file found +- made file-select boxes a bit more compact and clearer +- updated configure.in for vips-examples-7.6 + +9/11/99 JC +- new column start point moved +- vdump now defaults to subsample 1, portrait +- navigation boxes were broken +- no longer shrink-to-fit if loading as high res +- better positioning of zoom windows +- removed some old cruft + +8/11/99 JC +- ooops, im_remainder() got lost somehow +- refguide converted to latex and updated +- cppguide updated + +5/11/99 JC +- libguide converted to latex and updated + +4/11/99 JC +- ip guide now latex2htmls cleanly ... still needs updating tho' +- cpp/app guide latex2html redone + +2/11/99 JC +- configure no longer adds -32 to IRIX builds for you +- some more stuff in README +- simple DEBUGM malloc tracking, made libsrc/iofuncs/memory.c +- changed im_malloc() to return void * +- removed duplicate im_malloc() proto from util.h +- changed all malloc/free to go through im_malloc()/im_free() + +23/10/99 JC +- double-click on error image now pops a load browser and an error dialog +- add-new-column no longer scrolls to right edge of workspace +- better scroll-to-bottom on item add +- load ws twice does not cause 'already open' errors +- memorise directory button in fsb + +18/10/99 JC +- new FIND_TIFF/FIND_MOTIF macros for acinclude.m4 +- new ./configure switches, see ./configure --help +- enabled static libs + +8/10/99 +- broke action_proc_bop() into smaller functions, stops bad code gen on + gcc2.95.1 (and others, prolly) +- restored old Makefiles in doc/src/ipguide +- vips7.6 script renamed as vips-7.6 + +5/10/99 +- replace image was broken +- some menu reorganisation +- 'reload all menus' button + +4/10/99 +- computed regions in ip were broken +- updated system.iprc defaults +- new menu item: adjust white/black points + +2/10/99 +- browse icons was broken +- greyscale 16-bit tiled tiff was broken +- extra mutex locks for TIFF*() in im_tiff2vips() + +1/10/99 +- some automake probs fixed +- squished two ip bugs + +30/9/99 +- fixed problem with pthreads, now works on suse6.2 as well +- new API stuff for threaded evaluation with im_threadgroup_t +- new public interface provide platform independent threads/locks/semaphores +- no error box if you zoom out too far now + +26/9/99 +- lr/tb merge blend was not quite right ... should be smoother now +- histplot broken for float images + +24/9/99 +- better mono->labq converter +- more portable ispoweroftwo detect for freq filter stuff + +23/9/99 +- better graphics expose handling + +17/9/99 +- >/< stuff in ip was a bit mixed up +- ink preview fixed for mono images +- help popup fixed + +15/9/99 +- linedetect and sobel filters for ip, thnx Kirk + +14/9/99 +- Find_histogram was broken +- im_profile() man pages was broken +- ooops, ip had old set of macros + +10/9/99 +- im_and/im_or/im_eor now work for any integer type + +Summer hols: (2nd half August '99) +- initial heap block larger to avoid start gcs +- def slicer fixed +- larger max heap +- toolkits with initial '_' hidden by default +- custom recomb +- dialog.def removed +- ... other menu fixes +- generate grid menu +- im_remainder() added +- new cursor change code, hglass rotates during comp! +- dialog.c handles cursor changes better +- rubber band in paintbox displays +- mag widget stays on right! +- undo/redo single pixel paint ops +- heap size control from prefs +- cancel for reductions as well as for image calc +- browse stuff reworked, no more .icon.v files +- save stops you overwriting open .v files +- better animate_countdown() handling +- better resize behaviour for bars added to images +- better code generation, bug fixed in state tracking +- auto recover from crash diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/README.md b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/README.md new file mode 100644 index 0000000..7546725 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/README.md @@ -0,0 +1,308 @@ +# libvips : an image processing library + +[![CI](https://github.com/libvips/libvips/workflows/CI/badge.svg)](https://github.com/libvips/libvips/actions) +[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/libvips.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=2&q=proj:libvips) +[![Coverity Status](https://scan.coverity.com/projects/6503/badge.svg)](https://scan.coverity.com/projects/jcupitt-libvips) +[![Gitter](https://badges.gitter.im/libvips/devchat.svg)](https://gitter.im/libvips/devchat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +# Introduction + +libvips is a [demand-driven, horizontally +threaded](https://github.com/libvips/libvips/wiki/Why-is-libvips-quick) +image processing library. Compared to similar +libraries, [libvips runs quickly and uses little +memory](https://github.com/libvips/libvips/wiki/Speed-and-memory-use). +libvips is licensed under the [LGPL +2.1+](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html). + +It has around [300 +operations](https://libvips.github.io/libvips/API/current/func-list.html) +covering arithmetic, histograms, convolution, morphological +operations, frequency filtering, colour, resampling, +statistics and others. It supports a large range of [numeric +types](https://libvips.github.io/libvips/API/current/VipsImage.html#VipsBandFormat), +from 8-bit int to 128-bit complex. Images can have any number of bands. +It supports a good range of image formats, including JPEG, JPEG2000, JPEG-XL, +TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / +PFM, CSV, GIF, Analyze, NIfTI, DeepZoom, and OpenSlide. It can also load +images via ImageMagick or GraphicsMagick, letting it work with formats +like DICOM. + +It comes with bindings for +[C](https://libvips.github.io/libvips/API/current/using-from-c.html), +[C++](https://libvips.github.io/libvips/API/current/using-from-cpp.html), +and the +[command-line](https://libvips.github.io/libvips/API/current/using-cli.html). +Full bindings are available for : + +| Language | Binding | +|---|---| +| Ruby | [ruby-vips](https://rubygems.org/gems/ruby-vips) | +| Python | [pyvips](https://pypi.python.org/pypi/pyvips) | +| PHP | [php-vips](https://github.com/libvips/php-vips) | +| C# / .NET | [NetVips](https://www.nuget.org/packages/NetVips) | +| Go | [govips](https://github.com/davidbyttow/govips) | +| Lua | [lua-vips](https://github.com/libvips/lua-vips) | +| Crystal | [crystal-vips](https://github.com/naqvis/crystal-vips) | + +libvips is used as an image processing engine by: + +| | +|---| +| [sharp (on node.js)](https://www.npmjs.org/package/sharp) | +| [bimg](https://github.com/h2non/bimg) | +| [sharp for Go](https://github.com/DAddYE/vips) | +| [Ruby on Rails](https://edgeguides.rubyonrails.org/active_storage_overview.html) | +| [carrierwave-vips](https://github.com/eltiare/carrierwave-vips) | +| [mediawiki](https://www.mediawiki.org/wiki/Extension:VipsScaler) | +| [PhotoFlow](https://github.com/aferrero2707/PhotoFlow) | + +and others. The official libvips GUI is +[nip2](https://github.com/libvips/nip2), a strange combination of a +spreadsheet and a photo editor. + +# Install + +There are packages for most Unix-like operating systems, including +macOS. Check your package manager. + +There are binaries for Windows in +[releases](https://github.com/libvips/libvips/releases). + +The [libvips website](https://libvips.github.io/libvips) has [detailed +install notes](https://libvips.github.io/libvips/install.html). + +# Building from source + +libvips uses the [Meson build system](https://mesonbuild.com), version 0.56 +or later. Meson can use [`ninja`](https://ninja-build.org), Visual Studio or +XCode as a backend, so you'll also need one of them. + +libvips must have `build-essential`, `pkg-config`, `libglib2.0-dev`, +`libexpat1-dev`. See the **Dependencies** section below for a full list +of the libvips optional dependencies. + +## Cheatsheet + +``` +cd libvips-x.y.x +meson setup build-dir --prefix=/aaa/bbb/ccc +cd build-dir +meson compile +meson test +meson install +``` + +Check the output of `meson setup` carefully and make sure it found everything +you wanted it to find. Add arguments to `meson setup` to change the build +configuration. + +- Add flags like `-Dnsgif=false` to turn libvips options on and off, see + `meson_options.txt` for a list of all the build options libvips supports. + +- Add flags like `-Dmagick=disable` to turn libvips dependencies on and off, + see `meson_options.txt` and the list below for a summary of all the libvips + dependencies. + +- Meson will do a debug build by default. Add `--buildtype=release` for a + release (optimised) build. + +- You might need to add `--libdir=lib` on Debian if you don't want the arch + name in the library path. + +- Add `--default-library=static` for a static build. + +- Use eg. `CC=clang CXX=clang++ meson setup ...` to change compiler. + +- You can have many `build-dir`, pick whatever names you like, for example + one for release and one for debug. + +There's a more comprehensive test suite you can run once libvips has been +installed. Use `pytest` in the libvips base directory. + +## Optional dependencies + +If suitable versions are found, libvips will add support for the following +libraries automatically. Packages are generally found with `pkg-config`, +so make sure that is working. + +### libjpeg + +The IJG JPEG library. Use the `-turbo` version if you can. + +### libexif + +If available, libvips adds support for EXIF metadata in JPEG files. + +### librsvg + +The usual SVG loader. If this is not present, vips will try to load SVGs +via imagemagick instead. + +### PDFium + +If present, libvips will attempt to load PDFs with PDFium. Download the +prebuilt pdfium binary from: + + https://github.com/bblanchon/pdfium-binaries + +Untar to the libvips install prefix, for example: + + cd ~/vips + tar xf ~/pdfium-linux.tgz + +Create a `pdfium.pc` like this (update the version number): + + VIPSHOME=/home/john/vips + cat > $VIPSHOME/lib/pkgconfig/pdfium.pc << EOF + prefix=$VIPSHOME + exec_prefix=\${prefix} + libdir=\${exec_prefix}/lib + includedir=\${prefix}/include + Name: pdfium + Description: pdfium + Version: 4290 + Requires: + Libs: -L\${libdir} -lpdfium + Cflags: -I\${includedir} + EOF + +If PDFium is not detected, libvips will look for `poppler-glib` instead. + +### poppler-glib + +The Poppler PDF renderer, with a glib API. If this is not present, vips +will try to load PDFs via imagemagick. + +### cgif + +If available, libvips will save GIFs with +[cgif](https://github.com/dloebl/cgif). If this is not present, vips will +try to save gifs via imagemagick instead. + +### libgsf-1 + +If available, libvips adds support for creating image pyramids with `dzsave`. + +### libtiff + +The TIFF library. It needs to be built with support for JPEG and +ZIP compression. 3.4b037 and later are known to be OK. + +### fftw3 + +If libvips finds this library, it uses it for fourier transforms. + +### lcms2 + +If present, `vips_icc_import()`, `vips_icc_export()` and `vips_icc_transform()` +can be used to manipulate images with ICC profiles. + +### libspng + +If present, libvips will load and save PNG files using libspng. If not, it +will look for the standard libpng package. + +### libimagequant, quantizr + +If one of these quantisation packages is present, libvips can write 8-bit +palette-ised PNGs and GIFs. + +### ImageMagick, or optionally GraphicsMagick + +If available, libvips adds support for loading and saving all +libMagick-supported image file types. You can enable and disable load and save +separately. + +Imagemagick 6.9+ needs to have been built with `--with-modules`. Most packaged +IMs are, I think. + +If you are going to be using libvips with untrusted images, perhaps in a +web server, for example, you should consider the security implications of +enabling a package with such a large attack surface. + +### pangocairo + +If available, libvips adds support for text rendering. You need the +package pangocairo in `pkg-config --list-all`. + +### orc-0.4 + +If available, vips will accelerate some operations with this run-time +compiler. + +### matio + +If available, vips can load images from Matlab save files. + +### cfitsio + +If available, vips can load FITS images. + +### libwebp + +If available, vips can load and save WebP images. + +### libniftiio + +If available, vips can load and save NIfTI images. + +### OpenEXR + +If available, libvips will directly read (but not write, sadly) +OpenEXR images. + +### OpenJPEG + +If available, libvips will read and write JPEG2000 images. + +### libjxl + +If available, libvips will read and write JPEG-XL images. + +### OpenSlide + +If available, libvips can load OpenSlide-supported virtual slide +files: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle, and Ventana. + +### libheif + +If available, libvips can load and save HEIC and AVIF images. Your libheif (in +turn) needs to be built with the correct decoders and encoders. You can check +with eg.: + +``` +$ pkg-config libheif --print-variables +builtin_avif_decoder +builtin_avif_encoder +builtin_h265_decoder +builtin_h265_encoder +exec_prefix +includedir +libdir +pcfiledir +prefix +``` + +# Contributors + +### Code Contributors + +This project exists thanks to all the people who contribute. + + + +### Organizations + +Support this project with your organization. Your logo will show up here with a link to your website. + + + + + + + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libaom.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libaom.dll new file mode 100644 index 0000000..e0befa2 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libaom.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libc++.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libc++.dll new file mode 100644 index 0000000..00704a8 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libc++.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libcairo-2.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libcairo-2.dll new file mode 100644 index 0000000..5e8ec84 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libcairo-2.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libcgif-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libcgif-0.dll new file mode 100644 index 0000000..1d6febd Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libcgif-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libexif-12.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libexif-12.dll new file mode 100644 index 0000000..2f3a292 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libexif-12.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libexpat-1.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libexpat-1.dll new file mode 100644 index 0000000..1f39229 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libexpat-1.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libffi-8.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libffi-8.dll new file mode 100644 index 0000000..43b2d22 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libffi-8.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfontconfig-1.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfontconfig-1.dll new file mode 100644 index 0000000..b61da55 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfontconfig-1.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfreetype-6.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfreetype-6.dll new file mode 100644 index 0000000..928183d Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfreetype-6.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfribidi-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfribidi-0.dll new file mode 100644 index 0000000..3a73e05 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libfribidi-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgdk_pixbuf-2.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgdk_pixbuf-2.0-0.dll new file mode 100644 index 0000000..37b6f79 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgdk_pixbuf-2.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgio-2.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgio-2.0-0.dll new file mode 100644 index 0000000..0fb44ea Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgio-2.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libglib-2.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libglib-2.0-0.dll new file mode 100644 index 0000000..608ed6b Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libglib-2.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgmodule-2.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgmodule-2.0-0.dll new file mode 100644 index 0000000..5000625 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgmodule-2.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgobject-2.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgobject-2.0-0.dll new file mode 100644 index 0000000..ffd3a11 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgobject-2.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgsf-1-114.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgsf-1-114.dll new file mode 100644 index 0000000..2813adb Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libgsf-1-114.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libharfbuzz-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libharfbuzz-0.dll new file mode 100644 index 0000000..4fd6c1c Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libharfbuzz-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libheif-1.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libheif-1.dll new file mode 100644 index 0000000..c8d5a14 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libheif-1.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libimagequant.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libimagequant.dll new file mode 100644 index 0000000..d17600b Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libimagequant.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libjpeg-62.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libjpeg-62.dll new file mode 100644 index 0000000..007476f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libjpeg-62.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/liblcms2-2.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/liblcms2-2.dll new file mode 100644 index 0000000..d86e252 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/liblcms2-2.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/liborc-0.4-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/liborc-0.4-0.dll new file mode 100644 index 0000000..0f9a425 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/liborc-0.4-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpango-1.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpango-1.0-0.dll new file mode 100644 index 0000000..4902e77 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpango-1.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpangocairo-1.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpangocairo-1.0-0.dll new file mode 100644 index 0000000..ad3c9de Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpangocairo-1.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpangoft2-1.0-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpangoft2-1.0-0.dll new file mode 100644 index 0000000..305f5d7 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpangoft2-1.0-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpixman-1-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpixman-1-0.dll new file mode 100644 index 0000000..fd1f6d9 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpixman-1-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpng16-16.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpng16-16.dll new file mode 100644 index 0000000..4b4575c Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libpng16-16.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/librsvg-2-2.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/librsvg-2-2.dll new file mode 100644 index 0000000..0589742 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/librsvg-2-2.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libspng-0.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libspng-0.dll new file mode 100644 index 0000000..0d85493 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libspng-0.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libtiff-5.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libtiff-5.dll new file mode 100644 index 0000000..9204a3f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libtiff-5.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libunwind.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libunwind.dll new file mode 100644 index 0000000..4187e9f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libunwind.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libvips-42.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libvips-42.dll new file mode 100644 index 0000000..9e45b6a Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libvips-42.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libvips-cpp-42.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libvips-cpp-42.dll new file mode 100644 index 0000000..02f6b6c Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libvips-cpp-42.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebp-7.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebp-7.dll new file mode 100644 index 0000000..09315e0 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebp-7.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebpdemux-2.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebpdemux-2.dll new file mode 100644 index 0000000..7c4e94f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebpdemux-2.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebpmux-3.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebpmux-3.dll new file mode 100644 index 0000000..3bf1dae Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libwebpmux-3.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libxml2-2.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libxml2-2.dll new file mode 100644 index 0000000..65a8faa Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libxml2-2.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libz1.dll b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libz1.dll new file mode 100644 index 0000000..7a1cd01 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/libz1.dll differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vips.exe b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vips.exe new file mode 100644 index 0000000..882a509 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vips.exe differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsedit.exe b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsedit.exe new file mode 100644 index 0000000..41fdf14 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsedit.exe differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsheader.exe b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsheader.exe new file mode 100644 index 0000000..915db14 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsheader.exe differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsthumbnail.exe b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsthumbnail.exe new file mode 100644 index 0000000..ed78a0e Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/bin/vipsthumbnail.exe differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-hinting-slight.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-hinting-slight.conf new file mode 100644 index 0000000..96a81fb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-hinting-slight.conf @@ -0,0 +1,15 @@ + + + + Set hintslight to hintstyle + + + + hintslight + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-scale-bitmap-fonts.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-scale-bitmap-fonts.conf new file mode 100644 index 0000000..0c3a2ef --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-scale-bitmap-fonts.conf @@ -0,0 +1,83 @@ + + + + Bitmap scaling + + + + false + + + + pixelsize + pixelsize + + + + + + + false + + + false + + + true + + + + + pixelsizefixupfactor + 1.2 + + + pixelsizefixupfactor + 0.8 + + + + + + + true + + + 1.0 + + + + + + false + + + 1.0 + + + + matrix + + pixelsizefixupfactor 0 + 0 pixelsizefixupfactor + + + + + + size + pixelsizefixupfactor + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-sub-pixel-rgb.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-sub-pixel-rgb.conf new file mode 100644 index 0000000..a87470a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-sub-pixel-rgb.conf @@ -0,0 +1,15 @@ + + + + Enable sub-pixel rendering with the RGB stripes layout + + + + rgb + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-yes-antialias.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-yes-antialias.conf new file mode 100644 index 0000000..4451f6e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/10-yes-antialias.conf @@ -0,0 +1,8 @@ + + + + Enable antialiasing + + true + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/11-lcdfilter-default.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/11-lcdfilter-default.conf new file mode 100644 index 0000000..6025597 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/11-lcdfilter-default.conf @@ -0,0 +1,17 @@ + + + + Use lcddefault as default for LCD filter + + + + + lcddefault + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/20-unhint-small-vera.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/20-unhint-small-vera.conf new file mode 100644 index 0000000..e4e9c33 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/20-unhint-small-vera.conf @@ -0,0 +1,49 @@ + + + + Disable hinting for Bitstream Vera fonts when the size is less than 8ppem + + + + + Bitstream Vera Sans + + + 7.5 + + + false + + + + + + Bitstream Vera Serif + + + 7.5 + + + false + + + + + + Bitstream Vera Sans Mono + + + 7.5 + + + false + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/30-metric-aliases.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/30-metric-aliases.conf new file mode 100644 index 0000000..7216b4e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/30-metric-aliases.conf @@ -0,0 +1,637 @@ + + + + Set substitutions for similar/metric-compatible families + + + + + + + + Nimbus Sans L + + Helvetica + + + + + Nimbus Sans + + Helvetica + + + + + TeX Gyre Heros + + Helvetica + + + + + Nimbus Sans Narrow + + Helvetica Narrow + + + + + TeX Gyre Heros Cn + + Helvetica Narrow + + + + + Nimbus Roman No9 L + + Times + + + + + Nimbus Roman + + Times + + + + + TeX Gyre Termes + + Times + + + + + Nimbus Mono L + + Courier + + + + + Nimbus Mono + + Courier + + + + + Nimbus Mono PS + + Courier + + + + + TeX Gyre Cursor + + Courier + + + + + Avant Garde + + ITC Avant Garde Gothic + + + + + URW Gothic L + + ITC Avant Garde Gothic + + + + + URW Gothic + + ITC Avant Garde Gothic + + + + + TeX Gyre Adventor + + ITC Avant Garde Gothic + + + + + Bookman + + ITC Bookman + + + + + URW Bookman L + + ITC Bookman + + + + + Bookman URW + + ITC Bookman + + + + + URW Bookman + + ITC Bookman + + + + + TeX Gyre Bonum + + ITC Bookman + + + + + Bookman Old Style + + ITC Bookman + + + + + Zapf Chancery + + ITC Zapf Chancery + + + + + URW Chancery L + + ITC Zapf Chancery + + + + + Chancery URW + + ITC Zapf Chancery + + + + + Z003 + + ITC Zapf Chancery + + + + + TeX Gyre Chorus + + ITC Zapf Chancery + + + + + URW Palladio L + + Palatino + + + + + Palladio URW + + Palatino + + + + + P052 + + Palatino + + + + + TeX Gyre Pagella + + Palatino + + + + + Palatino Linotype + + Palatino + + + + + Century Schoolbook L + + New Century Schoolbook + + + + + Century SchoolBook URW + + New Century Schoolbook + + + + + C059 + + New Century Schoolbook + + + + + TeX Gyre Schola + + New Century Schoolbook + + + + + Century Schoolbook + + New Century Schoolbook + + + + + + Arimo + + Arial + + + + + Liberation Sans + + Arial + + + + + Liberation Sans Narrow + + Arial Narrow + + + + + Albany + + Arial + + + + + Albany AMT + + Arial + + + + + Tinos + + Times New Roman + + + + + Liberation Serif + + Times New Roman + + + + + Thorndale + + Times New Roman + + + + + Thorndale AMT + + Times New Roman + + + + + Cousine + + Courier New + + + + + Liberation Mono + + Courier New + + + + + Cumberland + + Courier New + + + + + Cumberland AMT + + Courier New + + + + + Gelasio + + Georgia + + + + + Caladea + + Cambria + + + + + Carlito + + Calibri + + + + + SymbolNeu + + Symbol + + + + + + + + Helvetica + + Arial + + + + + Helvetica Narrow + + Arial Narrow + + + + + Times + + Times New Roman + + + + + Courier + + Courier New + + + + + + Arial + + Helvetica + + + + + Arial Narrow + + Helvetica Narrow + + + + + Times New Roman + + Times + + + + + Courier New + + Courier + + + + + + + + Helvetica + + TeX Gyre Heros + + + + + Helvetica Narrow + + TeX Gyre Heros Cn + + + + + Times + + TeX Gyre Termes + + + + + Courier + + TeX Gyre Cursor + + + + + Courier Std + + Courier + + + + + ITC Avant Garde Gothic + + TeX Gyre Adventor + + + + + ITC Bookman + + Bookman Old Style + TeX Gyre Bonum + + + + + ITC Zapf Chancery + + TeX Gyre Chorus + + + + + Palatino + + Palatino Linotype + TeX Gyre Pagella + + + + + New Century Schoolbook + + Century Schoolbook + TeX Gyre Schola + + + + + + Arial + + Arimo + Liberation Sans + Albany + Albany AMT + + + + + Arial Narrow + + Liberation Sans Narrow + + + + + Times New Roman + + Tinos + Liberation Serif + Thorndale + Thorndale AMT + + + + + Courier New + + Cousine + Liberation Mono + Cumberland + Cumberland AMT + + + + + Georgia + + Gelasio + + + + + Cambria + + Caladea + + + + + Calibri + + Carlito + + + + + Symbol + + SymbolNeu + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/40-nonlatin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/40-nonlatin.conf new file mode 100644 index 0000000..f8d96ce --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/40-nonlatin.conf @@ -0,0 +1,332 @@ + + + + Set substitutions for non-Latin fonts + + + + + Nazli + serif + + + Lotoos + serif + + + Mitra + serif + + + Ferdosi + serif + + + Badr + serif + + + Zar + serif + + + Titr + serif + + + Jadid + serif + + + Kochi Mincho + serif + + + AR PL SungtiL GB + serif + + + AR PL Mingti2L Big5 + serif + + + MS 明朝 + serif + + + NanumMyeongjo + serif + + + UnBatang + serif + + + Baekmuk Batang + serif + + + MgOpen Canonica + serif + + + Sazanami Mincho + serif + + + AR PL ZenKai Uni + serif + + + ZYSong18030 + serif + + + FreeSerif + serif + + + SimSun + serif + + + + Arshia + sans-serif + + + Elham + sans-serif + + + Farnaz + sans-serif + + + Nasim + sans-serif + + + Sina + sans-serif + + + Roya + sans-serif + + + Koodak + sans-serif + + + Terafik + sans-serif + + + Kochi Gothic + sans-serif + + + AR PL KaitiM GB + sans-serif + + + AR PL KaitiM Big5 + sans-serif + + + MS ゴシック + sans-serif + + + NanumGothic + sans-serif + + + UnDotum + sans-serif + + + Baekmuk Dotum + sans-serif + + + MgOpen Modata + sans-serif + + + Sazanami Gothic + sans-serif + + + AR PL ShanHeiSun Uni + sans-serif + + + ZYSong18030 + sans-serif + + + FreeSans + sans-serif + + + + NSimSun + monospace + + + ZYSong18030 + monospace + + + NanumGothicCoding + monospace + + + FreeMono + monospace + + + + + Homa + fantasy + + + Kamran + fantasy + + + Fantezi + fantasy + + + Tabassom + fantasy + + + + + IranNastaliq + cursive + + + Nafees Nastaleeq + cursive + + + + + Noto Sans Arabic UI + system-ui + + + Noto Sans Bengali UI + system-ui + + + Noto Sans Devanagari UI + system-ui + + + Noto Sans Gujarati UI + system-ui + + + Noto Sans Gurmukhi UI + system-ui + + + Noto Sans Kannada UI + system-ui + + + Noto Sans Khmer UI + system-ui + + + Noto Sans Lao UI + system-ui + + + Noto Sans Malayalam UI + system-ui + + + Noto Sans Myanmar UI + system-ui + + + Noto Sans Oriya UI + system-ui + + + Noto Sans Sinhala UI + system-ui + + + Noto Sans Tamil UI + system-ui + + + Noto Sans Telugu UI + system-ui + + + Noto Sans Thai UI + system-ui + + + Leelawadee UI + system-ui + + + Nirmala UI + system-ui + + + Yu Gothic UI + system-ui + + + Meiryo UI + system-ui + + + MS UI Gothic + system-ui + + + Khmer UI + system-ui + + + Lao UI + system-ui + + + Microsoft JhengHei UI + system-ui + + + Microsoft YaHei UI + system-ui + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/45-generic.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/45-generic.conf new file mode 100644 index 0000000..5c1bd36 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/45-generic.conf @@ -0,0 +1,136 @@ + + + + Set substitutions for emoji/math fonts + + + + + + + + Noto Color Emoji + emoji + + + Apple Color Emoji + emoji + + + Segoe UI Emoji + emoji + + + Twitter Color Emoji + emoji + + + EmojiOne Mozilla + emoji + + + + Emoji Two + emoji + + + JoyPixels + emoji + + + Emoji One + emoji + + + + Noto Emoji + emoji + + + Android Emoji + emoji + + + + + + emoji + + + und-zsye + + + + + + und-zsye + + + emoji + + + + + emoji + + + + + + + + + XITS Math + math + + + STIX Two Math + math + + + Cambria Math + math + + + Latin Modern Math + math + + + Minion Math + math + + + Lucida Math + math + + + Asana Math + math + + + + + + math + + + und-zmth + + + + + + und-zmth + + + math + + + + + math + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/45-latin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/45-latin.conf new file mode 100644 index 0000000..86486c9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/45-latin.conf @@ -0,0 +1,301 @@ + + + + Set substitutions for Latin fonts + + + + + Bitstream Vera Serif + serif + + + Cambria + serif + + + Constantia + serif + + + DejaVu Serif + serif + + + Elephant + serif + + + Garamond + serif + + + Georgia + serif + + + Liberation Serif + serif + + + Luxi Serif + serif + + + MS Serif + serif + + + Nimbus Roman No9 L + serif + + + Nimbus Roman + serif + + + Palatino Linotype + serif + + + Thorndale AMT + serif + + + Thorndale + serif + + + Times New Roman + serif + + + Times + serif + + + + Albany AMT + sans-serif + + + Albany + sans-serif + + + Arial Unicode MS + sans-serif + + + Arial + sans-serif + + + Bitstream Vera Sans + sans-serif + + + Britannic + sans-serif + + + Calibri + sans-serif + + + Candara + sans-serif + + + Century Gothic + sans-serif + + + Corbel + sans-serif + + + DejaVu Sans + sans-serif + + + Helvetica + sans-serif + + + Haettenschweiler + sans-serif + + + Liberation Sans + sans-serif + + + MS Sans Serif + sans-serif + + + Nimbus Sans L + sans-serif + + + Nimbus Sans + sans-serif + + + Luxi Sans + sans-serif + + + Tahoma + sans-serif + + + Trebuchet MS + sans-serif + + + Twentieth Century + sans-serif + + + Verdana + sans-serif + + + + Andale Mono + monospace + + + Bitstream Vera Sans Mono + monospace + + + Consolas + monospace + + + Courier New + monospace + + + Courier + monospace + + + Courier Std + monospace + + + Cumberland AMT + monospace + + + Cumberland + monospace + + + DejaVu Sans Mono + monospace + + + Fixedsys + monospace + + + Inconsolata + monospace + + + Liberation Mono + monospace + + + Luxi Mono + monospace + + + Nimbus Mono L + monospace + + + Nimbus Mono + monospace + + + Nimbus Mono PS + monospace + + + Terminal + monospace + + + + Bauhaus Std + fantasy + + + Cooper Std + fantasy + + + Copperplate Gothic Std + fantasy + + + Impact + fantasy + + + + Comic Sans MS + cursive + + + ITC Zapf Chancery Std + cursive + + + Zapfino + cursive + + + + Cantarell + system-ui + + + Noto Sans UI + system-ui + + + Segoe UI + system-ui + + + Segoe UI Historic + system-ui + + + Segoe UI Symbol + system-ui + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/48-spacing.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/48-spacing.conf new file mode 100644 index 0000000..6df5c11 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/48-spacing.conf @@ -0,0 +1,16 @@ + + + + Add mono to the family when spacing is 100 + + + + 100 + + + monospace + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/49-sansserif.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/49-sansserif.conf new file mode 100644 index 0000000..6cc3a1c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/49-sansserif.conf @@ -0,0 +1,22 @@ + + + + Add sans-serif to the family when no generic name + + + + sans-serif + + + serif + + + monospace + + + sans-serif + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/50-user.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/50-user.conf new file mode 100644 index 0000000..d019f4d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/50-user.conf @@ -0,0 +1,16 @@ + + + + Load per-user customization files + + fontconfig/conf.d + fontconfig/fonts.conf + + ~/.fonts.conf.d + ~/.fonts.conf + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/51-local.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/51-local.conf new file mode 100644 index 0000000..82e3c1b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/51-local.conf @@ -0,0 +1,7 @@ + + + + Load local customization file + + local.conf + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/60-generic.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/60-generic.conf new file mode 100644 index 0000000..7831507 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/60-generic.conf @@ -0,0 +1,64 @@ + + + + Set preferable fonts for emoji/math fonts + + + + + + + + und-zsye + + + true + + + false + + + true + + + + + + emoji + + + Noto Color Emoji + Apple Color Emoji + Segoe UI Emoji + Twitter Color Emoji + EmojiOne Mozilla + + Emoji Two + JoyPixels + Emoji One + + Noto Emoji + Android Emoji + + + + + + + math + + XITS Math + STIX Two Math + Cambria Math + Latin Modern Math + Minion Math + Lucida Math + Asana Math + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/60-latin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/60-latin.conf new file mode 100644 index 0000000..ff933af --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/60-latin.conf @@ -0,0 +1,88 @@ + + + + Set preferable fonts for Latin + + serif + + Noto Serif + DejaVu Serif + Times New Roman + Thorndale AMT + Luxi Serif + Nimbus Roman No9 L + Nimbus Roman + Times + + + + sans-serif + + Noto Sans + DejaVu Sans + Verdana + Arial + Albany AMT + Luxi Sans + Nimbus Sans L + Nimbus Sans + Helvetica + Lucida Sans Unicode + BPG Glaho International + Tahoma + + + + monospace + + Noto Sans Mono + DejaVu Sans Mono + Inconsolata + Andale Mono + Courier New + Cumberland AMT + Luxi Mono + Nimbus Mono L + Nimbus Mono + Nimbus Mono PS + Courier + + + + + fantasy + + Impact + Copperplate Gothic Std + Cooper Std + Bauhaus Std + + + + + cursive + + ITC Zapf Chancery Std + Zapfino + Comic Sans MS + + + + + system-ui + + Cantarell + Noto Sans UI + Segoe UI + Segoe UI Historic + Segoe UI Symbol + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/65-fonts-persian.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/65-fonts-persian.conf new file mode 100644 index 0000000..47da1bb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/65-fonts-persian.conf @@ -0,0 +1,418 @@ + + + + + + + + + + Nesf + Nesf2 + + + Nesf2 + Persian_sansserif_default + + + + + + Nazanin + Nazli + + + Lotus + Lotoos + + + Yaqut + Yaghoot + + + Yaghut + Yaghoot + + + Traffic + Terafik + + + Ferdowsi + Ferdosi + + + Fantezy + Fantezi + + + + + + + + Jadid + Persian_title + + + Titr + Persian_title + + + + + Kamran + + Persian_fantasy + Homa + + + + Homa + + Persian_fantasy + Kamran + + + + Fantezi + Persian_fantasy + + + Tabassom + Persian_fantasy + + + + + Arshia + Persian_square + + + Nasim + Persian_square + + + Elham + + Persian_square + Farnaz + + + + Farnaz + + Persian_square + Elham + + + + Sina + Persian_square + + + + + + + Persian_title + + Titr + Jadid + Persian_serif + + + + + + Persian_fantasy + + Homa + Kamran + Fantezi + Tabassom + Persian_square + + + + + + Persian_square + + Arshia + Elham + Farnaz + Nasim + Sina + Persian_serif + + + + + + + + Elham + + + farsiweb + + + + + + Homa + + + farsiweb + + + + + + Koodak + + + farsiweb + + + + + + Nazli + + + farsiweb + + + + + + Roya + + + farsiweb + + + + + + Terafik + + + farsiweb + + + + + + Titr + + + farsiweb + + + + + + + + + + TURNED-OFF + + + farsiweb + + + + roman + + + + roman + + + + + matrix + 1-0.2 + 01 + + + + + + oblique + + + + + + + + + farsiweb + + + false + + + false + + + false + + + + + + + + + serif + + Nazli + Lotoos + Mitra + Ferdosi + Badr + Zar + + + + + + sans-serif + + Roya + Koodak + Terafik + + + + + + monospace + + + Terafik + + + + + + fantasy + + Homa + Kamran + Fantezi + Tabassom + + + + + + cursive + + IranNastaliq + Nafees Nastaleeq + + + + + + + + + serif + + + 200 + + + 24 + + + Titr + + + + + + + sans-serif + + + 200 + + + 24 + + + Titr + + + + + + + Persian_sansserif_default + + + 200 + + + 24 + + + Titr + + + + + + + + + Persian_sansserif_default + + + Roya + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/65-nonlatin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/65-nonlatin.conf new file mode 100644 index 0000000..4d135b0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/65-nonlatin.conf @@ -0,0 +1,228 @@ + + + + Set preferable fonts for non-Latin + + serif + + Artsounk + BPG UTF8 M + Kinnari + Norasi + Frank Ruehl + Dror + JG LaoTimes + Saysettha Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Mincho + SimSun + PMingLiu + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + ZYSong18030 + HanyiSong + MgOpen Canonica + Sazanami Mincho + IPAMonaMincho + IPAMincho + Kochi Mincho + AR PL SungtiL GB + AR PL Mingti2L Big5 + AR PL Zenkai Uni + MS 明朝 + ZYSong18030 + NanumMyeongjo + UnBatang + Baekmuk Batang + KacstQura + Frank Ruehl CLM + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Rachana + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + sans-serif + + Nachlieli + Lucida Sans Unicode + Yudit Unicode + Kerkis + ArmNet Helvetica + Artsounk + BPG UTF8 M + Waree + Loma + Garuda + Umpush + Saysettha Unicode + JG Lao Old Arial + GF Zemen Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Gothic + UmePlus P Gothic + Microsoft YaHei + Microsoft JhengHei + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + MgOpen Modata + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + AR PL KaitiM Big5 + AR PL ShanHeiSun Uni + AR PL SungtiL GB + AR PL Mingti2L Big5 + MS ゴシック + ZYSong18030 + TSCu_Paranar + NanumGothic + UnDotum + Baekmuk Dotum + Baekmuk Gulim + KacstQura + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + monospace + + Miriam Mono + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + MS Gothic + UmePlus Gothic + NSimSun + MingLiu + AR PL ShanHeiSun Uni + AR PL New Sung Mono + HanyiSong + AR PL SungtiL GB + AR PL Mingti2L Big5 + ZYSong18030 + NanumGothicCoding + NanumGothic + UnDotum + Baekmuk Dotum + Baekmuk Gulim + TlwgTypo + TlwgTypist + TlwgTypewriter + TlwgMono + Hasida + GF Zemen Unicode + Hapax Berbère + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + + system-ui + + Noto Sans Arabic UI + Noto Sans Bengali UI + Noto Sans Devanagari UI + Noto Sans Gujarati UI + Noto Sans Gurmukhi UI + Noto Sans Kannada UI + Noto Sans Khmer UI + Noto Sans Lao UI + Noto Sans Malayalam UI + Noto Sans Myanmar UI + Noto Sans Oriya UI + Noto Sans Sinhala UI + Noto Sans Tamil UI + Noto Sans Telugu UI + Noto Sans Thai UI + Leelawadee UI + Nirmala UI + Yu Gothic UI + Meiryo UI + MS UI Gothic + Khmer UI + Lao UI + Microsoft YaHei UI + Microsoft JhengHei UI + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/69-unifont.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/69-unifont.conf new file mode 100644 index 0000000..02854ff --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/69-unifont.conf @@ -0,0 +1,28 @@ + + + + + serif + + FreeSerif + Code2000 + Code2001 + + + + sans-serif + + FreeSans + Arial Unicode MS + Arial Unicode + Code2000 + Code2001 + + + + monospace + + FreeMono + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/80-delicious.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/80-delicious.conf new file mode 100644 index 0000000..d20990c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/80-delicious.conf @@ -0,0 +1,19 @@ + + + + + + + + + Delicious + + + Heavy + + + heavy + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/90-synthetic.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/90-synthetic.conf new file mode 100644 index 0000000..dfce674 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/90-synthetic.conf @@ -0,0 +1,64 @@ + + + + + + + + + roman + + + + roman + + + + + matrix + 10.2 + 01 + + + + + + oblique + + + + false + + + + + + + + + medium + + + + bold + + + + true + + + + bold + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/README b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/README new file mode 100644 index 0000000..75b4aee --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/conf.d/README @@ -0,0 +1,23 @@ +conf.d/README + +Each file in this directory is a fontconfig configuration file. Fontconfig +scans this directory, loading all files of the form [0-9][0-9]*.conf. +These files are normally installed in /data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/share/fontconfig/conf.avail +and then symlinked here, allowing them to be easily installed and then +enabled/disabled by adjusting the symlinks. + +The files are loaded in numeric order, the structure of the configuration +has led to the following conventions in usage: + + Files beginning with: Contain: + + 00 through 09 Font directories + 10 through 19 system rendering defaults (AA, etc) + 20 through 29 font rendering options + 30 through 39 family substitution + 40 through 49 generic identification, map family->generic + 50 through 59 alternate config file loading + 60 through 69 generic aliases, map generic->family + 70 through 79 select font (adjust which fonts are available) + 80 through 89 match target="scan" (modify scanned patterns) + 90 through 99 font synthesis diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/fonts.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/fonts.conf new file mode 100644 index 0000000..c8fdfc2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/etc/fonts/fonts.conf @@ -0,0 +1,103 @@ + + + + + Default configuration file + + + + + + WINDOWSFONTDIR + WINDOWSUSERFONTDIR + + + fonts + + ~/.fonts + + + + + mono + + + monospace + + + + + + + sans serif + + + sans-serif + + + + + + + sans + + + sans-serif + + + + + + system ui + + + system-ui + + + + + conf.d + + + + LOCAL_APPDATA_FONTCONFIG_CACHE + fontconfig + + ~/.fontconfig + + + + + 30 + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom.h new file mode 100644 index 0000000..0650a11 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ + +/*!\defgroup aom AOM + * \ingroup codecs + * AOM is aom's newest video compression algorithm that uses motion + * compensated prediction, Discrete Cosine Transform (DCT) coding of the + * prediction error signal and context dependent entropy coding techniques + * based on arithmetic principles. It features: + * - YUV 4:2:0 image format + * - Macro-block based coding (16x16 luma plus two 8x8 chroma) + * - 1/4 (1/8) pixel accuracy motion compensated prediction + * - 4x4 DCT transform + * - 128 level linear quantizer + * - In loop deblocking filter + * - Context-based entropy coding + * + * @{ + */ +/*!\file + * \brief Provides controls common to both the AOM encoder and decoder. + */ +#ifndef AOM_AOM_AOM_H_ +#define AOM_AOM_AOM_H_ + +#include "aom/aom_codec.h" +#include "aom/aom_image.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*!\brief Control functions + * + * The set of macros define the control functions of AOM interface + * The range for common control IDs is 230-255(max). + */ +enum aom_com_control_id { + /*!\brief Codec control function to get a pointer to a reference frame + * + * av1_ref_frame_t* parameter + */ + AV1_GET_REFERENCE = 230, + + /*!\brief Codec control function to write a frame into a reference buffer + * + * av1_ref_frame_t* parameter + */ + AV1_SET_REFERENCE = 231, + + /*!\brief Codec control function to get a copy of reference frame from the + * decoder + * + * av1_ref_frame_t* parameter + */ + AV1_COPY_REFERENCE = 232, + + /*!\brief Codec control function to get a pointer to the new frame + * + * aom_image_t* parameter + */ + AV1_GET_NEW_FRAME_IMAGE = 233, + + /*!\brief Codec control function to copy the new frame to an external buffer + * + * aom_image_t* parameter + */ + AV1_COPY_NEW_FRAME_IMAGE = 234, + + /*!\brief Start point of control IDs for aom_dec_control_id. + * Any new common control IDs should be added above. + */ + AOM_DECODER_CTRL_ID_START = 256 + // No common control IDs should be added after AOM_DECODER_CTRL_ID_START. +}; + +/*!\brief AV1 specific reference frame data struct + * + * Define the data struct to access av1 reference frames. + */ +typedef struct av1_ref_frame { + int idx; /**< frame index to get (input) */ + int use_external_ref; /**< Directly use external ref buffer(decoder only) */ + aom_image_t img; /**< img structure to populate (output) */ +} av1_ref_frame_t; + +/*!\cond */ +/*!\brief aom decoder control function parameter type + * + * Defines the data type for each of AOM decoder control function requires. + * + * \note For each control ID "X", a macro-define of + * AOM_CTRL_X is provided. It is used at compile time to determine + * if the control ID is supported by the libaom library available, + * when the libaom version cannot be controlled. + */ +AOM_CTRL_USE_TYPE(AV1_GET_REFERENCE, av1_ref_frame_t *) +#define AOM_CTRL_AV1_GET_REFERENCE + +AOM_CTRL_USE_TYPE(AV1_SET_REFERENCE, av1_ref_frame_t *) +#define AOM_CTRL_AV1_SET_REFERENCE + +AOM_CTRL_USE_TYPE(AV1_COPY_REFERENCE, av1_ref_frame_t *) +#define AOM_CTRL_AV1_COPY_REFERENCE + +AOM_CTRL_USE_TYPE(AV1_GET_NEW_FRAME_IMAGE, aom_image_t *) +#define AOM_CTRL_AV1_GET_NEW_FRAME_IMAGE + +AOM_CTRL_USE_TYPE(AV1_COPY_NEW_FRAME_IMAGE, aom_image_t *) +#define AOM_CTRL_AV1_COPY_NEW_FRAME_IMAGE + +/*!\endcond */ +/*! @} - end defgroup aom */ + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AOM_AOM_AOM_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_codec.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_codec.h new file mode 100644 index 0000000..49d48cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_codec.h @@ -0,0 +1,573 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ + +/////////////////////////////////////////////////////////////////////////////// +// Internal implementation details +/////////////////////////////////////////////////////////////////////////////// +// +// There are two levels of interfaces used to access the AOM codec: the +// the aom_codec_iface and the aom_codec_ctx. +// +// 1. aom_codec_iface_t +// (Related files: aom/aom_codec.h, aom/src/aom_codec.c, +// aom/internal/aom_codec_internal.h, av1/av1_cx_iface.c, +// av1/av1_dx_iface.c) +// +// Used to initialize the codec context, which contains the configuration for +// for modifying the encoder/decoder during run-time. See the other +// documentation in this header file for more details. For the most part, +// users will call helper functions, such as aom_codec_iface_name, +// aom_codec_get_caps, etc., to interact with it. +// +// The main purpose of the aom_codec_iface_t is to provide a way to generate +// a default codec config, find out what capabilities the implementation has, +// and create an aom_codec_ctx_t (which is actually used to interact with the +// codec). +// +// Note that the implementations for the AV1 algorithm are located in +// av1/av1_cx_iface.c and av1/av1_dx_iface.c +// +// +// 2. aom_codec_ctx_t +// (Related files: aom/aom_codec.h, av1/av1_cx_iface.c, av1/av1_dx_iface.c, +// aom/aomcx.h, aom/aomdx.h, aom/src/aom_encoder.c, aom/src/aom_decoder.c) +// +// The actual interface between user code and the codec. It stores the name +// of the codec, a pointer back to the aom_codec_iface_t that initialized it, +// initialization flags, a config for either encoder or the decoder, and a +// pointer to internal data. +// +// The codec is configured / queried through calls to aom_codec_control, +// which takes a control ID (listed in aomcx.h and aomdx.h) and a parameter. +// In the case of "getter" control IDs, the parameter is modified to have +// the requested value; in the case of "setter" control IDs, the codec's +// configuration is changed based on the parameter. Note that a aom_codec_err_t +// is returned, which indicates if the operation was successful or not. +// +// Note that for the encoder, the aom_codec_alg_priv_t points to the +// the aom_codec_alg_priv structure in av1/av1_cx_iface.c, and for the decoder, +// the struct in av1/av1_dx_iface.c. Variables such as AV1_COMP cpi are stored +// here and also used in the core algorithm. +// +// At the end, aom_codec_destroy should be called for each initialized +// aom_codec_ctx_t. + +/*!\defgroup codec Common Algorithm Interface + * This abstraction allows applications to easily support multiple video + * formats with minimal code duplication. This section describes the interface + * common to all codecs (both encoders and decoders). + * @{ + */ + +/*!\file + * \brief Describes the codec algorithm interface to applications. + * + * This file describes the interface between an application and a + * video codec algorithm. + * + * An application instantiates a specific codec instance by using + * aom_codec_dec_init() or aom_codec_enc_init() and a pointer to the + * algorithm's interface structure: + *
+ *     my_app.c:
+ *       extern aom_codec_iface_t my_codec;
+ *       {
+ *           aom_codec_ctx_t algo;
+ *           int threads = 4;
+ *           aom_codec_dec_cfg_t cfg = { threads, 0, 0, 1 };
+ *           res = aom_codec_dec_init(&algo, &my_codec, &cfg, 0);
+ *       }
+ *     
+ * + * Once initialized, the instance is managed using other functions from + * the aom_codec_* family. + */ +#ifndef AOM_AOM_AOM_CODEC_H_ +#define AOM_AOM_AOM_CODEC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "aom/aom_image.h" +#include "aom/aom_integer.h" + +/*!\brief Decorator indicating a function is deprecated */ +#ifndef AOM_DEPRECATED +#if defined(__GNUC__) && __GNUC__ +#define AOM_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) +#define AOM_DEPRECATED +#else +#define AOM_DEPRECATED +#endif +#endif /* AOM_DEPRECATED */ + +#ifndef AOM_DECLSPEC_DEPRECATED +#if defined(__GNUC__) && __GNUC__ +#define AOM_DECLSPEC_DEPRECATED /**< \copydoc #AOM_DEPRECATED */ +#elif defined(_MSC_VER) +/*!\brief \copydoc #AOM_DEPRECATED */ +#define AOM_DECLSPEC_DEPRECATED __declspec(deprecated) +#else +#define AOM_DECLSPEC_DEPRECATED /**< \copydoc #AOM_DEPRECATED */ +#endif +#endif /* AOM_DECLSPEC_DEPRECATED */ + +/*!\brief Decorator indicating a function is potentially unused */ +#ifdef AOM_UNUSED +#elif defined(__GNUC__) || defined(__clang__) +#define AOM_UNUSED __attribute__((unused)) +#else +#define AOM_UNUSED +#endif + +/*!\brief Decorator indicating that given struct/union/enum is packed */ +#ifndef ATTRIBUTE_PACKED +#if defined(__GNUC__) && __GNUC__ +#define ATTRIBUTE_PACKED __attribute__((packed)) +#elif defined(_MSC_VER) +#define ATTRIBUTE_PACKED +#else +#define ATTRIBUTE_PACKED +#endif +#endif /* ATTRIBUTE_PACKED */ + +/*!\brief Current ABI version number + * + * \internal + * If this file is altered in any way that changes the ABI, this value + * must be bumped. Examples include, but are not limited to, changing + * types, removing or reassigning enums, adding/removing/rearranging + * fields to structures + */ +#define AOM_CODEC_ABI_VERSION (7 + AOM_IMAGE_ABI_VERSION) /**<\hideinitializer*/ + +/*!\brief Algorithm return codes */ +typedef enum { + /*!\brief Operation completed without error */ + AOM_CODEC_OK, + + /*!\brief Unspecified error */ + AOM_CODEC_ERROR, + + /*!\brief Memory operation failed */ + AOM_CODEC_MEM_ERROR, + + /*!\brief ABI version mismatch */ + AOM_CODEC_ABI_MISMATCH, + + /*!\brief Algorithm does not have required capability */ + AOM_CODEC_INCAPABLE, + + /*!\brief The given bitstream is not supported. + * + * The bitstream was unable to be parsed at the highest level. The decoder + * is unable to proceed. This error \ref SHOULD be treated as fatal to the + * stream. */ + AOM_CODEC_UNSUP_BITSTREAM, + + /*!\brief Encoded bitstream uses an unsupported feature + * + * The decoder does not implement a feature required by the encoder. This + * return code should only be used for features that prevent future + * pictures from being properly decoded. This error \ref MAY be treated as + * fatal to the stream or \ref MAY be treated as fatal to the current GOP. + */ + AOM_CODEC_UNSUP_FEATURE, + + /*!\brief The coded data for this stream is corrupt or incomplete + * + * There was a problem decoding the current frame. This return code + * should only be used for failures that prevent future pictures from + * being properly decoded. This error \ref MAY be treated as fatal to the + * stream or \ref MAY be treated as fatal to the current GOP. If decoding + * is continued for the current GOP, artifacts may be present. + */ + AOM_CODEC_CORRUPT_FRAME, + + /*!\brief An application-supplied parameter is not valid. + * + */ + AOM_CODEC_INVALID_PARAM, + + /*!\brief An iterator reached the end of list. + * + */ + AOM_CODEC_LIST_END + +} aom_codec_err_t; + +/*! \brief Codec capabilities bitfield + * + * Each codec advertises the capabilities it supports as part of its + * ::aom_codec_iface_t interface structure. Capabilities are extra interfaces + * or functionality, and are not required to be supported. + * + * The available flags are specified by AOM_CODEC_CAP_* defines. + */ +typedef long aom_codec_caps_t; +#define AOM_CODEC_CAP_DECODER 0x1 /**< Is a decoder */ +#define AOM_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */ + +/*! \brief Initialization-time Feature Enabling + * + * Certain codec features must be known at initialization time, to allow for + * proper memory allocation. + * + * The available flags are specified by AOM_CODEC_USE_* defines. + */ +typedef long aom_codec_flags_t; + +/*!\brief Time Stamp Type + * + * An integer, which when multiplied by the stream's time base, provides + * the absolute time of a sample. + */ +typedef int64_t aom_codec_pts_t; + +/*!\brief Codec interface structure. + * + * Contains function pointers and other data private to the codec + * implementation. This structure is opaque to the application. Common + * functions used with this structure: + * - aom_codec_iface_name(aom_codec_iface_t *iface): get the + * name of the codec + * - aom_codec_get_caps(aom_codec_iface_t *iface): returns + * the capabilities of the codec + * - aom_codec_enc_config_default: generate the default config for + * initializing the encoder (see documention in aom_encoder.h) + * - aom_codec_dec_init, aom_codec_enc_init: initialize the codec context + * structure (see documentation on aom_codec_ctx). + * + * To get access to the AV1 encoder and decoder, use aom_codec_av1_cx() and + * aom_codec_av1_dx(). + */ +typedef const struct aom_codec_iface aom_codec_iface_t; + +/*!\brief Codec private data structure. + * + * Contains data private to the codec implementation. This structure is opaque + * to the application. + */ +typedef struct aom_codec_priv aom_codec_priv_t; + +/*!\brief Compressed Frame Flags + * + * This type represents a bitfield containing information about a compressed + * frame that may be useful to an application. The most significant 16 bits + * can be used by an algorithm to provide additional detail, for example to + * support frame types that are codec specific (MPEG-1 D-frames for example) + */ +typedef uint32_t aom_codec_frame_flags_t; +#define AOM_FRAME_IS_KEY 0x1 /**< frame is the start of a GOP */ +/*!\brief frame can be dropped without affecting the stream (no future frame + * depends on this one) */ +#define AOM_FRAME_IS_DROPPABLE 0x2 +/*!\brief this is an INTRA_ONLY frame */ +#define AOM_FRAME_IS_INTRAONLY 0x10 +/*!\brief this is an S-frame */ +#define AOM_FRAME_IS_SWITCH 0x20 +/*!\brief this is an error-resilient frame */ +#define AOM_FRAME_IS_ERROR_RESILIENT 0x40 +/*!\brief this is a key-frame dependent recovery-point frame */ +#define AOM_FRAME_IS_DELAYED_RANDOM_ACCESS_POINT 0x80 + +/*!\brief Iterator + * + * Opaque storage used for iterating over lists. + */ +typedef const void *aom_codec_iter_t; + +/*!\brief Codec context structure + * + * All codecs \ref MUST support this context structure fully. In general, + * this data should be considered private to the codec algorithm, and + * not be manipulated or examined by the calling application. Applications + * may reference the 'name' member to get a printable description of the + * algorithm. + */ +typedef struct aom_codec_ctx { + const char *name; /**< Printable interface name */ + aom_codec_iface_t *iface; /**< Interface pointers */ + aom_codec_err_t err; /**< Last returned error */ + const char *err_detail; /**< Detailed info, if available */ + aom_codec_flags_t init_flags; /**< Flags passed at init time */ + union { + /**< Decoder Configuration Pointer */ + const struct aom_codec_dec_cfg *dec; + /**< Encoder Configuration Pointer */ + const struct aom_codec_enc_cfg *enc; + const void *raw; + } config; /**< Configuration pointer aliasing union */ + aom_codec_priv_t *priv; /**< Algorithm private storage */ +} aom_codec_ctx_t; + +/*!\brief Bit depth for codec + * * + * This enumeration determines the bit depth of the codec. + */ +typedef enum aom_bit_depth { + AOM_BITS_8 = 8, /**< 8 bits */ + AOM_BITS_10 = 10, /**< 10 bits */ + AOM_BITS_12 = 12, /**< 12 bits */ +} aom_bit_depth_t; + +/*!\brief Superblock size selection. + * + * Defines the superblock size used for encoding. The superblock size can + * either be fixed at 64x64 or 128x128 pixels, or it can be dynamically + * selected by the encoder for each frame. + */ +typedef enum aom_superblock_size { + AOM_SUPERBLOCK_SIZE_64X64, /**< Always use 64x64 superblocks. */ + AOM_SUPERBLOCK_SIZE_128X128, /**< Always use 128x128 superblocks. */ + AOM_SUPERBLOCK_SIZE_DYNAMIC /**< Select superblock size dynamically. */ +} aom_superblock_size_t; + +/* + * Library Version Number Interface + * + * For example, see the following sample return values: + * aom_codec_version() (1<<16 | 2<<8 | 3) + * aom_codec_version_str() "v1.2.3-rc1-16-gec6a1ba" + * aom_codec_version_extra_str() "rc1-16-gec6a1ba" + */ + +/*!\brief Return the version information (as an integer) + * + * Returns a packed encoding of the library version number. This will only + * include the major.minor.patch component of the version number. Note that this + * encoded value should be accessed through the macros provided, as the encoding + * may change in the future. + * + */ +int aom_codec_version(void); + +/*!\brief Return the major version number */ +#define aom_codec_version_major() ((aom_codec_version() >> 16) & 0xff) + +/*!\brief Return the minor version number */ +#define aom_codec_version_minor() ((aom_codec_version() >> 8) & 0xff) + +/*!\brief Return the patch version number */ +#define aom_codec_version_patch() ((aom_codec_version() >> 0) & 0xff) + +/*!\brief Return the version information (as a string) + * + * Returns a printable string containing the full library version number. This + * may contain additional text following the three digit version number, as to + * indicate release candidates, prerelease versions, etc. + * + */ +const char *aom_codec_version_str(void); + +/*!\brief Return the version information (as a string) + * + * Returns a printable "extra string". This is the component of the string + * returned by aom_codec_version_str() following the three digit version number. + * + */ +const char *aom_codec_version_extra_str(void); + +/*!\brief Return the build configuration + * + * Returns a printable string containing an encoded version of the build + * configuration. This may be useful to aom support. + * + */ +const char *aom_codec_build_config(void); + +/*!\brief Return the name for a given interface + * + * Returns a human readable string for name of the given codec interface. + * + * \param[in] iface Interface pointer + * + */ +const char *aom_codec_iface_name(aom_codec_iface_t *iface); + +/*!\brief Convert error number to printable string + * + * Returns a human readable string for the last error returned by the + * algorithm. The returned error will be one line and will not contain + * any newline characters. + * + * + * \param[in] err Error number. + * + */ +const char *aom_codec_err_to_string(aom_codec_err_t err); + +/*!\brief Retrieve error synopsis for codec context + * + * Returns a human readable string for the last error returned by the + * algorithm. The returned error will be one line and will not contain + * any newline characters. + * + * + * \param[in] ctx Pointer to this instance's context. + * + */ +const char *aom_codec_error(aom_codec_ctx_t *ctx); + +/*!\brief Retrieve detailed error information for codec context + * + * Returns a human readable string providing detailed information about + * the last error. + * + * \param[in] ctx Pointer to this instance's context. + * + * \retval NULL + * No detailed information is available. + */ +const char *aom_codec_error_detail(aom_codec_ctx_t *ctx); + +/* REQUIRED FUNCTIONS + * + * The following functions are required to be implemented for all codecs. + * They represent the base case functionality expected of all codecs. + */ + +/*!\brief Destroy a codec instance + * + * Destroys a codec context, freeing any associated memory buffers. + * + * \param[in] ctx Pointer to this instance's context + * + * \retval #AOM_CODEC_OK + * The codec algorithm initialized. + * \retval #AOM_CODEC_MEM_ERROR + * Memory allocation failed. + */ +aom_codec_err_t aom_codec_destroy(aom_codec_ctx_t *ctx); + +/*!\brief Get the capabilities of an algorithm. + * + * Retrieves the capabilities bitfield from the algorithm's interface. + * + * \param[in] iface Pointer to the algorithm interface + * + */ +aom_codec_caps_t aom_codec_get_caps(aom_codec_iface_t *iface); + +/*!\name Codec Control + * + * The aom_codec_control function exchanges algorithm specific data with the + * codec instance. Additionally, the macro AOM_CODEC_CONTROL_TYPECHECKED is + * provided, which will type-check the parameter against the control ID before + * calling aom_codec_control - note that this macro requires the control ID + * to be directly encoded in it, e.g., + * AOM_CODEC_CONTROL_TYPECHECKED(&ctx, AOME_SET_CPUUSED, 8). + * + * The codec control IDs can be found in aom.h, aomcx.h, and aomdx.h + * (defined as aom_com_control_id, aome_enc_control_id, and aom_dec_control_id). + * @{ + */ +/*!\brief Algorithm Control + * + * aom_codec_control takes a context, a control ID, and a third parameter + * (with varying type). If the context is non-null and an error occurs, + * ctx->err will be set to the same value as the return value. + * + * \param[in] ctx Pointer to this instance's context + * \param[in] ctrl_id Algorithm specific control identifier. + * Must be nonzero. + * + * \retval #AOM_CODEC_OK + * The control request was processed. + * \retval #AOM_CODEC_ERROR + * The control request was not processed. + * \retval #AOM_CODEC_INVALID_PARAM + * The control ID was zero, or the data was not valid. + */ +aom_codec_err_t aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...); + +/*!\brief Key & Value API + * + * aom_codec_set_option() takes a context, a key (option name) and a value. If + * the context is non-null and an error occurs, ctx->err will be set to the same + * value as the return value. + * + * \param[in] ctx Pointer to this instance's context + * \param[in] name The name of the option (key) + * \param[in] value The value of the option + * + * \retval #AOM_CODEC_OK + * The value of the option was set. + * \retval #AOM_CODEC_INVALID_PARAM + * The data was not valid. + * \retval #AOM_CODEC_ERROR + * The option was not successfully set. + */ +aom_codec_err_t aom_codec_set_option(aom_codec_ctx_t *ctx, const char *name, + const char *value); + +/*!\brief aom_codec_control wrapper macro (adds type-checking, less flexible) + * + * This macro allows for type safe conversions across the variadic parameter + * to aom_codec_control(). However, it requires the explicit control ID + * be passed in (it cannot be passed in via a variable) -- otherwise a compiler + * error will occur. After the type checking, it calls aom_codec_control. + */ +#define AOM_CODEC_CONTROL_TYPECHECKED(ctx, id, data) \ + aom_codec_control_typechecked_##id(ctx, id, data) /**<\hideinitializer*/ + +/*!\brief Creates typechecking mechanisms for aom_codec_control + * + * It defines a static function with the correctly typed arguments as a wrapper + * to the type-unsafe aom_codec_control function. It also creates a typedef + * for each type. + */ +#define AOM_CTRL_USE_TYPE(id, typ) \ + static aom_codec_err_t aom_codec_control_typechecked_##id( \ + aom_codec_ctx_t *, int, typ) AOM_UNUSED; \ + static aom_codec_err_t aom_codec_control_typechecked_##id( \ + aom_codec_ctx_t *ctx, int ctrl, typ data) { \ + return aom_codec_control(ctx, ctrl, data); \ + } /**<\hideinitializer*/ \ + typedef typ aom_codec_control_type_##id; +/*!@} end Codec Control group */ + +/*!\brief OBU types. */ +typedef enum ATTRIBUTE_PACKED { + OBU_SEQUENCE_HEADER = 1, + OBU_TEMPORAL_DELIMITER = 2, + OBU_FRAME_HEADER = 3, + OBU_TILE_GROUP = 4, + OBU_METADATA = 5, + OBU_FRAME = 6, + OBU_REDUNDANT_FRAME_HEADER = 7, + OBU_TILE_LIST = 8, + OBU_PADDING = 15, +} OBU_TYPE; + +/*!\brief OBU metadata types. */ +typedef enum { + OBU_METADATA_TYPE_AOM_RESERVED_0 = 0, + OBU_METADATA_TYPE_HDR_CLL = 1, + OBU_METADATA_TYPE_HDR_MDCV = 2, + OBU_METADATA_TYPE_SCALABILITY = 3, + OBU_METADATA_TYPE_ITUT_T35 = 4, + OBU_METADATA_TYPE_TIMECODE = 5, +} OBU_METADATA_TYPE; + +/*!\brief Returns string representation of OBU_TYPE. + * + * \param[in] type The OBU_TYPE to convert to string. + */ +const char *aom_obu_type_to_string(OBU_TYPE type); + +/*!@} - end defgroup codec*/ +#ifdef __cplusplus +} +#endif +#endif // AOM_AOM_AOM_CODEC_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_decoder.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_decoder.h new file mode 100644 index 0000000..5ce7c7b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_decoder.h @@ -0,0 +1,257 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_AOM_AOM_DECODER_H_ +#define AOM_AOM_AOM_DECODER_H_ + +/*!\defgroup decoder Decoder Algorithm Interface + * \ingroup codec + * This abstraction allows applications using this decoder to easily support + * multiple video formats with minimal code duplication. This section describes + * the interface common to all decoders. + * @{ + */ + +/*!\file + * \brief Describes the decoder algorithm interface to applications. + * + * This file describes the interface between an application and a + * video decoder algorithm. + * + */ +#ifdef __cplusplus +extern "C" { +#endif + +#include "aom/aom_codec.h" +#include "aom/aom_frame_buffer.h" + +/*!\brief Current ABI version number + * + * \internal + * If this file is altered in any way that changes the ABI, this value + * must be bumped. Examples include, but are not limited to, changing + * types, removing or reassigning enums, adding/removing/rearranging + * fields to structures + */ +#define AOM_DECODER_ABI_VERSION \ + (6 + AOM_CODEC_ABI_VERSION) /**<\hideinitializer*/ + +/*! \brief Decoder capabilities bitfield + * + * Each decoder advertises the capabilities it supports as part of its + * ::aom_codec_iface_t interface structure. Capabilities are extra interfaces + * or functionality, and are not required to be supported by a decoder. + * + * The available flags are specified by AOM_CODEC_CAP_* defines. + */ +/*!brief Can support external frame buffers */ +#define AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x200000 + +/*! \brief Initialization-time Feature Enabling + * + * Certain codec features must be known at initialization time, to allow for + * proper memory allocation. + * + * The available flags are specified by AOM_CODEC_USE_* defines. + */ + +/*!\brief Stream properties + * + * This structure is used to query or set properties of the decoded + * stream. + */ +typedef struct aom_codec_stream_info { + unsigned int w; /**< Width (or 0 for unknown/default) */ + unsigned int h; /**< Height (or 0 for unknown/default) */ + unsigned int is_kf; /**< Current frame is a keyframe */ + unsigned int number_spatial_layers; /**< Number of spatial layers */ + unsigned int number_temporal_layers; /**< Number of temporal layers */ + unsigned int is_annexb; /**< Is Bitstream in Annex-B format */ +} aom_codec_stream_info_t; + +/* REQUIRED FUNCTIONS + * + * The following functions are required to be implemented for all decoders. + * They represent the base case functionality expected of all decoders. + */ + +/*!\brief Initialization Configurations + * + * This structure is used to pass init time configuration options to the + * decoder. + */ +typedef struct aom_codec_dec_cfg { + unsigned int threads; /**< Maximum number of threads to use, default 1 */ + unsigned int w; /**< Width */ + unsigned int h; /**< Height */ + unsigned int allow_lowbitdepth; /**< Allow use of low-bitdepth coding path */ +} aom_codec_dec_cfg_t; /**< alias for struct aom_codec_dec_cfg */ + +/*!\brief Initialize a decoder instance + * + * Initializes a decoder context using the given interface. Applications + * should call the aom_codec_dec_init convenience macro instead of this + * function directly, to ensure that the ABI version number parameter + * is properly initialized. + * + * If the library was configured with cmake -DCONFIG_MULTITHREAD=0, this + * call is not thread safe and should be guarded with a lock if being used + * in a multithreaded context. + * + * \param[in] ctx Pointer to this instance's context. + * \param[in] iface Pointer to the algorithm interface to use. + * \param[in] cfg Configuration to use, if known. May be NULL. + * \param[in] flags Bitfield of AOM_CODEC_USE_* flags + * \param[in] ver ABI version number. Must be set to + * AOM_DECODER_ABI_VERSION + * \retval #AOM_CODEC_OK + * The decoder algorithm initialized. + * \retval #AOM_CODEC_MEM_ERROR + * Memory allocation failed. + */ +aom_codec_err_t aom_codec_dec_init_ver(aom_codec_ctx_t *ctx, + aom_codec_iface_t *iface, + const aom_codec_dec_cfg_t *cfg, + aom_codec_flags_t flags, int ver); + +/*!\brief Convenience macro for aom_codec_dec_init_ver() + * + * Ensures the ABI version parameter is properly set. + */ +#define aom_codec_dec_init(ctx, iface, cfg, flags) \ + aom_codec_dec_init_ver(ctx, iface, cfg, flags, AOM_DECODER_ABI_VERSION) + +/*!\brief Parse stream info from a buffer + * + * Performs high level parsing of the bitstream. Construction of a decoder + * context is not necessary. Can be used to determine if the bitstream is + * of the proper format, and to extract information from the stream. + * + * \param[in] iface Pointer to the algorithm interface + * \param[in] data Pointer to a block of data to parse + * \param[in] data_sz Size of the data buffer + * \param[in,out] si Pointer to stream info to update. The is_annexb + * member \ref MUST be properly initialized. This + * function sets the rest of the members. + * + * \retval #AOM_CODEC_OK + * Bitstream is parsable and stream information updated. + * \retval #AOM_CODEC_INVALID_PARAM + * One of the arguments is invalid, for example a NULL pointer. + * \retval #AOM_CODEC_UNSUP_BITSTREAM + * The decoder didn't recognize the coded data, or the + * buffer was too short. + */ +aom_codec_err_t aom_codec_peek_stream_info(aom_codec_iface_t *iface, + const uint8_t *data, size_t data_sz, + aom_codec_stream_info_t *si); + +/*!\brief Return information about the current stream. + * + * Returns information about the stream that has been parsed during decoding. + * + * \param[in] ctx Pointer to this instance's context + * \param[in,out] si Pointer to stream info to update. + * + * \retval #AOM_CODEC_OK + * Bitstream is parsable and stream information updated. + * \retval #AOM_CODEC_INVALID_PARAM + * One of the arguments is invalid, for example a NULL pointer. + * \retval #AOM_CODEC_UNSUP_BITSTREAM + * The decoder couldn't parse the submitted data. + */ +aom_codec_err_t aom_codec_get_stream_info(aom_codec_ctx_t *ctx, + aom_codec_stream_info_t *si); + +/*!\brief Decode data + * + * Processes a buffer of coded data. Encoded data \ref MUST be passed in DTS + * (decode time stamp) order. Frames produced will always be in PTS + * (presentation time stamp) order. + * + * \param[in] ctx Pointer to this instance's context + * \param[in] data Pointer to this block of new coded data. + * \param[in] data_sz Size of the coded data, in bytes. + * \param[in] user_priv Application specific data to associate with + * this frame. + * + * \return Returns #AOM_CODEC_OK if the coded data was processed completely + * and future pictures can be decoded without error. Otherwise, + * see the descriptions of the other error codes in ::aom_codec_err_t + * for recoverability capabilities. + */ +aom_codec_err_t aom_codec_decode(aom_codec_ctx_t *ctx, const uint8_t *data, + size_t data_sz, void *user_priv); + +/*!\brief Decoded frames iterator + * + * Iterates over a list of the frames available for display. The iterator + * storage should be initialized to NULL to start the iteration. Iteration is + * complete when this function returns NULL. + * + * The list of available frames becomes valid upon completion of the + * aom_codec_decode call, and remains valid until the next call to + * aom_codec_decode. + * + * \param[in] ctx Pointer to this instance's context + * \param[in,out] iter Iterator storage, initialized to NULL + * + * \return Returns a pointer to an image, if one is ready for display. Frames + * produced will always be in PTS (presentation time stamp) order. + */ +aom_image_t *aom_codec_get_frame(aom_codec_ctx_t *ctx, aom_codec_iter_t *iter); + +/*!\defgroup cap_external_frame_buffer External Frame Buffer Functions + * + * The following function is required to be implemented for all decoders + * that advertise the AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER capability. + * Calling this function for codecs that don't advertise this capability + * will result in an error code being returned, usually AOM_CODEC_INCAPABLE. + * @{ + */ + +/*!\brief Pass in external frame buffers for the decoder to use. + * + * Registers functions to be called when libaom needs a frame buffer + * to decode the current frame and a function to be called when libaom does + * not internally reference the frame buffer. This set function must + * be called before the first call to decode or libaom will assume the + * default behavior of allocating frame buffers internally. + * + * \param[in] ctx Pointer to this instance's context + * \param[in] cb_get Pointer to the get callback function + * \param[in] cb_release Pointer to the release callback function + * \param[in] cb_priv Callback's private data + * + * \retval #AOM_CODEC_OK + * External frame buffers will be used by libaom. + * \retval #AOM_CODEC_INVALID_PARAM + * One or more of the callbacks were NULL. + * \retval #AOM_CODEC_ERROR + * Decoder context not initialized. + * \retval #AOM_CODEC_INCAPABLE + * Algorithm not capable of using external frame buffers. + * + * \note + * When decoding AV1, the application may be required to pass in at least + * #AOM_MAXIMUM_WORK_BUFFERS external frame buffers. + */ +aom_codec_err_t aom_codec_set_frame_buffer_functions( + aom_codec_ctx_t *ctx, aom_get_frame_buffer_cb_fn_t cb_get, + aom_release_frame_buffer_cb_fn_t cb_release, void *cb_priv); + +/*!@} - end defgroup cap_external_frame_buffer */ + +/*!@} - end defgroup decoder*/ +#ifdef __cplusplus +} +#endif +#endif // AOM_AOM_AOM_DECODER_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_encoder.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_encoder.h new file mode 100644 index 0000000..7009018 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_encoder.h @@ -0,0 +1,1131 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_AOM_AOM_ENCODER_H_ +#define AOM_AOM_AOM_ENCODER_H_ + +/*!\defgroup encoder Encoder Algorithm Interface + * \ingroup codec + * This abstraction allows applications using this encoder to easily support + * multiple video formats with minimal code duplication. This section describes + * the interface common to all encoders. + * @{ + */ + +/*!\file + * \brief Describes the encoder algorithm interface to applications. + * + * This file describes the interface between an application and a + * video encoder algorithm. + * + */ +#ifdef __cplusplus +extern "C" { +#endif + +#include "aom/aom_codec.h" +#include "aom/aom_external_partition.h" + +/*!\brief Current ABI version number + * + * \hideinitializer + * \internal + * If this file is altered in any way that changes the ABI, this value + * must be bumped. Examples include, but are not limited to, changing + * types, removing or reassigning enums, adding/removing/rearranging + * fields to structures + * + * Note: In the definition of AOM_ENCODER_ABI_VERSION, 3 is the value of + * AOM_EXT_PART_ABI_VERSION in libaom v3.2.0. The old value of + * AOM_EXT_PART_ABI_VERSION is used so as to not break the ABI version check in + * aom_codec_enc_init_ver() when an application compiled against libaom v3.2.0 + * passes the old value of AOM_ENCODER_ABI_VERSION to aom_codec_enc_init_ver(). + * The external partition API is still experimental. When it is declared stable, + * we will replace 3 with AOM_EXT_PART_ABI_VERSION in the definition of + * AOM_ENCODER_ABI_VERSION. + */ +#define AOM_ENCODER_ABI_VERSION \ + (10 + AOM_CODEC_ABI_VERSION + /*AOM_EXT_PART_ABI_VERSION=*/3) + +/*! \brief Encoder capabilities bitfield + * + * Each encoder advertises the capabilities it supports as part of its + * ::aom_codec_iface_t interface structure. Capabilities are extra + * interfaces or functionality, and are not required to be supported + * by an encoder. + * + * The available flags are specified by AOM_CODEC_CAP_* defines. + */ +#define AOM_CODEC_CAP_PSNR 0x10000 /**< Can issue PSNR packets */ + +/*! Can support input images at greater than 8 bitdepth. + */ +#define AOM_CODEC_CAP_HIGHBITDEPTH 0x40000 + +/*! \brief Initialization-time Feature Enabling + * + * Certain codec features must be known at initialization time, to allow + * for proper memory allocation. + * + * The available flags are specified by AOM_CODEC_USE_* defines. + */ +#define AOM_CODEC_USE_PSNR 0x10000 /**< Calculate PSNR on each frame */ +/*!\brief Make the encoder output one partition at a time. */ +#define AOM_CODEC_USE_HIGHBITDEPTH 0x40000 /**< Use high bitdepth */ + +/*!\brief Generic fixed size buffer structure + * + * This structure is able to hold a reference to any fixed size buffer. + */ +typedef struct aom_fixed_buf { + void *buf; /**< Pointer to the data. Does NOT own the data! */ + size_t sz; /**< Length of the buffer, in chars */ +} aom_fixed_buf_t; /**< alias for struct aom_fixed_buf */ + +/*!\brief Error Resilient flags + * + * These flags define which error resilient features to enable in the + * encoder. The flags are specified through the + * aom_codec_enc_cfg::g_error_resilient variable. + */ +typedef uint32_t aom_codec_er_flags_t; +/*!\brief Improve resiliency against losses of whole frames */ +#define AOM_ERROR_RESILIENT_DEFAULT 0x1 + +/*!\brief Encoder output packet variants + * + * This enumeration lists the different kinds of data packets that can be + * returned by calls to aom_codec_get_cx_data(). Algorithms \ref MAY + * extend this list to provide additional functionality. + */ +enum aom_codec_cx_pkt_kind { + AOM_CODEC_CX_FRAME_PKT, /**< Compressed video frame */ + AOM_CODEC_STATS_PKT, /**< Two-pass statistics for this frame */ + AOM_CODEC_FPMB_STATS_PKT, /**< first pass mb statistics for this frame */ + AOM_CODEC_PSNR_PKT, /**< PSNR statistics for this frame */ + AOM_CODEC_CUSTOM_PKT = 256 /**< Algorithm extensions */ +}; + +/*!\brief Encoder output packet + * + * This structure contains the different kinds of output data the encoder + * may produce while compressing a frame. + */ +typedef struct aom_codec_cx_pkt { + enum aom_codec_cx_pkt_kind kind; /**< packet variant */ + union { + struct { + void *buf; /**< compressed data buffer */ + size_t sz; /**< length of compressed data */ + /*!\brief time stamp to show frame (in timebase units) */ + aom_codec_pts_t pts; + /*!\brief duration to show frame (in timebase units) */ + unsigned long duration; + aom_codec_frame_flags_t flags; /**< flags for this frame */ + /*!\brief the partition id defines the decoding order of the partitions. + * Only applicable when "output partition" mode is enabled. First + * partition has id 0.*/ + int partition_id; + /*!\brief size of the visible frame in this packet */ + size_t vis_frame_size; + } frame; /**< data for compressed frame packet */ + aom_fixed_buf_t twopass_stats; /**< data for two-pass packet */ + aom_fixed_buf_t firstpass_mb_stats; /**< first pass mb packet */ + struct aom_psnr_pkt { + unsigned int samples[4]; /**< Number of samples, total/y/u/v */ + uint64_t sse[4]; /**< sum squared error, total/y/u/v */ + double psnr[4]; /**< PSNR, total/y/u/v */ + /*!\brief Number of samples, total/y/u/v when + * input bit-depth < stream bit-depth.*/ + unsigned int samples_hbd[4]; + /*!\brief sum squared error, total/y/u/v when + * input bit-depth < stream bit-depth.*/ + uint64_t sse_hbd[4]; + /*!\brief PSNR, total/y/u/v when + * input bit-depth < stream bit-depth.*/ + double psnr_hbd[4]; + } psnr; /**< data for PSNR packet */ + aom_fixed_buf_t raw; /**< data for arbitrary packets */ + } data; /**< packet data */ +} aom_codec_cx_pkt_t; /**< alias for struct aom_codec_cx_pkt */ + +/*!\brief Rational Number + * + * This structure holds a fractional value. + */ +typedef struct aom_rational { + int num; /**< fraction numerator */ + int den; /**< fraction denominator */ +} aom_rational_t; /**< alias for struct aom_rational */ + +/*!\brief Multi-pass Encoding Pass + * + * AOM_RC_LAST_PASS is kept for backward compatibility. + * If passes is not given and pass==2, the codec will assume passes=2. + * For new code, it is recommended to use AOM_RC_SECOND_PASS and set + * the "passes" member to 2 via the key & val API for two-pass encoding. + */ +enum aom_enc_pass { + AOM_RC_ONE_PASS = 0, /**< Single pass mode */ + AOM_RC_FIRST_PASS = 1, /**< First pass of multi-pass mode */ + AOM_RC_SECOND_PASS = 2, /**< Second pass of multi-pass mode */ + AOM_RC_THIRD_PASS = 3, /**< Third pass of multi-pass mode */ + AOM_RC_LAST_PASS = 2, /**< Final pass of two-pass mode */ +}; + +/*!\brief Rate control mode */ +enum aom_rc_mode { + AOM_VBR, /**< Variable Bit Rate (VBR) mode */ + AOM_CBR, /**< Constant Bit Rate (CBR) mode */ + AOM_CQ, /**< Constrained Quality (CQ) mode */ + AOM_Q, /**< Constant Quality (Q) mode */ +}; + +/*!\brief Keyframe placement mode. + * + * This enumeration determines whether keyframes are placed automatically by + * the encoder or whether this behavior is disabled. Older releases of this + * SDK were implemented such that AOM_KF_FIXED meant keyframes were disabled. + * This name is confusing for this behavior, so the new symbols to be used + * are AOM_KF_AUTO and AOM_KF_DISABLED. + */ +enum aom_kf_mode { + AOM_KF_FIXED, /**< deprecated, implies AOM_KF_DISABLED */ + AOM_KF_AUTO, /**< Encoder determines optimal placement automatically */ + AOM_KF_DISABLED = 0 /**< Encoder does not place keyframes. */ +}; + +/*!\brief Frame super-resolution mode. */ +typedef enum { + /**< Frame super-resolution is disabled for all frames. */ + AOM_SUPERRES_NONE, + /**< All frames are coded at the specified scale and super-resolved. */ + AOM_SUPERRES_FIXED, + /**< All frames are coded at a random scale and super-resolved. */ + AOM_SUPERRES_RANDOM, + /**< Super-resolution scale for each frame is determined based on the q index + of that frame. */ + AOM_SUPERRES_QTHRESH, + /**< Full-resolution or super-resolution and the scale (in case of + super-resolution) are automatically selected for each frame. */ + AOM_SUPERRES_AUTO, +} aom_superres_mode; + +/*!\brief Encoder Config Options + * + * This type allows to enumerate and control flags defined for encoder control + * via config file at runtime. + */ +typedef struct cfg_options { + /*!\brief Indicate init by cfg file + * 0 or 1 + */ + unsigned int init_by_cfg_file; + /*!\brief Superblock size + * 0, 64 or 128 + */ + unsigned int super_block_size; + /*!\brief max partition size + * 8, 16, 32, 64, 128 + */ + unsigned int max_partition_size; + /*!\brief min partition size + * 8, 16, 32, 64, 128 + */ + unsigned int min_partition_size; + /*!\brief disable AB Shape partition type + * + */ + unsigned int disable_ab_partition_type; + /*!\brief disable rectangular partition type + * + */ + unsigned int disable_rect_partition_type; + /*!\brief disable 1:4/4:1 partition type + * + */ + unsigned int disable_1to4_partition_type; + /*!\brief disable flip and identity transform type + * + */ + unsigned int disable_flip_idtx; + /*!\brief disable CDEF filter + * + */ + unsigned int disable_cdef; + /*!\brief disable Loop Restoration Filter + * + */ + unsigned int disable_lr; + /*!\brief disable OBMC + * + */ + unsigned int disable_obmc; + /*!\brief disable Warped Motion + * + */ + unsigned int disable_warp_motion; + /*!\brief disable global motion + * + */ + unsigned int disable_global_motion; + /*!\brief disable dist weighted compound + * + */ + unsigned int disable_dist_wtd_comp; + /*!\brief disable diff weighted compound + * + */ + unsigned int disable_diff_wtd_comp; + /*!\brief disable inter/intra compound + * + */ + unsigned int disable_inter_intra_comp; + /*!\brief disable masked compound + * + */ + unsigned int disable_masked_comp; + /*!\brief disable one sided compound + * + */ + unsigned int disable_one_sided_comp; + /*!\brief disable Palette + * + */ + unsigned int disable_palette; + /*!\brief disable Intra Block Copy + * + */ + unsigned int disable_intrabc; + /*!\brief disable chroma from luma + * + */ + unsigned int disable_cfl; + /*!\brief disable intra smooth mode + * + */ + unsigned int disable_smooth_intra; + /*!\brief disable filter intra + * + */ + unsigned int disable_filter_intra; + /*!\brief disable dual filter + * + */ + unsigned int disable_dual_filter; + /*!\brief disable intra angle delta + * + */ + unsigned int disable_intra_angle_delta; + /*!\brief disable intra edge filter + * + */ + unsigned int disable_intra_edge_filter; + /*!\brief disable 64x64 transform + * + */ + unsigned int disable_tx_64x64; + /*!\brief disable smooth inter/intra + * + */ + unsigned int disable_smooth_inter_intra; + /*!\brief disable inter/inter wedge comp + * + */ + unsigned int disable_inter_inter_wedge; + /*!\brief disable inter/intra wedge comp + * + */ + unsigned int disable_inter_intra_wedge; + /*!\brief disable paeth intra + * + */ + unsigned int disable_paeth_intra; + /*!\brief disable trellis quantization + * + */ + unsigned int disable_trellis_quant; + /*!\brief disable ref frame MV + * + */ + unsigned int disable_ref_frame_mv; + /*!\brief use reduced reference frame set + * + */ + unsigned int reduced_reference_set; + /*!\brief use reduced transform type set + * + */ + unsigned int reduced_tx_type_set; +} cfg_options_t; + +/*!\brief Encoded Frame Flags + * + * This type indicates a bitfield to be passed to aom_codec_encode(), defining + * per-frame boolean values. By convention, bits common to all codecs will be + * named AOM_EFLAG_*, and bits specific to an algorithm will be named + * /algo/_eflag_*. The lower order 16 bits are reserved for common use. + */ +typedef long aom_enc_frame_flags_t; +/*!\brief Force this frame to be a keyframe */ +#define AOM_EFLAG_FORCE_KF (1 << 0) + +/*!\brief Encoder configuration structure + * + * This structure contains the encoder settings that have common representations + * across all codecs. This doesn't imply that all codecs support all features, + * however. + */ +typedef struct aom_codec_enc_cfg { + /* + * generic settings (g) + */ + + /*!\brief Algorithm specific "usage" value + * + * Algorithms may define multiple values for usage, which may convey the + * intent of how the application intends to use the stream. If this value + * is non-zero, consult the documentation for the codec to determine its + * meaning. + */ + unsigned int g_usage; + + /*!\brief Maximum number of threads to use + * + * For multi-threaded implementations, use no more than this number of + * threads. The codec may use fewer threads than allowed. The value + * 0 is equivalent to the value 1. + */ + unsigned int g_threads; + + /*!\brief Bitstream profile to use + * + * Some codecs support a notion of multiple bitstream profiles. Typically + * this maps to a set of features that are turned on or off. Often the + * profile to use is determined by the features of the intended decoder. + * Consult the documentation for the codec to determine the valid values + * for this parameter, or set to zero for a sane default. + */ + unsigned int g_profile; /**< profile of bitstream to use */ + + /*!\brief Width of the frame + * + * This value identifies the presentation resolution of the frame, + * in pixels. Note that the frames passed as input to the encoder must + * have this resolution. Frames will be presented by the decoder in this + * resolution, independent of any spatial resampling the encoder may do. + */ + unsigned int g_w; + + /*!\brief Height of the frame + * + * This value identifies the presentation resolution of the frame, + * in pixels. Note that the frames passed as input to the encoder must + * have this resolution. Frames will be presented by the decoder in this + * resolution, independent of any spatial resampling the encoder may do. + */ + unsigned int g_h; + + /*!\brief Max number of frames to encode + * + */ + unsigned int g_limit; + + /*!\brief Forced maximum width of the frame + * + * If this value is non-zero then it is used to force the maximum frame + * width written in write_sequence_header(). + */ + unsigned int g_forced_max_frame_width; + + /*!\brief Forced maximum height of the frame + * + * If this value is non-zero then it is used to force the maximum frame + * height written in write_sequence_header(). + */ + unsigned int g_forced_max_frame_height; + + /*!\brief Bit-depth of the codec + * + * This value identifies the bit_depth of the codec, + * Only certain bit-depths are supported as identified in the + * aom_bit_depth_t enum. + */ + aom_bit_depth_t g_bit_depth; + + /*!\brief Bit-depth of the input frames + * + * This value identifies the bit_depth of the input frames in bits. + * Note that the frames passed as input to the encoder must have + * this bit-depth. + */ + unsigned int g_input_bit_depth; + + /*!\brief Stream timebase units + * + * Indicates the smallest interval of time, in seconds, used by the stream. + * For fixed frame rate material, or variable frame rate material where + * frames are timed at a multiple of a given clock (ex: video capture), + * the \ref RECOMMENDED method is to set the timebase to the reciprocal + * of the frame rate (ex: 1001/30000 for 29.970 Hz NTSC). This allows the + * pts to correspond to the frame number, which can be handy. For + * re-encoding video from containers with absolute time timestamps, the + * \ref RECOMMENDED method is to set the timebase to that of the parent + * container or multimedia framework (ex: 1/1000 for ms, as in FLV). + */ + struct aom_rational g_timebase; + + /*!\brief Enable error resilient modes. + * + * The error resilient bitfield indicates to the encoder which features + * it should enable to take measures for streaming over lossy or noisy + * links. + */ + aom_codec_er_flags_t g_error_resilient; + + /*!\brief Multi-pass Encoding Mode + * + * This value should be set to the current phase for multi-pass encoding. + * For single pass, set to #AOM_RC_ONE_PASS. + */ + enum aom_enc_pass g_pass; + + /*!\brief Allow lagged encoding + * + * If set, this value allows the encoder to consume a number of input + * frames before producing output frames. This allows the encoder to + * base decisions for the current frame on future frames. This does + * increase the latency of the encoding pipeline, so it is not appropriate + * in all situations (ex: realtime encoding). + * + * Note that this is a maximum value -- the encoder may produce frames + * sooner than the given limit. Set this value to 0 to disable this + * feature. + */ + unsigned int g_lag_in_frames; + + /* + * rate control settings (rc) + */ + + /*!\brief Temporal resampling configuration, if supported by the codec. + * + * Temporal resampling allows the codec to "drop" frames as a strategy to + * meet its target data rate. This can cause temporal discontinuities in + * the encoded video, which may appear as stuttering during playback. This + * trade-off is often acceptable, but for many applications is not. It can + * be disabled in these cases. + * + * Note that not all codecs support this feature. All aom AVx codecs do. + * For other codecs, consult the documentation for that algorithm. + * + * This threshold is described as a percentage of the target data buffer. + * When the data buffer falls below this percentage of fullness, a + * dropped frame is indicated. Set the threshold to zero (0) to disable + * this feature. + */ + unsigned int rc_dropframe_thresh; + + /*!\brief Mode for spatial resampling, if supported by the codec. + * + * Spatial resampling allows the codec to compress a lower resolution + * version of the frame, which is then upscaled by the decoder to the + * correct presentation resolution. This increases visual quality at + * low data rates, at the expense of CPU time on the encoder/decoder. + */ + unsigned int rc_resize_mode; + + /*!\brief Frame resize denominator. + * + * The denominator for resize to use, assuming 8 as the numerator. + * + * Valid denominators are 8 - 16 for now. + */ + unsigned int rc_resize_denominator; + + /*!\brief Keyframe resize denominator. + * + * The denominator for resize to use, assuming 8 as the numerator. + * + * Valid denominators are 8 - 16 for now. + */ + unsigned int rc_resize_kf_denominator; + + /*!\brief Frame super-resolution scaling mode. + * + * Similar to spatial resampling, frame super-resolution integrates + * upscaling after the encode/decode process. Taking control of upscaling and + * using restoration filters should allow it to outperform normal resizing. + */ + aom_superres_mode rc_superres_mode; + + /*!\brief Frame super-resolution denominator. + * + * The denominator for superres to use. If fixed it will only change if the + * cumulative scale change over resizing and superres is greater than 1/2; + * this forces superres to reduce scaling. + * + * Valid denominators are 8 to 16. + * + * Used only by AOM_SUPERRES_FIXED. + */ + unsigned int rc_superres_denominator; + + /*!\brief Keyframe super-resolution denominator. + * + * The denominator for superres to use. If fixed it will only change if the + * cumulative scale change over resizing and superres is greater than 1/2; + * this forces superres to reduce scaling. + * + * Valid denominators are 8 - 16 for now. + */ + unsigned int rc_superres_kf_denominator; + + /*!\brief Frame super-resolution q threshold. + * + * The q level threshold after which superres is used. + * Valid values are 1 to 63. + * + * Used only by AOM_SUPERRES_QTHRESH + */ + unsigned int rc_superres_qthresh; + + /*!\brief Keyframe super-resolution q threshold. + * + * The q level threshold after which superres is used for key frames. + * Valid values are 1 to 63. + * + * Used only by AOM_SUPERRES_QTHRESH + */ + unsigned int rc_superres_kf_qthresh; + + /*!\brief Rate control algorithm to use. + * + * Indicates whether the end usage of this stream is to be streamed over + * a bandwidth constrained link, indicating that Constant Bit Rate (CBR) + * mode should be used, or whether it will be played back on a high + * bandwidth link, as from a local disk, where higher variations in + * bitrate are acceptable. + */ + enum aom_rc_mode rc_end_usage; + + /*!\brief Two-pass stats buffer. + * + * A buffer containing all of the stats packets produced in the first + * pass, concatenated. + */ + aom_fixed_buf_t rc_twopass_stats_in; + + /*!\brief first pass mb stats buffer. + * + * A buffer containing all of the first pass mb stats packets produced + * in the first pass, concatenated. + */ + aom_fixed_buf_t rc_firstpass_mb_stats_in; + + /*!\brief Target data rate + * + * Target bitrate to use for this stream, in kilobits per second. + */ + unsigned int rc_target_bitrate; + + /* + * quantizer settings + */ + + /*!\brief Minimum (Best Quality) Quantizer + * + * The quantizer is the most direct control over the quality of the + * encoded image. The range of valid values for the quantizer is codec + * specific. Consult the documentation for the codec to determine the + * values to use. To determine the range programmatically, call + * aom_codec_enc_config_default() with a usage value of 0. + */ + unsigned int rc_min_quantizer; + + /*!\brief Maximum (Worst Quality) Quantizer + * + * The quantizer is the most direct control over the quality of the + * encoded image. The range of valid values for the quantizer is codec + * specific. Consult the documentation for the codec to determine the + * values to use. To determine the range programmatically, call + * aom_codec_enc_config_default() with a usage value of 0. + */ + unsigned int rc_max_quantizer; + + /* + * bitrate tolerance + */ + + /*!\brief Rate control adaptation undershoot control + * + * This value, controls the tolerance of the VBR algorithm to undershoot + * and is used as a trigger threshold for more aggressive adaptation of Q. + * + * Valid values in the range 0-100. + */ + unsigned int rc_undershoot_pct; + + /*!\brief Rate control adaptation overshoot control + * + * This value, controls the tolerance of the VBR algorithm to overshoot + * and is used as a trigger threshold for more aggressive adaptation of Q. + * + * Valid values in the range 0-100. + */ + unsigned int rc_overshoot_pct; + + /* + * decoder buffer model parameters + */ + + /*!\brief Decoder Buffer Size + * + * This value indicates the amount of data that may be buffered by the + * decoding application. Note that this value is expressed in units of + * time (milliseconds). For example, a value of 5000 indicates that the + * client will buffer (at least) 5000ms worth of encoded data. Use the + * target bitrate (#rc_target_bitrate) to convert to bits/bytes, if + * necessary. + */ + unsigned int rc_buf_sz; + + /*!\brief Decoder Buffer Initial Size + * + * This value indicates the amount of data that will be buffered by the + * decoding application prior to beginning playback. This value is + * expressed in units of time (milliseconds). Use the target bitrate + * (#rc_target_bitrate) to convert to bits/bytes, if necessary. + */ + unsigned int rc_buf_initial_sz; + + /*!\brief Decoder Buffer Optimal Size + * + * This value indicates the amount of data that the encoder should try + * to maintain in the decoder's buffer. This value is expressed in units + * of time (milliseconds). Use the target bitrate (#rc_target_bitrate) + * to convert to bits/bytes, if necessary. + */ + unsigned int rc_buf_optimal_sz; + + /* + * 2 pass rate control parameters + */ + + /*!\brief Two-pass mode CBR/VBR bias + * + * Bias, expressed on a scale of 0 to 100, for determining target size + * for the current frame. The value 0 indicates the optimal CBR mode + * value should be used. The value 100 indicates the optimal VBR mode + * value should be used. Values in between indicate which way the + * encoder should "lean." + */ + unsigned int rc_2pass_vbr_bias_pct; + + /*!\brief Two-pass mode per-GOP minimum bitrate + * + * This value, expressed as a percentage of the target bitrate, indicates + * the minimum bitrate to be used for a single GOP (aka "section") + */ + unsigned int rc_2pass_vbr_minsection_pct; + + /*!\brief Two-pass mode per-GOP maximum bitrate + * + * This value, expressed as a percentage of the target bitrate, indicates + * the maximum bitrate to be used for a single GOP (aka "section") + */ + unsigned int rc_2pass_vbr_maxsection_pct; + + /* + * keyframing settings (kf) + */ + + /*!\brief Option to enable forward reference key frame + * + */ + int fwd_kf_enabled; + + /*!\brief Keyframe placement mode + * + * This value indicates whether the encoder should place keyframes at a + * fixed interval, or determine the optimal placement automatically + * (as governed by the #kf_min_dist and #kf_max_dist parameters) + */ + enum aom_kf_mode kf_mode; + + /*!\brief Keyframe minimum interval + * + * This value, expressed as a number of frames, prevents the encoder from + * placing a keyframe nearer than kf_min_dist to the previous keyframe. At + * least kf_min_dist frames non-keyframes will be coded before the next + * keyframe. Set kf_min_dist equal to kf_max_dist for a fixed interval. + */ + unsigned int kf_min_dist; + + /*!\brief Keyframe maximum interval + * + * This value, expressed as a number of frames, forces the encoder to code + * a keyframe if one has not been coded in the last kf_max_dist frames. + * A value of 0 implies all frames will be keyframes. Set kf_min_dist + * equal to kf_max_dist for a fixed interval. + */ + unsigned int kf_max_dist; + + /*!\brief sframe interval + * + * This value, expressed as a number of frames, forces the encoder to code + * an S-Frame every sframe_dist frames. + */ + unsigned int sframe_dist; + + /*!\brief sframe insertion mode + * + * This value must be set to 1 or 2, and tells the encoder how to insert + * S-Frames. It will only have an effect if sframe_dist != 0. + * + * If altref is enabled: + * - if sframe_mode == 1, the considered frame will be made into an + * S-Frame only if it is an altref frame + * - if sframe_mode == 2, the next altref frame will be made into an + * S-Frame. + * + * Otherwise: the considered frame will be made into an S-Frame. + */ + unsigned int sframe_mode; + + /*!\brief Tile coding mode + * + * This value indicates the tile coding mode. + * A value of 0 implies a normal non-large-scale tile coding. A value of 1 + * implies a large-scale tile coding. + */ + unsigned int large_scale_tile; + + /*!\brief Monochrome mode + * + * If this is nonzero, the encoder will generate a monochrome stream + * with no chroma planes. + */ + unsigned int monochrome; + + /*!\brief full_still_picture_hdr + * + * If this is nonzero, the encoder will generate a full header even for + * still picture encoding. if zero, a reduced header is used for still + * picture. This flag has no effect when a regular video with more than + * a single frame is encoded. + */ + unsigned int full_still_picture_hdr; + + /*!\brief Bitstream syntax mode + * + * This value indicates the bitstream syntax mode. + * A value of 0 indicates bitstream is saved as Section 5 bitstream. A value + * of 1 indicates the bitstream is saved in Annex-B format + */ + unsigned int save_as_annexb; + + /*!\brief Number of explicit tile widths specified + * + * This value indicates the number of tile widths specified + * A value of 0 implies no tile widths are specified. + * Tile widths are given in the array tile_widths[] + */ + int tile_width_count; + + /*!\brief Number of explicit tile heights specified + * + * This value indicates the number of tile heights specified + * A value of 0 implies no tile heights are specified. + * Tile heights are given in the array tile_heights[] + */ + int tile_height_count; + +/*!\brief Maximum number of tile widths in tile widths array + * + * This define gives the maximum number of elements in the tile_widths array. + */ +#define MAX_TILE_WIDTHS 64 // maximum tile width array length + + /*!\brief Array of specified tile widths + * + * This array specifies tile widths (and may be empty) + * The number of widths specified is given by tile_width_count + */ + int tile_widths[MAX_TILE_WIDTHS]; + +/*!\brief Maximum number of tile heights in tile heights array. + * + * This define gives the maximum number of elements in the tile_heights array. + */ +#define MAX_TILE_HEIGHTS 64 // maximum tile height array length + + /*!\brief Array of specified tile heights + * + * This array specifies tile heights (and may be empty) + * The number of heights specified is given by tile_height_count + */ + int tile_heights[MAX_TILE_HEIGHTS]; + + /*!\brief Whether encoder should use fixed QP offsets. + * + * If a value of 1 is provided, encoder will use fixed QP offsets for frames + * at different levels of the pyramid. + * If a value of 0 is provided, encoder will NOT use fixed QP offsets. + * Note: This option is only relevant for --end-usage=q. + */ + unsigned int use_fixed_qp_offsets; + + /*!\brief Deprecated and ignored. DO NOT USE. + * + * TODO(aomedia:3269): Remove fixed_qp_offsets in libaom v4.0.0. + */ + int fixed_qp_offsets[5]; + + /*!\brief Options defined per config file + * + */ + cfg_options_t encoder_cfg; +} aom_codec_enc_cfg_t; /**< alias for struct aom_codec_enc_cfg */ + +/*!\brief Initialize an encoder instance + * + * Initializes a encoder context using the given interface. Applications + * should call the aom_codec_enc_init convenience macro instead of this + * function directly, to ensure that the ABI version number parameter + * is properly initialized. + * + * If the library was configured with -DCONFIG_MULTITHREAD=0, this call + * is not thread safe and should be guarded with a lock if being used + * in a multithreaded context. + * + * \param[in] ctx Pointer to this instance's context. + * \param[in] iface Pointer to the algorithm interface to use. + * \param[in] cfg Configuration to use, if known. + * \param[in] flags Bitfield of AOM_CODEC_USE_* flags + * \param[in] ver ABI version number. Must be set to + * AOM_ENCODER_ABI_VERSION + * \retval #AOM_CODEC_OK + * The decoder algorithm initialized. + * \retval #AOM_CODEC_MEM_ERROR + * Memory allocation failed. + */ +aom_codec_err_t aom_codec_enc_init_ver(aom_codec_ctx_t *ctx, + aom_codec_iface_t *iface, + const aom_codec_enc_cfg_t *cfg, + aom_codec_flags_t flags, int ver); + +/*!\brief Convenience macro for aom_codec_enc_init_ver() + * + * Ensures the ABI version parameter is properly set. + */ +#define aom_codec_enc_init(ctx, iface, cfg, flags) \ + aom_codec_enc_init_ver(ctx, iface, cfg, flags, AOM_ENCODER_ABI_VERSION) + +/*!\brief Get the default configuration for a usage. + * + * Initializes an encoder configuration structure with default values. Supports + * the notion of "usages" so that an algorithm may offer different default + * settings depending on the user's intended goal. This function \ref SHOULD + * be called by all applications to initialize the configuration structure + * before specializing the configuration with application specific values. + * + * \param[in] iface Pointer to the algorithm interface to use. + * \param[out] cfg Configuration buffer to populate. + * \param[in] usage Algorithm specific usage value. For AV1, must be + * set to AOM_USAGE_GOOD_QUALITY (0), + * AOM_USAGE_REALTIME (1), or AOM_USAGE_ALL_INTRA (2). + * + * \retval #AOM_CODEC_OK + * The configuration was populated. + * \retval #AOM_CODEC_INCAPABLE + * Interface is not an encoder interface. + * \retval #AOM_CODEC_INVALID_PARAM + * A parameter was NULL, or the usage value was not recognized. + */ +aom_codec_err_t aom_codec_enc_config_default(aom_codec_iface_t *iface, + aom_codec_enc_cfg_t *cfg, + unsigned int usage); + +/*!\brief Set or change configuration + * + * Reconfigures an encoder instance according to the given configuration. + * + * \param[in] ctx Pointer to this instance's context + * \param[in] cfg Configuration buffer to use + * + * \retval #AOM_CODEC_OK + * The configuration was populated. + * \retval #AOM_CODEC_INCAPABLE + * Interface is not an encoder interface. + * \retval #AOM_CODEC_INVALID_PARAM + * A parameter was NULL, or the usage value was not recognized. + */ +aom_codec_err_t aom_codec_enc_config_set(aom_codec_ctx_t *ctx, + const aom_codec_enc_cfg_t *cfg); + +/*!\brief Get global stream headers + * + * Retrieves a stream level global header packet, if supported by the codec. + * Calls to this function should be deferred until all configuration information + * has been passed to libaom. Otherwise the global header data may be + * invalidated by additional configuration changes. + * + * The AV1 implementation of this function returns an OBU. The OBU returned is + * in Low Overhead Bitstream Format. Specifically, the obu_has_size_field bit is + * set, and the buffer contains the obu_size field for the returned OBU. + * + * \param[in] ctx Pointer to this instance's context + * + * \retval NULL + * Encoder does not support global header, or an error occurred while + * generating the global header. + * + * \retval Non-NULL + * Pointer to buffer containing global header packet. The caller owns the + * memory associated with this buffer, and must free the 'buf' member of the + * aom_fixed_buf_t as well as the aom_fixed_buf_t pointer. Memory returned + * must be freed via call to free(). + */ +aom_fixed_buf_t *aom_codec_get_global_headers(aom_codec_ctx_t *ctx); + +/*!\brief usage parameter analogous to AV1 GOOD QUALITY mode. */ +#define AOM_USAGE_GOOD_QUALITY (0) +/*!\brief usage parameter analogous to AV1 REALTIME mode. */ +#define AOM_USAGE_REALTIME (1) +/*!\brief usage parameter analogous to AV1 all intra mode. */ +#define AOM_USAGE_ALL_INTRA (2) + +/*!\brief Encode a frame + * + * Encodes a video frame at the given "presentation time." The presentation + * time stamp (PTS) \ref MUST be strictly increasing. + * + * When the last frame has been passed to the encoder, this function should + * continue to be called in a loop, with the img parameter set to NULL. This + * will signal the end-of-stream condition to the encoder and allow it to + * encode any held buffers. Encoding is complete when aom_codec_encode() is + * called with img set to NULL and aom_codec_get_cx_data() returns no data. + * + * \param[in] ctx Pointer to this instance's context + * \param[in] img Image data to encode, NULL to flush. + * Encoding sample values outside the range + * [0..(1<bit_depth)-1] is undefined behavior. + * \param[in] pts Presentation time stamp, in timebase units. If img + * is NULL, pts is ignored. + * \param[in] duration Duration to show frame, in timebase units. If img + * is not NULL, duration must be nonzero. If img is + * NULL, duration is ignored. + * \param[in] flags Flags to use for encoding this frame. + * + * \retval #AOM_CODEC_OK + * The configuration was populated. + * \retval #AOM_CODEC_INCAPABLE + * Interface is not an encoder interface. + * \retval #AOM_CODEC_INVALID_PARAM + * A parameter was NULL, the image format is unsupported, etc. + */ +aom_codec_err_t aom_codec_encode(aom_codec_ctx_t *ctx, const aom_image_t *img, + aom_codec_pts_t pts, unsigned long duration, + aom_enc_frame_flags_t flags); + +/*!\brief Set compressed data output buffer + * + * Sets the buffer that the codec should output the compressed data + * into. This call effectively sets the buffer pointer returned in the + * next AOM_CODEC_CX_FRAME_PKT packet. Subsequent packets will be + * appended into this buffer. The buffer is preserved across frames, + * so applications must periodically call this function after flushing + * the accumulated compressed data to disk or to the network to reset + * the pointer to the buffer's head. + * + * `pad_before` bytes will be skipped before writing the compressed + * data, and `pad_after` bytes will be appended to the packet. The size + * of the packet will be the sum of the size of the actual compressed + * data, pad_before, and pad_after. The padding bytes will be preserved + * (not overwritten). + * + * Note that calling this function does not guarantee that the returned + * compressed data will be placed into the specified buffer. In the + * event that the encoded data will not fit into the buffer provided, + * the returned packet \ref MAY point to an internal buffer, as it would + * if this call were never used. In this event, the output packet will + * NOT have any padding, and the application must free space and copy it + * to the proper place. This is of particular note in configurations + * that may output multiple packets for a single encoded frame (e.g., lagged + * encoding) or if the application does not reset the buffer periodically. + * + * Applications may restore the default behavior of the codec providing + * the compressed data buffer by calling this function with a NULL + * buffer. + * + * Applications \ref MUSTNOT call this function during iteration of + * aom_codec_get_cx_data(). + * + * \param[in] ctx Pointer to this instance's context + * \param[in] buf Buffer to store compressed data into + * \param[in] pad_before Bytes to skip before writing compressed data + * \param[in] pad_after Bytes to skip after writing compressed data + * + * \retval #AOM_CODEC_OK + * The buffer was set successfully. + * \retval #AOM_CODEC_INVALID_PARAM + * A parameter was NULL, the image format is unsupported, etc. + */ +aom_codec_err_t aom_codec_set_cx_data_buf(aom_codec_ctx_t *ctx, + const aom_fixed_buf_t *buf, + unsigned int pad_before, + unsigned int pad_after); + +/*!\brief Encoded data iterator + * + * Iterates over a list of data packets to be passed from the encoder to the + * application. The different kinds of packets available are enumerated in + * #aom_codec_cx_pkt_kind. + * + * #AOM_CODEC_CX_FRAME_PKT packets should be passed to the application's + * muxer. Multiple compressed frames may be in the list. + * #AOM_CODEC_STATS_PKT packets should be appended to a global buffer. + * + * The application \ref MUST silently ignore any packet kinds that it does + * not recognize or support. + * + * The data buffers returned from this function are only guaranteed to be + * valid until the application makes another call to any aom_codec_* function. + * + * \param[in] ctx Pointer to this instance's context + * \param[in,out] iter Iterator storage, initialized to NULL + * + * \return Returns a pointer to an output data packet (compressed frame data, + * two-pass statistics, etc.) or NULL to signal end-of-list. + * + */ +const aom_codec_cx_pkt_t *aom_codec_get_cx_data(aom_codec_ctx_t *ctx, + aom_codec_iter_t *iter); + +/*!\brief Get Preview Frame + * + * Returns an image that can be used as a preview. Shows the image as it would + * exist at the decompressor. The application \ref MUST NOT write into this + * image buffer. + * + * \param[in] ctx Pointer to this instance's context + * + * \return Returns a pointer to a preview image, or NULL if no image is + * available. + * + */ +const aom_image_t *aom_codec_get_preview_frame(aom_codec_ctx_t *ctx); + +/*!@} - end defgroup encoder*/ +#ifdef __cplusplus +} +#endif +#endif // AOM_AOM_AOM_ENCODER_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_external_partition.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_external_partition.h new file mode 100644 index 0000000..55c59a5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_external_partition.h @@ -0,0 +1,452 @@ +/* + * Copyright (c) 2021, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_AOM_AOM_EXTERNAL_PARTITION_H_ +#define AOM_AOM_AOM_EXTERNAL_PARTITION_H_ + +/*!\defgroup aom_encoder AOMedia AOM/AV1 Encoder + * \ingroup aom + * + * @{ + */ +#include + +/*!\file + * \brief Provides function pointer definitions for the external partition. + * + * \note The external partition API should be considered experimental. Until the + * external partition API is declared stable, breaking changes may be made to + * this API in a future libaom release. + */ + +/*!\brief Current ABI version number + * + * \internal + * If this file is altered in any way that changes the ABI, this value + * must be bumped. Examples include, but are not limited to, changing + * types, removing or reassigning enums, adding/removing/rearranging + * fields to structures. + */ +#define AOM_EXT_PART_ABI_VERSION 8 + +#ifdef __cplusplus +extern "C" { +#endif + +/*!\brief Abstract external partition model handler + */ +typedef void *aom_ext_part_model_t; + +/*!\brief Number of features to determine whether to skip partition none and + * do partition split directly. The same as "FEATURE_SIZE_SMS_SPLIT". + */ +#define AOM_EXT_PART_SIZE_DIRECT_SPLIT 17 + +/*!\brief Number of features to use simple motion search to prune out + * rectangular partition in some direction. The same as + * "FEATURE_SIZE_SMS_PRUNE_PART". + */ +#define AOM_EXT_PART_SIZE_PRUNE_PART 25 + +/*!\brief Number of features to prune split and rectangular partition + * after PARTITION_NONE. + */ +#define AOM_EXT_PART_SIZE_PRUNE_NONE 4 + +/*!\brief Number of features to terminates partition after partition none using + * simple_motion_search features and the rate, distortion, and rdcost of + * PARTITION_NONE. The same as "FEATURE_SIZE_SMS_TERM_NONE". + */ +#define AOM_EXT_PART_SIZE_TERM_NONE 28 + +/*!\brief Number of features to terminates partition after partition split. + */ +#define AOM_EXT_PART_SIZE_TERM_SPLIT 31 + +/*!\brief Number of features to prune rectangular partition using stats + * collected after partition split. + */ +#define AOM_EXT_PART_SIZE_PRUNE_RECT 9 + +/*!\brief Number of features to prune AB partition using stats + * collected after rectangular partition.. + */ +#define AOM_EXT_PART_SIZE_PRUNE_AB 10 + +/*!\brief Number of features to prune 4-way partition using stats + * collected after AB partition. + */ +#define AOM_EXT_PART_SIZE_PRUNE_4_WAY 18 + +/*!\brief Decision mode of the external partition model. + * AOM_EXT_PART_WHOLE_TREE: the external partition model should provide the + * whole partition tree for the superblock. + * + * AOM_EXT_PART_RECURSIVE: the external partition model provides the partition + * decision of the current block only. The decision process starts from + * the superblock size, down to the smallest block size (4x4) recursively. + */ +typedef enum aom_ext_part_decision_mode { + AOM_EXT_PART_WHOLE_TREE = 0, + AOM_EXT_PART_RECURSIVE = 1, +} aom_ext_part_decision_mode_t; + +/*!\brief Config information sent to the external partition model. + * + * For example, the maximum superblock size determined by the sequence header. + */ +typedef struct aom_ext_part_config { + int superblock_size; ///< super block size (either 64x64 or 128x128) +} aom_ext_part_config_t; + +/*!\brief Features pass to the external model to make partition decisions. + * Specifically, features collected before NONE partition. + * Features "f" are used to determine: + * partition_none_allowed, partition_horz_allowed, partition_vert_allowed, + * do_rectangular_split, do_square_split + * Features "f_part2" are used to determine: + * prune_horz, prune_vert. + */ +typedef struct aom_partition_features_before_none { + /*! features to determine whether skip partition none and do split directly */ + float f[AOM_EXT_PART_SIZE_DIRECT_SPLIT]; + /*! features to determine whether to prune rectangular partition */ + float f_part2[AOM_EXT_PART_SIZE_PRUNE_PART]; +} aom_partition_features_before_none_t; + +/*!\brief Features pass to the external model to make partition decisions. + * Specifically, features collected after NONE partition. + */ +typedef struct aom_partition_features_none { + /*! features to prune split and rectangular partition */ + float f[AOM_EXT_PART_SIZE_PRUNE_NONE]; + /*! features to determine termination of partition */ + float f_terminate[AOM_EXT_PART_SIZE_TERM_NONE]; +} aom_partition_features_none_t; + +/*!\brief Features pass to the external model to make partition decisions. + * Specifically, features collected after SPLIT partition. + */ +typedef struct aom_partition_features_split { + /*! features to determine termination of partition */ + float f_terminate[AOM_EXT_PART_SIZE_TERM_SPLIT]; + /*! features to determine pruning rect partition */ + float f_prune_rect[AOM_EXT_PART_SIZE_PRUNE_RECT]; +} aom_partition_features_split_t; + +/*!\brief Features pass to the external model to make partition decisions. + * Specifically, features collected after RECTANGULAR partition. + */ +typedef struct aom_partition_features_rect { + /*! features to determine pruning AB partition */ + float f[AOM_EXT_PART_SIZE_PRUNE_AB]; +} aom_partition_features_rect_t; + +/*!\brief Features pass to the external model to make partition decisions. + * Specifically, features collected after AB partition: HORZ_A, HORZ_B, VERT_A, + * VERT_B. + */ +typedef struct aom_partition_features_ab { + /*! features to determine pruning 4-way partition */ + float f[AOM_EXT_PART_SIZE_PRUNE_4_WAY]; +} aom_partition_features_ab_t; + +/*!\brief Feature id to tell the external model the current stage in partition + * pruning and what features to use to make decisions accordingly. + */ +typedef enum { + AOM_EXT_PART_FEATURE_BEFORE_NONE, + AOM_EXT_PART_FEATURE_BEFORE_NONE_PART2, + AOM_EXT_PART_FEATURE_AFTER_NONE, + AOM_EXT_PART_FEATURE_AFTER_NONE_PART2, + AOM_EXT_PART_FEATURE_AFTER_SPLIT, + AOM_EXT_PART_FEATURE_AFTER_SPLIT_PART2, + AOM_EXT_PART_FEATURE_AFTER_RECT, + AOM_EXT_PART_FEATURE_AFTER_AB +} AOM_EXT_PART_FEATURE_ID; + +/*!\brief Features collected from the tpl process. + * + * The tpl process collects information that help measure the inter-frame + * dependency. + * The tpl process is computed in the unit of tpl_bsize_1d (16x16). + * Therefore, the max number of units inside a superblock is + * 128x128 / (16x16) = 64. Change it if the tpl process changes. + */ +typedef struct aom_sb_tpl_features { + int available; ///< If tpl stats are available + int tpl_unit_length; ///< The block length of tpl process + int num_units; ///< The number of units inside the current superblock + int64_t intra_cost[64]; ///< The intra cost of each unit + int64_t inter_cost[64]; ///< The inter cost of each unit + int64_t mc_dep_cost[64]; ///< The motion compensated dependency cost +} aom_sb_tpl_features_t; + +/*!\brief Features collected from the simple motion process. + * + * The simple motion process collects information by applying motion compensated + * prediction on each block. + * The block size is 16x16, which could be changed. If it is changed, update + * comments and the array size here. + */ +typedef struct aom_sb_simple_motion_features { + int unit_length; ///< The block length of the simple motion process + int num_units; ///< The number of units inside the current superblock + int block_sse[64]; ///< Sum of squared error of each unit + int block_var[64]; ///< Variance of each unit +} aom_sb_simple_motion_features_t; + +/*!\brief Features of each super block. + * + * Features collected for each super block before partition search. + */ +typedef struct aom_sb_features { + /*! Features from motion search */ + aom_sb_simple_motion_features_t motion_features; + /*! Features from tpl process */ + aom_sb_tpl_features_t tpl_features; +} aom_sb_features_t; + +/*!\brief Features pass to the external model to make partition decisions. + * + * The encoder sends these features to the external model through + * "func()" defined in ..... + * + * NOTE: new member variables may be added to this structure in the future. + * Once new features are finalized, bump the major version of libaom. + */ +typedef struct aom_partition_features { + // Features for the current supervised multi-stage ML model. + /*! Feature ID to indicate active features */ + AOM_EXT_PART_FEATURE_ID id; + /*! Features collected before NONE partition */ + aom_partition_features_before_none_t before_part_none; + /*! Features collected after NONE partition */ + aom_partition_features_none_t after_part_none; + /*! Features collected after SPLIT partition */ + aom_partition_features_split_t after_part_split; + /*! Features collected after RECTANGULAR partition */ + aom_partition_features_rect_t after_part_rect; + /*! Features collected after AB partition */ + aom_partition_features_ab_t after_part_ab; + + // Features for a new ML model. + aom_sb_features_t sb_features; ///< Features collected for the super block + int mi_row; ///< Mi_row position of the block + int mi_col; ///< Mi_col position of the block + int frame_width; ///< Frame width + int frame_height; ///< Frame height + int block_size; ///< As "BLOCK_SIZE" in av1/common/enums.h + /*! + * Valid partition types. A bitmask is used. "1" represents the + * corresponding type is vaild. The bitmask follows the enum order for + * PARTITION_TYPE in "enums.h" to represent one partition type at a bit. + * For example, 0x01 stands for only PARTITION_NONE is valid, + * 0x09 (00...001001) stands for PARTITION_NONE and PARTITION_SPLIT are valid. + */ + int valid_partition_types; + int update_type; ///< Frame update type, defined in ratectrl.h + int qindex; ///< Quantization index, range: [0, 255] + int rdmult; ///< Rate-distortion multiplier + int pyramid_level; ///< The level of this frame in the hierarchical structure + int has_above_block; ///< Has above neighbor block + int above_block_width; ///< Width of the above block, -1 if not exist + int above_block_height; ///< Height of the above block, -1 if not exist + int has_left_block; ///< Has left neighbor block + int left_block_width; ///< Width of the left block, -1 if not exist + int left_block_height; ///< Height of the left block, -1 if not exist + /*! + * The following parameters are collected from applying simple motion search. + * Sum of squared error (SSE) and variance of motion compensated residual + * are good indicators of block partitioning. + * If a block is a square, we also apply motion search for its 4 sub blocks. + * If not a square, their values are -1. + * If a block is able to split horizontally, we apply motion search and get + * stats for horizontal blocks. If not, their values are -1. + * If a block is able to split vertically, we apply motion search and get + * stats for vertical blocks. If not, their values are -1. + */ + unsigned int block_sse; ///< SSE of motion compensated residual + unsigned int block_var; ///< Variance of motion compensated residual + unsigned int sub_block_sse[4]; ///< SSE of sub blocks. + unsigned int sub_block_var[4]; ///< Variance of sub blocks. + unsigned int horz_block_sse[2]; ///< SSE of horz sub blocks + unsigned int horz_block_var[2]; ///< Variance of horz sub blocks + unsigned int vert_block_sse[2]; ///< SSE of vert sub blocks + unsigned int vert_block_var[2]; ///< Variance of vert sub blocks + /*! + * The following parameters are calculated from tpl model. + * If tpl model is not available, their values are -1. + */ + int64_t tpl_intra_cost; ///< Intra cost, ref to "TplDepStats" in tpl_model.h + int64_t tpl_inter_cost; ///< Inter cost in tpl model + int64_t tpl_mc_dep_cost; ///< Motion compensated dependency cost in tpl model +} aom_partition_features_t; + +/*!\brief Partition decisions received from the external model. + * + * The encoder receives partition decisions and encodes the superblock + * with the given partition type. + * The encoder receives it from "func()" define in .... + * + * NOTE: new member variables may be added to this structure in the future. + * Once new features are finalized, bump the major version of libaom. + */ +typedef struct aom_partition_decision { + // Decisions for directly set partition types + int is_final_decision; ///< The flag whether it's the final decision + int num_nodes; ///< The number of leaf nodes + int partition_decision[2048]; ///< Partition decisions + int current_decision; ///< Partition decision for the current block + + // Decisions for partition type pruning + int terminate_partition_search; ///< Terminate further partition search + int partition_none_allowed; ///< Allow partition none type + int partition_rect_allowed[2]; ///< Allow rectangular partitions + int do_rectangular_split; ///< Try rectangular split partition + int do_square_split; ///< Try square split partition + int prune_rect_part[2]; ///< Prune rectangular partition + int horza_partition_allowed; ///< Allow HORZ_A partitioin + int horzb_partition_allowed; ///< Allow HORZ_B partitioin + int verta_partition_allowed; ///< Allow VERT_A partitioin + int vertb_partition_allowed; ///< Allow VERT_B partitioin + int partition_horz4_allowed; ///< Allow HORZ4 partition + int partition_vert4_allowed; ///< Allow VERT4 partition +} aom_partition_decision_t; + +/*!\brief Encoding stats for the given partition decision. + * + * The encoding stats collected by encoding the superblock with the + * given partition types. + * The encoder sends the stats to the external model for training + * or inference though "func()" defined in .... + */ +typedef struct aom_partition_stats { + int rate; ///< Rate cost of the block + int64_t dist; ///< Distortion of the block + int64_t rdcost; ///< Rate-distortion cost of the block +} aom_partition_stats_t; + +/*!\brief Enum for return status. + */ +typedef enum aom_ext_part_status { + AOM_EXT_PART_OK = 0, ///< Status of success + AOM_EXT_PART_ERROR = 1, ///< Status of failure + AOM_EXT_PART_TEST = 2, ///< Status used for tests +} aom_ext_part_status_t; + +/*!\brief Callback of creating an external partition model. + * + * The callback is invoked by the encoder to create an external partition + * model. + * + * \param[in] priv Callback's private data + * \param[in] part_config Config information pointer for model creation + * \param[out] ext_part_model Pointer to the model + */ +typedef aom_ext_part_status_t (*aom_ext_part_create_model_fn_t)( + void *priv, const aom_ext_part_config_t *part_config, + aom_ext_part_model_t *ext_part_model); + +/*!\brief Callback of sending features to the external partition model. + * + * The callback is invoked by the encoder to send features to the external + * partition model. + * + * \param[in] ext_part_model The external model + * \param[in] part_features Pointer to the features + */ +typedef aom_ext_part_status_t (*aom_ext_part_send_features_fn_t)( + aom_ext_part_model_t ext_part_model, + const aom_partition_features_t *part_features); + +/*!\brief Callback of receiving partition decisions from the external + * partition model. + * + * The callback is invoked by the encoder to receive partition decisions from + * the external partition model. + * + * \param[in] ext_part_model The external model + * \param[in] ext_part_decision Pointer to the partition decisions + */ +typedef aom_ext_part_status_t (*aom_ext_part_get_decision_fn_t)( + aom_ext_part_model_t ext_part_model, + aom_partition_decision_t *ext_part_decision); + +/*!\brief Callback of sending stats to the external partition model. + * + * The callback is invoked by the encoder to send encoding stats to + * the external partition model. + * + * \param[in] ext_part_model The external model + * \param[in] ext_part_stats Pointer to the encoding stats + */ +typedef aom_ext_part_status_t (*aom_ext_part_send_partition_stats_fn_t)( + aom_ext_part_model_t ext_part_model, + const aom_partition_stats_t *ext_part_stats); + +/*!\brief Callback of deleting the external partition model. + * + * The callback is invoked by the encoder to delete the external partition + * model. + * + * \param[in] ext_part_model The external model + */ +typedef aom_ext_part_status_t (*aom_ext_part_delete_model_fn_t)( + aom_ext_part_model_t ext_part_model); + +/*!\brief Callback function set for external partition model. + * + * Uses can enable external partition model by registering a set of + * callback functions with the flag: AV1E_SET_EXTERNAL_PARTITION_MODEL + */ +typedef struct aom_ext_part_funcs { + /*! + * Create an external partition model. + */ + aom_ext_part_create_model_fn_t create_model; + + /*! + * Send features to the external partition model to make partition decisions. + */ + aom_ext_part_send_features_fn_t send_features; + + /*! + * Get partition decisions from the external partition model. + */ + aom_ext_part_get_decision_fn_t get_partition_decision; + + /*! + * Send stats of the current partition to the external model. + */ + aom_ext_part_send_partition_stats_fn_t send_partition_stats; + + /*! + * Delete the external partition model. + */ + aom_ext_part_delete_model_fn_t delete_model; + + /*! + * The decision mode of the model. + */ + aom_ext_part_decision_mode_t decision_mode; + + /*! + * Private data for the external partition model. + */ + void *priv; +} aom_ext_part_funcs_t; + +/*!@} - end defgroup aom_encoder*/ +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AOM_AOM_AOM_EXTERNAL_PARTITION_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_frame_buffer.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_frame_buffer.h new file mode 100644 index 0000000..0e80373 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_frame_buffer.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ + +#ifndef AOM_AOM_AOM_FRAME_BUFFER_H_ +#define AOM_AOM_AOM_FRAME_BUFFER_H_ + +/*!\file + * \brief Describes the decoder external frame buffer interface. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "aom/aom_integer.h" + +/*!\brief The maximum number of work buffers used by libaom. + * Support maximum 4 threads to decode video in parallel. + * Each thread will use one work buffer. + * TODO(hkuang): Add support to set number of worker threads dynamically. + */ +#define AOM_MAXIMUM_WORK_BUFFERS 8 + +/*!\brief The maximum number of reference buffers that a AV1 encoder may use. + */ +#define AOM_MAXIMUM_REF_BUFFERS 8 + +/*!\brief External frame buffer + * + * This structure holds allocated frame buffers used by the decoder. + */ +typedef struct aom_codec_frame_buffer { + uint8_t *data; /**< Pointer to the data buffer */ + size_t size; /**< Size of data in bytes */ + void *priv; /**< Frame's private data */ +} aom_codec_frame_buffer_t; + +/*!\brief get frame buffer callback prototype + * + * This callback is invoked by the decoder to retrieve data for the frame + * buffer in order for the decode call to complete. The callback must + * allocate at least min_size in bytes and assign it to fb->data. The callback + * must zero out all the data allocated. Then the callback must set fb->size + * to the allocated size. The application does not need to align the allocated + * data. The callback is triggered when the decoder needs a frame buffer to + * decode a compressed image into. This function may be called more than once + * for every call to aom_codec_decode. The application may set fb->priv to + * some data which will be passed back in the aom_image_t and the release + * function call. |fb| is guaranteed to not be NULL. On success the callback + * must return 0. Any failure the callback must return a value less than 0. + * + * \param[in] priv Callback's private data + * \param[in] min_size Size in bytes needed by the buffer + * \param[in,out] fb Pointer to aom_codec_frame_buffer_t + */ +typedef int (*aom_get_frame_buffer_cb_fn_t)(void *priv, size_t min_size, + aom_codec_frame_buffer_t *fb); + +/*!\brief release frame buffer callback prototype + * + * This callback is invoked by the decoder when the frame buffer is not + * referenced by any other buffers. |fb| is guaranteed to not be NULL. On + * success the callback must return 0. Any failure the callback must return + * a value less than 0. + * + * \param[in] priv Callback's private data + * \param[in] fb Pointer to aom_codec_frame_buffer_t + */ +typedef int (*aom_release_frame_buffer_cb_fn_t)(void *priv, + aom_codec_frame_buffer_t *fb); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AOM_AOM_AOM_FRAME_BUFFER_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_image.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_image.h new file mode 100644 index 0000000..d5f0c08 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_image.h @@ -0,0 +1,448 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ + +/*!\file + * \brief Describes the aom image descriptor and associated operations + * + */ +#ifndef AOM_AOM_AOM_IMAGE_H_ +#define AOM_AOM_AOM_IMAGE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "aom/aom_integer.h" + +/*!\brief Current ABI version number + * + * \internal + * If this file is altered in any way that changes the ABI, this value + * must be bumped. Examples include, but are not limited to, changing + * types, removing or reassigning enums, adding/removing/rearranging + * fields to structures + */ +#define AOM_IMAGE_ABI_VERSION (9) /**<\hideinitializer*/ + +#define AOM_IMG_FMT_PLANAR 0x100 /**< Image is a planar format. */ +#define AOM_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */ +/** 0x400 used to signal alpha channel, skipping for backwards compatibility. */ +#define AOM_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */ + +/*!\brief List of supported image formats */ +typedef enum aom_img_fmt { + AOM_IMG_FMT_NONE, + AOM_IMG_FMT_YV12 = + AOM_IMG_FMT_PLANAR | AOM_IMG_FMT_UV_FLIP | 1, /**< planar YVU */ + AOM_IMG_FMT_I420 = AOM_IMG_FMT_PLANAR | 2, + AOM_IMG_FMT_AOMYV12 = AOM_IMG_FMT_PLANAR | AOM_IMG_FMT_UV_FLIP | + 3, /** < planar 4:2:0 format with aom color space */ + AOM_IMG_FMT_AOMI420 = AOM_IMG_FMT_PLANAR | 4, + AOM_IMG_FMT_I422 = AOM_IMG_FMT_PLANAR | 5, + AOM_IMG_FMT_I444 = AOM_IMG_FMT_PLANAR | 6, +/*!\brief Allows detection of the presence of AOM_IMG_FMT_NV12 at compile time. + */ +#define AOM_HAVE_IMG_FMT_NV12 1 + AOM_IMG_FMT_NV12 = + AOM_IMG_FMT_PLANAR | 7, /**< 4:2:0 with U and V interleaved */ + AOM_IMG_FMT_I42016 = AOM_IMG_FMT_I420 | AOM_IMG_FMT_HIGHBITDEPTH, + AOM_IMG_FMT_YV1216 = AOM_IMG_FMT_YV12 | AOM_IMG_FMT_HIGHBITDEPTH, + AOM_IMG_FMT_I42216 = AOM_IMG_FMT_I422 | AOM_IMG_FMT_HIGHBITDEPTH, + AOM_IMG_FMT_I44416 = AOM_IMG_FMT_I444 | AOM_IMG_FMT_HIGHBITDEPTH, +} aom_img_fmt_t; /**< alias for enum aom_img_fmt */ + +/*!\brief List of supported color primaries */ +typedef enum aom_color_primaries { + AOM_CICP_CP_RESERVED_0 = 0, /**< For future use */ + AOM_CICP_CP_BT_709 = 1, /**< BT.709 */ + AOM_CICP_CP_UNSPECIFIED = 2, /**< Unspecified */ + AOM_CICP_CP_RESERVED_3 = 3, /**< For future use */ + AOM_CICP_CP_BT_470_M = 4, /**< BT.470 System M (historical) */ + AOM_CICP_CP_BT_470_B_G = 5, /**< BT.470 System B, G (historical) */ + AOM_CICP_CP_BT_601 = 6, /**< BT.601 */ + AOM_CICP_CP_SMPTE_240 = 7, /**< SMPTE 240 */ + AOM_CICP_CP_GENERIC_FILM = + 8, /**< Generic film (color filters using illuminant C) */ + AOM_CICP_CP_BT_2020 = 9, /**< BT.2020, BT.2100 */ + AOM_CICP_CP_XYZ = 10, /**< SMPTE 428 (CIE 1921 XYZ) */ + AOM_CICP_CP_SMPTE_431 = 11, /**< SMPTE RP 431-2 */ + AOM_CICP_CP_SMPTE_432 = 12, /**< SMPTE EG 432-1 */ + AOM_CICP_CP_RESERVED_13 = 13, /**< For future use (values 13 - 21) */ + AOM_CICP_CP_EBU_3213 = 22, /**< EBU Tech. 3213-E */ + AOM_CICP_CP_RESERVED_23 = 23 /**< For future use (values 23 - 255) */ +} aom_color_primaries_t; /**< alias for enum aom_color_primaries */ + +/*!\brief List of supported transfer functions */ +typedef enum aom_transfer_characteristics { + AOM_CICP_TC_RESERVED_0 = 0, /**< For future use */ + AOM_CICP_TC_BT_709 = 1, /**< BT.709 */ + AOM_CICP_TC_UNSPECIFIED = 2, /**< Unspecified */ + AOM_CICP_TC_RESERVED_3 = 3, /**< For future use */ + AOM_CICP_TC_BT_470_M = 4, /**< BT.470 System M (historical) */ + AOM_CICP_TC_BT_470_B_G = 5, /**< BT.470 System B, G (historical) */ + AOM_CICP_TC_BT_601 = 6, /**< BT.601 */ + AOM_CICP_TC_SMPTE_240 = 7, /**< SMPTE 240 M */ + AOM_CICP_TC_LINEAR = 8, /**< Linear */ + AOM_CICP_TC_LOG_100 = 9, /**< Logarithmic (100 : 1 range) */ + AOM_CICP_TC_LOG_100_SQRT10 = + 10, /**< Logarithmic (100 * Sqrt(10) : 1 range) */ + AOM_CICP_TC_IEC_61966 = 11, /**< IEC 61966-2-4 */ + AOM_CICP_TC_BT_1361 = 12, /**< BT.1361 */ + AOM_CICP_TC_SRGB = 13, /**< sRGB or sYCC*/ + AOM_CICP_TC_BT_2020_10_BIT = 14, /**< BT.2020 10-bit systems */ + AOM_CICP_TC_BT_2020_12_BIT = 15, /**< BT.2020 12-bit systems */ + AOM_CICP_TC_SMPTE_2084 = 16, /**< SMPTE ST 2084, ITU BT.2100 PQ */ + AOM_CICP_TC_SMPTE_428 = 17, /**< SMPTE ST 428 */ + AOM_CICP_TC_HLG = 18, /**< BT.2100 HLG, ARIB STD-B67 */ + AOM_CICP_TC_RESERVED_19 = 19 /**< For future use (values 19-255) */ +} aom_transfer_characteristics_t; /**< alias for enum aom_transfer_function */ + +/*!\brief List of supported matrix coefficients */ +typedef enum aom_matrix_coefficients { + AOM_CICP_MC_IDENTITY = 0, /**< Identity matrix */ + AOM_CICP_MC_BT_709 = 1, /**< BT.709 */ + AOM_CICP_MC_UNSPECIFIED = 2, /**< Unspecified */ + AOM_CICP_MC_RESERVED_3 = 3, /**< For future use */ + AOM_CICP_MC_FCC = 4, /**< US FCC 73.628 */ + AOM_CICP_MC_BT_470_B_G = 5, /**< BT.470 System B, G (historical) */ + AOM_CICP_MC_BT_601 = 6, /**< BT.601 */ + AOM_CICP_MC_SMPTE_240 = 7, /**< SMPTE 240 M */ + AOM_CICP_MC_SMPTE_YCGCO = 8, /**< YCgCo */ + AOM_CICP_MC_BT_2020_NCL = + 9, /**< BT.2020 non-constant luminance, BT.2100 YCbCr */ + AOM_CICP_MC_BT_2020_CL = 10, /**< BT.2020 constant luminance */ + AOM_CICP_MC_SMPTE_2085 = 11, /**< SMPTE ST 2085 YDzDx */ + AOM_CICP_MC_CHROMAT_NCL = + 12, /**< Chromaticity-derived non-constant luminance */ + AOM_CICP_MC_CHROMAT_CL = 13, /**< Chromaticity-derived constant luminance */ + AOM_CICP_MC_ICTCP = 14, /**< BT.2100 ICtCp */ + AOM_CICP_MC_RESERVED_15 = 15 /**< For future use (values 15-255) */ +} aom_matrix_coefficients_t; + +/*!\brief List of supported color range */ +typedef enum aom_color_range { + AOM_CR_STUDIO_RANGE = 0, /**<- Y [16..235], UV [16..240] (bit depth 8) */ + /**<- Y [64..940], UV [64..960] (bit depth 10) */ + /**<- Y [256..3760], UV [256..3840] (bit depth 12) */ + AOM_CR_FULL_RANGE = 1 /**<- YUV/RGB [0..255] (bit depth 8) */ + /**<- YUV/RGB [0..1023] (bit depth 10) */ + /**<- YUV/RGB [0..4095] (bit depth 12) */ +} aom_color_range_t; /**< alias for enum aom_color_range */ + +/*!\brief List of chroma sample positions */ +typedef enum aom_chroma_sample_position { + AOM_CSP_UNKNOWN = 0, /**< Unknown */ + AOM_CSP_VERTICAL = 1, /**< Horizontally co-located with luma(0, 0)*/ + /**< sample, between two vertical samples */ + AOM_CSP_COLOCATED = 2, /**< Co-located with luma(0, 0) sample */ + AOM_CSP_RESERVED = 3 /**< Reserved value */ +} aom_chroma_sample_position_t; /**< alias for enum aom_transfer_function */ + +/*!\brief List of insert flags for Metadata + * + * These flags control how the library treats metadata during encode. + * + * While encoding, when metadata is added to an aom_image via + * aom_img_add_metadata(), the flag passed along with the metadata will + * determine where the metadata OBU will be placed in the encoded OBU stream. + * Metadata will be emitted into the output stream within the next temporal unit + * if it satisfies the specified insertion flag. + * + * During decoding, when the library encounters a metadata OBU, it is always + * flagged as AOM_MIF_ANY_FRAME and emitted with the next output aom_image. + */ +typedef enum aom_metadata_insert_flags { + AOM_MIF_NON_KEY_FRAME = 0, /**< Adds metadata if it's not keyframe */ + AOM_MIF_KEY_FRAME = 1, /**< Adds metadata only if it's a keyframe */ + AOM_MIF_ANY_FRAME = 2 /**< Adds metadata to any type of frame */ +} aom_metadata_insert_flags_t; + +/*!\brief Array of aom_metadata structs for an image. */ +typedef struct aom_metadata_array aom_metadata_array_t; + +/*!\brief Metadata payload. */ +typedef struct aom_metadata { + uint32_t type; /**< Metadata type */ + uint8_t *payload; /**< Metadata payload data */ + size_t sz; /**< Metadata payload size */ + aom_metadata_insert_flags_t insert_flag; /**< Metadata insertion flag */ +} aom_metadata_t; + +/**\brief Image Descriptor */ +typedef struct aom_image { + aom_img_fmt_t fmt; /**< Image Format */ + aom_color_primaries_t cp; /**< CICP Color Primaries */ + aom_transfer_characteristics_t tc; /**< CICP Transfer Characteristics */ + aom_matrix_coefficients_t mc; /**< CICP Matrix Coefficients */ + int monochrome; /**< Whether image is monochrome */ + aom_chroma_sample_position_t csp; /**< chroma sample position */ + aom_color_range_t range; /**< Color Range */ + + /* Image storage dimensions */ + unsigned int w; /**< Stored image width */ + unsigned int h; /**< Stored image height */ + unsigned int bit_depth; /**< Stored image bit-depth */ + + /* Image display dimensions */ + unsigned int d_w; /**< Displayed image width */ + unsigned int d_h; /**< Displayed image height */ + + /* Image intended rendering dimensions */ + unsigned int r_w; /**< Intended rendering image width */ + unsigned int r_h; /**< Intended rendering image height */ + + /* Chroma subsampling info */ + unsigned int x_chroma_shift; /**< subsampling order, X */ + unsigned int y_chroma_shift; /**< subsampling order, Y */ + +/* Image data pointers. */ +#define AOM_PLANE_PACKED 0 /**< To be used for all packed formats */ +#define AOM_PLANE_Y 0 /**< Y (Luminance) plane */ +#define AOM_PLANE_U 1 /**< U (Chroma) plane */ +#define AOM_PLANE_V 2 /**< V (Chroma) plane */ + /* planes[AOM_PLANE_V] = NULL and stride[AOM_PLANE_V] = 0 when fmt == + * AOM_IMG_FMT_NV12 */ + unsigned char *planes[3]; /**< pointer to the top left pixel for each plane */ + int stride[3]; /**< stride between rows for each plane */ + size_t sz; /**< data size */ + + int bps; /**< bits per sample (for packed formats) */ + + int temporal_id; /**< Temporal layer Id of image */ + int spatial_id; /**< Spatial layer Id of image */ + + /*!\brief The following member may be set by the application to associate + * data with this image. + */ + void *user_priv; + + /* The following members should be treated as private. */ + unsigned char *img_data; /**< private */ + int img_data_owner; /**< private */ + int self_allocd; /**< private */ + + aom_metadata_array_t + *metadata; /**< Metadata payloads associated with the image. */ + + void *fb_priv; /**< Frame buffer data associated with the image. */ +} aom_image_t; /**< alias for struct aom_image */ + +/*!\brief Open a descriptor, allocating storage for the underlying image + * + * Returns a descriptor for storing an image of the given format. The + * storage for the image is allocated on the heap. + * + * \param[in] img Pointer to storage for descriptor. If this parameter + * is NULL, the storage for the descriptor will be + * allocated on the heap. + * \param[in] fmt Format for the image + * \param[in] d_w Width of the image + * \param[in] d_h Height of the image + * \param[in] align Alignment, in bytes, of the image buffer and + * each row in the image (stride). + * + * \return Returns a pointer to the initialized image descriptor. If the img + * parameter is non-null, the value of the img parameter will be + * returned. + */ +aom_image_t *aom_img_alloc(aom_image_t *img, aom_img_fmt_t fmt, + unsigned int d_w, unsigned int d_h, + unsigned int align); + +/*!\brief Open a descriptor, using existing storage for the underlying image + * + * Returns a descriptor for storing an image of the given format. The + * storage for the image has been allocated elsewhere, and a descriptor is + * desired to "wrap" that storage. + * + * \param[in] img Pointer to storage for descriptor. If this parameter + * is NULL, the storage for the descriptor will be + * allocated on the heap. + * \param[in] fmt Format for the image + * \param[in] d_w Width of the image + * \param[in] d_h Height of the image + * \param[in] align Alignment, in bytes, of each row in the image + * (stride). + * \param[in] img_data Storage to use for the image + * + * \return Returns a pointer to the initialized image descriptor. If the img + * parameter is non-null, the value of the img parameter will be + * returned. + */ +aom_image_t *aom_img_wrap(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, + unsigned int d_h, unsigned int align, + unsigned char *img_data); + +/*!\brief Open a descriptor, allocating storage for the underlying image with a + * border + * + * Returns a descriptor for storing an image of the given format and its + * borders. The storage for the image is allocated on the heap. + * + * \param[in] img Pointer to storage for descriptor. If this parameter + * is NULL, the storage for the descriptor will be + * allocated on the heap. + * \param[in] fmt Format for the image + * \param[in] d_w Width of the image + * \param[in] d_h Height of the image + * \param[in] align Alignment, in bytes, of the image buffer and + * each row in the image (stride). + * \param[in] size_align Alignment, in pixels, of the image width and height. + * \param[in] border A border that is padded on four sides of the image. + * + * \return Returns a pointer to the initialized image descriptor. If the img + * parameter is non-null, the value of the img parameter will be + * returned. + */ +aom_image_t *aom_img_alloc_with_border(aom_image_t *img, aom_img_fmt_t fmt, + unsigned int d_w, unsigned int d_h, + unsigned int align, + unsigned int size_align, + unsigned int border); + +/*!\brief Set the rectangle identifying the displayed portion of the image + * + * Updates the displayed rectangle (aka viewport) on the image surface to + * match the specified coordinates and size. Specifically, sets img->d_w, + * img->d_h, and elements of the img->planes[] array. + * + * \param[in] img Image descriptor + * \param[in] x leftmost column + * \param[in] y topmost row + * \param[in] w width + * \param[in] h height + * \param[in] border A border that is padded on four sides of the image. + * + * \return 0 if the requested rectangle is valid, nonzero (-1) otherwise. + */ +int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y, + unsigned int w, unsigned int h, unsigned int border); + +/*!\brief Flip the image vertically (top for bottom) + * + * Adjusts the image descriptor's pointers and strides to make the image + * be referenced upside-down. + * + * \param[in] img Image descriptor + */ +void aom_img_flip(aom_image_t *img); + +/*!\brief Close an image descriptor + * + * Frees all allocated storage associated with an image descriptor. + * + * \param[in] img Image descriptor + */ +void aom_img_free(aom_image_t *img); + +/*!\brief Get the width of a plane + * + * Get the width of a plane of an image + * + * \param[in] img Image descriptor + * \param[in] plane Plane index + */ +int aom_img_plane_width(const aom_image_t *img, int plane); + +/*!\brief Get the height of a plane + * + * Get the height of a plane of an image + * + * \param[in] img Image descriptor + * \param[in] plane Plane index + */ +int aom_img_plane_height(const aom_image_t *img, int plane); + +/*!\brief Add metadata to image. + * + * Adds metadata to aom_image_t. + * Function makes a copy of the provided data parameter. + * Metadata insertion point is controlled by insert_flag. + * + * \param[in] img Image descriptor + * \param[in] type Metadata type + * \param[in] data Metadata contents + * \param[in] sz Metadata contents size + * \param[in] insert_flag Metadata insert flag + * + * \return Returns 0 on success. If img or data is NULL, sz is 0, or memory + * allocation fails, it returns -1. + */ +int aom_img_add_metadata(aom_image_t *img, uint32_t type, const uint8_t *data, + size_t sz, aom_metadata_insert_flags_t insert_flag); + +/*!\brief Return a metadata payload stored within the image metadata array. + * + * Gets the metadata (aom_metadata_t) at the indicated index in the image + * metadata array. + * + * \param[in] img Pointer to image descriptor to get metadata from + * \param[in] index Metadata index to get from metadata array + * + * \return Returns a const pointer to the selected metadata, if img and/or index + * is invalid, it returns NULL. + */ +const aom_metadata_t *aom_img_get_metadata(const aom_image_t *img, + size_t index); + +/*!\brief Return the number of metadata blocks within the image. + * + * Gets the number of metadata blocks contained within the provided image + * metadata array. + * + * \param[in] img Pointer to image descriptor to get metadata number + * from. + * + * \return Returns the size of the metadata array. If img or metadata is NULL, + * it returns 0. + */ +size_t aom_img_num_metadata(const aom_image_t *img); + +/*!\brief Remove metadata from image. + * + * Removes all metadata in image metadata list and sets metadata list pointer + * to NULL. + * + * \param[in] img Image descriptor + */ +void aom_img_remove_metadata(aom_image_t *img); + +/*!\brief Allocate memory for aom_metadata struct. + * + * Allocates storage for the metadata payload, sets its type and copies the + * payload data into the aom_metadata struct. A metadata payload buffer of size + * sz is allocated and sz bytes are copied from data into the payload buffer. + * + * \param[in] type Metadata type + * \param[in] data Metadata data pointer + * \param[in] sz Metadata size + * \param[in] insert_flag Metadata insert flag + * + * \return Returns the newly allocated aom_metadata struct. If data is NULL, + * sz is 0, or memory allocation fails, it returns NULL. + */ +aom_metadata_t *aom_img_metadata_alloc(uint32_t type, const uint8_t *data, + size_t sz, + aom_metadata_insert_flags_t insert_flag); + +/*!\brief Free metadata struct. + * + * Free metadata struct and its buffer. + * + * \param[in] metadata Metadata struct pointer + */ +void aom_img_metadata_free(aom_metadata_t *metadata); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AOM_AOM_AOM_IMAGE_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_integer.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_integer.h new file mode 100644 index 0000000..d9bba09 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aom_integer.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_AOM_AOM_INTEGER_H_ +#define AOM_AOM_AOM_INTEGER_H_ + +/* get ptrdiff_t, size_t, wchar_t, NULL */ +#include + +#if defined(_MSC_VER) +#define AOM_FORCE_INLINE __forceinline +#define AOM_INLINE __inline +#else +#define AOM_FORCE_INLINE __inline__ __attribute__((always_inline)) +#define AOM_INLINE inline +#endif + +/* Assume platforms have the C99 standard integer types. */ + +#if defined(__cplusplus) +#if !defined(__STDC_FORMAT_MACROS) +#define __STDC_FORMAT_MACROS +#endif +#if !defined(__STDC_LIMIT_MACROS) +#define __STDC_LIMIT_MACROS +#endif +#endif // __cplusplus + +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif // __cplusplus + +// Returns size of uint64_t when encoded using LEB128. +size_t aom_uleb_size_in_bytes(uint64_t value); + +// Returns 0 on success, -1 on decode failure. +// On success, 'value' stores the decoded LEB128 value and 'length' stores +// the number of bytes decoded. +int aom_uleb_decode(const uint8_t *buffer, size_t available, uint64_t *value, + size_t *length); + +// Encodes LEB128 integer. Returns 0 when successful, and -1 upon failure. +int aom_uleb_encode(uint64_t value, size_t available, uint8_t *coded_value, + size_t *coded_size); + +// Encodes LEB128 integer to size specified. Returns 0 when successful, and -1 +// upon failure. +// Note: This will write exactly pad_to_size bytes; if the value cannot be +// encoded in this many bytes, then this will fail. +int aom_uleb_encode_fixed_size(uint64_t value, size_t available, + size_t pad_to_size, uint8_t *coded_value, + size_t *coded_size); + +#if defined(__cplusplus) +} // extern "C" +#endif // __cplusplus + +#endif // AOM_AOM_AOM_INTEGER_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aomcx.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aomcx.h new file mode 100644 index 0000000..8f12936 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/aom/aomcx.h @@ -0,0 +1,2080 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_AOM_AOMCX_H_ +#define AOM_AOM_AOMCX_H_ + +/*!\defgroup aom_encoder AOMedia AOM/AV1 Encoder + * \ingroup aom + * + * @{ + */ +#include "aom/aom.h" +#include "aom/aom_encoder.h" +#include "aom/aom_external_partition.h" + +/*!\file + * \brief Provides definitions for using AOM or AV1 encoder algorithm within the + * aom Codec Interface. + * + * Several interfaces are excluded with CONFIG_REALTIME_ONLY build: + * Global motion + * Warped motion + * OBMC + * TPL model + * Loop restoration + * + * The following features are also disabled with CONFIG_REALTIME_ONLY: + * AV1E_SET_QUANT_B_ADAPT + * CNN + * 4X rectangular blocks + * 4X rectangular transform in intra prediction + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*!\name Algorithm interface for AV1 + * + * This interface provides the capability to encode raw AV1 streams. + *@{ + */ + +/*!\brief A single instance of the AV1 encoder. + *\deprecated This access mechanism is provided for backwards compatibility; + * prefer aom_codec_av1_cx(). + */ +extern aom_codec_iface_t aom_codec_av1_cx_algo; + +/*!\brief The interface to the AV1 encoder. + */ +extern aom_codec_iface_t *aom_codec_av1_cx(void); +/*!@} - end algorithm interface member group */ + +/* + * Algorithm Flags + */ + +/*!\brief Don't reference the last frame + * + * When this flag is set, the encoder will not use the last frame as a + * predictor. When not set, the encoder will choose whether to use the + * last frame or not automatically. + */ +#define AOM_EFLAG_NO_REF_LAST (1 << 16) +/*!\brief Don't reference the last2 frame + * + * When this flag is set, the encoder will not use the last2 frame as a + * predictor. When not set, the encoder will choose whether to use the + * last2 frame or not automatically. + */ +#define AOM_EFLAG_NO_REF_LAST2 (1 << 17) +/*!\brief Don't reference the last3 frame + * + * When this flag is set, the encoder will not use the last3 frame as a + * predictor. When not set, the encoder will choose whether to use the + * last3 frame or not automatically. + */ +#define AOM_EFLAG_NO_REF_LAST3 (1 << 18) +/*!\brief Don't reference the golden frame + * + * When this flag is set, the encoder will not use the golden frame as a + * predictor. When not set, the encoder will choose whether to use the + * golden frame or not automatically. + */ +#define AOM_EFLAG_NO_REF_GF (1 << 19) + +/*!\brief Don't reference the alternate reference frame + * + * When this flag is set, the encoder will not use the alt ref frame as a + * predictor. When not set, the encoder will choose whether to use the + * alt ref frame or not automatically. + */ +#define AOM_EFLAG_NO_REF_ARF (1 << 20) +/*!\brief Don't reference the bwd reference frame + * + * When this flag is set, the encoder will not use the bwd ref frame as a + * predictor. When not set, the encoder will choose whether to use the + * bwd ref frame or not automatically. + */ +#define AOM_EFLAG_NO_REF_BWD (1 << 21) +/*!\brief Don't reference the alt2 reference frame + * + * When this flag is set, the encoder will not use the alt2 ref frame as a + * predictor. When not set, the encoder will choose whether to use the + * alt2 ref frame or not automatically. + */ +#define AOM_EFLAG_NO_REF_ARF2 (1 << 22) + +/*!\brief Don't update the last frame + * + * When this flag is set, the encoder will not update the last frame with + * the contents of the current frame. + */ +#define AOM_EFLAG_NO_UPD_LAST (1 << 23) + +/*!\brief Don't update the golden frame + * + * When this flag is set, the encoder will not update the golden frame with + * the contents of the current frame. + */ +#define AOM_EFLAG_NO_UPD_GF (1 << 24) + +/*!\brief Don't update the alternate reference frame + * + * When this flag is set, the encoder will not update the alt ref frame with + * the contents of the current frame. + */ +#define AOM_EFLAG_NO_UPD_ARF (1 << 25) +/*!\brief Disable entropy update + * + * When this flag is set, the encoder will not update its internal entropy + * model based on the entropy of this frame. + */ +#define AOM_EFLAG_NO_UPD_ENTROPY (1 << 26) +/*!\brief Disable ref frame mvs + * + * When this flag is set, the encoder will not allow frames to + * be encoded using mfmv. + */ +#define AOM_EFLAG_NO_REF_FRAME_MVS (1 << 27) +/*!\brief Enable error resilient frame + * + * When this flag is set, the encoder will code frames as error + * resilient. + */ +#define AOM_EFLAG_ERROR_RESILIENT (1 << 28) +/*!\brief Enable s frame mode + * + * When this flag is set, the encoder will code frames as an + * s frame. + */ +#define AOM_EFLAG_SET_S_FRAME (1 << 29) +/*!\brief Force primary_ref_frame to PRIMARY_REF_NONE + * + * When this flag is set, the encoder will set a frame's primary_ref_frame + * to PRIMARY_REF_NONE + */ +#define AOM_EFLAG_SET_PRIMARY_REF_NONE (1 << 30) + +/*!\brief AVx encoder control functions + * + * This set of macros define the control functions available for AVx + * encoder interface. + * The range of encode control ID is 7-229(max). + * + * \sa #aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...) + */ +enum aome_enc_control_id { + /*!\brief Codec control function to set which reference frame encoder can use, + * int parameter. + */ + AOME_USE_REFERENCE = 7, + + /*!\brief Codec control function to pass an ROI map to encoder, aom_roi_map_t* + * parameter. + */ + AOME_SET_ROI_MAP = 8, + + /*!\brief Codec control function to pass an Active map to encoder, + * aom_active_map_t* parameter. + */ + AOME_SET_ACTIVEMAP = 9, + + /* NOTE: enum 10 unused */ + + /*!\brief Codec control function to set encoder scaling mode, + * aom_scaling_mode_t* parameter. + */ + AOME_SET_SCALEMODE = 11, + + /*!\brief Codec control function to set encoder spatial layer id, unsigned int + * parameter. + */ + AOME_SET_SPATIAL_LAYER_ID = 12, + + /*!\brief Codec control function to set encoder internal speed settings, + * int parameter + * + * Changes in this value influences the complexity of algorithms used in + * encoding process, values greater than 0 will increase encoder speed at + * the expense of quality. + * + * Valid range: 0..10. 0 runs the slowest, and 10 runs the fastest; + * quality improves as speed decreases (since more compression + * possibilities are explored). + * + * NOTE: 10 is only allowed in AOM_USAGE_REALTIME. In AOM_USAGE_GOOD_QUALITY + * and AOM_USAGE_ALL_INTRA, 9 is the highest allowed value. However, + * AOM_USAGE_GOOD_QUALITY treats 7..9 the same as 6. Also, AOM_USAGE_REALTIME + * treats 0..4 the same as 5. + */ + AOME_SET_CPUUSED = 13, + + /*!\brief Codec control function to enable automatic set and use alf frames, + * unsigned int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AOME_SET_ENABLEAUTOALTREF = 14, + + /* NOTE: enum 15 unused */ + + /*!\brief Codec control function to set the sharpness parameter, + * unsigned int parameter. + * + * This parameter controls the level at which rate-distortion optimization of + * transform coefficients favours sharpness in the block. + * + * Valid range: 0..7. The default is 0. Values 1-7 will avoid eob and skip + * block optimization and will change rdmult in favour of block sharpness. + */ + AOME_SET_SHARPNESS = AOME_SET_ENABLEAUTOALTREF + 2, // 16 + + /*!\brief Codec control function to set the threshold for MBs treated static, + * unsigned int parameter + */ + AOME_SET_STATIC_THRESHOLD = 17, + + /* NOTE: enum 18 unused */ + + /*!\brief Codec control function to get last quantizer chosen by the encoder, + * int* parameter + * + * Return value uses internal quantizer scale defined by the codec. + */ + AOME_GET_LAST_QUANTIZER = AOME_SET_STATIC_THRESHOLD + 2, // 19 + + /*!\brief Codec control function to get last quantizer chosen by the encoder, + * int* parameter + * + * Return value uses the 0..63 scale as used by the rc_*_quantizer config + * parameters. + */ + AOME_GET_LAST_QUANTIZER_64 = 20, + + /*!\brief Codec control function to set the max no of frames to create arf, + * unsigned int parameter + */ + AOME_SET_ARNR_MAXFRAMES = 21, + + /*!\brief Codec control function to set the filter strength for the arf, + * unsigned int parameter + */ + AOME_SET_ARNR_STRENGTH = 22, + + /* NOTE: enum 23 unused */ + + /*!\brief Codec control function to set visual tuning, aom_tune_metric (int) + * parameter + * + * The default is AOM_TUNE_PSNR. + */ + AOME_SET_TUNING = AOME_SET_ARNR_STRENGTH + 2, // 24 + + /*!\brief Codec control function to set constrained / constant quality level, + * unsigned int parameter + * + * Valid range: 0..63 + * + * \attention For this value to be used aom_codec_enc_cfg_t::rc_end_usage + * must be set to #AOM_CQ or #AOM_Q. + */ + AOME_SET_CQ_LEVEL = 25, + + /*!\brief Codec control function to set max data rate for intra frames, + * unsigned int parameter + * + * This value controls additional clamping on the maximum size of a + * keyframe. It is expressed as a percentage of the average + * per-frame bitrate, with the special (and default) value 0 meaning + * unlimited, or no additional clamping beyond the codec's built-in + * algorithm. + * + * For example, to allocate no more than 4.5 frames worth of bitrate + * to a keyframe, set this to 450. + */ + AOME_SET_MAX_INTRA_BITRATE_PCT = 26, + + /*!\brief Codec control function to set number of spatial layers, int + * parameter + */ + AOME_SET_NUMBER_SPATIAL_LAYERS = 27, + + /*!\brief Codec control function to set max data rate for inter frames, + * unsigned int parameter + * + * This value controls additional clamping on the maximum size of an + * inter frame. It is expressed as a percentage of the average + * per-frame bitrate, with the special (and default) value 0 meaning + * unlimited, or no additional clamping beyond the codec's built-in + * algorithm. + * + * For example, to allow no more than 4.5 frames worth of bitrate + * to an inter frame, set this to 450. + */ + AV1E_SET_MAX_INTER_BITRATE_PCT = AOME_SET_MAX_INTRA_BITRATE_PCT + 2, // 28 + + /*!\brief Boost percentage for Golden Frame in CBR mode, unsigned int + * parameter + * + * This value controls the amount of boost given to Golden Frame in + * CBR mode. It is expressed as a percentage of the average + * per-frame bitrate, with the special (and default) value 0 meaning + * the feature is off, i.e., no golden frame boost in CBR mode and + * average bitrate target is used. + * + * For example, to allow 100% more bits, i.e, 2X, in a golden frame + * than average frame, set this to 100. + */ + AV1E_SET_GF_CBR_BOOST_PCT = 29, + + /* NOTE: enum 30 unused */ + + /*!\brief Codec control function to set lossless encoding mode, unsigned int + * parameter + * + * AV1 can operate in lossless encoding mode, in which the bitstream + * produced will be able to decode and reconstruct a perfect copy of + * input source. + * + * - 0 = normal coding mode, may be lossy (default) + * - 1 = lossless coding mode + */ + AV1E_SET_LOSSLESS = AV1E_SET_GF_CBR_BOOST_PCT + 2, // 31 + + /*!\brief Codec control function to enable the row based multi-threading + * of the encoder, unsigned int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ROW_MT = 32, + + /*!\brief Codec control function to set number of tile columns. unsigned int + * parameter + * + * In encoding and decoding, AV1 allows an input image frame be partitioned + * into separate vertical tile columns, which can be encoded or decoded + * independently. This enables easy implementation of parallel encoding and + * decoding. The parameter for this control describes the number of tile + * columns (in log2 units), which has a valid range of [0, 6]: + * \verbatim + 0 = 1 tile column + 1 = 2 tile columns + 2 = 4 tile columns + ..... + n = 2**n tile columns + \endverbatim + * By default, the value is 0, i.e. one single column tile for entire image. + */ + AV1E_SET_TILE_COLUMNS = 33, + + /*!\brief Codec control function to set number of tile rows, unsigned int + * parameter + * + * In encoding and decoding, AV1 allows an input image frame be partitioned + * into separate horizontal tile rows, which can be encoded or decoded + * independently. The parameter for this control describes the number of tile + * rows (in log2 units), which has a valid range of [0, 6]: + * \verbatim + 0 = 1 tile row + 1 = 2 tile rows + 2 = 4 tile rows + ..... + n = 2**n tile rows + \endverbatim + * By default, the value is 0, i.e. one single row tile for entire image. + */ + AV1E_SET_TILE_ROWS = 34, + + /*!\brief Codec control function to enable RDO modulated by frame temporal + * dependency, unsigned int parameter + * + * - 0 = disable + * - 1 = enable (default) + * + * \note Excluded from CONFIG_REALTIME_ONLY build. + */ + AV1E_SET_ENABLE_TPL_MODEL = 35, + + /*!\brief Codec control function to enable temporal filtering on key frame, + * unsigned int parameter + * + * - 0 = disable + * - 1 = enable without overlay (default) + * - 2 = enable with overlay + */ + AV1E_SET_ENABLE_KEYFRAME_FILTERING = 36, + + /*!\brief Codec control function to enable frame parallel decoding feature, + * unsigned int parameter + * + * AV1 has a bitstream feature to reduce decoding dependency between frames + * by turning off backward update of probability context used in encoding + * and decoding. This allows staged parallel processing of more than one + * video frames in the decoder. This control function provides a means to + * turn this feature on or off for bitstreams produced by encoder. + * + * - 0 = disable (default) + * - 1 = enable + */ + AV1E_SET_FRAME_PARALLEL_DECODING = 37, + + /*!\brief Codec control function to enable error_resilient_mode, int parameter + * + * AV1 has a bitstream feature to guarantee parseability of a frame + * by turning on the error_resilient_decoding mode, even though the + * reference buffers are unreliable or not received. + * + * - 0 = disable (default) + * - 1 = enable + */ + AV1E_SET_ERROR_RESILIENT_MODE = 38, + + /*!\brief Codec control function to enable s_frame_mode, int parameter + * + * AV1 has a bitstream feature to designate certain frames as S-frames, + * from where we can switch to a different stream, + * even though the reference buffers may not be exactly identical. + * + * - 0 = disable (default) + * - 1 = enable + */ + AV1E_SET_S_FRAME_MODE = 39, + + /*!\brief Codec control function to set adaptive quantization mode, unsigned + * int parameter + * + * AV1 has a segment based feature that allows encoder to adaptively change + * quantization parameter for each segment within a frame to improve the + * subjective quality. This control makes encoder operate in one of the + * several AQ modes supported. + * + * - 0 = disable (default) + * - 1 = variance + * - 2 = complexity + * - 3 = cyclic refresh + */ + AV1E_SET_AQ_MODE = 40, + + /*!\brief Codec control function to enable/disable periodic Q boost, unsigned + * int parameter + * + * One AV1 encoder speed feature is to enable quality boost by lowering + * frame level Q periodically. This control function provides a means to + * turn on/off this feature. + * + * - 0 = disable (default) + * - 1 = enable + */ + AV1E_SET_FRAME_PERIODIC_BOOST = 41, + + /*!\brief Codec control function to set noise sensitivity, unsigned int + * parameter + * + * - 0 = disable (default) + * - 1 = enable (Y only) + */ + AV1E_SET_NOISE_SENSITIVITY = 42, + + /*!\brief Codec control function to set content type, aom_tune_content + * parameter + * + * - AOM_CONTENT_DEFAULT = Regular video content (default) + * - AOM_CONTENT_SCREEN = Screen capture content + * - AOM_CONTENT_FILM = Film content + */ + AV1E_SET_TUNE_CONTENT = 43, + + /*!\brief Codec control function to set CDF update mode, unsigned int + * parameter + * + * - 0: no update + * - 1: update on every frame (default) + * - 2: selectively update + */ + AV1E_SET_CDF_UPDATE_MODE = 44, + + /*!\brief Codec control function to set color space info, int parameter + * + * - 0 = For future use + * - 1 = BT.709 + * - 2 = Unspecified (default) + * - 3 = For future use + * - 4 = BT.470 System M (historical) + * - 5 = BT.470 System B, G (historical) + * - 6 = BT.601 + * - 7 = SMPTE 240 + * - 8 = Generic film (color filters using illuminant C) + * - 9 = BT.2020, BT.2100 + * - 10 = SMPTE 428 (CIE 1921 XYZ) + * - 11 = SMPTE RP 431-2 + * - 12 = SMPTE EG 432-1 + * - 13..21 = For future use + * - 22 = EBU Tech. 3213-E + * - 23 = For future use + */ + AV1E_SET_COLOR_PRIMARIES = 45, + + /*!\brief Codec control function to set transfer function info, int parameter + * + * - 0 = For future use + * - 1 = BT.709 + * - 2 = Unspecified (default) + * - 3 = For future use + * - 4 = BT.470 System M (historical) + * - 5 = BT.470 System B, G (historical) + * - 6 = BT.601 + * - 7 = SMPTE 240 M + * - 8 = Linear + * - 9 = Logarithmic (100 : 1 range) + * - 10 = Logarithmic (100 * Sqrt(10) : 1 range) + * - 11 = IEC 61966-2-4 + * - 12 = BT.1361 + * - 13 = sRGB or sYCC + * - 14 = BT.2020 10-bit systems + * - 15 = BT.2020 12-bit systems + * - 16 = SMPTE ST 2084, ITU BT.2100 PQ + * - 17 = SMPTE ST 428 + * - 18 = BT.2100 HLG, ARIB STD-B67 + * - 19 = For future use + */ + AV1E_SET_TRANSFER_CHARACTERISTICS = 46, + + /*!\brief Codec control function to set transfer function info, int parameter + * + * - 0 = Identity matrix + * - 1 = BT.709 + * - 2 = Unspecified (default) + * - 3 = For future use + * - 4 = US FCC 73.628 + * - 5 = BT.470 System B, G (historical) + * - 6 = BT.601 + * - 7 = SMPTE 240 M + * - 8 = YCgCo + * - 9 = BT.2020 non-constant luminance, BT.2100 YCbCr + * - 10 = BT.2020 constant luminance + * - 11 = SMPTE ST 2085 YDzDx + * - 12 = Chromaticity-derived non-constant luminance + * - 13 = Chromaticity-derived constant luminance + * - 14 = BT.2100 ICtCp + * - 15 = For future use + */ + AV1E_SET_MATRIX_COEFFICIENTS = 47, + + /*!\brief Codec control function to set chroma 4:2:0 sample position info, + * aom_chroma_sample_position_t parameter + * + * AOM_CSP_UNKNOWN is default + */ + AV1E_SET_CHROMA_SAMPLE_POSITION = 48, + + /*!\brief Codec control function to set minimum interval between GF/ARF + * frames, unsigned int parameter + * + * By default the value is set as 4. + */ + AV1E_SET_MIN_GF_INTERVAL = 49, + + /*!\brief Codec control function to set minimum interval between GF/ARF + * frames, unsigned int parameter + * + * By default the value is set as 16. + */ + AV1E_SET_MAX_GF_INTERVAL = 50, + + /*!\brief Codec control function to get an active map back from the encoder, + aom_active_map_t* parameter + */ + AV1E_GET_ACTIVEMAP = 51, + + /*!\brief Codec control function to set color range bit, int parameter + * + * - 0 = Limited range, 16..235 or HBD equivalent (default) + * - 1 = Full range, 0..255 or HBD equivalent + */ + AV1E_SET_COLOR_RANGE = 52, + + /*!\brief Codec control function to set intended rendering image size, + * int32_t[2] parameter + * + * By default, this is identical to the image size in pixels. + */ + AV1E_SET_RENDER_SIZE = 53, + + /*!\brief Control to set target sequence level index for a certain operating + * point (OP), int parameter + * Possible values are in the form of "ABxy". + * - AB: OP index. + * - xy: Target level index for the OP. Can be values 0~23 (corresponding to + * level 2.0 ~ 7.3, note levels 2.2, 2.3, 3.2, 3.3, 4.2, 4.3, 7.0, 7.1, 7.2 + * & 7.3 are undefined) or 24 (keep level stats only for level monitoring) + * or 31 (maximum level parameter, no level-based constraints). + * + * E.g.: + * - "0" means target level index 0 (2.0) for the 0th OP; + * - "109" means target level index 9 (4.1) for the 1st OP; + * - "1019" means target level index 19 (6.3) for the 10th OP. + * + * If the target level is not specified for an OP, the maximum level parameter + * of 31 is used as default. + */ + AV1E_SET_TARGET_SEQ_LEVEL_IDX = 54, + + /*!\brief Codec control function to get sequence level index for each + * operating point. int* parameter. There can be at most 32 operating points. + * The results will be written into a provided integer array of sufficient + * size. + */ + AV1E_GET_SEQ_LEVEL_IDX = 55, + + /*!\brief Codec control function to set intended superblock size, unsigned int + * parameter + * + * By default, the superblock size is determined separately for each + * frame by the encoder. + */ + AV1E_SET_SUPERBLOCK_SIZE = 56, + + /*!\brief Codec control function to enable automatic set and use of + * bwd-pred frames, unsigned int parameter + * + * - 0 = disable (default) + * - 1 = enable + */ + AOME_SET_ENABLEAUTOBWDREF = 57, + + /*!\brief Codec control function to encode with CDEF, unsigned int parameter + * + * CDEF is the constrained directional enhancement filter which is an + * in-loop filter aiming to remove coding artifacts + * + * - 0 = disable + * - 1 = enable for all frames (default) + * - 2 = disable for non-reference frames + */ + AV1E_SET_ENABLE_CDEF = 58, + + /*!\brief Codec control function to encode with Loop Restoration Filter, + * unsigned int parameter + * + * - 0 = disable + * - 1 = enable (default) + * + * \note Excluded from CONFIG_REALTIME_ONLY build. + */ + AV1E_SET_ENABLE_RESTORATION = 59, + + /*!\brief Codec control function to force video mode, unsigned int parameter + * + * - 0 = do not force video mode (default) + * - 1 = force video mode even for a single frame + */ + AV1E_SET_FORCE_VIDEO_MODE = 60, + + /*!\brief Codec control function to predict with OBMC mode, unsigned int + * parameter + * + * - 0 = disable + * - 1 = enable (default) + * + * \note Excluded from CONFIG_REALTIME_ONLY build. + */ + AV1E_SET_ENABLE_OBMC = 61, + + /*!\brief Codec control function to encode without trellis quantization, + * unsigned int parameter + * + * - 0 = apply trellis quantization (default) + * - 1 = do not apply trellis quantization + * - 2 = disable trellis quantization in rd search + * - 3 = disable trellis quantization in estimate yrd + */ + AV1E_SET_DISABLE_TRELLIS_QUANT = 62, + + /*!\brief Codec control function to encode with quantisation matrices, + * unsigned int parameter + * + * AOM can operate with default quantisation matrices dependent on + * quantisation level and block type. + * + * - 0 = disable (default) + * - 1 = enable + */ + AV1E_SET_ENABLE_QM = 63, + + /*!\brief Codec control function to set the min quant matrix flatness, + * unsigned int parameter + * + * AOM can operate with different ranges of quantisation matrices. + * As quantisation levels increase, the matrices get flatter. This + * control sets the minimum level of flatness from which the matrices + * are determined. + * + * By default, the encoder sets this minimum at half the available + * range. + */ + AV1E_SET_QM_MIN = 64, + + /*!\brief Codec control function to set the max quant matrix flatness, + * unsigned int parameter + * + * AOM can operate with different ranges of quantisation matrices. + * As quantisation levels increase, the matrices get flatter. This + * control sets the maximum level of flatness possible. + * + * By default, the encoder sets this maximum at the top of the + * available range. + */ + AV1E_SET_QM_MAX = 65, + + /*!\brief Codec control function to set the min quant matrix flatness, + * unsigned int parameter + * + * AOM can operate with different ranges of quantisation matrices. + * As quantisation levels increase, the matrices get flatter. This + * control sets the flatness for luma (Y). + * + * By default, the encoder sets this minimum at half the available + * range. + */ + AV1E_SET_QM_Y = 66, + + /*!\brief Codec control function to set the min quant matrix flatness, + * unsigned int parameter + * + * AOM can operate with different ranges of quantisation matrices. + * As quantisation levels increase, the matrices get flatter. This + * control sets the flatness for chroma (U). + * + * By default, the encoder sets this minimum at half the available + * range. + */ + AV1E_SET_QM_U = 67, + + /*!\brief Codec control function to set the min quant matrix flatness, + * unsigned int parameter + * + * AOM can operate with different ranges of quantisation matrices. + * As quantisation levels increase, the matrices get flatter. This + * control sets the flatness for chrome (V). + * + * By default, the encoder sets this minimum at half the available + * range. + */ + AV1E_SET_QM_V = 68, + + /* NOTE: enum 69 unused */ + + /*!\brief Codec control function to set a maximum number of tile groups, + * unsigned int parameter + * + * This will set the maximum number of tile groups. This will be + * overridden if an MTU size is set. The default value is 1. + */ + AV1E_SET_NUM_TG = 70, + + /*!\brief Codec control function to set an MTU size for a tile group, unsigned + * int parameter + * + * This will set the maximum number of bytes in a tile group. This can be + * exceeded only if a single tile is larger than this amount. + * + * By default, the value is 0, in which case a fixed number of tile groups + * is used. + */ + AV1E_SET_MTU = 71, + + /* NOTE: enum 72 unused */ + + /*!\brief Codec control function to enable/disable rectangular partitions, int + * parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_RECT_PARTITIONS = 73, + + /*!\brief Codec control function to enable/disable AB partitions, int + * parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_AB_PARTITIONS = 74, + + /*!\brief Codec control function to enable/disable 1:4 and 4:1 partitions, int + * parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_1TO4_PARTITIONS = 75, + + /*!\brief Codec control function to set min partition size, int parameter + * + * min_partition_size is applied to both width and height of the partition. + * i.e, both width and height of a partition can not be smaller than + * the min_partition_size, except the partition at the picture boundary. + * + * Valid values: [4, 8, 16, 32, 64, 128]. The default value is 4 for + * 4x4. + */ + AV1E_SET_MIN_PARTITION_SIZE = 76, + + /*!\brief Codec control function to set max partition size, int parameter + * + * max_partition_size is applied to both width and height of the partition. + * i.e, both width and height of a partition can not be larger than + * the max_partition_size. + * + * Valid values:[4, 8, 16, 32, 64, 128] The default value is 128 for + * 128x128. + */ + AV1E_SET_MAX_PARTITION_SIZE = 77, + + /*!\brief Codec control function to turn on / off intra edge filter + * at sequence level, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_INTRA_EDGE_FILTER = 78, + + /*!\brief Codec control function to turn on / off frame order hint (int + * parameter). Affects: joint compound mode, motion field motion vector, + * ref frame sign bias + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_ORDER_HINT = 79, + + /*!\brief Codec control function to turn on / off 64-length transforms, int + * parameter + * + * This will enable or disable usage of length 64 transforms in any + * direction. + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_TX64 = 80, + + /*!\brief Codec control function to turn on / off flip and identity + * transforms, int parameter + * + * This will enable or disable usage of flip and identity transform + * types in any direction. If enabled, this includes: + * - FLIPADST_DCT + * - DCT_FLIPADST + * - FLIPADST_FLIPADST + * - ADST_FLIPADST + * - FLIPADST_ADST + * - IDTX + * - V_DCT + * - H_DCT + * - V_ADST + * - H_ADST + * - V_FLIPADST + * - H_FLIPADST + * + * Valid values: + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_FLIP_IDTX = 81, + + /*!\brief Codec control function to turn on / off rectangular transforms, int + * parameter + * + * This will enable or disable usage of rectangular transforms. NOTE: + * Rectangular transforms only enabled when corresponding rectangular + * partitions are. + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_RECT_TX = 82, + + /*!\brief Codec control function to turn on / off dist-wtd compound mode + * at sequence level, int parameter + * + * This will enable or disable distance-weighted compound mode. + * \attention If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced + * to 0. + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_DIST_WTD_COMP = 83, + + /*!\brief Codec control function to turn on / off ref frame mvs (mfmv) usage + * at sequence level, int parameter + * + * \attention If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced + * to 0. + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_REF_FRAME_MVS = 84, + + /*!\brief Codec control function to set temporal mv prediction + * enabling/disabling at frame level, int parameter + * + * \attention If AV1E_SET_ENABLE_REF_FRAME_MVS is 0, then this flag is + * forced to 0. + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ALLOW_REF_FRAME_MVS = 85, + + /*!\brief Codec control function to turn on / off dual interpolation filter + * for a sequence, int parameter + * + * - 0 = disable + * - 1 = enable + */ + AV1E_SET_ENABLE_DUAL_FILTER = 86, + + /*!\brief Codec control function to turn on / off delta quantization in chroma + * planes for a sequence, int parameter + * + * - 0 = disable (default) + * - 1 = enable + */ + AV1E_SET_ENABLE_CHROMA_DELTAQ = 87, + + /*!\brief Codec control function to turn on / off masked compound usage + * (wedge and diff-wtd compound modes) for a sequence, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_MASKED_COMP = 88, + + /*!\brief Codec control function to turn on / off one sided compound usage + * for a sequence, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_ONESIDED_COMP = 89, + + /*!\brief Codec control function to turn on / off interintra compound + * for a sequence, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_INTERINTRA_COMP = 90, + + /*!\brief Codec control function to turn on / off smooth inter-intra + * mode for a sequence, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_SMOOTH_INTERINTRA = 91, + + /*!\brief Codec control function to turn on / off difference weighted + * compound, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_DIFF_WTD_COMP = 92, + + /*!\brief Codec control function to turn on / off interinter wedge + * compound, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_INTERINTER_WEDGE = 93, + + /*!\brief Codec control function to turn on / off interintra wedge + * compound, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_INTERINTRA_WEDGE = 94, + + /*!\brief Codec control function to turn on / off global motion usage + * for a sequence, int parameter + * + * - 0 = disable + * - 1 = enable (default) + * + * \note Excluded from CONFIG_REALTIME_ONLY build. + */ + AV1E_SET_ENABLE_GLOBAL_MOTION = 95, + + /*!\brief Codec control function to turn on / off warped motion usage + * at sequence level, int parameter + * + * - 0 = disable + * - 1 = enable (default) + * + * \note Excluded from CONFIG_REALTIME_ONLY build. + */ + AV1E_SET_ENABLE_WARPED_MOTION = 96, + + /*!\brief Codec control function to turn on / off warped motion usage + * at frame level, int parameter + * + * \attention If AV1E_SET_ENABLE_WARPED_MOTION is 0, then this flag is + * forced to 0. + * + * - 0 = disable + * - 1 = enable (default) + * + * \note Excluded from CONFIG_REALTIME_ONLY build. + */ + AV1E_SET_ALLOW_WARPED_MOTION = 97, + + /*!\brief Codec control function to turn on / off filter intra usage at + * sequence level, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_FILTER_INTRA = 98, + + /*!\brief Codec control function to turn on / off smooth intra modes usage, + * int parameter + * + * This will enable or disable usage of smooth, smooth_h and smooth_v intra + * modes. + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_SMOOTH_INTRA = 99, + + /*!\brief Codec control function to turn on / off Paeth intra mode usage, int + * parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_PAETH_INTRA = 100, + + /*!\brief Codec control function to turn on / off CFL uv intra mode usage, int + * parameter + * + * This will enable or disable usage of chroma-from-luma intra mode. + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_CFL_INTRA = 101, + + /*!\brief Codec control function to turn on / off frame superresolution, int + * parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_SUPERRES = 102, + + /*!\brief Codec control function to turn on / off overlay frames for + * filtered ALTREF frames, int parameter + * + * This will enable or disable coding of overlay frames for filtered ALTREF + * frames. When set to 0, overlay frames are not used but show existing frame + * is used to display the filtered ALTREF frame as is. As a result the decoded + * frame rate remains the same as the display frame rate. The default is 1. + */ + AV1E_SET_ENABLE_OVERLAY = 103, + + /*!\brief Codec control function to turn on/off palette mode, int parameter */ + AV1E_SET_ENABLE_PALETTE = 104, + + /*!\brief Codec control function to turn on/off intra block copy mode, int + parameter */ + AV1E_SET_ENABLE_INTRABC = 105, + + /*!\brief Codec control function to turn on/off intra angle delta, int + parameter */ + AV1E_SET_ENABLE_ANGLE_DELTA = 106, + + /*!\brief Codec control function to set the delta q mode, unsigned int + * parameter + * + * AV1 supports a delta q mode feature, that allows modulating q per + * superblock. + * + * - 0 = deltaq signaling off + * - 1 = use modulation to maximize objective quality (default) + * - 2 = use modulation for local test + * - 3 = use modulation for key frame perceptual quality optimization + * - 4 = use modulation for user rating based perceptual quality optimization + */ + AV1E_SET_DELTAQ_MODE = 107, + + /*!\brief Codec control function to turn on/off loopfilter modulation + * when delta q modulation is enabled, unsigned int parameter. + * + * \attention AV1 only supports loopfilter modulation when delta q + * modulation is enabled as well. + */ + AV1E_SET_DELTALF_MODE = 108, + + /*!\brief Codec control function to set the single tile decoding mode, + * unsigned int parameter + * + * \attention Only applicable if large scale tiling is on. + * + * - 0 = single tile decoding is off + * - 1 = single tile decoding is on (default) + */ + AV1E_SET_SINGLE_TILE_DECODING = 109, + + /*!\brief Codec control function to enable the extreme motion vector unit + * test, unsigned int parameter + * + * - 0 = off + * - 1 = MAX_EXTREME_MV + * - 2 = MIN_EXTREME_MV + * + * \note This is only used in motion vector unit test. + */ + AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST = 110, + + /*!\brief Codec control function to signal picture timing info in the + * bitstream, aom_timing_info_type_t parameter. Default is + * AOM_TIMING_UNSPECIFIED. + */ + AV1E_SET_TIMING_INFO_TYPE = 111, + + /*!\brief Codec control function to add film grain parameters (one of several + * preset types) info in the bitstream, int parameter + * + Valid range: 0..16, 0 is unknown, 1..16 are test vectors + */ + AV1E_SET_FILM_GRAIN_TEST_VECTOR = 112, + + /*!\brief Codec control function to set the path to the film grain parameters, + * const char* parameter + */ + AV1E_SET_FILM_GRAIN_TABLE = 113, + + /*!\brief Sets the noise level, int parameter */ + AV1E_SET_DENOISE_NOISE_LEVEL = 114, + + /*!\brief Sets the denoisers block size, unsigned int parameter */ + AV1E_SET_DENOISE_BLOCK_SIZE = 115, + + /*!\brief Sets the chroma subsampling x value, unsigned int parameter */ + AV1E_SET_CHROMA_SUBSAMPLING_X = 116, + + /*!\brief Sets the chroma subsampling y value, unsigned int parameter */ + AV1E_SET_CHROMA_SUBSAMPLING_Y = 117, + + /*!\brief Control to use a reduced tx type set, int parameter */ + AV1E_SET_REDUCED_TX_TYPE_SET = 118, + + /*!\brief Control to use dct only for intra modes, int parameter */ + AV1E_SET_INTRA_DCT_ONLY = 119, + + /*!\brief Control to use dct only for inter modes, int parameter */ + AV1E_SET_INTER_DCT_ONLY = 120, + + /*!\brief Control to use default tx type only for intra modes, int parameter + */ + AV1E_SET_INTRA_DEFAULT_TX_ONLY = 121, + + /*!\brief Control to use adaptive quantize_b, int parameter */ + AV1E_SET_QUANT_B_ADAPT = 122, + + /*!\brief Control to select maximum height for the GF group pyramid structure, + * unsigned int parameter + * + * Valid range: 0..5 + */ + AV1E_SET_GF_MAX_PYRAMID_HEIGHT = 123, + + /*!\brief Control to select maximum reference frames allowed per frame, int + * parameter + * + * Valid range: 3..7 + */ + AV1E_SET_MAX_REFERENCE_FRAMES = 124, + + /*!\brief Control to use reduced set of single and compound references, int + parameter */ + AV1E_SET_REDUCED_REFERENCE_SET = 125, + + /*!\brief Control to set frequency of the cost updates for coefficients, + * unsigned int parameter + * + * - 0 = update at SB level (default) + * - 1 = update at SB row level in tile + * - 2 = update at tile level + * - 3 = turn off + */ + AV1E_SET_COEFF_COST_UPD_FREQ = 126, + + /*!\brief Control to set frequency of the cost updates for mode, unsigned int + * parameter + * + * - 0 = update at SB level (default) + * - 1 = update at SB row level in tile + * - 2 = update at tile level + * - 3 = turn off + */ + AV1E_SET_MODE_COST_UPD_FREQ = 127, + + /*!\brief Control to set frequency of the cost updates for motion vectors, + * unsigned int parameter + * + * - 0 = update at SB level (default) + * - 1 = update at SB row level in tile + * - 2 = update at tile level + * - 3 = turn off + */ + AV1E_SET_MV_COST_UPD_FREQ = 128, + + /*!\brief Control to set bit mask that specifies which tier each of the 32 + * possible operating points conforms to, unsigned int parameter + * + * - 0 = main tier (default) + * - 1 = high tier + */ + AV1E_SET_TIER_MASK = 129, + + /*!\brief Control to set minimum compression ratio, unsigned int parameter + * Take integer values. If non-zero, encoder will try to keep the compression + * ratio of each frame to be higher than the given value divided by 100. + * E.g. 850 means minimum compression ratio of 8.5. + */ + AV1E_SET_MIN_CR = 130, + + /* NOTE: enums 145-149 unused */ + + /*!\brief Codec control function to set the layer id, aom_svc_layer_id_t* + * parameter + */ + AV1E_SET_SVC_LAYER_ID = 131, + + /*!\brief Codec control function to set SVC paramaeters, aom_svc_params_t* + * parameter + */ + AV1E_SET_SVC_PARAMS = 132, + + /*!\brief Codec control function to set reference frame config: + * the ref_idx and the refresh flags for each buffer slot. + * aom_svc_ref_frame_config_t* parameter + */ + AV1E_SET_SVC_REF_FRAME_CONFIG = 133, + + /*!\brief Codec control function to set the path to the VMAF model used when + * tuning the encoder for VMAF, const char* parameter + */ + AV1E_SET_VMAF_MODEL_PATH = 134, + + /*!\brief Codec control function to enable EXT_TILE_DEBUG in AV1 encoder, + * unsigned int parameter + * + * - 0 = disable (default) + * - 1 = enable + * + * \note This is only used in lightfield example test. + */ + AV1E_ENABLE_EXT_TILE_DEBUG = 135, + + /*!\brief Codec control function to enable the superblock multipass unit test + * in AV1 to ensure that the encoder does not leak state between different + * passes. unsigned int parameter. + * + * - 0 = disable (default) + * - 1 = enable + * + * \note This is only used in sb_multipass unit test. + */ + AV1E_ENABLE_SB_MULTIPASS_UNIT_TEST = 136, + + /*!\brief Control to select minimum height for the GF group pyramid structure, + * unsigned int parameter + * + * Valid values: 0..5 + */ + AV1E_SET_GF_MIN_PYRAMID_HEIGHT = 137, + + /*!\brief Control to set average complexity of the corpus in the case of + * single pass vbr based on LAP, unsigned int parameter + */ + AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP = 138, + + /*!\brief Control to get baseline gf interval + */ + AV1E_GET_BASELINE_GF_INTERVAL = 139, + + /*\brief Control to set encoding the denoised frame from denoise-noise-level + * + * - 0 = disabled/encode the original frame + * - 1 = enabled/encode the denoised frame (default) + */ + AV1E_SET_ENABLE_DNL_DENOISING = 140, + + /*!\brief Codec control function to turn on / off D45 to D203 intra mode + * usage, int parameter + * + * This will enable or disable usage of D45 to D203 intra modes, which are a + * subset of directional modes. This control has no effect if directional + * modes are disabled (AV1E_SET_ENABLE_DIRECTIONAL_INTRA set to 0). + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_DIAGONAL_INTRA = 141, + + /*!\brief Control to set frequency of the cost updates for intrabc motion + * vectors, unsigned int parameter + * + * - 0 = update at SB level (default) + * - 1 = update at SB row level in tile + * - 2 = update at tile level + * - 3 = turn off + */ + AV1E_SET_DV_COST_UPD_FREQ = 142, + + /*!\brief Codec control to set the path for partition stats read and write. + * const char * parameter. + */ + AV1E_SET_PARTITION_INFO_PATH = 143, + + /*!\brief Codec control to use an external partition model + * A set of callback functions is passed through this control + * to let the encoder encode with given partitions. + */ + AV1E_SET_EXTERNAL_PARTITION = 144, + + /*!\brief Codec control function to turn on / off directional intra mode + * usage, int parameter + * + * - 0 = disable + * - 1 = enable (default) + */ + AV1E_SET_ENABLE_DIRECTIONAL_INTRA = 145, + + /*!\brief Control to turn on / off transform size search. + * Note: it can not work with non RD pick mode in real-time encoding, + * where the max transform size is only 16x16. + * It will be ignored if non RD pick mode is set. + * + * - 0 = disable, transforms always have the largest possible size + * - 1 = enable, search for the best transform size for each block (default) + */ + AV1E_SET_ENABLE_TX_SIZE_SEARCH = 146, + + /*!\brief Codec control function to set reference frame compound prediction. + * aom_svc_ref_frame_comp_pred_t* parameter + */ + AV1E_SET_SVC_REF_FRAME_COMP_PRED = 147, + + /*!\brief Set --deltaq-mode strength. + * + * Valid range: [0, 1000] + */ + AV1E_SET_DELTAQ_STRENGTH = 148, + + /*!\brief Codec control to control loop filter + * + * - 0 = Loop filter is disabled for all frames + * - 1 = Loop filter is enabled for all frames + * - 2 = Loop filter is disabled for non-reference frames + * - 3 = Loop filter is disabled for the frames with low motion + */ + AV1E_SET_LOOPFILTER_CONTROL = 149, + + /*!\brief Codec control function to get the loopfilter chosen by the encoder, + * int* parameter + */ + AOME_GET_LOOPFILTER_LEVEL = 150, + + /*!\brief Codec control to automatically turn off several intra coding tools, + * unsigned int parameter + * - 0 = do not use the feature + * - 1 = enable the automatic decision to turn off several intra tools + */ + AV1E_SET_AUTO_INTRA_TOOLS_OFF = 151, + + /*!\brief Codec control function to set flag for rate control used by external + * encoders. + * - 1 = Enable rate control for external encoders. This will disable content + * dependency in rate control and cyclic refresh. + * - 0 = Default. Disable rate control for external encoders. + */ + AV1E_SET_RTC_EXTERNAL_RC = 152, + + /*!\brief Codec control function to enable frame parallel multi-threading + * of the encoder, unsigned int parameter + * + * - 0 = disable (default) + * - 1 = enable + */ + AV1E_SET_FP_MT = 153, + + /*!\brief Codec control to enable actual frame parallel encode or + * simulation of frame parallel encode in FPMT unit test, unsigned int + * parameter + * + * - 0 = simulate frame parallel encode + * - 1 = actual frame parallel encode (default) + * + * \note This is only used in FPMT unit test. + */ + AV1E_SET_FP_MT_UNIT_TEST = 154, + + /*!\brief Codec control function to get the target sequence level index for + * each operating point. int* parameter. There can be at most 32 operating + * points. The results will be written into a provided integer array of + * sufficient size. If a target level is not set, the result will be 31. + * Please refer to https://aomediacodec.github.io/av1-spec/#levels for more + * details on level definitions and indices. + */ + AV1E_GET_TARGET_SEQ_LEVEL_IDX = 155, + + /*!\brief Codec control function to get the number of operating points. int* + * parameter. + */ + AV1E_GET_NUM_OPERATING_POINTS = 156, + + // Any new encoder control IDs should be added above. + // Maximum allowed encoder control ID is 229. + // No encoder control ID should be added below. +}; + +/*!\brief aom 1-D scaling mode + * + * This set of constants define 1-D aom scaling modes + */ +typedef enum aom_scaling_mode_1d { + AOME_NORMAL = 0, + AOME_FOURFIVE = 1, + AOME_THREEFIVE = 2, + AOME_THREEFOUR = 3, + AOME_ONEFOUR = 4, + AOME_ONEEIGHT = 5, + AOME_ONETWO = 6 +} AOM_SCALING_MODE; + +/*!\brief Max number of segments + * + * This is the limit of number of segments allowed within a frame. + * + * Currently same as "MAX_SEGMENTS" in AV1, the maximum that AV1 supports. + * + */ +#define AOM_MAX_SEGMENTS 8 + +/*!\brief aom region of interest map + * + * These defines the data structures for the region of interest map + * + * TODO(yaowu): create a unit test for ROI map related APIs + * + */ +typedef struct aom_roi_map { + /*! An id between 0 and 7 for each 8x8 region within a frame. */ + unsigned char *roi_map; + unsigned int rows; /**< Number of rows. */ + unsigned int cols; /**< Number of columns. */ + int delta_q[AOM_MAX_SEGMENTS]; /**< Quantizer deltas. */ + int delta_lf[AOM_MAX_SEGMENTS]; /**< Loop filter deltas. */ + /*! Static breakout threshold for each segment. */ + unsigned int static_threshold[AOM_MAX_SEGMENTS]; +} aom_roi_map_t; + +/*!\brief aom active region map + * + * These defines the data structures for active region map + * + */ + +typedef struct aom_active_map { + /*!\brief specify an on (1) or off (0) each 16x16 region within a frame */ + unsigned char *active_map; + unsigned int rows; /**< number of rows */ + unsigned int cols; /**< number of cols */ +} aom_active_map_t; + +/*!\brief aom image scaling mode + * + * This defines the data structure for image scaling mode + * + */ +typedef struct aom_scaling_mode { + AOM_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */ + AOM_SCALING_MODE v_scaling_mode; /**< vertical scaling mode */ +} aom_scaling_mode_t; + +/*!brief AV1 encoder content type */ +typedef enum { + AOM_CONTENT_DEFAULT, + AOM_CONTENT_SCREEN, + AOM_CONTENT_FILM, + AOM_CONTENT_INVALID +} aom_tune_content; + +/*!brief AV1 encoder timing info type signaling */ +typedef enum { + AOM_TIMING_UNSPECIFIED, + AOM_TIMING_EQUAL, + AOM_TIMING_DEC_MODEL +} aom_timing_info_type_t; + +/*!\brief Model tuning parameters + * + * Changes the encoder to tune for certain types of input material. + * + */ +typedef enum { + AOM_TUNE_PSNR = 0, + AOM_TUNE_SSIM = 1, + /* NOTE: enums 2 and 3 unused */ + AOM_TUNE_VMAF_WITH_PREPROCESSING = 4, + AOM_TUNE_VMAF_WITHOUT_PREPROCESSING = 5, + AOM_TUNE_VMAF_MAX_GAIN = 6, + AOM_TUNE_VMAF_NEG_MAX_GAIN = 7, + AOM_TUNE_BUTTERAUGLI = 8, +} aom_tune_metric; + +/*!\brief Distortion metric to use for RD optimization. + * + * Changes the encoder to use a different distortion metric for RD search. Note + * that this value operates on a "lower level" compared to aom_tune_metric - it + * affects the distortion metric inside a block, while aom_tune_metric only + * affects RD across blocks. + * + */ +typedef enum { + // Use PSNR for in-block rate-distortion optimization. + AOM_DIST_METRIC_PSNR, + // Use quantization matrix-weighted PSNR for in-block rate-distortion + // optimization. If --enable-qm=1 is not specified, this falls back to + // behaving in the same way as AOM_DIST_METRIC_PSNR. + AOM_DIST_METRIC_QM_PSNR, +} aom_dist_metric; + +#define AOM_MAX_LAYERS 32 /**< Max number of layers */ +#define AOM_MAX_SS_LAYERS 4 /**< Max number of spatial layers */ +#define AOM_MAX_TS_LAYERS 8 /**< Max number of temporal layers */ + +/*!brief Struct for spatial and temporal layer ID */ +typedef struct aom_svc_layer_id { + int spatial_layer_id; /**< Spatial layer ID */ + int temporal_layer_id; /**< Temporal layer ID */ +} aom_svc_layer_id_t; + +/*!brief Parameter type for SVC */ +typedef struct aom_svc_params { + int number_spatial_layers; /**< Number of spatial layers */ + int number_temporal_layers; /**< Number of temporal layers */ + int max_quantizers[AOM_MAX_LAYERS]; /**< Max Q for each layer */ + int min_quantizers[AOM_MAX_LAYERS]; /**< Min Q for each layer */ + int scaling_factor_num[AOM_MAX_SS_LAYERS]; /**< Scaling factor-numerator */ + int scaling_factor_den[AOM_MAX_SS_LAYERS]; /**< Scaling factor-denominator */ + /*! Target bitrate for each layer */ + int layer_target_bitrate[AOM_MAX_LAYERS]; + /*! Frame rate factor for each temporal layer */ + int framerate_factor[AOM_MAX_TS_LAYERS]; +} aom_svc_params_t; + +/*!brief Parameters for setting ref frame config */ +typedef struct aom_svc_ref_frame_config { + // 7 references: LAST_FRAME (0), LAST2_FRAME(1), LAST3_FRAME(2), + // GOLDEN_FRAME(3), BWDREF_FRAME(4), ALTREF2_FRAME(5), ALTREF_FRAME(6). + int reference[7]; /**< Reference flag for each of the 7 references. */ + /*! Buffer slot index for each of 7 references. */ + int ref_idx[7]; + int refresh[8]; /**< Refresh flag for each of the 8 slots. */ +} aom_svc_ref_frame_config_t; + +/*!brief Parameters for setting ref frame compound prediction */ +typedef struct aom_svc_ref_frame_comp_pred { + // Use compound prediction for the ref_frame pairs GOLDEN_LAST (0), + // LAST2_LAST (1), and ALTREF_LAST (2). + int use_comp_pred[3]; /**= 256. + * + * \sa #aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...) + */ +enum aom_dec_control_id { + /*!\brief Codec control function to get info on which reference frames were + * updated by the last decode, int* parameter + */ + AOMD_GET_LAST_REF_UPDATES = AOM_DECODER_CTRL_ID_START, + + /*!\brief Codec control function to check if the indicated frame is + corrupted, int* parameter + */ + AOMD_GET_FRAME_CORRUPTED, + + /*!\brief Codec control function to get info on which reference frames were + * used by the last decode, int* parameter + */ + AOMD_GET_LAST_REF_USED, + + /*!\brief Codec control function to get the dimensions that the current + * frame is decoded at, int* parameter + * + * This may be different to the intended display size for the frame as + * specified in the wrapper or frame header (see AV1D_GET_DISPLAY_SIZE). + */ + AV1D_GET_FRAME_SIZE, + + /*!\brief Codec control function to get the current frame's intended display + * dimensions (as specified in the wrapper or frame header), int* parameter + * + * This may be different to the decoded dimensions of this frame (see + * AV1D_GET_FRAME_SIZE). + */ + AV1D_GET_DISPLAY_SIZE, + + /*!\brief Codec control function to get the bit depth of the stream, + * unsigned int* parameter + */ + AV1D_GET_BIT_DEPTH, + + /*!\brief Codec control function to get the image format of the stream, + * aom_img_fmt_t* parameter + */ + AV1D_GET_IMG_FORMAT, + + /*!\brief Codec control function to get the size of the tile, unsigned int* + * parameter + */ + AV1D_GET_TILE_SIZE, + + /*!\brief Codec control function to get the tile count in a tile list, + * unsigned int* parameter + */ + AV1D_GET_TILE_COUNT, + + /*!\brief Codec control function to set the byte alignment of the planes in + * the reference buffers, int parameter + * + * Valid values are power of 2, from 32 to 1024. A value of 0 sets + * legacy alignment. I.e. Y plane is aligned to 32 bytes, U plane directly + * follows Y plane, and V plane directly follows U plane. Default value is 0. + */ + AV1_SET_BYTE_ALIGNMENT, + + /*!\brief Codec control function to invert the decoding order to from right to + * left, int parameter + * + * The function is used in a test to confirm the decoding independence of tile + * columns. The function may be used in application where this order + * of decoding is desired. int parameter + * + * TODO(yaowu): Rework the unit test that uses this control, and in a future + * release, this test-only control shall be removed. + */ + AV1_INVERT_TILE_DECODE_ORDER, + + /*!\brief Codec control function to set the skip loop filter flag, int + * parameter + * + * Valid values are integers. The decoder will skip the loop filter + * when its value is set to nonzero. If the loop filter is skipped the + * decoder may accumulate decode artifacts. The default value is 0. + */ + AV1_SET_SKIP_LOOP_FILTER, + + /*!\brief Codec control function to retrieve a pointer to the Accounting + * struct, takes Accounting** as parameter + * + * If called before a frame has been decoded, this returns AOM_CODEC_ERROR. + * The caller should ensure that AOM_CODEC_OK is returned before attempting + * to dereference the Accounting pointer. + * + * \attention When configured with -DCONFIG_ACCOUNTING=0, the default, this + * returns AOM_CODEC_INCAPABLE. + */ + AV1_GET_ACCOUNTING, + + /*!\brief Codec control function to get last decoded frame quantizer, + * int* parameter + * + * Returned value uses internal quantizer scale defined by the codec. + */ + AOMD_GET_LAST_QUANTIZER, + + /*!\brief Codec control function to set the range of tile decoding, int + * parameter + * + * A value that is greater and equal to zero indicates only the specific + * row/column is decoded. A value that is -1 indicates the whole row/column + * is decoded. A special case is both values are -1 that means the whole + * frame is decoded. + */ + AV1_SET_DECODE_TILE_ROW, + AV1_SET_DECODE_TILE_COL, + + /*!\brief Codec control function to set the tile coding mode, unsigned int + * parameter + * + * - 0 = tiles are coded in normal tile mode + * - 1 = tiles are coded in large-scale tile mode + */ + AV1_SET_TILE_MODE, + + /*!\brief Codec control function to get the frame header information of an + * encoded frame, aom_tile_data* parameter + */ + AV1D_GET_FRAME_HEADER_INFO, + + /*!\brief Codec control function to get the start address and size of a + * tile in the coded bitstream, aom_tile_data* parameter. + */ + AV1D_GET_TILE_DATA, + + /*!\brief Codec control function to set the external references' pointers in + * the decoder, av1_ext_ref_frame_t* parameter. + * + * This is used while decoding the tile list OBU in large-scale tile coding + * mode. + */ + AV1D_SET_EXT_REF_PTR, + + /*!\brief Codec control function to enable the ext-tile software debug and + * testing code in the decoder, unsigned int parameter + */ + AV1D_EXT_TILE_DEBUG, + + /*!\brief Codec control function to enable the row based multi-threading of + * decoding, unsigned int parameter + * + * - 0 = disabled + * - 1 = enabled (default) + */ + AV1D_SET_ROW_MT, + + /*!\brief Codec control function to indicate whether bitstream is in + * Annex-B format, unsigned int parameter + */ + AV1D_SET_IS_ANNEXB, + + /*!\brief Codec control function to indicate which operating point to use, + * int parameter + * + * A scalable stream may define multiple operating points, each of which + * defines a set of temporal and spatial layers to be processed. The + * operating point index may take a value between 0 and + * operating_points_cnt_minus_1 (which is at most 31). + */ + AV1D_SET_OPERATING_POINT, + + /*!\brief Codec control function to indicate whether to output one frame per + * temporal unit (the default), or one frame per spatial layer, int parameter + * + * In a scalable stream, each temporal unit corresponds to a single "frame" + * of video, and within a temporal unit there may be multiple spatial layers + * with different versions of that frame. + * For video playback, only the highest-quality version (within the + * selected operating point) is needed, but for some use cases it is useful + * to have access to multiple versions of a frame when they are available. + */ + AV1D_SET_OUTPUT_ALL_LAYERS, + + /*!\brief Codec control function to set an aom_inspect_cb callback that is + * invoked each time a frame is decoded, aom_inspect_init* parameter + * + * \attention When configured with -DCONFIG_INSPECTION=0, the default, this + * returns AOM_CODEC_INCAPABLE. + */ + AV1_SET_INSPECTION_CALLBACK, + + /*!\brief Codec control function to set the skip film grain flag, int + * parameter + * + * Valid values are integers. The decoder will skip the film grain when its + * value is set to nonzero. The default value is 0. + */ + AV1D_SET_SKIP_FILM_GRAIN, + + /*!\brief Codec control function to check the presence of forward key frames, + * int* parameter + */ + AOMD_GET_FWD_KF_PRESENT, + + /*!\brief Codec control function to get the frame flags of the previous frame + * decoded, int* parameter + * + * This will return a flag of type aom_codec_frame_flags_t. + */ + AOMD_GET_FRAME_FLAGS, + + /*!\brief Codec control function to check the presence of altref frames, int* + * parameter + */ + AOMD_GET_ALTREF_PRESENT, + + /*!\brief Codec control function to get tile information of the previous frame + * decoded, aom_tile_info* parameter + * + * This will return a struct of type aom_tile_info. + */ + AOMD_GET_TILE_INFO, + + /*!\brief Codec control function to get screen content tools information, + * aom_screen_content_tools_info* parameter + * + * It returns a struct of type aom_screen_content_tools_info, which contains + * the header flags allow_screen_content_tools, allow_intrabc, and + * force_integer_mv. + */ + AOMD_GET_SCREEN_CONTENT_TOOLS_INFO, + + /*!\brief Codec control function to get the still picture coding information, + * aom_still_picture_info* parameter + */ + AOMD_GET_STILL_PICTURE, + + /*!\brief Codec control function to get superblock size, + * aom_superblock_size_t* parameter + * + * It returns an enum, indicating the superblock size read from the sequence + * header(0 for BLOCK_64X64 and 1 for BLOCK_128X128) + */ + AOMD_GET_SB_SIZE, + + /*!\brief Codec control function to check if the previous frame + * decoded has show existing frame flag set, int* parameter + */ + AOMD_GET_SHOW_EXISTING_FRAME_FLAG, + + /*!\brief Codec control function to get the S_FRAME coding information, + * aom_s_frame_info* parameter + */ + AOMD_GET_S_FRAME_INFO, + + /*!\brief Codec control function to get the show frame flag, int* parameter + */ + AOMD_GET_SHOW_FRAME_FLAG, + + /*!\brief Codec control function to get the base q index of a frame, int* + * parameter + */ + AOMD_GET_BASE_Q_IDX, + + /*!\brief Codec control function to get the order hint of a frame, unsigned + * int* parameter + */ + AOMD_GET_ORDER_HINT, + + /*!\brief Codec control function to get the info of a 4x4 block. + * Parameters: int mi_row, int mi_col, and MB_MODE_INFO*. + * + * \note This only returns a shallow copy, so all pointer members should not + * be used. + */ + AV1D_GET_MI_INFO, +}; + +/*!\cond */ +/*!\brief AOM decoder control function parameter type + * + * Defines the data types that AOMD control functions take. + * + * \note Additional common controls are defined in aom.h. + * + * \note For each control ID "X", a macro-define of + * AOM_CTRL_X is provided. It is used at compile time to determine + * if the control ID is supported by the libaom library available, + * when the libaom version cannot be controlled. + */ +AOM_CTRL_USE_TYPE(AOMD_GET_LAST_REF_UPDATES, int *) +#define AOM_CTRL_AOMD_GET_LAST_REF_UPDATES + +AOM_CTRL_USE_TYPE(AOMD_GET_FRAME_CORRUPTED, int *) +#define AOM_CTRL_AOMD_GET_FRAME_CORRUPTED + +AOM_CTRL_USE_TYPE(AOMD_GET_LAST_REF_USED, int *) +#define AOM_CTRL_AOMD_GET_LAST_REF_USED + +AOM_CTRL_USE_TYPE(AV1D_GET_FRAME_SIZE, int *) +#define AOM_CTRL_AV1D_GET_FRAME_SIZE + +AOM_CTRL_USE_TYPE(AV1D_GET_DISPLAY_SIZE, int *) +#define AOM_CTRL_AV1D_GET_DISPLAY_SIZE + +AOM_CTRL_USE_TYPE(AV1D_GET_BIT_DEPTH, unsigned int *) +#define AOM_CTRL_AV1D_GET_BIT_DEPTH + +AOM_CTRL_USE_TYPE(AV1D_GET_IMG_FORMAT, aom_img_fmt_t *) +#define AOM_CTRL_AV1D_GET_IMG_FORMAT + +AOM_CTRL_USE_TYPE(AV1D_GET_TILE_SIZE, unsigned int *) +#define AOM_CTRL_AV1D_GET_TILE_SIZE + +AOM_CTRL_USE_TYPE(AV1D_GET_TILE_COUNT, unsigned int *) +#define AOM_CTRL_AV1D_GET_TILE_COUNT + +AOM_CTRL_USE_TYPE(AV1_INVERT_TILE_DECODE_ORDER, int) +#define AOM_CTRL_AV1_INVERT_TILE_DECODE_ORDER + +AOM_CTRL_USE_TYPE(AV1_SET_SKIP_LOOP_FILTER, int) +#define AOM_CTRL_AV1_SET_SKIP_LOOP_FILTER + +AOM_CTRL_USE_TYPE(AV1_GET_ACCOUNTING, Accounting **) +#define AOM_CTRL_AV1_GET_ACCOUNTING + +AOM_CTRL_USE_TYPE(AOMD_GET_LAST_QUANTIZER, int *) +#define AOM_CTRL_AOMD_GET_LAST_QUANTIZER + +AOM_CTRL_USE_TYPE(AV1_SET_DECODE_TILE_ROW, int) +#define AOM_CTRL_AV1_SET_DECODE_TILE_ROW + +AOM_CTRL_USE_TYPE(AV1_SET_DECODE_TILE_COL, int) +#define AOM_CTRL_AV1_SET_DECODE_TILE_COL + +AOM_CTRL_USE_TYPE(AV1_SET_TILE_MODE, unsigned int) +#define AOM_CTRL_AV1_SET_TILE_MODE + +AOM_CTRL_USE_TYPE(AV1D_GET_FRAME_HEADER_INFO, aom_tile_data *) +#define AOM_CTRL_AV1D_GET_FRAME_HEADER_INFO + +AOM_CTRL_USE_TYPE(AV1D_GET_TILE_DATA, aom_tile_data *) +#define AOM_CTRL_AV1D_GET_TILE_DATA + +AOM_CTRL_USE_TYPE(AV1D_SET_EXT_REF_PTR, av1_ext_ref_frame_t *) +#define AOM_CTRL_AV1D_SET_EXT_REF_PTR + +AOM_CTRL_USE_TYPE(AV1D_EXT_TILE_DEBUG, unsigned int) +#define AOM_CTRL_AV1D_EXT_TILE_DEBUG + +AOM_CTRL_USE_TYPE(AV1D_SET_ROW_MT, unsigned int) +#define AOM_CTRL_AV1D_SET_ROW_MT + +AOM_CTRL_USE_TYPE(AV1D_SET_IS_ANNEXB, unsigned int) +#define AOM_CTRL_AV1D_SET_IS_ANNEXB + +AOM_CTRL_USE_TYPE(AV1D_SET_OPERATING_POINT, int) +#define AOM_CTRL_AV1D_SET_OPERATING_POINT + +AOM_CTRL_USE_TYPE(AV1D_SET_OUTPUT_ALL_LAYERS, int) +#define AOM_CTRL_AV1D_SET_OUTPUT_ALL_LAYERS + +AOM_CTRL_USE_TYPE(AV1_SET_INSPECTION_CALLBACK, aom_inspect_init *) +#define AOM_CTRL_AV1_SET_INSPECTION_CALLBACK + +AOM_CTRL_USE_TYPE(AV1D_SET_SKIP_FILM_GRAIN, int) +#define AOM_CTRL_AV1D_SET_SKIP_FILM_GRAIN + +AOM_CTRL_USE_TYPE(AOMD_GET_FWD_KF_PRESENT, int *) +#define AOM_CTRL_AOMD_GET_FWD_KF_PRESENT + +AOM_CTRL_USE_TYPE(AOMD_GET_FRAME_FLAGS, int *) +#define AOM_CTRL_AOMD_GET_FRAME_FLAGS + +AOM_CTRL_USE_TYPE(AOMD_GET_ALTREF_PRESENT, int *) +#define AOM_CTRL_AOMD_GET_ALTREF_PRESENT + +AOM_CTRL_USE_TYPE(AOMD_GET_TILE_INFO, aom_tile_info *) +#define AOM_CTRL_AOMD_GET_TILE_INFO + +AOM_CTRL_USE_TYPE(AOMD_GET_SCREEN_CONTENT_TOOLS_INFO, + aom_screen_content_tools_info *) +#define AOM_CTRL_AOMD_GET_SCREEN_CONTENT_TOOLS_INFO + +AOM_CTRL_USE_TYPE(AOMD_GET_STILL_PICTURE, aom_still_picture_info *) +#define AOM_CTRL_AOMD_GET_STILL_PICTURE + +AOM_CTRL_USE_TYPE(AOMD_GET_SB_SIZE, aom_superblock_size_t *) +#define AOMD_CTRL_AOMD_GET_SB_SIZE + +AOM_CTRL_USE_TYPE(AOMD_GET_SHOW_EXISTING_FRAME_FLAG, int *) +#define AOMD_CTRL_AOMD_GET_SHOW_EXISTING_FRAME_FLAG + +AOM_CTRL_USE_TYPE(AOMD_GET_S_FRAME_INFO, aom_s_frame_info *) +#define AOMD_CTRL_AOMD_GET_S_FRAME_INFO + +AOM_CTRL_USE_TYPE(AOMD_GET_SHOW_FRAME_FLAG, int *) +#define AOM_CTRL_AOMD_GET_SHOW_FRAME_FLAG + +AOM_CTRL_USE_TYPE(AOMD_GET_BASE_Q_IDX, int *) +#define AOM_CTRL_AOMD_GET_BASE_Q_IDX + +AOM_CTRL_USE_TYPE(AOMD_GET_ORDER_HINT, unsigned int *) +#define AOM_CTRL_AOMD_GET_ORDER_HINT + +// The AOM_CTRL_USE_TYPE macro can't be used with AV1D_GET_MI_INFO because +// AV1D_GET_MI_INFO takes more than one parameter. +#define AOM_CTRL_AV1D_GET_MI_INFO +/*!\endcond */ +/*! @} - end defgroup aom_decoder */ +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AOM_AOM_AOMDX_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/cgif.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/cgif.h new file mode 100644 index 0000000..4ad4747 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/cgif.h @@ -0,0 +1,80 @@ +#ifndef CGIF_H +#define CGIF_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// flags to set the GIF/frame-attributes +#define CGIF_ATTR_IS_ANIMATED (1uL << 1) // make an animated GIF (default is non-animated GIF) +#define CGIF_ATTR_NO_GLOBAL_TABLE (1uL << 2) // disable global color table (global color table is default) +#define CGIF_ATTR_HAS_TRANSPARENCY (1uL << 3) // first entry in color table contains transparency (alpha channel) +#define CGIF_ATTR_NO_LOOP (1uL << 4) // don't loop a GIF animation: only play it one time. +#define CGIF_FRAME_ATTR_USE_LOCAL_TABLE (1uL << 0) // use a local color table for a frame (local color table is not used by default) +#define CGIF_FRAME_ATTR_HAS_ALPHA (1uL << 1) // alpha channel index provided by user (transIndex field) +#define CGIF_FRAME_ATTR_HAS_SET_TRANS (1uL << 2) // transparency setting provided by user (transIndex field) +#define CGIF_FRAME_ATTR_INTERLACED (1uL << 3) // encode frame interlaced (default is not interlaced) +// flags to decrease GIF-size +#define CGIF_FRAME_GEN_USE_TRANSPARENCY (1uL << 0) // use transparency optimization (setting pixels identical to previous frame transparent) +#define CGIF_FRAME_GEN_USE_DIFF_WINDOW (1uL << 1) // do encoding just for the sub-window that has changed from previous frame + +#define CGIF_INFINITE_LOOP (0x0000uL) // for animated GIF: 0 specifies infinite loop + +typedef enum { + CGIF_ERROR = -1, // something unspecified failed + CGIF_OK = 0, // everything OK + CGIF_EWRITE, // writing GIF data failed + CGIF_EALLOC, // allocating memory failed + CGIF_ECLOSE, // final call to fclose failed + CGIF_EOPEN, // failed to open output file + CGIF_EINDEX, // invalid index in image data provided by user + // internal section (values subject to change) + CGIF_PENDING, +} cgif_result; + +typedef struct st_gif CGIF; // struct for the full GIF +typedef struct st_gifconfig CGIF_Config; // global cofinguration parameters of the GIF +typedef struct st_frameconfig CGIF_FrameConfig; // local configuration parameters for a frame + +typedef int cgif_write_fn(void* pContext, const uint8_t* pData, const size_t numBytes); // callback function for stream-based output + +// prototypes +CGIF* cgif_newgif (CGIF_Config* pConfig); // creates a new GIF (returns pointer to new GIF or NULL on error) +int cgif_addframe (CGIF* pGIF, CGIF_FrameConfig* pConfig); // adds the next frame to an existing GIF (returns 0 on success) +int cgif_close (CGIF* pGIF); // close file and free allocated memory (returns 0 on success) + +// CGIF_Config type (parameters passed by user) +// note: must stay AS IS for backward compatibility +struct st_gifconfig { + uint8_t* pGlobalPalette; // global color table of the GIF + const char* path; // path of the GIF to be created, mutually exclusive with pWriteFn + uint32_t attrFlags; // fixed attributes of the GIF (e.g. whether it is animated or not) + uint32_t genFlags; // flags that determine how the GIF is generated (e.g. optimization) + uint16_t width; // width of each frame in the GIF + uint16_t height; // height of each frame in the GIF + uint16_t numGlobalPaletteEntries; // size of the global color table + uint16_t numLoops; // number of repetitons of an animated GIF (set to INFINITE_LOOP for infinite loop) + cgif_write_fn *pWriteFn; // callback function for chunks of output data, mutually exclusive with path + void* pContext; // opaque pointer passed as the first parameter to pWriteFn +}; + +// CGIF_FrameConfig type (parameters passed by user) +// note: must stay AS IS for backward compatibility +struct st_frameconfig { + uint8_t* pLocalPalette; // local color table of a frame + uint8_t* pImageData; // image data to be encoded + uint32_t attrFlags; // fixed attributes of the GIF frame + uint32_t genFlags; // flags that determine how the GIF frame is created (e.g. optimization) + uint16_t delay; // delay before the next frame is shown (units of 0.01 s) + uint16_t numLocalPaletteEntries; // size of the local color table + uint8_t transIndex; // introduced with V0.2.0 +}; + +#ifdef __cplusplus +} +#endif + +#endif // CGIF_H diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat.h new file mode 100644 index 0000000..1c83563 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat.h @@ -0,0 +1,1064 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2000-2005 Fred L. Drake, Jr. + Copyright (c) 2001-2002 Greg Stein + Copyright (c) 2002-2016 Karl Waclawek + Copyright (c) 2016-2022 Sebastian Pipping + Copyright (c) 2016 Cristian Rodríguez + Copyright (c) 2016 Thomas Beutlich + Copyright (c) 2017 Rhodri James + Copyright (c) 2022 Thijs Schreijer + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef Expat_INCLUDED +#define Expat_INCLUDED 1 + +#include +#include "expat_external.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct XML_ParserStruct; +typedef struct XML_ParserStruct *XML_Parser; + +typedef unsigned char XML_Bool; +#define XML_TRUE ((XML_Bool)1) +#define XML_FALSE ((XML_Bool)0) + +/* The XML_Status enum gives the possible return values for several + API functions. The preprocessor #defines are included so this + stanza can be added to code that still needs to support older + versions of Expat 1.95.x: + + #ifndef XML_STATUS_OK + #define XML_STATUS_OK 1 + #define XML_STATUS_ERROR 0 + #endif + + Otherwise, the #define hackery is quite ugly and would have been + dropped. +*/ +enum XML_Status { + XML_STATUS_ERROR = 0, +#define XML_STATUS_ERROR XML_STATUS_ERROR + XML_STATUS_OK = 1, +#define XML_STATUS_OK XML_STATUS_OK + XML_STATUS_SUSPENDED = 2 +#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED +}; + +enum XML_Error { + XML_ERROR_NONE, + XML_ERROR_NO_MEMORY, + XML_ERROR_SYNTAX, + XML_ERROR_NO_ELEMENTS, + XML_ERROR_INVALID_TOKEN, + XML_ERROR_UNCLOSED_TOKEN, + XML_ERROR_PARTIAL_CHAR, + XML_ERROR_TAG_MISMATCH, + XML_ERROR_DUPLICATE_ATTRIBUTE, + XML_ERROR_JUNK_AFTER_DOC_ELEMENT, + XML_ERROR_PARAM_ENTITY_REF, + XML_ERROR_UNDEFINED_ENTITY, + XML_ERROR_RECURSIVE_ENTITY_REF, + XML_ERROR_ASYNC_ENTITY, + XML_ERROR_BAD_CHAR_REF, + XML_ERROR_BINARY_ENTITY_REF, + XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, + XML_ERROR_MISPLACED_XML_PI, + XML_ERROR_UNKNOWN_ENCODING, + XML_ERROR_INCORRECT_ENCODING, + XML_ERROR_UNCLOSED_CDATA_SECTION, + XML_ERROR_EXTERNAL_ENTITY_HANDLING, + XML_ERROR_NOT_STANDALONE, + XML_ERROR_UNEXPECTED_STATE, + XML_ERROR_ENTITY_DECLARED_IN_PE, + XML_ERROR_FEATURE_REQUIRES_XML_DTD, + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, + /* Added in 1.95.7. */ + XML_ERROR_UNBOUND_PREFIX, + /* Added in 1.95.8. */ + XML_ERROR_UNDECLARING_PREFIX, + XML_ERROR_INCOMPLETE_PE, + XML_ERROR_XML_DECL, + XML_ERROR_TEXT_DECL, + XML_ERROR_PUBLICID, + XML_ERROR_SUSPENDED, + XML_ERROR_NOT_SUSPENDED, + XML_ERROR_ABORTED, + XML_ERROR_FINISHED, + XML_ERROR_SUSPEND_PE, + /* Added in 2.0. */ + XML_ERROR_RESERVED_PREFIX_XML, + XML_ERROR_RESERVED_PREFIX_XMLNS, + XML_ERROR_RESERVED_NAMESPACE_URI, + /* Added in 2.2.1. */ + XML_ERROR_INVALID_ARGUMENT, + /* Added in 2.3.0. */ + XML_ERROR_NO_BUFFER, + /* Added in 2.4.0. */ + XML_ERROR_AMPLIFICATION_LIMIT_BREACH +}; + +enum XML_Content_Type { + XML_CTYPE_EMPTY = 1, + XML_CTYPE_ANY, + XML_CTYPE_MIXED, + XML_CTYPE_NAME, + XML_CTYPE_CHOICE, + XML_CTYPE_SEQ +}; + +enum XML_Content_Quant { + XML_CQUANT_NONE, + XML_CQUANT_OPT, + XML_CQUANT_REP, + XML_CQUANT_PLUS +}; + +/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be + XML_CQUANT_NONE, and the other fields will be zero or NULL. + If type == XML_CTYPE_MIXED, then quant will be NONE or REP and + numchildren will contain number of elements that may be mixed in + and children point to an array of XML_Content cells that will be + all of XML_CTYPE_NAME type with no quantification. + + If type == XML_CTYPE_NAME, then the name points to the name, and + the numchildren field will be zero and children will be NULL. The + quant fields indicates any quantifiers placed on the name. + + CHOICE and SEQ will have name NULL, the number of children in + numchildren and children will point, recursively, to an array + of XML_Content cells. + + The EMPTY, ANY, and MIXED types will only occur at top level. +*/ + +typedef struct XML_cp XML_Content; + +struct XML_cp { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char *name; + unsigned int numchildren; + XML_Content *children; +}; + +/* This is called for an element declaration. See above for + description of the model argument. It's the user code's responsibility + to free model when finished with it. See XML_FreeContentModel. + There is no need to free the model from the handler, it can be kept + around and freed at a later stage. +*/ +typedef void(XMLCALL *XML_ElementDeclHandler)(void *userData, + const XML_Char *name, + XML_Content *model); + +XMLPARSEAPI(void) +XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl); + +/* The Attlist declaration handler is called for *each* attribute. So + a single Attlist declaration with multiple attributes declared will + generate multiple calls to this handler. The "default" parameter + may be NULL in the case of the "#IMPLIED" or "#REQUIRED" + keyword. The "isrequired" parameter will be true and the default + value will be NULL in the case of "#REQUIRED". If "isrequired" is + true and default is non-NULL, then this is a "#FIXED" default. +*/ +typedef void(XMLCALL *XML_AttlistDeclHandler)( + void *userData, const XML_Char *elname, const XML_Char *attname, + const XML_Char *att_type, const XML_Char *dflt, int isrequired); + +XMLPARSEAPI(void) +XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl); + +/* The XML declaration handler is called for *both* XML declarations + and text declarations. The way to distinguish is that the version + parameter will be NULL for text declarations. The encoding + parameter may be NULL for XML declarations. The standalone + parameter will be -1, 0, or 1 indicating respectively that there + was no standalone parameter in the declaration, that it was given + as no, or that it was given as yes. +*/ +typedef void(XMLCALL *XML_XmlDeclHandler)(void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); + +XMLPARSEAPI(void) +XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl); + +typedef struct { + void *(*malloc_fcn)(size_t size); + void *(*realloc_fcn)(void *ptr, size_t size); + void (*free_fcn)(void *ptr); +} XML_Memory_Handling_Suite; + +/* Constructs a new parser; encoding is the encoding specified by the + external protocol or NULL if there is none specified. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate(const XML_Char *encoding); + +/* Constructs a new parser and namespace processor. Element type + names and attribute names that belong to a namespace will be + expanded; unprefixed attribute names are never expanded; unprefixed + element type names are expanded only if there is a default + namespace. The expanded name is the concatenation of the namespace + URI, the namespace separator character, and the local part of the + name. If the namespace separator is '\0' then the namespace URI + and the local part will be concatenated without any separator. + It is a programming error to use the separator '\0' with namespace + triplets (see XML_SetReturnNSTriplet). + If a namespace separator is chosen that can be part of a URI or + part of an XML name, splitting an expanded name back into its + 1, 2 or 3 original parts on application level in the element handler + may end up vulnerable, so these are advised against; sane choices for + a namespace separator are e.g. '\n' (line feed) and '|' (pipe). + + Note that Expat does not validate namespace URIs (beyond encoding) + against RFC 3986 today (and is not required to do so with regard to + the XML 1.0 namespaces specification) but it may start doing that + in future releases. Before that, an application using Expat must + be ready to receive namespace URIs containing non-URI characters. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); + +/* Constructs a new parser using the memory management suite referred to + by memsuite. If memsuite is NULL, then use the standard library memory + suite. If namespaceSeparator is non-NULL it creates a parser with + namespace processing as described above. The character pointed at + will serve as the namespace separator. + + All further memory operations used for the created parser will come from + the given suite. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +/* Prepare a parser object to be re-used. This is particularly + valuable when memory allocation overhead is disproportionately high, + such as when a large number of small documnents need to be parsed. + All handlers are cleared from the parser, except for the + unknownEncodingHandler. The parser's external state is re-initialized + except for the values of ns and ns_triplets. + + Added in Expat 1.95.3. +*/ +XMLPARSEAPI(XML_Bool) +XML_ParserReset(XML_Parser parser, const XML_Char *encoding); + +/* atts is array of name/value pairs, terminated by 0; + names and values are 0 terminated. +*/ +typedef void(XMLCALL *XML_StartElementHandler)(void *userData, + const XML_Char *name, + const XML_Char **atts); + +typedef void(XMLCALL *XML_EndElementHandler)(void *userData, + const XML_Char *name); + +/* s is not 0 terminated. */ +typedef void(XMLCALL *XML_CharacterDataHandler)(void *userData, + const XML_Char *s, int len); + +/* target and data are 0 terminated */ +typedef void(XMLCALL *XML_ProcessingInstructionHandler)(void *userData, + const XML_Char *target, + const XML_Char *data); + +/* data is 0 terminated */ +typedef void(XMLCALL *XML_CommentHandler)(void *userData, const XML_Char *data); + +typedef void(XMLCALL *XML_StartCdataSectionHandler)(void *userData); +typedef void(XMLCALL *XML_EndCdataSectionHandler)(void *userData); + +/* This is called for any characters in the XML document for which + there is no applicable handler. This includes both characters that + are part of markup which is of a kind that is not reported + (comments, markup declarations), or characters that are part of a + construct which could be reported but for which no handler has been + supplied. The characters are passed exactly as they were in the XML + document except that they will be encoded in UTF-8 or UTF-16. + Line boundaries are not normalized. Note that a byte order mark + character is not passed to the default handler. There are no + guarantees about how characters are divided between calls to the + default handler: for example, a comment might be split between + multiple calls. +*/ +typedef void(XMLCALL *XML_DefaultHandler)(void *userData, const XML_Char *s, + int len); + +/* This is called for the start of the DOCTYPE declaration, before + any DTD or internal subset is parsed. +*/ +typedef void(XMLCALL *XML_StartDoctypeDeclHandler)(void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); + +/* This is called for the end of the DOCTYPE declaration when the + closing > is encountered, but after processing any external + subset. +*/ +typedef void(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); + +/* This is called for entity declarations. The is_parameter_entity + argument will be non-zero if the entity is a parameter entity, zero + otherwise. + + For internal entities (), value will + be non-NULL and systemId, publicID, and notationName will be NULL. + The value string is NOT null-terminated; the length is provided in + the value_length argument. Since it is legal to have zero-length + values, do not use this argument to test for internal entities. + + For external entities, value will be NULL and systemId will be + non-NULL. The publicId argument will be NULL unless a public + identifier was provided. The notationName argument will have a + non-NULL value only for unparsed entity declarations. + + Note that is_parameter_entity can't be changed to XML_Bool, since + that would break binary compatibility. +*/ +typedef void(XMLCALL *XML_EntityDeclHandler)( + void *userData, const XML_Char *entityName, int is_parameter_entity, + const XML_Char *value, int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName); + +XMLPARSEAPI(void) +XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler); + +/* OBSOLETE -- OBSOLETE -- OBSOLETE + This handler has been superseded by the EntityDeclHandler above. + It is provided here for backward compatibility. + + This is called for a declaration of an unparsed (NDATA) entity. + The base argument is whatever was set by XML_SetBase. The + entityName, systemId and notationName arguments will never be + NULL. The other arguments may be. +*/ +typedef void(XMLCALL *XML_UnparsedEntityDeclHandler)( + void *userData, const XML_Char *entityName, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName); + +/* This is called for a declaration of notation. The base argument is + whatever was set by XML_SetBase. The notationName will never be + NULL. The other arguments can be. +*/ +typedef void(XMLCALL *XML_NotationDeclHandler)(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* When namespace processing is enabled, these are called once for + each namespace declaration. The call to the start and end element + handlers occur between the calls to the start and end namespace + declaration handlers. For an xmlns attribute, prefix will be + NULL. For an xmlns="" attribute, uri will be NULL. +*/ +typedef void(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData, + const XML_Char *prefix, + const XML_Char *uri); + +typedef void(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData, + const XML_Char *prefix); + +/* This is called if the document is not standalone, that is, it has an + external subset or a reference to a parameter entity, but does not + have standalone="yes". If this handler returns XML_STATUS_ERROR, + then processing will not continue, and the parser will return a + XML_ERROR_NOT_STANDALONE error. + If parameter entity parsing is enabled, then in addition to the + conditions above this handler will only be called if the referenced + entity was actually read. +*/ +typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData); + +/* This is called for a reference to an external parsed general + entity. The referenced entity is not automatically parsed. The + application can parse it immediately or later using + XML_ExternalEntityParserCreate. + + The parser argument is the parser parsing the entity containing the + reference; it can be passed as the parser argument to + XML_ExternalEntityParserCreate. The systemId argument is the + system identifier as specified in the entity declaration; it will + not be NULL. + + The base argument is the system identifier that should be used as + the base for resolving systemId if systemId was relative; this is + set by XML_SetBase; it may be NULL. + + The publicId argument is the public identifier as specified in the + entity declaration, or NULL if none was specified; the whitespace + in the public identifier will have been normalized as required by + the XML spec. + + The context argument specifies the parsing context in the format + expected by the context argument to XML_ExternalEntityParserCreate; + context is valid only until the handler returns, so if the + referenced entity is to be parsed later, it must be copied. + context is NULL only when the entity is a parameter entity. + + The handler should return XML_STATUS_ERROR if processing should not + continue because of a fatal error in the handling of the external + entity. In this case the calling parser will return an + XML_ERROR_EXTERNAL_ENTITY_HANDLING error. + + Note that unlike other handlers the first argument is the parser, + not userData. +*/ +typedef int(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* This is called in two situations: + 1) An entity reference is encountered for which no declaration + has been read *and* this is not an error. + 2) An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler has been called. + Note: skipped parameter entities in declarations and skipped general + entities in attribute values cannot be reported, because + the event would be out of sync with the reporting of the + declarations or attribute values +*/ +typedef void(XMLCALL *XML_SkippedEntityHandler)(void *userData, + const XML_Char *entityName, + int is_parameter_entity); + +/* This structure is filled in by the XML_UnknownEncodingHandler to + provide information to the parser about encodings that are unknown + to the parser. + + The map[b] member gives information about byte sequences whose + first byte is b. + + If map[b] is c where c is >= 0, then b by itself encodes the + Unicode scalar value c. + + If map[b] is -1, then the byte sequence is malformed. + + If map[b] is -n, where n >= 2, then b is the first byte of an + n-byte sequence that encodes a single Unicode scalar value. + + The data member will be passed as the first argument to the convert + function. + + The convert function is used to convert multibyte sequences; s will + point to a n-byte sequence where map[(unsigned char)*s] == -n. The + convert function must return the Unicode scalar value represented + by this byte sequence or -1 if the byte sequence is malformed. + + The convert function may be NULL if the encoding is a single-byte + encoding, that is if map[b] >= -1 for all bytes b. + + When the parser is finished with the encoding, then if release is + not NULL, it will call release passing it the data member; once + release has been called, the convert function will not be called + again. + + Expat places certain restrictions on the encodings that are supported + using this mechanism. + + 1. Every ASCII character that can appear in a well-formed XML document, + other than the characters + + $@\^`{}~ + + must be represented by a single byte, and that byte must be the + same byte that represents that character in ASCII. + + 2. No character may require more than 4 bytes to encode. + + 3. All characters encoded must have Unicode scalar values <= + 0xFFFF, (i.e., characters that would be encoded by surrogates in + UTF-16 are not allowed). Note that this restriction doesn't + apply to the built-in support for UTF-8 and UTF-16. + + 4. No Unicode character may be encoded by more than one distinct + sequence of bytes. +*/ +typedef struct { + int map[256]; + void *data; + int(XMLCALL *convert)(void *data, const char *s); + void(XMLCALL *release)(void *data); +} XML_Encoding; + +/* This is called for an encoding that is unknown to the parser. + + The encodingHandlerData argument is that which was passed as the + second argument to XML_SetUnknownEncodingHandler. + + The name argument gives the name of the encoding as specified in + the encoding declaration. + + If the callback can provide information about the encoding, it must + fill in the XML_Encoding structure, and return XML_STATUS_OK. + Otherwise it must return XML_STATUS_ERROR. + + If info does not describe a suitable encoding, then the parser will + return an XML_ERROR_UNKNOWN_ENCODING error. +*/ +typedef int(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + +XMLPARSEAPI(void) +XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, + XML_EndElementHandler end); + +XMLPARSEAPI(void) +XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler); + +XMLPARSEAPI(void) +XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler); + +XMLPARSEAPI(void) +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +XMLPARSEAPI(void) +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); +XMLPARSEAPI(void) +XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler); + +XMLPARSEAPI(void) +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +XMLPARSEAPI(void) +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start); + +XMLPARSEAPI(void) +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end); + +/* This sets the default handler and also inhibits expansion of + internal entities. These entity references will be passed to the + default handler, or to the skipped entity handler, if one is set. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler); + +/* This sets the default handler but does not inhibit expansion of + internal entities. The entity reference will not be passed to the + default handler. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler); + +XMLPARSEAPI(void) +XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler); + +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +/* If a non-NULL value for arg is specified here, then it will be + passed as the first argument to the external entity ref handler + instead of the parser object. +*/ +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg); + +XMLPARSEAPI(void) +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler); + +XMLPARSEAPI(void) +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + +/* This can be called within a handler for a start element, end + element, processing instruction or character data. It causes the + corresponding markup to be passed to the default handler. +*/ +XMLPARSEAPI(void) +XML_DefaultCurrent(XML_Parser parser); + +/* If do_nst is non-zero, and namespace processing is in effect, and + a name has a prefix (i.e. an explicit namespace qualifier) then + that name is returned as a triplet in a single string separated by + the separator character specified when the parser was created: URI + + sep + local_name + sep + prefix. + + If do_nst is zero, then namespace information is returned in the + default manner (URI + sep + local_name) whether or not the name + has a prefix. + + Note: Calling XML_SetReturnNSTriplet after XML_Parse or + XML_ParseBuffer has no effect. +*/ + +XMLPARSEAPI(void) +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +/* This value is passed as the userData argument to callbacks. */ +XMLPARSEAPI(void) +XML_SetUserData(XML_Parser parser, void *userData); + +/* Returns the last value set by XML_SetUserData or NULL. */ +#define XML_GetUserData(parser) (*(void **)(parser)) + +/* This is equivalent to supplying an encoding argument to + XML_ParserCreate. On success XML_SetEncoding returns non-zero, + zero otherwise. + Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer + has no effect and returns XML_STATUS_ERROR. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); + +/* If this function is called, then the parser will be passed as the + first argument to callbacks instead of userData. The userData will + still be accessible using XML_GetUserData. +*/ +XMLPARSEAPI(void) +XML_UseParserAsHandlerArg(XML_Parser parser); + +/* If useDTD == XML_TRUE is passed to this function, then the parser + will assume that there is an external subset, even if none is + specified in the document. In such a case the parser will call the + externalEntityRefHandler with a value of NULL for the systemId + argument (the publicId and context arguments will be NULL as well). + Note: For the purpose of checking WFC: Entity Declared, passing + useDTD == XML_TRUE will make the parser behave as if the document + had a DTD with an external subset. + Note: If this function is called, then this must be done before + the first call to XML_Parse or XML_ParseBuffer, since it will + have no effect after that. Returns + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. + Note: If the document does not have a DOCTYPE declaration at all, + then startDoctypeDeclHandler and endDoctypeDeclHandler will not + be called, despite an external subset being parsed. + Note: If XML_DTD is not defined when Expat is compiled, returns + XML_ERROR_FEATURE_REQUIRES_XML_DTD. + Note: If parser == NULL, returns XML_ERROR_INVALID_ARGUMENT. +*/ +XMLPARSEAPI(enum XML_Error) +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); + +/* Sets the base to be used for resolving relative URIs in system + identifiers in declarations. Resolving relative identifiers is + left to the application: this value will be passed through as the + base argument to the XML_ExternalEntityRefHandler, + XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base + argument will be copied. Returns XML_STATUS_ERROR if out of memory, + XML_STATUS_OK otherwise. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetBase(XML_Parser parser, const XML_Char *base); + +XMLPARSEAPI(const XML_Char *) +XML_GetBase(XML_Parser parser); + +/* Returns the number of the attribute/value pairs passed in last call + to the XML_StartElementHandler that were specified in the start-tag + rather than defaulted. Each attribute/value pair counts as 2; thus + this corresponds to an index into the atts array passed to the + XML_StartElementHandler. Returns -1 if parser == NULL. +*/ +XMLPARSEAPI(int) +XML_GetSpecifiedAttributeCount(XML_Parser parser); + +/* Returns the index of the ID attribute passed in the last call to + XML_StartElementHandler, or -1 if there is no ID attribute or + parser == NULL. Each attribute/value pair counts as 2; thus this + corresponds to an index into the atts array passed to the + XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetIdAttributeIndex(XML_Parser parser); + +#ifdef XML_ATTR_INFO +/* Source file byte offsets for the start and end of attribute names and values. + The value indices are exclusive of surrounding quotes; thus in a UTF-8 source + file an attribute value of "blah" will yield: + info->valueEnd - info->valueStart = 4 bytes. +*/ +typedef struct { + XML_Index nameStart; /* Offset to beginning of the attribute name. */ + XML_Index nameEnd; /* Offset after the attribute name's last byte. */ + XML_Index valueStart; /* Offset to beginning of the attribute value. */ + XML_Index valueEnd; /* Offset after the attribute value's last byte. */ +} XML_AttrInfo; + +/* Returns an array of XML_AttrInfo structures for the attribute/value pairs + passed in last call to the XML_StartElementHandler that were specified + in the start-tag rather than defaulted. Each attribute/value pair counts + as 1; thus the number of entries in the array is + XML_GetSpecifiedAttributeCount(parser) / 2. +*/ +XMLPARSEAPI(const XML_AttrInfo *) +XML_GetAttributeInfo(XML_Parser parser); +#endif + +/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is + detected. The last call to XML_Parse must have isFinal true; len + may be zero for this call (or any other). + + Though the return values for these functions has always been + described as a Boolean value, the implementation, at least for the + 1.95.x series, has always returned exactly one of the XML_Status + values. +*/ +XMLPARSEAPI(enum XML_Status) +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +XMLPARSEAPI(void *) +XML_GetBuffer(XML_Parser parser, int len); + +XMLPARSEAPI(enum XML_Status) +XML_ParseBuffer(XML_Parser parser, int len, int isFinal); + +/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. + Must be called from within a call-back handler, except when aborting + (resumable = 0) an already suspended parser. Some call-backs may + still follow because they would otherwise get lost. Examples: + - endElementHandler() for empty elements when stopped in + startElementHandler(), + - endNameSpaceDeclHandler() when stopped in endElementHandler(), + and possibly others. + + Can be called from most handlers, including DTD related call-backs, + except when parsing an external parameter entity and resumable != 0. + Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. + Possible error codes: + - XML_ERROR_SUSPENDED: when suspending an already suspended parser. + - XML_ERROR_FINISHED: when the parser has already finished. + - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. + + When resumable != 0 (true) then parsing is suspended, that is, + XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. + Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() + return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. + + *Note*: + This will be applied to the current parser instance only, that is, if + there is a parent parser then it will continue parsing when the + externalEntityRefHandler() returns. It is up to the implementation of + the externalEntityRefHandler() to call XML_StopParser() on the parent + parser (recursively), if one wants to stop parsing altogether. + + When suspended, parsing can be resumed by calling XML_ResumeParser(). +*/ +XMLPARSEAPI(enum XML_Status) +XML_StopParser(XML_Parser parser, XML_Bool resumable); + +/* Resumes parsing after it has been suspended with XML_StopParser(). + Must not be called from within a handler call-back. Returns same + status codes as XML_Parse() or XML_ParseBuffer(). + Additional error code XML_ERROR_NOT_SUSPENDED possible. + + *Note*: + This must be called on the most deeply nested child parser instance + first, and on its parent parser only after the child parser has finished, + to be applied recursively until the document entity's parser is restarted. + That is, the parent parser will not resume by itself and it is up to the + application to call XML_ResumeParser() on it at the appropriate moment. +*/ +XMLPARSEAPI(enum XML_Status) +XML_ResumeParser(XML_Parser parser); + +enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED }; + +typedef struct { + enum XML_Parsing parsing; + XML_Bool finalBuffer; +} XML_ParsingStatus; + +/* Returns status of parser with respect to being initialized, parsing, + finished, or suspended and processing the final buffer. + XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, + XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED +*/ +XMLPARSEAPI(void) +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); + +/* Creates an XML_Parser object that can parse an external general + entity; context is a '\0'-terminated string specifying the parse + context; encoding is a '\0'-terminated string giving the name of + the externally specified encoding, or NULL if there is no + externally specified encoding. The context string consists of a + sequence of tokens separated by formfeeds (\f); a token consisting + of a name specifies that the general entity of the name is open; a + token of the form prefix=uri specifies the namespace for a + particular prefix; a token of the form =uri specifies the default + namespace. This can be called at any point after the first call to + an ExternalEntityRefHandler so longer as the parser has not yet + been freed. The new parser is completely independent and may + safely be used in a separate thread. The handlers and userData are + initialized from the parser argument. Returns NULL if out of memory. + Otherwise returns a new XML_Parser object. +*/ +XMLPARSEAPI(XML_Parser) +XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context, + const XML_Char *encoding); + +enum XML_ParamEntityParsing { + XML_PARAM_ENTITY_PARSING_NEVER, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, + XML_PARAM_ENTITY_PARSING_ALWAYS +}; + +/* Controls parsing of parameter entities (including the external DTD + subset). If parsing of parameter entities is enabled, then + references to external parameter entities (including the external + DTD subset) will be passed to the handler set with + XML_SetExternalEntityRefHandler. The context passed will be 0. + + Unlike external general entities, external parameter entities can + only be parsed synchronously. If the external parameter entity is + to be parsed, it must be parsed during the call to the external + entity ref handler: the complete sequence of + XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and + XML_ParserFree calls must be made during this call. After + XML_ExternalEntityParserCreate has been called to create the parser + for the external parameter entity (context must be 0 for this + call), it is illegal to make any calls on the old parser until + XML_ParserFree has been called on the newly created parser. + If the library has been compiled without support for parameter + entity parsing (ie without XML_DTD being defined), then + XML_SetParamEntityParsing will return 0 if parsing of parameter + entities is requested; otherwise it will return non-zero. + Note: If XML_SetParamEntityParsing is called after XML_Parse or + XML_ParseBuffer, then it has no effect and will always return 0. + Note: If parser == NULL, the function will do nothing and return 0. +*/ +XMLPARSEAPI(int) +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +/* Sets the hash salt to use for internal hash calculations. + Helps in preventing DoS attacks based on predicting hash + function behavior. This must be called before parsing is started. + Returns 1 if successful, 0 when called after parsing has started. + Note: If parser == NULL, the function will do nothing and return 0. +*/ +XMLPARSEAPI(int) +XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt); + +/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then + XML_GetErrorCode returns information about the error. +*/ +XMLPARSEAPI(enum XML_Error) +XML_GetErrorCode(XML_Parser parser); + +/* These functions return information about the current parse + location. They may be called from any callback called to report + some parse event; in this case the location is the location of the + first of the sequence of characters that generated the event. When + called from callbacks generated by declarations in the document + prologue, the location identified isn't as neatly defined, but will + be within the relevant markup. When called outside of the callback + functions, the position indicated will be just past the last parse + event (regardless of whether there was an associated callback). + + They may also be called after returning from a call to XML_Parse + or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then + the location is the location of the character at which the error + was detected; otherwise the location is the location of the last + parse event, as described above. + + Note: XML_GetCurrentLineNumber and XML_GetCurrentColumnNumber + return 0 to indicate an error. + Note: XML_GetCurrentByteIndex returns -1 to indicate an error. +*/ +XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); +XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); +XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); + +/* Return the number of bytes in the current event. + Returns 0 if the event is in an internal entity. +*/ +XMLPARSEAPI(int) +XML_GetCurrentByteCount(XML_Parser parser); + +/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets + the integer pointed to by offset to the offset within this buffer + of the current parse position, and sets the integer pointed to by size + to the size of this buffer (the number of input bytes). Otherwise + returns a NULL pointer. Also returns a NULL pointer if a parse isn't + active. + + NOTE: The character pointer returned should not be used outside + the handler that makes the call. +*/ +XMLPARSEAPI(const char *) +XML_GetInputContext(XML_Parser parser, int *offset, int *size); + +/* For backwards compatibility with previous versions. */ +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex + +/* Frees the content model passed to the element declaration handler */ +XMLPARSEAPI(void) +XML_FreeContentModel(XML_Parser parser, XML_Content *model); + +/* Exposing the memory handling functions used in Expat */ +XMLPARSEAPI(void *) +XML_ATTR_MALLOC +XML_ATTR_ALLOC_SIZE(2) +XML_MemMalloc(XML_Parser parser, size_t size); + +XMLPARSEAPI(void *) +XML_ATTR_ALLOC_SIZE(3) +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); + +XMLPARSEAPI(void) +XML_MemFree(XML_Parser parser, void *ptr); + +/* Frees memory used by the parser. */ +XMLPARSEAPI(void) +XML_ParserFree(XML_Parser parser); + +/* Returns a string describing the error. */ +XMLPARSEAPI(const XML_LChar *) +XML_ErrorString(enum XML_Error code); + +/* Return a string containing the version number of this expat */ +XMLPARSEAPI(const XML_LChar *) +XML_ExpatVersion(void); + +typedef struct { + int major; + int minor; + int micro; +} XML_Expat_Version; + +/* Return an XML_Expat_Version structure containing numeric version + number information for this version of expat. +*/ +XMLPARSEAPI(XML_Expat_Version) +XML_ExpatVersionInfo(void); + +/* Added in Expat 1.95.5. */ +enum XML_FeatureEnum { + XML_FEATURE_END = 0, + XML_FEATURE_UNICODE, + XML_FEATURE_UNICODE_WCHAR_T, + XML_FEATURE_DTD, + XML_FEATURE_CONTEXT_BYTES, + XML_FEATURE_MIN_SIZE, + XML_FEATURE_SIZEOF_XML_CHAR, + XML_FEATURE_SIZEOF_XML_LCHAR, + XML_FEATURE_NS, + XML_FEATURE_LARGE_SIZE, + XML_FEATURE_ATTR_INFO, + /* Added in Expat 2.4.0. */ + XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT, + XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT + /* Additional features must be added to the end of this enum. */ +}; + +typedef struct { + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; +} XML_Feature; + +XMLPARSEAPI(const XML_Feature *) +XML_GetFeatureList(void); + +#ifdef XML_DTD +/* Added in Expat 2.4.0. */ +XMLPARSEAPI(XML_Bool) +XML_SetBillionLaughsAttackProtectionMaximumAmplification( + XML_Parser parser, float maximumAmplificationFactor); + +/* Added in Expat 2.4.0. */ +XMLPARSEAPI(XML_Bool) +XML_SetBillionLaughsAttackProtectionActivationThreshold( + XML_Parser parser, unsigned long long activationThresholdBytes); +#endif + +/* Expat follows the semantic versioning convention. + See http://semver.org. +*/ +#define XML_MAJOR_VERSION 2 +#define XML_MINOR_VERSION 5 +#define XML_MICRO_VERSION 0 + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_INCLUDED */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat_config.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat_config.h new file mode 100644 index 0000000..9cff981 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat_config.h @@ -0,0 +1,140 @@ +/* expat_config.h. Generated from expat_config.h.in by configure. */ +/* expat_config.h.in. Generated from configure.ac by autoheader. */ + +#ifndef EXPAT_CONFIG_H +#define EXPAT_CONFIG_H 1 + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* 1234 = LILENDIAN, 4321 = BIGENDIAN */ +#define BYTEORDER 1234 + +/* Define to 1 if you have the `arc4random' function. */ +/* #undef HAVE_ARC4RANDOM */ + +/* Define to 1 if you have the `arc4random_buf' function. */ +/* #undef HAVE_ARC4RANDOM_BUF */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +/* #undef HAVE_GETPAGESIZE */ + +/* Define to 1 if you have the `getrandom' function. */ +/* #undef HAVE_GETRANDOM */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `bsd' library (-lbsd). */ +/* #undef HAVE_LIBBSD */ + +/* Define to 1 if you have a working `mmap' system call. */ +/* #undef HAVE_MMAP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have `syscall' and `SYS_getrandom'. */ +/* #undef HAVE_SYSCALL_GETRANDOM */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "expat" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "expat-bugs@libexpat.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "expat" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "expat 2.5.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "expat" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.5.0" + +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "2.5.0" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to allow retrieving the byte offsets for attribute names and values. + */ +/* #undef XML_ATTR_INFO */ + +/* Define to specify how much context to retain around the current parse + point. */ +#define XML_CONTEXT_BYTES 1024 + +/* Define to include code reading entropy from `/dev/urandom'. */ +#define XML_DEV_URANDOM 1 + +/* Define to make parameter entity parsing functionality available. */ +#define XML_DTD 1 + +/* Define to make XML Namespaces functionality available. */ +#define XML_NS 1 + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `long int' if does not define. */ +/* #undef off_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +#endif // ndef EXPAT_CONFIG_H diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat_external.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat_external.h new file mode 100644 index 0000000..8829f77 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/expat_external.h @@ -0,0 +1,165 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000 Clark Cooper + Copyright (c) 2000-2004 Fred L. Drake, Jr. + Copyright (c) 2001-2002 Greg Stein + Copyright (c) 2002-2006 Karl Waclawek + Copyright (c) 2016 Cristian Rodríguez + Copyright (c) 2016-2019 Sebastian Pipping + Copyright (c) 2017 Rhodri James + Copyright (c) 2018 Yury Gribov + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef Expat_External_INCLUDED +#define Expat_External_INCLUDED 1 + +/* External API definitions */ + +/* Expat tries very hard to make the API boundary very specifically + defined. There are two macros defined to control this boundary; + each of these can be defined before including this header to + achieve some different behavior, but doing so it not recommended or + tested frequently. + + XMLCALL - The calling convention to use for all calls across the + "library boundary." This will default to cdecl, and + try really hard to tell the compiler that's what we + want. + + XMLIMPORT - Whatever magic is needed to note that a function is + to be imported from a dynamically loaded library + (.dll, .so, or .sl, depending on your platform). + + The XMLCALL macro was added in Expat 1.95.7. The only one which is + expected to be directly useful in client code is XMLCALL. + + Note that on at least some Unix versions, the Expat library must be + compiled with the cdecl calling convention as the default since + system headers may assume the cdecl convention. +*/ +#ifndef XMLCALL +# if defined(_MSC_VER) +# define XMLCALL __cdecl +# elif defined(__GNUC__) && defined(__i386) && ! defined(__INTEL_COMPILER) +# define XMLCALL __attribute__((cdecl)) +# else +/* For any platform which uses this definition and supports more than + one calling convention, we need to extend this definition to + declare the convention used on that platform, if it's possible to + do so. + + If this is the case for your platform, please file a bug report + with information on how to identify your platform via the C + pre-processor and how to specify the same calling convention as the + platform's malloc() implementation. +*/ +# define XMLCALL +# endif +#endif /* not defined XMLCALL */ + +#if ! defined(XML_STATIC) && ! defined(XMLIMPORT) +# ifndef XML_BUILDING_EXPAT +/* using Expat from an application */ + +# if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__) +# define XMLIMPORT __declspec(dllimport) +# endif + +# endif +#endif /* not defined XML_STATIC */ + +#ifndef XML_ENABLE_VISIBILITY +# define XML_ENABLE_VISIBILITY 0 +#endif + +#if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY +# define XMLIMPORT __attribute__((visibility("default"))) +#endif + +/* If we didn't define it above, define it away: */ +#ifndef XMLIMPORT +# define XMLIMPORT +#endif + +#if defined(__GNUC__) \ + && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) +# define XML_ATTR_MALLOC __attribute__((__malloc__)) +#else +# define XML_ATTR_MALLOC +#endif + +#if defined(__GNUC__) \ + && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) +#else +# define XML_ATTR_ALLOC_SIZE(x) +#endif + +#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef XML_UNICODE_WCHAR_T +# ifndef XML_UNICODE +# define XML_UNICODE +# endif +# if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2) +# error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc" +# endif +#endif + +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +# ifdef XML_UNICODE_WCHAR_T +typedef wchar_t XML_Char; +typedef wchar_t XML_LChar; +# else +typedef unsigned short XML_Char; +typedef char XML_LChar; +# endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ +typedef char XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE */ + +#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ +typedef long long XML_Index; +typedef unsigned long long XML_Size; +#else +typedef long XML_Index; +typedef unsigned long XML_Size; +#endif /* XML_LARGE_SIZE */ + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_External_INCLUDED */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/ffi.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/ffi.h new file mode 100644 index 0000000..98ba2c6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/ffi.h @@ -0,0 +1,531 @@ +/* -----------------------------------------------------------------*-C-*- + libffi 3.4.4 + - Copyright (c) 2011, 2014, 2019, 2021, 2022 Anthony Green + - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the ``Software''), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------- + Most of the API is documented in doc/libffi.texi. + + The raw API is designed to bypass some of the argument packing and + unpacking on architectures for which it can be avoided. Routines + are provided to emulate the raw API if the underlying platform + doesn't allow faster implementation. + + More details on the raw API can be found in: + + http://gcc.gnu.org/ml/java/1999-q3/msg00138.html + + and + + http://gcc.gnu.org/ml/java/1999-q3/msg00174.html + -------------------------------------------------------------------- */ + +#ifndef LIBFFI_H +#define LIBFFI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Specify which architecture libffi is configured for. */ +#ifndef X86_WIN64 +#define X86_WIN64 +#endif + +/* ---- System configuration information --------------------------------- */ + +/* If these change, update src/mips/ffitarget.h. */ +#define FFI_TYPE_VOID 0 +#define FFI_TYPE_INT 1 +#define FFI_TYPE_FLOAT 2 +#define FFI_TYPE_DOUBLE 3 +#if 1 +#define FFI_TYPE_LONGDOUBLE 4 +#else +#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE +#endif +#define FFI_TYPE_UINT8 5 +#define FFI_TYPE_SINT8 6 +#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_SINT16 8 +#define FFI_TYPE_UINT32 9 +#define FFI_TYPE_SINT32 10 +#define FFI_TYPE_UINT64 11 +#define FFI_TYPE_SINT64 12 +#define FFI_TYPE_STRUCT 13 +#define FFI_TYPE_POINTER 14 +#define FFI_TYPE_COMPLEX 15 + +/* This should always refer to the last type code (for sanity checks). */ +#define FFI_TYPE_LAST FFI_TYPE_COMPLEX + +#include + +#ifndef LIBFFI_ASM + +#if defined(_MSC_VER) && !defined(__clang__) +#define __attribute__(X) +#endif + +#include +#include + +/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). + But we can find it either under the correct ANSI name, or under GNU + C's internal name. */ + +#define FFI_64_BIT_MAX 9223372036854775807 + +#ifdef LONG_LONG_MAX +# define FFI_LONG_LONG_MAX LONG_LONG_MAX +#else +# ifdef LLONG_MAX +# define FFI_LONG_LONG_MAX LLONG_MAX +# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif /* _AIX52 or newer */ +# else +# ifdef __GNUC__ +# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ +# endif +# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ +# ifndef __PPC64__ +# if defined (__IBMC__) || defined (__IBMCPP__) +# define FFI_LONG_LONG_MAX LONGLONG_MAX +# endif +# endif /* __PPC64__ */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif +# endif +#endif + +/* The closure code assumes that this works on pointers, i.e. a size_t + can hold a pointer. */ + +typedef struct _ffi_type +{ + size_t size; + unsigned short alignment; + unsigned short type; + struct _ffi_type **elements; +} ffi_type; + +/* Need minimal decorations for DLLs to work on Windows. GCC has + autoimport and autoexport. Always mark externally visible symbols + as dllimport for MSVC clients, even if it means an extra indirection + when using the static version of the library. + Besides, as a workaround, they can define FFI_BUILDING if they + *know* they are going to link with the static library. */ +#if defined _MSC_VER +# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */ +# define FFI_API __declspec(dllexport) +# elif !defined FFI_BUILDING /* Importing libffi.DLL */ +# define FFI_API __declspec(dllimport) +# else /* Building/linking static library */ +# define FFI_API +# endif +#else +# define FFI_API +#endif + +/* The externally visible type declarations also need the MSVC DLL + decorations, or they will not be exported from the object file. */ +#if defined LIBFFI_HIDE_BASIC_TYPES +# define FFI_EXTERN FFI_API +#else +# define FFI_EXTERN extern FFI_API +#endif + +#ifndef LIBFFI_HIDE_BASIC_TYPES +#if SCHAR_MAX == 127 +# define ffi_type_uchar ffi_type_uint8 +# define ffi_type_schar ffi_type_sint8 +#else + #error "char size not supported" +#endif + +#if SHRT_MAX == 32767 +# define ffi_type_ushort ffi_type_uint16 +# define ffi_type_sshort ffi_type_sint16 +#elif SHRT_MAX == 2147483647 +# define ffi_type_ushort ffi_type_uint32 +# define ffi_type_sshort ffi_type_sint32 +#else + #error "short size not supported" +#endif + +#if INT_MAX == 32767 +# define ffi_type_uint ffi_type_uint16 +# define ffi_type_sint ffi_type_sint16 +#elif INT_MAX == 2147483647 +# define ffi_type_uint ffi_type_uint32 +# define ffi_type_sint ffi_type_sint32 +#elif INT_MAX == 9223372036854775807 +# define ffi_type_uint ffi_type_uint64 +# define ffi_type_sint ffi_type_sint64 +#else + #error "int size not supported" +#endif + +#if LONG_MAX == 2147483647 +# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX + #error "no 64-bit data type supported" +# endif +#elif LONG_MAX != FFI_64_BIT_MAX + #error "long size not supported" +#endif + +#if LONG_MAX == 2147483647 +# define ffi_type_ulong ffi_type_uint32 +# define ffi_type_slong ffi_type_sint32 +#elif LONG_MAX == FFI_64_BIT_MAX +# define ffi_type_ulong ffi_type_uint64 +# define ffi_type_slong ffi_type_sint64 +#else + #error "long size not supported" +#endif + +/* These are defined in types.c. */ +FFI_EXTERN ffi_type ffi_type_void; +FFI_EXTERN ffi_type ffi_type_uint8; +FFI_EXTERN ffi_type ffi_type_sint8; +FFI_EXTERN ffi_type ffi_type_uint16; +FFI_EXTERN ffi_type ffi_type_sint16; +FFI_EXTERN ffi_type ffi_type_uint32; +FFI_EXTERN ffi_type ffi_type_sint32; +FFI_EXTERN ffi_type ffi_type_uint64; +FFI_EXTERN ffi_type ffi_type_sint64; +FFI_EXTERN ffi_type ffi_type_float; +FFI_EXTERN ffi_type ffi_type_double; +FFI_EXTERN ffi_type ffi_type_pointer; + +#if 1 +FFI_EXTERN ffi_type ffi_type_longdouble; +#else +#define ffi_type_longdouble ffi_type_double +#endif + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +FFI_EXTERN ffi_type ffi_type_complex_float; +FFI_EXTERN ffi_type ffi_type_complex_double; +#if 1 +FFI_EXTERN ffi_type ffi_type_complex_longdouble; +#else +#define ffi_type_complex_longdouble ffi_type_complex_double +#endif +#endif +#endif /* LIBFFI_HIDE_BASIC_TYPES */ + +typedef enum { + FFI_OK = 0, + FFI_BAD_TYPEDEF, + FFI_BAD_ABI, + FFI_BAD_ARGTYPE +} ffi_status; + +typedef struct { + ffi_abi abi; + unsigned nargs; + ffi_type **arg_types; + ffi_type *rtype; + unsigned bytes; + unsigned flags; +#ifdef FFI_EXTRA_CIF_FIELDS + FFI_EXTRA_CIF_FIELDS; +#endif +} ffi_cif; + +/* ---- Definitions for the raw API -------------------------------------- */ + +#ifndef FFI_SIZEOF_ARG +# if LONG_MAX == 2147483647 +# define FFI_SIZEOF_ARG 4 +# elif LONG_MAX == FFI_64_BIT_MAX +# define FFI_SIZEOF_ARG 8 +# endif +#endif + +#ifndef FFI_SIZEOF_JAVA_RAW +# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG +#endif + +typedef union { + ffi_sarg sint; + ffi_arg uint; + float flt; + char data[FFI_SIZEOF_ARG]; + void* ptr; +} ffi_raw; + +#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 +/* This is a special case for mips64/n32 ABI (and perhaps others) where + sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ +typedef union { + signed int sint; + unsigned int uint; + float flt; + char data[FFI_SIZEOF_JAVA_RAW]; + void* ptr; +} ffi_java_raw; +#else +typedef ffi_raw ffi_java_raw; +#endif + + +FFI_API +void ffi_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_raw *avalue); + +FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); +FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); +FFI_API size_t ffi_raw_size (ffi_cif *cif); + +/* This is analogous to the raw API, except it uses Java parameter + packing, even on 64-bit machines. I.e. on 64-bit machines longs + and doubles are followed by an empty 64-bit word. */ + +#if !FFI_NATIVE_RAW_API +FFI_API +void ffi_java_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_java_raw *avalue) __attribute__((deprecated)); +#endif + +FFI_API +void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated)); +FFI_API +void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated)); +FFI_API +size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated)); + +/* ---- Definitions for closures ----------------------------------------- */ + +#if FFI_CLOSURES + +#ifdef _MSC_VER +__declspec(align(8)) +#endif +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + union { + char tramp[FFI_TRAMPOLINE_SIZE]; + void *ftramp; + }; +#endif + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); + void *user_data; +#if defined(_MSC_VER) && defined(_M_IX86) + void *padding; +#endif +} ffi_closure +#ifdef __GNUC__ + __attribute__((aligned (8))) +#endif + ; + +#ifndef __GNUC__ +# ifdef __sgi +# pragma pack 0 +# endif +#endif + +FFI_API void *ffi_closure_alloc (size_t size, void **code); +FFI_API void ffi_closure_free (void *); + +#if defined(PA_LINUX) || defined(PA_HPUX) +#define FFI_CLOSURE_PTR(X) ((void *)((unsigned int)(X) | 2)) +#define FFI_RESTORE_PTR(X) ((void *)((unsigned int)(X) & ~3)) +#else +#define FFI_CLOSURE_PTR(X) (X) +#define FFI_RESTORE_PTR(X) (X) +#endif + +FFI_API ffi_status +ffi_prep_closure (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) + __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) +#elif defined(__GNUC__) && __GNUC__ >= 3 + __attribute__((deprecated)) +#endif + ; + +FFI_API ffi_status +ffi_prep_closure_loc (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc); + +#ifdef __sgi +# pragma pack 8 +#endif +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_raw*,void*); + void *user_data; + +} ffi_raw_closure; + +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); + void *user_data; + +} ffi_java_raw_closure; + +FFI_API ffi_status +ffi_prep_raw_closure (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data); + +FFI_API ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc); + +#if !FFI_NATIVE_RAW_API +FFI_API ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data) __attribute__((deprecated)); + +FFI_API ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc) __attribute__((deprecated)); +#endif + +#endif /* FFI_CLOSURES */ + +#if FFI_GO_CLOSURES + +typedef struct { + void *tramp; + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); +} ffi_go_closure; + +FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*)); + +FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure); + +#endif /* FFI_GO_CLOSURES */ + +/* ---- Public interface definition -------------------------------------- */ + +FFI_API +ffi_status ffi_prep_cif(ffi_cif *cif, + ffi_abi abi, + unsigned int nargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +ffi_status ffi_prep_cif_var(ffi_cif *cif, + ffi_abi abi, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue); + +FFI_API +ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, + size_t *offsets); + +/* Useful for eliminating compiler warnings. */ +#define FFI_FN(f) ((void (*)(void))f) + +/* ---- Definitions shared with assembly code ---------------------------- */ + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/ffitarget.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/ffitarget.h new file mode 100644 index 0000000..5a3399d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/ffitarget.h @@ -0,0 +1,164 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green + Copyright (c) 1996-2003, 2010 Red Hat, Inc. + Copyright (C) 2008 Free Software Foundation, Inc. + + Target configuration macros for x86 and x86-64. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +/* For code common to all platforms on x86 and x86_64. */ +#define X86_ANY + +#if defined (X86_64) && defined (__i386__) +#undef X86_64 +#warning ****************************************************** +#warning ********** X86 IS DEFINED **************************** +#warning ****************************************************** +#define X86 +#endif + +#ifdef X86_WIN64 +#define FFI_SIZEOF_ARG 8 +#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#ifndef _MSC_VER +#define FFI_TARGET_HAS_COMPLEX_TYPE +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +#ifdef X86_WIN64 +#ifdef _MSC_VER +typedef unsigned __int64 ffi_arg; +typedef __int64 ffi_sarg; +#else +typedef unsigned long long ffi_arg; +typedef long long ffi_sarg; +#endif +#else +#if defined __x86_64__ && defined __ILP32__ +#define FFI_SIZEOF_ARG 8 +#define FFI_SIZEOF_JAVA_RAW 4 +typedef unsigned long long ffi_arg; +typedef long long ffi_sarg; +#else +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; +#endif +#endif + +typedef enum ffi_abi { +#if defined(X86_WIN64) + FFI_FIRST_ABI = 0, + FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */ + FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */ + FFI_LAST_ABI, +#ifdef __GNUC__ + FFI_DEFAULT_ABI = FFI_GNUW64 +#else + FFI_DEFAULT_ABI = FFI_WIN64 +#endif + +#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) + FFI_FIRST_ABI = 1, + FFI_UNIX64, + FFI_WIN64, + FFI_EFI64 = FFI_WIN64, + FFI_GNUW64, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX64 + +#elif defined(X86_WIN32) + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_STDCALL = 2, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_MS_CDECL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_MS_CDECL +#else + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_STDCALL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_MS_CDECL = 8, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +#endif +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 + +#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) +#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) +#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) +#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) + +#if defined (X86_64) || defined(X86_WIN64) \ + || (defined (__x86_64__) && defined (X86_DARWIN)) +/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP + + 8 bytes of pointer. */ +# define FFI_TRAMPOLINE_SIZE 32 +# define FFI_NATIVE_RAW_API 0 +#else +/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused + bytes. */ +# define FFI_TRAMPOLINE_SIZE 16 +# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ +#endif + +#if !defined(GENERATE_LIBFFI_MAP) && defined(__CET__) +# include +# if (__CET__ & 1) != 0 +# define ENDBR_PRESENT +# endif +# define _CET_NOTRACK notrack +#else +# define _CET_ENDBR +# define _CET_NOTRACK +#endif + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fcfreetype.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fcfreetype.h new file mode 100644 index 0000000..20b1128 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fcfreetype.h @@ -0,0 +1,59 @@ +/* + * fontconfig/fontconfig/fcfreetype.h + * + * Copyright © 2001 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of the author(s) not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. The authors make no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _FCFREETYPE_H_ +#define _FCFREETYPE_H_ +#include +#include FT_FREETYPE_H + +#ifndef FcPublic +#define FcPublic +#endif + +_FCFUNCPROTOBEGIN + +FcPublic FT_UInt +FcFreeTypeCharIndex (FT_Face face, FcChar32 ucs4); + +FcPublic FcCharSet * +FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks, int *spacing); + +FcPublic FcCharSet * +FcFreeTypeCharSet (FT_Face face, FcBlanks *blanks); + +FcPublic FcResult +FcPatternGetFTFace (const FcPattern *p, const char *object, int n, FT_Face *f); + +FcPublic FcBool +FcPatternAddFTFace (FcPattern *p, const char *object, const FT_Face f); + +FcPublic FcPattern * +FcFreeTypeQueryFace (const FT_Face face, + const FcChar8 *file, + unsigned int id, + FcBlanks *blanks); + +_FCFUNCPROTOEND + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fcprivate.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fcprivate.h new file mode 100644 index 0000000..23021b2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fcprivate.h @@ -0,0 +1,134 @@ +/* + * fontconfig/fontconfig/fcprivate.h + * + * Copyright © 2001 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of the author(s) not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. The authors make no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _FCPRIVATE_H_ +#define _FCPRIVATE_H_ + +/* + * I tried this with functions that took va_list* arguments + * but portability concerns made me change these functions + * into macros (sigh). + */ + +#define FcPatternVapBuild(result, orig, va) \ +{ \ + FcPattern *__p__ = (orig); \ + const char *__o__; \ + FcValue __v__; \ + \ + if (!__p__) \ + { \ + __p__ = FcPatternCreate (); \ + if (!__p__) \ + goto _FcPatternVapBuild_bail0; \ + } \ + for (;;) \ + { \ + __o__ = va_arg (va, const char *); \ + if (!__o__) \ + break; \ + __v__.type = va_arg (va, int); \ + switch (__v__.type) { \ + case FcTypeUnknown: \ + case FcTypeVoid: \ + goto _FcPatternVapBuild_bail1; \ + case FcTypeInteger: \ + __v__.u.i = va_arg (va, int); \ + break; \ + case FcTypeDouble: \ + __v__.u.d = va_arg (va, double); \ + break; \ + case FcTypeString: \ + __v__.u.s = va_arg (va, const FcChar8 *); \ + break; \ + case FcTypeBool: \ + __v__.u.b = va_arg (va, FcBool); \ + break; \ + case FcTypeMatrix: \ + __v__.u.m = va_arg (va, const FcMatrix *); \ + break; \ + case FcTypeCharSet: \ + __v__.u.c = va_arg (va, const FcCharSet *); \ + break; \ + case FcTypeFTFace: \ + __v__.u.f = va_arg (va, FT_Face); \ + break; \ + case FcTypeLangSet: \ + __v__.u.l = va_arg (va, const FcLangSet *); \ + break; \ + case FcTypeRange: \ + __v__.u.r = va_arg (va, const FcRange *); \ + break; \ + } \ + if (!FcPatternAdd (__p__, __o__, __v__, FcTrue)) \ + goto _FcPatternVapBuild_bail1; \ + } \ + result = __p__; \ + goto _FcPatternVapBuild_return; \ + \ +_FcPatternVapBuild_bail1: \ + if (!orig) \ + FcPatternDestroy (__p__); \ +_FcPatternVapBuild_bail0: \ + result = (void*)0; \ + \ +_FcPatternVapBuild_return: \ + ; \ +} + + +#define FcObjectSetVapBuild(__ret__, __first__, __va__) \ +{ \ + FcObjectSet *__os__; \ + const char *__ob__; \ + \ + __ret__ = 0; \ + __os__ = FcObjectSetCreate (); \ + if (!__os__) \ + goto _FcObjectSetVapBuild_bail0; \ + __ob__ = __first__; \ + while (__ob__) \ + { \ + if (!FcObjectSetAdd (__os__, __ob__)) \ + goto _FcObjectSetVapBuild_bail1; \ + __ob__ = va_arg (__va__, const char *); \ + } \ + __ret__ = __os__; \ + \ +_FcObjectSetVapBuild_bail1: \ + if (!__ret__ && __os__) \ + FcObjectSetDestroy (__os__); \ +_FcObjectSetVapBuild_bail0: \ + ; \ +} + +#ifndef FC_ATTRIBUTE_VISIBILITY_HIDDEN +#define FC_ATTRIBUTE_VISIBILITY_HIDDEN __attribute((visibility("hidden"))) +#endif + +#ifndef FC_ATTRIBUTE_VISIBILITY_EXPORT +#define FC_ATTRIBUTE_VISIBILITY_EXPORT __attribute((visibility("default"))) +#endif + +#endif /* _FCPRIVATE_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fontconfig.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fontconfig.h new file mode 100644 index 0000000..09292a3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fontconfig/fontconfig.h @@ -0,0 +1,1154 @@ +/* + * fontconfig/fontconfig/fontconfig.h + * + * Copyright © 2001 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of the author(s) not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. The authors make no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _FONTCONFIG_H_ +#define _FONTCONFIG_H_ + +#include +#include +#include +#include + +#if defined(__GNUC__) && (__GNUC__ >= 4) +#define FC_ATTRIBUTE_SENTINEL(x) __attribute__((__sentinel__(0))) +#else +#define FC_ATTRIBUTE_SENTINEL(x) +#endif + +#ifndef FcPublic +#define FcPublic +#endif + +typedef unsigned char FcChar8; +typedef unsigned short FcChar16; +typedef unsigned int FcChar32; +typedef int FcBool; + +/* + * Current Fontconfig version number. This same number + * must appear in the fontconfig configure.in file. Yes, + * it'a a pain to synchronize version numbers like this. + */ + +#define FC_MAJOR 2 +#define FC_MINOR 14 +#define FC_REVISION 1 + +#define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION)) + +/* + * Current font cache file format version + * This is appended to the cache files so that multiple + * versions of the library will peacefully coexist + * + * Change this value whenever the disk format for the cache file + * changes in any non-compatible way. Try to avoid such changes as + * it means multiple copies of the font information. + */ + +#define FC_CACHE_VERSION_NUMBER 8 +#define _FC_STRINGIFY_(s) #s +#define _FC_STRINGIFY(s) _FC_STRINGIFY_(s) +#define FC_CACHE_VERSION _FC_STRINGIFY(FC_CACHE_VERSION_NUMBER) + +#define FcFalse 0 +#define FcTrue 1 +#define FcDontCare 2 + +#define FC_FAMILY "family" /* String */ +#define FC_STYLE "style" /* String */ +#define FC_SLANT "slant" /* Int */ +#define FC_WEIGHT "weight" /* Int */ +#define FC_SIZE "size" /* Range (double) */ +#define FC_ASPECT "aspect" /* Double */ +#define FC_PIXEL_SIZE "pixelsize" /* Double */ +#define FC_SPACING "spacing" /* Int */ +#define FC_FOUNDRY "foundry" /* String */ +#define FC_ANTIALIAS "antialias" /* Bool (depends) */ +#define FC_HINTING "hinting" /* Bool (true) */ +#define FC_HINT_STYLE "hintstyle" /* Int */ +#define FC_VERTICAL_LAYOUT "verticallayout" /* Bool (false) */ +#define FC_AUTOHINT "autohint" /* Bool (false) */ +/* FC_GLOBAL_ADVANCE is deprecated. this is simply ignored on freetype 2.4.5 or later */ +#define FC_GLOBAL_ADVANCE "globaladvance" /* Bool (true) */ +#define FC_WIDTH "width" /* Int */ +#define FC_FILE "file" /* String */ +#define FC_INDEX "index" /* Int */ +#define FC_FT_FACE "ftface" /* FT_Face */ +#define FC_RASTERIZER "rasterizer" /* String (deprecated) */ +#define FC_OUTLINE "outline" /* Bool */ +#define FC_SCALABLE "scalable" /* Bool */ +#define FC_COLOR "color" /* Bool */ +#define FC_VARIABLE "variable" /* Bool */ +#define FC_SCALE "scale" /* double (deprecated) */ +#define FC_SYMBOL "symbol" /* Bool */ +#define FC_DPI "dpi" /* double */ +#define FC_RGBA "rgba" /* Int */ +#define FC_MINSPACE "minspace" /* Bool use minimum line spacing */ +#define FC_SOURCE "source" /* String (deprecated) */ +#define FC_CHARSET "charset" /* CharSet */ +#define FC_LANG "lang" /* LangSet Set of RFC 3066 langs */ +#define FC_FONTVERSION "fontversion" /* Int from 'head' table */ +#define FC_FULLNAME "fullname" /* String */ +#define FC_FAMILYLANG "familylang" /* String RFC 3066 langs */ +#define FC_STYLELANG "stylelang" /* String RFC 3066 langs */ +#define FC_FULLNAMELANG "fullnamelang" /* String RFC 3066 langs */ +#define FC_CAPABILITY "capability" /* String */ +#define FC_FONTFORMAT "fontformat" /* String */ +#define FC_EMBOLDEN "embolden" /* Bool - true if emboldening needed*/ +#define FC_EMBEDDED_BITMAP "embeddedbitmap" /* Bool - true to enable embedded bitmaps */ +#define FC_DECORATIVE "decorative" /* Bool - true if style is a decorative variant */ +#define FC_LCD_FILTER "lcdfilter" /* Int */ +#define FC_FONT_FEATURES "fontfeatures" /* String */ +#define FC_FONT_VARIATIONS "fontvariations" /* String */ +#define FC_NAMELANG "namelang" /* String RFC 3866 langs */ +#define FC_PRGNAME "prgname" /* String */ +#define FC_HASH "hash" /* String (deprecated) */ +#define FC_POSTSCRIPT_NAME "postscriptname" /* String */ +#define FC_FONT_HAS_HINT "fonthashint" /* Bool - true if font has hinting */ +#define FC_ORDER "order" /* Integer */ + +#define FC_CACHE_SUFFIX ".cache-" FC_CACHE_VERSION +#define FC_DIR_CACHE_FILE "fonts.cache-" FC_CACHE_VERSION +#define FC_USER_CACHE_FILE ".fonts.cache-" FC_CACHE_VERSION + +/* Adjust outline rasterizer */ +#define FC_CHARWIDTH "charwidth" /* Int */ +#define FC_CHAR_WIDTH FC_CHARWIDTH +#define FC_CHAR_HEIGHT "charheight"/* Int */ +#define FC_MATRIX "matrix" /* FcMatrix */ + +#define FC_WEIGHT_THIN 0 +#define FC_WEIGHT_EXTRALIGHT 40 +#define FC_WEIGHT_ULTRALIGHT FC_WEIGHT_EXTRALIGHT +#define FC_WEIGHT_LIGHT 50 +#define FC_WEIGHT_DEMILIGHT 55 +#define FC_WEIGHT_SEMILIGHT FC_WEIGHT_DEMILIGHT +#define FC_WEIGHT_BOOK 75 +#define FC_WEIGHT_REGULAR 80 +#define FC_WEIGHT_NORMAL FC_WEIGHT_REGULAR +#define FC_WEIGHT_MEDIUM 100 +#define FC_WEIGHT_DEMIBOLD 180 +#define FC_WEIGHT_SEMIBOLD FC_WEIGHT_DEMIBOLD +#define FC_WEIGHT_BOLD 200 +#define FC_WEIGHT_EXTRABOLD 205 +#define FC_WEIGHT_ULTRABOLD FC_WEIGHT_EXTRABOLD +#define FC_WEIGHT_BLACK 210 +#define FC_WEIGHT_HEAVY FC_WEIGHT_BLACK +#define FC_WEIGHT_EXTRABLACK 215 +#define FC_WEIGHT_ULTRABLACK FC_WEIGHT_EXTRABLACK + +#define FC_SLANT_ROMAN 0 +#define FC_SLANT_ITALIC 100 +#define FC_SLANT_OBLIQUE 110 + +#define FC_WIDTH_ULTRACONDENSED 50 +#define FC_WIDTH_EXTRACONDENSED 63 +#define FC_WIDTH_CONDENSED 75 +#define FC_WIDTH_SEMICONDENSED 87 +#define FC_WIDTH_NORMAL 100 +#define FC_WIDTH_SEMIEXPANDED 113 +#define FC_WIDTH_EXPANDED 125 +#define FC_WIDTH_EXTRAEXPANDED 150 +#define FC_WIDTH_ULTRAEXPANDED 200 + +#define FC_PROPORTIONAL 0 +#define FC_DUAL 90 +#define FC_MONO 100 +#define FC_CHARCELL 110 + +/* sub-pixel order */ +#define FC_RGBA_UNKNOWN 0 +#define FC_RGBA_RGB 1 +#define FC_RGBA_BGR 2 +#define FC_RGBA_VRGB 3 +#define FC_RGBA_VBGR 4 +#define FC_RGBA_NONE 5 + +/* hinting style */ +#define FC_HINT_NONE 0 +#define FC_HINT_SLIGHT 1 +#define FC_HINT_MEDIUM 2 +#define FC_HINT_FULL 3 + +/* LCD filter */ +#define FC_LCD_NONE 0 +#define FC_LCD_DEFAULT 1 +#define FC_LCD_LIGHT 2 +#define FC_LCD_LEGACY 3 + +typedef enum _FcType { + FcTypeUnknown = -1, + FcTypeVoid, + FcTypeInteger, + FcTypeDouble, + FcTypeString, + FcTypeBool, + FcTypeMatrix, + FcTypeCharSet, + FcTypeFTFace, + FcTypeLangSet, + FcTypeRange +} FcType; + +typedef struct _FcMatrix { + double xx, xy, yx, yy; +} FcMatrix; + +#define FcMatrixInit(m) ((m)->xx = (m)->yy = 1, \ + (m)->xy = (m)->yx = 0) + +/* + * A data structure to represent the available glyphs in a font. + * This is represented as a sparse boolean btree. + */ + +typedef struct _FcCharSet FcCharSet; + +typedef struct _FcObjectType { + char *object; + FcType type; +} FcObjectType; + +typedef struct _FcConstant { + const FcChar8 *name; + const char *object; + int value; +} FcConstant; + +typedef enum _FcResult { + FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId, + FcResultOutOfMemory +} FcResult; + +typedef enum _FcValueBinding { + FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame, + /* to make sure sizeof (FcValueBinding) == 4 even with -fshort-enums */ + FcValueBindingEnd = INT_MAX +} FcValueBinding; + +typedef struct _FcPattern FcPattern; + +typedef struct _FcPatternIter { + void *dummy1; + void *dummy2; +} FcPatternIter; + +typedef struct _FcLangSet FcLangSet; + +typedef struct _FcRange FcRange; + +typedef struct _FcValue { + FcType type; + union { + const FcChar8 *s; + int i; + FcBool b; + double d; + const FcMatrix *m; + const FcCharSet *c; + void *f; + const FcLangSet *l; + const FcRange *r; + } u; +} FcValue; + +typedef struct _FcFontSet { + int nfont; + int sfont; + FcPattern **fonts; +} FcFontSet; + +typedef struct _FcObjectSet { + int nobject; + int sobject; + const char **objects; +} FcObjectSet; + +typedef enum _FcMatchKind { + FcMatchPattern, FcMatchFont, FcMatchScan, + FcMatchKindEnd, + FcMatchKindBegin = FcMatchPattern +} FcMatchKind; + +typedef enum _FcLangResult { + FcLangEqual = 0, + FcLangDifferentCountry = 1, + FcLangDifferentTerritory = 1, + FcLangDifferentLang = 2 +} FcLangResult; + +typedef enum _FcSetName { + FcSetSystem = 0, + FcSetApplication = 1 +} FcSetName; + +typedef struct _FcConfigFileInfoIter { + void *dummy1; + void *dummy2; + void *dummy3; +} FcConfigFileInfoIter; + +typedef struct _FcAtomic FcAtomic; + +#if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */ +#define _FCFUNCPROTOBEGIN extern "C" { /* do not leave open across includes */ +#define _FCFUNCPROTOEND } +#else +#define _FCFUNCPROTOBEGIN +#define _FCFUNCPROTOEND +#endif + +typedef enum { FcEndianBig, FcEndianLittle } FcEndian; + +typedef struct _FcConfig FcConfig; + +typedef struct _FcGlobalCache FcFileCache; + +typedef struct _FcBlanks FcBlanks; + +typedef struct _FcStrList FcStrList; + +typedef struct _FcStrSet FcStrSet; + +typedef struct _FcCache FcCache; + +_FCFUNCPROTOBEGIN + +/* fcblanks.c */ +FcPublic FcBlanks * +FcBlanksCreate (void); + +FcPublic void +FcBlanksDestroy (FcBlanks *b); + +FcPublic FcBool +FcBlanksAdd (FcBlanks *b, FcChar32 ucs4); + +FcPublic FcBool +FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4); + +/* fccache.c */ + +FcPublic const FcChar8 * +FcCacheDir(const FcCache *c); + +FcPublic FcFontSet * +FcCacheCopySet(const FcCache *c); + +FcPublic const FcChar8 * +FcCacheSubdir (const FcCache *c, int i); + +FcPublic int +FcCacheNumSubdir (const FcCache *c); + +FcPublic int +FcCacheNumFont (const FcCache *c); + +FcPublic FcBool +FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config); + +FcPublic FcBool +FcDirCacheValid (const FcChar8 *cache_file); + +FcPublic FcBool +FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose); + +FcPublic void +FcCacheCreateTagFile (FcConfig *config); + +FcPublic FcBool +FcDirCacheCreateUUID (FcChar8 *dir, + FcBool force, + FcConfig *config); + +FcPublic FcBool +FcDirCacheDeleteUUID (const FcChar8 *dir, + FcConfig *config); + +/* fccfg.c */ +FcPublic FcChar8 * +FcConfigHome (void); + +FcPublic FcBool +FcConfigEnableHome (FcBool enable); + +FcPublic FcChar8 * +FcConfigGetFilename (FcConfig *config, + const FcChar8 *url); + +FcPublic FcChar8 * +FcConfigFilename (const FcChar8 *url); + +FcPublic FcConfig * +FcConfigCreate (void); + +FcPublic FcConfig * +FcConfigReference (FcConfig *config); + +FcPublic void +FcConfigDestroy (FcConfig *config); + +FcPublic FcBool +FcConfigSetCurrent (FcConfig *config); + +FcPublic FcConfig * +FcConfigGetCurrent (void); + +FcPublic FcBool +FcConfigUptoDate (FcConfig *config); + +FcPublic FcBool +FcConfigBuildFonts (FcConfig *config); + +FcPublic FcStrList * +FcConfigGetFontDirs (FcConfig *config); + +FcPublic FcStrList * +FcConfigGetConfigDirs (FcConfig *config); + +FcPublic FcStrList * +FcConfigGetConfigFiles (FcConfig *config); + +FcPublic FcChar8 * +FcConfigGetCache (FcConfig *config); + +FcPublic FcBlanks * +FcConfigGetBlanks (FcConfig *config); + +FcPublic FcStrList * +FcConfigGetCacheDirs (FcConfig *config); + +FcPublic int +FcConfigGetRescanInterval (FcConfig *config); + +FcPublic FcBool +FcConfigSetRescanInterval (FcConfig *config, int rescanInterval); + +FcPublic FcFontSet * +FcConfigGetFonts (FcConfig *config, + FcSetName set); + +FcPublic FcBool +FcConfigAppFontAddFile (FcConfig *config, + const FcChar8 *file); + +FcPublic FcBool +FcConfigAppFontAddDir (FcConfig *config, + const FcChar8 *dir); + +FcPublic void +FcConfigAppFontClear (FcConfig *config); + +FcPublic FcBool +FcConfigSubstituteWithPat (FcConfig *config, + FcPattern *p, + FcPattern *p_pat, + FcMatchKind kind); + +FcPublic FcBool +FcConfigSubstitute (FcConfig *config, + FcPattern *p, + FcMatchKind kind); + +FcPublic const FcChar8 * +FcConfigGetSysRoot (const FcConfig *config); + +FcPublic void +FcConfigSetSysRoot (FcConfig *config, + const FcChar8 *sysroot); + +FcPublic void +FcConfigFileInfoIterInit (FcConfig *config, + FcConfigFileInfoIter *iter); + +FcPublic FcBool +FcConfigFileInfoIterNext (FcConfig *config, + FcConfigFileInfoIter *iter); + +FcPublic FcBool +FcConfigFileInfoIterGet (FcConfig *config, + FcConfigFileInfoIter *iter, + FcChar8 **name, + FcChar8 **description, + FcBool *enabled); + +/* fccharset.c */ +FcPublic FcCharSet* +FcCharSetCreate (void); + +/* deprecated alias for FcCharSetCreate */ +FcPublic FcCharSet * +FcCharSetNew (void); + +FcPublic void +FcCharSetDestroy (FcCharSet *fcs); + +FcPublic FcBool +FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4); + +FcPublic FcBool +FcCharSetDelChar (FcCharSet *fcs, FcChar32 ucs4); + +FcPublic FcCharSet* +FcCharSetCopy (FcCharSet *src); + +FcPublic FcBool +FcCharSetEqual (const FcCharSet *a, const FcCharSet *b); + +FcPublic FcCharSet* +FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b); + +FcPublic FcCharSet* +FcCharSetUnion (const FcCharSet *a, const FcCharSet *b); + +FcPublic FcCharSet* +FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b); + +FcPublic FcBool +FcCharSetMerge (FcCharSet *a, const FcCharSet *b, FcBool *changed); + +FcPublic FcBool +FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4); + +FcPublic FcChar32 +FcCharSetCount (const FcCharSet *a); + +FcPublic FcChar32 +FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b); + +FcPublic FcChar32 +FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b); + +FcPublic FcBool +FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b); + +#define FC_CHARSET_MAP_SIZE (256/32) +#define FC_CHARSET_DONE ((FcChar32) -1) + +FcPublic FcChar32 +FcCharSetFirstPage (const FcCharSet *a, + FcChar32 map[FC_CHARSET_MAP_SIZE], + FcChar32 *next); + +FcPublic FcChar32 +FcCharSetNextPage (const FcCharSet *a, + FcChar32 map[FC_CHARSET_MAP_SIZE], + FcChar32 *next); + +/* + * old coverage API, rather hard to use correctly + */ + +FcPublic FcChar32 +FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result); + +/* fcdbg.c */ +FcPublic void +FcValuePrint (const FcValue v); + +FcPublic void +FcPatternPrint (const FcPattern *p); + +FcPublic void +FcFontSetPrint (const FcFontSet *s); + +/* fcdefault.c */ +FcPublic FcStrSet * +FcGetDefaultLangs (void); + +FcPublic void +FcDefaultSubstitute (FcPattern *pattern); + +/* fcdir.c */ +FcPublic FcBool +FcFileIsDir (const FcChar8 *file); + +FcPublic FcBool +FcFileScan (FcFontSet *set, + FcStrSet *dirs, + FcFileCache *cache, + FcBlanks *blanks, + const FcChar8 *file, + FcBool force); + +FcPublic FcBool +FcDirScan (FcFontSet *set, + FcStrSet *dirs, + FcFileCache *cache, + FcBlanks *blanks, + const FcChar8 *dir, + FcBool force); + +FcPublic FcBool +FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir); + +FcPublic FcCache * +FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file); + +FcPublic FcCache * +FcDirCacheRescan (const FcChar8 *dir, FcConfig *config); + +FcPublic FcCache * +FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config); + +FcPublic FcCache * +FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat); + +FcPublic void +FcDirCacheUnload (FcCache *cache); + +/* fcfreetype.c */ +FcPublic FcPattern * +FcFreeTypeQuery (const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count); + +FcPublic unsigned int +FcFreeTypeQueryAll(const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count, FcFontSet *set); + +/* fcfs.c */ + +FcPublic FcFontSet * +FcFontSetCreate (void); + +FcPublic void +FcFontSetDestroy (FcFontSet *s); + +FcPublic FcBool +FcFontSetAdd (FcFontSet *s, FcPattern *font); + +/* fcinit.c */ +FcPublic FcConfig * +FcInitLoadConfig (void); + +FcPublic FcConfig * +FcInitLoadConfigAndFonts (void); + +FcPublic FcBool +FcInit (void); + +FcPublic void +FcFini (void); + +FcPublic int +FcGetVersion (void); + +FcPublic FcBool +FcInitReinitialize (void); + +FcPublic FcBool +FcInitBringUptoDate (void); + +/* fclang.c */ +FcPublic FcStrSet * +FcGetLangs (void); + +FcPublic FcChar8 * +FcLangNormalize (const FcChar8 *lang); + +FcPublic const FcCharSet * +FcLangGetCharSet (const FcChar8 *lang); + +FcPublic FcLangSet* +FcLangSetCreate (void); + +FcPublic void +FcLangSetDestroy (FcLangSet *ls); + +FcPublic FcLangSet* +FcLangSetCopy (const FcLangSet *ls); + +FcPublic FcBool +FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang); + +FcPublic FcBool +FcLangSetDel (FcLangSet *ls, const FcChar8 *lang); + +FcPublic FcLangResult +FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang); + +FcPublic FcLangResult +FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb); + +FcPublic FcBool +FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb); + +FcPublic FcBool +FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb); + +FcPublic FcChar32 +FcLangSetHash (const FcLangSet *ls); + +FcPublic FcStrSet * +FcLangSetGetLangs (const FcLangSet *ls); + +FcPublic FcLangSet * +FcLangSetUnion (const FcLangSet *a, const FcLangSet *b); + +FcPublic FcLangSet * +FcLangSetSubtract (const FcLangSet *a, const FcLangSet *b); + +/* fclist.c */ +FcPublic FcObjectSet * +FcObjectSetCreate (void); + +FcPublic FcBool +FcObjectSetAdd (FcObjectSet *os, const char *object); + +FcPublic void +FcObjectSetDestroy (FcObjectSet *os); + +FcPublic FcObjectSet * +FcObjectSetVaBuild (const char *first, va_list va); + +FcPublic FcObjectSet * +FcObjectSetBuild (const char *first, ...) FC_ATTRIBUTE_SENTINEL(0); + +FcPublic FcFontSet * +FcFontSetList (FcConfig *config, + FcFontSet **sets, + int nsets, + FcPattern *p, + FcObjectSet *os); + +FcPublic FcFontSet * +FcFontList (FcConfig *config, + FcPattern *p, + FcObjectSet *os); + +/* fcatomic.c */ + +FcPublic FcAtomic * +FcAtomicCreate (const FcChar8 *file); + +FcPublic FcBool +FcAtomicLock (FcAtomic *atomic); + +FcPublic FcChar8 * +FcAtomicNewFile (FcAtomic *atomic); + +FcPublic FcChar8 * +FcAtomicOrigFile (FcAtomic *atomic); + +FcPublic FcBool +FcAtomicReplaceOrig (FcAtomic *atomic); + +FcPublic void +FcAtomicDeleteNew (FcAtomic *atomic); + +FcPublic void +FcAtomicUnlock (FcAtomic *atomic); + +FcPublic void +FcAtomicDestroy (FcAtomic *atomic); + +/* fcmatch.c */ +FcPublic FcPattern * +FcFontSetMatch (FcConfig *config, + FcFontSet **sets, + int nsets, + FcPattern *p, + FcResult *result); + +FcPublic FcPattern * +FcFontMatch (FcConfig *config, + FcPattern *p, + FcResult *result); + +FcPublic FcPattern * +FcFontRenderPrepare (FcConfig *config, + FcPattern *pat, + FcPattern *font); + +FcPublic FcFontSet * +FcFontSetSort (FcConfig *config, + FcFontSet **sets, + int nsets, + FcPattern *p, + FcBool trim, + FcCharSet **csp, + FcResult *result); + +FcPublic FcFontSet * +FcFontSort (FcConfig *config, + FcPattern *p, + FcBool trim, + FcCharSet **csp, + FcResult *result); + +FcPublic void +FcFontSetSortDestroy (FcFontSet *fs); + +/* fcmatrix.c */ +FcPublic FcMatrix * +FcMatrixCopy (const FcMatrix *mat); + +FcPublic FcBool +FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2); + +FcPublic void +FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b); + +FcPublic void +FcMatrixRotate (FcMatrix *m, double c, double s); + +FcPublic void +FcMatrixScale (FcMatrix *m, double sx, double sy); + +FcPublic void +FcMatrixShear (FcMatrix *m, double sh, double sv); + +/* fcname.c */ + +/* Deprecated. Does nothing. Returns FcFalse. */ +FcPublic FcBool +FcNameRegisterObjectTypes (const FcObjectType *types, int ntype); + +/* Deprecated. Does nothing. Returns FcFalse. */ +FcPublic FcBool +FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype); + +FcPublic const FcObjectType * +FcNameGetObjectType (const char *object); + +/* Deprecated. Does nothing. Returns FcFalse. */ +FcPublic FcBool +FcNameRegisterConstants (const FcConstant *consts, int nconsts); + +/* Deprecated. Does nothing. Returns FcFalse. */ +FcPublic FcBool +FcNameUnregisterConstants (const FcConstant *consts, int nconsts); + +FcPublic const FcConstant * +FcNameGetConstant (const FcChar8 *string); + +FcPublic FcBool +FcNameConstant (const FcChar8 *string, int *result); + +FcPublic FcPattern * +FcNameParse (const FcChar8 *name); + +FcPublic FcChar8 * +FcNameUnparse (FcPattern *pat); + +/* fcpat.c */ +FcPublic FcPattern * +FcPatternCreate (void); + +FcPublic FcPattern * +FcPatternDuplicate (const FcPattern *p); + +FcPublic void +FcPatternReference (FcPattern *p); + +FcPublic FcPattern * +FcPatternFilter (FcPattern *p, const FcObjectSet *os); + +FcPublic void +FcValueDestroy (FcValue v); + +FcPublic FcBool +FcValueEqual (FcValue va, FcValue vb); + +FcPublic FcValue +FcValueSave (FcValue v); + +FcPublic void +FcPatternDestroy (FcPattern *p); + +int +FcPatternObjectCount (const FcPattern *pat); + +FcPublic FcBool +FcPatternEqual (const FcPattern *pa, const FcPattern *pb); + +FcPublic FcBool +FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os); + +FcPublic FcChar32 +FcPatternHash (const FcPattern *p); + +FcPublic FcBool +FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append); + +FcPublic FcBool +FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append); + +FcPublic FcResult +FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v); + +FcPublic FcResult +FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b); + +FcPublic FcBool +FcPatternDel (FcPattern *p, const char *object); + +FcPublic FcBool +FcPatternRemove (FcPattern *p, const char *object, int id); + +FcPublic FcBool +FcPatternAddInteger (FcPattern *p, const char *object, int i); + +FcPublic FcBool +FcPatternAddDouble (FcPattern *p, const char *object, double d); + +FcPublic FcBool +FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s); + +FcPublic FcBool +FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s); + +FcPublic FcBool +FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c); + +FcPublic FcBool +FcPatternAddBool (FcPattern *p, const char *object, FcBool b); + +FcPublic FcBool +FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls); + +FcPublic FcBool +FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r); + +FcPublic FcResult +FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i); + +FcPublic FcResult +FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d); + +FcPublic FcResult +FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s); + +FcPublic FcResult +FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s); + +FcPublic FcResult +FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c); + +FcPublic FcResult +FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b); + +FcPublic FcResult +FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls); + +FcPublic FcResult +FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r); + +FcPublic FcPattern * +FcPatternVaBuild (FcPattern *p, va_list va); + +FcPublic FcPattern * +FcPatternBuild (FcPattern *p, ...) FC_ATTRIBUTE_SENTINEL(0); + +FcPublic FcChar8 * +FcPatternFormat (FcPattern *pat, const FcChar8 *format); + +/* fcrange.c */ +FcPublic FcRange * +FcRangeCreateDouble (double begin, double end); + +FcPublic FcRange * +FcRangeCreateInteger (FcChar32 begin, FcChar32 end); + +FcPublic void +FcRangeDestroy (FcRange *range); + +FcPublic FcRange * +FcRangeCopy (const FcRange *r); + +FcPublic FcBool +FcRangeGetDouble(const FcRange *range, double *begin, double *end); + +FcPublic void +FcPatternIterStart (const FcPattern *pat, FcPatternIter *iter); + +FcPublic FcBool +FcPatternIterNext (const FcPattern *pat, FcPatternIter *iter); + +FcPublic FcBool +FcPatternIterEqual (const FcPattern *p1, FcPatternIter *i1, + const FcPattern *p2, FcPatternIter *i2); + +FcPublic FcBool +FcPatternFindIter (const FcPattern *pat, FcPatternIter *iter, const char *object); + +FcPublic FcBool +FcPatternIterIsValid (const FcPattern *pat, FcPatternIter *iter); + +FcPublic const char * +FcPatternIterGetObject (const FcPattern *pat, FcPatternIter *iter); + +FcPublic int +FcPatternIterValueCount (const FcPattern *pat, FcPatternIter *iter); + +FcPublic FcResult +FcPatternIterGetValue (const FcPattern *pat, FcPatternIter *iter, int id, FcValue *v, FcValueBinding *b); + +/* fcweight.c */ + +FcPublic int +FcWeightFromOpenType (int ot_weight); + +FcPublic double +FcWeightFromOpenTypeDouble (double ot_weight); + +FcPublic int +FcWeightToOpenType (int fc_weight); + +FcPublic double +FcWeightToOpenTypeDouble (double fc_weight); + +/* fcstr.c */ + +FcPublic FcChar8 * +FcStrCopy (const FcChar8 *s); + +FcPublic FcChar8 * +FcStrCopyFilename (const FcChar8 *s); + +FcPublic FcChar8 * +FcStrPlus (const FcChar8 *s1, const FcChar8 *s2); + +FcPublic void +FcStrFree (FcChar8 *s); + +/* These are ASCII only, suitable only for pattern element names */ +#define FcIsUpper(c) ((0101 <= (c) && (c) <= 0132)) +#define FcIsLower(c) ((0141 <= (c) && (c) <= 0172)) +#define FcToLower(c) (FcIsUpper(c) ? (c) - 0101 + 0141 : (c)) + +FcPublic FcChar8 * +FcStrDowncase (const FcChar8 *s); + +FcPublic int +FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2); + +FcPublic int +FcStrCmp (const FcChar8 *s1, const FcChar8 *s2); + +FcPublic const FcChar8 * +FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2); + +FcPublic const FcChar8 * +FcStrStr (const FcChar8 *s1, const FcChar8 *s2); + +FcPublic int +FcUtf8ToUcs4 (const FcChar8 *src_orig, + FcChar32 *dst, + int len); + +FcPublic FcBool +FcUtf8Len (const FcChar8 *string, + int len, + int *nchar, + int *wchar); + +#define FC_UTF8_MAX_LEN 6 + +FcPublic int +FcUcs4ToUtf8 (FcChar32 ucs4, + FcChar8 dest[FC_UTF8_MAX_LEN]); + +FcPublic int +FcUtf16ToUcs4 (const FcChar8 *src_orig, + FcEndian endian, + FcChar32 *dst, + int len); /* in bytes */ + +FcPublic FcBool +FcUtf16Len (const FcChar8 *string, + FcEndian endian, + int len, /* in bytes */ + int *nchar, + int *wchar); + +FcPublic FcChar8 * +FcStrBuildFilename (const FcChar8 *path, + ...); + +FcPublic FcChar8 * +FcStrDirname (const FcChar8 *file); + +FcPublic FcChar8 * +FcStrBasename (const FcChar8 *file); + +FcPublic FcStrSet * +FcStrSetCreate (void); + +FcPublic FcBool +FcStrSetMember (FcStrSet *set, const FcChar8 *s); + +FcPublic FcBool +FcStrSetEqual (FcStrSet *sa, FcStrSet *sb); + +FcPublic FcBool +FcStrSetAdd (FcStrSet *set, const FcChar8 *s); + +FcPublic FcBool +FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s); + +FcPublic FcBool +FcStrSetDel (FcStrSet *set, const FcChar8 *s); + +FcPublic void +FcStrSetDestroy (FcStrSet *set); + +FcPublic FcStrList * +FcStrListCreate (FcStrSet *set); + +FcPublic void +FcStrListFirst (FcStrList *list); + +FcPublic FcChar8 * +FcStrListNext (FcStrList *list); + +FcPublic void +FcStrListDone (FcStrList *list); + +/* fcxml.c */ +FcPublic FcBool +FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain); + +FcPublic FcBool +FcConfigParseAndLoadFromMemory (FcConfig *config, + const FcChar8 *buffer, + FcBool complain); + +_FCFUNCPROTOEND + +#undef FC_ATTRIBUTE_SENTINEL + + +#ifndef _FCINT_H_ + +/* + * Deprecated functions are placed here to help users fix their code without + * digging through documentation + */ + +#define FcConfigGetRescanInverval FcConfigGetRescanInverval_REPLACE_BY_FcConfigGetRescanInterval +#define FcConfigSetRescanInverval FcConfigSetRescanInverval_REPLACE_BY_FcConfigSetRescanInterval + +#endif + +#endif /* _FONTCONFIG_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftconfig.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftconfig.h new file mode 100644 index 0000000..c696e90 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftconfig.h @@ -0,0 +1,51 @@ +/**************************************************************************** + * + * ftconfig.h + * + * ANSI-specific configuration file (specification only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This header file contains a number of macro definitions that are used by + * the rest of the engine. Most of the macros here are automatically + * determined at compile time, and you should not need to change it to port + * FreeType, except to compile the library with a non-ANSI compiler. + * + * Note however that if some specific modifications are needed, we advise + * you to place a modified copy in your build directory. + * + * The build directory is usually `builds/`, and contains + * system-specific files that are always included first when building the + * library. + * + * This ANSI version should stay in `include/config/`. + * + */ + +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ + +#include +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + +#include +#include +#include + +#endif /* FTCONFIG_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftheader.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftheader.h new file mode 100644 index 0000000..a8c6833 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftheader.h @@ -0,0 +1,836 @@ +/**************************************************************************** + * + * ftheader.h + * + * Build macros of the FreeType 2 library. + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + +#ifndef FTHEADER_H_ +#define FTHEADER_H_ + + + /*@***********************************************************************/ + /* */ + /* */ + /* FT_BEGIN_HEADER */ + /* */ + /* */ + /* This macro is used in association with @FT_END_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }` block when included from a */ + /* C++ compiler. */ + /* */ +#ifndef FT_BEGIN_HEADER +# ifdef __cplusplus +# define FT_BEGIN_HEADER extern "C" { +# else +# define FT_BEGIN_HEADER /* nothing */ +# endif +#endif + + + /*@***********************************************************************/ + /* */ + /* */ + /* FT_END_HEADER */ + /* */ + /* */ + /* This macro is used in association with @FT_BEGIN_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }` block when included from a */ + /* C++ compiler. */ + /* */ +#ifndef FT_END_HEADER +# ifdef __cplusplus +# define FT_END_HEADER } +# else +# define FT_END_HEADER /* nothing */ +# endif +#endif + + + /************************************************************************** + * + * Aliases for the FreeType 2 public and configuration files. + * + */ + + /************************************************************************** + * + * @section: + * header_file_macros + * + * @title: + * Header File Macros + * + * @abstract: + * Macro definitions used to `#include` specific header files. + * + * @description: + * In addition to the normal scheme of including header files like + * + * ``` + * #include + * #include + * #include + * ``` + * + * it is possible to used named macros instead. They can be used + * directly in `#include` statements as in + * + * ``` + * #include FT_FREETYPE_H + * #include FT_MULTIPLE_MASTERS_H + * #include FT_GLYPH_H + * ``` + * + * These macros were introduced to overcome the infamous 8.3~naming rule + * required by DOS (and `FT_MULTIPLE_MASTERS_H` is a lot more meaningful + * than `ftmm.h`). + * + */ + + + /* configuration files */ + + /************************************************************************** + * + * @macro: + * FT_CONFIG_CONFIG_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * FreeType~2 configuration data. + * + */ +#ifndef FT_CONFIG_CONFIG_H +#define FT_CONFIG_CONFIG_H +#endif + + + /************************************************************************** + * + * @macro: + * FT_CONFIG_STANDARD_LIBRARY_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * FreeType~2 interface to the standard C library functions. + * + */ +#ifndef FT_CONFIG_STANDARD_LIBRARY_H +#define FT_CONFIG_STANDARD_LIBRARY_H +#endif + + + /************************************************************************** + * + * @macro: + * FT_CONFIG_OPTIONS_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * FreeType~2 project-specific configuration options. + * + */ +#ifndef FT_CONFIG_OPTIONS_H +#define FT_CONFIG_OPTIONS_H +#endif + + + /************************************************************************** + * + * @macro: + * FT_CONFIG_MODULES_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * list of FreeType~2 modules that are statically linked to new library + * instances in @FT_Init_FreeType. + * + */ +#ifndef FT_CONFIG_MODULES_H +#define FT_CONFIG_MODULES_H +#endif + + /* */ + + /* public headers */ + + /************************************************************************** + * + * @macro: + * FT_FREETYPE_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * base FreeType~2 API. + * + */ +#define FT_FREETYPE_H + + + /************************************************************************** + * + * @macro: + * FT_ERRORS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * list of FreeType~2 error codes (and messages). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_ERRORS_H + + + /************************************************************************** + * + * @macro: + * FT_MODULE_ERRORS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * list of FreeType~2 module error offsets (and messages). + * + */ +#define FT_MODULE_ERRORS_H + + + /************************************************************************** + * + * @macro: + * FT_SYSTEM_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 interface to low-level operations (i.e., memory management + * and stream i/o). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_SYSTEM_H + + + /************************************************************************** + * + * @macro: + * FT_IMAGE_H + * + * @description: + * A macro used in `#include` statements to name the file containing type + * definitions related to glyph images (i.e., bitmaps, outlines, + * scan-converter parameters). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_IMAGE_H + + + /************************************************************************** + * + * @macro: + * FT_TYPES_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * basic data types defined by FreeType~2. + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_TYPES_H + + + /************************************************************************** + * + * @macro: + * FT_LIST_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * list management API of FreeType~2. + * + * (Most applications will never need to include this file.) + * + */ +#define FT_LIST_H + + + /************************************************************************** + * + * @macro: + * FT_OUTLINE_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * scalable outline management API of FreeType~2. + * + */ +#define FT_OUTLINE_H + + + /************************************************************************** + * + * @macro: + * FT_SIZES_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * API which manages multiple @FT_Size objects per face. + * + */ +#define FT_SIZES_H + + + /************************************************************************** + * + * @macro: + * FT_MODULE_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * module management API of FreeType~2. + * + */ +#define FT_MODULE_H + + + /************************************************************************** + * + * @macro: + * FT_RENDER_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * renderer module management API of FreeType~2. + * + */ +#define FT_RENDER_H + + + /************************************************************************** + * + * @macro: + * FT_DRIVER_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * structures and macros related to the driver modules. + * + */ +#define FT_DRIVER_H + + + /************************************************************************** + * + * @macro: + * FT_AUTOHINTER_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * structures and macros related to the auto-hinting module. + * + * Deprecated since version~2.9; use @FT_DRIVER_H instead. + * + */ +#define FT_AUTOHINTER_H FT_DRIVER_H + + + /************************************************************************** + * + * @macro: + * FT_CFF_DRIVER_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * structures and macros related to the CFF driver module. + * + * Deprecated since version~2.9; use @FT_DRIVER_H instead. + * + */ +#define FT_CFF_DRIVER_H FT_DRIVER_H + + + /************************************************************************** + * + * @macro: + * FT_TRUETYPE_DRIVER_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * structures and macros related to the TrueType driver module. + * + * Deprecated since version~2.9; use @FT_DRIVER_H instead. + * + */ +#define FT_TRUETYPE_DRIVER_H FT_DRIVER_H + + + /************************************************************************** + * + * @macro: + * FT_PCF_DRIVER_H + * + * @description: + * A macro used in `#include` statements to name the file containing + * structures and macros related to the PCF driver module. + * + * Deprecated since version~2.9; use @FT_DRIVER_H instead. + * + */ +#define FT_PCF_DRIVER_H FT_DRIVER_H + + + /************************************************************************** + * + * @macro: + * FT_TYPE1_TABLES_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * types and API specific to the Type~1 format. + * + */ +#define FT_TYPE1_TABLES_H + + + /************************************************************************** + * + * @macro: + * FT_TRUETYPE_IDS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * enumeration values which identify name strings, languages, encodings, + * etc. This file really contains a _large_ set of constant macro + * definitions, taken from the TrueType and OpenType specifications. + * + */ +#define FT_TRUETYPE_IDS_H + + + /************************************************************************** + * + * @macro: + * FT_TRUETYPE_TABLES_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * types and API specific to the TrueType (as well as OpenType) format. + * + */ +#define FT_TRUETYPE_TABLES_H + + + /************************************************************************** + * + * @macro: + * FT_TRUETYPE_TAGS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * definitions of TrueType four-byte 'tags' which identify blocks in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_TRUETYPE_TAGS_H + + + /************************************************************************** + * + * @macro: + * FT_BDF_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * definitions of an API which accesses BDF-specific strings from a face. + * + */ +#define FT_BDF_H + + + /************************************************************************** + * + * @macro: + * FT_CID_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * definitions of an API which access CID font information from a face. + * + */ +#define FT_CID_H + + + /************************************************************************** + * + * @macro: + * FT_GZIP_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * definitions of an API which supports gzip-compressed files. + * + */ +#define FT_GZIP_H + + + /************************************************************************** + * + * @macro: + * FT_LZW_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * definitions of an API which supports LZW-compressed files. + * + */ +#define FT_LZW_H + + + /************************************************************************** + * + * @macro: + * FT_BZIP2_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * definitions of an API which supports bzip2-compressed files. + * + */ +#define FT_BZIP2_H + + + /************************************************************************** + * + * @macro: + * FT_WINFONTS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * definitions of an API which supports Windows FNT files. + * + */ +#define FT_WINFONTS_H + + + /************************************************************************** + * + * @macro: + * FT_GLYPH_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * API of the optional glyph management component. + * + */ +#define FT_GLYPH_H + + + /************************************************************************** + * + * @macro: + * FT_BITMAP_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * API of the optional bitmap conversion component. + * + */ +#define FT_BITMAP_H + + + /************************************************************************** + * + * @macro: + * FT_BBOX_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * API of the optional exact bounding box computation routines. + * + */ +#define FT_BBOX_H + + + /************************************************************************** + * + * @macro: + * FT_CACHE_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * API of the optional FreeType~2 cache sub-system. + * + */ +#define FT_CACHE_H + + + /************************************************************************** + * + * @macro: + * FT_MAC_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * Macintosh-specific FreeType~2 API. The latter is used to access fonts + * embedded in resource forks. + * + * This header file must be explicitly included by client applications + * compiled on the Mac (note that the base API still works though). + * + */ +#define FT_MAC_H + + + /************************************************************************** + * + * @macro: + * FT_MULTIPLE_MASTERS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * optional multiple-masters management API of FreeType~2. + * + */ +#define FT_MULTIPLE_MASTERS_H + + + /************************************************************************** + * + * @macro: + * FT_SFNT_NAMES_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * optional FreeType~2 API which accesses embedded 'name' strings in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_SFNT_NAMES_H + + + /************************************************************************** + * + * @macro: + * FT_OPENTYPE_VALIDATE_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * optional FreeType~2 API which validates OpenType tables ('BASE', + * 'GDEF', 'GPOS', 'GSUB', 'JSTF'). + * + */ +#define FT_OPENTYPE_VALIDATE_H + + + /************************************************************************** + * + * @macro: + * FT_GX_VALIDATE_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * optional FreeType~2 API which validates TrueTypeGX/AAT tables ('feat', + * 'mort', 'morx', 'bsln', 'just', 'kern', 'opbd', 'trak', 'prop'). + * + */ +#define FT_GX_VALIDATE_H + + + /************************************************************************** + * + * @macro: + * FT_PFR_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which accesses PFR-specific data. + * + */ +#define FT_PFR_H + + + /************************************************************************** + * + * @macro: + * FT_STROKER_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which provides functions to stroke outline paths. + */ +#define FT_STROKER_H + + + /************************************************************************** + * + * @macro: + * FT_SYNTHESIS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which performs artificial obliquing and emboldening. + */ +#define FT_SYNTHESIS_H + + + /************************************************************************** + * + * @macro: + * FT_FONT_FORMATS_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which provides functions specific to font formats. + */ +#define FT_FONT_FORMATS_H + + /* deprecated */ +#define FT_XFREE86_H FT_FONT_FORMATS_H + + + /************************************************************************** + * + * @macro: + * FT_TRIGONOMETRY_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which performs trigonometric computations (e.g., + * cosines and arc tangents). + */ +#define FT_TRIGONOMETRY_H + + + /************************************************************************** + * + * @macro: + * FT_LCD_FILTER_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_LCD_FILTER_H + + + /************************************************************************** + * + * @macro: + * FT_INCREMENTAL_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which performs incremental glyph loading. + */ +#define FT_INCREMENTAL_H + + + /************************************************************************** + * + * @macro: + * FT_GASP_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which returns entries from the TrueType GASP table. + */ +#define FT_GASP_H + + + /************************************************************************** + * + * @macro: + * FT_ADVANCES_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which returns individual and ranged glyph advances. + */ +#define FT_ADVANCES_H + + + /************************************************************************** + * + * @macro: + * FT_COLOR_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which handles the OpenType 'CPAL' table. + */ +#define FT_COLOR_H + + + /************************************************************************** + * + * @macro: + * FT_OTSVG_H + * + * @description: + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which handles the OpenType 'SVG~' glyphs. + */ +#define FT_OTSVG_H + + + /* */ + + /* These header files don't need to be included by the user. */ +#define FT_ERROR_DEFINITIONS_H +#define FT_PARAMETER_TAGS_H + + /* Deprecated macros. */ +#define FT_UNPATENTED_HINTING_H +#define FT_TRUETYPE_UNPATENTED_H + + /* `FT_CACHE_H` is the only header file needed for the cache subsystem. */ +#define FT_CACHE_IMAGE_H FT_CACHE_H +#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H +#define FT_CACHE_CHARMAP_H FT_CACHE_H + + /* The internals of the cache sub-system are no longer exposed. We */ + /* default to `FT_CACHE_H` at the moment just in case, but we know */ + /* of no rogue client that uses them. */ + /* */ +#define FT_CACHE_MANAGER_H FT_CACHE_H +#define FT_CACHE_INTERNAL_MRU_H FT_CACHE_H +#define FT_CACHE_INTERNAL_MANAGER_H FT_CACHE_H +#define FT_CACHE_INTERNAL_CACHE_H FT_CACHE_H +#define FT_CACHE_INTERNAL_GLYPH_H FT_CACHE_H +#define FT_CACHE_INTERNAL_IMAGE_H FT_CACHE_H +#define FT_CACHE_INTERNAL_SBITS_H FT_CACHE_H + +/* TODO(david): Move this section below to a different header */ +#ifdef FT2_BUILD_LIBRARY +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + + /* We disable the warning `conditional expression is constant' here */ + /* in order to compile cleanly with the maximum level of warnings. */ + /* In particular, the warning complains about stuff like `while(0)' */ + /* which is very useful in macro definitions. There is no benefit */ + /* in having it enabled. */ +#pragma warning( disable : 4127 ) + +#endif /* _MSC_VER */ +#endif /* FT2_BUILD_LIBRARY */ + +#endif /* FTHEADER_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftmodule.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftmodule.h new file mode 100644 index 0000000..6bd4f9a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftmodule.h @@ -0,0 +1,20 @@ +/* This is a generated file. */ +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_svg_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, None_renderer_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +/* EOF */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftoption.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftoption.h new file mode 100644 index 0000000..209a427 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftoption.h @@ -0,0 +1,1029 @@ +/**************************************************************************** + * + * ftoption.h + * + * User-selectable configuration macros (specification only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTOPTION_H_ +#define FTOPTION_H_ + + +#include + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * USER-SELECTABLE CONFIGURATION MACROS + * + * This file contains the default configuration macro definitions for a + * standard build of the FreeType library. There are three ways to use + * this file to build project-specific versions of the library: + * + * - You can modify this file by hand, but this is not recommended in + * cases where you would like to build several versions of the library + * from a single source directory. + * + * - You can put a copy of this file in your build directory, more + * precisely in `$BUILD/freetype/config/ftoption.h`, where `$BUILD` is + * the name of a directory that is included _before_ the FreeType include + * path during compilation. + * + * The default FreeType Makefiles use the build directory + * `builds/` by default, but you can easily change that for your + * own projects. + * + * - Copy the file to `$BUILD/ft2build.h` and modify it + * slightly to pre-define the macro `FT_CONFIG_OPTIONS_H` used to locate + * this file during the build. For example, + * + * ``` + * #define FT_CONFIG_OPTIONS_H + * #include + * ``` + * + * will use `$BUILD/myftoptions.h` instead of this file for macro + * definitions. + * + * Note also that you can similarly pre-define the macro + * `FT_CONFIG_MODULES_H` used to locate the file listing of the modules + * that are statically linked to the library at compile time. By + * default, this file is ``. + * + * We highly recommend using the third method whenever possible. + * + */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*#************************************************************************ + * + * If you enable this configuration option, FreeType recognizes an + * environment variable called `FREETYPE_PROPERTIES`, which can be used to + * control the various font drivers and modules. The controllable + * properties are listed in the section @properties. + * + * You have to undefine this configuration option on platforms that lack + * the concept of environment variables (and thus don't have the `getenv` + * function), for example Windows CE. + * + * `FREETYPE_PROPERTIES` has the following syntax form (broken here into + * multiple lines for better readability). + * + * ``` + * + * ':' + * '=' + * + * ':' + * '=' + * ... + * ``` + * + * Example: + * + * ``` + * FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ + * cff:no-stem-darkening=1 + * ``` + * + */ +#define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES + + + /************************************************************************** + * + * Uncomment the line below if you want to activate LCD rendering + * technology similar to ClearType in this build of the library. This + * technology triples the resolution in the direction color subpixels. To + * mitigate color fringes inherent to this technology, you also need to + * explicitly set up LCD filtering. + * + * When this macro is not defined, FreeType offers alternative LCD + * rendering technology that produces excellent output. + */ +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + + + /************************************************************************** + * + * Many compilers provide a non-ANSI 64-bit data type that can be used by + * FreeType to speed up some computations. However, this will create some + * problems when compiling the library in strict ANSI mode. + * + * For this reason, the use of 64-bit integers is normally disabled when + * the `__STDC__` macro is defined. You can however disable this by + * defining the macro `FT_CONFIG_OPTION_FORCE_INT64` here. + * + * For most compilers, this will only create compilation warnings when + * building the library. + * + * ObNote: The compiler-specific 64-bit integers are detected in the + * file `ftconfig.h` either statically or through the `configure` + * script on supported platforms. + */ +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /************************************************************************** + * + * If this macro is defined, do not try to use an assembler version of + * performance-critical functions (e.g., @FT_MulFix). You should only do + * that to verify that the assembler function works properly, or to execute + * benchmark tests of the various implementations. + */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /************************************************************************** + * + * If this macro is defined, try to use an inlined assembler version of the + * @FT_MulFix function, which is a 'hotspot' when loading and hinting + * glyphs, and which should be executed as fast as possible. + * + * Note that if your compiler or CPU is not supported, this will default to + * the standard and portable implementation found in `ftcalc.c`. + */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /************************************************************************** + * + * LZW-compressed file support. + * + * FreeType now handles font files that have been compressed with the + * `compress` program. This is mostly used to parse many of the PCF + * files that come with various X11 distributions. The implementation + * uses NetBSD's `zopen` to partially uncompress the file on the fly (see + * `src/lzw/ftgzip.c`). + * + * Define this macro if you want to enable this 'feature'. + */ +#define FT_CONFIG_OPTION_USE_LZW + + + /************************************************************************** + * + * Gzip-compressed file support. + * + * FreeType now handles font files that have been compressed with the + * `gzip` program. This is mostly used to parse many of the PCF files + * that come with XFree86. The implementation uses 'zlib' to partially + * uncompress the file on the fly (see `src/gzip/ftgzip.c`). + * + * Define this macro if you want to enable this 'feature'. See also the + * macro `FT_CONFIG_OPTION_SYSTEM_ZLIB` below. + */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /************************************************************************** + * + * ZLib library selection + * + * This macro is only used when `FT_CONFIG_OPTION_USE_ZLIB` is defined. + * It allows FreeType's 'ftgzip' component to link to the system's + * installation of the ZLib library. This is useful on systems like + * Unix or VMS where it generally is already available. + * + * If you let it undefined, the component will use its own copy of the + * zlib sources instead. These have been modified to be included + * directly within the component and **not** export external function + * names. This allows you to link any program with FreeType _and_ ZLib + * without linking conflicts. + * + * Do not `#undef` this macro here since the build system might define + * it for certain configurations only. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + * + * If you use the GNU make build system directly (that is, without the + * `configure` script) and you define this macro, you also have to pass + * `SYSTEM_ZLIB=yes` as an argument to make. + */ +#define FT_CONFIG_OPTION_SYSTEM_ZLIB + + + /************************************************************************** + * + * Bzip2-compressed file support. + * + * FreeType now handles font files that have been compressed with the + * `bzip2` program. This is mostly used to parse many of the PCF files + * that come with XFree86. The implementation uses `libbz2` to partially + * uncompress the file on the fly (see `src/bzip2/ftbzip2.c`). Contrary + * to gzip, bzip2 currently is not included and need to use the system + * available bzip2 implementation. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +/* #define FT_CONFIG_OPTION_USE_BZIP2 */ + + + /************************************************************************** + * + * Define to disable the use of file stream functions and types, `FILE`, + * `fopen`, etc. Enables the use of smaller system libraries on embedded + * systems that have multiple system libraries, some with or without file + * stream support, in the cases where file stream support is not necessary + * such as memory loading of font files. + */ +/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ + + + /************************************************************************** + * + * PNG bitmap support. + * + * FreeType now handles loading color bitmap glyphs in the PNG format. + * This requires help from the external libpng library. Uncompressed + * color bitmaps do not need any external libraries and will be supported + * regardless of this configuration. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +#define FT_CONFIG_OPTION_USE_PNG + + + /************************************************************************** + * + * HarfBuzz support. + * + * FreeType uses the HarfBuzz library to improve auto-hinting of OpenType + * fonts. If available, many glyphs not directly addressable by a font's + * character map will be hinted also. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +#define FT_CONFIG_OPTION_USE_HARFBUZZ + + + /************************************************************************** + * + * Brotli support. + * + * FreeType uses the Brotli library to provide support for decompressing + * WOFF2 streams. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +/* #define FT_CONFIG_OPTION_USE_BROTLI */ + + + /************************************************************************** + * + * Glyph Postscript Names handling + * + * By default, FreeType 2 is compiled with the 'psnames' module. This + * module is in charge of converting a glyph name string into a Unicode + * value, or return a Macintosh standard glyph name for the use with the + * TrueType 'post' table. + * + * Undefine this macro if you do not want 'psnames' compiled in your + * build of FreeType. This has the following effects: + * + * - The TrueType driver will provide its own set of glyph names, if you + * build it to support postscript names in the TrueType 'post' table, + * but will not synthesize a missing Unicode charmap. + * + * - The Type~1 driver will not be able to synthesize a Unicode charmap + * out of the glyphs found in the fonts. + * + * You would normally undefine this configuration macro when building a + * version of FreeType that doesn't contain a Type~1 or CFF driver. + */ +#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /************************************************************************** + * + * Postscript Names to Unicode Values support + * + * By default, FreeType~2 is built with the 'psnames' module compiled in. + * Among other things, the module is used to convert a glyph name into a + * Unicode value. This is especially useful in order to synthesize on + * the fly a Unicode charmap from the CFF/Type~1 driver through a big + * table named the 'Adobe Glyph List' (AGL). + * + * Undefine this macro if you do not want the Adobe Glyph List compiled + * in your 'psnames' module. The Type~1 driver will not be able to + * synthesize a Unicode charmap out of the glyphs found in the fonts. + */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /************************************************************************** + * + * Support for Mac fonts + * + * Define this macro if you want support for outline fonts in Mac format + * (mac dfont, mac resource, macbinary containing a mac resource) on + * non-Mac platforms. + * + * Note that the 'FOND' resource isn't checked. + */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /************************************************************************** + * + * Guessing methods to access embedded resource forks + * + * Enable extra Mac fonts support on non-Mac platforms (e.g., GNU/Linux). + * + * Resource forks which include fonts data are stored sometimes in + * locations which users or developers don't expected. In some cases, + * resource forks start with some offset from the head of a file. In + * other cases, the actual resource fork is stored in file different from + * what the user specifies. If this option is activated, FreeType tries + * to guess whether such offsets or different file names must be used. + * + * Note that normal, direct access of resource forks is controlled via + * the `FT_CONFIG_OPTION_MAC_FONTS` option. + */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /************************************************************************** + * + * Allow the use of `FT_Incremental_Interface` to load typefaces that + * contain no glyph data, but supply it via a callback function. This is + * required by clients supporting document formats which supply font data + * incrementally as the document is parsed, such as the Ghostscript + * interpreter for the PostScript language. + */ +#define FT_CONFIG_OPTION_INCREMENTAL + + + /************************************************************************** + * + * The size in bytes of the render pool used by the scan-line converter to + * do all of its work. + */ +#define FT_RENDER_POOL_SIZE 16384L + + + /************************************************************************** + * + * FT_MAX_MODULES + * + * The maximum number of modules that can be registered in a single + * FreeType library object. 32~is the default. + */ +#define FT_MAX_MODULES 32 + + + /************************************************************************** + * + * Debug level + * + * FreeType can be compiled in debug or trace mode. In debug mode, + * errors are reported through the 'ftdebug' component. In trace mode, + * additional messages are sent to the standard output during execution. + * + * Define `FT_DEBUG_LEVEL_ERROR` to build the library in debug mode. + * Define `FT_DEBUG_LEVEL_TRACE` to build it in trace mode. + * + * Don't define any of these macros to compile in 'release' mode! + * + * Do not `#undef` these macros here since the build system might define + * them for certain configurations only. + */ +/* #define FT_DEBUG_LEVEL_ERROR */ +/* #define FT_DEBUG_LEVEL_TRACE */ + + + /************************************************************************** + * + * Logging + * + * Compiling FreeType in debug or trace mode makes FreeType write error + * and trace log messages to `stderr`. Enabling this macro + * automatically forces the `FT_DEBUG_LEVEL_ERROR` and + * `FT_DEBUG_LEVEL_TRACE` macros and allows FreeType to write error and + * trace log messages to a file instead of `stderr`. For writing logs + * to a file, FreeType uses an the external `dlg` library (the source + * code is in `src/dlg`). + * + * This option needs a C99 compiler. + */ +/* #define FT_DEBUG_LOGGING */ + + + /************************************************************************** + * + * Autofitter debugging + * + * If `FT_DEBUG_AUTOFIT` is defined, FreeType provides some means to + * control the autofitter behaviour for debugging purposes with global + * boolean variables (consequently, you should **never** enable this + * while compiling in 'release' mode): + * + * ``` + * _af_debug_disable_horz_hints + * _af_debug_disable_vert_hints + * _af_debug_disable_blue_hints + * ``` + * + * Additionally, the following functions provide dumps of various + * internal autofit structures to stdout (using `printf`): + * + * ``` + * af_glyph_hints_dump_points + * af_glyph_hints_dump_segments + * af_glyph_hints_dump_edges + * af_glyph_hints_get_num_segments + * af_glyph_hints_get_segment_offset + * ``` + * + * As an argument, they use another global variable: + * + * ``` + * _af_debug_hints + * ``` + * + * Please have a look at the `ftgrid` demo program to see how those + * variables and macros should be used. + * + * Do not `#undef` these macros here since the build system might define + * them for certain configurations only. + */ +/* #define FT_DEBUG_AUTOFIT */ + + + /************************************************************************** + * + * Memory Debugging + * + * FreeType now comes with an integrated memory debugger that is capable + * of detecting simple errors like memory leaks or double deletes. To + * compile it within your build of the library, you should define + * `FT_DEBUG_MEMORY` here. + * + * Note that the memory debugger is only activated at runtime when when + * the _environment_ variable `FT2_DEBUG_MEMORY` is defined also! + * + * Do not `#undef` this macro here since the build system might define it + * for certain configurations only. + */ +/* #define FT_DEBUG_MEMORY */ + + + /************************************************************************** + * + * Module errors + * + * If this macro is set (which is _not_ the default), the higher byte of + * an error code gives the module in which the error has occurred, while + * the lower byte is the real error code. + * + * Setting this macro makes sense for debugging purposes only, since it + * would break source compatibility of certain programs that use + * FreeType~2. + * + * More details can be found in the files `ftmoderr.h` and `fterrors.h`. + */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /************************************************************************** + * + * OpenType SVG Glyph Support + * + * Setting this macro enables support for OpenType SVG glyphs. By + * default, FreeType can only fetch SVG documents. However, it can also + * render them if external rendering hook functions are plugged in at + * runtime. + * + * More details on the hooks can be found in file `otsvg.h`. + */ +#define FT_CONFIG_OPTION_SVG + + + /************************************************************************** + * + * Error Strings + * + * If this macro is set, `FT_Error_String` will return meaningful + * descriptions. This is not enabled by default to reduce the overall + * size of FreeType. + * + * More details can be found in the file `fterrors.h`. + */ +/* #define FT_CONFIG_OPTION_ERROR_STRINGS */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_EMBEDDED_BITMAPS` if you want to support + * embedded bitmaps in all formats using the 'sfnt' module (namely + * TrueType~& OpenType). + */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support colored + * outlines (from the 'COLR'/'CPAL' tables) in all formats using the 'sfnt' + * module (namely TrueType~& OpenType). + */ +#define TT_CONFIG_OPTION_COLOR_LAYERS + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_POSTSCRIPT_NAMES` if you want to be able to + * load and enumerate the glyph Postscript names in a TrueType or OpenType + * file. + * + * Note that when you do not compile the 'psnames' module by undefining the + * above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES`, the 'sfnt' module will + * contain additional code used to read the PS Names table from a font. + * + * (By default, the module uses 'psnames' to extract glyph names.) + */ +#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_SFNT_NAMES` if your applications need to access + * the internal name table in a SFNT-based format like TrueType or + * OpenType. The name table contains various strings used to describe the + * font, like family name, copyright, version, etc. It does not contain + * any glyph name though. + * + * Accessing SFNT names is done through the functions declared in + * `ftsnames.h`. + */ +#define TT_CONFIG_OPTION_SFNT_NAMES + + + /************************************************************************** + * + * TrueType CMap support + * + * Here you can fine-tune which TrueType CMap table format shall be + * supported. + */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` if you want to compile a + * bytecode interpreter in the TrueType driver. + * + * By undefining this, you will only compile the code necessary to load + * TrueType glyphs without hinting. + * + * Do not `#undef` this macro here, since the build system might define it + * for certain configurations only. + */ +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_SUBPIXEL_HINTING` if you want to compile + * subpixel hinting support into the TrueType driver. This modifies the + * TrueType hinting mechanism when anything but `FT_RENDER_MODE_MONO` is + * requested. + * + * In particular, it modifies the bytecode interpreter to interpret (or + * not) instructions in a certain way so that all TrueType fonts look like + * they do in a Windows ClearType (DirectWrite) environment. See [1] for a + * technical overview on what this means. See `ttinterp.h` for more + * details on the LEAN option. + * + * There are three possible values. + * + * Value 1: + * This value is associated with the 'Infinality' moniker, contributed by + * an individual nicknamed Infinality with the goal of making TrueType + * fonts render better than on Windows. A high amount of configurability + * and flexibility, down to rules for single glyphs in fonts, but also + * very slow. Its experimental and slow nature and the original + * developer losing interest meant that this option was never enabled in + * default builds. + * + * The corresponding interpreter version is v38. + * + * Value 2: + * The new default mode for the TrueType driver. The Infinality code + * base was stripped to the bare minimum and all configurability removed + * in the name of speed and simplicity. The configurability was mainly + * aimed at legacy fonts like 'Arial', 'Times New Roman', or 'Courier'. + * Legacy fonts are fonts that modify vertical stems to achieve clean + * black-and-white bitmaps. The new mode focuses on applying a minimal + * set of rules to all fonts indiscriminately so that modern and web + * fonts render well while legacy fonts render okay. + * + * The corresponding interpreter version is v40. + * + * Value 3: + * Compile both, making both v38 and v40 available (the latter is the + * default). + * + * By undefining these, you get rendering behavior like on Windows without + * ClearType, i.e., Windows XP without ClearType enabled and Win9x + * (interpreter version v35). Or not, depending on how much hinting blood + * and testing tears the font designer put into a given font. If you + * define one or both subpixel hinting options, you can switch between + * between v35 and the ones you define (using `FT_Property_Set`). + * + * This option requires `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` to be + * defined. + * + * [1] + * https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx + */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */ + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED` to compile the + * TrueType glyph loader to use Apple's definition of how to handle + * component offsets in composite glyphs. + * + * Apple and MS disagree on the default behavior of component offsets in + * composites. Apple says that they should be scaled by the scaling + * factors in the transformation matrix (roughly, it's more complex) while + * MS says they should not. OpenType defines two bits in the composite + * flags array which can be used to disambiguate, but old fonts will not + * have them. + * + * https://www.microsoft.com/typography/otspec/glyf.htm + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html + */ +#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_GX_VAR_SUPPORT` if you want to include support + * for Apple's distortable font technology ('fvar', 'gvar', 'cvar', and + * 'avar' tables). Tagged 'Font Variations', this is now part of OpenType + * also. This has many similarities to Type~1 Multiple Masters support. + */ +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_BDF` if you want to include support for an + * embedded 'BDF~' table within SFNT-based bitmap formats. + */ +#define TT_CONFIG_OPTION_BDF + + + /************************************************************************** + * + * Option `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES` controls the maximum + * number of bytecode instructions executed for a single run of the + * bytecode interpreter, needed to prevent infinite loops. You don't want + * to change this except for very special situations (e.g., making a + * library fuzzer spend less time to handle broken fonts). + * + * It is not expected that this value is ever modified by a configuring + * script; instead, it gets surrounded with `#ifndef ... #endif` so that + * the value can be set as a preprocessor option on the compiler's command + * line. + */ +#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES +#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * `T1_MAX_DICT_DEPTH` is the maximum depth of nest dictionaries and arrays + * in the Type~1 stream (see `t1load.c`). A minimum of~4 is required. + */ +#define T1_MAX_DICT_DEPTH 5 + + + /************************************************************************** + * + * `T1_MAX_SUBRS_CALLS` details the maximum number of nested sub-routine + * calls during glyph loading. + */ +#define T1_MAX_SUBRS_CALLS 16 + + + /************************************************************************** + * + * `T1_MAX_CHARSTRING_OPERANDS` is the charstring stack's capacity. A + * minimum of~16 is required. + * + * The Chinese font 'MingTiEG-Medium' (covering the CNS 11643 character + * set) needs 256. + */ +#define T1_MAX_CHARSTRINGS_OPERANDS 256 + + + /************************************************************************** + * + * Define this configuration macro if you want to prevent the compilation + * of the 't1afm' module, which is in charge of reading Type~1 AFM files + * into an existing face. Note that if set, the Type~1 driver will be + * unable to produce kerning distances. + */ +#undef T1_CONFIG_OPTION_NO_AFM + + + /************************************************************************** + * + * Define this configuration macro if you want to prevent the compilation + * of the Multiple Masters font support in the Type~1 driver. + */ +#undef T1_CONFIG_OPTION_NO_MM_SUPPORT + + + /************************************************************************** + * + * `T1_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe Type~1 + * engine gets compiled into FreeType. If defined, it is possible to + * switch between the two engines using the `hinting-engine` property of + * the 'type1' driver module. + */ +/* #define T1_CONFIG_OPTION_OLD_ENGINE */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** C F F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * Using `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}` it is + * possible to set up the default values of the four control points that + * define the stem darkening behaviour of the (new) CFF engine. For more + * details please read the documentation of the `darkening-parameters` + * property (file `ftdriver.h`), which allows the control at run-time. + * + * Do **not** undefine these macros! + */ +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0 + + + /************************************************************************** + * + * `CFF_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe CFF engine + * gets compiled into FreeType. If defined, it is possible to switch + * between the two engines using the `hinting-engine` property of the 'cff' + * driver module. + */ +/* #define CFF_CONFIG_OPTION_OLD_ENGINE */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** P C F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * There are many PCF fonts just called 'Fixed' which look completely + * different, and which have nothing to do with each other. When selecting + * 'Fixed' in KDE or Gnome one gets results that appear rather random, the + * style changes often if one changes the size and one cannot select some + * fonts at all. This option makes the 'pcf' module prepend the foundry + * name (plus a space) to the family name. + * + * We also check whether we have 'wide' characters; all put together, we + * get family names like 'Sony Fixed' or 'Misc Fixed Wide'. + * + * If this option is activated, it can be controlled with the + * `no-long-family-names` property of the 'pcf' driver module. + */ +/* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * Compile 'autofit' module with CJK (Chinese, Japanese, Korean) script + * support. + */ +#define AF_CONFIG_OPTION_CJK + + + /************************************************************************** + * + * Compile 'autofit' module with fallback Indic script support, covering + * some scripts that the 'latin' submodule of the 'autofit' module doesn't + * (yet) handle. Currently, this needs option `AF_CONFIG_OPTION_CJK`. + */ +#ifdef AF_CONFIG_OPTION_CJK +#define AF_CONFIG_OPTION_INDIC +#endif + + + /************************************************************************** + * + * Use TrueType-like size metrics for 'light' auto-hinting. + * + * It is strongly recommended to avoid this option, which exists only to + * help some legacy applications retain its appearance and behaviour with + * respect to auto-hinted TrueType fonts. + * + * The very reason this option exists at all are GNU/Linux distributions + * like Fedora that did not un-patch the following change (which was + * present in FreeType between versions 2.4.6 and 2.7.1, inclusive). + * + * ``` + * 2011-07-16 Steven Chu + * + * [truetype] Fix metrics on size request for scalable fonts. + * ``` + * + * This problematic commit is now reverted (more or less). + */ +/* #define AF_CONFIG_OPTION_TT_SIZE_METRICS */ + + /* */ + + + /* + * This macro is obsolete. Support has been removed in FreeType version + * 2.5. + */ +/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* + * The next three macros are defined if native TrueType hinting is + * requested by the definitions above. Don't change this. + */ +#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER +#define TT_USE_BYTECODE_INTERPRETER + +#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1 +#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY +#endif + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2 +#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#endif +#endif +#endif + + + /* + * The TT_SUPPORT_COLRV1 macro is defined to indicate to clients that this + * version of FreeType has support for 'COLR' v1 API. This definition is + * useful to FreeType clients that want to build in support for 'COLR' v1 + * depending on a tip-of-tree checkout before it is officially released in + * FreeType, and while the feature cannot yet be tested against using + * version macros. Don't change this macro. This may be removed once the + * feature is in a FreeType release version and version macros can be used + * to test for availability. + */ +#ifdef TT_CONFIG_OPTION_COLOR_LAYERS +#define TT_SUPPORT_COLRV1 +#endif + + + /* + * Check CFF darkening parameters. The checks are the same as in function + * `cff_property_set` in file `cffdrivr.c`. + */ +#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500 +#error "Invalid CFF darkening parameters!" +#endif + + +FT_END_HEADER + +#endif /* FTOPTION_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftstdlib.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftstdlib.h new file mode 100644 index 0000000..7958c2a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/ftstdlib.h @@ -0,0 +1,185 @@ +/**************************************************************************** + * + * ftstdlib.h + * + * ANSI-specific library and header configuration file (specification + * only). + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file is used to group all `#includes` to the ANSI~C library that + * FreeType normally requires. It also defines macros to rename the + * standard functions within the FreeType source code. + * + * Load a file which defines `FTSTDLIB_H_` before this one to override it. + * + */ + + +#ifndef FTSTDLIB_H_ +#define FTSTDLIB_H_ + + +#include + +#define ft_ptrdiff_t ptrdiff_t + + + /************************************************************************** + * + * integer limits + * + * `UINT_MAX` and `ULONG_MAX` are used to automatically compute the size of + * `int` and `long` in bytes at compile-time. So far, this works for all + * platforms the library has been tested on. We also check `ULLONG_MAX` + * to see whether we can use 64-bit `long long` later on. + * + * Note that on the extremely rare platforms that do not provide integer + * types that are _exactly_ 16 and 32~bits wide (e.g., some old Crays where + * `int` is 36~bits), we do not make any guarantee about the correct + * behaviour of FreeType~2 with all fonts. + * + * In these cases, `ftconfig.h` will refuse to compile anyway with a + * message like 'couldn't find 32-bit type' or something similar. + * + */ + + +#include + +#define FT_CHAR_BIT CHAR_BIT +#define FT_USHORT_MAX USHRT_MAX +#define FT_INT_MAX INT_MAX +#define FT_INT_MIN INT_MIN +#define FT_UINT_MAX UINT_MAX +#define FT_LONG_MIN LONG_MIN +#define FT_LONG_MAX LONG_MAX +#define FT_ULONG_MAX ULONG_MAX +#ifdef LLONG_MAX +#define FT_LLONG_MAX LLONG_MAX +#endif +#ifdef LLONG_MIN +#define FT_LLONG_MIN LLONG_MIN +#endif +#ifdef ULLONG_MAX +#define FT_ULLONG_MAX ULLONG_MAX +#endif + + + /************************************************************************** + * + * character and string processing + * + */ + + +#include + +#define ft_memchr memchr +#define ft_memcmp memcmp +#define ft_memcpy memcpy +#define ft_memmove memmove +#define ft_memset memset +#define ft_strcat strcat +#define ft_strcmp strcmp +#define ft_strcpy strcpy +#define ft_strlen strlen +#define ft_strncmp strncmp +#define ft_strncpy strncpy +#define ft_strrchr strrchr +#define ft_strstr strstr + + + /************************************************************************** + * + * file handling + * + */ + + +#include + +#define FT_FILE FILE +#define ft_fclose fclose +#define ft_fopen fopen +#define ft_fread fread +#define ft_fseek fseek +#define ft_ftell ftell +#define ft_sprintf sprintf + + + /************************************************************************** + * + * sorting + * + */ + + +#include + +#define ft_qsort qsort + + + /************************************************************************** + * + * memory allocation + * + */ + + +#define ft_scalloc calloc +#define ft_sfree free +#define ft_smalloc malloc +#define ft_srealloc realloc + + + /************************************************************************** + * + * miscellaneous + * + */ + + +#define ft_strtol strtol +#define ft_getenv getenv + + + /************************************************************************** + * + * execution control + * + */ + + +#include + +#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ + /* `jmp_buf` is defined as a macro */ + /* on certain platforms */ + +#define ft_longjmp longjmp +#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */ + + + /* The following is only used for debugging purposes, i.e., if */ + /* `FT_DEBUG_LEVEL_ERROR` or `FT_DEBUG_LEVEL_TRACE` are defined. */ + +#include + + +#endif /* FTSTDLIB_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/integer-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/integer-types.h new file mode 100644 index 0000000..d9d2638 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/integer-types.h @@ -0,0 +1,250 @@ +/**************************************************************************** + * + * config/integer-types.h + * + * FreeType integer types definitions. + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ +#ifndef FREETYPE_CONFIG_INTEGER_TYPES_H_ +#define FREETYPE_CONFIG_INTEGER_TYPES_H_ + + /* There are systems (like the Texas Instruments 'C54x) where a `char` */ + /* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */ + /* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */ + /* `char` type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + +#ifndef FT_SIZEOF_INT + + /* The size of an `int` type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT ) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT ( 32 / FT_CHAR_BIT ) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT ( 64 / FT_CHAR_BIT ) +#else +#error "Unsupported size of `int' type!" +#endif + +#endif /* !defined(FT_SIZEOF_INT) */ + +#ifndef FT_SIZEOF_LONG + + /* The size of a `long` type. A five-byte `long` (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT ) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT ) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG ( 64 / FT_CHAR_BIT ) +#else +#error "Unsupported size of `long' type!" +#endif + +#endif /* !defined(FT_SIZEOF_LONG) */ + +#ifndef FT_SIZEOF_LONG_LONG + + /* The size of a `long long` type if available */ +#if defined( FT_ULLONG_MAX ) && FT_ULLONG_MAX >= 0xFFFFFFFFFFFFFFFFULL +#define FT_SIZEOF_LONG_LONG ( 64 / FT_CHAR_BIT ) +#else +#define FT_SIZEOF_LONG_LONG 0 +#endif + +#endif /* !defined(FT_SIZEOF_LONG_LONG) */ + + + /************************************************************************** + * + * @section: + * basic_types + * + */ + + + /************************************************************************** + * + * @type: + * FT_Int16 + * + * @description: + * A typedef for a 16bit signed integer type. + */ + typedef signed short FT_Int16; + + + /************************************************************************** + * + * @type: + * FT_UInt16 + * + * @description: + * A typedef for a 16bit unsigned integer type. + */ + typedef unsigned short FT_UInt16; + + /* */ + + + /* this #if 0 ... #endif clause is for documentation purposes */ +#if 0 + + /************************************************************************** + * + * @type: + * FT_Int32 + * + * @description: + * A typedef for a 32bit signed integer type. The size depends on the + * configuration. + */ + typedef signed XXX FT_Int32; + + + /************************************************************************** + * + * @type: + * FT_UInt32 + * + * A typedef for a 32bit unsigned integer type. The size depends on the + * configuration. + */ + typedef unsigned XXX FT_UInt32; + + + /************************************************************************** + * + * @type: + * FT_Int64 + * + * A typedef for a 64bit signed integer type. The size depends on the + * configuration. Only defined if there is real 64bit support; + * otherwise, it gets emulated with a structure (if necessary). + */ + typedef signed XXX FT_Int64; + + + /************************************************************************** + * + * @type: + * FT_UInt64 + * + * A typedef for a 64bit unsigned integer type. The size depends on the + * configuration. Only defined if there is real 64bit support; + * otherwise, it gets emulated with a structure (if necessary). + */ + typedef unsigned XXX FT_UInt64; + + /* */ + +#endif + +#if FT_SIZEOF_INT == ( 32 / FT_CHAR_BIT ) + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == ( 32 / FT_CHAR_BIT ) + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32~bits */ +#if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT ) + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= ( 32 / FT_CHAR_BIT ) + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit integer type */ +#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT ) + +#define FT_INT64 long +#define FT_UINT64 unsigned long + +#elif FT_SIZEOF_LONG_LONG >= ( 64 / FT_CHAR_BIT ) + +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + + /************************************************************************** + * + * A 64-bit data type may create compilation problems if you compile in + * strict ANSI mode. To avoid them, we disable other 64-bit data types if + * `__STDC__` is defined. You can however ignore this rule by defining the + * `FT_CONFIG_OPTION_FORCE_INT64` configuration macro. + */ +#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ + + /* this compiler provides the `__int64` type */ +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of `__BORLANDC__` in order */ + /* to test the compiler version. */ + + /* this compiler provides the `__int64` type */ +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1100 /* Watcom C++ */ + +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long` type */ +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#endif /* !__STDC__ */ + +#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ + +#ifdef FT_INT64 + typedef FT_INT64 FT_Int64; + typedef FT_UINT64 FT_UInt64; +#endif + + +#endif /* FREETYPE_CONFIG_INTEGER_TYPES_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/mac-support.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/mac-support.h new file mode 100644 index 0000000..e42c9fe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/mac-support.h @@ -0,0 +1,49 @@ +/**************************************************************************** + * + * config/mac-support.h + * + * Mac/OS X support configuration header. + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ +#ifndef FREETYPE_CONFIG_MAC_SUPPORT_H_ +#define FREETYPE_CONFIG_MAC_SUPPORT_H_ + + /************************************************************************** + * + * Mac support + * + * This is the only necessary change, so it is defined here instead + * providing a new configuration file. + */ +#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) + /* No Carbon frameworks for 64bit 10.4.x. */ + /* `AvailabilityMacros.h` is available since Mac OS X 10.2, */ + /* so guess the system version by maximum errno before inclusion. */ +#include +#ifdef ECANCELED /* defined since 10.2 */ +#include "AvailabilityMacros.h" +#endif +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#undef FT_MACINTOSH +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif /* Mac support */ + +#endif /* FREETYPE_CONFIG_MAC_SUPPORT_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/public-macros.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/public-macros.h new file mode 100644 index 0000000..0074134 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/config/public-macros.h @@ -0,0 +1,138 @@ +/**************************************************************************** + * + * config/public-macros.h + * + * Define a set of compiler macros used in public FreeType headers. + * + * Copyright (C) 2020-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + /* + * The definitions in this file are used by the public FreeType headers + * and thus should be considered part of the public API. + * + * Other compiler-specific macro definitions that are not exposed by the + * FreeType API should go into + * `include/freetype/internal/compiler-macros.h` instead. + */ +#ifndef FREETYPE_CONFIG_PUBLIC_MACROS_H_ +#define FREETYPE_CONFIG_PUBLIC_MACROS_H_ + + /* + * `FT_BEGIN_HEADER` and `FT_END_HEADER` might have already been defined + * by `freetype/config/ftheader.h`, but we don't want to include this + * header here, so redefine the macros here only when needed. Their + * definition is very stable, so keeping them in sync with the ones in the + * header should not be a maintenance issue. + */ +#ifndef FT_BEGIN_HEADER +#ifdef __cplusplus +#define FT_BEGIN_HEADER extern "C" { +#else +#define FT_BEGIN_HEADER /* empty */ +#endif +#endif /* FT_BEGIN_HEADER */ + +#ifndef FT_END_HEADER +#ifdef __cplusplus +#define FT_END_HEADER } +#else +#define FT_END_HEADER /* empty */ +#endif +#endif /* FT_END_HEADER */ + + +FT_BEGIN_HEADER + + /* + * Mark a function declaration as public. This ensures it will be + * properly exported to client code. Place this before a function + * declaration. + * + * NOTE: This macro should be considered an internal implementation + * detail, and not part of the FreeType API. It is only defined here + * because it is needed by `FT_EXPORT`. + */ + + /* Visual C, mingw */ +#if defined( _WIN32 ) + +#if defined( FT2_BUILD_LIBRARY ) && defined( DLL_EXPORT ) +#define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllexport ) +#elif defined( DLL_IMPORT ) +#define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllimport ) +#endif + + /* gcc, clang */ +#elif ( defined( __GNUC__ ) && __GNUC__ >= 4 ) || defined( __clang__ ) +#define FT_PUBLIC_FUNCTION_ATTRIBUTE \ + __attribute__(( visibility( "default" ) )) + + /* Sun */ +#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550 +#define FT_PUBLIC_FUNCTION_ATTRIBUTE __global +#endif + + +#ifndef FT_PUBLIC_FUNCTION_ATTRIBUTE +#define FT_PUBLIC_FUNCTION_ATTRIBUTE /* empty */ +#endif + + + /* + * Define a public FreeType API function. This ensures it is properly + * exported or imported at build time. The macro parameter is the + * function's return type as in: + * + * FT_EXPORT( FT_Bool ) + * FT_Object_Method( FT_Object obj, + * ... ); + * + * NOTE: This requires that all `FT_EXPORT` uses are inside + * `FT_BEGIN_HEADER ... FT_END_HEADER` blocks. This guarantees that the + * functions are exported with C linkage, even when the header is included + * by a C++ source file. + */ +#define FT_EXPORT( x ) FT_PUBLIC_FUNCTION_ATTRIBUTE extern x + + + /* + * `FT_UNUSED` indicates that a given parameter is not used -- this is + * only used to get rid of unpleasant compiler warnings. + * + * Technically, this was not meant to be part of the public API, but some + * third-party code depends on it. + */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) +#endif + + + /* + * Support for casts in both C and C++. + */ +#ifdef __cplusplus +#define FT_STATIC_CAST( type, var ) static_cast(var) +#define FT_REINTERPRET_CAST( type, var ) reinterpret_cast(var) + +#define FT_STATIC_BYTE_CAST( type, var ) \ + static_cast( static_cast( var ) ) +#else +#define FT_STATIC_CAST( type, var ) (type)(var) +#define FT_REINTERPRET_CAST( type, var ) (type)(var) + +#define FT_STATIC_BYTE_CAST( type, var ) (type)(unsigned char)(var) +#endif + + +FT_END_HEADER + +#endif /* FREETYPE_CONFIG_PUBLIC_MACROS_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/freetype.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/freetype.h new file mode 100644 index 0000000..aa1a4fe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/freetype.h @@ -0,0 +1,5050 @@ +/**************************************************************************** + * + * freetype.h + * + * FreeType high-level API and common types (specification only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FREETYPE_H_ +#define FREETYPE_H_ + + +#include +#include FT_CONFIG_CONFIG_H +#include +#include + + +FT_BEGIN_HEADER + + + + /************************************************************************** + * + * @section: + * preamble + * + * @title: + * Preamble + * + * @abstract: + * What FreeType is and isn't + * + * @description: + * FreeType is a library that provides access to glyphs in font files. It + * scales the glyph images and their metrics to a requested size, and it + * rasterizes the glyph images to produce pixel or subpixel alpha coverage + * bitmaps. + * + * Note that FreeType is _not_ a text layout engine. You have to use + * higher-level libraries like HarfBuzz, Pango, or ICU for that. + * + * Note also that FreeType does _not_ perform alpha blending or + * compositing the resulting bitmaps or pixmaps by itself. Use your + * favourite graphics library (for example, Cairo or Skia) to further + * process FreeType's output. + * + */ + + + /************************************************************************** + * + * @section: + * header_inclusion + * + * @title: + * FreeType's header inclusion scheme + * + * @abstract: + * How client applications should include FreeType header files. + * + * @description: + * To be as flexible as possible (and for historical reasons), you must + * load file `ft2build.h` first before other header files, for example + * + * ``` + * #include + * + * #include + * #include + * ``` + */ + + + /************************************************************************** + * + * @section: + * user_allocation + * + * @title: + * User allocation + * + * @abstract: + * How client applications should allocate FreeType data structures. + * + * @description: + * FreeType assumes that structures allocated by the user and passed as + * arguments are zeroed out except for the actual data. In other words, + * it is recommended to use `calloc` (or variants of it) instead of + * `malloc` for allocation. + * + */ + + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S I C T Y P E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @section: + * base_interface + * + * @title: + * Base Interface + * + * @abstract: + * The FreeType~2 base font interface. + * + * @description: + * This section describes the most important public high-level API + * functions of FreeType~2. + * + * @order: + * FT_Library + * FT_Face + * FT_Size + * FT_GlyphSlot + * FT_CharMap + * FT_Encoding + * FT_ENC_TAG + * + * FT_FaceRec + * + * FT_FACE_FLAG_SCALABLE + * FT_FACE_FLAG_FIXED_SIZES + * FT_FACE_FLAG_FIXED_WIDTH + * FT_FACE_FLAG_HORIZONTAL + * FT_FACE_FLAG_VERTICAL + * FT_FACE_FLAG_COLOR + * FT_FACE_FLAG_SFNT + * FT_FACE_FLAG_CID_KEYED + * FT_FACE_FLAG_TRICKY + * FT_FACE_FLAG_KERNING + * FT_FACE_FLAG_MULTIPLE_MASTERS + * FT_FACE_FLAG_VARIATION + * FT_FACE_FLAG_GLYPH_NAMES + * FT_FACE_FLAG_EXTERNAL_STREAM + * FT_FACE_FLAG_HINTER + * FT_FACE_FLAG_SVG + * FT_FACE_FLAG_SBIX + * FT_FACE_FLAG_SBIX_OVERLAY + * + * FT_HAS_HORIZONTAL + * FT_HAS_VERTICAL + * FT_HAS_KERNING + * FT_HAS_FIXED_SIZES + * FT_HAS_GLYPH_NAMES + * FT_HAS_COLOR + * FT_HAS_MULTIPLE_MASTERS + * FT_HAS_SVG + * FT_HAS_SBIX + * FT_HAS_SBIX_OVERLAY + * + * FT_IS_SFNT + * FT_IS_SCALABLE + * FT_IS_FIXED_WIDTH + * FT_IS_CID_KEYED + * FT_IS_TRICKY + * FT_IS_NAMED_INSTANCE + * FT_IS_VARIATION + * + * FT_STYLE_FLAG_BOLD + * FT_STYLE_FLAG_ITALIC + * + * FT_SizeRec + * FT_Size_Metrics + * + * FT_GlyphSlotRec + * FT_Glyph_Metrics + * FT_SubGlyph + * + * FT_Bitmap_Size + * + * FT_Init_FreeType + * FT_Done_FreeType + * + * FT_New_Face + * FT_Done_Face + * FT_Reference_Face + * FT_New_Memory_Face + * FT_Face_Properties + * FT_Open_Face + * FT_Open_Args + * FT_Parameter + * FT_Attach_File + * FT_Attach_Stream + * + * FT_Set_Char_Size + * FT_Set_Pixel_Sizes + * FT_Request_Size + * FT_Select_Size + * FT_Size_Request_Type + * FT_Size_RequestRec + * FT_Size_Request + * FT_Set_Transform + * FT_Get_Transform + * FT_Load_Glyph + * FT_Get_Char_Index + * FT_Get_First_Char + * FT_Get_Next_Char + * FT_Get_Name_Index + * FT_Load_Char + * + * FT_OPEN_MEMORY + * FT_OPEN_STREAM + * FT_OPEN_PATHNAME + * FT_OPEN_DRIVER + * FT_OPEN_PARAMS + * + * FT_LOAD_DEFAULT + * FT_LOAD_RENDER + * FT_LOAD_MONOCHROME + * FT_LOAD_LINEAR_DESIGN + * FT_LOAD_NO_SCALE + * FT_LOAD_NO_HINTING + * FT_LOAD_NO_BITMAP + * FT_LOAD_SBITS_ONLY + * FT_LOAD_NO_AUTOHINT + * FT_LOAD_COLOR + * + * FT_LOAD_VERTICAL_LAYOUT + * FT_LOAD_IGNORE_TRANSFORM + * FT_LOAD_FORCE_AUTOHINT + * FT_LOAD_NO_RECURSE + * FT_LOAD_PEDANTIC + * + * FT_LOAD_TARGET_NORMAL + * FT_LOAD_TARGET_LIGHT + * FT_LOAD_TARGET_MONO + * FT_LOAD_TARGET_LCD + * FT_LOAD_TARGET_LCD_V + * + * FT_LOAD_TARGET_MODE + * + * FT_Render_Glyph + * FT_Render_Mode + * FT_Get_Kerning + * FT_Kerning_Mode + * FT_Get_Track_Kerning + * FT_Get_Glyph_Name + * FT_Get_Postscript_Name + * + * FT_CharMapRec + * FT_Select_Charmap + * FT_Set_Charmap + * FT_Get_Charmap_Index + * + * FT_Get_FSType_Flags + * FT_Get_SubGlyph_Info + * + * FT_Face_Internal + * FT_Size_Internal + * FT_Slot_Internal + * + * FT_FACE_FLAG_XXX + * FT_STYLE_FLAG_XXX + * FT_OPEN_XXX + * FT_LOAD_XXX + * FT_LOAD_TARGET_XXX + * FT_SUBGLYPH_FLAG_XXX + * FT_FSTYPE_XXX + * + * FT_HAS_FAST_GLYPHS + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Glyph_Metrics + * + * @description: + * A structure to model the metrics of a single glyph. The values are + * expressed in 26.6 fractional pixel format; if the flag + * @FT_LOAD_NO_SCALE has been used while loading the glyph, values are + * expressed in font units instead. + * + * @fields: + * width :: + * The glyph's width. + * + * height :: + * The glyph's height. + * + * horiBearingX :: + * Left side bearing for horizontal layout. + * + * horiBearingY :: + * Top side bearing for horizontal layout. + * + * horiAdvance :: + * Advance width for horizontal layout. + * + * vertBearingX :: + * Left side bearing for vertical layout. + * + * vertBearingY :: + * Top side bearing for vertical layout. Larger positive values mean + * further below the vertical glyph origin. + * + * vertAdvance :: + * Advance height for vertical layout. Positive values mean the glyph + * has a positive advance downward. + * + * @note: + * If not disabled with @FT_LOAD_NO_HINTING, the values represent + * dimensions of the hinted glyph (in case hinting is applicable). + * + * Stroking a glyph with an outside border does not increase + * `horiAdvance` or `vertAdvance`; you have to manually adjust these + * values to account for the added width and height. + * + * FreeType doesn't use the 'VORG' table data for CFF fonts because it + * doesn't have an interface to quickly retrieve the glyph height. The + * y~coordinate of the vertical origin can be simply computed as + * `vertBearingY + height` after loading a glyph. + */ + typedef struct FT_Glyph_Metrics_ + { + FT_Pos width; + FT_Pos height; + + FT_Pos horiBearingX; + FT_Pos horiBearingY; + FT_Pos horiAdvance; + + FT_Pos vertBearingX; + FT_Pos vertBearingY; + FT_Pos vertAdvance; + + } FT_Glyph_Metrics; + + + /************************************************************************** + * + * @struct: + * FT_Bitmap_Size + * + * @description: + * This structure models the metrics of a bitmap strike (i.e., a set of + * glyphs for a given point size and resolution) in a bitmap font. It is + * used for the `available_sizes` field of @FT_Face. + * + * @fields: + * height :: + * The vertical distance, in pixels, between two consecutive baselines. + * It is always positive. + * + * width :: + * The average width, in pixels, of all glyphs in the strike. + * + * size :: + * The nominal size of the strike in 26.6 fractional points. This + * field is not very useful. + * + * x_ppem :: + * The horizontal ppem (nominal width) in 26.6 fractional pixels. + * + * y_ppem :: + * The vertical ppem (nominal height) in 26.6 fractional pixels. + * + * @note: + * Windows FNT: + * The nominal size given in a FNT font is not reliable. If the driver + * finds it incorrect, it sets `size` to some calculated values, and + * `x_ppem` and `y_ppem` to the pixel width and height given in the + * font, respectively. + * + * TrueType embedded bitmaps: + * `size`, `width`, and `height` values are not contained in the bitmap + * strike itself. They are computed from the global font parameters. + */ + typedef struct FT_Bitmap_Size_ + { + FT_Short height; + FT_Short width; + + FT_Pos size; + + FT_Pos x_ppem; + FT_Pos y_ppem; + + } FT_Bitmap_Size; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************** + * + * @type: + * FT_Library + * + * @description: + * A handle to a FreeType library instance. Each 'library' is completely + * independent from the others; it is the 'root' of a set of objects like + * fonts, faces, sizes, etc. + * + * It also embeds a memory manager (see @FT_Memory), as well as a + * scan-line converter object (see @FT_Raster). + * + * [Since 2.5.6] In multi-threaded applications it is easiest to use one + * `FT_Library` object per thread. In case this is too cumbersome, a + * single `FT_Library` object across threads is possible also, as long as + * a mutex lock is used around @FT_New_Face and @FT_Done_Face. + * + * @note: + * Library objects are normally created by @FT_Init_FreeType, and + * destroyed with @FT_Done_FreeType. If you need reference-counting + * (cf. @FT_Reference_Library), use @FT_New_Library and @FT_Done_Library. + */ + typedef struct FT_LibraryRec_ *FT_Library; + + + /************************************************************************** + * + * @section: + * module_management + * + */ + + /************************************************************************** + * + * @type: + * FT_Module + * + * @description: + * A handle to a given FreeType module object. A module can be a font + * driver, a renderer, or anything else that provides services to the + * former. + */ + typedef struct FT_ModuleRec_* FT_Module; + + + /************************************************************************** + * + * @type: + * FT_Driver + * + * @description: + * A handle to a given FreeType font driver object. A font driver is a + * module capable of creating faces from font files. + */ + typedef struct FT_DriverRec_* FT_Driver; + + + /************************************************************************** + * + * @type: + * FT_Renderer + * + * @description: + * A handle to a given FreeType renderer. A renderer is a module in + * charge of converting a glyph's outline image to a bitmap. It supports + * a single glyph image format, and one or more target surface depths. + */ + typedef struct FT_RendererRec_* FT_Renderer; + + + /************************************************************************** + * + * @section: + * base_interface + * + */ + + /************************************************************************** + * + * @type: + * FT_Face + * + * @description: + * A handle to a typographic face object. A face object models a given + * typeface, in a given style. + * + * @note: + * A face object also owns a single @FT_GlyphSlot object, as well as one + * or more @FT_Size objects. + * + * Use @FT_New_Face or @FT_Open_Face to create a new face object from a + * given filepath or a custom input stream. + * + * Use @FT_Done_Face to destroy it (along with its slot and sizes). + * + * An `FT_Face` object can only be safely used from one thread at a time. + * Similarly, creation and destruction of `FT_Face` with the same + * @FT_Library object can only be done from one thread at a time. On the + * other hand, functions like @FT_Load_Glyph and its siblings are + * thread-safe and do not need the lock to be held as long as the same + * `FT_Face` object is not used from multiple threads at the same time. + * + * @also: + * See @FT_FaceRec for the publicly accessible fields of a given face + * object. + */ + typedef struct FT_FaceRec_* FT_Face; + + + /************************************************************************** + * + * @type: + * FT_Size + * + * @description: + * A handle to an object that models a face scaled to a given character + * size. + * + * @note: + * An @FT_Face has one _active_ `FT_Size` object that is used by + * functions like @FT_Load_Glyph to determine the scaling transformation + * that in turn is used to load and hint glyphs and metrics. + * + * A newly created `FT_Size` object contains only meaningless zero values. + * You must use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, @FT_Request_Size + * or even @FT_Select_Size to change the content (i.e., the scaling + * values) of the active `FT_Size`. Otherwise, the scaling and hinting + * will not be performed. + * + * You can use @FT_New_Size to create additional size objects for a given + * @FT_Face, but they won't be used by other functions until you activate + * it through @FT_Activate_Size. Only one size can be activated at any + * given time per face. + * + * @also: + * See @FT_SizeRec for the publicly accessible fields of a given size + * object. + */ + typedef struct FT_SizeRec_* FT_Size; + + + /************************************************************************** + * + * @type: + * FT_GlyphSlot + * + * @description: + * A handle to a given 'glyph slot'. A slot is a container that can hold + * any of the glyphs contained in its parent face. + * + * In other words, each time you call @FT_Load_Glyph or @FT_Load_Char, + * the slot's content is erased by the new glyph data, i.e., the glyph's + * metrics, its image (bitmap or outline), and other control information. + * + * @also: + * See @FT_GlyphSlotRec for the publicly accessible glyph fields. + */ + typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; + + + /************************************************************************** + * + * @type: + * FT_CharMap + * + * @description: + * A handle to a character map (usually abbreviated to 'charmap'). A + * charmap is used to translate character codes in a given encoding into + * glyph indexes for its parent's face. Some font formats may provide + * several charmaps per font. + * + * Each face object owns zero or more charmaps, but only one of them can + * be 'active', providing the data used by @FT_Get_Char_Index or + * @FT_Load_Char. + * + * The list of available charmaps in a face is available through the + * `face->num_charmaps` and `face->charmaps` fields of @FT_FaceRec. + * + * The currently active charmap is available as `face->charmap`. You + * should call @FT_Set_Charmap to change it. + * + * @note: + * When a new face is created (either through @FT_New_Face or + * @FT_Open_Face), the library looks for a Unicode charmap within the + * list and automatically activates it. If there is no Unicode charmap, + * FreeType doesn't set an 'active' charmap. + * + * @also: + * See @FT_CharMapRec for the publicly accessible fields of a given + * character map. + */ + typedef struct FT_CharMapRec_* FT_CharMap; + + + /************************************************************************** + * + * @macro: + * FT_ENC_TAG + * + * @description: + * This macro converts four-letter tags into an unsigned long. It is + * used to define 'encoding' identifiers (see @FT_Encoding). + * + * @note: + * Since many 16-bit compilers don't like 32-bit enumerations, you should + * redefine this macro in case of problems to something like this: + * + * ``` + * #define FT_ENC_TAG( value, a, b, c, d ) value + * ``` + * + * to get a simple enumeration without assigning special numbers. + */ + +#ifndef FT_ENC_TAG + +#define FT_ENC_TAG( value, a, b, c, d ) \ + value = ( ( FT_STATIC_BYTE_CAST( FT_UInt32, a ) << 24 ) | \ + ( FT_STATIC_BYTE_CAST( FT_UInt32, b ) << 16 ) | \ + ( FT_STATIC_BYTE_CAST( FT_UInt32, c ) << 8 ) | \ + FT_STATIC_BYTE_CAST( FT_UInt32, d ) ) + +#endif /* FT_ENC_TAG */ + + + /************************************************************************** + * + * @enum: + * FT_Encoding + * + * @description: + * An enumeration to specify character sets supported by charmaps. Used + * in the @FT_Select_Charmap API function. + * + * @note: + * Despite the name, this enumeration lists specific character + * repertories (i.e., charsets), and not text encoding methods (e.g., + * UTF-8, UTF-16, etc.). + * + * Other encodings might be defined in the future. + * + * @values: + * FT_ENCODING_NONE :: + * The encoding value~0 is reserved for all formats except BDF, PCF, + * and Windows FNT; see below for more information. + * + * FT_ENCODING_UNICODE :: + * The Unicode character set. This value covers all versions of the + * Unicode repertoire, including ASCII and Latin-1. Most fonts include + * a Unicode charmap, but not all of them. + * + * For example, if you want to access Unicode value U+1F028 (and the + * font contains it), use value 0x1F028 as the input value for + * @FT_Get_Char_Index. + * + * FT_ENCODING_MS_SYMBOL :: + * Microsoft Symbol encoding, used to encode mathematical symbols and + * wingdings. For more information, see + * 'https://www.microsoft.com/typography/otspec/recom.htm#non-standard-symbol-fonts', + * 'http://www.kostis.net/charsets/symbol.htm', and + * 'http://www.kostis.net/charsets/wingding.htm'. + * + * This encoding uses character codes from the PUA (Private Unicode + * Area) in the range U+F020-U+F0FF. + * + * FT_ENCODING_SJIS :: + * Shift JIS encoding for Japanese. More info at + * 'https://en.wikipedia.org/wiki/Shift_JIS'. See note on multi-byte + * encodings below. + * + * FT_ENCODING_PRC :: + * Corresponds to encoding systems mainly for Simplified Chinese as + * used in People's Republic of China (PRC). The encoding layout is + * based on GB~2312 and its supersets GBK and GB~18030. + * + * FT_ENCODING_BIG5 :: + * Corresponds to an encoding system for Traditional Chinese as used in + * Taiwan and Hong Kong. + * + * FT_ENCODING_WANSUNG :: + * Corresponds to the Korean encoding system known as Extended Wansung + * (MS Windows code page 949). For more information see + * 'https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit949.txt'. + * + * FT_ENCODING_JOHAB :: + * The Korean standard character set (KS~C 5601-1992), which + * corresponds to MS Windows code page 1361. This character set + * includes all possible Hangul character combinations. + * + * FT_ENCODING_ADOBE_LATIN_1 :: + * Corresponds to a Latin-1 encoding as defined in a Type~1 PostScript + * font. It is limited to 256 character codes. + * + * FT_ENCODING_ADOBE_STANDARD :: + * Adobe Standard encoding, as found in Type~1, CFF, and OpenType/CFF + * fonts. It is limited to 256 character codes. + * + * FT_ENCODING_ADOBE_EXPERT :: + * Adobe Expert encoding, as found in Type~1, CFF, and OpenType/CFF + * fonts. It is limited to 256 character codes. + * + * FT_ENCODING_ADOBE_CUSTOM :: + * Corresponds to a custom encoding, as found in Type~1, CFF, and + * OpenType/CFF fonts. It is limited to 256 character codes. + * + * FT_ENCODING_APPLE_ROMAN :: + * Apple roman encoding. Many TrueType and OpenType fonts contain a + * charmap for this 8-bit encoding, since older versions of Mac OS are + * able to use it. + * + * FT_ENCODING_OLD_LATIN_2 :: + * This value is deprecated and was neither used nor reported by + * FreeType. Don't use or test for it. + * + * FT_ENCODING_MS_SJIS :: + * Same as FT_ENCODING_SJIS. Deprecated. + * + * FT_ENCODING_MS_GB2312 :: + * Same as FT_ENCODING_PRC. Deprecated. + * + * FT_ENCODING_MS_BIG5 :: + * Same as FT_ENCODING_BIG5. Deprecated. + * + * FT_ENCODING_MS_WANSUNG :: + * Same as FT_ENCODING_WANSUNG. Deprecated. + * + * FT_ENCODING_MS_JOHAB :: + * Same as FT_ENCODING_JOHAB. Deprecated. + * + * @note: + * When loading a font, FreeType makes a Unicode charmap active if + * possible (either if the font provides such a charmap, or if FreeType + * can synthesize one from PostScript glyph name dictionaries; in either + * case, the charmap is tagged with `FT_ENCODING_UNICODE`). If such a + * charmap is synthesized, it is placed at the first position of the + * charmap array. + * + * All other encodings are considered legacy and tagged only if + * explicitly defined in the font file. Otherwise, `FT_ENCODING_NONE` is + * used. + * + * `FT_ENCODING_NONE` is set by the BDF and PCF drivers if the charmap is + * neither Unicode nor ISO-8859-1 (otherwise it is set to + * `FT_ENCODING_UNICODE`). Use @FT_Get_BDF_Charset_ID to find out which + * encoding is really present. If, for example, the `cs_registry` field + * is 'KOI8' and the `cs_encoding` field is 'R', the font is encoded in + * KOI8-R. + * + * `FT_ENCODING_NONE` is always set (with a single exception) by the + * winfonts driver. Use @FT_Get_WinFNT_Header and examine the `charset` + * field of the @FT_WinFNT_HeaderRec structure to find out which encoding + * is really present. For example, @FT_WinFNT_ID_CP1251 (204) means + * Windows code page 1251 (for Russian). + * + * `FT_ENCODING_NONE` is set if `platform_id` is @TT_PLATFORM_MACINTOSH + * and `encoding_id` is not `TT_MAC_ID_ROMAN` (otherwise it is set to + * `FT_ENCODING_APPLE_ROMAN`). + * + * If `platform_id` is @TT_PLATFORM_MACINTOSH, use the function + * @FT_Get_CMap_Language_ID to query the Mac language ID that may be + * needed to be able to distinguish Apple encoding variants. See + * + * https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt + * + * to get an idea how to do that. Basically, if the language ID is~0, + * don't use it, otherwise subtract 1 from the language ID. Then examine + * `encoding_id`. If, for example, `encoding_id` is `TT_MAC_ID_ROMAN` + * and the language ID (minus~1) is `TT_MAC_LANGID_GREEK`, it is the + * Greek encoding, not Roman. `TT_MAC_ID_ARABIC` with + * `TT_MAC_LANGID_FARSI` means the Farsi variant the Arabic encoding. + */ + typedef enum FT_Encoding_ + { + FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), + + FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), + FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), + + FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), + FT_ENC_TAG( FT_ENCODING_PRC, 'g', 'b', ' ', ' ' ), + FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), + FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), + FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), + + /* for backward compatibility */ + FT_ENCODING_GB2312 = FT_ENCODING_PRC, + FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, + FT_ENCODING_MS_GB2312 = FT_ENCODING_PRC, + FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, + FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, + FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, + + FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), + + FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), + + FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) + + } FT_Encoding; + + + /* these constants are deprecated; use the corresponding `FT_Encoding` */ + /* values instead */ +#define ft_encoding_none FT_ENCODING_NONE +#define ft_encoding_unicode FT_ENCODING_UNICODE +#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL +#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 +#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 +#define ft_encoding_sjis FT_ENCODING_SJIS +#define ft_encoding_gb2312 FT_ENCODING_PRC +#define ft_encoding_big5 FT_ENCODING_BIG5 +#define ft_encoding_wansung FT_ENCODING_WANSUNG +#define ft_encoding_johab FT_ENCODING_JOHAB + +#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD +#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT +#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM +#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN + + + /************************************************************************** + * + * @struct: + * FT_CharMapRec + * + * @description: + * The base charmap structure. + * + * @fields: + * face :: + * A handle to the parent face object. + * + * encoding :: + * An @FT_Encoding tag identifying the charmap. Use this with + * @FT_Select_Charmap. + * + * platform_id :: + * An ID number describing the platform for the following encoding ID. + * This comes directly from the TrueType specification and gets + * emulated for other formats. + * + * encoding_id :: + * A platform-specific encoding number. This also comes from the + * TrueType specification and gets emulated similarly. + */ + typedef struct FT_CharMapRec_ + { + FT_Face face; + FT_Encoding encoding; + FT_UShort platform_id; + FT_UShort encoding_id; + + } FT_CharMapRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S E O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @type: + * FT_Face_Internal + * + * @description: + * An opaque handle to an `FT_Face_InternalRec` structure that models the + * private data of a given @FT_Face object. + * + * This structure might change between releases of FreeType~2 and is not + * generally available to client applications. + */ + typedef struct FT_Face_InternalRec_* FT_Face_Internal; + + + /************************************************************************** + * + * @struct: + * FT_FaceRec + * + * @description: + * FreeType root face class structure. A face object models a typeface + * in a font file. + * + * @fields: + * num_faces :: + * The number of faces in the font file. Some font formats can have + * multiple faces in a single font file. + * + * face_index :: + * This field holds two different values. Bits 0-15 are the index of + * the face in the font file (starting with value~0). They are set + * to~0 if there is only one face in the font file. + * + * [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation + * fonts only, holding the named instance index for the current face + * index (starting with value~1; value~0 indicates font access without + * a named instance). For non-variation fonts, bits 16-30 are ignored. + * If we have the third named instance of face~4, say, `face_index` is + * set to 0x00030004. + * + * Bit 31 is always zero (this is, `face_index` is always a positive + * value). + * + * [Since 2.9] Changing the design coordinates with + * @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does + * not influence the named instance index value (only + * @FT_Set_Named_Instance does that). + * + * face_flags :: + * A set of bit flags that give important information about the face; + * see @FT_FACE_FLAG_XXX for the details. + * + * style_flags :: + * The lower 16~bits contain a set of bit flags indicating the style of + * the face; see @FT_STYLE_FLAG_XXX for the details. + * + * [Since 2.6.1] Bits 16-30 hold the number of named instances + * available for the current face if we have a GX or OpenType variation + * (sub)font. Bit 31 is always zero (this is, `style_flags` is always + * a positive value). Note that a variation font has always at least + * one named instance, namely the default instance. + * + * num_glyphs :: + * The number of glyphs in the face. If the face is scalable and has + * sbits (see `num_fixed_sizes`), it is set to the number of outline + * glyphs. + * + * For CID-keyed fonts (not in an SFNT wrapper) this value gives the + * highest CID used in the font. + * + * family_name :: + * The face's family name. This is an ASCII string, usually in + * English, that describes the typeface's family (like 'Times New + * Roman', 'Bodoni', 'Garamond', etc). This is a least common + * denominator used to list fonts. Some formats (TrueType & OpenType) + * provide localized and Unicode versions of this string. Applications + * should use the format-specific interface to access them. Can be + * `NULL` (e.g., in fonts embedded in a PDF file). + * + * In case the font doesn't provide a specific family name entry, + * FreeType tries to synthesize one, deriving it from other name + * entries. + * + * style_name :: + * The face's style name. This is an ASCII string, usually in English, + * that describes the typeface's style (like 'Italic', 'Bold', + * 'Condensed', etc). Not all font formats provide a style name, so + * this field is optional, and can be set to `NULL`. As for + * `family_name`, some formats provide localized and Unicode versions + * of this string. Applications should use the format-specific + * interface to access them. + * + * num_fixed_sizes :: + * The number of bitmap strikes in the face. Even if the face is + * scalable, there might still be bitmap strikes, which are called + * 'sbits' in that case. + * + * available_sizes :: + * An array of @FT_Bitmap_Size for all bitmap strikes in the face. It + * is set to `NULL` if there is no bitmap strike. + * + * Note that FreeType tries to sanitize the strike data since they are + * sometimes sloppy or incorrect, but this can easily fail. + * + * num_charmaps :: + * The number of charmaps in the face. + * + * charmaps :: + * An array of the charmaps of the face. + * + * generic :: + * A field reserved for client uses. See the @FT_Generic type + * description. + * + * bbox :: + * The font bounding box. Coordinates are expressed in font units (see + * `units_per_EM`). The box is large enough to contain any glyph from + * the font. Thus, `bbox.yMax` can be seen as the 'maximum ascender', + * and `bbox.yMin` as the 'minimum descender'. Only relevant for + * scalable formats. + * + * Note that the bounding box might be off by (at least) one pixel for + * hinted fonts. See @FT_Size_Metrics for further discussion. + * + * Note that the bounding box does not vary in OpenType variable fonts + * and should only be used in relation to the default instance. + * + * units_per_EM :: + * The number of font units per EM square for this face. This is + * typically 2048 for TrueType fonts, and 1000 for Type~1 fonts. Only + * relevant for scalable formats. + * + * ascender :: + * The typographic ascender of the face, expressed in font units. For + * font formats not having this information, it is set to `bbox.yMax`. + * Only relevant for scalable formats. + * + * descender :: + * The typographic descender of the face, expressed in font units. For + * font formats not having this information, it is set to `bbox.yMin`. + * Note that this field is negative for values below the baseline. + * Only relevant for scalable formats. + * + * height :: + * This value is the vertical distance between two consecutive + * baselines, expressed in font units. It is always positive. Only + * relevant for scalable formats. + * + * If you want the global glyph height, use `ascender - descender`. + * + * max_advance_width :: + * The maximum advance width, in font units, for all glyphs in this + * face. This can be used to make word wrapping computations faster. + * Only relevant for scalable formats. + * + * max_advance_height :: + * The maximum advance height, in font units, for all glyphs in this + * face. This is only relevant for vertical layouts, and is set to + * `height` for fonts that do not provide vertical metrics. Only + * relevant for scalable formats. + * + * underline_position :: + * The position, in font units, of the underline line for this face. + * It is the center of the underlining stem. Only relevant for + * scalable formats. + * + * underline_thickness :: + * The thickness, in font units, of the underline for this face. Only + * relevant for scalable formats. + * + * glyph :: + * The face's associated glyph slot(s). + * + * size :: + * The current active size for this face. + * + * charmap :: + * The current active charmap for this face. + * + * @note: + * Fields may be changed after a call to @FT_Attach_File or + * @FT_Attach_Stream. + * + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `ascender`, `descender`, `height`, + * `underline_position`, and `underline_thickness`. + * + * Especially for TrueType fonts see also the documentation for + * @FT_Size_Metrics. + */ + typedef struct FT_FaceRec_ + { + FT_Long num_faces; + FT_Long face_index; + + FT_Long face_flags; + FT_Long style_flags; + + FT_Long num_glyphs; + + FT_String* family_name; + FT_String* style_name; + + FT_Int num_fixed_sizes; + FT_Bitmap_Size* available_sizes; + + FT_Int num_charmaps; + FT_CharMap* charmaps; + + FT_Generic generic; + + /*# The following member variables (down to `underline_thickness`) */ + /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ + /*# for bitmap fonts. */ + FT_BBox bbox; + + FT_UShort units_per_EM; + FT_Short ascender; + FT_Short descender; + FT_Short height; + + FT_Short max_advance_width; + FT_Short max_advance_height; + + FT_Short underline_position; + FT_Short underline_thickness; + + FT_GlyphSlot glyph; + FT_Size size; + FT_CharMap charmap; + + /*@private begin */ + + FT_Driver driver; + FT_Memory memory; + FT_Stream stream; + + FT_ListRec sizes_list; + + FT_Generic autohint; /* face-specific auto-hinter data */ + void* extensions; /* unused */ + + FT_Face_Internal internal; + + /*@private end */ + + } FT_FaceRec; + + + /************************************************************************** + * + * @enum: + * FT_FACE_FLAG_XXX + * + * @description: + * A list of bit flags used in the `face_flags` field of the @FT_FaceRec + * structure. They inform client applications of properties of the + * corresponding face. + * + * @values: + * FT_FACE_FLAG_SCALABLE :: + * The face contains outline glyphs. Note that a face can contain + * bitmap strikes also, i.e., a face can have both this flag and + * @FT_FACE_FLAG_FIXED_SIZES set. + * + * FT_FACE_FLAG_FIXED_SIZES :: + * The face contains bitmap strikes. See also the `num_fixed_sizes` + * and `available_sizes` fields of @FT_FaceRec. + * + * FT_FACE_FLAG_FIXED_WIDTH :: + * The face contains fixed-width characters (like Courier, Lucida, + * MonoType, etc.). + * + * FT_FACE_FLAG_SFNT :: + * The face uses the SFNT storage scheme. For now, this means TrueType + * and OpenType. + * + * FT_FACE_FLAG_HORIZONTAL :: + * The face contains horizontal glyph metrics. This should be set for + * all common formats. + * + * FT_FACE_FLAG_VERTICAL :: + * The face contains vertical glyph metrics. This is only available in + * some formats, not all of them. + * + * FT_FACE_FLAG_KERNING :: + * The face contains kerning information. If set, the kerning distance + * can be retrieved using the function @FT_Get_Kerning. Otherwise the + * function always return the vector (0,0). Note that FreeType doesn't + * handle kerning data from the SFNT 'GPOS' table (as present in many + * OpenType fonts). + * + * FT_FACE_FLAG_FAST_GLYPHS :: + * THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. + * + * FT_FACE_FLAG_MULTIPLE_MASTERS :: + * The face contains multiple masters and is capable of interpolating + * between them. Supported formats are Adobe MM, TrueType GX, and + * OpenType variation fonts. + * + * See section @multiple_masters for API details. + * + * FT_FACE_FLAG_GLYPH_NAMES :: + * The face contains glyph names, which can be retrieved using + * @FT_Get_Glyph_Name. Note that some TrueType fonts contain broken + * glyph name tables. Use the function @FT_Has_PS_Glyph_Names when + * needed. + * + * FT_FACE_FLAG_EXTERNAL_STREAM :: + * Used internally by FreeType to indicate that a face's stream was + * provided by the client application and should not be destroyed when + * @FT_Done_Face is called. Don't read or test this flag. + * + * FT_FACE_FLAG_HINTER :: + * The font driver has a hinting machine of its own. For example, with + * TrueType fonts, it makes sense to use data from the SFNT 'gasp' + * table only if the native TrueType hinting engine (with the bytecode + * interpreter) is available and active. + * + * FT_FACE_FLAG_CID_KEYED :: + * The face is CID-keyed. In that case, the face is not accessed by + * glyph indices but by CID values. For subsetted CID-keyed fonts this + * has the consequence that not all index values are a valid argument + * to @FT_Load_Glyph. Only the CID values for which corresponding + * glyphs in the subsetted font exist make `FT_Load_Glyph` return + * successfully; in all other cases you get an + * `FT_Err_Invalid_Argument` error. + * + * Note that CID-keyed fonts that are in an SFNT wrapper (this is, all + * OpenType/CFF fonts) don't have this flag set since the glyphs are + * accessed in the normal way (using contiguous indices); the + * 'CID-ness' isn't visible to the application. + * + * FT_FACE_FLAG_TRICKY :: + * The face is 'tricky', this is, it always needs the font format's + * native hinting engine to get a reasonable result. A typical example + * is the old Chinese font `mingli.ttf` (but not `mingliu.ttc`) that + * uses TrueType bytecode instructions to move and scale all of its + * subglyphs. + * + * It is not possible to auto-hint such fonts using + * @FT_LOAD_FORCE_AUTOHINT; it will also ignore @FT_LOAD_NO_HINTING. + * You have to set both @FT_LOAD_NO_HINTING and @FT_LOAD_NO_AUTOHINT to + * really disable hinting; however, you probably never want this except + * for demonstration purposes. + * + * Currently, there are about a dozen TrueType fonts in the list of + * tricky fonts; they are hard-coded in file `ttobjs.c`. + * + * FT_FACE_FLAG_COLOR :: + * [Since 2.5.1] The face has color glyph tables. See @FT_LOAD_COLOR + * for more information. + * + * FT_FACE_FLAG_VARIATION :: + * [Since 2.9] Set if the current face (or named instance) has been + * altered with @FT_Set_MM_Design_Coordinates, + * @FT_Set_Var_Design_Coordinates, or @FT_Set_Var_Blend_Coordinates. + * This flag is unset by a call to @FT_Set_Named_Instance. + * + * FT_FACE_FLAG_SVG :: + * [Since 2.12] The face has an 'SVG~' OpenType table. + * + * FT_FACE_FLAG_SBIX :: + * [Since 2.12] The face has an 'sbix' OpenType table *and* outlines. + * For such fonts, @FT_FACE_FLAG_SCALABLE is not set by default to + * retain backward compatibility. + * + * FT_FACE_FLAG_SBIX_OVERLAY :: + * [Since 2.12] The face has an 'sbix' OpenType table where outlines + * should be drawn on top of bitmap strikes. + * + */ +#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) +#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) +#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) +#define FT_FACE_FLAG_SFNT ( 1L << 3 ) +#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) +#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) +#define FT_FACE_FLAG_KERNING ( 1L << 6 ) +#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) +#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) +#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) +#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) +#define FT_FACE_FLAG_HINTER ( 1L << 11 ) +#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) +#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) +#define FT_FACE_FLAG_COLOR ( 1L << 14 ) +#define FT_FACE_FLAG_VARIATION ( 1L << 15 ) +#define FT_FACE_FLAG_SVG ( 1L << 16 ) +#define FT_FACE_FLAG_SBIX ( 1L << 17 ) +#define FT_FACE_FLAG_SBIX_OVERLAY ( 1L << 18 ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_HORIZONTAL + * + * @description: + * A macro that returns true whenever a face object contains horizontal + * metrics (this is true for all font formats though). + * + * @also: + * @FT_HAS_VERTICAL can be used to check for vertical metrics. + * + */ +#define FT_HAS_HORIZONTAL( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_VERTICAL + * + * @description: + * A macro that returns true whenever a face object contains real + * vertical metrics (and not only synthesized ones). + * + */ +#define FT_HAS_VERTICAL( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_VERTICAL ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_KERNING + * + * @description: + * A macro that returns true whenever a face object contains kerning data + * that can be accessed with @FT_Get_Kerning. + * + */ +#define FT_HAS_KERNING( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_KERNING ) ) + + + /************************************************************************** + * + * @macro: + * FT_IS_SCALABLE + * + * @description: + * A macro that returns true whenever a face object contains a scalable + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, and + * PFR font formats). + * + */ +#define FT_IS_SCALABLE( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_SCALABLE ) ) + + + /************************************************************************** + * + * @macro: + * FT_IS_SFNT + * + * @description: + * A macro that returns true whenever a face object contains a font whose + * format is based on the SFNT storage scheme. This usually means: + * TrueType fonts, OpenType fonts, as well as SFNT-based embedded bitmap + * fonts. + * + * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and + * @FT_TRUETYPE_TABLES_H are available. + * + */ +#define FT_IS_SFNT( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_SFNT ) ) + + + /************************************************************************** + * + * @macro: + * FT_IS_FIXED_WIDTH + * + * @description: + * A macro that returns true whenever a face object contains a font face + * that contains fixed-width (or 'monospace', 'fixed-pitch', etc.) + * glyphs. + * + */ +#define FT_IS_FIXED_WIDTH( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_FIXED_SIZES + * + * @description: + * A macro that returns true whenever a face object contains some + * embedded bitmaps. See the `available_sizes` field of the @FT_FaceRec + * structure. + * + */ +#define FT_HAS_FIXED_SIZES( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_FAST_GLYPHS + * + * @description: + * Deprecated. + * + */ +#define FT_HAS_FAST_GLYPHS( face ) 0 + + + /************************************************************************** + * + * @macro: + * FT_HAS_GLYPH_NAMES + * + * @description: + * A macro that returns true whenever a face object contains some glyph + * names that can be accessed through @FT_Get_Glyph_Name. + * + */ +#define FT_HAS_GLYPH_NAMES( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_MULTIPLE_MASTERS + * + * @description: + * A macro that returns true whenever a face object contains some + * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H + * are then available to choose the exact design you want. + * + */ +#define FT_HAS_MULTIPLE_MASTERS( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) ) + + + /************************************************************************** + * + * @macro: + * FT_IS_NAMED_INSTANCE + * + * @description: + * A macro that returns true whenever a face object is a named instance + * of a GX or OpenType variation font. + * + * [Since 2.9] Changing the design coordinates with + * @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does + * not influence the return value of this macro (only + * @FT_Set_Named_Instance does that). + * + * @since: + * 2.7 + * + */ +#define FT_IS_NAMED_INSTANCE( face ) \ + ( !!( (face)->face_index & 0x7FFF0000L ) ) + + + /************************************************************************** + * + * @macro: + * FT_IS_VARIATION + * + * @description: + * A macro that returns true whenever a face object has been altered by + * @FT_Set_MM_Design_Coordinates, @FT_Set_Var_Design_Coordinates, or + * @FT_Set_Var_Blend_Coordinates. + * + * @since: + * 2.9 + * + */ +#define FT_IS_VARIATION( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_VARIATION ) ) + + + /************************************************************************** + * + * @macro: + * FT_IS_CID_KEYED + * + * @description: + * A macro that returns true whenever a face object contains a CID-keyed + * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more details. + * + * If this macro is true, all functions defined in @FT_CID_H are + * available. + * + */ +#define FT_IS_CID_KEYED( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_CID_KEYED ) ) + + + /************************************************************************** + * + * @macro: + * FT_IS_TRICKY + * + * @description: + * A macro that returns true whenever a face represents a 'tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ +#define FT_IS_TRICKY( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_TRICKY ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_COLOR + * + * @description: + * A macro that returns true whenever a face object contains tables for + * color glyphs. + * + * @since: + * 2.5.1 + * + */ +#define FT_HAS_COLOR( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_COLOR ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_SVG + * + * @description: + * A macro that returns true whenever a face object contains an 'SVG~' + * OpenType table. + * + * @since: + * 2.12 + */ +#define FT_HAS_SVG( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_SVG ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_SBIX + * + * @description: + * A macro that returns true whenever a face object contains an 'sbix' + * OpenType table *and* outline glyphs. + * + * Currently, FreeType only supports bitmap glyphs in PNG format for this + * table (i.e., JPEG and TIFF formats are unsupported, as are + * Apple-specific formats not part of the OpenType specification). + * + * @note: + * For backward compatibility, a font with an 'sbix' table is treated as + * a bitmap-only face. Using @FT_Open_Face with + * @FT_PARAM_TAG_IGNORE_SBIX, an application can switch off 'sbix' + * handling so that the face is treated as an ordinary outline font with + * scalable outlines. + * + * Here is some pseudo code that roughly illustrates how to implement + * 'sbix' handling according to the OpenType specification. + * + * ``` + * if ( FT_HAS_SBIX( face ) ) + * { + * // open font as a scalable one without sbix handling + * FT_Face face2; + * FT_Parameter param = { FT_PARAM_TAG_IGNORE_SBIX, NULL }; + * FT_Open_Args args = { FT_OPEN_PARAMS | ..., + * ..., + * 1, ¶m }; + * + * + * FT_Open_Face( library, &args, 0, &face2 ); + * + * available_size` as necessary into + * `preferred_sizes`[*]> + * + * for ( i = 0; i < face->num_fixed_sizes; i++ ) + * { + * size = preferred_sizes[i].size; + * + * error = FT_Set_Pixel_Sizes( face, size, size ); + * + * + * // check whether we have a glyph in a bitmap strike + * error = FT_Load_Glyph( face, + * glyph_index, + * FT_LOAD_SBITS_ONLY | + * FT_LOAD_BITMAP_METRICS_ONLY ); + * if ( error == FT_Err_Invalid_Argument ) + * continue; + * else if ( error ) + * + * else + * break; + * } + * + * if ( i != face->num_fixed_sizes ) + * + * + * if ( i == face->num_fixed_sizes || + * FT_HAS_SBIX_OVERLAY( face ) ) + * + * } + * ``` + * + * [*] Assuming a target value of 400dpi and available strike sizes 100, + * 200, 300, and 400dpi, a possible order might be [400, 200, 300, 100]: + * scaling 200dpi to 400dpi usually gives better results than scaling + * 300dpi to 400dpi; it is also much faster. However, scaling 100dpi to + * 400dpi can yield a too pixelated result, thus the preference might be + * 300dpi over 100dpi. + * + * @since: + * 2.12 + */ +#define FT_HAS_SBIX( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_SBIX ) ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_SBIX_OVERLAY + * + * @description: + * A macro that returns true whenever a face object contains an 'sbix' + * OpenType table with bit~1 in its `flags` field set, instructing the + * application to overlay the bitmap strike with the corresponding + * outline glyph. See @FT_HAS_SBIX for pseudo code how to use it. + * + * @since: + * 2.12 + */ +#define FT_HAS_SBIX_OVERLAY( face ) \ + ( !!( (face)->face_flags & FT_FACE_FLAG_SBIX_OVERLAY ) ) + + + /************************************************************************** + * + * @enum: + * FT_STYLE_FLAG_XXX + * + * @description: + * A list of bit flags to indicate the style of a given face. These are + * used in the `style_flags` field of @FT_FaceRec. + * + * @values: + * FT_STYLE_FLAG_ITALIC :: + * The face style is italic or oblique. + * + * FT_STYLE_FLAG_BOLD :: + * The face is bold. + * + * @note: + * The style information as provided by FreeType is very basic. More + * details are beyond the scope and should be done on a higher level (for + * example, by analyzing various fields of the 'OS/2' table in SFNT based + * fonts). + */ +#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) +#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) + + + /************************************************************************** + * + * @type: + * FT_Size_Internal + * + * @description: + * An opaque handle to an `FT_Size_InternalRec` structure, used to model + * private data of a given @FT_Size object. + */ + typedef struct FT_Size_InternalRec_* FT_Size_Internal; + + + /************************************************************************** + * + * @struct: + * FT_Size_Metrics + * + * @description: + * The size metrics structure gives the metrics of a size object. + * + * @fields: + * x_ppem :: + * The width of the scaled EM square in pixels, hence the term 'ppem' + * (pixels per EM). It is also referred to as 'nominal width'. + * + * y_ppem :: + * The height of the scaled EM square in pixels, hence the term 'ppem' + * (pixels per EM). It is also referred to as 'nominal height'. + * + * x_scale :: + * A 16.16 fractional scaling value to convert horizontal metrics from + * font units to 26.6 fractional pixels. Only relevant for scalable + * font formats. + * + * y_scale :: + * A 16.16 fractional scaling value to convert vertical metrics from + * font units to 26.6 fractional pixels. Only relevant for scalable + * font formats. + * + * ascender :: + * The ascender in 26.6 fractional pixels, rounded up to an integer + * value. See @FT_FaceRec for the details. + * + * descender :: + * The descender in 26.6 fractional pixels, rounded down to an integer + * value. See @FT_FaceRec for the details. + * + * height :: + * The height in 26.6 fractional pixels, rounded to an integer value. + * See @FT_FaceRec for the details. + * + * max_advance :: + * The maximum advance width in 26.6 fractional pixels, rounded to an + * integer value. See @FT_FaceRec for the details. + * + * @note: + * The scaling values, if relevant, are determined first during a size + * changing operation. The remaining fields are then set by the driver. + * For scalable formats, they are usually set to scaled values of the + * corresponding fields in @FT_FaceRec. Some values like ascender or + * descender are rounded for historical reasons; more precise values (for + * outline fonts) can be derived by scaling the corresponding @FT_FaceRec + * values manually, with code similar to the following. + * + * ``` + * scaled_ascender = FT_MulFix( face->ascender, + * size_metrics->y_scale ); + * ``` + * + * Note that due to glyph hinting and the selected rendering mode these + * values are usually not exact; consequently, they must be treated as + * unreliable with an error margin of at least one pixel! + * + * Indeed, the only way to get the exact metrics is to render _all_ + * glyphs. As this would be a definite performance hit, it is up to + * client applications to perform such computations. + * + * The `FT_Size_Metrics` structure is valid for bitmap fonts also. + * + * + * **TrueType fonts with native bytecode hinting** + * + * All applications that handle TrueType fonts with native hinting must + * be aware that TTFs expect different rounding of vertical font + * dimensions. The application has to cater for this, especially if it + * wants to rely on a TTF's vertical data (for example, to properly align + * box characters vertically). + * + * Only the application knows _in advance_ that it is going to use native + * hinting for TTFs! FreeType, on the other hand, selects the hinting + * mode not at the time of creating an @FT_Size object but much later, + * namely while calling @FT_Load_Glyph. + * + * Here is some pseudo code that illustrates a possible solution. + * + * ``` + * font_format = FT_Get_Font_Format( face ); + * + * if ( !strcmp( font_format, "TrueType" ) && + * do_native_bytecode_hinting ) + * { + * ascender = ROUND( FT_MulFix( face->ascender, + * size_metrics->y_scale ) ); + * descender = ROUND( FT_MulFix( face->descender, + * size_metrics->y_scale ) ); + * } + * else + * { + * ascender = size_metrics->ascender; + * descender = size_metrics->descender; + * } + * + * height = size_metrics->height; + * max_advance = size_metrics->max_advance; + * ``` + */ + typedef struct FT_Size_Metrics_ + { + FT_UShort x_ppem; /* horizontal pixels per EM */ + FT_UShort y_ppem; /* vertical pixels per EM */ + + FT_Fixed x_scale; /* scaling values used to convert font */ + FT_Fixed y_scale; /* units to 26.6 fractional pixels */ + + FT_Pos ascender; /* ascender in 26.6 frac. pixels */ + FT_Pos descender; /* descender in 26.6 frac. pixels */ + FT_Pos height; /* text height in 26.6 frac. pixels */ + FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ + + } FT_Size_Metrics; + + + /************************************************************************** + * + * @struct: + * FT_SizeRec + * + * @description: + * FreeType root size class structure. A size object models a face + * object at a given size. + * + * @fields: + * face :: + * Handle to the parent face object. + * + * generic :: + * A typeless pointer, unused by the FreeType library or any of its + * drivers. It can be used by client applications to link their own + * data to each size object. + * + * metrics :: + * Metrics for this size object. This field is read-only. + */ + typedef struct FT_SizeRec_ + { + FT_Face face; /* parent face object */ + FT_Generic generic; /* generic pointer for client uses */ + FT_Size_Metrics metrics; /* size metrics */ + FT_Size_Internal internal; + + } FT_SizeRec; + + + /************************************************************************** + * + * @struct: + * FT_SubGlyph + * + * @description: + * The subglyph structure is an internal object used to describe + * subglyphs (for example, in the case of composites). + * + * @note: + * The subglyph implementation is not part of the high-level API, hence + * the forward structure declaration. + * + * You can however retrieve subglyph information with + * @FT_Get_SubGlyph_Info. + */ + typedef struct FT_SubGlyphRec_* FT_SubGlyph; + + + /************************************************************************** + * + * @type: + * FT_Slot_Internal + * + * @description: + * An opaque handle to an `FT_Slot_InternalRec` structure, used to model + * private data of a given @FT_GlyphSlot object. + */ + typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; + + + /************************************************************************** + * + * @struct: + * FT_GlyphSlotRec + * + * @description: + * FreeType root glyph slot class structure. A glyph slot is a container + * where individual glyphs can be loaded, be they in outline or bitmap + * format. + * + * @fields: + * library :: + * A handle to the FreeType library instance this slot belongs to. + * + * face :: + * A handle to the parent face object. + * + * next :: + * In some cases (like some font tools), several glyph slots per face + * object can be a good thing. As this is rare, the glyph slots are + * listed through a direct, single-linked list using its `next` field. + * + * glyph_index :: + * [Since 2.10] The glyph index passed as an argument to @FT_Load_Glyph + * while initializing the glyph slot. + * + * generic :: + * A typeless pointer unused by the FreeType library or any of its + * drivers. It can be used by client applications to link their own + * data to each glyph slot object. + * + * metrics :: + * The metrics of the last loaded glyph in the slot. The returned + * values depend on the last load flags (see the @FT_Load_Glyph API + * function) and can be expressed either in 26.6 fractional pixels or + * font units. + * + * Note that even when the glyph image is transformed, the metrics are + * not. + * + * linearHoriAdvance :: + * The advance width of the unhinted glyph. Its value is expressed in + * 16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when + * loading the glyph. This field can be important to perform correct + * WYSIWYG layout. Only relevant for outline glyphs. + * + * linearVertAdvance :: + * The advance height of the unhinted glyph. Its value is expressed in + * 16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when + * loading the glyph. This field can be important to perform correct + * WYSIWYG layout. Only relevant for outline glyphs. + * + * advance :: + * This shorthand is, depending on @FT_LOAD_IGNORE_TRANSFORM, the + * transformed (hinted) advance width for the glyph, in 26.6 fractional + * pixel format. As specified with @FT_LOAD_VERTICAL_LAYOUT, it uses + * either the `horiAdvance` or the `vertAdvance` value of `metrics` + * field. + * + * format :: + * This field indicates the format of the image contained in the glyph + * slot. Typically @FT_GLYPH_FORMAT_BITMAP, @FT_GLYPH_FORMAT_OUTLINE, + * or @FT_GLYPH_FORMAT_COMPOSITE, but other values are possible. + * + * bitmap :: + * This field is used as a bitmap descriptor. Note that the address + * and content of the bitmap buffer can change between calls of + * @FT_Load_Glyph and a few other functions. + * + * bitmap_left :: + * The bitmap's left bearing expressed in integer pixels. + * + * bitmap_top :: + * The bitmap's top bearing expressed in integer pixels. This is the + * distance from the baseline to the top-most glyph scanline, upwards + * y~coordinates being **positive**. + * + * outline :: + * The outline descriptor for the current glyph image if its format is + * @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is loaded, `outline` can be + * transformed, distorted, emboldened, etc. However, it must not be + * freed. + * + * [Since 2.10.1] If @FT_LOAD_NO_SCALE is set, outline coordinates of + * OpenType variation fonts for a selected instance are internally + * handled as 26.6 fractional font units but returned as (rounded) + * integers, as expected. To get unrounded font units, don't use + * @FT_LOAD_NO_SCALE but load the glyph with @FT_LOAD_NO_HINTING and + * scale it, using the font's `units_per_EM` value as the ppem. + * + * num_subglyphs :: + * The number of subglyphs in a composite glyph. This field is only + * valid for the composite glyph format that should normally only be + * loaded with the @FT_LOAD_NO_RECURSE flag. + * + * subglyphs :: + * An array of subglyph descriptors for composite glyphs. There are + * `num_subglyphs` elements in there. Currently internal to FreeType. + * + * control_data :: + * Certain font drivers can also return the control data for a given + * glyph image (e.g. TrueType bytecode, Type~1 charstrings, etc.). + * This field is a pointer to such data; it is currently internal to + * FreeType. + * + * control_len :: + * This is the length in bytes of the control data. Currently internal + * to FreeType. + * + * other :: + * Reserved. + * + * lsb_delta :: + * The difference between hinted and unhinted left side bearing while + * auto-hinting is active. Zero otherwise. + * + * rsb_delta :: + * The difference between hinted and unhinted right side bearing while + * auto-hinting is active. Zero otherwise. + * + * @note: + * If @FT_Load_Glyph is called with default flags (see @FT_LOAD_DEFAULT) + * the glyph image is loaded in the glyph slot in its native format + * (e.g., an outline glyph for TrueType and Type~1 formats). [Since 2.9] + * The prospective bitmap metrics are calculated according to + * @FT_LOAD_TARGET_XXX and other flags even for the outline glyph, even + * if @FT_LOAD_RENDER is not set. + * + * This image can later be converted into a bitmap by calling + * @FT_Render_Glyph. This function searches the current renderer for the + * native image's format, then invokes it. + * + * The renderer is in charge of transforming the native image through the + * slot's face transformation fields, then converting it into a bitmap + * that is returned in `slot->bitmap`. + * + * Note that `slot->bitmap_left` and `slot->bitmap_top` are also used to + * specify the position of the bitmap relative to the current pen + * position (e.g., coordinates (0,0) on the baseline). Of course, + * `slot->format` is also changed to @FT_GLYPH_FORMAT_BITMAP. + * + * Here is a small pseudo code fragment that shows how to use `lsb_delta` + * and `rsb_delta` to do fractional positioning of glyphs: + * + * ``` + * FT_GlyphSlot slot = face->glyph; + * FT_Pos origin_x = 0; + * + * + * for all glyphs do + * + * + * FT_Outline_Translate( slot->outline, origin_x & 63, 0 ); + * + * + * + * + * + * origin_x += slot->advance.x; + * origin_x += slot->lsb_delta - slot->rsb_delta; + * endfor + * ``` + * + * Here is another small pseudo code fragment that shows how to use + * `lsb_delta` and `rsb_delta` to improve integer positioning of glyphs: + * + * ``` + * FT_GlyphSlot slot = face->glyph; + * FT_Pos origin_x = 0; + * FT_Pos prev_rsb_delta = 0; + * + * + * for all glyphs do + * + * + * + * + * if ( prev_rsb_delta - slot->lsb_delta > 32 ) + * origin_x -= 64; + * else if ( prev_rsb_delta - slot->lsb_delta < -31 ) + * origin_x += 64; + * + * prev_rsb_delta = slot->rsb_delta; + * + * + * + * origin_x += slot->advance.x; + * endfor + * ``` + * + * If you use strong auto-hinting, you **must** apply these delta values! + * Otherwise you will experience far too large inter-glyph spacing at + * small rendering sizes in most cases. Note that it doesn't harm to use + * the above code for other hinting modes also, since the delta values + * are zero then. + */ + typedef struct FT_GlyphSlotRec_ + { + FT_Library library; + FT_Face face; + FT_GlyphSlot next; + FT_UInt glyph_index; /* new in 2.10; was reserved previously */ + FT_Generic generic; + + FT_Glyph_Metrics metrics; + FT_Fixed linearHoriAdvance; + FT_Fixed linearVertAdvance; + FT_Vector advance; + + FT_Glyph_Format format; + + FT_Bitmap bitmap; + FT_Int bitmap_left; + FT_Int bitmap_top; + + FT_Outline outline; + + FT_UInt num_subglyphs; + FT_SubGlyph subglyphs; + + void* control_data; + long control_len; + + FT_Pos lsb_delta; + FT_Pos rsb_delta; + + void* other; + + FT_Slot_Internal internal; + + } FT_GlyphSlotRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* F U N C T I O N S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @function: + * FT_Init_FreeType + * + * @description: + * Initialize a new FreeType library object. The set of modules that are + * registered by this function is determined at build time. + * + * @output: + * alibrary :: + * A handle to a new library object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * In case you want to provide your own memory allocating routines, use + * @FT_New_Library instead, followed by a call to @FT_Add_Default_Modules + * (or a series of calls to @FT_Add_Module) and + * @FT_Set_Default_Properties. + * + * See the documentation of @FT_Library and @FT_Face for multi-threading + * issues. + * + * If you need reference-counting (cf. @FT_Reference_Library), use + * @FT_New_Library and @FT_Done_Library. + * + * If compilation option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES` is + * set, this function reads the `FREETYPE_PROPERTIES` environment + * variable to control driver properties. See section @properties for + * more. + */ + FT_EXPORT( FT_Error ) + FT_Init_FreeType( FT_Library *alibrary ); + + + /************************************************************************** + * + * @function: + * FT_Done_FreeType + * + * @description: + * Destroy a given FreeType library object and all of its children, + * including resources, drivers, faces, sizes, etc. + * + * @input: + * library :: + * A handle to the target library object. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Done_FreeType( FT_Library library ); + + + /************************************************************************** + * + * @enum: + * FT_OPEN_XXX + * + * @description: + * A list of bit field constants used within the `flags` field of the + * @FT_Open_Args structure. + * + * @values: + * FT_OPEN_MEMORY :: + * This is a memory-based stream. + * + * FT_OPEN_STREAM :: + * Copy the stream from the `stream` field. + * + * FT_OPEN_PATHNAME :: + * Create a new input stream from a C~path name. + * + * FT_OPEN_DRIVER :: + * Use the `driver` field. + * + * FT_OPEN_PARAMS :: + * Use the `num_params` and `params` fields. + * + * @note: + * The `FT_OPEN_MEMORY`, `FT_OPEN_STREAM`, and `FT_OPEN_PATHNAME` flags + * are mutually exclusive. + */ +#define FT_OPEN_MEMORY 0x1 +#define FT_OPEN_STREAM 0x2 +#define FT_OPEN_PATHNAME 0x4 +#define FT_OPEN_DRIVER 0x8 +#define FT_OPEN_PARAMS 0x10 + + + /* these constants are deprecated; use the corresponding `FT_OPEN_XXX` */ + /* values instead */ +#define ft_open_memory FT_OPEN_MEMORY +#define ft_open_stream FT_OPEN_STREAM +#define ft_open_pathname FT_OPEN_PATHNAME +#define ft_open_driver FT_OPEN_DRIVER +#define ft_open_params FT_OPEN_PARAMS + + + /************************************************************************** + * + * @struct: + * FT_Parameter + * + * @description: + * A simple structure to pass more or less generic parameters to + * @FT_Open_Face and @FT_Face_Properties. + * + * @fields: + * tag :: + * A four-byte identification tag. + * + * data :: + * A pointer to the parameter data. + * + * @note: + * The ID and function of parameters are driver-specific. See section + * @parameter_tags for more information. + */ + typedef struct FT_Parameter_ + { + FT_ULong tag; + FT_Pointer data; + + } FT_Parameter; + + + /************************************************************************** + * + * @struct: + * FT_Open_Args + * + * @description: + * A structure to indicate how to open a new font file or stream. A + * pointer to such a structure can be used as a parameter for the + * functions @FT_Open_Face and @FT_Attach_Stream. + * + * @fields: + * flags :: + * A set of bit flags indicating how to use the structure. + * + * memory_base :: + * The first byte of the file in memory. + * + * memory_size :: + * The size in bytes of the file in memory. + * + * pathname :: + * A pointer to an 8-bit file pathname, which must be a C~string (i.e., + * no null bytes except at the very end). The pointer is not owned by + * FreeType. + * + * stream :: + * A handle to a source stream object. + * + * driver :: + * This field is exclusively used by @FT_Open_Face; it simply specifies + * the font driver to use for opening the face. If set to `NULL`, + * FreeType tries to load the face with each one of the drivers in its + * list. + * + * num_params :: + * The number of extra parameters. + * + * params :: + * Extra parameters passed to the font driver when opening a new face. + * + * @note: + * The stream type is determined by the contents of `flags`: + * + * If the @FT_OPEN_MEMORY bit is set, assume that this is a memory file + * of `memory_size` bytes, located at `memory_address`. The data are not + * copied, and the client is responsible for releasing and destroying + * them _after_ the corresponding call to @FT_Done_Face. + * + * Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a custom + * input stream `stream` is used. + * + * Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this is a + * normal file and use `pathname` to open it. + * + * If none of the above bits are set or if multiple are set at the same + * time, the flags are invalid and @FT_Open_Face fails. + * + * If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to open + * the file with the driver whose handler is in `driver`. + * + * If the @FT_OPEN_PARAMS bit is set, the parameters given by + * `num_params` and `params` is used. They are ignored otherwise. + * + * Ideally, both the `pathname` and `params` fields should be tagged as + * 'const'; this is missing for API backward compatibility. In other + * words, applications should treat them as read-only. + */ + typedef struct FT_Open_Args_ + { + FT_UInt flags; + const FT_Byte* memory_base; + FT_Long memory_size; + FT_String* pathname; + FT_Stream stream; + FT_Module driver; + FT_Int num_params; + FT_Parameter* params; + + } FT_Open_Args; + + + /************************************************************************** + * + * @function: + * FT_New_Face + * + * @description: + * Call @FT_Open_Face to open a font by its pathname. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * pathname :: + * A path to the font file. + * + * face_index :: + * See @FT_Open_Face for a detailed description of this parameter. + * + * @output: + * aface :: + * A handle to a new face object. If `face_index` is greater than or + * equal to zero, it must be non-`NULL`. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The `pathname` string should be recognizable as such by a standard + * `fopen` call on your system; in particular, this means that `pathname` + * must not contain null bytes. If that is not sufficient to address all + * file name possibilities (for example, to handle wide character file + * names on Windows in UTF-16 encoding) you might use @FT_Open_Face to + * pass a memory array or a stream object instead. + * + * Use @FT_Done_Face to destroy the created @FT_Face object (along with + * its slot and sizes). + */ + FT_EXPORT( FT_Error ) + FT_New_Face( FT_Library library, + const char* filepathname, + FT_Long face_index, + FT_Face *aface ); + + + /************************************************************************** + * + * @function: + * FT_New_Memory_Face + * + * @description: + * Call @FT_Open_Face to open a font that has been loaded into memory. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * file_base :: + * A pointer to the beginning of the font data. + * + * file_size :: + * The size of the memory chunk used by the font data. + * + * face_index :: + * See @FT_Open_Face for a detailed description of this parameter. + * + * @output: + * aface :: + * A handle to a new face object. If `face_index` is greater than or + * equal to zero, it must be non-`NULL`. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You must not deallocate the memory before calling @FT_Done_Face. + */ + FT_EXPORT( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); + + + /************************************************************************** + * + * @function: + * FT_Open_Face + * + * @description: + * Create a face object from a given resource described by @FT_Open_Args. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * args :: + * A pointer to an `FT_Open_Args` structure that must be filled by the + * caller. + * + * face_index :: + * This field holds two different values. Bits 0-15 are the index of + * the face in the font file (starting with value~0). Set it to~0 if + * there is only one face in the font file. + * + * [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation + * fonts only, specifying the named instance index for the current face + * index (starting with value~1; value~0 makes FreeType ignore named + * instances). For non-variation fonts, bits 16-30 are ignored. + * Assuming that you want to access the third named instance in face~4, + * `face_index` should be set to 0x00030004. If you want to access + * face~4 without variation handling, simply set `face_index` to + * value~4. + * + * `FT_Open_Face` and its siblings can be used to quickly check whether + * the font format of a given font resource is supported by FreeType. + * In general, if the `face_index` argument is negative, the function's + * return value is~0 if the font format is recognized, or non-zero + * otherwise. The function allocates a more or less empty face handle + * in `*aface` (if `aface` isn't `NULL`); the only two useful fields in + * this special case are `face->num_faces` and `face->style_flags`. + * For any negative value of `face_index`, `face->num_faces` gives the + * number of faces within the font file. For the negative value + * '-(N+1)' (with 'N' a non-negative 16-bit value), bits 16-30 in + * `face->style_flags` give the number of named instances in face 'N' + * if we have a variation font (or zero otherwise). After examination, + * the returned @FT_Face structure should be deallocated with a call to + * @FT_Done_Face. + * + * @output: + * aface :: + * A handle to a new face object. If `face_index` is greater than or + * equal to zero, it must be non-`NULL`. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Unlike FreeType 1.x, this function automatically creates a glyph slot + * for the face object that can be accessed directly through + * `face->glyph`. + * + * Each new face object created with this function also owns a default + * @FT_Size object, accessible as `face->size`. + * + * One @FT_Library instance can have multiple face objects, this is, + * @FT_Open_Face and its siblings can be called multiple times using the + * same `library` argument. + * + * See the discussion of reference counters in the description of + * @FT_Reference_Face. + * + * If `FT_OPEN_STREAM` is set in `args->flags`, the stream in + * `args->stream` is automatically closed before this function returns + * any error (including `FT_Err_Invalid_Argument`). + * + * @example: + * To loop over all faces, use code similar to the following snippet + * (omitting the error handling). + * + * ``` + * ... + * FT_Face face; + * FT_Long i, num_faces; + * + * + * error = FT_Open_Face( library, args, -1, &face ); + * if ( error ) { ... } + * + * num_faces = face->num_faces; + * FT_Done_Face( face ); + * + * for ( i = 0; i < num_faces; i++ ) + * { + * ... + * error = FT_Open_Face( library, args, i, &face ); + * ... + * FT_Done_Face( face ); + * ... + * } + * ``` + * + * To loop over all valid values for `face_index`, use something similar + * to the following snippet, again without error handling. The code + * accesses all faces immediately (thus only a single call of + * `FT_Open_Face` within the do-loop), with and without named instances. + * + * ``` + * ... + * FT_Face face; + * + * FT_Long num_faces = 0; + * FT_Long num_instances = 0; + * + * FT_Long face_idx = 0; + * FT_Long instance_idx = 0; + * + * + * do + * { + * FT_Long id = ( instance_idx << 16 ) + face_idx; + * + * + * error = FT_Open_Face( library, args, id, &face ); + * if ( error ) { ... } + * + * num_faces = face->num_faces; + * num_instances = face->style_flags >> 16; + * + * ... + * + * FT_Done_Face( face ); + * + * if ( instance_idx < num_instances ) + * instance_idx++; + * else + * { + * face_idx++; + * instance_idx = 0; + * } + * + * } while ( face_idx < num_faces ) + * ``` + */ + FT_EXPORT( FT_Error ) + FT_Open_Face( FT_Library library, + const FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ); + + + /************************************************************************** + * + * @function: + * FT_Attach_File + * + * @description: + * Call @FT_Attach_Stream to attach a file. + * + * @inout: + * face :: + * The target face object. + * + * @input: + * filepathname :: + * The pathname. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Attach_File( FT_Face face, + const char* filepathname ); + + + /************************************************************************** + * + * @function: + * FT_Attach_Stream + * + * @description: + * 'Attach' data to a face object. Normally, this is used to read + * additional information for the face object. For example, you can + * attach an AFM file that comes with a Type~1 font to get the kerning + * values and other metrics. + * + * @inout: + * face :: + * The target face object. + * + * @input: + * parameters :: + * A pointer to @FT_Open_Args that must be filled by the caller. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The meaning of the 'attach' (i.e., what really happens when the new + * file is read) is not fixed by FreeType itself. It really depends on + * the font format (and thus the font driver). + * + * Client applications are expected to know what they are doing when + * invoking this function. Most drivers simply do not implement file or + * stream attachments. + */ + FT_EXPORT( FT_Error ) + FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ); + + + /************************************************************************** + * + * @function: + * FT_Reference_Face + * + * @description: + * A counter gets initialized to~1 at the time an @FT_Face structure is + * created. This function increments the counter. @FT_Done_Face then + * only destroys a face if the counter is~1, otherwise it simply + * decrements the counter. + * + * This function helps in managing life-cycles of structures that + * reference @FT_Face objects. + * + * @input: + * face :: + * A handle to a target face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.4.2 + * + */ + FT_EXPORT( FT_Error ) + FT_Reference_Face( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Done_Face + * + * @description: + * Discard a given face object, as well as all of its child slots and + * sizes. + * + * @input: + * face :: + * A handle to a target face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * See the discussion of reference counters in the description of + * @FT_Reference_Face. + */ + FT_EXPORT( FT_Error ) + FT_Done_Face( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Select_Size + * + * @description: + * Select a bitmap strike. To be more precise, this function sets the + * scaling factors of the active @FT_Size object in a face so that + * bitmaps from this particular strike are taken by @FT_Load_Glyph and + * friends. + * + * @inout: + * face :: + * A handle to a target face object. + * + * @input: + * strike_index :: + * The index of the bitmap strike in the `available_sizes` field of + * @FT_FaceRec structure. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * For bitmaps embedded in outline fonts it is common that only a subset + * of the available glyphs at a given ppem value is available. FreeType + * silently uses outlines if there is no bitmap for a given glyph index. + * + * For GX and OpenType variation fonts, a bitmap strike makes sense only + * if the default instance is active (this is, no glyph variation takes + * place); otherwise, FreeType simply ignores bitmap strikes. The same + * is true for all named instances that are different from the default + * instance. + * + * Don't use this function if you are using the FreeType cache API. + */ + FT_EXPORT( FT_Error ) + FT_Select_Size( FT_Face face, + FT_Int strike_index ); + + + /************************************************************************** + * + * @enum: + * FT_Size_Request_Type + * + * @description: + * An enumeration type that lists the supported size request types, i.e., + * what input size (in font units) maps to the requested output size (in + * pixels, as computed from the arguments of @FT_Size_Request). + * + * @values: + * FT_SIZE_REQUEST_TYPE_NOMINAL :: + * The nominal size. The `units_per_EM` field of @FT_FaceRec is used + * to determine both scaling values. + * + * This is the standard scaling found in most applications. In + * particular, use this size request type for TrueType fonts if they + * provide optical scaling or something similar. Note, however, that + * `units_per_EM` is a rather abstract value which bears no relation to + * the actual size of the glyphs in a font. + * + * FT_SIZE_REQUEST_TYPE_REAL_DIM :: + * The real dimension. The sum of the `ascender` and (minus of) the + * `descender` fields of @FT_FaceRec is used to determine both scaling + * values. + * + * FT_SIZE_REQUEST_TYPE_BBOX :: + * The font bounding box. The width and height of the `bbox` field of + * @FT_FaceRec are used to determine the horizontal and vertical + * scaling value, respectively. + * + * FT_SIZE_REQUEST_TYPE_CELL :: + * The `max_advance_width` field of @FT_FaceRec is used to determine + * the horizontal scaling value; the vertical scaling value is + * determined the same way as @FT_SIZE_REQUEST_TYPE_REAL_DIM does. + * Finally, both scaling values are set to the smaller one. This type + * is useful if you want to specify the font size for, say, a window of + * a given dimension and 80x24 cells. + * + * FT_SIZE_REQUEST_TYPE_SCALES :: + * Specify the scaling values directly. + * + * @note: + * The above descriptions only apply to scalable formats. For bitmap + * formats, the behaviour is up to the driver. + * + * See the note section of @FT_Size_Metrics if you wonder how size + * requesting relates to scaling values. + */ + typedef enum FT_Size_Request_Type_ + { + FT_SIZE_REQUEST_TYPE_NOMINAL, + FT_SIZE_REQUEST_TYPE_REAL_DIM, + FT_SIZE_REQUEST_TYPE_BBOX, + FT_SIZE_REQUEST_TYPE_CELL, + FT_SIZE_REQUEST_TYPE_SCALES, + + FT_SIZE_REQUEST_TYPE_MAX + + } FT_Size_Request_Type; + + + /************************************************************************** + * + * @struct: + * FT_Size_RequestRec + * + * @description: + * A structure to model a size request. + * + * @fields: + * type :: + * See @FT_Size_Request_Type. + * + * width :: + * The desired width, given as a 26.6 fractional point value (with 72pt + * = 1in). + * + * height :: + * The desired height, given as a 26.6 fractional point value (with + * 72pt = 1in). + * + * horiResolution :: + * The horizontal resolution (dpi, i.e., pixels per inch). If set to + * zero, `width` is treated as a 26.6 fractional **pixel** value, which + * gets internally rounded to an integer. + * + * vertResolution :: + * The vertical resolution (dpi, i.e., pixels per inch). If set to + * zero, `height` is treated as a 26.6 fractional **pixel** value, + * which gets internally rounded to an integer. + * + * @note: + * If `width` is zero, the horizontal scaling value is set equal to the + * vertical scaling value, and vice versa. + * + * If `type` is `FT_SIZE_REQUEST_TYPE_SCALES`, `width` and `height` are + * interpreted directly as 16.16 fractional scaling values, without any + * further modification, and both `horiResolution` and `vertResolution` + * are ignored. + */ + typedef struct FT_Size_RequestRec_ + { + FT_Size_Request_Type type; + FT_Long width; + FT_Long height; + FT_UInt horiResolution; + FT_UInt vertResolution; + + } FT_Size_RequestRec; + + + /************************************************************************** + * + * @struct: + * FT_Size_Request + * + * @description: + * A handle to a size request structure. + */ + typedef struct FT_Size_RequestRec_ *FT_Size_Request; + + + /************************************************************************** + * + * @function: + * FT_Request_Size + * + * @description: + * Resize the scale of the active @FT_Size object in a face. + * + * @inout: + * face :: + * A handle to a target face object. + * + * @input: + * req :: + * A pointer to a @FT_Size_RequestRec. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Although drivers may select the bitmap strike matching the request, + * you should not rely on this if you intend to select a particular + * bitmap strike. Use @FT_Select_Size instead in that case. + * + * The relation between the requested size and the resulting glyph size + * is dependent entirely on how the size is defined in the source face. + * The font designer chooses the final size of each glyph relative to + * this size. For more information refer to + * 'https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'. + * + * Contrary to @FT_Set_Char_Size, this function doesn't have special code + * to normalize zero-valued widths, heights, or resolutions, which are + * treated as @FT_LOAD_NO_SCALE. + * + * Don't use this function if you are using the FreeType cache API. + */ + FT_EXPORT( FT_Error ) + FT_Request_Size( FT_Face face, + FT_Size_Request req ); + + + /************************************************************************** + * + * @function: + * FT_Set_Char_Size + * + * @description: + * Call @FT_Request_Size to request the nominal size (in points). + * + * @inout: + * face :: + * A handle to a target face object. + * + * @input: + * char_width :: + * The nominal width, in 26.6 fractional points. + * + * char_height :: + * The nominal height, in 26.6 fractional points. + * + * horz_resolution :: + * The horizontal resolution in dpi. + * + * vert_resolution :: + * The vertical resolution in dpi. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While this function allows fractional points as input values, the + * resulting ppem value for the given resolution is always rounded to the + * nearest integer. + * + * If either the character width or height is zero, it is set equal to + * the other value. + * + * If either the horizontal or vertical resolution is zero, it is set + * equal to the other value. + * + * A character width or height smaller than 1pt is set to 1pt; if both + * resolution values are zero, they are set to 72dpi. + * + * Don't use this function if you are using the FreeType cache API. + */ + FT_EXPORT( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); + + + /************************************************************************** + * + * @function: + * FT_Set_Pixel_Sizes + * + * @description: + * Call @FT_Request_Size to request the nominal size (in pixels). + * + * @inout: + * face :: + * A handle to the target face object. + * + * @input: + * pixel_width :: + * The nominal width, in pixels. + * + * pixel_height :: + * The nominal height, in pixels. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should not rely on the resulting glyphs matching or being + * constrained to this pixel size. Refer to @FT_Request_Size to + * understand how requested sizes relate to actual sizes. + * + * Don't use this function if you are using the FreeType cache API. + */ + FT_EXPORT( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); + + + /************************************************************************** + * + * @function: + * FT_Load_Glyph + * + * @description: + * Load a glyph into the glyph slot of a face object. + * + * @inout: + * face :: + * A handle to the target face object where the glyph is loaded. + * + * @input: + * glyph_index :: + * The index of the glyph in the font file. For CID-keyed fonts + * (either in PS or in CFF format) this argument specifies the CID + * value. + * + * load_flags :: + * A flag indicating what to load for this glyph. The @FT_LOAD_XXX + * flags can be used to control the glyph loading process (e.g., + * whether the outline should be scaled, whether to load bitmaps or + * not, whether to hint the outline, etc). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * For proper scaling and hinting, the active @FT_Size object owned by + * the face has to be meaningfully initialized by calling + * @FT_Set_Char_Size before this function, for example. The loaded + * glyph may be transformed. See @FT_Set_Transform for the details. + * + * For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument` is returned + * for invalid CID values (this is, for CID values that don't have a + * corresponding glyph in the font). See the discussion of the + * @FT_FACE_FLAG_CID_KEYED flag for more details. + * + * If you receive `FT_Err_Glyph_Too_Big`, try getting the glyph outline + * at EM size, then scale it manually and fill it as a graphics + * operation. + */ + FT_EXPORT( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /************************************************************************** + * + * @function: + * FT_Load_Char + * + * @description: + * Load a glyph into the glyph slot of a face object, accessed by its + * character code. + * + * @inout: + * face :: + * A handle to a target face object where the glyph is loaded. + * + * @input: + * char_code :: + * The glyph's character code, according to the current charmap used in + * the face. + * + * load_flags :: + * A flag indicating what to load for this glyph. The @FT_LOAD_XXX + * constants can be used to control the glyph loading process (e.g., + * whether the outline should be scaled, whether to load bitmaps or + * not, whether to hint the outline, etc). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. + * + * Many fonts contain glyphs that can't be loaded by this function since + * its glyph indices are not listed in any of the font's charmaps. + * + * If no active cmap is set up (i.e., `face->charmap` is zero), the call + * to @FT_Get_Char_Index is omitted, and the function behaves identically + * to @FT_Load_Glyph. + */ + FT_EXPORT( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int32 load_flags ); + + + /************************************************************************** + * + * @enum: + * FT_LOAD_XXX + * + * @description: + * A list of bit field constants for @FT_Load_Glyph to indicate what kind + * of operations to perform during glyph loading. + * + * @values: + * FT_LOAD_DEFAULT :: + * Corresponding to~0, this value is used as the default glyph load + * operation. In this case, the following happens: + * + * 1. FreeType looks for a bitmap for the glyph corresponding to the + * face's current size. If one is found, the function returns. The + * bitmap data can be accessed from the glyph slot (see note below). + * + * 2. If no embedded bitmap is searched for or found, FreeType looks + * for a scalable outline. If one is found, it is loaded from the font + * file, scaled to device pixels, then 'hinted' to the pixel grid in + * order to optimize it. The outline data can be accessed from the + * glyph slot (see note below). + * + * Note that by default the glyph loader doesn't render outlines into + * bitmaps. The following flags are used to modify this default + * behaviour to more specific and useful cases. + * + * FT_LOAD_NO_SCALE :: + * Don't scale the loaded outline glyph but keep it in font units. + * This flag is also assumed if @FT_Size owned by the face was not + * properly initialized. + * + * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and + * unsets @FT_LOAD_RENDER. + * + * If the font is 'tricky' (see @FT_FACE_FLAG_TRICKY for more), using + * `FT_LOAD_NO_SCALE` usually yields meaningless outlines because the + * subglyphs must be scaled and positioned with hinting instructions. + * This can be solved by loading the font without `FT_LOAD_NO_SCALE` + * and setting the character size to `font->units_per_EM`. + * + * FT_LOAD_NO_HINTING :: + * Disable hinting. This generally generates 'blurrier' bitmap glyphs + * when the glyph are rendered in any of the anti-aliased modes. See + * also the note below. + * + * This flag is implied by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_RENDER :: + * Call @FT_Render_Glyph after the glyph is loaded. By default, the + * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be + * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. + * + * This flag is unset by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_NO_BITMAP :: + * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this + * flag. + * + * @FT_LOAD_NO_SCALE always sets this flag. + * + * FT_LOAD_SBITS_ONLY :: + * [Since 2.12] This is the opposite of @FT_LOAD_NO_BITMAP, more or + * less: @FT_Load_Glyph returns `FT_Err_Invalid_Argument` if the face + * contains a bitmap strike for the given size (or the strike selected + * by @FT_Select_Size) but there is no glyph in the strike. + * + * Note that this load flag was part of FreeType since version 2.0.6 + * but previously tagged as internal. + * + * FT_LOAD_VERTICAL_LAYOUT :: + * Load the glyph for vertical text layout. In particular, the + * `advance` value in the @FT_GlyphSlotRec structure is set to the + * `vertAdvance` value of the `metrics` field. + * + * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use this + * flag currently. Reason is that in this case vertical metrics get + * synthesized, and those values are not always consistent across + * various font formats. + * + * FT_LOAD_FORCE_AUTOHINT :: + * Prefer the auto-hinter over the font's native hinter. See also the + * note below. + * + * FT_LOAD_PEDANTIC :: + * Make the font driver perform pedantic verifications during glyph + * loading and hinting. This is mostly used to detect broken glyphs in + * fonts. By default, FreeType tries to handle broken fonts also. + * + * In particular, errors from the TrueType bytecode engine are not + * passed to the application if this flag is not set; this might result + * in partially hinted or distorted glyphs in case a glyph's bytecode + * is buggy. + * + * FT_LOAD_NO_RECURSE :: + * Don't load composite glyphs recursively. Instead, the font driver + * fills the `num_subglyph` and `subglyphs` values of the glyph slot; + * it also sets `glyph->format` to @FT_GLYPH_FORMAT_COMPOSITE. The + * description of subglyphs can then be accessed with + * @FT_Get_SubGlyph_Info. + * + * Don't use this flag for retrieving metrics information since some + * font drivers only return rudimentary data. + * + * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. + * + * FT_LOAD_IGNORE_TRANSFORM :: + * Ignore the transform matrix set by @FT_Set_Transform. + * + * FT_LOAD_MONOCHROME :: + * This flag is used with @FT_LOAD_RENDER to indicate that you want to + * render an outline glyph to a 1-bit monochrome bitmap glyph, with + * 8~pixels packed into each byte of the bitmap data. + * + * Note that this has no effect on the hinting algorithm used. You + * should rather use @FT_LOAD_TARGET_MONO so that the + * monochrome-optimized hinting algorithm is used. + * + * FT_LOAD_LINEAR_DESIGN :: + * Keep `linearHoriAdvance` and `linearVertAdvance` fields of + * @FT_GlyphSlotRec in font units. See @FT_GlyphSlotRec for details. + * + * FT_LOAD_NO_AUTOHINT :: + * Disable the auto-hinter. See also the note below. + * + * FT_LOAD_COLOR :: + * Load colored glyphs. FreeType searches in the following order; + * there are slight differences depending on the font format. + * + * [Since 2.5] Load embedded color bitmap images (provided + * @FT_LOAD_NO_BITMAP is not set). The resulting color bitmaps, if + * available, have the @FT_PIXEL_MODE_BGRA format, with pre-multiplied + * color channels. If the flag is not set and color bitmaps are found, + * they are converted to 256-level gray bitmaps, using the + * @FT_PIXEL_MODE_GRAY format. + * + * [Since 2.12] If the glyph index maps to an entry in the face's + * 'SVG~' table, load the associated SVG document from this table and + * set the `format` field of @FT_GlyphSlotRec to @FT_GLYPH_FORMAT_SVG. + * Note that FreeType itself can't render SVG documents; however, the + * library provides hooks to seamlessly integrate an external renderer. + * See sections @ot_svg_driver and @svg_fonts for more. + * + * [Since 2.10, experimental] If the glyph index maps to an entry in + * the face's 'COLR' table with a 'CPAL' palette table (as defined in + * the OpenType specification), make @FT_Render_Glyph provide a default + * blending of the color glyph layers associated with the glyph index, + * using the same bitmap format as embedded color bitmap images. This + * is mainly for convenience and works only for glyphs in 'COLR' v0 + * tables (or glyphs in 'COLR' v1 tables that exclusively use v0 + * features). For full control of color layers use + * @FT_Get_Color_Glyph_Layer and FreeType's color functions like + * @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering + * so that the client application can handle blending by itself. + * + * FT_LOAD_COMPUTE_METRICS :: + * [Since 2.6.1] Compute glyph metrics from the glyph data, without the + * use of bundled metrics tables (for example, the 'hdmx' table in + * TrueType fonts). This flag is mainly used by font validating or + * font editing applications, which need to ignore, verify, or edit + * those tables. + * + * Currently, this flag is only implemented for TrueType fonts. + * + * FT_LOAD_BITMAP_METRICS_ONLY :: + * [Since 2.7.1] Request loading of the metrics and bitmap image + * information of a (possibly embedded) bitmap glyph without allocating + * or copying the bitmap image data itself. No effect if the target + * glyph is not a bitmap image. + * + * This flag unsets @FT_LOAD_RENDER. + * + * FT_LOAD_CROP_BITMAP :: + * Ignored. Deprecated. + * + * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: + * Ignored. Deprecated. + * + * @note: + * By default, hinting is enabled and the font's native hinter (see + * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can + * disable hinting by setting @FT_LOAD_NO_HINTING or change the + * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set + * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be used + * at all. + * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * + * Besides deciding which hinter to use, you can also decide which + * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * + * Note that the auto-hinter needs a valid Unicode cmap (either a native + * one or synthesized by FreeType) for producing correct results. If a + * font provides an incorrect mapping (for example, assigning the + * character code U+005A, LATIN CAPITAL LETTER~Z, to a glyph depicting a + * mathematical integral sign), the auto-hinter might produce useless + * results. + * + */ +#define FT_LOAD_DEFAULT 0x0 +#define FT_LOAD_NO_SCALE ( 1L << 0 ) +#define FT_LOAD_NO_HINTING ( 1L << 1 ) +#define FT_LOAD_RENDER ( 1L << 2 ) +#define FT_LOAD_NO_BITMAP ( 1L << 3 ) +#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) +#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) +#define FT_LOAD_CROP_BITMAP ( 1L << 6 ) +#define FT_LOAD_PEDANTIC ( 1L << 7 ) +#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) +#define FT_LOAD_NO_RECURSE ( 1L << 10 ) +#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) +#define FT_LOAD_MONOCHROME ( 1L << 12 ) +#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) +#define FT_LOAD_SBITS_ONLY ( 1L << 14 ) +#define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) + /* Bits 16-19 are used by `FT_LOAD_TARGET_` */ +#define FT_LOAD_COLOR ( 1L << 20 ) +#define FT_LOAD_COMPUTE_METRICS ( 1L << 21 ) +#define FT_LOAD_BITMAP_METRICS_ONLY ( 1L << 22 ) + + /* */ + + /* used internally only by certain font drivers */ +#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) +#define FT_LOAD_SVG_ONLY ( 1L << 23 ) + + + /************************************************************************** + * + * @enum: + * FT_LOAD_TARGET_XXX + * + * @description: + * A list of values to select a specific hinting algorithm for the + * hinter. You should OR one of these values to your `load_flags` when + * calling @FT_Load_Glyph. + * + * Note that a font's native hinters may ignore the hinting algorithm you + * have specified (e.g., the TrueType bytecode interpreter). You can set + * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. + * + * @values: + * FT_LOAD_TARGET_NORMAL :: + * The default hinting algorithm, optimized for standard gray-level + * rendering. For monochrome output, use @FT_LOAD_TARGET_MONO instead. + * + * FT_LOAD_TARGET_LIGHT :: + * A lighter hinting algorithm for gray-level modes. Many generated + * glyphs are fuzzier but better resemble their original shape. This + * is achieved by snapping glyphs to the pixel grid only vertically + * (Y-axis), as is done by FreeType's new CFF engine or Microsoft's + * ClearType font renderer. This preserves inter-glyph spacing in + * horizontal text. The snapping is done either by the native font + * driver, if the driver itself and the font support it, or by the + * auto-hinter. + * + * Advance widths are rounded to integer values; however, using the + * `lsb_delta` and `rsb_delta` fields of @FT_GlyphSlotRec, it is + * possible to get fractional advance widths for subpixel positioning + * (which is recommended to use). + * + * If configuration option `AF_CONFIG_OPTION_TT_SIZE_METRICS` is + * active, TrueType-like metrics are used to make this mode behave + * similarly as in unpatched FreeType versions between 2.4.6 and 2.7.1 + * (inclusive). + * + * FT_LOAD_TARGET_MONO :: + * Strong hinting algorithm that should only be used for monochrome + * output. The result is probably unpleasant if the glyph is rendered + * in non-monochrome modes. + * + * Note that for outline fonts only the TrueType font driver has proper + * monochrome hinting support, provided the TTFs contain hints for B/W + * rendering (which most fonts no longer provide). If these conditions + * are not met it is very likely that you get ugly results at smaller + * sizes. + * + * FT_LOAD_TARGET_LCD :: + * A variant of @FT_LOAD_TARGET_LIGHT optimized for horizontally + * decimated LCD displays. + * + * FT_LOAD_TARGET_LCD_V :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically + * decimated LCD displays. + * + * @note: + * You should use only _one_ of the `FT_LOAD_TARGET_XXX` values in your + * `load_flags`. They can't be ORed. + * + * If @FT_LOAD_RENDER is also set, the glyph is rendered in the + * corresponding mode (i.e., the mode that matches the used algorithm + * best). An exception is `FT_LOAD_TARGET_MONO` since it implies + * @FT_LOAD_MONOCHROME. + * + * You can use a hinting algorithm that doesn't correspond to the same + * rendering mode. As an example, it is possible to use the 'light' + * hinting algorithm and have the results rendered in horizontal LCD + * pixel mode, with code like + * + * ``` + * FT_Load_Glyph( face, glyph_index, + * load_flags | FT_LOAD_TARGET_LIGHT ); + * + * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); + * ``` + * + * In general, you should stick with one rendering mode. For example, + * switching between @FT_LOAD_TARGET_NORMAL and @FT_LOAD_TARGET_MONO + * enforces a lot of recomputation for TrueType fonts, which is slow. + * Another reason is caching: Selecting a different mode usually causes + * changes in both the outlines and the rasterized bitmaps; it is thus + * necessary to empty the cache after a mode switch to avoid false hits. + * + */ +#define FT_LOAD_TARGET_( x ) ( FT_STATIC_CAST( FT_Int32, (x) & 15 ) << 16 ) + +#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) +#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) +#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) +#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) + + + /************************************************************************** + * + * @macro: + * FT_LOAD_TARGET_MODE + * + * @description: + * Return the @FT_Render_Mode corresponding to a given + * @FT_LOAD_TARGET_XXX value. + * + */ +#define FT_LOAD_TARGET_MODE( x ) \ + FT_STATIC_CAST( FT_Render_Mode, ( (x) >> 16 ) & 15 ) + + + /************************************************************************** + * + * @function: + * FT_Set_Transform + * + * @description: + * Set the transformation that is applied to glyph images when they are + * loaded into a glyph slot through @FT_Load_Glyph. + * + * @inout: + * face :: + * A handle to the source face object. + * + * @input: + * matrix :: + * A pointer to the transformation's 2x2 matrix. Use `NULL` for the + * identity matrix. + * delta :: + * A pointer to the translation vector. Use `NULL` for the null + * vector. + * + * @note: + * This function is provided as a convenience, but keep in mind that + * @FT_Matrix coefficients are only 16.16 fixed-point values, which can + * limit the accuracy of the results. Using floating-point computations + * to perform the transform directly in client code instead will always + * yield better numbers. + * + * The transformation is only applied to scalable image formats after the + * glyph has been loaded. It means that hinting is unaltered by the + * transformation and is performed on the character size given in the + * last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. + * + * Note that this also transforms the `face.glyph.advance` field, but + * **not** the values in `face.glyph.metrics`. + */ + FT_EXPORT( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /************************************************************************** + * + * @function: + * FT_Get_Transform + * + * @description: + * Return the transformation that is applied to glyph images when they + * are loaded into a glyph slot through @FT_Load_Glyph. See + * @FT_Set_Transform for more details. + * + * @input: + * face :: + * A handle to the source face object. + * + * @output: + * matrix :: + * A pointer to a transformation's 2x2 matrix. Set this to NULL if you + * are not interested in the value. + * + * delta :: + * A pointer a translation vector. Set this to NULL if you are not + * interested in the value. + * + * @since: + * 2.11 + * + */ + FT_EXPORT( void ) + FT_Get_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /************************************************************************** + * + * @enum: + * FT_Render_Mode + * + * @description: + * Render modes supported by FreeType~2. Each mode corresponds to a + * specific type of scanline conversion performed on the outline. + * + * For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode` field + * in the @FT_GlyphSlotRec structure gives the format of the returned + * bitmap. + * + * All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity, + * indicating pixel coverage. Use linear alpha blending and gamma + * correction to correctly render non-monochrome glyph bitmaps onto a + * surface; see @FT_Render_Glyph. + * + * The @FT_RENDER_MODE_SDF is a special render mode that uses up to 256 + * distance values, indicating the signed distance from the grid position + * to the nearest outline. + * + * @values: + * FT_RENDER_MODE_NORMAL :: + * Default render mode; it corresponds to 8-bit anti-aliased bitmaps. + * + * FT_RENDER_MODE_LIGHT :: + * This is equivalent to @FT_RENDER_MODE_NORMAL. It is only defined as + * a separate value because render modes are also used indirectly to + * define hinting algorithm selectors. See @FT_LOAD_TARGET_XXX for + * details. + * + * FT_RENDER_MODE_MONO :: + * This mode corresponds to 1-bit bitmaps (with 2~levels of opacity). + * + * FT_RENDER_MODE_LCD :: + * This mode corresponds to horizontal RGB and BGR subpixel displays + * like LCD screens. It produces 8-bit bitmaps that are 3~times the + * width of the original glyph outline in pixels, and which use the + * @FT_PIXEL_MODE_LCD mode. + * + * FT_RENDER_MODE_LCD_V :: + * This mode corresponds to vertical RGB and BGR subpixel displays + * (like PDA screens, rotated LCD displays, etc.). It produces 8-bit + * bitmaps that are 3~times the height of the original glyph outline in + * pixels and use the @FT_PIXEL_MODE_LCD_V mode. + * + * FT_RENDER_MODE_SDF :: + * This mode corresponds to 8-bit, single-channel signed distance field + * (SDF) bitmaps. Each pixel in the SDF grid is the value from the + * pixel's position to the nearest glyph's outline. The distances are + * calculated from the center of the pixel and are positive if they are + * filled by the outline (i.e., inside the outline) and negative + * otherwise. Check the note below on how to convert the output values + * to usable data. + * + * @note: + * The selected render mode only affects vector glyphs of a font. + * Embedded bitmaps often have a different pixel mode like + * @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them + * into 8-bit pixmaps. + * + * For @FT_RENDER_MODE_SDF the output bitmap buffer contains normalized + * distances that are packed into unsigned 8-bit values. To get pixel + * values in floating point representation use the following pseudo-C + * code for the conversion. + * + * ``` + * // Load glyph and render using FT_RENDER_MODE_SDF, + * // then use the output buffer as follows. + * + * ... + * FT_Byte buffer = glyph->bitmap->buffer; + * + * + * for pixel in buffer + * { + * // `sd` is the signed distance and `spread` is the current spread; + * // the default spread is 2 and can be changed. + * + * float sd = (float)pixel - 128.0f; + * + * + * // Convert to pixel values. + * sd = ( sd / 128.0f ) * spread; + * + * // Store `sd` in a buffer or use as required. + * } + * + * ``` + * + * FreeType has two rasterizers for generating SDF, namely: + * + * 1. `sdf` for generating SDF directly from glyph's outline, and + * + * 2. `bsdf` for generating SDF from rasterized bitmaps. + * + * Depending on the glyph type (i.e., outline or bitmap), one of the two + * rasterizers is chosen at runtime and used for generating SDFs. To + * force the use of `bsdf` you should render the glyph with any of the + * FreeType's other rendering modes (e.g., `FT_RENDER_MODE_NORMAL`) and + * then re-render with `FT_RENDER_MODE_SDF`. + * + * There are some issues with stability and possible failures of the SDF + * renderers (specifically `sdf`). + * + * 1. The `sdf` rasterizer is sensitive to really small features (e.g., + * sharp turns that are less than 1~pixel) and imperfections in the + * glyph's outline, causing artifacts in the final output. + * + * 2. The `sdf` rasterizer has limited support for handling intersecting + * contours and *cannot* handle self-intersecting contours whatsoever. + * Self-intersection happens when a single connected contour intersect + * itself at some point; having these in your font definitely pose a + * problem to the rasterizer and cause artifacts, too. + * + * 3. Generating SDF for really small glyphs may result in undesirable + * output; the pixel grid (which stores distance information) becomes + * too coarse. + * + * 4. Since the output buffer is normalized, precision at smaller spreads + * is greater than precision at larger spread values because the + * output range of [0..255] gets mapped to a smaller SDF range. A + * spread of~2 should be sufficient in most cases. + * + * Points (1) and (2) can be avoided by using the `bsdf` rasterizer, + * which is more stable than the `sdf` rasterizer in general. + * + */ + typedef enum FT_Render_Mode_ + { + FT_RENDER_MODE_NORMAL = 0, + FT_RENDER_MODE_LIGHT, + FT_RENDER_MODE_MONO, + FT_RENDER_MODE_LCD, + FT_RENDER_MODE_LCD_V, + FT_RENDER_MODE_SDF, + + FT_RENDER_MODE_MAX + + } FT_Render_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Render_Mode` values instead */ +#define ft_render_mode_normal FT_RENDER_MODE_NORMAL +#define ft_render_mode_mono FT_RENDER_MODE_MONO + + + /************************************************************************** + * + * @function: + * FT_Render_Glyph + * + * @description: + * Convert a given glyph image to a bitmap. It does so by inspecting the + * glyph image format, finding the relevant renderer, and invoking it. + * + * @inout: + * slot :: + * A handle to the glyph slot containing the image to convert. + * + * @input: + * render_mode :: + * The render mode used to render the glyph image into a bitmap. See + * @FT_Render_Mode for a list of possible values. + * + * If @FT_RENDER_MODE_NORMAL is used, a previous call of @FT_Load_Glyph + * with flag @FT_LOAD_COLOR makes `FT_Render_Glyph` provide a default + * blending of colored glyph layers associated with the current glyph + * slot (provided the font contains such layers) instead of rendering + * the glyph slot's outline. This is an experimental feature; see + * @FT_LOAD_COLOR for more information. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * When FreeType outputs a bitmap of a glyph, it really outputs an alpha + * coverage map. If a pixel is completely covered by a filled-in + * outline, the bitmap contains 0xFF at that pixel, meaning that + * 0xFF/0xFF fraction of that pixel is covered, meaning the pixel is 100% + * black (or 0% bright). If a pixel is only 50% covered (value 0x80), + * the pixel is made 50% black (50% bright or a middle shade of grey). + * 0% covered means 0% black (100% bright or white). + * + * On high-DPI screens like on smartphones and tablets, the pixels are so + * small that their chance of being completely covered and therefore + * completely black are fairly good. On the low-DPI screens, however, + * the situation is different. The pixels are too large for most of the + * details of a glyph and shades of gray are the norm rather than the + * exception. + * + * This is relevant because all our screens have a second problem: they + * are not linear. 1~+~1 is not~2. Twice the value does not result in + * twice the brightness. When a pixel is only 50% covered, the coverage + * map says 50% black, and this translates to a pixel value of 128 when + * you use 8~bits per channel (0-255). However, this does not translate + * to 50% brightness for that pixel on our sRGB and gamma~2.2 screens. + * Due to their non-linearity, they dwell longer in the darks and only a + * pixel value of about 186 results in 50% brightness -- 128 ends up too + * dark on both bright and dark backgrounds. The net result is that dark + * text looks burnt-out, pixely and blotchy on bright background, bright + * text too frail on dark backgrounds, and colored text on colored + * background (for example, red on green) seems to have dark halos or + * 'dirt' around it. The situation is especially ugly for diagonal stems + * like in 'w' glyph shapes where the quality of FreeType's anti-aliasing + * depends on the correct display of grays. On high-DPI screens where + * smaller, fully black pixels reign supreme, this doesn't matter, but on + * our low-DPI screens with all the gray shades, it does. 0% and 100% + * brightness are the same things in linear and non-linear space, just + * all the shades in-between aren't. + * + * The blending function for placing text over a background is + * + * ``` + * dst = alpha * src + (1 - alpha) * dst , + * ``` + * + * which is known as the OVER operator. + * + * To correctly composite an anti-aliased pixel of a glyph onto a + * surface, + * + * 1. take the foreground and background colors (e.g., in sRGB space) + * and apply gamma to get them in a linear space, + * + * 2. use OVER to blend the two linear colors using the glyph pixel + * as the alpha value (remember, the glyph bitmap is an alpha coverage + * bitmap), and + * + * 3. apply inverse gamma to the blended pixel and write it back to + * the image. + * + * Internal testing at Adobe found that a target inverse gamma of~1.8 for + * step~3 gives good results across a wide range of displays with an sRGB + * gamma curve or a similar one. + * + * This process can cost performance. There is an approximation that + * does not need to know about the background color; see + * https://bel.fi/alankila/lcd/ and + * https://bel.fi/alankila/lcd/alpcor.html for details. + * + * **ATTENTION**: Linear blending is even more important when dealing + * with subpixel-rendered glyphs to prevent color-fringing! A + * subpixel-rendered glyph must first be filtered with a filter that + * gives equal weight to the three color primaries and does not exceed a + * sum of 0x100, see section @lcd_rendering. Then the only difference to + * gray linear blending is that subpixel-rendered linear blending is done + * 3~times per pixel: red foreground subpixel to red background subpixel + * and so on for green and blue. + */ + FT_EXPORT( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + + /************************************************************************** + * + * @enum: + * FT_Kerning_Mode + * + * @description: + * An enumeration to specify the format of kerning values returned by + * @FT_Get_Kerning. + * + * @values: + * FT_KERNING_DEFAULT :: + * Return grid-fitted kerning distances in 26.6 fractional pixels. + * + * FT_KERNING_UNFITTED :: + * Return un-grid-fitted kerning distances in 26.6 fractional pixels. + * + * FT_KERNING_UNSCALED :: + * Return the kerning vector in original font units. + * + * @note: + * `FT_KERNING_DEFAULT` returns full pixel values; it also makes FreeType + * heuristically scale down kerning distances at small ppem values so + * that they don't become too big. + * + * Both `FT_KERNING_DEFAULT` and `FT_KERNING_UNFITTED` use the current + * horizontal scaling factor (as set e.g. with @FT_Set_Char_Size) to + * convert font units to pixels. + */ + typedef enum FT_Kerning_Mode_ + { + FT_KERNING_DEFAULT = 0, + FT_KERNING_UNFITTED, + FT_KERNING_UNSCALED + + } FT_Kerning_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Kerning_Mode` values instead */ +#define ft_kerning_default FT_KERNING_DEFAULT +#define ft_kerning_unfitted FT_KERNING_UNFITTED +#define ft_kerning_unscaled FT_KERNING_UNSCALED + + + /************************************************************************** + * + * @function: + * FT_Get_Kerning + * + * @description: + * Return the kerning vector between two glyphs of the same face. + * + * @input: + * face :: + * A handle to a source face object. + * + * left_glyph :: + * The index of the left glyph in the kern pair. + * + * right_glyph :: + * The index of the right glyph in the kern pair. + * + * kern_mode :: + * See @FT_Kerning_Mode for more information. Determines the scale and + * dimension of the returned kerning vector. + * + * @output: + * akerning :: + * The kerning vector. This is either in font units, fractional pixels + * (26.6 format), or pixels for scalable formats, and in pixels for + * fixed-sizes formats. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Only horizontal layouts (left-to-right & right-to-left) are supported + * by this method. Other layouts, or more sophisticated kernings, are + * out of the scope of this API function -- they can be implemented + * through format-specific interfaces. + * + * Kerning for OpenType fonts implemented in a 'GPOS' table is not + * supported; use @FT_HAS_KERNING to find out whether a font has data + * that can be extracted with `FT_Get_Kerning`. + */ + FT_EXPORT( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); + + + /************************************************************************** + * + * @function: + * FT_Get_Track_Kerning + * + * @description: + * Return the track kerning for a given face object at a given size. + * + * @input: + * face :: + * A handle to a source face object. + * + * point_size :: + * The point size in 16.16 fractional points. + * + * degree :: + * The degree of tightness. Increasingly negative values represent + * tighter track kerning, while increasingly positive values represent + * looser track kerning. Value zero means no track kerning. + * + * @output: + * akerning :: + * The kerning in 16.16 fractional points, to be uniformly applied + * between all glyphs. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Currently, only the Type~1 font driver supports track kerning, using + * data from AFM files (if attached with @FT_Attach_File or + * @FT_Attach_Stream). + * + * Only very few AFM files come with track kerning data; please refer to + * Adobe's AFM specification for more details. + */ + FT_EXPORT( FT_Error ) + FT_Get_Track_Kerning( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + + /************************************************************************** + * + * @function: + * FT_Get_Glyph_Name + * + * @description: + * Retrieve the ASCII name of a given glyph in a face. This only works + * for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. + * + * @input: + * face :: + * A handle to a source face object. + * + * glyph_index :: + * The glyph index. + * + * buffer_max :: + * The maximum number of bytes available in the buffer. + * + * @output: + * buffer :: + * A pointer to a target buffer where the name is copied to. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * An error is returned if the face doesn't provide glyph names or if the + * glyph index is invalid. In all cases of failure, the first byte of + * `buffer` is set to~0 to indicate an empty name. + * + * The glyph name is truncated to fit within the buffer if it is too + * long. The returned string is always zero-terminated. + * + * Be aware that FreeType reorders glyph indices internally so that glyph + * index~0 always corresponds to the 'missing glyph' (called '.notdef'). + * + * This function always returns an error if the config macro + * `FT_CONFIG_OPTION_NO_GLYPH_NAMES` is not defined in `ftoption.h`. + */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + + /************************************************************************** + * + * @function: + * FT_Get_Postscript_Name + * + * @description: + * Retrieve the ASCII PostScript name of a given face, if available. + * This only works with PostScript, TrueType, and OpenType fonts. + * + * @input: + * face :: + * A handle to the source face object. + * + * @return: + * A pointer to the face's PostScript name. `NULL` if unavailable. + * + * @note: + * The returned pointer is owned by the face and is destroyed with it. + * + * For variation fonts, this string changes if you select a different + * instance, and you have to call `FT_Get_PostScript_Name` again to + * retrieve it. FreeType follows Adobe TechNote #5902, 'Generating + * PostScript Names for Fonts Using OpenType Font Variations'. + * + * https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html + * + * [Since 2.9] Special PostScript names for named instances are only + * returned if the named instance is set with @FT_Set_Named_Instance (and + * the font has corresponding entries in its 'fvar' table). If + * @FT_IS_VARIATION returns true, the algorithmically derived PostScript + * name is provided, not looking up special entries for named instances. + */ + FT_EXPORT( const char* ) + FT_Get_Postscript_Name( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Select_Charmap + * + * @description: + * Select a given charmap by its encoding tag (as listed in + * `freetype.h`). + * + * @inout: + * face :: + * A handle to the source face object. + * + * @input: + * encoding :: + * A handle to the selected encoding. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function returns an error if no charmap in the face corresponds + * to the encoding queried here. + * + * Because many fonts contain more than a single cmap for Unicode + * encoding, this function has some special code to select the one that + * covers Unicode best ('best' in the sense that a UCS-4 cmap is + * preferred to a UCS-2 cmap). It is thus preferable to @FT_Set_Charmap + * in this case. + */ + FT_EXPORT( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); + + + /************************************************************************** + * + * @function: + * FT_Set_Charmap + * + * @description: + * Select a given charmap for character code to glyph index mapping. + * + * @inout: + * face :: + * A handle to the source face object. + * + * @input: + * charmap :: + * A handle to the selected charmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function returns an error if the charmap is not part of the face + * (i.e., if it is not listed in the `face->charmaps` table). + * + * It also fails if an OpenType type~14 charmap is selected (which + * doesn't map character codes to glyph indices at all). + */ + FT_EXPORT( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ); + + + /************************************************************************** + * + * @function: + * FT_Get_Charmap_Index + * + * @description: + * Retrieve index of a given charmap. + * + * @input: + * charmap :: + * A handle to a charmap. + * + * @return: + * The index into the array of character maps within the face to which + * `charmap` belongs. If an error occurs, -1 is returned. + * + */ + FT_EXPORT( FT_Int ) + FT_Get_Charmap_Index( FT_CharMap charmap ); + + + /************************************************************************** + * + * @function: + * FT_Get_Char_Index + * + * @description: + * Return the glyph index of a given character code. This function uses + * the currently selected charmap to do the mapping. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character code. + * + * @return: + * The glyph index. 0~means 'undefined character code'. + * + * @note: + * If you use FreeType to manipulate the contents of font files directly, + * be aware that the glyph index returned by this function doesn't always + * correspond to the internal indices used within the file. This is done + * to ensure that value~0 always corresponds to the 'missing glyph'. If + * the first glyph is not named '.notdef', then for Type~1 and Type~42 + * fonts, '.notdef' will be moved into the glyph ID~0 position, and + * whatever was there will be moved to the position '.notdef' had. For + * Type~1 fonts, if there is no '.notdef' glyph at all, then one will be + * created at index~0 and whatever was there will be moved to the last + * index -- Type~42 fonts are considered invalid under this condition. + */ + FT_EXPORT( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); + + + /************************************************************************** + * + * @function: + * FT_Get_First_Char + * + * @description: + * Return the first character code in the current charmap of a given + * face, together with its corresponding glyph index. + * + * @input: + * face :: + * A handle to the source face object. + * + * @output: + * agindex :: + * Glyph index of first character code. 0~if charmap is empty. + * + * @return: + * The charmap's first character code. + * + * @note: + * You should use this function together with @FT_Get_Next_Char to parse + * all character codes available in a given charmap. The code should + * look like this: + * + * ``` + * FT_ULong charcode; + * FT_UInt gindex; + * + * + * charcode = FT_Get_First_Char( face, &gindex ); + * while ( gindex != 0 ) + * { + * ... do something with (charcode,gindex) pair ... + * + * charcode = FT_Get_Next_Char( face, charcode, &gindex ); + * } + * ``` + * + * Be aware that character codes can have values up to 0xFFFFFFFF; this + * might happen for non-Unicode or malformed cmaps. However, even with + * regular Unicode encoding, so-called 'last resort fonts' (using SFNT + * cmap format 13, see function @FT_Get_CMap_Format) normally have + * entries for all Unicode characters up to 0x1FFFFF, which can cause *a + * lot* of iterations. + * + * Note that `*agindex` is set to~0 if the charmap is empty. The result + * itself can be~0 in two cases: if the charmap is empty or if the + * value~0 is the first valid character code. + */ + FT_EXPORT( FT_ULong ) + FT_Get_First_Char( FT_Face face, + FT_UInt *agindex ); + + + /************************************************************************** + * + * @function: + * FT_Get_Next_Char + * + * @description: + * Return the next character code in the current charmap of a given face + * following the value `char_code`, as well as the corresponding glyph + * index. + * + * @input: + * face :: + * A handle to the source face object. + * + * char_code :: + * The starting character code. + * + * @output: + * agindex :: + * Glyph index of next character code. 0~if charmap is empty. + * + * @return: + * The charmap's next character code. + * + * @note: + * You should use this function with @FT_Get_First_Char to walk over all + * character codes available in a given charmap. See the note for that + * function for a simple code example. + * + * Note that `*agindex` is set to~0 when there are no more codes in the + * charmap. + */ + FT_EXPORT( FT_ULong ) + FT_Get_Next_Char( FT_Face face, + FT_ULong char_code, + FT_UInt *agindex ); + + + /************************************************************************** + * + * @function: + * FT_Face_Properties + * + * @description: + * Set or override certain (library or module-wide) properties on a + * face-by-face basis. Useful for finer-grained control and avoiding + * locks on shared structures (threads can modify their own faces as they + * see fit). + * + * Contrary to @FT_Property_Set, this function uses @FT_Parameter so that + * you can pass multiple properties to the target face in one call. Note + * that only a subset of the available properties can be controlled. + * + * * @FT_PARAM_TAG_STEM_DARKENING (stem darkening, corresponding to the + * property `no-stem-darkening` provided by the 'autofit', 'cff', + * 'type1', and 't1cid' modules; see @no-stem-darkening). + * + * * @FT_PARAM_TAG_LCD_FILTER_WEIGHTS (LCD filter weights, corresponding + * to function @FT_Library_SetLcdFilterWeights). + * + * * @FT_PARAM_TAG_RANDOM_SEED (seed value for the CFF, Type~1, and CID + * 'random' operator, corresponding to the `random-seed` property + * provided by the 'cff', 'type1', and 't1cid' modules; see + * @random-seed). + * + * Pass `NULL` as `data` in @FT_Parameter for a given tag to reset the + * option and use the library or module default again. + * + * @input: + * face :: + * A handle to the source face object. + * + * num_properties :: + * The number of properties that follow. + * + * properties :: + * A handle to an @FT_Parameter array with `num_properties` elements. + * + * @return: + * FreeType error code. 0~means success. + * + * @example: + * Here is an example that sets three properties. You must define + * `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` to make the LCD filter examples + * work. + * + * ``` + * FT_Parameter property1; + * FT_Bool darken_stems = 1; + * + * FT_Parameter property2; + * FT_LcdFiveTapFilter custom_weight = + * { 0x11, 0x44, 0x56, 0x44, 0x11 }; + * + * FT_Parameter property3; + * FT_Int32 random_seed = 314159265; + * + * FT_Parameter properties[3] = { property1, + * property2, + * property3 }; + * + * + * property1.tag = FT_PARAM_TAG_STEM_DARKENING; + * property1.data = &darken_stems; + * + * property2.tag = FT_PARAM_TAG_LCD_FILTER_WEIGHTS; + * property2.data = custom_weight; + * + * property3.tag = FT_PARAM_TAG_RANDOM_SEED; + * property3.data = &random_seed; + * + * FT_Face_Properties( face, 3, properties ); + * ``` + * + * The next example resets a single property to its default value. + * + * ``` + * FT_Parameter property; + * + * + * property.tag = FT_PARAM_TAG_LCD_FILTER_WEIGHTS; + * property.data = NULL; + * + * FT_Face_Properties( face, 1, &property ); + * ``` + * + * @since: + * 2.8 + * + */ + FT_EXPORT( FT_Error ) + FT_Face_Properties( FT_Face face, + FT_UInt num_properties, + FT_Parameter* properties ); + + + /************************************************************************** + * + * @function: + * FT_Get_Name_Index + * + * @description: + * Return the glyph index of a given glyph name. + * + * @input: + * face :: + * A handle to the source face object. + * + * glyph_name :: + * The glyph name. + * + * @return: + * The glyph index. 0~means 'undefined character code'. + */ + FT_EXPORT( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + const FT_String* glyph_name ); + + + /************************************************************************** + * + * @enum: + * FT_SUBGLYPH_FLAG_XXX + * + * @description: + * A list of constants describing subglyphs. Please refer to the 'glyf' + * table description in the OpenType specification for the meaning of the + * various flags (which get synthesized for non-OpenType subglyphs). + * + * https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description + * + * @values: + * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: + * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: + * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: + * FT_SUBGLYPH_FLAG_SCALE :: + * FT_SUBGLYPH_FLAG_XY_SCALE :: + * FT_SUBGLYPH_FLAG_2X2 :: + * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: + * + */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 + + + /************************************************************************** + * + * @function: + * FT_Get_SubGlyph_Info + * + * @description: + * Retrieve a description of a given subglyph. Only use it if + * `glyph->format` is @FT_GLYPH_FORMAT_COMPOSITE; an error is returned + * otherwise. + * + * @input: + * glyph :: + * The source glyph slot. + * + * sub_index :: + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs`. + * + * @output: + * p_index :: + * The glyph index of the subglyph. + * + * p_flags :: + * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. + * + * p_arg1 :: + * The subglyph's first argument (if any). + * + * p_arg2 :: + * The subglyph's second argument (if any). + * + * p_transform :: + * The subglyph transformation (if any). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The values of `*p_arg1`, `*p_arg2`, and `*p_transform` must be + * interpreted depending on the flags returned in `*p_flags`. See the + * OpenType specification for details. + * + * https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description + * + */ + FT_EXPORT( FT_Error ) + FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, + FT_UInt sub_index, + FT_Int *p_index, + FT_UInt *p_flags, + FT_Int *p_arg1, + FT_Int *p_arg2, + FT_Matrix *p_transform ); + + + /************************************************************************** + * + * @section: + * base_interface + * + */ + + /************************************************************************** + * + * @enum: + * FT_FSTYPE_XXX + * + * @description: + * A list of bit flags used in the `fsType` field of the OS/2 table in a + * TrueType or OpenType font and the `FSType` entry in a PostScript font. + * These bit flags are returned by @FT_Get_FSType_Flags; they inform + * client applications of embedding and subsetting restrictions + * associated with a font. + * + * See + * https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf + * for more details. + * + * @values: + * FT_FSTYPE_INSTALLABLE_EMBEDDING :: + * Fonts with no fsType bit set may be embedded and permanently + * installed on the remote system by an application. + * + * FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: + * Fonts that have only this bit set must not be modified, embedded or + * exchanged in any manner without first obtaining permission of the + * font software copyright owner. + * + * FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: + * The font may be embedded and temporarily loaded on the remote + * system. Documents containing Preview & Print fonts must be opened + * 'read-only'; no edits can be applied to the document. + * + * FT_FSTYPE_EDITABLE_EMBEDDING :: + * The font may be embedded but must only be installed temporarily on + * other systems. In contrast to Preview & Print fonts, documents + * containing editable fonts may be opened for reading, editing is + * permitted, and changes may be saved. + * + * FT_FSTYPE_NO_SUBSETTING :: + * The font may not be subsetted prior to embedding. + * + * FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: + * Only bitmaps contained in the font may be embedded; no outline data + * may be embedded. If there are no bitmaps available in the font, + * then the font is unembeddable. + * + * @note: + * The flags are ORed together, thus more than a single value can be + * returned. + * + * While the `fsType` flags can indicate that a font may be embedded, a + * license with the font vendor may be separately required to use the + * font in this way. + */ +#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 +#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 +#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 +#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 +#define FT_FSTYPE_NO_SUBSETTING 0x0100 +#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 + + + /************************************************************************** + * + * @function: + * FT_Get_FSType_Flags + * + * @description: + * Return the `fsType` flags for a font. + * + * @input: + * face :: + * A handle to the source face object. + * + * @return: + * The `fsType` flags, see @FT_FSTYPE_XXX. + * + * @note: + * Use this function rather than directly reading the `fs_type` field in + * the @PS_FontInfoRec structure, which is only guaranteed to return the + * correct results for Type~1 fonts. + * + * @since: + * 2.3.8 + * + */ + FT_EXPORT( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ); + + + /************************************************************************** + * + * @section: + * glyph_variants + * + * @title: + * Unicode Variation Sequences + * + * @abstract: + * The FreeType~2 interface to Unicode Variation Sequences (UVS), using + * the SFNT cmap format~14. + * + * @description: + * Many characters, especially for CJK scripts, have variant forms. They + * are a sort of grey area somewhere between being totally irrelevant and + * semantically distinct; for this reason, the Unicode consortium decided + * to introduce Variation Sequences (VS), consisting of a Unicode base + * character and a variation selector instead of further extending the + * already huge number of characters. + * + * Unicode maintains two different sets, namely 'Standardized Variation + * Sequences' and registered 'Ideographic Variation Sequences' (IVS), + * collected in the 'Ideographic Variation Database' (IVD). + * + * https://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt + * https://unicode.org/reports/tr37/ https://unicode.org/ivd/ + * + * To date (January 2017), the character with the most ideographic + * variations is U+9089, having 32 such IVS. + * + * Three Mongolian Variation Selectors have the values U+180B-U+180D; 256 + * generic Variation Selectors are encoded in the ranges U+FE00-U+FE0F + * and U+E0100-U+E01EF. IVS currently use Variation Selectors from the + * range U+E0100-U+E01EF only. + * + * A VS consists of the base character value followed by a single + * Variation Selector. For example, to get the first variation of + * U+9089, you have to write the character sequence `U+9089 U+E0100`. + * + * Adobe and MS decided to support both standardized and ideographic VS + * with a new cmap subtable (format~14). It is an odd subtable because + * it is not a mapping of input code points to glyphs, but contains lists + * of all variations supported by the font. + * + * A variation may be either 'default' or 'non-default' for a given font. + * A default variation is the one you will get for that code point if you + * look it up in the standard Unicode cmap. A non-default variation is a + * different glyph. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Face_GetCharVariantIndex + * + * @description: + * Return the glyph index of a given character code as modified by the + * variation selector. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character code point in Unicode. + * + * variantSelector :: + * The Unicode code point of the variation selector. + * + * @return: + * The glyph index. 0~means either 'undefined character code', or + * 'undefined selector code', or 'no variation selector cmap subtable', + * or 'current CharMap is not Unicode'. + * + * @note: + * If you use FreeType to manipulate the contents of font files directly, + * be aware that the glyph index returned by this function doesn't always + * correspond to the internal indices used within the file. This is done + * to ensure that value~0 always corresponds to the 'missing glyph'. + * + * This function is only meaningful if + * a) the font has a variation selector cmap sub table, and + * b) the current charmap has a Unicode encoding. + * + * @since: + * 2.3.6 + * + */ + FT_EXPORT( FT_UInt ) + FT_Face_GetCharVariantIndex( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetCharVariantIsDefault + * + * @description: + * Check whether this variation of this Unicode character is the one to + * be found in the charmap. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character codepoint in Unicode. + * + * variantSelector :: + * The Unicode codepoint of the variation selector. + * + * @return: + * 1~if found in the standard (Unicode) cmap, 0~if found in the variation + * selector cmap, or -1 if it is not a variation. + * + * @note: + * This function is only meaningful if the font has a variation selector + * cmap subtable. + * + * @since: + * 2.3.6 + * + */ + FT_EXPORT( FT_Int ) + FT_Face_GetCharVariantIsDefault( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetVariantSelectors + * + * @description: + * Return a zero-terminated list of Unicode variation selectors found in + * the font. + * + * @input: + * face :: + * A handle to the source face object. + * + * @return: + * A pointer to an array of selector code points, or `NULL` if there is + * no valid variation selector cmap subtable. + * + * @note: + * The last item in the array is~0; the array is owned by the @FT_Face + * object but can be overwritten or released on the next call to a + * FreeType function. + * + * @since: + * 2.3.6 + * + */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantSelectors( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetVariantsOfChar + * + * @description: + * Return a zero-terminated list of Unicode variation selectors found for + * the specified character code. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character codepoint in Unicode. + * + * @return: + * A pointer to an array of variation selector code points that are + * active for the given character, or `NULL` if the corresponding list is + * empty. + * + * @note: + * The last item in the array is~0; the array is owned by the @FT_Face + * object but can be overwritten or released on the next call to a + * FreeType function. + * + * @since: + * 2.3.6 + * + */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantsOfChar( FT_Face face, + FT_ULong charcode ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetCharsOfVariant + * + * @description: + * Return a zero-terminated list of Unicode character codes found for the + * specified variation selector. + * + * @input: + * face :: + * A handle to the source face object. + * + * variantSelector :: + * The variation selector code point in Unicode. + * + * @return: + * A list of all the code points that are specified by this selector + * (both default and non-default codes are returned) or `NULL` if there + * is no valid cmap or the variation selector is invalid. + * + * @note: + * The last item in the array is~0; the array is owned by the @FT_Face + * object but can be overwritten or released on the next call to a + * FreeType function. + * + * @since: + * 2.3.6 + * + */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetCharsOfVariant( FT_Face face, + FT_ULong variantSelector ); + + + /************************************************************************** + * + * @section: + * computations + * + * @title: + * Computations + * + * @abstract: + * Crunching fixed numbers and vectors. + * + * @description: + * This section contains various functions used to perform computations + * on 16.16 fixed-float numbers or 2d vectors. + * + * **Attention**: Most arithmetic functions take `FT_Long` as arguments. + * For historical reasons, FreeType was designed under the assumption + * that `FT_Long` is a 32-bit integer; results can thus be undefined if + * the arguments don't fit into 32 bits. + * + * @order: + * FT_MulDiv + * FT_MulFix + * FT_DivFix + * FT_RoundFix + * FT_CeilFix + * FT_FloorFix + * FT_Vector_Transform + * FT_Matrix_Multiply + * FT_Matrix_Invert + * + */ + + + /************************************************************************** + * + * @function: + * FT_MulDiv + * + * @description: + * Compute `(a*b)/c` with maximum accuracy, using a 64-bit intermediate + * integer whenever necessary. + * + * This function isn't necessarily as fast as some processor-specific + * operations, but is at least completely portable. + * + * @input: + * a :: + * The first multiplier. + * + * b :: + * The second multiplier. + * + * c :: + * The divisor. + * + * @return: + * The result of `(a*b)/c`. This function never traps when trying to + * divide by zero; it simply returns 'MaxInt' or 'MinInt' depending on + * the signs of `a` and `b`. + */ + FT_EXPORT( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); + + + /************************************************************************** + * + * @function: + * FT_MulFix + * + * @description: + * Compute `(a*b)/0x10000` with maximum accuracy. Its main use is to + * multiply a given value by a 16.16 fixed-point factor. + * + * @input: + * a :: + * The first multiplier. + * + * b :: + * The second multiplier. Use a 16.16 factor here whenever possible + * (see note below). + * + * @return: + * The result of `(a*b)/0x10000`. + * + * @note: + * This function has been optimized for the case where the absolute value + * of `a` is less than 2048, and `b` is a 16.16 scaling factor. As this + * happens mainly when scaling from notional units to fractional pixels + * in FreeType, it resulted in noticeable speed improvements between + * versions 2.x and 1.x. + * + * As a conclusion, always try to place a 16.16 factor as the _second_ + * argument of this function; this can make a great difference. + */ + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); + + + /************************************************************************** + * + * @function: + * FT_DivFix + * + * @description: + * Compute `(a*0x10000)/b` with maximum accuracy. Its main use is to + * divide a given value by a 16.16 fixed-point factor. + * + * @input: + * a :: + * The numerator. + * + * b :: + * The denominator. Use a 16.16 factor here. + * + * @return: + * The result of `(a*0x10000)/b`. + */ + FT_EXPORT( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ); + + + /************************************************************************** + * + * @function: + * FT_RoundFix + * + * @description: + * Round a 16.16 fixed number. + * + * @input: + * a :: + * The number to be rounded. + * + * @return: + * `a` rounded to the nearest 16.16 fixed integer, halfway cases away + * from zero. + * + * @note: + * The function uses wrap-around arithmetic. + */ + FT_EXPORT( FT_Fixed ) + FT_RoundFix( FT_Fixed a ); + + + /************************************************************************** + * + * @function: + * FT_CeilFix + * + * @description: + * Compute the smallest following integer of a 16.16 fixed number. + * + * @input: + * a :: + * The number for which the ceiling function is to be computed. + * + * @return: + * `a` rounded towards plus infinity. + * + * @note: + * The function uses wrap-around arithmetic. + */ + FT_EXPORT( FT_Fixed ) + FT_CeilFix( FT_Fixed a ); + + + /************************************************************************** + * + * @function: + * FT_FloorFix + * + * @description: + * Compute the largest previous integer of a 16.16 fixed number. + * + * @input: + * a :: + * The number for which the floor function is to be computed. + * + * @return: + * `a` rounded towards minus infinity. + */ + FT_EXPORT( FT_Fixed ) + FT_FloorFix( FT_Fixed a ); + + + /************************************************************************** + * + * @function: + * FT_Vector_Transform + * + * @description: + * Transform a single vector through a 2x2 matrix. + * + * @inout: + * vector :: + * The target vector to transform. + * + * @input: + * matrix :: + * A pointer to the source 2x2 matrix. + * + * @note: + * The result is undefined if either `vector` or `matrix` is invalid. + */ + FT_EXPORT( void ) + FT_Vector_Transform( FT_Vector* vector, + const FT_Matrix* matrix ); + + + /************************************************************************** + * + * @section: + * version + * + * @title: + * FreeType Version + * + * @abstract: + * Functions and macros related to FreeType versions. + * + * @description: + * Note that those functions and macros are of limited use because even a + * new release of FreeType with only documentation changes increases the + * version number. + * + * @order: + * FT_Library_Version + * + * FREETYPE_MAJOR + * FREETYPE_MINOR + * FREETYPE_PATCH + * + * FT_Face_CheckTrueTypePatents + * FT_Face_SetUnpatentedHinting + * + */ + + + /************************************************************************** + * + * @enum: + * FREETYPE_XXX + * + * @description: + * These three macros identify the FreeType source code version. Use + * @FT_Library_Version to access them at runtime. + * + * @values: + * FREETYPE_MAJOR :: + * The major version number. + * FREETYPE_MINOR :: + * The minor version number. + * FREETYPE_PATCH :: + * The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library with + * the 'libtool' package is _not_ controlled by these three macros. + * + */ +#define FREETYPE_MAJOR 2 +#define FREETYPE_MINOR 12 +#define FREETYPE_PATCH 1 + + + /************************************************************************** + * + * @function: + * FT_Library_Version + * + * @description: + * Return the version of the FreeType library being used. This is useful + * when dynamically linking to the library, since one cannot use the + * macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and @FREETYPE_PATCH. + * + * @input: + * library :: + * A source library handle. + * + * @output: + * amajor :: + * The major version number. + * + * aminor :: + * The minor version number. + * + * apatch :: + * The patch version number. + * + * @note: + * The reason why this function takes a `library` argument is because + * certain programs implement library initialization in a custom way that + * doesn't use @FT_Init_FreeType. + * + * In such cases, the library version might not be available before the + * library object has been created. + */ + FT_EXPORT( void ) + FT_Library_Version( FT_Library library, + FT_Int *amajor, + FT_Int *aminor, + FT_Int *apatch ); + + + /************************************************************************** + * + * @function: + * FT_Face_CheckTrueTypePatents + * + * @description: + * Deprecated, does nothing. + * + * @input: + * face :: + * A face handle. + * + * @return: + * Always returns false. + * + * @note: + * Since May 2010, TrueType hinting is no longer patented. + * + * @since: + * 2.3.5 + * + */ + FT_EXPORT( FT_Bool ) + FT_Face_CheckTrueTypePatents( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Face_SetUnpatentedHinting + * + * @description: + * Deprecated, does nothing. + * + * @input: + * face :: + * A face handle. + * + * value :: + * New boolean setting. + * + * @return: + * Always returns false. + * + * @note: + * Since May 2010, TrueType hinting is no longer patented. + * + * @since: + * 2.3.5 + * + */ + FT_EXPORT( FT_Bool ) + FT_Face_SetUnpatentedHinting( FT_Face face, + FT_Bool value ); + + /* */ + + +FT_END_HEADER + +#endif /* FREETYPE_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftadvanc.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftadvanc.h new file mode 100644 index 0000000..8ce4846 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftadvanc.h @@ -0,0 +1,188 @@ +/**************************************************************************** + * + * ftadvanc.h + * + * Quick computation of advance widths (specification only). + * + * Copyright (C) 2008-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTADVANC_H_ +#define FTADVANC_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + * + * @order: + * FT_Get_Advance + * FT_Get_Advances + * + */ + + + /************************************************************************** + * + * @enum: + * FT_ADVANCE_FLAG_FAST_ONLY + * + * @description: + * A bit-flag to be OR-ed with the `flags` parameter of the + * @FT_Get_Advance and @FT_Get_Advances functions. + * + * If set, it indicates that you want these functions to fail if the + * corresponding hinting mode or font driver doesn't allow for very quick + * advance computation. + * + * Typically, glyphs that are either unscaled, unhinted, bitmapped, or + * light-hinted can have their advance width computed very quickly. + * + * Normal and bytecode hinted modes that require loading, scaling, and + * hinting of the glyph outline, are extremely slow by comparison. + */ +#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L + + + /************************************************************************** + * + * @function: + * FT_Get_Advance + * + * @description: + * Retrieve the advance value of a given glyph outline in an @FT_Face. + * + * @input: + * face :: + * The source @FT_Face handle. + * + * gindex :: + * The glyph index. + * + * load_flags :: + * A set of bit flags similar to those used when calling + * @FT_Load_Glyph, used to determine what kind of advances you need. + * + * @output: + * padvance :: + * The advance value. If scaling is performed (based on the value of + * `load_flags`), the advance value is in 16.16 format. Otherwise, it + * is in font units. + * + * If @FT_LOAD_VERTICAL_LAYOUT is set, this is the vertical advance + * corresponding to a vertical layout. Otherwise, it is the horizontal + * advance in a horizontal layout. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if + * the corresponding font backend doesn't have a quick way to retrieve + * the advances. + * + * A scaled advance is returned in 16.16 format but isn't transformed by + * the affine transformation specified by @FT_Set_Transform. + */ + FT_EXPORT( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + + /************************************************************************** + * + * @function: + * FT_Get_Advances + * + * @description: + * Retrieve the advance values of several glyph outlines in an @FT_Face. + * + * @input: + * face :: + * The source @FT_Face handle. + * + * start :: + * The first glyph index. + * + * count :: + * The number of advance values you want to retrieve. + * + * load_flags :: + * A set of bit flags similar to those used when calling + * @FT_Load_Glyph. + * + * @output: + * padvance :: + * The advance values. This array, to be provided by the caller, must + * contain at least `count` elements. + * + * If scaling is performed (based on the value of `load_flags`), the + * advance values are in 16.16 format. Otherwise, they are in font + * units. + * + * If @FT_LOAD_VERTICAL_LAYOUT is set, these are the vertical advances + * corresponding to a vertical layout. Otherwise, they are the + * horizontal advances in a horizontal layout. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if + * the corresponding font backend doesn't have a quick way to retrieve + * the advances. + * + * Scaled advances are returned in 16.16 format but aren't transformed by + * the affine transformation specified by @FT_Set_Transform. + */ + FT_EXPORT( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); + + /* */ + + +FT_END_HEADER + +#endif /* FTADVANC_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbbox.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbbox.h new file mode 100644 index 0000000..768478f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbbox.h @@ -0,0 +1,101 @@ +/**************************************************************************** + * + * ftbbox.h + * + * FreeType exact bbox computation (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This component has a _single_ role: to compute exact outline bounding + * boxes. + * + * It is separated from the rest of the engine for various technical + * reasons. It may well be integrated in 'ftoutln' later. + * + */ + + +#ifndef FTBBOX_H_ +#define FTBBOX_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * outline_processing + * + */ + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_BBox + * + * @description: + * Compute the exact bounding box of an outline. This is slower than + * computing the control box. However, it uses an advanced algorithm + * that returns _very_ quickly when the two boxes coincide. Otherwise, + * the outline Bezier arcs are traversed to extract their extrema. + * + * @input: + * outline :: + * A pointer to the source outline. + * + * @output: + * abbox :: + * The outline's exact bounding box. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the font is tricky and the glyph has been loaded with + * @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get + * reasonable values for the BBox it is necessary to load the glyph at a + * large ppem value (so that the hinting instructions can properly shift + * and scale the subglyphs), then extracting the BBox, which can be + * eventually converted back to font units. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); + + /* */ + + +FT_END_HEADER + +#endif /* FTBBOX_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbdf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbdf.h new file mode 100644 index 0000000..04d6094 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbdf.h @@ -0,0 +1,212 @@ +/**************************************************************************** + * + * ftbdf.h + * + * FreeType API for accessing BDF-specific strings (specification). + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTBDF_H_ +#define FTBDF_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * bdf_fonts + * + * @title: + * BDF and PCF Files + * + * @abstract: + * BDF and PCF specific API. + * + * @description: + * This section contains the declaration of functions specific to BDF and + * PCF fonts. + * + */ + + + /************************************************************************** + * + * @enum: + * BDF_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ + typedef enum BDF_PropertyType_ + { + BDF_PROPERTY_TYPE_NONE = 0, + BDF_PROPERTY_TYPE_ATOM = 1, + BDF_PROPERTY_TYPE_INTEGER = 2, + BDF_PROPERTY_TYPE_CARDINAL = 3 + + } BDF_PropertyType; + + + /************************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given BDF/PCF + * property. + */ + typedef struct BDF_PropertyRec_* BDF_Property; + + + /************************************************************************** + * + * @struct: + * BDF_PropertyRec + * + * @description: + * This structure models a given BDF/PCF property. + * + * @fields: + * type :: + * The property type. + * + * u.atom :: + * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be + * `NULL`, indicating an empty string. + * + * u.integer :: + * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. + * + * u.cardinal :: + * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. + */ + typedef struct BDF_PropertyRec_ + { + BDF_PropertyType type; + union { + const char* atom; + FT_Int32 integer; + FT_UInt32 cardinal; + + } u; + + } BDF_PropertyRec; + + + /************************************************************************** + * + * @function: + * FT_Get_BDF_Charset_ID + * + * @description: + * Retrieve a BDF font character set identity, according to the BDF + * specification. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * acharset_encoding :: + * Charset encoding, as a C~string, owned by the face. + * + * acharset_registry :: + * Charset registry, as a C~string, owned by the face. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with BDF faces, returning an error otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Charset_ID( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + + /************************************************************************** + * + * @function: + * FT_Get_BDF_Property + * + * @description: + * Retrieve a BDF property from a BDF or PCF font file. + * + * @input: + * face :: + * A handle to the input face. + * + * name :: + * The property name. + * + * @output: + * aproperty :: + * The property. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function works with BDF _and_ PCF fonts. It returns an error + * otherwise. It also returns an error if the property is not in the + * font. + * + * A 'property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props` array within a `FontRec` structure of a PCF font. + * + * Integer properties are always stored as 'signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * + * In case of error, `aproperty->type` is always set to + * @BDF_PROPERTY_TYPE_NONE. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Property( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + /* */ + +FT_END_HEADER + +#endif /* FTBDF_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbitmap.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbitmap.h new file mode 100644 index 0000000..c3462da --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbitmap.h @@ -0,0 +1,329 @@ +/**************************************************************************** + * + * ftbitmap.h + * + * FreeType utility functions for bitmaps (specification). + * + * Copyright (C) 2004-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTBITMAP_H_ +#define FTBITMAP_H_ + + +#include +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * bitmap_handling + * + * @title: + * Bitmap Handling + * + * @abstract: + * Handling FT_Bitmap objects. + * + * @description: + * This section contains functions for handling @FT_Bitmap objects, + * automatically adjusting the target's bitmap buffer size as needed. + * + * Note that none of the functions changes the bitmap's 'flow' (as + * indicated by the sign of the `pitch` field in @FT_Bitmap). + * + * To set the flow, assign an appropriate positive or negative value to + * the `pitch` field of the target @FT_Bitmap object after calling + * @FT_Bitmap_Init but before calling any of the other functions + * described here. + */ + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Init + * + * @description: + * Initialize a pointer to an @FT_Bitmap structure. + * + * @inout: + * abitmap :: + * A pointer to the bitmap structure. + * + * @note: + * A deprecated name for the same function is `FT_Bitmap_New`. + */ + FT_EXPORT( void ) + FT_Bitmap_Init( FT_Bitmap *abitmap ); + + + /* deprecated */ + FT_EXPORT( void ) + FT_Bitmap_New( FT_Bitmap *abitmap ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Copy + * + * @description: + * Copy a bitmap into another one. + * + * @input: + * library :: + * A handle to a library object. + * + * source :: + * A handle to the source bitmap. + * + * @output: + * target :: + * A handle to the target bitmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * `source->buffer` and `target->buffer` must neither be equal nor + * overlap. + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Copy( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Embolden + * + * @description: + * Embolden a bitmap. The new bitmap will be about `xStrength` pixels + * wider and `yStrength` pixels higher. The left and bottom borders are + * kept unchanged. + * + * @input: + * library :: + * A handle to a library object. + * + * xStrength :: + * How strong the glyph is emboldened horizontally. Expressed in 26.6 + * pixel format. + * + * yStrength :: + * How strong the glyph is emboldened vertically. Expressed in 26.6 + * pixel format. + * + * @inout: + * bitmap :: + * A handle to the target bitmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The current implementation restricts `xStrength` to be less than or + * equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. + * + * If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, you + * should call @FT_GlyphSlot_Own_Bitmap on the slot first. + * + * Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format are + * converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp). + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Embolden( FT_Library library, + FT_Bitmap* bitmap, + FT_Pos xStrength, + FT_Pos yStrength ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Convert + * + * @description: + * Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp to + * a bitmap object with depth 8bpp, making the number of used bytes per + * line (a.k.a. the 'pitch') a multiple of `alignment`. + * + * @input: + * library :: + * A handle to a library object. + * + * source :: + * The source bitmap. + * + * alignment :: + * The pitch of the bitmap is a multiple of this argument. Common + * values are 1, 2, or 4. + * + * @output: + * target :: + * The target bitmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * It is possible to call @FT_Bitmap_Convert multiple times without + * calling @FT_Bitmap_Done (the memory is simply reallocated). + * + * Use @FT_Bitmap_Done to finally remove the bitmap object. + * + * The `library` argument is taken to have access to FreeType's memory + * handling functions. + * + * `source->buffer` and `target->buffer` must neither be equal nor + * overlap. + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Convert( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target, + FT_Int alignment ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Blend + * + * @description: + * Blend a bitmap onto another bitmap, using a given color. + * + * @input: + * library :: + * A handle to a library object. + * + * source :: + * The source bitmap, which can have any @FT_Pixel_Mode format. + * + * source_offset :: + * The offset vector to the upper left corner of the source bitmap in + * 26.6 pixel format. It should represent an integer offset; the + * function will set the lowest six bits to zero to enforce that. + * + * color :: + * The color used to draw `source` onto `target`. + * + * @inout: + * target :: + * A handle to an `FT_Bitmap` object. It should be either initialized + * as empty with a call to @FT_Bitmap_Init, or it should be of type + * @FT_PIXEL_MODE_BGRA. + * + * atarget_offset :: + * The offset vector to the upper left corner of the target bitmap in + * 26.6 pixel format. It should represent an integer offset; the + * function will set the lowest six bits to zero to enforce that. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function doesn't perform clipping. + * + * The bitmap in `target` gets allocated or reallocated as needed; the + * vector `atarget_offset` is updated accordingly. + * + * In case of allocation or reallocation, the bitmap's pitch is set to + * `4 * width`. Both `source` and `target` must have the same bitmap + * flow (as indicated by the sign of the `pitch` field). + * + * `source->buffer` and `target->buffer` must neither be equal nor + * overlap. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Blend( FT_Library library, + const FT_Bitmap* source, + const FT_Vector source_offset, + FT_Bitmap* target, + FT_Vector *atarget_offset, + FT_Color color ); + + + /************************************************************************** + * + * @function: + * FT_GlyphSlot_Own_Bitmap + * + * @description: + * Make sure that a glyph slot owns `slot->bitmap`. + * + * @input: + * slot :: + * The glyph slot. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is to be used in combination with @FT_Bitmap_Embolden. + */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Done + * + * @description: + * Destroy a bitmap object initialized with @FT_Bitmap_Init. + * + * @input: + * library :: + * A handle to a library object. + * + * bitmap :: + * The bitmap object to be freed. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The `library` argument is taken to have access to FreeType's memory + * handling functions. + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Done( FT_Library library, + FT_Bitmap *bitmap ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTBITMAP_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbzip2.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbzip2.h new file mode 100644 index 0000000..c853058 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftbzip2.h @@ -0,0 +1,102 @@ +/**************************************************************************** + * + * ftbzip2.h + * + * Bzip2-compressed stream support. + * + * Copyright (C) 2010-2022 by + * Joel Klinghed. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTBZIP2_H_ +#define FTBZIP2_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * bzip2 + * + * @title: + * BZIP2 Streams + * + * @abstract: + * Using bzip2-compressed font files. + * + * @description: + * In certain builds of the library, bzip2 compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a bzip2 compressed + * stream from it and re-open the face with it. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream, + * which significantly undermines the performance. + * + * This section contains the declaration of Bzip2-specific functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Stream_OpenBzip2 + * + * @description: + * Open a new stream to parse bzip2-compressed font files. This is + * mainly used to support the compressed `*.pcf.bz2` fonts that come with + * XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close` on the new stream will + * **not** call `FT_Stream_Close` on the source stream. None of the + * stream objects will be released to the heap. + * + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with bzip2 support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenBzip2( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* FTBZIP2_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcache.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcache.h new file mode 100644 index 0000000..ecbbd7b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcache.h @@ -0,0 +1,1087 @@ +/**************************************************************************** + * + * ftcache.h + * + * FreeType Cache subsystem (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTCACHE_H_ +#define FTCACHE_H_ + + +#include + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * cache_subsystem + * + * @title: + * Cache Sub-System + * + * @abstract: + * How to cache face, size, and glyph data with FreeType~2. + * + * @description: + * This section describes the FreeType~2 cache sub-system, which is used + * to limit the number of concurrently opened @FT_Face and @FT_Size + * objects, as well as caching information like character maps and glyph + * images while limiting their maximum memory usage. + * + * Note that all types and functions begin with the `FTC_` prefix. + * + * The cache is highly portable and thus doesn't know anything about the + * fonts installed on your system, or how to access them. This implies + * the following scheme: + * + * First, available or installed font faces are uniquely identified by + * @FTC_FaceID values, provided to the cache by the client. Note that + * the cache only stores and compares these values, and doesn't try to + * interpret them in any way. + * + * Second, the cache calls, only when needed, a client-provided function + * to convert an @FTC_FaceID into a new @FT_Face object. The latter is + * then completely managed by the cache, including its termination + * through @FT_Done_Face. To monitor termination of face objects, the + * finalizer callback in the `generic` field of the @FT_Face object can + * be used, which might also be used to store the @FTC_FaceID of the + * face. + * + * Clients are free to map face IDs to anything else. The most simple + * usage is to associate them to a (pathname,face_index) pair that is + * used to call @FT_New_Face. However, more complex schemes are also + * possible. + * + * Note that for the cache to work correctly, the face ID values must be + * **persistent**, which means that the contents they point to should not + * change at runtime, or that their value should not become invalid. + * + * If this is unavoidable (e.g., when a font is uninstalled at runtime), + * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let + * the cache get rid of any references to the old @FTC_FaceID it may keep + * internally. Failure to do so will lead to incorrect behaviour or even + * crashes. + * + * To use the cache, start with calling @FTC_Manager_New to create a new + * @FTC_Manager object, which models a single cache instance. You can + * then look up @FT_Face and @FT_Size objects with + * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. + * + * If you want to use the charmap caching, call @FTC_CMapCache_New, then + * later use @FTC_CMapCache_Lookup to perform the equivalent of + * @FT_Get_Char_Index, only much faster. + * + * If you want to use the @FT_Glyph caching, call @FTC_ImageCache_New, + * then later use @FTC_ImageCache_Lookup to retrieve the corresponding + * @FT_Glyph objects from the cache. + * + * If you need lots of small bitmaps, it is much more memory efficient to + * call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This + * returns @FTC_SBitRec structures, which are used to store small bitmaps + * directly. (A small bitmap is one whose metrics and dimensions all fit + * into 8-bit integers). + * + * We hope to also provide a kerning cache in the near future. + * + * + * @order: + * FTC_Manager + * FTC_FaceID + * FTC_Face_Requester + * + * FTC_Manager_New + * FTC_Manager_Reset + * FTC_Manager_Done + * FTC_Manager_LookupFace + * FTC_Manager_LookupSize + * FTC_Manager_RemoveFaceID + * + * FTC_Node + * FTC_Node_Unref + * + * FTC_ImageCache + * FTC_ImageCache_New + * FTC_ImageCache_Lookup + * + * FTC_SBit + * FTC_SBitCache + * FTC_SBitCache_New + * FTC_SBitCache_Lookup + * + * FTC_CMapCache + * FTC_CMapCache_New + * FTC_CMapCache_Lookup + * + *************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BASIC TYPE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @type: + * FTC_FaceID + * + * @description: + * An opaque pointer type that is used to identity face objects. The + * contents of such objects is application-dependent. + * + * These pointers are typically used to point to a user-defined structure + * containing a font file path, and face index. + * + * @note: + * Never use `NULL` as a valid @FTC_FaceID. + * + * Face IDs are passed by the client to the cache manager that calls, + * when needed, the @FTC_Face_Requester to translate them into new + * @FT_Face objects. + * + * If the content of a given face ID changes at runtime, or if the value + * becomes invalid (e.g., when uninstalling a font), you should + * immediately call @FTC_Manager_RemoveFaceID before any other cache + * function. + * + * Failure to do so will result in incorrect behaviour or even memory + * leaks and crashes. + */ + typedef FT_Pointer FTC_FaceID; + + + /************************************************************************** + * + * @functype: + * FTC_Face_Requester + * + * @description: + * A callback function provided by client applications. It is used by + * the cache manager to translate a given @FTC_FaceID into a new valid + * @FT_Face object, on demand. + * + * @input: + * face_id :: + * The face ID to resolve. + * + * library :: + * A handle to a FreeType library object. + * + * req_data :: + * Application-provided request data (see note below). + * + * @output: + * aface :: + * A new @FT_Face handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The third parameter `req_data` is the same as the one passed by the + * client when @FTC_Manager_New is called. + * + * The face requester should not perform funny things on the returned + * face object, like creating a new @FT_Size for it, or setting a + * transformation through @FT_Set_Transform! + */ + typedef FT_Error + (*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer req_data, + FT_Face* aface ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE MANAGER OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @type: + * FTC_Manager + * + * @description: + * This object corresponds to one instance of the cache-subsystem. It is + * used to cache one or more @FT_Face objects, along with corresponding + * @FT_Size objects. + * + * The manager intentionally limits the total number of opened @FT_Face + * and @FT_Size objects to control memory usage. See the `max_faces` and + * `max_sizes` parameters of @FTC_Manager_New. + * + * The manager is also used to cache 'nodes' of various types while + * limiting their total memory usage. + * + * All limitations are enforced by keeping lists of managed objects in + * most-recently-used order, and flushing old nodes to make room for new + * ones. + */ + typedef struct FTC_ManagerRec_* FTC_Manager; + + + /************************************************************************** + * + * @type: + * FTC_Node + * + * @description: + * An opaque handle to a cache node object. Each cache node is + * reference-counted. A node with a count of~0 might be flushed out of a + * full cache whenever a lookup request is performed. + * + * If you look up nodes, you have the ability to 'acquire' them, i.e., to + * increment their reference count. This will prevent the node from + * being flushed out of the cache until you explicitly 'release' it (see + * @FTC_Node_Unref). + * + * See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. + */ + typedef struct FTC_NodeRec_* FTC_Node; + + + /************************************************************************** + * + * @function: + * FTC_Manager_New + * + * @description: + * Create a new cache manager. + * + * @input: + * library :: + * The parent FreeType library handle to use. + * + * max_faces :: + * Maximum number of opened @FT_Face objects managed by this cache + * instance. Use~0 for defaults. + * + * max_sizes :: + * Maximum number of opened @FT_Size objects managed by this cache + * instance. Use~0 for defaults. + * + * max_bytes :: + * Maximum number of bytes to use for cached data nodes. Use~0 for + * defaults. Note that this value does not account for managed + * @FT_Face and @FT_Size objects. + * + * requester :: + * An application-provided callback used to translate face IDs into + * real @FT_Face objects. + * + * req_data :: + * A generic pointer that is passed to the requester each time it is + * called (see @FTC_Face_Requester). + * + * @output: + * amanager :: + * A handle to a new manager object. 0~in case of failure. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_Reset + * + * @description: + * Empty a given cache manager. This simply gets rid of all the + * currently cached @FT_Face and @FT_Size objects within the manager. + * + * @inout: + * manager :: + * A handle to the manager. + */ + FT_EXPORT( void ) + FTC_Manager_Reset( FTC_Manager manager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_Done + * + * @description: + * Destroy a given manager after emptying it. + * + * @input: + * manager :: + * A handle to the target cache manager object. + */ + FT_EXPORT( void ) + FTC_Manager_Done( FTC_Manager manager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_LookupFace + * + * @description: + * Retrieve the @FT_Face object that corresponds to a given face ID + * through a cache manager. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * face_id :: + * The ID of the face object. + * + * @output: + * aface :: + * A handle to the face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned @FT_Face object is always owned by the manager. You + * should never try to discard it yourself. + * + * The @FT_Face object doesn't necessarily have a current size object + * (i.e., face->size can be~0). If you need a specific 'font size', use + * @FTC_Manager_LookupSize instead. + * + * Never change the face's transformation matrix (i.e., never call the + * @FT_Set_Transform function) on a returned face! If you need to + * transform glyphs, do it yourself after glyph loading. + * + * When you perform a lookup, out-of-memory errors are detected _within_ + * the lookup and force incremental flushes of the cache until enough + * memory is released for the lookup to succeed. + * + * If a lookup fails with `FT_Err_Out_Of_Memory` the cache has already + * been completely flushed, and still no memory was available for the + * operation. + */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupFace( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + + /************************************************************************** + * + * @struct: + * FTC_ScalerRec + * + * @description: + * A structure used to describe a given character size in either pixels + * or points to the cache manager. See @FTC_Manager_LookupSize. + * + * @fields: + * face_id :: + * The source face ID. + * + * width :: + * The character width. + * + * height :: + * The character height. + * + * pixel :: + * A Boolean. If 1, the `width` and `height` fields are interpreted as + * integer pixel character sizes. Otherwise, they are expressed as + * 1/64th of points. + * + * x_res :: + * Only used when `pixel` is value~0 to indicate the horizontal + * resolution in dpi. + * + * y_res :: + * Only used when `pixel` is value~0 to indicate the vertical + * resolution in dpi. + * + * @note: + * This type is mainly used to retrieve @FT_Size objects through the + * cache manager. + */ + typedef struct FTC_ScalerRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int pixel; + FT_UInt x_res; + FT_UInt y_res; + + } FTC_ScalerRec; + + + /************************************************************************** + * + * @struct: + * FTC_Scaler + * + * @description: + * A handle to an @FTC_ScalerRec structure. + */ + typedef struct FTC_ScalerRec_* FTC_Scaler; + + + /************************************************************************** + * + * @function: + * FTC_Manager_LookupSize + * + * @description: + * Retrieve the @FT_Size object that corresponds to a given + * @FTC_ScalerRec pointer through a cache manager. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * scaler :: + * A scaler handle. + * + * @output: + * asize :: + * A handle to the size object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned @FT_Size object is always owned by the manager. You + * should never try to discard it by yourself. + * + * You can access the parent @FT_Face object simply as `size->face` if + * you need it. Note that this object is also owned by the manager. + * + * @note: + * When you perform a lookup, out-of-memory errors are detected _within_ + * the lookup and force incremental flushes of the cache until enough + * memory is released for the lookup to succeed. + * + * If a lookup fails with `FT_Err_Out_Of_Memory` the cache has already + * been completely flushed, and still no memory is available for the + * operation. + */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupSize( FTC_Manager manager, + FTC_Scaler scaler, + FT_Size *asize ); + + + /************************************************************************** + * + * @function: + * FTC_Node_Unref + * + * @description: + * Decrement a cache node's internal reference count. When the count + * reaches 0, it is not destroyed but becomes eligible for subsequent + * cache flushes. + * + * @input: + * node :: + * The cache node handle. + * + * manager :: + * The cache manager handle. + */ + FT_EXPORT( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_RemoveFaceID + * + * @description: + * A special function used to indicate to the cache manager that a given + * @FTC_FaceID is no longer valid, either because its content changed, or + * because it was deallocated or uninstalled. + * + * @input: + * manager :: + * The cache manager handle. + * + * face_id :: + * The @FTC_FaceID to be removed. + * + * @note: + * This function flushes all nodes from the cache corresponding to this + * `face_id`, with the exception of nodes with a non-null reference + * count. + * + * Such nodes are however modified internally so as to never appear in + * later lookups with the same `face_id` value, and to be immediately + * destroyed when released by all their users. + * + */ + FT_EXPORT( void ) + FTC_Manager_RemoveFaceID( FTC_Manager manager, + FTC_FaceID face_id ); + + + /************************************************************************** + * + * @type: + * FTC_CMapCache + * + * @description: + * An opaque handle used to model a charmap cache. This cache is to hold + * character codes -> glyph indices mappings. + * + */ + typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + + /************************************************************************** + * + * @function: + * FTC_CMapCache_New + * + * @description: + * Create a new charmap cache. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * @output: + * acache :: + * A new cache handle. `NULL` in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Like all other caches, this one will be destroyed with the cache + * manager. + * + */ + FT_EXPORT( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + + /************************************************************************** + * + * @function: + * FTC_CMapCache_Lookup + * + * @description: + * Translate a character code into a glyph index, using the charmap + * cache. + * + * @input: + * cache :: + * A charmap cache handle. + * + * face_id :: + * The source face ID. + * + * cmap_index :: + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. + * + * char_code :: + * The character code (in the corresponding charmap). + * + * @return: + * Glyph index. 0~means 'no glyph'. + * + */ + FT_EXPORT( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_FaceID face_id, + FT_Int cmap_index, + FT_UInt32 char_code ); + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** IMAGE CACHE OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @struct: + * FTC_ImageTypeRec + * + * @description: + * A structure used to model the type of images in a glyph cache. + * + * @fields: + * face_id :: + * The face ID. + * + * width :: + * The width in pixels. + * + * height :: + * The height in pixels. + * + * flags :: + * The load flags, as in @FT_Load_Glyph. + * + */ + typedef struct FTC_ImageTypeRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int32 flags; + + } FTC_ImageTypeRec; + + + /************************************************************************** + * + * @type: + * FTC_ImageType + * + * @description: + * A handle to an @FTC_ImageTypeRec structure. + * + */ + typedef struct FTC_ImageTypeRec_* FTC_ImageType; + + + /* */ + + +#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ + ( (d1)->face_id == (d2)->face_id && \ + (d1)->width == (d2)->width && \ + (d1)->flags == (d2)->flags ) + + + /************************************************************************** + * + * @type: + * FTC_ImageCache + * + * @description: + * A handle to a glyph image cache object. They are designed to hold + * many distinct glyph images while not exceeding a certain memory + * threshold. + */ + typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + + /************************************************************************** + * + * @function: + * FTC_ImageCache_New + * + * @description: + * Create a new glyph image cache. + * + * @input: + * manager :: + * The parent manager for the image cache. + * + * @output: + * acache :: + * A handle to the new glyph image cache object. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + + /************************************************************************** + * + * @function: + * FTC_ImageCache_Lookup + * + * @description: + * Retrieve a given glyph image from a glyph image cache. + * + * @input: + * cache :: + * A handle to the source glyph image cache. + * + * type :: + * A pointer to a glyph image type descriptor. + * + * gindex :: + * The glyph index to retrieve. + * + * @output: + * aglyph :: + * The corresponding @FT_Glyph object. 0~in case of failure. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned glyph is owned and managed by the glyph image cache. + * Never try to transform or discard it manually! You can however create + * a copy with @FT_Glyph_Copy and modify the new one. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the glyph image, after increasing its reference count. + * This ensures that the node (as well as the @FT_Glyph) will always be + * kept in the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the @FT_Glyph could be flushed out of the cache on the next call + * to one of the caching sub-system APIs. Don't assume that it is + * persistent! + */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageType type, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /************************************************************************** + * + * @function: + * FTC_ImageCache_LookupScaler + * + * @description: + * A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec to + * specify the face ID and its size. + * + * @input: + * cache :: + * A handle to the source glyph image cache. + * + * scaler :: + * A pointer to a scaler descriptor. + * + * load_flags :: + * The corresponding load flags. + * + * gindex :: + * The glyph index to retrieve. + * + * @output: + * aglyph :: + * The corresponding @FT_Glyph object. 0~in case of failure. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned glyph is owned and managed by the glyph image cache. + * Never try to transform or discard it manually! You can however create + * a copy with @FT_Glyph_Copy and modify the new one. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the glyph image, after increasing its reference count. + * This ensures that the node (as well as the @FT_Glyph) will always be + * kept in the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the @FT_Glyph could be flushed out of the cache on the next call + * to one of the caching sub-system APIs. Don't assume that it is + * persistent! + * + * Calls to @FT_Set_Char_Size and friends have no effect on cached + * glyphs; you should always use the FreeType cache API instead. + */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_LookupScaler( FTC_ImageCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /************************************************************************** + * + * @type: + * FTC_SBit + * + * @description: + * A handle to a small bitmap descriptor. See the @FTC_SBitRec structure + * for details. + */ + typedef struct FTC_SBitRec_* FTC_SBit; + + + /************************************************************************** + * + * @struct: + * FTC_SBitRec + * + * @description: + * A very compact structure used to describe a small glyph bitmap. + * + * @fields: + * width :: + * The bitmap width in pixels. + * + * height :: + * The bitmap height in pixels. + * + * left :: + * The horizontal distance from the pen position to the left bitmap + * border (a.k.a. 'left side bearing', or 'lsb'). + * + * top :: + * The vertical distance from the pen position (on the baseline) to the + * upper bitmap border (a.k.a. 'top side bearing'). The distance is + * positive for upwards y~coordinates. + * + * format :: + * The format of the glyph bitmap (monochrome or gray). + * + * max_grays :: + * Maximum gray level value (in the range 1 to~255). + * + * pitch :: + * The number of bytes per bitmap line. May be positive or negative. + * + * xadvance :: + * The horizontal advance width in pixels. + * + * yadvance :: + * The vertical advance height in pixels. + * + * buffer :: + * A pointer to the bitmap pixels. + */ + typedef struct FTC_SBitRec_ + { + FT_Byte width; + FT_Byte height; + FT_Char left; + FT_Char top; + + FT_Byte format; + FT_Byte max_grays; + FT_Short pitch; + FT_Char xadvance; + FT_Char yadvance; + + FT_Byte* buffer; + + } FTC_SBitRec; + + + /************************************************************************** + * + * @type: + * FTC_SBitCache + * + * @description: + * A handle to a small bitmap cache. These are special cache objects + * used to store small glyph bitmaps (and anti-aliased pixmaps) in a much + * more efficient way than the traditional glyph image cache implemented + * by @FTC_ImageCache. + */ + typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + + /************************************************************************** + * + * @function: + * FTC_SBitCache_New + * + * @description: + * Create a new cache to store small glyph bitmaps. + * + * @input: + * manager :: + * A handle to the source cache manager. + * + * @output: + * acache :: + * A handle to the new sbit cache. `NULL` in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); + + + /************************************************************************** + * + * @function: + * FTC_SBitCache_Lookup + * + * @description: + * Look up a given small glyph bitmap in a given sbit cache and 'lock' it + * to prevent its flushing from the cache until needed. + * + * @input: + * cache :: + * A handle to the source sbit cache. + * + * type :: + * A pointer to the glyph image type descriptor. + * + * gindex :: + * The glyph index. + * + * @output: + * sbit :: + * A handle to a small bitmap descriptor. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The small bitmap descriptor and its bit buffer are owned by the cache + * and should never be freed by the application. They might as well + * disappear from memory on the next cache lookup, so don't treat them as + * persistent data. + * + * The descriptor's `buffer` field is set to~0 to indicate a missing + * glyph bitmap. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the bitmap, after increasing its reference count. This + * ensures that the node (as well as the image) will always be kept in + * the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the bitmap could be flushed out of the cache on the next call to + * one of the caching sub-system APIs. Don't assume that it is + * persistent! + */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageType type, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + + /************************************************************************** + * + * @function: + * FTC_SBitCache_LookupScaler + * + * @description: + * A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec to + * specify the face ID and its size. + * + * @input: + * cache :: + * A handle to the source sbit cache. + * + * scaler :: + * A pointer to the scaler descriptor. + * + * load_flags :: + * The corresponding load flags. + * + * gindex :: + * The glyph index. + * + * @output: + * sbit :: + * A handle to a small bitmap descriptor. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The small bitmap descriptor and its bit buffer are owned by the cache + * and should never be freed by the application. They might as well + * disappear from memory on the next cache lookup, so don't treat them as + * persistent data. + * + * The descriptor's `buffer` field is set to~0 to indicate a missing + * glyph bitmap. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the bitmap, after increasing its reference count. This + * ensures that the node (as well as the image) will always be kept in + * the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the bitmap could be flushed out of the cache on the next call to + * one of the caching sub-system APIs. Don't assume that it is + * persistent! + */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_LookupScaler( FTC_SBitCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + /* */ + + +FT_END_HEADER + +#endif /* FTCACHE_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftchapters.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftchapters.h new file mode 100644 index 0000000..6a9733a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftchapters.h @@ -0,0 +1,149 @@ +/**************************************************************************** + * + * This file defines the structure of the FreeType reference. + * It is used by the python script that generates the HTML files. + * + */ + + + /************************************************************************** + * + * @chapter: + * general_remarks + * + * @title: + * General Remarks + * + * @sections: + * preamble + * header_inclusion + * user_allocation + * + */ + + + /************************************************************************** + * + * @chapter: + * core_api + * + * @title: + * Core API + * + * @sections: + * version + * basic_types + * base_interface + * glyph_variants + * color_management + * layer_management + * glyph_management + * mac_specific + * sizes_management + * header_file_macros + * + */ + + + /************************************************************************** + * + * @chapter: + * format_specific + * + * @title: + * Format-Specific API + * + * @sections: + * multiple_masters + * truetype_tables + * type1_tables + * sfnt_names + * bdf_fonts + * cid_fonts + * pfr_fonts + * winfnt_fonts + * svg_fonts + * font_formats + * gasp_table + * + */ + + + /************************************************************************** + * + * @chapter: + * module_specific + * + * @title: + * Controlling FreeType Modules + * + * @sections: + * auto_hinter + * cff_driver + * t1_cid_driver + * tt_driver + * pcf_driver + * ot_svg_driver + * properties + * parameter_tags + * lcd_rendering + * + */ + + + /************************************************************************** + * + * @chapter: + * cache_subsystem + * + * @title: + * Cache Sub-System + * + * @sections: + * cache_subsystem + * + */ + + + /************************************************************************** + * + * @chapter: + * support_api + * + * @title: + * Support API + * + * @sections: + * computations + * list_processing + * outline_processing + * quick_advance + * bitmap_handling + * raster + * glyph_stroker + * system_interface + * module_management + * gzip + * lzw + * bzip2 + * debugging_apis + * + */ + + + /************************************************************************** + * + * @chapter: + * error_codes + * + * @title: + * Error Codes + * + * @sections: + * error_enumerations + * error_code_values + * + */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcid.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcid.h new file mode 100644 index 0000000..d801083 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcid.h @@ -0,0 +1,167 @@ +/**************************************************************************** + * + * ftcid.h + * + * FreeType API for accessing CID font information (specification). + * + * Copyright (C) 2007-2022 by + * Dereg Clegg and Michael Toftdal. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTCID_H_ +#define FTCID_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * cid_fonts + * + * @title: + * CID Fonts + * + * @abstract: + * CID-keyed font-specific API. + * + * @description: + * This section contains the declaration of CID-keyed font-specific + * functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Get_CID_Registry_Ordering_Supplement + * + * @description: + * Retrieve the Registry/Ordering/Supplement triple (also known as the + * "R/O/S") from a CID-keyed font. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * registry :: + * The registry, as a C~string, owned by the face. + * + * ordering :: + * The ordering, as a C~string, owned by the face. + * + * supplement :: + * The supplement. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces, returning an error + * otherwise. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement ); + + + /************************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In contrast + * to the @FT_IS_CID_KEYED macro this function returns successfully also + * for CID-keyed fonts in an SFNT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, returning + * an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + + /************************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, returning + * an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + /* */ + + +FT_END_HEADER + +#endif /* FTCID_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcolor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcolor.h new file mode 100644 index 0000000..3edaee4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftcolor.h @@ -0,0 +1,1718 @@ +/**************************************************************************** + * + * ftcolor.h + * + * FreeType's glyph color management (specification). + * + * Copyright (C) 2018-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTCOLOR_H_ +#define FTCOLOR_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * color_management + * + * @title: + * Glyph Color Management + * + * @abstract: + * Retrieving and manipulating OpenType's 'CPAL' table data. + * + * @description: + * The functions described here allow access and manipulation of color + * palette entries in OpenType's 'CPAL' tables. + */ + + + /************************************************************************** + * + * @struct: + * FT_Color + * + * @description: + * This structure models a BGRA color value of a 'CPAL' palette entry. + * + * The used color space is sRGB; the colors are not pre-multiplied, and + * alpha values must be explicitly set. + * + * @fields: + * blue :: + * Blue value. + * + * green :: + * Green value. + * + * red :: + * Red value. + * + * alpha :: + * Alpha value, giving the red, green, and blue color's opacity. + * + * @since: + * 2.10 + */ + typedef struct FT_Color_ + { + FT_Byte blue; + FT_Byte green; + FT_Byte red; + FT_Byte alpha; + + } FT_Color; + + + /************************************************************************** + * + * @enum: + * FT_PALETTE_XXX + * + * @description: + * A list of bit field constants used in the `palette_flags` array of the + * @FT_Palette_Data structure to indicate for which background a palette + * with a given index is usable. + * + * @values: + * FT_PALETTE_FOR_LIGHT_BACKGROUND :: + * The palette is appropriate to use when displaying the font on a + * light background such as white. + * + * FT_PALETTE_FOR_DARK_BACKGROUND :: + * The palette is appropriate to use when displaying the font on a dark + * background such as black. + * + * @since: + * 2.10 + */ +#define FT_PALETTE_FOR_LIGHT_BACKGROUND 0x01 +#define FT_PALETTE_FOR_DARK_BACKGROUND 0x02 + + + /************************************************************************** + * + * @struct: + * FT_Palette_Data + * + * @description: + * This structure holds the data of the 'CPAL' table. + * + * @fields: + * num_palettes :: + * The number of palettes. + * + * palette_name_ids :: + * An optional read-only array of palette name IDs with `num_palettes` + * elements, corresponding to entries like 'dark' or 'light' in the + * font's 'name' table. + * + * An empty name ID in the 'CPAL' table gets represented as value + * 0xFFFF. + * + * `NULL` if the font's 'CPAL' table doesn't contain appropriate data. + * + * palette_flags :: + * An optional read-only array of palette flags with `num_palettes` + * elements. Possible values are an ORed combination of + * @FT_PALETTE_FOR_LIGHT_BACKGROUND and + * @FT_PALETTE_FOR_DARK_BACKGROUND. + * + * `NULL` if the font's 'CPAL' table doesn't contain appropriate data. + * + * num_palette_entries :: + * The number of entries in a single palette. All palettes have the + * same size. + * + * palette_entry_name_ids :: + * An optional read-only array of palette entry name IDs with + * `num_palette_entries`. In each palette, entries with the same index + * have the same function. For example, index~0 might correspond to + * string 'outline' in the font's 'name' table to indicate that this + * palette entry is used for outlines, index~1 might correspond to + * 'fill' to indicate the filling color palette entry, etc. + * + * An empty entry name ID in the 'CPAL' table gets represented as value + * 0xFFFF. + * + * `NULL` if the font's 'CPAL' table doesn't contain appropriate data. + * + * @note: + * Use function @FT_Get_Sfnt_Name to map name IDs and entry name IDs to + * name strings. + * + * Use function @FT_Palette_Select to get the colors associated with a + * palette entry. + * + * @since: + * 2.10 + */ + typedef struct FT_Palette_Data_ { + FT_UShort num_palettes; + const FT_UShort* palette_name_ids; + const FT_UShort* palette_flags; + + FT_UShort num_palette_entries; + const FT_UShort* palette_entry_name_ids; + + } FT_Palette_Data; + + + /************************************************************************** + * + * @function: + * FT_Palette_Data_Get + * + * @description: + * Retrieve the face's color palette data. + * + * @input: + * face :: + * The source face handle. + * + * @output: + * apalette :: + * A pointer to an @FT_Palette_Data structure. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * All arrays in the returned @FT_Palette_Data structure are read-only. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Palette_Data_Get( FT_Face face, + FT_Palette_Data *apalette ); + + + /************************************************************************** + * + * @function: + * FT_Palette_Select + * + * @description: + * This function has two purposes. + * + * (1) It activates a palette for rendering color glyphs, and + * + * (2) it retrieves all (unmodified) color entries of this palette. This + * function returns a read-write array, which means that a calling + * application can modify the palette entries on demand. + * + * A corollary of (2) is that calling the function, then modifying some + * values, then calling the function again with the same arguments resets + * all color entries to the original 'CPAL' values; all user modifications + * are lost. + * + * @input: + * face :: + * The source face handle. + * + * palette_index :: + * The palette index. + * + * @output: + * apalette :: + * An array of color entries for a palette with index `palette_index`, + * having `num_palette_entries` elements (as found in the + * `FT_Palette_Data` structure). If `apalette` is set to `NULL`, no + * array gets returned (and no color entries can be modified). + * + * In case the font doesn't support color palettes, `NULL` is returned. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The array pointed to by `apalette_entries` is owned and managed by + * FreeType. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Palette_Select( FT_Face face, + FT_UShort palette_index, + FT_Color* *apalette ); + + + /************************************************************************** + * + * @function: + * FT_Palette_Set_Foreground_Color + * + * @description: + * 'COLR' uses palette index 0xFFFF to indicate a 'text foreground + * color'. This function sets this value. + * + * @input: + * face :: + * The source face handle. + * + * foreground_color :: + * An `FT_Color` structure to define the text foreground color. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function isn't called, the text foreground color is set to + * white opaque (BGRA value 0xFFFFFFFF) if + * @FT_PALETTE_FOR_DARK_BACKGROUND is present for the current palette, + * and black opaque (BGRA value 0x000000FF) otherwise, including the case + * that no palette types are available in the 'CPAL' table. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Palette_Set_Foreground_Color( FT_Face face, + FT_Color foreground_color ); + + + /************************************************************************** + * + * @section: + * layer_management + * + * @title: + * Glyph Layer Management + * + * @abstract: + * Retrieving and manipulating OpenType's 'COLR' table data. + * + * @description: + * The functions described here allow access of colored glyph layer data + * in OpenType's 'COLR' tables. + */ + + + /************************************************************************** + * + * @struct: + * FT_LayerIterator + * + * @description: + * This iterator object is needed for @FT_Get_Color_Glyph_Layer. + * + * @fields: + * num_layers :: + * The number of glyph layers for the requested glyph index. Will be + * set by @FT_Get_Color_Glyph_Layer. + * + * layer :: + * The current layer. Will be set by @FT_Get_Color_Glyph_Layer. + * + * p :: + * An opaque pointer into 'COLR' table data. The caller must set this + * to `NULL` before the first call of @FT_Get_Color_Glyph_Layer. + */ + typedef struct FT_LayerIterator_ + { + FT_UInt num_layers; + FT_UInt layer; + FT_Byte* p; + + } FT_LayerIterator; + + + /************************************************************************** + * + * @function: + * FT_Get_Color_Glyph_Layer + * + * @description: + * This is an interface to the 'COLR' table in OpenType fonts to + * iteratively retrieve the colored glyph layers associated with the + * current glyph slot. + * + * https://docs.microsoft.com/en-us/typography/opentype/spec/colr + * + * The glyph layer data for a given glyph index, if present, provides an + * alternative, multi-color glyph representation: Instead of rendering + * the outline or bitmap with the given glyph index, glyphs with the + * indices and colors returned by this function are rendered layer by + * layer. + * + * The returned elements are ordered in the z~direction from bottom to + * top; the 'n'th element should be rendered with the associated palette + * color and blended on top of the already rendered layers (elements 0, + * 1, ..., n-1). + * + * @input: + * face :: + * A handle to the parent face object. + * + * base_glyph :: + * The glyph index the colored glyph layers are associated with. + * + * @inout: + * iterator :: + * An @FT_LayerIterator object. For the first call you should set + * `iterator->p` to `NULL`. For all following calls, simply use the + * same object again. + * + * @output: + * aglyph_index :: + * The glyph index of the current layer. + * + * acolor_index :: + * The color index into the font face's color palette of the current + * layer. The value 0xFFFF is special; it doesn't reference a palette + * entry but indicates that the text foreground color should be used + * instead (to be set up by the application outside of FreeType). + * + * The color palette can be retrieved with @FT_Palette_Select. + * + * @return: + * Value~1 if everything is OK. If there are no more layers (or if there + * are no layers at all), value~0 gets returned. In case of an error, + * value~0 is returned also. + * + * @note: + * This function is necessary if you want to handle glyph layers by + * yourself. In particular, functions that operate with @FT_GlyphRec + * objects (like @FT_Get_Glyph or @FT_Glyph_To_Bitmap) don't have access + * to this information. + * + * Note that @FT_Render_Glyph is able to handle colored glyph layers + * automatically if the @FT_LOAD_COLOR flag is passed to a previous call + * to @FT_Load_Glyph. [This is an experimental feature.] + * + * @example: + * ``` + * FT_Color* palette; + * FT_LayerIterator iterator; + * + * FT_Bool have_layers; + * FT_UInt layer_glyph_index; + * FT_UInt layer_color_index; + * + * + * error = FT_Palette_Select( face, palette_index, &palette ); + * if ( error ) + * palette = NULL; + * + * iterator.p = NULL; + * have_layers = FT_Get_Color_Glyph_Layer( face, + * glyph_index, + * &layer_glyph_index, + * &layer_color_index, + * &iterator ); + * + * if ( palette && have_layers ) + * { + * do + * { + * FT_Color layer_color; + * + * + * if ( layer_color_index == 0xFFFF ) + * layer_color = text_foreground_color; + * else + * layer_color = palette[layer_color_index]; + * + * // Load and render glyph `layer_glyph_index', then + * // blend resulting pixmap (using color `layer_color') + * // with previously created pixmaps. + * + * } while ( FT_Get_Color_Glyph_Layer( face, + * glyph_index, + * &layer_glyph_index, + * &layer_color_index, + * &iterator ) ); + * } + * ``` + */ + FT_EXPORT( FT_Bool ) + FT_Get_Color_Glyph_Layer( FT_Face face, + FT_UInt base_glyph, + FT_UInt *aglyph_index, + FT_UInt *acolor_index, + FT_LayerIterator* iterator ); + + + /************************************************************************** + * + * @enum: + * FT_PaintFormat + * + * @description: + * Enumeration describing the different paint format types of the v1 + * extensions to the 'COLR' table, see + * 'https://github.com/googlefonts/colr-gradients-spec'. + * + * The enumeration values losely correspond with the format numbers of + * the specification: FreeType always returns a fully specified 'Paint' + * structure for the 'Transform', 'Translate', 'Scale', 'Rotate', and + * 'Skew' table types even though the specification has different formats + * depending on whether or not a center is specified, whether the scale + * is uniform in x and y~direction or not, etc. Also, only non-variable + * format identifiers are listed in this enumeration; as soon as support + * for variable 'COLR' v1 fonts is implemented, interpolation is + * performed dependent on axis coordinates, which are configured on the + * @FT_Face through @FT_Set_Var_Design_Coordinates. This implies that + * always static, readily interpolated values are returned in the 'Paint' + * structures. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef enum FT_PaintFormat_ + { + FT_COLR_PAINTFORMAT_COLR_LAYERS = 1, + FT_COLR_PAINTFORMAT_SOLID = 2, + FT_COLR_PAINTFORMAT_LINEAR_GRADIENT = 4, + FT_COLR_PAINTFORMAT_RADIAL_GRADIENT = 6, + FT_COLR_PAINTFORMAT_SWEEP_GRADIENT = 8, + FT_COLR_PAINTFORMAT_GLYPH = 10, + FT_COLR_PAINTFORMAT_COLR_GLYPH = 11, + FT_COLR_PAINTFORMAT_TRANSFORM = 12, + FT_COLR_PAINTFORMAT_TRANSLATE = 14, + FT_COLR_PAINTFORMAT_SCALE = 16, + FT_COLR_PAINTFORMAT_ROTATE = 24, + FT_COLR_PAINTFORMAT_SKEW = 28, + FT_COLR_PAINTFORMAT_COMPOSITE = 32, + FT_COLR_PAINT_FORMAT_MAX = 33, + FT_COLR_PAINTFORMAT_UNSUPPORTED = 255 + + } FT_PaintFormat; + + + /************************************************************************** + * + * @struct: + * FT_ColorStopIterator + * + * @description: + * This iterator object is needed for @FT_Get_Colorline_Stops. It keeps + * state while iterating over the stops of an @FT_ColorLine, + * representing the `ColorLine` struct of the v1 extensions to 'COLR', + * see 'https://github.com/googlefonts/colr-gradients-spec'. + * + * @fields: + * num_color_stops :: + * The number of color stops for the requested glyph index. Set by + * @FT_Get_Paint. + * + * current_color_stop :: + * The current color stop. Set by @FT_Get_Colorline_Stops. + * + * p :: + * An opaque pointer into 'COLR' table data. Set by @FT_Get_Paint. + * Updated by @FT_Get_Colorline_Stops. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_ColorStopIterator_ + { + FT_UInt num_color_stops; + FT_UInt current_color_stop; + + FT_Byte* p; + + } FT_ColorStopIterator; + + + /************************************************************************** + * + * @struct: + * FT_ColorIndex + * + * @description: + * A structure representing a `ColorIndex` value of the 'COLR' v1 + * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. + * + * @fields: + * palette_index :: + * The palette index into a 'CPAL' palette. + * + * alpha :: + * Alpha transparency value multiplied with the value from 'CPAL'. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_ColorIndex_ + { + FT_UInt16 palette_index; + FT_F2Dot14 alpha; + + } FT_ColorIndex; + + + /************************************************************************** + * + * @struct: + * FT_ColorStop + * + * @description: + * A structure representing a `ColorStop` value of the 'COLR' v1 + * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. + * + * @fields: + * stop_offset :: + * The stop offset between 0 and 1 along the gradient. + * + * color :: + * The color information for this stop, see @FT_ColorIndex. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_ColorStop_ + { + FT_F2Dot14 stop_offset; + FT_ColorIndex color; + + } FT_ColorStop; + + + /************************************************************************** + * + * @enum: + * FT_PaintExtend + * + * @description: + * An enumeration representing the 'Extend' mode of the 'COLR' v1 + * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. + * It describes how the gradient fill continues at the other boundaries. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef enum FT_PaintExtend_ + { + FT_COLR_PAINT_EXTEND_PAD = 0, + FT_COLR_PAINT_EXTEND_REPEAT = 1, + FT_COLR_PAINT_EXTEND_REFLECT = 2 + + } FT_PaintExtend; + + + /************************************************************************** + * + * @struct: + * FT_ColorLine + * + * @description: + * A structure representing a `ColorLine` value of the 'COLR' v1 + * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. + * It describes a list of color stops along the defined gradient. + * + * @fields: + * extend :: + * The extend mode at the outer boundaries, see @FT_PaintExtend. + * + * color_stop_iterator :: + * The @FT_ColorStopIterator used to enumerate and retrieve the + * actual @FT_ColorStop's. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_ColorLine_ + { + FT_PaintExtend extend; + FT_ColorStopIterator color_stop_iterator; + + } FT_ColorLine; + + + /************************************************************************** + * + * @struct: + * FT_Affine23 + * + * @description: + * A structure used to store a 2x3 matrix. Coefficients are in + * 16.16 fixed-point format. The computation performed is + * + * ``` + * x' = x*xx + y*xy + dx + * y' = x*yx + y*yy + dy + * ``` + * + * @fields: + * xx :: + * Matrix coefficient. + * + * xy :: + * Matrix coefficient. + * + * dx :: + * x translation. + * + * yx :: + * Matrix coefficient. + * + * yy :: + * Matrix coefficient. + * + * dy :: + * y translation. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_Affine_23_ + { + FT_Fixed xx, xy, dx; + FT_Fixed yx, yy, dy; + + } FT_Affine23; + + + /************************************************************************** + * + * @enum: + * FT_Composite_Mode + * + * @description: + * An enumeration listing the 'COLR' v1 composite modes used in + * @FT_PaintComposite. For more details on each paint mode, see + * 'https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators'. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef enum FT_Composite_Mode_ + { + FT_COLR_COMPOSITE_CLEAR = 0, + FT_COLR_COMPOSITE_SRC = 1, + FT_COLR_COMPOSITE_DEST = 2, + FT_COLR_COMPOSITE_SRC_OVER = 3, + FT_COLR_COMPOSITE_DEST_OVER = 4, + FT_COLR_COMPOSITE_SRC_IN = 5, + FT_COLR_COMPOSITE_DEST_IN = 6, + FT_COLR_COMPOSITE_SRC_OUT = 7, + FT_COLR_COMPOSITE_DEST_OUT = 8, + FT_COLR_COMPOSITE_SRC_ATOP = 9, + FT_COLR_COMPOSITE_DEST_ATOP = 10, + FT_COLR_COMPOSITE_XOR = 11, + FT_COLR_COMPOSITE_PLUS = 12, + FT_COLR_COMPOSITE_SCREEN = 13, + FT_COLR_COMPOSITE_OVERLAY = 14, + FT_COLR_COMPOSITE_DARKEN = 15, + FT_COLR_COMPOSITE_LIGHTEN = 16, + FT_COLR_COMPOSITE_COLOR_DODGE = 17, + FT_COLR_COMPOSITE_COLOR_BURN = 18, + FT_COLR_COMPOSITE_HARD_LIGHT = 19, + FT_COLR_COMPOSITE_SOFT_LIGHT = 20, + FT_COLR_COMPOSITE_DIFFERENCE = 21, + FT_COLR_COMPOSITE_EXCLUSION = 22, + FT_COLR_COMPOSITE_MULTIPLY = 23, + FT_COLR_COMPOSITE_HSL_HUE = 24, + FT_COLR_COMPOSITE_HSL_SATURATION = 25, + FT_COLR_COMPOSITE_HSL_COLOR = 26, + FT_COLR_COMPOSITE_HSL_LUMINOSITY = 27, + FT_COLR_COMPOSITE_MAX = 28 + + } FT_Composite_Mode; + + + /************************************************************************** + * + * @struct: + * FT_OpaquePaint + * + * @description: + * A structure representing an offset to a `Paint` value stored in any + * of the paint tables of a 'COLR' v1 font. Compare Offset<24> there. + * When 'COLR' v1 paint tables represented by FreeType objects such as + * @FT_PaintColrLayers, @FT_PaintComposite, or @FT_PaintTransform + * reference downstream nested paint tables, we do not immediately + * retrieve them but encapsulate their location in this type. Use + * @FT_Get_Paint to retrieve the actual @FT_COLR_Paint object that + * describes the details of the respective paint table. + * + * @fields: + * p :: + * An internal offset to a Paint table, needs to be set to NULL before + * passing this struct as an argument to @FT_Get_Paint. + * + * insert_root_transform :: + * An internal boolean to track whether an initial root transform is + * to be provided. Do not set this value. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_Opaque_Paint_ + { + FT_Byte* p; + FT_Bool insert_root_transform; + } FT_OpaquePaint; + + + /************************************************************************** + * + * @struct: + * FT_PaintColrLayers + * + * @description: + * A structure representing a `PaintColrLayers` table of a 'COLR' v1 + * font. This table describes a set of layers that are to be composited + * with composite mode `FT_COLR_COMPOSITE_SRC_OVER`. The return value + * of this function is an @FT_LayerIterator initialized so that it can + * be used with @FT_Get_Paint_Layers to retrieve the @FT_OpaquePaint + * objects as references to each layer. + * + * @fields: + * layer_iterator :: + * The layer iterator that describes the layers of this paint. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintColrLayers_ + { + FT_LayerIterator layer_iterator; + + } FT_PaintColrLayers; + + + /************************************************************************** + * + * @struct: + * FT_PaintSolid + * + * @description: + * A structure representing a `PaintSolid` value of the 'COLR' v1 + * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. + * Using a `PaintSolid` value means that the glyph layer filled with + * this paint is solid-colored and does not contain a gradient. + * + * @fields: + * color :: + * The color information for this solid paint, see @FT_ColorIndex. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintSolid_ + { + FT_ColorIndex color; + + } FT_PaintSolid; + + + /************************************************************************** + * + * @struct: + * FT_PaintLinearGradient + * + * @description: + * A structure representing a `PaintLinearGradient` value of the 'COLR' + * v1 extensions, see + * 'https://github.com/googlefonts/colr-gradients-spec'. The glyph + * layer filled with this paint is drawn filled with a linear gradient. + * + * @fields: + * colorline :: + * The @FT_ColorLine information for this paint, i.e., the list of + * color stops along the gradient. + * + * p0 :: + * The starting point of the gradient definition in font units + * represented as a 16.16 fixed-point `FT_Vector`. + * + * p1 :: + * The end point of the gradient definition in font units + * represented as a 16.16 fixed-point `FT_Vector`. + * + * p2 :: + * Optional point~p2 to rotate the gradient in font units + * represented as a 16.16 fixed-point `FT_Vector`. + * Otherwise equal to~p0. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintLinearGradient_ + { + FT_ColorLine colorline; + + /* TODO: Potentially expose those as x0, y0 etc. */ + FT_Vector p0; + FT_Vector p1; + FT_Vector p2; + + } FT_PaintLinearGradient; + + + /************************************************************************** + * + * @struct: + * FT_PaintRadialGradient + * + * @description: + * A structure representing a `PaintRadialGradient` value of the 'COLR' + * v1 extensions, see + * 'https://github.com/googlefonts/colr-gradients-spec'. The glyph + * layer filled with this paint is drawn filled filled with a radial + * gradient. + * + * @fields: + * colorline :: + * The @FT_ColorLine information for this paint, i.e., the list of + * color stops along the gradient. + * + * c0 :: + * The center of the starting point of the radial gradient in font + * units represented as a 16.16 fixed-point `FT_Vector`. + * + * r0 :: + * The radius of the starting circle of the radial gradient in font + * units represented as a 16.16 fixed-point value. + * + * c1 :: + * The center of the end point of the radial gradient in font units + * represented as a 16.16 fixed-point `FT_Vector`. + * + * r1 :: + * The radius of the end circle of the radial gradient in font + * units represented as a 16.16 fixed-point value. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintRadialGradient_ + { + FT_ColorLine colorline; + + FT_Vector c0; + FT_Pos r0; + FT_Vector c1; + FT_Pos r1; + + } FT_PaintRadialGradient; + + + /************************************************************************** + * + * @struct: + * FT_PaintSweepGradient + * + * @description: + * A structure representing a `PaintSweepGradient` value of the 'COLR' + * v1 extensions, see + * 'https://github.com/googlefonts/colr-gradients-spec'. The glyph + * layer filled with this paint is drawn filled with a sweep gradient + * from `start_angle` to `end_angle`. + * + * @fields: + * colorline :: + * The @FT_ColorLine information for this paint, i.e., the list of + * color stops along the gradient. + * + * center :: + * The center of the sweep gradient in font units represented as a + * vector of 16.16 fixed-point values. + * + * start_angle :: + * The start angle of the sweep gradient in 16.16 fixed-point + * format specifying degrees divided by 180.0 (as in the + * spec). Multiply by 180.0f to receive degrees value. Values are + * given counter-clockwise, starting from the (positive) y~axis. + * + * end_angle :: + * The end angle of the sweep gradient in 16.16 fixed-point + * format specifying degrees divided by 180.0 (as in the + * spec). Multiply by 180.0f to receive degrees value. Values are + * given counter-clockwise, starting from the (positive) y~axis. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintSweepGradient_ + { + FT_ColorLine colorline; + + FT_Vector center; + FT_Fixed start_angle; + FT_Fixed end_angle; + + } FT_PaintSweepGradient; + + + /************************************************************************** + * + * @struct: + * FT_PaintGlyph + * + * @description: + * A structure representing a 'COLR' v1 `PaintGlyph` paint table. + * + * @fields: + * paint :: + * An opaque paint object pointing to a `Paint` table that serves as + * the fill for the glyph ID. + * + * glyphID :: + * The glyph ID from the 'glyf' table, which serves as the contour + * information that is filled with paint. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintGlyph_ + { + FT_OpaquePaint paint; + FT_UInt glyphID; + + } FT_PaintGlyph; + + + /************************************************************************** + * + * @struct: + * FT_PaintColrGlyph + * + * @description: + * A structure representing a 'COLR' v1 `PaintColorGlyph` paint table. + * + * @fields: + * glyphID :: + * The glyph ID from the `BaseGlyphV1List` table that is drawn for + * this paint. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintColrGlyph_ + { + FT_UInt glyphID; + + } FT_PaintColrGlyph; + + + /************************************************************************** + * + * @struct: + * FT_PaintTransform + * + * @description: + * A structure representing a 'COLR' v1 `PaintTransform` paint table. + * + * @fields: + * paint :: + * An opaque paint that is subject to being transformed. + * + * affine :: + * A 2x3 transformation matrix in @FT_Affine23 format containing + * 16.16 fixed-point values. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintTransform_ + { + FT_OpaquePaint paint; + FT_Affine23 affine; + + } FT_PaintTransform; + + + /************************************************************************** + * + * @struct: + * FT_PaintTranslate + * + * @description: + * A structure representing a 'COLR' v1 `PaintTranslate` paint table. + * Used for translating downstream paints by a given x and y~delta. + * + * @fields: + * paint :: + * An @FT_OpaquePaint object referencing the paint that is to be + * rotated. + * + * dx :: + * Translation in x~direction in font units represented as a + * 16.16 fixed-point value. + * + * dy :: + * Translation in y~direction in font units represented as a + * 16.16 fixed-point value. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintTranslate_ + { + FT_OpaquePaint paint; + + FT_Fixed dx; + FT_Fixed dy; + + } FT_PaintTranslate; + + + /************************************************************************** + * + * @struct: + * FT_PaintScale + * + * @description: + * A structure representing all of the 'COLR' v1 'PaintScale*' paint + * tables. Used for scaling downstream paints by a given x and y~scale, + * with a given center. This structure is used for all 'PaintScale*' + * types that are part of specification; fields of this structure are + * filled accordingly. If there is a center, the center values are set, + * otherwise they are set to the zero coordinate. If the source font + * file has 'PaintScaleUniform*' set, the scale values are set + * accordingly to the same value. + * + * @fields: + * paint :: + * An @FT_OpaquePaint object referencing the paint that is to be + * scaled. + * + * scale_x :: + * Scale factor in x~direction represented as a + * 16.16 fixed-point value. + * + * scale_y :: + * Scale factor in y~direction represented as a + * 16.16 fixed-point value. + * + * center_x :: + * x~coordinate of center point to scale from represented as a + * 16.16 fixed-point value. + * + * center_y :: + * y~coordinate of center point to scale from represented as a + * 16.16 fixed-point value. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward-compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintScale_ + { + FT_OpaquePaint paint; + + FT_Fixed scale_x; + FT_Fixed scale_y; + + FT_Fixed center_x; + FT_Fixed center_y; + + } FT_PaintScale; + + + /************************************************************************** + * + * @struct: + * FT_PaintRotate + * + * @description: + * A structure representing a 'COLR' v1 `PaintRotate` paint table. Used + * for rotating downstream paints with a given center and angle. + * + * @fields: + * paint :: + * An @FT_OpaquePaint object referencing the paint that is to be + * rotated. + * + * angle :: + * The rotation angle that is to be applied in degrees divided by + * 180.0 (as in the spec) represented as a 16.16 fixed-point + * value. Multiply by 180.0f to receive degrees value. + * + * center_x :: + * The x~coordinate of the pivot point of the rotation in font + * units) represented as a 16.16 fixed-point value. + * + * center_y :: + * The y~coordinate of the pivot point of the rotation in font + * units represented as a 16.16 fixed-point value. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + + typedef struct FT_PaintRotate_ + { + FT_OpaquePaint paint; + + FT_Fixed angle; + + FT_Fixed center_x; + FT_Fixed center_y; + + } FT_PaintRotate; + + + /************************************************************************** + * + * @struct: + * FT_PaintSkew + * + * @description: + * A structure representing a 'COLR' v1 `PaintSkew` paint table. Used + * for skewing or shearing downstream paints by a given center and + * angle. + * + * @fields: + * paint :: + * An @FT_OpaquePaint object referencing the paint that is to be + * skewed. + * + * x_skew_angle :: + * The skewing angle in x~direction in degrees divided by 180.0 + * (as in the spec) represented as a 16.16 fixed-point + * value. Multiply by 180.0f to receive degrees. + * + * y_skew_angle :: + * The skewing angle in y~direction in degrees divided by 180.0 + * (as in the spec) represented as a 16.16 fixed-point + * value. Multiply by 180.0f to receive degrees. + * + * center_x :: + * The x~coordinate of the pivot point of the skew in font units + * represented as a 16.16 fixed-point value. + * + * center_y :: + * The y~coordinate of the pivot point of the skew in font units + * represented as a 16.16 fixed-point value. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintSkew_ + { + FT_OpaquePaint paint; + + FT_Fixed x_skew_angle; + FT_Fixed y_skew_angle; + + FT_Fixed center_x; + FT_Fixed center_y; + + } FT_PaintSkew; + + + /************************************************************************** + * + * @struct: + * FT_PaintComposite + * + * @description: + * A structure representing a 'COLR'v1 `PaintComposite` paint table. + * Used for compositing two paints in a 'COLR' v1 directed acycling + * graph. + * + * @fields: + * source_paint :: + * An @FT_OpaquePaint object referencing the source that is to be + * composited. + * + * composite_mode :: + * An @FT_Composite_Mode enum value determining the composition + * operation. + * + * backdrop_paint :: + * An @FT_OpaquePaint object referencing the backdrop paint that + * `source_paint` is composited onto. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_PaintComposite_ + { + FT_OpaquePaint source_paint; + FT_Composite_Mode composite_mode; + FT_OpaquePaint backdrop_paint; + + } FT_PaintComposite; + + + /************************************************************************** + * + * @union: + * FT_COLR_Paint + * + * @description: + * A union object representing format and details of a paint table of a + * 'COLR' v1 font, see + * 'https://github.com/googlefonts/colr-gradients-spec'. Use + * @FT_Get_Paint to retrieve a @FT_COLR_Paint for an @FT_OpaquePaint + * object. + * + * @fields: + * format :: + * The gradient format for this Paint structure. + * + * u :: + * Union of all paint table types: + * + * * @FT_PaintColrLayers + * * @FT_PaintGlyph + * * @FT_PaintSolid + * * @FT_PaintLinearGradient + * * @FT_PaintRadialGradient + * * @FT_PaintSweepGradient + * * @FT_PaintTransform + * * @FT_PaintTranslate + * * @FT_PaintRotate + * * @FT_PaintSkew + * * @FT_PaintComposite + * * @FT_PaintColrGlyph + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_COLR_Paint_ + { + FT_PaintFormat format; + + union + { + FT_PaintColrLayers colr_layers; + FT_PaintGlyph glyph; + FT_PaintSolid solid; + FT_PaintLinearGradient linear_gradient; + FT_PaintRadialGradient radial_gradient; + FT_PaintSweepGradient sweep_gradient; + FT_PaintTransform transform; + FT_PaintTranslate translate; + FT_PaintScale scale; + FT_PaintRotate rotate; + FT_PaintSkew skew; + FT_PaintComposite composite; + FT_PaintColrGlyph colr_glyph; + + } u; + + } FT_COLR_Paint; + + + /************************************************************************** + * + * @enum: + * FT_Color_Root_Transform + * + * @description: + * An enumeration to specify whether @FT_Get_Color_Glyph_Paint is to + * return a root transform to configure the client's graphics context + * matrix. + * + * @values: + * FT_COLOR_INCLUDE_ROOT_TRANSFORM :: + * Do include the root transform as the initial @FT_COLR_Paint object. + * + * FT_COLOR_NO_ROOT_TRANSFORM :: + * Do not output an initial root transform. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef enum FT_Color_Root_Transform_ + { + FT_COLOR_INCLUDE_ROOT_TRANSFORM, + FT_COLOR_NO_ROOT_TRANSFORM, + + FT_COLOR_ROOT_TRANSFORM_MAX + + } FT_Color_Root_Transform; + + + /************************************************************************** + * + * @struct: + * FT_ClipBox + * + * @description: + * A structure representing a 'COLR' v1 'ClipBox' table. 'COLR' v1 + * glyphs may optionally define a clip box for aiding allocation or + * defining a maximum drawable region. Use @FT_Get_Color_Glyph_ClipBox + * to retrieve it. + * + * @fields: + * bottom_left :: + * The bottom left corner of the clip box as an @FT_Vector with + * fixed-point coordinates in 26.6 format. + * + * top_left :: + * The top left corner of the clip box as an @FT_Vector with + * fixed-point coordinates in 26.6 format. + * + * top_right :: + * The top right corner of the clip box as an @FT_Vector with + * fixed-point coordinates in 26.6 format. + * + * bottom_right :: + * The bottom right corner of the clip box as an @FT_Vector with + * fixed-point coordinates in 26.6 format. + * + * @since: + * 2.12 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + typedef struct FT_ClipBox_ + { + FT_Vector bottom_left; + FT_Vector top_left; + FT_Vector top_right; + FT_Vector bottom_right; + + } FT_ClipBox; + + + /************************************************************************** + * + * @function: + * FT_Get_Color_Glyph_Paint + * + * @description: + * This is the starting point and interface to color gradient + * information in a 'COLR' v1 table in OpenType fonts to recursively + * retrieve the paint tables for the directed acyclic graph of a colored + * glyph, given a glyph ID. + * + * https://github.com/googlefonts/colr-gradients-spec + * + * In a 'COLR' v1 font, each color glyph defines a directed acyclic + * graph of nested paint tables, such as `PaintGlyph`, `PaintSolid`, + * `PaintLinearGradient`, `PaintRadialGradient`, and so on. Using this + * function and specifying a glyph ID, one retrieves the root paint + * table for this glyph ID. + * + * This function allows control whether an initial root transform is + * returned to configure scaling, transform, and translation correctly + * on the client's graphics context. The initial root transform is + * computed and returned according to the values configured for @FT_Size + * and @FT_Set_Transform on the @FT_Face object, see below for details + * of the `root_transform` parameter. This has implications for a + * client 'COLR' v1 implementation: When this function returns an + * initially computed root transform, at the time of executing the + * @FT_PaintGlyph operation, the contours should be retrieved using + * @FT_Load_Glyph at unscaled, untransformed size. This is because the + * root transform applied to the graphics context will take care of + * correct scaling. + * + * Alternatively, to allow hinting of contours, at the time of executing + * @FT_Load_Glyph, the current graphics context transformation matrix + * can be decomposed into a scaling matrix and a remainder, and + * @FT_Load_Glyph can be used to retrieve the contours at scaled size. + * Care must then be taken to blit or clip to the graphics context with + * taking this remainder transformation into account. + * + * @input: + * face :: + * A handle to the parent face object. + * + * base_glyph :: + * The glyph index for which to retrieve the root paint table. + * + * root_transform :: + * Specifies whether an initially computed root is returned by the + * @FT_PaintTransform operation to account for the activated size + * (see @FT_Activate_Size) and the configured transform and translate + * (see @FT_Set_Transform). + * + * This root transform is returned before nodes of the glyph graph of + * the font are returned. Subsequent @FT_COLR_Paint structures + * contain unscaled and untransformed values. The inserted root + * transform enables the client application to apply an initial + * transform to its graphics context. When executing subsequent + * FT_COLR_Paint operations, values from @FT_COLR_Paint operations + * will ultimately be correctly scaled because of the root transform + * applied to the graphics context. Use + * @FT_COLOR_INCLUDE_ROOT_TRANSFORM to include the root transform, use + * @FT_COLOR_NO_ROOT_TRANSFORM to not include it. The latter may be + * useful when traversing the 'COLR' v1 glyph graph and reaching a + * @FT_PaintColrGlyph. When recursing into @FT_PaintColrGlyph and + * painting that inline, no additional root transform is needed as it + * has already been applied to the graphics context at the beginning + * of drawing this glyph. + * + * @output: + * paint :: + * The @FT_OpaquePaint object that references the actual paint table. + * + * The respective actual @FT_COLR_Paint object is retrieved via + * @FT_Get_Paint. + * + * @return: + * Value~1 if everything is OK. If no color glyph is found, or the root + * paint could not be retrieved, value~0 gets returned. In case of an + * error, value~0 is returned also. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + FT_EXPORT( FT_Bool ) + FT_Get_Color_Glyph_Paint( FT_Face face, + FT_UInt base_glyph, + FT_Color_Root_Transform root_transform, + FT_OpaquePaint* paint ); + + + /************************************************************************** + * + * @function: + * FT_Get_Color_Glyph_ClipBox + * + * @description: + * Search for a 'COLR' v1 clip box for the specified `base_glyph` and + * fill the `clip_box` parameter with the 'COLR' v1 'ClipBox' information + * if one is found. + * + * @input: + * face :: + * A handle to the parent face object. + * + * base_glyph :: + * The glyph index for which to retrieve the clip box. + * + * @output: + * clip_box :: + * The clip box for the requested `base_glyph` if one is found. The + * clip box is computed taking scale and transformations configured on + * the @FT_Face into account. @FT_ClipBox contains @FT_Vector values + * in 26.6 format. + * + * @return: + * Value~1 if a clip box is found. If no clip box is found or an error + * occured, value~0 is returned. + * + * @note: + * To retrieve the clip box in font units, reset scale to units-per-em + * and remove transforms configured using @FT_Set_Transform. + * + * @since: + * 2.12 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + FT_EXPORT( FT_Bool ) + FT_Get_Color_Glyph_ClipBox( FT_Face face, + FT_UInt base_glyph, + FT_ClipBox* clip_box ); + + + /************************************************************************** + * + * @function: + * FT_Get_Paint_Layers + * + * @description: + * Access the layers of a `PaintColrLayers` table. + * + * If the root paint of a color glyph, or a nested paint of a 'COLR' + * glyph is a `PaintColrLayers` table, this function retrieves the + * layers of the `PaintColrLayers` table. + * + * The @FT_PaintColrLayers object contains an @FT_LayerIterator, which + * is used here to iterate over the layers. Each layer is returned as + * an @FT_OpaquePaint object, which then can be used with @FT_Get_Paint + * to retrieve the actual paint object. + * + * @input: + * face :: + * A handle to the parent face object. + * + * @inout: + * iterator :: + * The @FT_LayerIterator from an @FT_PaintColrLayers object, for which + * the layers are to be retrieved. The internal state of the iterator + * is incremented after one call to this function for retrieving one + * layer. + * + * @output: + * paint :: + * The @FT_OpaquePaint object that references the actual paint table. + * The respective actual @FT_COLR_Paint object is retrieved via + * @FT_Get_Paint. + * + * @return: + * Value~1 if everything is OK. Value~0 gets returned when the paint + * object can not be retrieved or any other error occurs. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + FT_EXPORT( FT_Bool ) + FT_Get_Paint_Layers( FT_Face face, + FT_LayerIterator* iterator, + FT_OpaquePaint* paint ); + + + /************************************************************************** + * + * @function: + * FT_Get_Colorline_Stops + * + * @description: + * This is an interface to color gradient information in a 'COLR' v1 + * table in OpenType fonts to iteratively retrieve the gradient and + * solid fill information for colored glyph layers for a specified glyph + * ID. + * + * https://github.com/googlefonts/colr-gradients-spec + * + * @input: + * face :: + * A handle to the parent face object. + * + * @inout: + * iterator :: + * The retrieved @FT_ColorStopIterator, configured on an @FT_ColorLine, + * which in turn got retrieved via paint information in + * @FT_PaintLinearGradient or @FT_PaintRadialGradient. + * + * @output: + * color_stop :: + * Color index and alpha value for the retrieved color stop. + * + * @return: + * Value~1 if everything is OK. If there are no more color stops, + * value~0 gets returned. In case of an error, value~0 is returned + * also. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + FT_EXPORT( FT_Bool ) + FT_Get_Colorline_Stops( FT_Face face, + FT_ColorStop* color_stop, + FT_ColorStopIterator* iterator ); + + + /************************************************************************** + * + * @function: + * FT_Get_Paint + * + * @description: + * Access the details of a paint using an @FT_OpaquePaint opaque paint + * object, which internally stores the offset to the respective `Paint` + * object in the 'COLR' table. + * + * @input: + * face :: + * A handle to the parent face object. + * + * opaque_paint :: + * The opaque paint object for which the underlying @FT_COLR_Paint + * data is to be retrieved. + * + * @output: + * paint :: + * The specific @FT_COLR_Paint object containing information coming + * from one of the font's `Paint*` tables. + * + * @return: + * Value~1 if everything is OK. Value~0 if no details can be found for + * this paint or any other error occured. + * + * @since: + * 2.11 -- **currently experimental only!** There might be changes + * without retaining backward compatibility of both the API and ABI. + * + */ + FT_EXPORT( FT_Bool ) + FT_Get_Paint( FT_Face face, + FT_OpaquePaint opaque_paint, + FT_COLR_Paint* paint ); + + /* */ + + +FT_END_HEADER + +#endif /* FTCOLOR_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftdriver.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftdriver.h new file mode 100644 index 0000000..0dc91e8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftdriver.h @@ -0,0 +1,1250 @@ +/**************************************************************************** + * + * ftdriver.h + * + * FreeType API for controlling driver modules (specification only). + * + * Copyright (C) 2017-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTDRIVER_H_ +#define FTDRIVER_H_ + +#include +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * auto_hinter + * + * @title: + * The auto-hinter + * + * @abstract: + * Controlling the auto-hinting module. + * + * @description: + * While FreeType's auto-hinter doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * Note that the auto-hinter's module name is 'autofitter' for historical + * reasons. + * + * Available properties are @increase-x-height, @no-stem-darkening + * (experimental), @darkening-parameters (experimental), + * @glyph-to-script-map (experimental), @fallback-script (experimental), + * and @default-script (experimental), as documented in the @properties + * section. + * + */ + + + /************************************************************************** + * + * @section: + * cff_driver + * + * @title: + * The CFF driver + * + * @abstract: + * Controlling the CFF driver module. + * + * @description: + * While FreeType's CFF driver doesn't expose API functions by itself, it + * is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. + * + * The CFF driver's module name is 'cff'. + * + * Available properties are @hinting-engine, @no-stem-darkening, + * @darkening-parameters, and @random-seed, as documented in the + * @properties section. + * + * + * **Hinting and anti-aliasing principles of the new engine** + * + * The rasterizer is positioning horizontal features (e.g., ascender + * height & x-height, or crossbars) on the pixel grid and minimizing the + * amount of anti-aliasing applied to them, while placing vertical + * features (vertical stems) on the pixel grid without hinting, thus + * representing the stem position and weight accurately. Sometimes the + * vertical stems may be only partially black. In this context, + * 'anti-aliasing' means that stems are not positioned exactly on pixel + * borders, causing a fuzzy appearance. + * + * There are two principles behind this approach. + * + * 1) No hinting in the horizontal direction: Unlike 'superhinted' + * TrueType, which changes glyph widths to accommodate regular + * inter-glyph spacing, Adobe's approach is 'faithful to the design' in + * representing both the glyph width and the inter-glyph spacing designed + * for the font. This makes the screen display as close as it can be to + * the result one would get with infinite resolution, while preserving + * what is considered the key characteristics of each glyph. Note that + * the distances between unhinted and grid-fitted positions at small + * sizes are comparable to kerning values and thus would be noticeable + * (and distracting) while reading if hinting were applied. + * + * One of the reasons to not hint horizontally is anti-aliasing for LCD + * screens: The pixel geometry of modern displays supplies three vertical + * subpixels as the eye moves horizontally across each visible pixel. On + * devices where we can be certain this characteristic is present a + * rasterizer can take advantage of the subpixels to add increments of + * weight. In Western writing systems this turns out to be the more + * critical direction anyway; the weights and spacing of vertical stems + * (see above) are central to Armenian, Cyrillic, Greek, and Latin type + * designs. Even when the rasterizer uses greyscale anti-aliasing instead + * of color (a necessary compromise when one doesn't know the screen + * characteristics), the unhinted vertical features preserve the design's + * weight and spacing much better than aliased type would. + * + * 2) Alignment in the vertical direction: Weights and spacing along the + * y~axis are less critical; what is much more important is the visual + * alignment of related features (like cap-height and x-height). The + * sense of alignment for these is enhanced by the sharpness of grid-fit + * edges, while the cruder vertical resolution (full pixels instead of + * 1/3 pixels) is less of a problem. + * + * On the technical side, horizontal alignment zones for ascender, + * x-height, and other important height values (traditionally called + * 'blue zones') as defined in the font are positioned independently, + * each being rounded to the nearest pixel edge, taking care of overshoot + * suppression at small sizes, stem darkening, and scaling. + * + * Hstems (this is, hint values defined in the font to help align + * horizontal features) that fall within a blue zone are said to be + * 'captured' and are aligned to that zone. Uncaptured stems are moved + * in one of four ways, top edge up or down, bottom edge up or down. + * Unless there are conflicting hstems, the smallest movement is taken to + * minimize distortion. + * + */ + + + /************************************************************************** + * + * @section: + * pcf_driver + * + * @title: + * The PCF driver + * + * @abstract: + * Controlling the PCF driver module. + * + * @description: + * While FreeType's PCF driver doesn't expose API functions by itself, it + * is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. Right now, there is a single property + * @no-long-family-names available if FreeType is compiled with + * PCF_CONFIG_OPTION_LONG_FAMILY_NAMES. + * + * The PCF driver's module name is 'pcf'. + * + */ + + + /************************************************************************** + * + * @section: + * t1_cid_driver + * + * @title: + * The Type 1 and CID drivers + * + * @abstract: + * Controlling the Type~1 and CID driver modules. + * + * @description: + * It is possible to control the behaviour of FreeType's Type~1 and + * Type~1 CID drivers with @FT_Property_Set and @FT_Property_Get. + * + * Behind the scenes, both drivers use the Adobe CFF engine for hinting; + * however, the used properties must be specified separately. + * + * The Type~1 driver's module name is 'type1'; the CID driver's module + * name is 't1cid'. + * + * Available properties are @hinting-engine, @no-stem-darkening, + * @darkening-parameters, and @random-seed, as documented in the + * @properties section. + * + * Please see the @cff_driver section for more details on the new hinting + * engine. + * + */ + + + /************************************************************************** + * + * @section: + * tt_driver + * + * @title: + * The TrueType driver + * + * @abstract: + * Controlling the TrueType driver module. + * + * @description: + * While FreeType's TrueType driver doesn't expose API functions by + * itself, it is possible to control its behaviour with @FT_Property_Set + * and @FT_Property_Get. + * + * The TrueType driver's module name is 'truetype'; a single property + * @interpreter-version is available, as documented in the @properties + * section. + * + * To help understand the differences between interpreter versions, we + * introduce a list of definitions, kindly provided by Greg Hitchcock. + * + * _Bi-Level Rendering_ + * + * Monochromatic rendering, exclusively used in the early days of + * TrueType by both Apple and Microsoft. Microsoft's GDI interface + * supported hinting of the right-side bearing point, such that the + * advance width could be non-linear. Most often this was done to + * achieve some level of glyph symmetry. To enable reasonable + * performance (e.g., not having to run hinting on all glyphs just to get + * the widths) there was a bit in the head table indicating if the side + * bearing was hinted, and additional tables, 'hdmx' and 'LTSH', to cache + * hinting widths across multiple sizes and device aspect ratios. + * + * _Font Smoothing_ + * + * Microsoft's GDI implementation of anti-aliasing. Not traditional + * anti-aliasing as the outlines were hinted before the sampling. The + * widths matched the bi-level rendering. + * + * _ClearType Rendering_ + * + * Technique that uses physical subpixels to improve rendering on LCD + * (and other) displays. Because of the higher resolution, many methods + * of improving symmetry in glyphs through hinting the right-side bearing + * were no longer necessary. This lead to what GDI calls 'natural + * widths' ClearType, see + * http://rastertragedy.com/RTRCh4.htm#Sec21. Since hinting + * has extra resolution, most non-linearity went away, but it is still + * possible for hints to change the advance widths in this mode. + * + * _ClearType Compatible Widths_ + * + * One of the earliest challenges with ClearType was allowing the + * implementation in GDI to be selected without requiring all UI and + * documents to reflow. To address this, a compatible method of + * rendering ClearType was added where the font hints are executed once + * to determine the width in bi-level rendering, and then re-run in + * ClearType, with the difference in widths being absorbed in the font + * hints for ClearType (mostly in the white space of hints); see + * http://rastertragedy.com/RTRCh4.htm#Sec20. Somewhat by + * definition, compatible width ClearType allows for non-linear widths, + * but only when the bi-level version has non-linear widths. + * + * _ClearType Subpixel Positioning_ + * + * One of the nice benefits of ClearType is the ability to more crisply + * display fractional widths; unfortunately, the GDI model of integer + * bitmaps did not support this. However, the WPF and Direct Write + * frameworks do support fractional widths. DWrite calls this 'natural + * mode', not to be confused with GDI's 'natural widths'. Subpixel + * positioning, in the current implementation of Direct Write, + * unfortunately does not support hinted advance widths, see + * http://rastertragedy.com/RTRCh4.htm#Sec22. Note that the + * TrueType interpreter fully allows the advance width to be adjusted in + * this mode, just the DWrite client will ignore those changes. + * + * _ClearType Backward Compatibility_ + * + * This is a set of exceptions made in the TrueType interpreter to + * minimize hinting techniques that were problematic with the extra + * resolution of ClearType; see + * http://rastertragedy.com/RTRCh4.htm#Sec1 and + * https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx. + * This technique is not to be confused with ClearType compatible widths. + * ClearType backward compatibility has no direct impact on changing + * advance widths, but there might be an indirect impact on disabling + * some deltas. This could be worked around in backward compatibility + * mode. + * + * _Native ClearType Mode_ + * + * (Not to be confused with 'natural widths'.) This mode removes all the + * exceptions in the TrueType interpreter when running with ClearType. + * Any issues on widths would still apply, though. + * + */ + + + /************************************************************************** + * + * @section: + * ot_svg_driver + * + * @title: + * The SVG driver + * + * @abstract: + * Controlling the external rendering of OT-SVG glyphs. + * + * @description: + * By default, FreeType can only load the 'SVG~' table of OpenType fonts + * if configuration macro `FT_CONFIG_OPTION_SVG` is defined. To make it + * render SVG glyphs, an external SVG rendering library is needed. All + * details on the interface between FreeType and the external library + * via function hooks can be found in section @svg_fonts. + * + * The OT-SVG driver's module name is 'ot-svg'; it supports a single + * property called @svg-hooks, documented below in the @properties + * section. + * + */ + + + /************************************************************************** + * + * @section: + * properties + * + * @title: + * Driver properties + * + * @abstract: + * Controlling driver modules. + * + * @description: + * Driver modules can be controlled by setting and unsetting properties, + * using the functions @FT_Property_Set and @FT_Property_Get. This + * section documents the available properties, together with auxiliary + * macros and structures. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_HINTING_XXX + * + * @description: + * A list of constants used for the @hinting-engine property to select + * the hinting engine for CFF, Type~1, and CID fonts. + * + * @values: + * FT_HINTING_FREETYPE :: + * Use the old FreeType hinting engine. + * + * FT_HINTING_ADOBE :: + * Use the hinting engine contributed by Adobe. + * + * @since: + * 2.9 + * + */ +#define FT_HINTING_FREETYPE 0 +#define FT_HINTING_ADOBE 1 + + /* these constants (introduced in 2.4.12) are deprecated */ +#define FT_CFF_HINTING_FREETYPE FT_HINTING_FREETYPE +#define FT_CFF_HINTING_ADOBE FT_HINTING_ADOBE + + + /************************************************************************** + * + * @property: + * hinting-engine + * + * @description: + * Thanks to Adobe, which contributed a new hinting (and parsing) engine, + * an application can select between 'freetype' and 'adobe' if compiled + * with `CFF_CONFIG_OPTION_OLD_ENGINE`. If this configuration macro + * isn't defined, 'hinting-engine' does nothing. + * + * The same holds for the Type~1 and CID modules if compiled with + * `T1_CONFIG_OPTION_OLD_ENGINE`. + * + * For the 'cff' module, the default engine is 'adobe'. For both the + * 'type1' and 't1cid' modules, the default engine is 'adobe', too. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values 'adobe' or 'freetype'). + * + * @example: + * The following example code demonstrates how to select Adobe's hinting + * engine for the 'cff' module (omitting the error handling). + * + * ``` + * FT_Library library; + * FT_UInt hinting_engine = FT_HINTING_ADOBE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "hinting-engine", &hinting_engine ); + * ``` + * + * @since: + * 2.4.12 (for 'cff' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * no-stem-darkening + * + * @description: + * All glyphs that pass through the auto-hinter will be emboldened unless + * this property is set to TRUE. The same is true for the CFF, Type~1, + * and CID font modules if the 'Adobe' engine is selected (which is the + * default). + * + * Stem darkening emboldens glyphs at smaller sizes to make them more + * readable on common low-DPI screens when using linear alpha blending + * and gamma correction, see @FT_Render_Glyph. When not using linear + * alpha blending and gamma correction, glyphs will appear heavy and + * fuzzy! + * + * Gamma correction essentially lightens fonts since shades of grey are + * shifted to higher pixel values (=~higher brightness) to match the + * original intention to the reality of our screens. The side-effect is + * that glyphs 'thin out'. Mac OS~X and Adobe's proprietary font + * rendering library implement a counter-measure: stem darkening at + * smaller sizes where shades of gray dominate. By emboldening a glyph + * slightly in relation to its pixel size, individual pixels get higher + * coverage of filled-in outlines and are therefore 'blacker'. This + * counteracts the 'thinning out' of glyphs, making text remain readable + * at smaller sizes. + * + * For the auto-hinter, stem-darkening is experimental currently and thus + * switched off by default (this is, `no-stem-darkening` is set to TRUE + * by default). Total consistency with the CFF driver is not achieved + * right now because the emboldening method differs and glyphs must be + * scaled down on the Y-axis to keep outline points inside their + * precomputed blue zones. The smaller the size (especially 9ppem and + * down), the higher the loss of emboldening versus the CFF driver. + * + * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values 1 and 0 for 'on' and 'off', respectively). It + * can also be set per face using @FT_Face_Properties with + * @FT_PARAM_TAG_STEM_DARKENING. + * + * @example: + * ``` + * FT_Library library; + * FT_Bool no_stem_darkening = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "no-stem-darkening", &no_stem_darkening ); + * ``` + * + * @since: + * 2.4.12 (for 'cff' module) + * + * 2.6.2 (for 'autofitter' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * darkening-parameters + * + * @description: + * By default, the Adobe hinting engine, as used by the CFF, Type~1, and + * CID font drivers, darkens stems as follows (if the `no-stem-darkening` + * property isn't set): + * + * ``` + * stem width <= 0.5px: darkening amount = 0.4px + * stem width = 1px: darkening amount = 0.275px + * stem width = 1.667px: darkening amount = 0.275px + * stem width >= 2.333px: darkening amount = 0px + * ``` + * + * and piecewise linear in-between. At configuration time, these four + * control points can be set with the macro + * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS`; the CFF, Type~1, and CID + * drivers share these values. At runtime, the control points can be + * changed using the `darkening-parameters` property (see the example + * below that demonstrates this for the Type~1 driver). + * + * The x~values give the stem width, and the y~values the darkening + * amount. The unit is 1000th of pixels. All coordinate values must be + * positive; the x~values must be monotonically increasing; the y~values + * must be monotonically decreasing and smaller than or equal to 500 + * (corresponding to half a pixel); the slope of each linear piece must + * be shallower than -1 (e.g., -.4). + * + * The auto-hinter provides this property, too, as an experimental + * feature. See @no-stem-darkening for more. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable, using eight comma-separated integers without spaces. Here + * the above example, using `\` to break the line for readability. + * + * ``` + * FREETYPE_PROPERTIES=\ + * type1:darkening-parameters=500,300,1000,200,1500,100,2000,0 + * ``` + * + * @example: + * ``` + * FT_Library library; + * FT_Int darken_params[8] = { 500, 300, // x1, y1 + * 1000, 200, // x2, y2 + * 1500, 100, // x3, y3 + * 2000, 0 }; // x4, y4 + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "type1", + * "darkening-parameters", darken_params ); + * ``` + * + * @since: + * 2.5.1 (for 'cff' module) + * + * 2.6.2 (for 'autofitter' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * random-seed + * + * @description: + * By default, the seed value for the CFF 'random' operator and the + * similar '0 28 callothersubr pop' command for the Type~1 and CID + * drivers is set to a random value. However, mainly for debugging + * purposes, it is often necessary to use a known value as a seed so that + * the pseudo-random number sequences generated by 'random' are + * repeatable. + * + * The `random-seed` property does that. Its argument is a signed 32bit + * integer; if the value is zero or negative, the seed given by the + * `intitialRandomSeed` private DICT operator in a CFF file gets used (or + * a default value if there is no such operator). If the value is + * positive, use it instead of `initialRandomSeed`, which is consequently + * ignored. + * + * @note: + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable. It can also be set per face using @FT_Face_Properties with + * @FT_PARAM_TAG_RANDOM_SEED. + * + * @since: + * 2.8 (for 'cff' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * no-long-family-names + * + * @description: + * If `PCF_CONFIG_OPTION_LONG_FAMILY_NAMES` is active while compiling + * FreeType, the PCF driver constructs long family names. + * + * There are many PCF fonts just called 'Fixed' which look completely + * different, and which have nothing to do with each other. When + * selecting 'Fixed' in KDE or Gnome one gets results that appear rather + * random, the style changes often if one changes the size and one cannot + * select some fonts at all. The improve this situation, the PCF module + * prepends the foundry name (plus a space) to the family name. It also + * checks whether there are 'wide' characters; all put together, family + * names like 'Sony Fixed' or 'Misc Fixed Wide' are constructed. + * + * If `no-long-family-names` is set, this feature gets switched off. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values 1 and 0 for 'on' and 'off', respectively). + * + * @example: + * ``` + * FT_Library library; + * FT_Bool no_long_family_names = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "pcf", + * "no-long-family-names", + * &no_long_family_names ); + * ``` + * + * @since: + * 2.8 + */ + + + /************************************************************************** + * + * @enum: + * TT_INTERPRETER_VERSION_XXX + * + * @description: + * A list of constants used for the @interpreter-version property to + * select the hinting engine for Truetype fonts. + * + * The numeric value in the constant names represents the version number + * as returned by the 'GETINFO' bytecode instruction. + * + * @values: + * TT_INTERPRETER_VERSION_35 :: + * Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in + * Windows~98; only grayscale and B/W rasterizing is supported. + * + * TT_INTERPRETER_VERSION_38 :: + * Version~38 corresponds to MS rasterizer v.1.9; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in the Internet Explorer~9 running on + * Windows~7). It is used in FreeType to select the 'Infinality' + * subpixel hinting code. The code may be removed in a future version. + * + * TT_INTERPRETER_VERSION_40 :: + * Version~40 corresponds to MS rasterizer v.2.1; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in Microsoft's Edge Browser on Windows~10). + * It is used in FreeType to select the 'minimal' subpixel hinting + * code, a stripped-down and higher performance version of the + * 'Infinality' code. + * + * @note: + * This property controls the behaviour of the bytecode interpreter and + * thus how outlines get hinted. It does **not** control how glyph get + * rasterized! In particular, it does not control subpixel color + * filtering. + * + * If FreeType has not been compiled with the configuration option + * `TT_CONFIG_OPTION_SUBPIXEL_HINTING`, selecting version~38 or~40 causes + * an `FT_Err_Unimplemented_Feature` error. + * + * Depending on the graphics framework, Microsoft uses different bytecode + * and rendering engines. As a consequence, the version numbers returned + * by a call to the 'GETINFO' bytecode instruction are more convoluted + * than desired. + * + * Here are two tables that try to shed some light on the possible values + * for the MS rasterizer engine, together with the additional features + * introduced by it. + * + * ``` + * GETINFO framework version feature + * ------------------------------------------------------------------- + * 3 GDI (Win 3.1), v1.0 16-bit, first version + * TrueImage + * 33 GDI (Win NT 3.1), v1.5 32-bit + * HP Laserjet + * 34 GDI (Win 95) v1.6 font smoothing, + * new SCANTYPE opcode + * 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET + * bits in composite glyphs + * 36 MGDI (Win CE 2) v1.6+ classic ClearType + * 37 GDI (XP and later), v1.8 ClearType + * GDI+ old (before Vista) + * 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType, + * WPF Y-direction ClearType, + * additional error checking + * 39 DWrite (before Win 8) v2.0 subpixel ClearType flags + * in GETINFO opcode, + * bug fixes + * 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag + * DWrite (Win 8) in GETINFO opcode, + * Gray ClearType + * ``` + * + * The 'version' field gives a rough orientation only, since some + * applications provided certain features much earlier (as an example, + * Microsoft Reader used subpixel and Y-direction ClearType already in + * Windows 2000). Similarly, updates to a given framework might include + * improved hinting support. + * + * ``` + * version sampling rendering comment + * x y x y + * -------------------------------------------------------------- + * v1.0 normal normal B/W B/W bi-level + * v1.6 high high gray gray grayscale + * v1.8 high normal color-filter B/W (GDI) ClearType + * v1.9 high high color-filter gray Color ClearType + * v2.1 high normal gray B/W Gray ClearType + * v2.1 high high gray gray Gray ClearType + * ``` + * + * Color and Gray ClearType are the two available variants of + * 'Y-direction ClearType', meaning grayscale rasterization along the + * Y-direction; the name used in the TrueType specification for this + * feature is 'symmetric smoothing'. 'Classic ClearType' is the original + * algorithm used before introducing a modified version in Win~XP. + * Another name for v1.6's grayscale rendering is 'font smoothing', and + * 'Color ClearType' is sometimes also called 'DWrite ClearType'. To + * differentiate between today's Color ClearType and the earlier + * ClearType variant with B/W rendering along the vertical axis, the + * latter is sometimes called 'GDI ClearType'. + * + * 'Normal' and 'high' sampling describe the (virtual) resolution to + * access the rasterized outline after the hinting process. 'Normal' + * means 1 sample per grid line (i.e., B/W). In the current Microsoft + * implementation, 'high' means an extra virtual resolution of 16x16 (or + * 16x1) grid lines per pixel for bytecode instructions like 'MIRP'. + * After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid + * lines for color filtering if Color ClearType is activated. + * + * Note that 'Gray ClearType' is essentially the same as v1.6's grayscale + * rendering. However, the GETINFO instruction handles it differently: + * v1.6 returns bit~12 (hinting for grayscale), while v2.1 returns + * bits~13 (hinting for ClearType), 18 (symmetrical smoothing), and~19 + * (Gray ClearType). Also, this mode respects bits 2 and~3 for the + * version~1 gasp table exclusively (like Color ClearType), while v1.6 + * only respects the values of version~0 (bits 0 and~1). + * + * Keep in mind that the features of the above interpreter versions might + * not map exactly to FreeType features or behavior because it is a + * fundamentally different library with different internals. + * + */ +#define TT_INTERPRETER_VERSION_35 35 +#define TT_INTERPRETER_VERSION_38 38 +#define TT_INTERPRETER_VERSION_40 40 + + + /************************************************************************** + * + * @property: + * interpreter-version + * + * @description: + * Currently, three versions are available, two representing the bytecode + * interpreter with subpixel hinting support (old 'Infinality' code and + * new stripped-down and higher performance 'minimal' code) and one + * without, respectively. The default is subpixel support if + * `TT_CONFIG_OPTION_SUBPIXEL_HINTING` is defined, and no subpixel + * support otherwise (since it isn't available then). + * + * If subpixel hinting is on, many TrueType bytecode instructions behave + * differently compared to B/W or grayscale rendering (except if 'native + * ClearType' is selected by the font). Microsoft's main idea is to + * render at a much increased horizontal resolution, then sampling down + * the created output to subpixel precision. However, many older fonts + * are not suited to this and must be specially taken care of by applying + * (hardcoded) tweaks in Microsoft's interpreter. + * + * Details on subpixel hinting and some of the necessary tweaks can be + * found in Greg Hitchcock's whitepaper at + * 'https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * Note that FreeType currently doesn't really 'subpixel hint' (6x1, 6x2, + * or 6x5 supersampling) like discussed in the paper. Depending on the + * chosen interpreter, it simply ignores instructions on vertical stems + * to arrive at very similar results. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values '35', '38', or '40'). + * + * @example: + * The following example code demonstrates how to deactivate subpixel + * hinting (omitting the error handling). + * + * ``` + * FT_Library library; + * FT_Face face; + * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "truetype", + * "interpreter-version", + * &interpreter_version ); + * ``` + * + * @since: + * 2.5 + */ + + + /************************************************************************** + * + * @property: + * svg-hooks + * + * @description: + * Set up the interface between FreeType and an extern SVG rendering + * library like 'librsvg'. All details on the function hooks can be + * found in section @svg_fonts. + * + * @example: + * The following example code expects that the four hook functions + * `svg_*` are defined elsewhere. Error handling is omitted, too. + * + * ``` + * FT_Library library; + * SVG_RendererHooks hooks = { + * (SVG_Lib_Init_Func)svg_init, + * (SVG_Lib_Free_Func)svg_free, + * (SVG_Lib_Render_Func)svg_render, + * (SVG_Lib_Preset_Slot_Func)svg_preset_slot }; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "ot-svg", + * "svg-hooks", &hooks ); + * ``` + * + * @since: + * 2.12 + */ + + + /************************************************************************** + * + * @property: + * glyph-to-script-map + * + * @description: + * **Experimental only** + * + * The auto-hinter provides various script modules to hint glyphs. + * Examples of supported scripts are Latin or CJK. Before a glyph is + * auto-hinted, the Unicode character map of the font gets examined, and + * the script is then determined based on Unicode character ranges, see + * below. + * + * OpenType fonts, however, often provide much more glyphs than character + * codes (small caps, superscripts, ligatures, swashes, etc.), to be + * controlled by so-called 'features'. Handling OpenType features can be + * quite complicated and thus needs a separate library on top of + * FreeType. + * + * The mapping between glyph indices and scripts (in the auto-hinter + * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an array + * with `num_glyphs` elements, as found in the font's @FT_Face structure. + * The `glyph-to-script-map` property returns a pointer to this array, + * which can be modified as needed. Note that the modification should + * happen before the first glyph gets processed by the auto-hinter so + * that the global analysis of the font shapes actually uses the modified + * mapping. + * + * @example: + * The following example code demonstrates how to access it (omitting the + * error handling). + * + * ``` + * FT_Library library; + * FT_Face face; + * FT_Prop_GlyphToScriptMap prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * + * prop.face = face; + * + * FT_Property_Get( library, "autofitter", + * "glyph-to-script-map", &prop ); + * + * // adjust `prop.map' as needed right here + * + * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); + * ``` + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @enum: + * FT_AUTOHINTER_SCRIPT_XXX + * + * @description: + * **Experimental only** + * + * A list of constants used for the @glyph-to-script-map property to + * specify the script submodule the auto-hinter should use for hinting a + * particular glyph. + * + * @values: + * FT_AUTOHINTER_SCRIPT_NONE :: + * Don't auto-hint this glyph. + * + * FT_AUTOHINTER_SCRIPT_LATIN :: + * Apply the latin auto-hinter. For the auto-hinter, 'latin' is a very + * broad term, including Cyrillic and Greek also since characters from + * those scripts share the same design constraints. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * ``` + * U+0020 - U+007F // Basic Latin (no control characters) + * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) + * U+0100 - U+017F // Latin Extended-A + * U+0180 - U+024F // Latin Extended-B + * U+0250 - U+02AF // IPA Extensions + * U+02B0 - U+02FF // Spacing Modifier Letters + * U+0300 - U+036F // Combining Diacritical Marks + * U+0370 - U+03FF // Greek and Coptic + * U+0400 - U+04FF // Cyrillic + * U+0500 - U+052F // Cyrillic Supplement + * U+1D00 - U+1D7F // Phonetic Extensions + * U+1D80 - U+1DBF // Phonetic Extensions Supplement + * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement + * U+1E00 - U+1EFF // Latin Extended Additional + * U+1F00 - U+1FFF // Greek Extended + * U+2000 - U+206F // General Punctuation + * U+2070 - U+209F // Superscripts and Subscripts + * U+20A0 - U+20CF // Currency Symbols + * U+2150 - U+218F // Number Forms + * U+2460 - U+24FF // Enclosed Alphanumerics + * U+2C60 - U+2C7F // Latin Extended-C + * U+2DE0 - U+2DFF // Cyrillic Extended-A + * U+2E00 - U+2E7F // Supplemental Punctuation + * U+A640 - U+A69F // Cyrillic Extended-B + * U+A720 - U+A7FF // Latin Extended-D + * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) + * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols + * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement + * ``` + * + * FT_AUTOHINTER_SCRIPT_CJK :: + * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old + * Vietnamese, and some other scripts. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * ``` + * U+1100 - U+11FF // Hangul Jamo + * U+2E80 - U+2EFF // CJK Radicals Supplement + * U+2F00 - U+2FDF // Kangxi Radicals + * U+2FF0 - U+2FFF // Ideographic Description Characters + * U+3000 - U+303F // CJK Symbols and Punctuation + * U+3040 - U+309F // Hiragana + * U+30A0 - U+30FF // Katakana + * U+3100 - U+312F // Bopomofo + * U+3130 - U+318F // Hangul Compatibility Jamo + * U+3190 - U+319F // Kanbun + * U+31A0 - U+31BF // Bopomofo Extended + * U+31C0 - U+31EF // CJK Strokes + * U+31F0 - U+31FF // Katakana Phonetic Extensions + * U+3200 - U+32FF // Enclosed CJK Letters and Months + * U+3300 - U+33FF // CJK Compatibility + * U+3400 - U+4DBF // CJK Unified Ideographs Extension A + * U+4DC0 - U+4DFF // Yijing Hexagram Symbols + * U+4E00 - U+9FFF // CJK Unified Ideographs + * U+A960 - U+A97F // Hangul Jamo Extended-A + * U+AC00 - U+D7AF // Hangul Syllables + * U+D7B0 - U+D7FF // Hangul Jamo Extended-B + * U+F900 - U+FAFF // CJK Compatibility Ideographs + * U+FE10 - U+FE1F // Vertical forms + * U+FE30 - U+FE4F // CJK Compatibility Forms + * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms + * U+1B000 - U+1B0FF // Kana Supplement + * U+1D300 - U+1D35F // Tai Xuan Hing Symbols + * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement + * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B + * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C + * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D + * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement + * ``` + * + * FT_AUTOHINTER_SCRIPT_INDIC :: + * Apply the indic auto-hinter, covering all major scripts from the + * Indian sub-continent and some other related scripts like Thai, Lao, + * or Tibetan. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * ``` + * U+0900 - U+0DFF // Indic Range + * U+0F00 - U+0FFF // Tibetan + * U+1900 - U+194F // Limbu + * U+1B80 - U+1BBF // Sundanese + * U+A800 - U+A82F // Syloti Nagri + * U+ABC0 - U+ABFF // Meetei Mayek + * U+11800 - U+118DF // Sharada + * ``` + * + * Note that currently Indic support is rudimentary only, missing blue + * zone support. + * + * @since: + * 2.4.11 + * + */ +#define FT_AUTOHINTER_SCRIPT_NONE 0 +#define FT_AUTOHINTER_SCRIPT_LATIN 1 +#define FT_AUTOHINTER_SCRIPT_CJK 2 +#define FT_AUTOHINTER_SCRIPT_INDIC 3 + + + /************************************************************************** + * + * @struct: + * FT_Prop_GlyphToScriptMap + * + * @description: + * **Experimental only** + * + * The data exchange structure for the @glyph-to-script-map property. + * + * @since: + * 2.4.11 + * + */ + typedef struct FT_Prop_GlyphToScriptMap_ + { + FT_Face face; + FT_UShort* map; + + } FT_Prop_GlyphToScriptMap; + + + /************************************************************************** + * + * @property: + * fallback-script + * + * @description: + * **Experimental only** + * + * If no auto-hinter script module can be assigned to a glyph, a fallback + * script gets assigned to it (see also the @glyph-to-script-map + * property). By default, this is @FT_AUTOHINTER_SCRIPT_CJK. Using the + * `fallback-script` property, this fallback value can be changed. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the fallback + * script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the fallback script will affect this face. + * + * @example: + * ``` + * FT_Library library; + * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "fallback-script", &fallback_script ); + * ``` + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @property: + * default-script + * + * @description: + * **Experimental only** + * + * If FreeType gets compiled with `FT_CONFIG_OPTION_USE_HARFBUZZ` to make + * the HarfBuzz library access OpenType features for getting better glyph + * coverages, this property sets the (auto-fitter) script to be used for + * the default (OpenType) script data of a font's GSUB table. Features + * for the default script are intended for all scripts not explicitly + * handled in GSUB; an example is a 'dlig' feature, containing the + * combination of the characters 'T', 'E', and 'L' to form a 'TEL' + * ligature. + * + * By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the + * `default-script` property, this default value can be changed. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the default + * script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the default script will affect this face. + * + * @example: + * ``` + * FT_Library library; + * FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "default-script", &default_script ); + * ``` + * + * @since: + * 2.5.3 + * + */ + + + /************************************************************************** + * + * @property: + * increase-x-height + * + * @description: + * For ppem values in the range 6~<= ppem <= `increase-x-height`, round + * up the font's x~height much more often than normally. If the value is + * set to~0, which is the default, this feature is switched off. Use + * this property to improve the legibility of small font sizes if + * necessary. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * Set this value right after calling @FT_Set_Char_Size, but before + * loading any glyph (using the auto-hinter). + * + * @example: + * ``` + * FT_Library library; + * FT_Face face; + * FT_Prop_IncreaseXHeight prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); + * + * prop.face = face; + * prop.limit = 14; + * + * FT_Property_Set( library, "autofitter", + * "increase-x-height", &prop ); + * ``` + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Prop_IncreaseXHeight + * + * @description: + * The data exchange structure for the @increase-x-height property. + * + */ + typedef struct FT_Prop_IncreaseXHeight_ + { + FT_Face face; + FT_UInt limit; + + } FT_Prop_IncreaseXHeight; + + + /************************************************************************** + * + * @property: + * warping + * + * @description: + * **Obsolete** + * + * This property was always experimental and probably never worked + * correctly. It was entirely removed from the FreeType~2 sources. This + * entry is only here for historical reference. + * + * Warping only worked in 'normal' auto-hinting mode replacing it. The + * idea of the code was to slightly scale and shift a glyph along the + * non-hinted dimension (which is usually the horizontal axis) so that as + * much of its segments were aligned (more or less) to the grid. To find + * out a glyph's optimal scaling and shifting value, various parameter + * combinations were tried and scored. + * + * @since: + * 2.6 + * + */ + + + /* */ + + +FT_END_HEADER + + +#endif /* FTDRIVER_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fterrdef.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fterrdef.h new file mode 100644 index 0000000..a3acfce --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fterrdef.h @@ -0,0 +1,283 @@ +/**************************************************************************** + * + * fterrdef.h + * + * FreeType error codes (specification). + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * @section: + * error_code_values + * + * @title: + * Error Code Values + * + * @abstract: + * All possible error codes returned by FreeType functions. + * + * @description: + * The list below is taken verbatim from the file `fterrdef.h` (loaded + * automatically by including `FT_FREETYPE_H`). The first argument of the + * `FT_ERROR_DEF_` macro is the error label; by default, the prefix + * `FT_Err_` gets added so that you get error names like + * `FT_Err_Cannot_Open_Resource`. The second argument is the error code, + * and the last argument an error string, which is not used by FreeType. + * + * Within your application you should **only** use error names and + * **never** its numeric values! The latter might (and actually do) + * change in forthcoming FreeType versions. + * + * Macro `FT_NOERRORDEF_` defines `FT_Err_Ok`, which is always zero. See + * the 'Error Enumerations' subsection how to automatically generate a + * list of error strings. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_Err_XXX + * + */ + + /* generic errors */ + + FT_NOERRORDEF_( Ok, 0x00, + "no error" ) + + FT_ERRORDEF_( Cannot_Open_Resource, 0x01, + "cannot open resource" ) + FT_ERRORDEF_( Unknown_File_Format, 0x02, + "unknown file format" ) + FT_ERRORDEF_( Invalid_File_Format, 0x03, + "broken file" ) + FT_ERRORDEF_( Invalid_Version, 0x04, + "invalid FreeType version" ) + FT_ERRORDEF_( Lower_Module_Version, 0x05, + "module version is too low" ) + FT_ERRORDEF_( Invalid_Argument, 0x06, + "invalid argument" ) + FT_ERRORDEF_( Unimplemented_Feature, 0x07, + "unimplemented feature" ) + FT_ERRORDEF_( Invalid_Table, 0x08, + "broken table" ) + FT_ERRORDEF_( Invalid_Offset, 0x09, + "broken offset within table" ) + FT_ERRORDEF_( Array_Too_Large, 0x0A, + "array allocation size too large" ) + FT_ERRORDEF_( Missing_Module, 0x0B, + "missing module" ) + FT_ERRORDEF_( Missing_Property, 0x0C, + "missing property" ) + + /* glyph/character errors */ + + FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, + "invalid glyph index" ) + FT_ERRORDEF_( Invalid_Character_Code, 0x11, + "invalid character code" ) + FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, + "unsupported glyph image format" ) + FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, + "cannot render this glyph format" ) + FT_ERRORDEF_( Invalid_Outline, 0x14, + "invalid outline" ) + FT_ERRORDEF_( Invalid_Composite, 0x15, + "invalid composite glyph" ) + FT_ERRORDEF_( Too_Many_Hints, 0x16, + "too many hints" ) + FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, + "invalid pixel size" ) + FT_ERRORDEF_( Invalid_SVG_Document, 0x18, + "invalid SVG document" ) + + /* handle errors */ + + FT_ERRORDEF_( Invalid_Handle, 0x20, + "invalid object handle" ) + FT_ERRORDEF_( Invalid_Library_Handle, 0x21, + "invalid library handle" ) + FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, + "invalid module handle" ) + FT_ERRORDEF_( Invalid_Face_Handle, 0x23, + "invalid face handle" ) + FT_ERRORDEF_( Invalid_Size_Handle, 0x24, + "invalid size handle" ) + FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, + "invalid glyph slot handle" ) + FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, + "invalid charmap handle" ) + FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, + "invalid cache manager handle" ) + FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, + "invalid stream handle" ) + + /* driver errors */ + + FT_ERRORDEF_( Too_Many_Drivers, 0x30, + "too many modules" ) + FT_ERRORDEF_( Too_Many_Extensions, 0x31, + "too many extensions" ) + + /* memory errors */ + + FT_ERRORDEF_( Out_Of_Memory, 0x40, + "out of memory" ) + FT_ERRORDEF_( Unlisted_Object, 0x41, + "unlisted object" ) + + /* stream errors */ + + FT_ERRORDEF_( Cannot_Open_Stream, 0x51, + "cannot open stream" ) + FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, + "invalid stream seek" ) + FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, + "invalid stream skip" ) + FT_ERRORDEF_( Invalid_Stream_Read, 0x54, + "invalid stream read" ) + FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, + "invalid stream operation" ) + FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, + "invalid frame operation" ) + FT_ERRORDEF_( Nested_Frame_Access, 0x57, + "nested frame access" ) + FT_ERRORDEF_( Invalid_Frame_Read, 0x58, + "invalid frame read" ) + + /* raster errors */ + + FT_ERRORDEF_( Raster_Uninitialized, 0x60, + "raster uninitialized" ) + FT_ERRORDEF_( Raster_Corrupted, 0x61, + "raster corrupted" ) + FT_ERRORDEF_( Raster_Overflow, 0x62, + "raster overflow" ) + FT_ERRORDEF_( Raster_Negative_Height, 0x63, + "negative height while rastering" ) + + /* cache errors */ + + FT_ERRORDEF_( Too_Many_Caches, 0x70, + "too many registered caches" ) + + /* TrueType and SFNT errors */ + + FT_ERRORDEF_( Invalid_Opcode, 0x80, + "invalid opcode" ) + FT_ERRORDEF_( Too_Few_Arguments, 0x81, + "too few arguments" ) + FT_ERRORDEF_( Stack_Overflow, 0x82, + "stack overflow" ) + FT_ERRORDEF_( Code_Overflow, 0x83, + "code overflow" ) + FT_ERRORDEF_( Bad_Argument, 0x84, + "bad argument" ) + FT_ERRORDEF_( Divide_By_Zero, 0x85, + "division by zero" ) + FT_ERRORDEF_( Invalid_Reference, 0x86, + "invalid reference" ) + FT_ERRORDEF_( Debug_OpCode, 0x87, + "found debug opcode" ) + FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, + "found ENDF opcode in execution stream" ) + FT_ERRORDEF_( Nested_DEFS, 0x89, + "nested DEFS" ) + FT_ERRORDEF_( Invalid_CodeRange, 0x8A, + "invalid code range" ) + FT_ERRORDEF_( Execution_Too_Long, 0x8B, + "execution context too long" ) + FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, + "too many function definitions" ) + FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, + "too many instruction definitions" ) + FT_ERRORDEF_( Table_Missing, 0x8E, + "SFNT font table missing" ) + FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, + "horizontal header (hhea) table missing" ) + FT_ERRORDEF_( Locations_Missing, 0x90, + "locations (loca) table missing" ) + FT_ERRORDEF_( Name_Table_Missing, 0x91, + "name table missing" ) + FT_ERRORDEF_( CMap_Table_Missing, 0x92, + "character map (cmap) table missing" ) + FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, + "horizontal metrics (hmtx) table missing" ) + FT_ERRORDEF_( Post_Table_Missing, 0x94, + "PostScript (post) table missing" ) + FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, + "invalid horizontal metrics" ) + FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, + "invalid character map (cmap) format" ) + FT_ERRORDEF_( Invalid_PPem, 0x97, + "invalid ppem value" ) + FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, + "invalid vertical metrics" ) + FT_ERRORDEF_( Could_Not_Find_Context, 0x99, + "could not find context" ) + FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, + "invalid PostScript (post) table format" ) + FT_ERRORDEF_( Invalid_Post_Table, 0x9B, + "invalid PostScript (post) table" ) + FT_ERRORDEF_( DEF_In_Glyf_Bytecode, 0x9C, + "found FDEF or IDEF opcode in glyf bytecode" ) + FT_ERRORDEF_( Missing_Bitmap, 0x9D, + "missing bitmap in strike" ) + FT_ERRORDEF_( Missing_SVG_Hooks, 0x9E, + "SVG hooks have not been set" ) + + /* CFF, CID, and Type 1 errors */ + + FT_ERRORDEF_( Syntax_Error, 0xA0, + "opcode syntax error" ) + FT_ERRORDEF_( Stack_Underflow, 0xA1, + "argument stack underflow" ) + FT_ERRORDEF_( Ignore, 0xA2, + "ignore" ) + FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, + "no Unicode glyph name found" ) + FT_ERRORDEF_( Glyph_Too_Big, 0xA4, + "glyph too big for hinting" ) + + /* BDF errors */ + + FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, + "`STARTFONT' field missing" ) + FT_ERRORDEF_( Missing_Font_Field, 0xB1, + "`FONT' field missing" ) + FT_ERRORDEF_( Missing_Size_Field, 0xB2, + "`SIZE' field missing" ) + FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, + "`FONTBOUNDINGBOX' field missing" ) + FT_ERRORDEF_( Missing_Chars_Field, 0xB4, + "`CHARS' field missing" ) + FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, + "`STARTCHAR' field missing" ) + FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, + "`ENCODING' field missing" ) + FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, + "`BBX' field missing" ) + FT_ERRORDEF_( Bbx_Too_Big, 0xB8, + "`BBX' too big" ) + FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, + "Font header corrupted or missing fields" ) + FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, + "Font glyphs corrupted or missing fields" ) + + /* */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fterrors.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fterrors.h new file mode 100644 index 0000000..ff1b375 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fterrors.h @@ -0,0 +1,296 @@ +/**************************************************************************** + * + * fterrors.h + * + * FreeType error code handling (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * @section: + * error_enumerations + * + * @title: + * Error Enumerations + * + * @abstract: + * How to handle errors and error strings. + * + * @description: + * The header file `fterrors.h` (which is automatically included by + * `freetype.h` defines the handling of FreeType's enumeration + * constants. It can also be used to generate error message strings + * with a small macro trick explained below. + * + * **Error Formats** + * + * The configuration macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` can be + * defined in `ftoption.h` in order to make the higher byte indicate the + * module where the error has happened (this is not compatible with + * standard builds of FreeType~2, however). See the file `ftmoderr.h` + * for more details. + * + * **Error Message Strings** + * + * Error definitions are set up with special macros that allow client + * applications to build a table of error message strings. The strings + * are not included in a normal build of FreeType~2 to save space (most + * client applications do not use them). + * + * To do so, you have to define the following macros before including + * this file. + * + * ``` + * FT_ERROR_START_LIST + * ``` + * + * This macro is called before anything else to define the start of the + * error list. It is followed by several `FT_ERROR_DEF` calls. + * + * ``` + * FT_ERROR_DEF( e, v, s ) + * ``` + * + * This macro is called to define one single error. 'e' is the error + * code identifier (e.g., `Invalid_Argument`), 'v' is the error's + * numerical value, and 's' is the corresponding error string. + * + * ``` + * FT_ERROR_END_LIST + * ``` + * + * This macro ends the list. + * + * Additionally, you have to undefine `FTERRORS_H_` before #including + * this file. + * + * Here is a simple example. + * + * ``` + * #undef FTERRORS_H_ + * #define FT_ERRORDEF( e, v, s ) { e, s }, + * #define FT_ERROR_START_LIST { + * #define FT_ERROR_END_LIST { 0, NULL } }; + * + * const struct + * { + * int err_code; + * const char* err_msg; + * } ft_errors[] = + * + * #include + * ``` + * + * An alternative to using an array is a switch statement. + * + * ``` + * #undef FTERRORS_H_ + * #define FT_ERROR_START_LIST switch ( error_code ) { + * #define FT_ERRORDEF( e, v, s ) case v: return s; + * #define FT_ERROR_END_LIST } + * ``` + * + * If you use `FT_CONFIG_OPTION_USE_MODULE_ERRORS`, `error_code` should + * be replaced with `FT_ERROR_BASE(error_code)` in the last example. + */ + + /* */ + + /* In previous FreeType versions we used `__FTERRORS_H__`. However, */ + /* using two successive underscores in a non-system symbol name */ + /* violates the C (and C++) standard, so it was changed to the */ + /* current form. In spite of this, we have to make */ + /* */ + /* ``` */ + /* #undefine __FTERRORS_H__ */ + /* ``` */ + /* */ + /* work for backward compatibility. */ + /* */ +#if !( defined( FTERRORS_H_ ) && defined ( __FTERRORS_H__ ) ) +#define FTERRORS_H_ +#define __FTERRORS_H__ + + + /* include module base error codes */ +#include + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + + + /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ + /* By default, we use `FT_Err_`. */ + /* */ +#ifndef FT_ERR_PREFIX +#define FT_ERR_PREFIX FT_Err_ +#endif + + + /* FT_ERR_BASE is used as the base for module-specific errors. */ + /* */ +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS + +#ifndef FT_ERR_BASE +#define FT_ERR_BASE FT_Mod_Err_Base +#endif + +#else + +#undef FT_ERR_BASE +#define FT_ERR_BASE 0 + +#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ + + + /* If FT_ERRORDEF is not defined, we need to define a simple */ + /* enumeration type. */ + /* */ +#ifndef FT_ERRORDEF + +#define FT_INCLUDE_ERR_PROTOS + +#define FT_ERRORDEF( e, v, s ) e = v, +#define FT_ERROR_START_LIST enum { +#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_ERRORDEF */ + + + /* this macro is used to define an error */ +#define FT_ERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) + + /* this is only used for _Err_Ok, which must be 0! */ +#define FT_NOERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) + + +#ifdef FT_ERROR_START_LIST + FT_ERROR_START_LIST +#endif + + + /* now include the error codes */ +#include + + +#ifdef FT_ERROR_END_LIST + FT_ERROR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SIMPLE CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_ERROR_START_LIST +#undef FT_ERROR_END_LIST + +#undef FT_ERRORDEF +#undef FT_ERRORDEF_ +#undef FT_NOERRORDEF_ + +#undef FT_NEED_EXTERN_C +#undef FT_ERR_BASE + + /* FT_ERR_PREFIX is needed internally */ +#ifndef FT2_BUILD_LIBRARY +#undef FT_ERR_PREFIX +#endif + + /* FT_INCLUDE_ERR_PROTOS: Control whether function prototypes should be */ + /* included with */ + /* */ + /* #include */ + /* */ + /* This is only true where `FT_ERRORDEF` is */ + /* undefined. */ + /* */ + /* FT_ERR_PROTOS_DEFINED: Actual multiple-inclusion protection of */ + /* `fterrors.h`. */ +#ifdef FT_INCLUDE_ERR_PROTOS +#undef FT_INCLUDE_ERR_PROTOS + +#ifndef FT_ERR_PROTOS_DEFINED +#define FT_ERR_PROTOS_DEFINED + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @function: + * FT_Error_String + * + * @description: + * Retrieve the description of a valid FreeType error code. + * + * @input: + * error_code :: + * A valid FreeType error code. + * + * @return: + * A C~string or `NULL`, if any error occurred. + * + * @note: + * FreeType has to be compiled with `FT_CONFIG_OPTION_ERROR_STRINGS` or + * `FT_DEBUG_LEVEL_ERROR` to get meaningful descriptions. + * 'error_string' will be `NULL` otherwise. + * + * Module identification will be ignored: + * + * ```c + * strcmp( FT_Error_String( FT_Err_Unknown_File_Format ), + * FT_Error_String( BDF_Err_Unknown_File_Format ) ) == 0; + * ``` + */ + FT_EXPORT( const char* ) + FT_Error_String( FT_Error error_code ); + + /* */ + +FT_END_HEADER + + +#endif /* FT_ERR_PROTOS_DEFINED */ + +#endif /* FT_INCLUDE_ERR_PROTOS */ + +#endif /* !(FTERRORS_H_ && __FTERRORS_H__) */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftfntfmt.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftfntfmt.h new file mode 100644 index 0000000..77d5535 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftfntfmt.h @@ -0,0 +1,93 @@ +/**************************************************************************** + * + * ftfntfmt.h + * + * Support functions for font formats. + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTFNTFMT_H_ +#define FTFNTFMT_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * font_formats + * + * @title: + * Font Formats + * + * @abstract: + * Getting the font format. + * + * @description: + * The single function in this section can be used to get the font format. + * Note that this information is not needed normally; however, there are + * special cases (like in PDF devices) where it is important to + * differentiate, in spite of FreeType's uniform API. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Get_Font_Format + * + * @description: + * Return a string describing the format of a given face. Possible values + * are 'TrueType', 'Type~1', 'BDF', 'PCF', 'Type~42', 'CID~Type~1', 'CFF', + * 'PFR', and 'Windows~FNT'. + * + * The return value is suitable to be used as an X11 FONT_PROPERTY. + * + * @input: + * face :: + * Input face handle. + * + * @return: + * Font format string. `NULL` in case of error. + * + * @note: + * A deprecated name for the same function is `FT_Get_X11_Font_Format`. + */ + FT_EXPORT( const char* ) + FT_Get_Font_Format( FT_Face face ); + + + /* deprecated */ + FT_EXPORT( const char* ) + FT_Get_X11_Font_Format( FT_Face face ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTFNTFMT_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgasp.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgasp.h new file mode 100644 index 0000000..d4ab9b3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgasp.h @@ -0,0 +1,143 @@ +/**************************************************************************** + * + * ftgasp.h + * + * Access of TrueType's 'gasp' table (specification). + * + * Copyright (C) 2007-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTGASP_H_ +#define FTGASP_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * gasp_table + * + * @title: + * Gasp Table + * + * @abstract: + * Retrieving TrueType 'gasp' table entries. + * + * @description: + * The function @FT_Get_Gasp can be used to query a TrueType or OpenType + * font for specific entries in its 'gasp' table, if any. This is mainly + * useful when implementing native TrueType hinting with the bytecode + * interpreter to duplicate the Windows text rendering results. + */ + + /************************************************************************** + * + * @enum: + * FT_GASP_XXX + * + * @description: + * A list of values and/or bit-flags returned by the @FT_Get_Gasp + * function. + * + * @values: + * FT_GASP_NO_TABLE :: + * This special value means that there is no GASP table in this face. + * It is up to the client to decide what to do. + * + * FT_GASP_DO_GRIDFIT :: + * Grid-fitting and hinting should be performed at the specified ppem. + * This **really** means TrueType bytecode interpretation. If this bit + * is not set, no hinting gets applied. + * + * FT_GASP_DO_GRAY :: + * Anti-aliased rendering should be performed at the specified ppem. + * If not set, do monochrome rendering. + * + * FT_GASP_SYMMETRIC_SMOOTHING :: + * If set, smoothing along multiple axes must be used with ClearType. + * + * FT_GASP_SYMMETRIC_GRIDFIT :: + * Grid-fitting must be used with ClearType's symmetric smoothing. + * + * @note: + * The bit-flags `FT_GASP_DO_GRIDFIT` and `FT_GASP_DO_GRAY` are to be + * used for standard font rasterization only. Independently of that, + * `FT_GASP_SYMMETRIC_SMOOTHING` and `FT_GASP_SYMMETRIC_GRIDFIT` are to + * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT` and + * `FT_GASP_DO_GRAY` are consequently ignored). + * + * 'ClearType' is Microsoft's implementation of LCD rendering, partly + * protected by patents. + * + * @since: + * 2.3.0 + */ +#define FT_GASP_NO_TABLE -1 +#define FT_GASP_DO_GRIDFIT 0x01 +#define FT_GASP_DO_GRAY 0x02 +#define FT_GASP_SYMMETRIC_GRIDFIT 0x04 +#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 + + + /************************************************************************** + * + * @function: + * FT_Get_Gasp + * + * @description: + * For a TrueType or OpenType font file, return the rasterizer behaviour + * flags from the font's 'gasp' table corresponding to a given character + * pixel size. + * + * @input: + * face :: + * The source face handle. + * + * ppem :: + * The vertical character pixel size. + * + * @return: + * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no + * 'gasp' table in the face. + * + * @note: + * If you want to use the MM functionality of OpenType variation fonts + * (i.e., using @FT_Set_Var_Design_Coordinates and friends), call this + * function **after** setting an instance since the return values can + * change. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Int ) + FT_Get_Gasp( FT_Face face, + FT_UInt ppem ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGASP_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftglyph.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftglyph.h new file mode 100644 index 0000000..6b77bd3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftglyph.h @@ -0,0 +1,750 @@ +/**************************************************************************** + * + * ftglyph.h + * + * FreeType convenience functions to handle glyphs (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file contains the definition of several convenience functions that + * can be used by client applications to easily retrieve glyph bitmaps and + * outlines from a given face. + * + * These functions should be optional if you are writing a font server or + * text layout engine on top of FreeType. However, they are pretty handy + * for many other simple uses of the library. + * + */ + + +#ifndef FTGLYPH_H_ +#define FTGLYPH_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * glyph_management + * + * @title: + * Glyph Management + * + * @abstract: + * Generic interface to manage individual glyph data. + * + * @description: + * This section contains definitions used to manage glyph data through + * generic @FT_Glyph objects. Each of them can contain a bitmap, + * a vector outline, or even images in other formats. These objects are + * detached from @FT_Face, contrary to @FT_GlyphSlot. + * + */ + + + /* forward declaration to a private type */ + typedef struct FT_Glyph_Class_ FT_Glyph_Class; + + + /************************************************************************** + * + * @type: + * FT_Glyph + * + * @description: + * Handle to an object used to model generic glyph images. It is a + * pointer to the @FT_GlyphRec structure and can contain a glyph bitmap + * or pointer. + * + * @note: + * Glyph objects are not owned by the library. You must thus release + * them manually (through @FT_Done_Glyph) _before_ calling + * @FT_Done_FreeType. + */ + typedef struct FT_GlyphRec_* FT_Glyph; + + + /************************************************************************** + * + * @struct: + * FT_GlyphRec + * + * @description: + * The root glyph structure contains a given glyph image plus its advance + * width in 16.16 fixed-point format. + * + * @fields: + * library :: + * A handle to the FreeType library object. + * + * clazz :: + * A pointer to the glyph's class. Private. + * + * format :: + * The format of the glyph's image. + * + * advance :: + * A 16.16 vector that gives the glyph's advance width. + */ + typedef struct FT_GlyphRec_ + { + FT_Library library; + const FT_Glyph_Class* clazz; + FT_Glyph_Format format; + FT_Vector advance; + + } FT_GlyphRec; + + + /************************************************************************** + * + * @type: + * FT_BitmapGlyph + * + * @description: + * A handle to an object used to model a bitmap glyph image. This is a + * 'sub-class' of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. + */ + typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; + + + /************************************************************************** + * + * @struct: + * FT_BitmapGlyphRec + * + * @description: + * A structure used for bitmap glyph images. This really is a + * 'sub-class' of @FT_GlyphRec. + * + * @fields: + * root :: + * The root fields of @FT_Glyph. + * + * left :: + * The left-side bearing, i.e., the horizontal distance from the + * current pen position to the left border of the glyph bitmap. + * + * top :: + * The top-side bearing, i.e., the vertical distance from the current + * pen position to the top border of the glyph bitmap. This distance + * is positive for upwards~y! + * + * bitmap :: + * A descriptor for the bitmap. + * + * @note: + * You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have + * `glyph->format == FT_GLYPH_FORMAT_BITMAP`. This lets you access the + * bitmap's contents easily. + * + * The corresponding pixel buffer is always owned by @FT_BitmapGlyph and + * is thus created and destroyed with it. + */ + typedef struct FT_BitmapGlyphRec_ + { + FT_GlyphRec root; + FT_Int left; + FT_Int top; + FT_Bitmap bitmap; + + } FT_BitmapGlyphRec; + + + /************************************************************************** + * + * @type: + * FT_OutlineGlyph + * + * @description: + * A handle to an object used to model an outline glyph image. This is a + * 'sub-class' of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. + */ + typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; + + + /************************************************************************** + * + * @struct: + * FT_OutlineGlyphRec + * + * @description: + * A structure used for outline (vectorial) glyph images. This really is + * a 'sub-class' of @FT_GlyphRec. + * + * @fields: + * root :: + * The root @FT_Glyph fields. + * + * outline :: + * A descriptor for the outline. + * + * @note: + * You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have + * `glyph->format == FT_GLYPH_FORMAT_OUTLINE`. This lets you access the + * outline's content easily. + * + * As the outline is extracted from a glyph slot, its coordinates are + * expressed normally in 26.6 pixels, unless the flag @FT_LOAD_NO_SCALE + * was used in @FT_Load_Glyph or @FT_Load_Char. + * + * The outline's tables are always owned by the object and are destroyed + * with it. + */ + typedef struct FT_OutlineGlyphRec_ + { + FT_GlyphRec root; + FT_Outline outline; + + } FT_OutlineGlyphRec; + + + /************************************************************************** + * + * @type: + * FT_SvgGlyph + * + * @description: + * A handle to an object used to model an SVG glyph. This is a + * 'sub-class' of @FT_Glyph, and a pointer to @FT_SvgGlyphRec. + * + * @since: + * 2.12 + */ + typedef struct FT_SvgGlyphRec_* FT_SvgGlyph; + + + /************************************************************************** + * + * @struct: + * FT_SvgGlyphRec + * + * @description: + * A structure used for OT-SVG glyphs. This is a 'sub-class' of + * @FT_GlyphRec. + * + * @fields: + * root :: + * The root @FT_GlyphRec fields. + * + * svg_document :: + * A pointer to the SVG document. + * + * svg_document_length :: + * The length of `svg_document`. + * + * glyph_index :: + * The index of the glyph to be rendered. + * + * metrics :: + * A metrics object storing the size information. + * + * units_per_EM :: + * The size of the EM square. + * + * start_glyph_id :: + * The first glyph ID in the glyph range covered by this document. + * + * end_glyph_id :: + * The last glyph ID in the glyph range covered by this document. + * + * transform :: + * A 2x2 transformation matrix to apply to the glyph while rendering + * it. + * + * delta :: + * Translation to apply to the glyph while rendering. + * + * @note: + * The Glyph Management API requires @FT_Glyph or its 'sub-class' to have + * all the information needed to completely define the glyph's rendering. + * Outline-based glyphs can directly apply transformations to the outline + * but this is not possible for an SVG document that hasn't been parsed. + * Therefore, the transformation is stored along with the document. In + * the absence of a 'ViewBox' or 'Width'/'Height' attribute, the size of + * the ViewPort should be assumed to be 'units_per_EM'. + */ + typedef struct FT_SvgGlyphRec_ + { + FT_GlyphRec root; + + FT_Byte* svg_document; + FT_ULong svg_document_length; + + FT_UInt glyph_index; + + FT_Size_Metrics metrics; + FT_UShort units_per_EM; + + FT_UShort start_glyph_id; + FT_UShort end_glyph_id; + + FT_Matrix transform; + FT_Vector delta; + + } FT_SvgGlyphRec; + + + /************************************************************************** + * + * @function: + * FT_New_Glyph + * + * @description: + * A function used to create a new empty glyph image. Note that the + * created @FT_Glyph object must be released with @FT_Done_Glyph. + * + * @input: + * library :: + * A handle to the FreeType library object. + * + * format :: + * The format of the glyph's image. + * + * @output: + * aglyph :: + * A handle to the glyph object. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_New_Glyph( FT_Library library, + FT_Glyph_Format format, + FT_Glyph *aglyph ); + + + /************************************************************************** + * + * @function: + * FT_Get_Glyph + * + * @description: + * A function used to extract a glyph image from a slot. Note that the + * created @FT_Glyph object must be released with @FT_Done_Glyph. + * + * @input: + * slot :: + * A handle to the source glyph slot. + * + * @output: + * aglyph :: + * A handle to the glyph object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Because `*aglyph->advance.x` and `*aglyph->advance.y` are 16.16 + * fixed-point numbers, `slot->advance.x` and `slot->advance.y` (which + * are in 26.6 fixed-point format) must be in the range ]-32768;32768[. + */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_Copy + * + * @description: + * A function used to copy a glyph image. Note that the created + * @FT_Glyph object must be released with @FT_Done_Glyph. + * + * @input: + * source :: + * A handle to the source glyph object. + * + * @output: + * target :: + * A handle to the target glyph object. 0~in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_Transform + * + * @description: + * Transform a glyph image if its format is scalable. + * + * @inout: + * glyph :: + * A handle to the target glyph object. + * + * @input: + * matrix :: + * A pointer to a 2x2 matrix to apply. + * + * delta :: + * A pointer to a 2d vector to apply. Coordinates are expressed in + * 1/64th of a pixel. + * + * @return: + * FreeType error code (if not 0, the glyph format is not scalable). + * + * @note: + * The 2x2 transformation matrix is also applied to the glyph's advance + * vector. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + + /************************************************************************** + * + * @enum: + * FT_Glyph_BBox_Mode + * + * @description: + * The mode how the values of @FT_Glyph_Get_CBox are returned. + * + * @values: + * FT_GLYPH_BBOX_UNSCALED :: + * Return unscaled font units. + * + * FT_GLYPH_BBOX_SUBPIXELS :: + * Return unfitted 26.6 coordinates. + * + * FT_GLYPH_BBOX_GRIDFIT :: + * Return grid-fitted 26.6 coordinates. + * + * FT_GLYPH_BBOX_TRUNCATE :: + * Return coordinates in integer pixels. + * + * FT_GLYPH_BBOX_PIXELS :: + * Return grid-fitted pixel coordinates. + */ + typedef enum FT_Glyph_BBox_Mode_ + { + FT_GLYPH_BBOX_UNSCALED = 0, + FT_GLYPH_BBOX_SUBPIXELS = 0, + FT_GLYPH_BBOX_GRIDFIT = 1, + FT_GLYPH_BBOX_TRUNCATE = 2, + FT_GLYPH_BBOX_PIXELS = 3 + + } FT_Glyph_BBox_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_BBox_Mode` values instead */ +#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED +#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS +#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT +#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE +#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS + + + /************************************************************************** + * + * @function: + * FT_Glyph_Get_CBox + * + * @description: + * Return a glyph's 'control box'. The control box encloses all the + * outline's points, including Bezier control points. Though it + * coincides with the exact bounding box for most glyphs, it can be + * slightly larger in some situations (like when rotating an outline that + * contains Bezier outside arcs). + * + * Computing the control box is very fast, while getting the bounding box + * can take much more time as it needs to walk over all segments and arcs + * in the outline. To get the latter, you can use the 'ftbbox' + * component, which is dedicated to this single task. + * + * @input: + * glyph :: + * A handle to the source glyph object. + * + * mode :: + * The mode that indicates how to interpret the returned bounding box + * values. + * + * @output: + * acbox :: + * The glyph coordinate bounding box. Coordinates are expressed in + * 1/64th of pixels if it is grid-fitted. + * + * @note: + * Coordinates are relative to the glyph origin, using the y~upwards + * convention. + * + * If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode` must + * be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font units in 26.6 + * pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS is another name for + * this constant. + * + * If the font is tricky and the glyph has been loaded with + * @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get + * reasonable values for the CBox it is necessary to load the glyph at a + * large ppem value (so that the hinting instructions can properly shift + * and scale the subglyphs), then extracting the CBox, which can be + * eventually converted back to font units. + * + * Note that the maximum coordinates are exclusive, which means that one + * can compute the width and height of the glyph image (be it in integer + * or 26.6 pixels) as: + * + * ``` + * width = bbox.xMax - bbox.xMin; + * height = bbox.yMax - bbox.yMin; + * ``` + * + * Note also that for 26.6 coordinates, if `bbox_mode` is set to + * @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, + * which corresponds to: + * + * ``` + * bbox.xMin = FLOOR(bbox.xMin); + * bbox.yMin = FLOOR(bbox.yMin); + * bbox.xMax = CEILING(bbox.xMax); + * bbox.yMax = CEILING(bbox.yMax); + * ``` + * + * To get the bbox in pixel coordinates, set `bbox_mode` to + * @FT_GLYPH_BBOX_TRUNCATE. + * + * To get the bbox in grid-fitted pixel coordinates, set `bbox_mode` to + * @FT_GLYPH_BBOX_PIXELS. + */ + FT_EXPORT( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_To_Bitmap + * + * @description: + * Convert a given glyph object to a bitmap glyph object. + * + * @inout: + * the_glyph :: + * A pointer to a handle to the target glyph. + * + * @input: + * render_mode :: + * An enumeration that describes how the data is rendered. + * + * origin :: + * A pointer to a vector used to translate the glyph image before + * rendering. Can be~0 (if no translation). The origin is expressed + * in 26.6 pixels. + * + * destroy :: + * A boolean that indicates that the original glyph image should be + * destroyed by this function. It is never destroyed in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function does nothing if the glyph format isn't scalable. + * + * The glyph image is translated with the `origin` vector before + * rendering. + * + * The first parameter is a pointer to an @FT_Glyph handle that will be + * _replaced_ by this function (with newly allocated data). Typically, + * you would do something like the following (omitting error handling). + * + * ``` + * FT_Glyph glyph; + * FT_BitmapGlyph glyph_bitmap; + * + * + * // load glyph + * error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAULT ); + * + * // extract glyph image + * error = FT_Get_Glyph( face->glyph, &glyph ); + * + * // convert to a bitmap (default render mode + destroying old) + * if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) + * { + * error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, + * 0, 1 ); + * if ( error ) // `glyph' unchanged + * ... + * } + * + * // access bitmap content by typecasting + * glyph_bitmap = (FT_BitmapGlyph)glyph; + * + * // do funny stuff with it, like blitting/drawing + * ... + * + * // discard glyph image (bitmap or not) + * FT_Done_Glyph( glyph ); + * ``` + * + * Here is another example, again without error handling. + * + * ``` + * FT_Glyph glyphs[MAX_GLYPHS] + * + * + * ... + * + * for ( idx = 0; i < MAX_GLYPHS; i++ ) + * error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || + * FT_Get_Glyph ( face->glyph, &glyphs[idx] ); + * + * ... + * + * for ( idx = 0; i < MAX_GLYPHS; i++ ) + * { + * FT_Glyph bitmap = glyphs[idx]; + * + * + * ... + * + * // after this call, `bitmap' no longer points into + * // the `glyphs' array (and the old value isn't destroyed) + * FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); + * + * ... + * + * FT_Done_Glyph( bitmap ); + * } + * + * ... + * + * for ( idx = 0; i < MAX_GLYPHS; i++ ) + * FT_Done_Glyph( glyphs[idx] ); + * ``` + */ + FT_EXPORT( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_Render_Mode render_mode, + const FT_Vector* origin, + FT_Bool destroy ); + + + /************************************************************************** + * + * @function: + * FT_Done_Glyph + * + * @description: + * Destroy a given glyph. + * + * @input: + * glyph :: + * A handle to the target glyph object. + */ + FT_EXPORT( void ) + FT_Done_Glyph( FT_Glyph glyph ); + + /* */ + + + /* other helpful functions */ + + /************************************************************************** + * + * @section: + * computations + * + */ + + + /************************************************************************** + * + * @function: + * FT_Matrix_Multiply + * + * @description: + * Perform the matrix operation `b = a*b`. + * + * @input: + * a :: + * A pointer to matrix `a`. + * + * @inout: + * b :: + * A pointer to matrix `b`. + * + * @note: + * The result is undefined if either `a` or `b` is zero. + * + * Since the function uses wrap-around arithmetic, results become + * meaningless if the arguments are very large. + */ + FT_EXPORT( void ) + FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix* b ); + + + /************************************************************************** + * + * @function: + * FT_Matrix_Invert + * + * @description: + * Invert a 2x2 matrix. Return an error if it can't be inverted. + * + * @inout: + * matrix :: + * A pointer to the target matrix. Remains untouched in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGLYPH_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgxval.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgxval.h new file mode 100644 index 0000000..2d3f382 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgxval.h @@ -0,0 +1,354 @@ +/**************************************************************************** + * + * ftgxval.h + * + * FreeType API for validating TrueTypeGX/AAT tables (specification). + * + * Copyright (C) 2004-2022 by + * Masatake YAMATO, Redhat K.K, + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + +/**************************************************************************** + * + * gxvalid is derived from both gxlayout module and otvalid module. + * Development of gxlayout is supported by the Information-technology + * Promotion Agency(IPA), Japan. + * + */ + + +#ifndef FTGXVAL_H_ +#define FTGXVAL_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * gx_validation + * + * @title: + * TrueTypeGX/AAT Validation + * + * @abstract: + * An API to validate TrueTypeGX/AAT tables. + * + * @description: + * This section contains the declaration of functions to validate some + * TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, trak, + * prop, lcar). + * + * @order: + * FT_TrueTypeGX_Validate + * FT_TrueTypeGX_Free + * + * FT_ClassicKern_Validate + * FT_ClassicKern_Free + * + * FT_VALIDATE_GX_LENGTH + * FT_VALIDATE_GXXXX + * FT_VALIDATE_CKERNXXX + * + */ + + /************************************************************************** + * + * + * Warning: Use `FT_VALIDATE_XXX` to validate a table. + * Following definitions are for gxvalid developers. + * + * + */ + +#define FT_VALIDATE_feat_INDEX 0 +#define FT_VALIDATE_mort_INDEX 1 +#define FT_VALIDATE_morx_INDEX 2 +#define FT_VALIDATE_bsln_INDEX 3 +#define FT_VALIDATE_just_INDEX 4 +#define FT_VALIDATE_kern_INDEX 5 +#define FT_VALIDATE_opbd_INDEX 6 +#define FT_VALIDATE_trak_INDEX 7 +#define FT_VALIDATE_prop_INDEX 8 +#define FT_VALIDATE_lcar_INDEX 9 +#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX + + + /************************************************************************** + * + * @macro: + * FT_VALIDATE_GX_LENGTH + * + * @description: + * The number of tables checked in this module. Use it as a parameter + * for the `table-length` argument of function @FT_TrueTypeGX_Validate. + */ +#define FT_VALIDATE_GX_LENGTH ( FT_VALIDATE_GX_LAST_INDEX + 1 ) + + /* */ + + /* Up to 0x1000 is used by otvalid. + Ox2xxx is reserved for feature OT extension. */ +#define FT_VALIDATE_GX_START 0x4000 +#define FT_VALIDATE_GX_BITFIELD( tag ) \ + ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) + + + /************************************************************************** + * + * @enum: + * FT_VALIDATE_GXXXX + * + * @description: + * A list of bit-field constants used with @FT_TrueTypeGX_Validate to + * indicate which TrueTypeGX/AAT Type tables should be validated. + * + * @values: + * FT_VALIDATE_feat :: + * Validate 'feat' table. + * + * FT_VALIDATE_mort :: + * Validate 'mort' table. + * + * FT_VALIDATE_morx :: + * Validate 'morx' table. + * + * FT_VALIDATE_bsln :: + * Validate 'bsln' table. + * + * FT_VALIDATE_just :: + * Validate 'just' table. + * + * FT_VALIDATE_kern :: + * Validate 'kern' table. + * + * FT_VALIDATE_opbd :: + * Validate 'opbd' table. + * + * FT_VALIDATE_trak :: + * Validate 'trak' table. + * + * FT_VALIDATE_prop :: + * Validate 'prop' table. + * + * FT_VALIDATE_lcar :: + * Validate 'lcar' table. + * + * FT_VALIDATE_GX :: + * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, + * opbd, trak, prop and lcar). + * + */ + +#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) +#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) +#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) +#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) +#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) +#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) +#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) +#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) +#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) +#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) + +#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ + FT_VALIDATE_mort | \ + FT_VALIDATE_morx | \ + FT_VALIDATE_bsln | \ + FT_VALIDATE_just | \ + FT_VALIDATE_kern | \ + FT_VALIDATE_opbd | \ + FT_VALIDATE_trak | \ + FT_VALIDATE_prop | \ + FT_VALIDATE_lcar ) + + + /************************************************************************** + * + * @function: + * FT_TrueTypeGX_Validate + * + * @description: + * Validate various TrueTypeGX tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_GXXXX for possible values. + * + * table_length :: + * The size of the `tables` array. Normally, @FT_VALIDATE_GX_LENGTH + * should be passed. + * + * @output: + * tables :: + * The array where all validated sfnt tables are stored. The array + * itself must be allocated by a client. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with TrueTypeGX fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the buffers pointed to by + * each `tables` element, by calling @FT_TrueTypeGX_Free. A `NULL` value + * indicates that the table either doesn't exist in the font, the + * application hasn't asked for validation, or the validator doesn't have + * the ability to validate the sfnt table. + */ + FT_EXPORT( FT_Error ) + FT_TrueTypeGX_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + /************************************************************************** + * + * @function: + * FT_TrueTypeGX_Free + * + * @description: + * Free the buffer allocated by TrueTypeGX validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer allocated by @FT_TrueTypeGX_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_TrueTypeGX_Validate only. + */ + FT_EXPORT( void ) + FT_TrueTypeGX_Free( FT_Face face, + FT_Bytes table ); + + + /************************************************************************** + * + * @enum: + * FT_VALIDATE_CKERNXXX + * + * @description: + * A list of bit-field constants used with @FT_ClassicKern_Validate to + * indicate the classic kern dialect or dialects. If the selected type + * doesn't fit, @FT_ClassicKern_Validate regards the table as invalid. + * + * @values: + * FT_VALIDATE_MS :: + * Handle the 'kern' table as a classic Microsoft kern table. + * + * FT_VALIDATE_APPLE :: + * Handle the 'kern' table as a classic Apple kern table. + * + * FT_VALIDATE_CKERN :: + * Handle the 'kern' as either classic Apple or Microsoft kern table. + */ +#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) +#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) + +#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) + + + /************************************************************************** + * + * @function: + * FT_ClassicKern_Validate + * + * @description: + * Validate classic (16-bit format) kern table to assure that the + * offsets and indices are valid. The idea is that a higher-level + * library that actually does the text layout can access those tables + * without error checking (which can be quite time consuming). + * + * The 'kern' table validator in @FT_TrueTypeGX_Validate deals with both + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the dialect to be validated. See + * @FT_VALIDATE_CKERNXXX for possible values. + * + * @output: + * ckern_table :: + * A pointer to the kern table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * After use, the application should deallocate the buffers pointed to by + * `ckern_table`, by calling @FT_ClassicKern_Free. A `NULL` value + * indicates that the table doesn't exist in the font. + */ + FT_EXPORT( FT_Error ) + FT_ClassicKern_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *ckern_table ); + + + /************************************************************************** + * + * @function: + * FT_ClassicKern_Free + * + * @description: + * Free the buffer allocated by classic Kern validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_ClassicKern_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_ClassicKern_Validate only. + */ + FT_EXPORT( void ) + FT_ClassicKern_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGXVAL_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgzip.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgzip.h new file mode 100644 index 0000000..0880290 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftgzip.h @@ -0,0 +1,151 @@ +/**************************************************************************** + * + * ftgzip.h + * + * Gzip-compressed stream support. + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTGZIP_H_ +#define FTGZIP_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * gzip + * + * @title: + * GZIP Streams + * + * @abstract: + * Using gzip-compressed font files. + * + * @description: + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from it + * and re-open the face with it. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream, + * which significantly undermines the performance. + * + * This section contains the declaration of Gzip-specific functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Stream_OpenGzip + * + * @description: + * Open a new stream to parse gzip-compressed font files. This is mainly + * used to support the compressed `*.pcf.gz` fonts that come with + * XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close` on the new stream will + * **not** call `FT_Stream_Close` on the source stream. None of the + * stream objects will be released to the heap. + * + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenGzip( FT_Stream stream, + FT_Stream source ); + + + /************************************************************************** + * + * @function: + * FT_Gzip_Uncompress + * + * @description: + * Decompress a zipped input buffer into an output buffer. This function + * is modeled after zlib's `uncompress` function. + * + * @input: + * memory :: + * A FreeType memory handle. + * + * input :: + * The input buffer. + * + * input_len :: + * The length of the input buffer. + * + * @output: + * output :: + * The output buffer. + * + * @inout: + * output_len :: + * Before calling the function, this is the total size of the output + * buffer, which must be large enough to hold the entire uncompressed + * data (so the size of the uncompressed data must be known in + * advance). After calling the function, `output_len` is the size of + * the used data in `output`. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with zlib support. + * + * @since: + * 2.5.1 + */ + FT_EXPORT( FT_Error ) + FT_Gzip_Uncompress( FT_Memory memory, + FT_Byte* output, + FT_ULong* output_len, + const FT_Byte* input, + FT_ULong input_len ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGZIP_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftimage.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftimage.h new file mode 100644 index 0000000..7f2d721 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftimage.h @@ -0,0 +1,1278 @@ +/**************************************************************************** + * + * ftimage.h + * + * FreeType glyph image formats and default raster interface + * (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + /************************************************************************** + * + * Note: A 'raster' is simply a scan-line converter, used to render + * FT_Outlines into FT_Bitmaps. + * + */ + + +#ifndef FTIMAGE_H_ +#define FTIMAGE_H_ + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * basic_types + * + */ + + + /************************************************************************** + * + * @type: + * FT_Pos + * + * @description: + * The type FT_Pos is used to store vectorial coordinates. Depending on + * the context, these can represent distances in integer font units, or + * 16.16, or 26.6 fixed-point pixel coordinates. + */ + typedef signed long FT_Pos; + + + /************************************************************************** + * + * @struct: + * FT_Vector + * + * @description: + * A simple structure used to store a 2D vector; coordinates are of the + * FT_Pos type. + * + * @fields: + * x :: + * The horizontal coordinate. + * y :: + * The vertical coordinate. + */ + typedef struct FT_Vector_ + { + FT_Pos x; + FT_Pos y; + + } FT_Vector; + + + /************************************************************************** + * + * @struct: + * FT_BBox + * + * @description: + * A structure used to hold an outline's bounding box, i.e., the + * coordinates of its extrema in the horizontal and vertical directions. + * + * @fields: + * xMin :: + * The horizontal minimum (left-most). + * + * yMin :: + * The vertical minimum (bottom-most). + * + * xMax :: + * The horizontal maximum (right-most). + * + * yMax :: + * The vertical maximum (top-most). + * + * @note: + * The bounding box is specified with the coordinates of the lower left + * and the upper right corner. In PostScript, those values are often + * called (llx,lly) and (urx,ury), respectively. + * + * If `yMin` is negative, this value gives the glyph's descender. + * Otherwise, the glyph doesn't descend below the baseline. Similarly, + * if `ymax` is positive, this value gives the glyph's ascender. + * + * `xMin` gives the horizontal distance from the glyph's origin to the + * left edge of the glyph's bounding box. If `xMin` is negative, the + * glyph extends to the left of the origin. + */ + typedef struct FT_BBox_ + { + FT_Pos xMin, yMin; + FT_Pos xMax, yMax; + + } FT_BBox; + + + /************************************************************************** + * + * @enum: + * FT_Pixel_Mode + * + * @description: + * An enumeration type used to describe the format of pixels in a given + * bitmap. Note that additional formats may be added in the future. + * + * @values: + * FT_PIXEL_MODE_NONE :: + * Value~0 is reserved. + * + * FT_PIXEL_MODE_MONO :: + * A monochrome bitmap, using 1~bit per pixel. Note that pixels are + * stored in most-significant order (MSB), which means that the + * left-most pixel in a byte has value 128. + * + * FT_PIXEL_MODE_GRAY :: + * An 8-bit bitmap, generally used to represent anti-aliased glyph + * images. Each pixel is stored in one byte. Note that the number of + * 'gray' levels is stored in the `num_grays` field of the @FT_Bitmap + * structure (it generally is 256). + * + * FT_PIXEL_MODE_GRAY2 :: + * A 2-bit per pixel bitmap, used to represent embedded anti-aliased + * bitmaps in font files according to the OpenType specification. We + * haven't found a single font using this format, however. + * + * FT_PIXEL_MODE_GRAY4 :: + * A 4-bit per pixel bitmap, representing embedded anti-aliased bitmaps + * in font files according to the OpenType specification. We haven't + * found a single font using this format, however. + * + * FT_PIXEL_MODE_LCD :: + * An 8-bit bitmap, representing RGB or BGR decimated glyph images used + * for display on LCD displays; the bitmap is three times wider than + * the original glyph image. See also @FT_RENDER_MODE_LCD. + * + * FT_PIXEL_MODE_LCD_V :: + * An 8-bit bitmap, representing RGB or BGR decimated glyph images used + * for display on rotated LCD displays; the bitmap is three times + * taller than the original glyph image. See also + * @FT_RENDER_MODE_LCD_V. + * + * FT_PIXEL_MODE_BGRA :: + * [Since 2.5] An image with four 8-bit channels per pixel, + * representing a color image (such as emoticons) with alpha channel. + * For each pixel, the format is BGRA, which means, the blue channel + * comes first in memory. The color channels are pre-multiplied and in + * the sRGB colorspace. For example, full red at half-translucent + * opacity will be represented as '00,00,80,80', not '00,00,FF,80'. + * See also @FT_LOAD_COLOR. + */ + typedef enum FT_Pixel_Mode_ + { + FT_PIXEL_MODE_NONE = 0, + FT_PIXEL_MODE_MONO, + FT_PIXEL_MODE_GRAY, + FT_PIXEL_MODE_GRAY2, + FT_PIXEL_MODE_GRAY4, + FT_PIXEL_MODE_LCD, + FT_PIXEL_MODE_LCD_V, + FT_PIXEL_MODE_BGRA, + + FT_PIXEL_MODE_MAX /* do not remove */ + + } FT_Pixel_Mode; + + + /* these constants are deprecated; use the corresponding `FT_Pixel_Mode` */ + /* values instead. */ +#define ft_pixel_mode_none FT_PIXEL_MODE_NONE +#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO +#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY +#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 +#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 + + /* */ + + /* For debugging, the @FT_Pixel_Mode enumeration must stay in sync */ + /* with the `pixel_modes` array in file `ftobjs.c`. */ + + + /************************************************************************** + * + * @struct: + * FT_Bitmap + * + * @description: + * A structure used to describe a bitmap or pixmap to the raster. Note + * that we now manage pixmaps of various depths through the `pixel_mode` + * field. + * + * @fields: + * rows :: + * The number of bitmap rows. + * + * width :: + * The number of pixels in bitmap row. + * + * pitch :: + * The pitch's absolute value is the number of bytes taken by one + * bitmap row, including padding. However, the pitch is positive when + * the bitmap has a 'down' flow, and negative when it has an 'up' flow. + * In all cases, the pitch is an offset to add to a bitmap pointer in + * order to go down one row. + * + * Note that 'padding' means the alignment of a bitmap to a byte + * border, and FreeType functions normally align to the smallest + * possible integer value. + * + * For the B/W rasterizer, `pitch` is always an even number. + * + * To change the pitch of a bitmap (say, to make it a multiple of 4), + * use @FT_Bitmap_Convert. Alternatively, you might use callback + * functions to directly render to the application's surface; see the + * file `example2.cpp` in the tutorial for a demonstration. + * + * buffer :: + * A typeless pointer to the bitmap buffer. This value should be + * aligned on 32-bit boundaries in most cases. + * + * num_grays :: + * This field is only used with @FT_PIXEL_MODE_GRAY; it gives the + * number of gray levels used in the bitmap. + * + * pixel_mode :: + * The pixel mode, i.e., how pixel bits are stored. See @FT_Pixel_Mode + * for possible values. + * + * palette_mode :: + * This field is intended for paletted pixel modes; it indicates how + * the palette is stored. Not used currently. + * + * palette :: + * A typeless pointer to the bitmap palette; this field is intended for + * paletted pixel modes. Not used currently. + */ + typedef struct FT_Bitmap_ + { + unsigned int rows; + unsigned int width; + int pitch; + unsigned char* buffer; + unsigned short num_grays; + unsigned char pixel_mode; + unsigned char palette_mode; + void* palette; + + } FT_Bitmap; + + + /************************************************************************** + * + * @section: + * outline_processing + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Outline + * + * @description: + * This structure is used to describe an outline to the scan-line + * converter. + * + * @fields: + * n_contours :: + * The number of contours in the outline. + * + * n_points :: + * The number of points in the outline. + * + * points :: + * A pointer to an array of `n_points` @FT_Vector elements, giving the + * outline's point coordinates. + * + * tags :: + * A pointer to an array of `n_points` chars, giving each outline + * point's type. + * + * If bit~0 is unset, the point is 'off' the curve, i.e., a Bezier + * control point, while it is 'on' if set. + * + * Bit~1 is meaningful for 'off' points only. If set, it indicates a + * third-order Bezier arc control point; and a second-order control + * point if unset. + * + * If bit~2 is set, bits 5-7 contain the drop-out mode (as defined in + * the OpenType specification; the value is the same as the argument to + * the 'SCANMODE' instruction). + * + * Bits 3 and~4 are reserved for internal purposes. + * + * contours :: + * An array of `n_contours` shorts, giving the end point of each + * contour within the outline. For example, the first contour is + * defined by the points '0' to `contours[0]`, the second one is + * defined by the points `contours[0]+1` to `contours[1]`, etc. + * + * flags :: + * A set of bit flags used to characterize the outline and give hints + * to the scan-converter and hinter on how to convert/grid-fit it. See + * @FT_OUTLINE_XXX. + * + * @note: + * The B/W rasterizer only checks bit~2 in the `tags` array for the first + * point of each contour. The drop-out mode as given with + * @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and + * @FT_OUTLINE_INCLUDE_STUBS in `flags` is then overridden. + */ + typedef struct FT_Outline_ + { + short n_contours; /* number of contours in glyph */ + short n_points; /* number of points in the glyph */ + + FT_Vector* points; /* the outline's points */ + char* tags; /* the points flags */ + short* contours; /* the contour end points */ + + int flags; /* outline masks */ + + } FT_Outline; + + /* */ + + /* Following limits must be consistent with */ + /* FT_Outline.{n_contours,n_points} */ +#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX +#define FT_OUTLINE_POINTS_MAX SHRT_MAX + + + /************************************************************************** + * + * @enum: + * FT_OUTLINE_XXX + * + * @description: + * A list of bit-field constants used for the flags in an outline's + * `flags` field. + * + * @values: + * FT_OUTLINE_NONE :: + * Value~0 is reserved. + * + * FT_OUTLINE_OWNER :: + * If set, this flag indicates that the outline's field arrays (i.e., + * `points`, `flags`, and `contours`) are 'owned' by the outline + * object, and should thus be freed when it is destroyed. + * + * FT_OUTLINE_EVEN_ODD_FILL :: + * By default, outlines are filled using the non-zero winding rule. If + * set to 1, the outline will be filled using the even-odd fill rule + * (only works with the smooth rasterizer). + * + * FT_OUTLINE_REVERSE_FILL :: + * By default, outside contours of an outline are oriented in + * clock-wise direction, as defined in the TrueType specification. + * This flag is set if the outline uses the opposite direction + * (typically for Type~1 fonts). This flag is ignored by the scan + * converter. + * + * FT_OUTLINE_IGNORE_DROPOUTS :: + * By default, the scan converter will try to detect drop-outs in an + * outline and correct the glyph bitmap to ensure consistent shape + * continuity. If set, this flag hints the scan-line converter to + * ignore such cases. See below for more information. + * + * FT_OUTLINE_SMART_DROPOUTS :: + * Select smart dropout control. If unset, use simple dropout control. + * Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more + * information. + * + * FT_OUTLINE_INCLUDE_STUBS :: + * If set, turn pixels on for 'stubs', otherwise exclude them. Ignored + * if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more + * information. + * + * FT_OUTLINE_OVERLAP :: + * [Since 2.10.3] This flag indicates that this outline contains + * overlapping contours and the anti-aliased renderer should perform + * oversampling to mitigate possible artifacts. This flag should _not_ + * be set for well designed glyphs without overlaps because it quadruples + * the rendering time. + * + * FT_OUTLINE_HIGH_PRECISION :: + * This flag indicates that the scan-line converter should try to + * convert this outline to bitmaps with the highest possible quality. + * It is typically set for small character sizes. Note that this is + * only a hint that might be completely ignored by a given + * scan-converter. + * + * FT_OUTLINE_SINGLE_PASS :: + * This flag is set to force a given scan-converter to only use a + * single pass over the outline to render a bitmap glyph image. + * Normally, it is set for very large character sizes. It is only a + * hint that might be completely ignored by a given scan-converter. + * + * @note: + * The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and + * @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth rasterizer. + * + * There exists a second mechanism to pass the drop-out mode to the B/W + * rasterizer; see the `tags` field in @FT_Outline. + * + * Please refer to the description of the 'SCANTYPE' instruction in the + * OpenType specification (in file `ttinst1.doc`) how simple drop-outs, + * smart drop-outs, and stubs are defined. + */ +#define FT_OUTLINE_NONE 0x0 +#define FT_OUTLINE_OWNER 0x1 +#define FT_OUTLINE_EVEN_ODD_FILL 0x2 +#define FT_OUTLINE_REVERSE_FILL 0x4 +#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 +#define FT_OUTLINE_SMART_DROPOUTS 0x10 +#define FT_OUTLINE_INCLUDE_STUBS 0x20 +#define FT_OUTLINE_OVERLAP 0x40 + +#define FT_OUTLINE_HIGH_PRECISION 0x100 +#define FT_OUTLINE_SINGLE_PASS 0x200 + + + /* these constants are deprecated; use the corresponding */ + /* `FT_OUTLINE_XXX` values instead */ +#define ft_outline_none FT_OUTLINE_NONE +#define ft_outline_owner FT_OUTLINE_OWNER +#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL +#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL +#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS +#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION +#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS + + /* */ + +#define FT_CURVE_TAG( flag ) ( flag & 0x03 ) + + /* see the `tags` field in `FT_Outline` for a description of the values */ +#define FT_CURVE_TAG_ON 0x01 +#define FT_CURVE_TAG_CONIC 0x00 +#define FT_CURVE_TAG_CUBIC 0x02 + +#define FT_CURVE_TAG_HAS_SCANMODE 0x04 + +#define FT_CURVE_TAG_TOUCH_X 0x08 /* reserved for TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_Y 0x10 /* reserved for TrueType hinter */ + +#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ + FT_CURVE_TAG_TOUCH_Y ) + /* values 0x20, 0x40, and 0x80 are reserved */ + + + /* these constants are deprecated; use the corresponding */ + /* `FT_CURVE_TAG_XXX` values instead */ +#define FT_Curve_Tag_On FT_CURVE_TAG_ON +#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC +#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC +#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X +#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y + + + /************************************************************************** + * + * @functype: + * FT_Outline_MoveToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'move to' + * function during outline walking/decomposition. + * + * A 'move to' is emitted to start a new contour in an outline. + * + * @input: + * to :: + * A pointer to the target point of the 'move to'. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_MoveToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc + + + /************************************************************************** + * + * @functype: + * FT_Outline_LineToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'line to' + * function during outline walking/decomposition. + * + * A 'line to' is emitted to indicate a segment in the outline. + * + * @input: + * to :: + * A pointer to the target point of the 'line to'. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_LineToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_LineTo_Func FT_Outline_LineToFunc + + + /************************************************************************** + * + * @functype: + * FT_Outline_ConicToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'conic to' + * function during outline walking or decomposition. + * + * A 'conic to' is emitted to indicate a second-order Bezier arc in the + * outline. + * + * @input: + * control :: + * An intermediate control point between the last position and the new + * target in `to`. + * + * to :: + * A pointer to the target end point of the conic arc. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_ConicToFunc)( const FT_Vector* control, + const FT_Vector* to, + void* user ); + +#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc + + + /************************************************************************** + * + * @functype: + * FT_Outline_CubicToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'cubic to' + * function during outline walking or decomposition. + * + * A 'cubic to' is emitted to indicate a third-order Bezier arc. + * + * @input: + * control1 :: + * A pointer to the first Bezier control point. + * + * control2 :: + * A pointer to the second Bezier control point. + * + * to :: + * A pointer to the target end point. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_CubicToFunc)( const FT_Vector* control1, + const FT_Vector* control2, + const FT_Vector* to, + void* user ); + +#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc + + + /************************************************************************** + * + * @struct: + * FT_Outline_Funcs + * + * @description: + * A structure to hold various function pointers used during outline + * decomposition in order to emit segments, conic, and cubic Beziers. + * + * @fields: + * move_to :: + * The 'move to' emitter. + * + * line_to :: + * The segment emitter. + * + * conic_to :: + * The second-order Bezier arc emitter. + * + * cubic_to :: + * The third-order Bezier arc emitter. + * + * shift :: + * The shift that is applied to coordinates before they are sent to the + * emitter. + * + * delta :: + * The delta that is applied to coordinates before they are sent to the + * emitter, but after the shift. + * + * @note: + * The point coordinates sent to the emitters are the transformed version + * of the original coordinates (this is important for high accuracy + * during scan-conversion). The transformation is simple: + * + * ``` + * x' = (x << shift) - delta + * y' = (y << shift) - delta + * ``` + * + * Set the values of `shift` and `delta` to~0 to get the original point + * coordinates. + */ + typedef struct FT_Outline_Funcs_ + { + FT_Outline_MoveToFunc move_to; + FT_Outline_LineToFunc line_to; + FT_Outline_ConicToFunc conic_to; + FT_Outline_CubicToFunc cubic_to; + + int shift; + FT_Pos delta; + + } FT_Outline_Funcs; + + + /************************************************************************** + * + * @section: + * basic_types + * + */ + + + /************************************************************************** + * + * @macro: + * FT_IMAGE_TAG + * + * @description: + * This macro converts four-letter tags to an unsigned long type. + * + * @note: + * Since many 16-bit compilers don't like 32-bit enumerations, you should + * redefine this macro in case of problems to something like this: + * + * ``` + * #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value + * ``` + * + * to get a simple enumeration without assigning special numbers. + */ +#ifndef FT_IMAGE_TAG + +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( FT_STATIC_BYTE_CAST( unsigned long, _x1 ) << 24 ) | \ + ( FT_STATIC_BYTE_CAST( unsigned long, _x2 ) << 16 ) | \ + ( FT_STATIC_BYTE_CAST( unsigned long, _x3 ) << 8 ) | \ + FT_STATIC_BYTE_CAST( unsigned long, _x4 ) ) + +#endif /* FT_IMAGE_TAG */ + + + /************************************************************************** + * + * @enum: + * FT_Glyph_Format + * + * @description: + * An enumeration type used to describe the format of a given glyph + * image. Note that this version of FreeType only supports two image + * formats, even though future font drivers will be able to register + * their own format. + * + * @values: + * FT_GLYPH_FORMAT_NONE :: + * The value~0 is reserved. + * + * FT_GLYPH_FORMAT_COMPOSITE :: + * The glyph image is a composite of several other images. This format + * is _only_ used with @FT_LOAD_NO_RECURSE, and is used to report + * compound glyphs (like accented characters). + * + * FT_GLYPH_FORMAT_BITMAP :: + * The glyph image is a bitmap, and can be described as an @FT_Bitmap. + * You generally need to access the `bitmap` field of the + * @FT_GlyphSlotRec structure to read it. + * + * FT_GLYPH_FORMAT_OUTLINE :: + * The glyph image is a vectorial outline made of line segments and + * Bezier arcs; it can be described as an @FT_Outline; you generally + * want to access the `outline` field of the @FT_GlyphSlotRec structure + * to read it. + * + * FT_GLYPH_FORMAT_PLOTTER :: + * The glyph image is a vectorial path with no inside and outside + * contours. Some Type~1 fonts, like those in the Hershey family, + * contain glyphs in this format. These are described as @FT_Outline, + * but FreeType isn't currently capable of rendering them correctly. + * + * FT_GLYPH_FORMAT_SVG :: + * [Since 2.12] The glyph is represented by an SVG document in the + * 'SVG~' table. + */ + typedef enum FT_Glyph_Format_ + { + FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), + + FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_SVG, 'S', 'V', 'G', ' ' ) + + } FT_Glyph_Format; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_Format` values instead. */ +#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE +#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE +#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP +#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE +#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** R A S T E R D E F I N I T I O N S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + + /************************************************************************** + * + * @section: + * raster + * + * @title: + * Scanline Converter + * + * @abstract: + * How vectorial outlines are converted into bitmaps and pixmaps. + * + * @description: + * A raster or a rasterizer is a scan converter in charge of producing a + * pixel coverage bitmap that can be used as an alpha channel when + * compositing a glyph with a background. FreeType comes with two + * rasterizers: bilevel `raster1` and anti-aliased `smooth` are two + * separate modules. They are usually called from the high-level + * @FT_Load_Glyph or @FT_Render_Glyph functions and produce the entire + * coverage bitmap at once, while staying largely invisible to users. + * + * Instead of working with complete coverage bitmaps, it is also possible + * to intercept consecutive pixel runs on the same scanline with the same + * coverage, called _spans_, and process them individually. Only the + * `smooth` rasterizer permits this when calling @FT_Outline_Render with + * @FT_Raster_Params as described below. + * + * Working with either complete bitmaps or spans it is important to think + * of them as colorless coverage objects suitable as alpha channels to + * blend arbitrary colors with a background. For best results, it is + * recommended to use gamma correction, too. + * + * This section also describes the public API needed to set up alternative + * @FT_Renderer modules. + * + * @order: + * FT_Span + * FT_SpanFunc + * FT_Raster_Params + * FT_RASTER_FLAG_XXX + * + * FT_Raster + * FT_Raster_NewFunc + * FT_Raster_DoneFunc + * FT_Raster_ResetFunc + * FT_Raster_SetModeFunc + * FT_Raster_RenderFunc + * FT_Raster_Funcs + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Span + * + * @description: + * A structure to model a single span of consecutive pixels when + * rendering an anti-aliased bitmap. + * + * @fields: + * x :: + * The span's horizontal start position. + * + * len :: + * The span's length in pixels. + * + * coverage :: + * The span color/coverage, ranging from 0 (background) to 255 + * (foreground). + * + * @note: + * This structure is used by the span drawing callback type named + * @FT_SpanFunc that takes the y~coordinate of the span as a parameter. + * + * The anti-aliased rasterizer produces coverage values from 0 to 255, + * this is, from completely transparent to completely opaque. + */ + typedef struct FT_Span_ + { + short x; + unsigned short len; + unsigned char coverage; + + } FT_Span; + + + /************************************************************************** + * + * @functype: + * FT_SpanFunc + * + * @description: + * A function used as a call-back by the anti-aliased renderer in order + * to let client applications draw themselves the pixel spans on each + * scan line. + * + * @input: + * y :: + * The scanline's upward y~coordinate. + * + * count :: + * The number of spans to draw on this scanline. + * + * spans :: + * A table of `count` spans to draw on the scanline. + * + * user :: + * User-supplied data that is passed to the callback. + * + * @note: + * This callback allows client applications to directly render the spans + * of the anti-aliased bitmap to any kind of surfaces. + * + * This can be used to write anti-aliased outlines directly to a given + * background bitmap using alpha compositing. It can also be used for + * oversampling and averaging. + */ + typedef void + (*FT_SpanFunc)( int y, + int count, + const FT_Span* spans, + void* user ); + +#define FT_Raster_Span_Func FT_SpanFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_BitTest_Func + * + * @description: + * Deprecated, unimplemented. + */ + typedef int + (*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + + /************************************************************************** + * + * @functype: + * FT_Raster_BitSet_Func + * + * @description: + * Deprecated, unimplemented. + */ + typedef void + (*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + + /************************************************************************** + * + * @enum: + * FT_RASTER_FLAG_XXX + * + * @description: + * A list of bit flag constants as used in the `flags` field of a + * @FT_Raster_Params structure. + * + * @values: + * FT_RASTER_FLAG_DEFAULT :: + * This value is 0. + * + * FT_RASTER_FLAG_AA :: + * This flag is set to indicate that an anti-aliased glyph image should + * be generated. Otherwise, it will be monochrome (1-bit). + * + * FT_RASTER_FLAG_DIRECT :: + * This flag is set to indicate direct rendering. In this mode, client + * applications must provide their own span callback. This lets them + * directly draw or compose over an existing bitmap. If this bit is + * _not_ set, the target pixmap's buffer _must_ be zeroed before + * rendering and the output will be clipped to its size. + * + * Direct rendering is only possible with anti-aliased glyphs. + * + * FT_RASTER_FLAG_CLIP :: + * This flag is only used in direct rendering mode. If set, the output + * will be clipped to a box specified in the `clip_box` field of the + * @FT_Raster_Params structure. Otherwise, the `clip_box` is + * effectively set to the bounding box and all spans are generated. + * + * FT_RASTER_FLAG_SDF :: + * This flag is set to indicate that a signed distance field glyph + * image should be generated. This is only used while rendering with + * the @FT_RENDER_MODE_SDF render mode. + */ +#define FT_RASTER_FLAG_DEFAULT 0x0 +#define FT_RASTER_FLAG_AA 0x1 +#define FT_RASTER_FLAG_DIRECT 0x2 +#define FT_RASTER_FLAG_CLIP 0x4 +#define FT_RASTER_FLAG_SDF 0x8 + + /* these constants are deprecated; use the corresponding */ + /* `FT_RASTER_FLAG_XXX` values instead */ +#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT +#define ft_raster_flag_aa FT_RASTER_FLAG_AA +#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT +#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP + + + /************************************************************************** + * + * @struct: + * FT_Raster_Params + * + * @description: + * A structure to hold the parameters used by a raster's render function, + * passed as an argument to @FT_Outline_Render. + * + * @fields: + * target :: + * The target bitmap. + * + * source :: + * A pointer to the source glyph image (e.g., an @FT_Outline). + * + * flags :: + * The rendering flags. + * + * gray_spans :: + * The gray span drawing callback. + * + * black_spans :: + * Unused. + * + * bit_test :: + * Unused. + * + * bit_set :: + * Unused. + * + * user :: + * User-supplied data that is passed to each drawing callback. + * + * clip_box :: + * An optional span clipping box expressed in _integer_ pixels + * (not in 26.6 fixed-point units). + * + * @note: + * The @FT_RASTER_FLAG_AA bit flag must be set in the `flags` to + * generate an anti-aliased glyph bitmap, otherwise a monochrome bitmap + * is generated. The `target` should have appropriate pixel mode and its + * dimensions define the clipping region. + * + * If both @FT_RASTER_FLAG_AA and @FT_RASTER_FLAG_DIRECT bit flags + * are set in `flags`, the raster calls an @FT_SpanFunc callback + * `gray_spans` with `user` data as an argument ignoring `target`. This + * allows direct composition over a pre-existing user surface to perform + * the span drawing and composition. To optionally clip the spans, set + * the @FT_RASTER_FLAG_CLIP flag and `clip_box`. The monochrome raster + * does not support the direct mode. + * + * The gray-level rasterizer always uses 256 gray levels. If you want + * fewer gray levels, you have to use @FT_RASTER_FLAG_DIRECT and reduce + * the levels in the callback function. + */ + typedef struct FT_Raster_Params_ + { + const FT_Bitmap* target; + const void* source; + int flags; + FT_SpanFunc gray_spans; + FT_SpanFunc black_spans; /* unused */ + FT_Raster_BitTest_Func bit_test; /* unused */ + FT_Raster_BitSet_Func bit_set; /* unused */ + void* user; + FT_BBox clip_box; + + } FT_Raster_Params; + + + /************************************************************************** + * + * @type: + * FT_Raster + * + * @description: + * An opaque handle (pointer) to a raster object. Each object can be + * used independently to convert an outline into a bitmap or pixmap. + * + * @note: + * In FreeType 2, all rasters are now encapsulated within specific + * @FT_Renderer modules and only used in their context. + * + */ + typedef struct FT_RasterRec_* FT_Raster; + + + /************************************************************************** + * + * @functype: + * FT_Raster_NewFunc + * + * @description: + * A function used to create a new raster object. + * + * @input: + * memory :: + * A handle to the memory allocator. + * + * @output: + * raster :: + * A handle to the new raster object. + * + * @return: + * Error code. 0~means success. + * + * @note: + * The `memory` parameter is a typeless pointer in order to avoid + * un-wanted dependencies on the rest of the FreeType code. In practice, + * it is an @FT_Memory object, i.e., a handle to the standard FreeType + * memory allocator. However, this field can be completely ignored by a + * given raster implementation. + */ + typedef int + (*FT_Raster_NewFunc)( void* memory, + FT_Raster* raster ); + +#define FT_Raster_New_Func FT_Raster_NewFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_DoneFunc + * + * @description: + * A function used to destroy a given raster object. + * + * @input: + * raster :: + * A handle to the raster object. + */ + typedef void + (*FT_Raster_DoneFunc)( FT_Raster raster ); + +#define FT_Raster_Done_Func FT_Raster_DoneFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_ResetFunc + * + * @description: + * FreeType used to provide an area of memory called the 'render pool' + * available to all registered rasterizers. This was not thread safe, + * however, and now FreeType never allocates this pool. + * + * This function is called after a new raster object is created. + * + * @input: + * raster :: + * A handle to the new raster object. + * + * pool_base :: + * Previously, the address in memory of the render pool. Set this to + * `NULL`. + * + * pool_size :: + * Previously, the size in bytes of the render pool. Set this to 0. + * + * @note: + * Rasterizers should rely on dynamic or stack allocation if they want to + * (a handle to the memory allocator is passed to the rasterizer + * constructor). + */ + typedef void + (*FT_Raster_ResetFunc)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); + +#define FT_Raster_Reset_Func FT_Raster_ResetFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_SetModeFunc + * + * @description: + * This function is a generic facility to change modes or attributes in a + * given raster. This can be used for debugging purposes, or simply to + * allow implementation-specific 'features' in a given raster module. + * + * @input: + * raster :: + * A handle to the new raster object. + * + * mode :: + * A 4-byte tag used to name the mode or property. + * + * args :: + * A pointer to the new mode/property to use. + */ + typedef int + (*FT_Raster_SetModeFunc)( FT_Raster raster, + unsigned long mode, + void* args ); + +#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_RenderFunc + * + * @description: + * Invoke a given raster to scan-convert a given glyph image into a + * target bitmap. + * + * @input: + * raster :: + * A handle to the raster object. + * + * params :: + * A pointer to an @FT_Raster_Params structure used to store the + * rendering parameters. + * + * @return: + * Error code. 0~means success. + * + * @note: + * The exact format of the source image depends on the raster's glyph + * format defined in its @FT_Raster_Funcs structure. It can be an + * @FT_Outline or anything else in order to support a large array of + * glyph formats. + * + * Note also that the render function can fail and return a + * `FT_Err_Unimplemented_Feature` error code if the raster used does not + * support direct composition. + */ + typedef int + (*FT_Raster_RenderFunc)( FT_Raster raster, + const FT_Raster_Params* params ); + +#define FT_Raster_Render_Func FT_Raster_RenderFunc + + + /************************************************************************** + * + * @struct: + * FT_Raster_Funcs + * + * @description: + * A structure used to describe a given raster class to the library. + * + * @fields: + * glyph_format :: + * The supported glyph format for this raster. + * + * raster_new :: + * The raster constructor. + * + * raster_reset :: + * Used to reset the render pool within the raster. + * + * raster_render :: + * A function to render a glyph into a given bitmap. + * + * raster_done :: + * The raster destructor. + */ + typedef struct FT_Raster_Funcs_ + { + FT_Glyph_Format glyph_format; + + FT_Raster_NewFunc raster_new; + FT_Raster_ResetFunc raster_reset; + FT_Raster_SetModeFunc raster_set_mode; + FT_Raster_RenderFunc raster_render; + FT_Raster_DoneFunc raster_done; + + } FT_Raster_Funcs; + + /* */ + + +FT_END_HEADER + +#endif /* FTIMAGE_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftincrem.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftincrem.h new file mode 100644 index 0000000..3b3d93c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftincrem.h @@ -0,0 +1,348 @@ +/**************************************************************************** + * + * ftincrem.h + * + * FreeType incremental loading (specification). + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTINCREM_H_ +#define FTINCREM_H_ + +#include +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * incremental + * + * @title: + * Incremental Loading + * + * @abstract: + * Custom Glyph Loading. + * + * @description: + * This section contains various functions used to perform so-called + * 'incremental' glyph loading. This is a mode where all glyphs loaded + * from a given @FT_Face are provided by the client application. + * + * Apart from that, all other tables are loaded normally from the font + * file. This mode is useful when FreeType is used within another + * engine, e.g., a PostScript Imaging Processor. + * + * To enable this mode, you must use @FT_Open_Face, passing an + * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an + * @FT_Incremental_Interface value. See the comments for + * @FT_Incremental_InterfaceRec for an example. + * + */ + + + /************************************************************************** + * + * @type: + * FT_Incremental + * + * @description: + * An opaque type describing a user-provided object used to implement + * 'incremental' glyph loading within FreeType. This is used to support + * embedded fonts in certain environments (e.g., PostScript + * interpreters), where the glyph data isn't in the font file, or must be + * overridden by different values. + * + * @note: + * It is up to client applications to create and implement + * @FT_Incremental objects, as long as they provide implementations for + * the methods @FT_Incremental_GetGlyphDataFunc, + * @FT_Incremental_FreeGlyphDataFunc and + * @FT_Incremental_GetGlyphMetricsFunc. + * + * See the description of @FT_Incremental_InterfaceRec to understand how + * to use incremental objects with FreeType. + * + */ + typedef struct FT_IncrementalRec_* FT_Incremental; + + + /************************************************************************** + * + * @struct: + * FT_Incremental_MetricsRec + * + * @description: + * A small structure used to contain the basic glyph metrics returned by + * the @FT_Incremental_GetGlyphMetricsFunc method. + * + * @fields: + * bearing_x :: + * Left bearing, in font units. + * + * bearing_y :: + * Top bearing, in font units. + * + * advance :: + * Horizontal component of glyph advance, in font units. + * + * advance_v :: + * Vertical component of glyph advance, in font units. + * + * @note: + * These correspond to horizontal or vertical metrics depending on the + * value of the `vertical` argument to the function + * @FT_Incremental_GetGlyphMetricsFunc. + * + */ + typedef struct FT_Incremental_MetricsRec_ + { + FT_Long bearing_x; + FT_Long bearing_y; + FT_Long advance; + FT_Long advance_v; /* since 2.3.12 */ + + } FT_Incremental_MetricsRec; + + + /************************************************************************** + * + * @struct: + * FT_Incremental_Metrics + * + * @description: + * A handle to an @FT_Incremental_MetricsRec structure. + * + */ + typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; + + + /************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphDataFunc + * + * @description: + * A function called by FreeType to access a given glyph's data bytes + * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is + * enabled. + * + * Note that the format of the glyph's data bytes depends on the font + * file format. For TrueType, it must correspond to the raw bytes within + * the 'glyf' table. For PostScript formats, it must correspond to the + * **unencrypted** charstring bytes, without any `lenIV` header. It is + * undefined for any other format. + * + * @input: + * incremental :: + * Handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * @output: + * adata :: + * A structure describing the returned glyph data bytes (which will be + * accessed as a read-only byte block). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function returns successfully the method + * @FT_Incremental_FreeGlyphDataFunc will be called later to release the + * data bytes. + * + * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for + * compound glyphs. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Data* adata ); + + + /************************************************************************** + * + * @type: + * FT_Incremental_FreeGlyphDataFunc + * + * @description: + * A function used to release the glyph data bytes returned by a + * successful call to @FT_Incremental_GetGlyphDataFunc. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * data :: + * A structure describing the glyph data bytes (which will be accessed + * as a read-only byte block). + * + */ + typedef void + (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, + FT_Data* data ); + + + /************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphMetricsFunc + * + * @description: + * A function used to retrieve the basic metrics of a given glyph index + * before accessing its data. This allows for handling font types such + * as PCL~XL Format~1, Class~2 downloaded TrueType fonts, where the glyph + * metrics (`hmtx` and `vmtx` tables) are permitted to be omitted from + * the font, and the relevant metrics included in the header of the glyph + * outline data. Importantly, this is not intended to allow custom glyph + * metrics (for example, Postscript Metrics dictionaries), because that + * conflicts with the requirements of outline hinting. Such custom + * metrics must be handled separately, by the calling application. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * vertical :: + * If true, return vertical metrics. + * + * ametrics :: + * This parameter is used for both input and output. The original + * glyph metrics, if any, in font units. If metrics are not available + * all the values must be set to zero. + * + * @output: + * ametrics :: + * The glyph metrics in font units. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphMetricsFunc) + ( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Bool vertical, + FT_Incremental_MetricsRec *ametrics ); + + + /************************************************************************** + * + * @struct: + * FT_Incremental_FuncsRec + * + * @description: + * A table of functions for accessing fonts that load data incrementally. + * Used in @FT_Incremental_InterfaceRec. + * + * @fields: + * get_glyph_data :: + * The function to get glyph data. Must not be null. + * + * free_glyph_data :: + * The function to release glyph data. Must not be null. + * + * get_glyph_metrics :: + * The function to get glyph metrics. May be null if the font does not + * require it. + * + */ + typedef struct FT_Incremental_FuncsRec_ + { + FT_Incremental_GetGlyphDataFunc get_glyph_data; + FT_Incremental_FreeGlyphDataFunc free_glyph_data; + FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; + + } FT_Incremental_FuncsRec; + + + /************************************************************************** + * + * @struct: + * FT_Incremental_InterfaceRec + * + * @description: + * A structure to be used with @FT_Open_Face to indicate that the user + * wants to support incremental glyph loading. You should use it with + * @FT_PARAM_TAG_INCREMENTAL as in the following example: + * + * ``` + * FT_Incremental_InterfaceRec inc_int; + * FT_Parameter parameter; + * FT_Open_Args open_args; + * + * + * // set up incremental descriptor + * inc_int.funcs = my_funcs; + * inc_int.object = my_object; + * + * // set up optional parameter + * parameter.tag = FT_PARAM_TAG_INCREMENTAL; + * parameter.data = &inc_int; + * + * // set up FT_Open_Args structure + * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; + * open_args.pathname = my_font_pathname; + * open_args.num_params = 1; + * open_args.params = ¶meter; // we use one optional argument + * + * // open the font + * error = FT_Open_Face( library, &open_args, index, &face ); + * ... + * ``` + * + */ + typedef struct FT_Incremental_InterfaceRec_ + { + const FT_Incremental_FuncsRec* funcs; + FT_Incremental object; + + } FT_Incremental_InterfaceRec; + + + /************************************************************************** + * + * @type: + * FT_Incremental_Interface + * + * @description: + * A pointer to an @FT_Incremental_InterfaceRec structure. + * + */ + typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; + + + /* */ + + +FT_END_HEADER + +#endif /* FTINCREM_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlcdfil.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlcdfil.h new file mode 100644 index 0000000..c767c6c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlcdfil.h @@ -0,0 +1,323 @@ +/**************************************************************************** + * + * ftlcdfil.h + * + * FreeType API for color filtering of subpixel bitmap glyphs + * (specification). + * + * Copyright (C) 2006-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTLCDFIL_H_ +#define FTLCDFIL_H_ + +#include +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * lcd_rendering + * + * @title: + * Subpixel Rendering + * + * @abstract: + * API to control subpixel rendering. + * + * @description: + * FreeType provides two alternative subpixel rendering technologies. + * Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your + * `ftoption.h` file, this enables ClearType-style rendering. + * Otherwise, Harmony LCD rendering is enabled. These technologies are + * controlled differently and API described below, although always + * available, performs its function when appropriate method is enabled + * and does nothing otherwise. + * + * ClearType-style LCD rendering exploits the color-striped structure of + * LCD pixels, increasing the available resolution in the direction of + * the stripe (usually horizontal RGB) by a factor of~3. Using the + * subpixel coverages unfiltered can create severe color fringes + * especially when rendering thin features. Indeed, to produce + * black-on-white text, the nearby color subpixels must be dimmed + * evenly. Therefore, an equalizing 5-tap FIR filter should be applied + * to subpixel coverages regardless of pixel boundaries and should have + * these properties: + * + * 1. It should be symmetrical, like {~a, b, c, b, a~}, to avoid + * any shifts in appearance. + * + * 2. It should be color-balanced, meaning a~+ b~=~c, to reduce color + * fringes by distributing the computed coverage for one subpixel to + * all subpixels equally. + * + * 3. It should be normalized, meaning 2a~+ 2b~+ c~=~1.0 to maintain + * overall brightness. + * + * Boxy 3-tap filter {0, 1/3, 1/3, 1/3, 0} is sharper but is less + * forgiving of non-ideal gamma curves of a screen (and viewing angles), + * beveled filters are fuzzier but more tolerant. + * + * Use the @FT_Library_SetLcdFilter or @FT_Library_SetLcdFilterWeights + * API to specify a low-pass filter, which is then applied to + * subpixel-rendered bitmaps generated through @FT_Render_Glyph. + * + * Harmony LCD rendering is suitable to panels with any regular subpixel + * structure, not just monitors with 3 color striped subpixels, as long + * as the color subpixels have fixed positions relative to the pixel + * center. In this case, each color channel can be rendered separately + * after shifting the outline opposite to the subpixel shift so that the + * coverage maps are aligned. This method is immune to color fringes + * because the shifts do not change integral coverage. + * + * The subpixel geometry must be specified by xy-coordinates for each + * subpixel. By convention they may come in the RGB order: {{-1/3, 0}, + * {0, 0}, {1/3, 0}} for standard RGB striped panel or {{-1/6, 1/4}, + * {-1/6, -1/4}, {1/3, 0}} for a certain PenTile panel. + * + * Use the @FT_Library_SetLcdGeometry API to specify subpixel positions. + * If one follows the RGB order convention, the same order applies to the + * resulting @FT_PIXEL_MODE_LCD and @FT_PIXEL_MODE_LCD_V bitmaps. Note, + * however, that the coordinate frame for the latter must be rotated + * clockwise. Harmony with default LCD geometry is equivalent to + * ClearType with light filter. + * + * As a result of ClearType filtering or Harmony shifts, the resulting + * dimensions of LCD bitmaps can be slightly wider or taller than the + * dimensions the original outline with regard to the pixel grid. + * For example, for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to + * the left, and 2~subpixels to the right. The bitmap offset values are + * adjusted accordingly, so clients shouldn't need to modify their layout + * and glyph positioning code when enabling the filter. + * + * The ClearType and Harmony rendering is applicable to glyph bitmaps + * rendered through @FT_Render_Glyph, @FT_Load_Glyph, @FT_Load_Char, and + * @FT_Glyph_To_Bitmap, when @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V + * is specified. This API does not control @FT_Outline_Render and + * @FT_Outline_Get_Bitmap. + * + * The described algorithms can completely remove color artefacts when + * combined with gamma-corrected alpha blending in linear space. Each of + * the 3~alpha values (subpixels) must by independently used to blend one + * color channel. That is, red alpha blends the red channel of the text + * color with the red channel of the background pixel. + */ + + + /************************************************************************** + * + * @enum: + * FT_LcdFilter + * + * @description: + * A list of values to identify various types of LCD filters. + * + * @values: + * FT_LCD_FILTER_NONE :: + * Do not perform filtering. When used with subpixel rendering, this + * results in sometimes severe color fringes. + * + * FT_LCD_FILTER_DEFAULT :: + * This is a beveled, normalized, and color-balanced five-tap filter + * with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256th units. + * + * FT_LCD_FILTER_LIGHT :: + * this is a boxy, normalized, and color-balanced three-tap filter with + * weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units. + * + * FT_LCD_FILTER_LEGACY :: + * FT_LCD_FILTER_LEGACY1 :: + * This filter corresponds to the original libXft color filter. It + * provides high contrast output but can exhibit really bad color + * fringes if glyphs are not extremely well hinted to the pixel grid. + * This filter is only provided for comparison purposes, and might be + * disabled or stay unsupported in the future. The second value is + * provided for compatibility with FontConfig, which historically used + * different enumeration, sometimes incorrectly forwarded to FreeType. + * + * @since: + * 2.3.0 (`FT_LCD_FILTER_LEGACY1` since 2.6.2) + */ + typedef enum FT_LcdFilter_ + { + FT_LCD_FILTER_NONE = 0, + FT_LCD_FILTER_DEFAULT = 1, + FT_LCD_FILTER_LIGHT = 2, + FT_LCD_FILTER_LEGACY1 = 3, + FT_LCD_FILTER_LEGACY = 16, + + FT_LCD_FILTER_MAX /* do not remove */ + + } FT_LcdFilter; + + + /************************************************************************** + * + * @function: + * FT_Library_SetLcdFilter + * + * @description: + * This function is used to change filter applied to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: + * A handle to the target library instance. + * + * filter :: + * The filter type. + * + * You can use @FT_LCD_FILTER_NONE here to disable this feature, or + * @FT_LCD_FILTER_DEFAULT to use a default filter that should work well + * on most LCD screens. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Since 2.10.3 the LCD filtering is enabled with @FT_LCD_FILTER_DEFAULT. + * It is no longer necessary to call this function explicitly except + * to choose a different filter or disable filtering altogether with + * @FT_LCD_FILTER_NONE. + * + * This function does nothing but returns `FT_Err_Unimplemented_Feature` + * if the configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is + * not defined in your build of the library. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + + /************************************************************************** + * + * @function: + * FT_Library_SetLcdFilterWeights + * + * @description: + * This function can be used to enable LCD filter with custom weights, + * instead of using presets in @FT_Library_SetLcdFilter. + * + * @input: + * library :: + * A handle to the target library instance. + * + * weights :: + * A pointer to an array; the function copies the first five bytes and + * uses them to specify the filter weights in 1/256th units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function does nothing but returns `FT_Err_Unimplemented_Feature` + * if the configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is + * not defined in your build of the library. + * + * LCD filter weights can also be set per face using @FT_Face_Properties + * with @FT_PARAM_TAG_LCD_FILTER_WEIGHTS. + * + * @since: + * 2.4.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilterWeights( FT_Library library, + unsigned char *weights ); + + + /************************************************************************** + * + * @type: + * FT_LcdFiveTapFilter + * + * @description: + * A typedef for passing the five LCD filter weights to + * @FT_Face_Properties within an @FT_Parameter structure. + * + * @since: + * 2.8 + * + */ +#define FT_LCD_FILTER_FIVE_TAPS 5 + + typedef FT_Byte FT_LcdFiveTapFilter[FT_LCD_FILTER_FIVE_TAPS]; + + + /************************************************************************** + * + * @function: + * FT_Library_SetLcdGeometry + * + * @description: + * This function can be used to modify default positions of color + * subpixels, which controls Harmony LCD rendering. + * + * @input: + * library :: + * A handle to the target library instance. + * + * sub :: + * A pointer to an array of 3 vectors in 26.6 fractional pixel format; + * the function modifies the default values, see the note below. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Subpixel geometry examples: + * + * - {{-21, 0}, {0, 0}, {21, 0}} is the default, corresponding to 3 color + * stripes shifted by a third of a pixel. This could be an RGB panel. + * + * - {{21, 0}, {0, 0}, {-21, 0}} looks the same as the default but can + * specify a BGR panel instead, while keeping the bitmap in the same + * RGB888 format. + * + * - {{0, 21}, {0, 0}, {0, -21}} is the vertical RGB, but the bitmap + * stays RGB888 as a result. + * + * - {{-11, 16}, {-11, -16}, {22, 0}} is a certain PenTile arrangement. + * + * This function does nothing and returns `FT_Err_Unimplemented_Feature` + * in the context of ClearType-style subpixel rendering when + * `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is defined in your build of the + * library. + * + * @since: + * 2.10.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdGeometry( FT_Library library, + FT_Vector sub[3] ); + + /* */ + + +FT_END_HEADER + +#endif /* FTLCDFIL_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlist.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlist.h new file mode 100644 index 0000000..4dca2bf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlist.h @@ -0,0 +1,296 @@ +/**************************************************************************** + * + * ftlist.h + * + * Generic list support for FreeType (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file implements functions relative to list processing. Its data + * structures are defined in `freetype.h`. + * + */ + + +#ifndef FTLIST_H_ +#define FTLIST_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * list_processing + * + * @title: + * List Processing + * + * @abstract: + * Simple management of lists. + * + * @description: + * This section contains various definitions related to list processing + * using doubly-linked nodes. + * + * @order: + * FT_List + * FT_ListNode + * FT_ListRec + * FT_ListNodeRec + * + * FT_List_Add + * FT_List_Insert + * FT_List_Find + * FT_List_Remove + * FT_List_Up + * FT_List_Iterate + * FT_List_Iterator + * FT_List_Finalize + * FT_List_Destructor + * + */ + + + /************************************************************************** + * + * @function: + * FT_List_Find + * + * @description: + * Find the list node for a given listed object. + * + * @input: + * list :: + * A pointer to the parent list. + * data :: + * The address of the listed object. + * + * @return: + * List node. `NULL` if it wasn't found. + */ + FT_EXPORT( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ); + + + /************************************************************************** + * + * @function: + * FT_List_Add + * + * @description: + * Append an element to the end of a list. + * + * @inout: + * list :: + * A pointer to the parent list. + * node :: + * The node to append. + */ + FT_EXPORT( void ) + FT_List_Add( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @function: + * FT_List_Insert + * + * @description: + * Insert an element at the head of a list. + * + * @inout: + * list :: + * A pointer to parent list. + * node :: + * The node to insert. + */ + FT_EXPORT( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @function: + * FT_List_Remove + * + * @description: + * Remove a node from a list. This function doesn't check whether the + * node is in the list! + * + * @input: + * node :: + * The node to remove. + * + * @inout: + * list :: + * A pointer to the parent list. + */ + FT_EXPORT( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @function: + * FT_List_Up + * + * @description: + * Move a node to the head/top of a list. Used to maintain LRU lists. + * + * @inout: + * list :: + * A pointer to the parent list. + * node :: + * The node to move. + */ + FT_EXPORT( void ) + FT_List_Up( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @functype: + * FT_List_Iterator + * + * @description: + * An FT_List iterator function that is called during a list parse by + * @FT_List_Iterate. + * + * @input: + * node :: + * The current iteration list node. + * + * user :: + * A typeless pointer passed to @FT_List_Iterate. Can be used to point + * to the iteration's state. + */ + typedef FT_Error + (*FT_List_Iterator)( FT_ListNode node, + void* user ); + + + /************************************************************************** + * + * @function: + * FT_List_Iterate + * + * @description: + * Parse a list and calls a given iterator function on each element. + * Note that parsing is stopped as soon as one of the iterator calls + * returns a non-zero value. + * + * @input: + * list :: + * A handle to the list. + * iterator :: + * An iterator function, called on each node of the list. + * user :: + * A user-supplied field that is passed as the second argument to the + * iterator. + * + * @return: + * The result (a FreeType error code) of the last iterator call. + */ + FT_EXPORT( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); + + + /************************************************************************** + * + * @functype: + * FT_List_Destructor + * + * @description: + * An @FT_List iterator function that is called during a list + * finalization by @FT_List_Finalize to destroy all elements in a given + * list. + * + * @input: + * system :: + * The current system object. + * + * data :: + * The current object to destroy. + * + * user :: + * A typeless pointer passed to @FT_List_Iterate. It can be used to + * point to the iteration's state. + */ + typedef void + (*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); + + + /************************************************************************** + * + * @function: + * FT_List_Finalize + * + * @description: + * Destroy all elements in the list as well as the list itself. + * + * @input: + * list :: + * A handle to the list. + * + * destroy :: + * A list destructor that will be applied to each element of the list. + * Set this to `NULL` if not needed. + * + * memory :: + * The current memory object that handles deallocation. + * + * user :: + * A user-supplied field that is passed as the last argument to the + * destructor. + * + * @note: + * This function expects that all nodes added by @FT_List_Add or + * @FT_List_Insert have been dynamically allocated. + */ + FT_EXPORT( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); + + /* */ + + +FT_END_HEADER + +#endif /* FTLIST_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlzw.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlzw.h new file mode 100644 index 0000000..3d7cfd5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftlzw.h @@ -0,0 +1,100 @@ +/**************************************************************************** + * + * ftlzw.h + * + * LZW-compressed stream support. + * + * Copyright (C) 2004-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTLZW_H_ +#define FTLZW_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * lzw + * + * @title: + * LZW Streams + * + * @abstract: + * Using LZW-compressed font files. + * + * @description: + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it and + * re-open the face with it. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream, + * which significantly undermines the performance. + * + * This section contains the declaration of LZW-specific functions. + * + */ + + /************************************************************************** + * + * @function: + * FT_Stream_OpenLZW + * + * @description: + * Open a new stream to parse LZW-compressed font files. This is mainly + * used to support the compressed `*.pcf.Z` fonts that come with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close` on the new stream will + * **not** call `FT_Stream_Close` on the source stream. None of the + * stream objects will be released to the heap. + * + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with LZW support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenLZW( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* FTLZW_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmac.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmac.h new file mode 100644 index 0000000..3dd61d0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmac.h @@ -0,0 +1,289 @@ +/**************************************************************************** + * + * ftmac.h + * + * Additional Mac-specific API. + * + * Copyright (C) 1996-2022 by + * Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +/**************************************************************************** + * + * NOTE: Include this file after `FT_FREETYPE_H` and after any + * Mac-specific headers (because this header uses Mac types such as + * 'Handle', 'FSSpec', 'FSRef', etc.) + * + */ + + +#ifndef FTMAC_H_ +#define FTMAC_H_ + + + + +FT_BEGIN_HEADER + + + /* gcc-3.1 and later can warn about functions tagged as deprecated */ +#ifndef FT_DEPRECATED_ATTRIBUTE +#if defined( __GNUC__ ) && \ + ( ( __GNUC__ >= 4 ) || \ + ( ( __GNUC__ == 3 ) && ( __GNUC_MINOR__ >= 1 ) ) ) +#define FT_DEPRECATED_ATTRIBUTE __attribute__(( deprecated )) +#else +#define FT_DEPRECATED_ATTRIBUTE +#endif +#endif + + + /************************************************************************** + * + * @section: + * mac_specific + * + * @title: + * Mac Specific Interface + * + * @abstract: + * Only available on the Macintosh. + * + * @description: + * The following definitions are only available if FreeType is compiled + * on a Macintosh. + * + */ + + + /************************************************************************** + * + * @function: + * FT_New_Face_From_FOND + * + * @description: + * Create a new face object from a FOND resource. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * fond :: + * A FOND resource. + * + * face_index :: + * Only supported for the -1 'sanity check' special case. + * + * @output: + * aface :: + * A handle to a new face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @example: + * This function can be used to create @FT_Face objects from fonts that + * are installed in the system as follows. + * + * ``` + * fond = GetResource( 'FOND', fontName ); + * error = FT_New_Face_From_FOND( library, fond, 0, &face ); + * ``` + */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_GetFile_From_Mac_Name + * + * @description: + * Return an FSSpec for the disk file containing the named font. + * + * @input: + * fontName :: + * Mac OS name of the font (e.g., Times New Roman Bold). + * + * @output: + * pathSpec :: + * FSSpec to the file. For passing to @FT_New_Face_From_FSSpec. + * + * face_index :: + * Index of the face. For passing to @FT_New_Face_From_FSSpec. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_GetFile_From_Mac_ATS_Name + * + * @description: + * Return an FSSpec for the disk file containing the named font. + * + * @input: + * fontName :: + * Mac OS name of the font in ATS framework. + * + * @output: + * pathSpec :: + * FSSpec to the file. For passing to @FT_New_Face_From_FSSpec. + * + * face_index :: + * Index of the face. For passing to @FT_New_Face_From_FSSpec. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_GetFilePath_From_Mac_ATS_Name + * + * @description: + * Return a pathname of the disk file and face index for given font name + * that is handled by ATS framework. + * + * @input: + * fontName :: + * Mac OS name of the font in ATS framework. + * + * @output: + * path :: + * Buffer to store pathname of the file. For passing to @FT_New_Face. + * The client must allocate this buffer before calling this function. + * + * maxPathSize :: + * Lengths of the buffer `path` that client allocated. + * + * face_index :: + * Index of the face. For passing to @FT_New_Face. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_New_Face_From_FSSpec + * + * @description: + * Create a new face object from a given resource and typeface index + * using an FSSpec to the font file. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * spec :: + * FSSpec to the font file. + * + * face_index :: + * The index of the face within the resource. The first face has + * index~0. + * @output: + * aface :: + * A handle to a new face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * @FT_New_Face_From_FSSpec is identical to @FT_New_Face except it + * accepts an FSSpec instead of a path. + */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec *spec, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_New_Face_From_FSRef + * + * @description: + * Create a new face object from a given resource and typeface index + * using an FSRef to the font file. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * spec :: + * FSRef to the font file. + * + * face_index :: + * The index of the face within the resource. The first face has + * index~0. + * @output: + * aface :: + * A handle to a new face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * @FT_New_Face_From_FSRef is identical to @FT_New_Face except it accepts + * an FSRef instead of a path. + */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef *ref, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + /* */ + + +FT_END_HEADER + + +#endif /* FTMAC_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmm.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmm.h new file mode 100644 index 0000000..c74ce61 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmm.h @@ -0,0 +1,755 @@ +/**************************************************************************** + * + * ftmm.h + * + * FreeType Multiple Master font interface (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTMM_H_ +#define FTMM_H_ + + +#include + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * multiple_masters + * + * @title: + * Multiple Masters + * + * @abstract: + * How to manage Multiple Masters fonts. + * + * @description: + * The following types and functions are used to manage Multiple Master + * fonts, i.e., the selection of specific design instances by setting + * design axis coordinates. + * + * Besides Adobe MM fonts, the interface supports Apple's TrueType GX and + * OpenType variation fonts. Some of the routines only work with Adobe + * MM fonts, others will work with all three types. They are similar + * enough that a consistent interface makes sense. + * + * For Adobe MM fonts, macro @FT_IS_SFNT returns false. For GX and + * OpenType variation fonts, it returns true. + * + */ + + + /************************************************************************** + * + * @struct: + * FT_MM_Axis + * + * @description: + * A structure to model a given axis in design space for Multiple Masters + * fonts. + * + * This structure can't be used for TrueType GX or OpenType variation + * fonts. + * + * @fields: + * name :: + * The axis's name. + * + * minimum :: + * The axis's minimum design coordinate. + * + * maximum :: + * The axis's maximum design coordinate. + */ + typedef struct FT_MM_Axis_ + { + FT_String* name; + FT_Long minimum; + FT_Long maximum; + + } FT_MM_Axis; + + + /************************************************************************** + * + * @struct: + * FT_Multi_Master + * + * @description: + * A structure to model the axes and space of a Multiple Masters font. + * + * This structure can't be used for TrueType GX or OpenType variation + * fonts. + * + * @fields: + * num_axis :: + * Number of axes. Cannot exceed~4. + * + * num_designs :: + * Number of designs; should be normally 2^num_axis even though the + * Type~1 specification strangely allows for intermediate designs to be + * present. This number cannot exceed~16. + * + * axis :: + * A table of axis descriptors. + */ + typedef struct FT_Multi_Master_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_MM_Axis axis[T1_MAX_MM_AXIS]; + + } FT_Multi_Master; + + + /************************************************************************** + * + * @struct: + * FT_Var_Axis + * + * @description: + * A structure to model a given axis in design space for Multiple + * Masters, TrueType GX, and OpenType variation fonts. + * + * @fields: + * name :: + * The axis's name. Not always meaningful for TrueType GX or OpenType + * variation fonts. + * + * minimum :: + * The axis's minimum design coordinate. + * + * def :: + * The axis's default design coordinate. FreeType computes meaningful + * default values for Adobe MM fonts. + * + * maximum :: + * The axis's maximum design coordinate. + * + * tag :: + * The axis's tag (the equivalent to 'name' for TrueType GX and + * OpenType variation fonts). FreeType provides default values for + * Adobe MM fonts if possible. + * + * strid :: + * The axis name entry in the font's 'name' table. This is another + * (and often better) version of the 'name' field for TrueType GX or + * OpenType variation fonts. Not meaningful for Adobe MM fonts. + * + * @note: + * The fields `minimum`, `def`, and `maximum` are 16.16 fractional values + * for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the + * values are integers. + */ + typedef struct FT_Var_Axis_ + { + FT_String* name; + + FT_Fixed minimum; + FT_Fixed def; + FT_Fixed maximum; + + FT_ULong tag; + FT_UInt strid; + + } FT_Var_Axis; + + + /************************************************************************** + * + * @struct: + * FT_Var_Named_Style + * + * @description: + * A structure to model a named instance in a TrueType GX or OpenType + * variation font. + * + * This structure can't be used for Adobe MM fonts. + * + * @fields: + * coords :: + * The design coordinates for this instance. This is an array with one + * entry for each axis. + * + * strid :: + * The entry in 'name' table identifying this instance. + * + * psid :: + * The entry in 'name' table identifying a PostScript name for this + * instance. Value 0xFFFF indicates a missing entry. + */ + typedef struct FT_Var_Named_Style_ + { + FT_Fixed* coords; + FT_UInt strid; + FT_UInt psid; /* since 2.7.1 */ + + } FT_Var_Named_Style; + + + /************************************************************************** + * + * @struct: + * FT_MM_Var + * + * @description: + * A structure to model the axes and space of an Adobe MM, TrueType GX, + * or OpenType variation font. + * + * Some fields are specific to one format and not to the others. + * + * @fields: + * num_axis :: + * The number of axes. The maximum value is~4 for Adobe MM fonts; no + * limit in TrueType GX or OpenType variation fonts. + * + * num_designs :: + * The number of designs; should be normally 2^num_axis for Adobe MM + * fonts. Not meaningful for TrueType GX or OpenType variation fonts + * (where every glyph could have a different number of designs). + * + * num_namedstyles :: + * The number of named styles; a 'named style' is a tuple of design + * coordinates that has a string ID (in the 'name' table) associated + * with it. The font can tell the user that, for example, + * [Weight=1.5,Width=1.1] is 'Bold'. Another name for 'named style' is + * 'named instance'. + * + * For Adobe Multiple Masters fonts, this value is always zero because + * the format does not support named styles. + * + * axis :: + * An axis descriptor table. TrueType GX and OpenType variation fonts + * contain slightly more data than Adobe MM fonts. Memory management + * of this pointer is done internally by FreeType. + * + * namedstyle :: + * A named style (instance) table. Only meaningful for TrueType GX and + * OpenType variation fonts. Memory management of this pointer is done + * internally by FreeType. + */ + typedef struct FT_MM_Var_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_UInt num_namedstyles; + FT_Var_Axis* axis; + FT_Var_Named_Style* namedstyle; + + } FT_MM_Var; + + + /************************************************************************** + * + * @function: + * FT_Get_Multi_Master + * + * @description: + * Retrieve a variation descriptor of a given Adobe MM font. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @input: + * face :: + * A handle to the source face. + * + * @output: + * amaster :: + * The Multiple Masters descriptor. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); + + + /************************************************************************** + * + * @function: + * FT_Get_MM_Var + * + * @description: + * Retrieve a variation descriptor for a given font. + * + * This function works with all supported variation formats. + * + * @input: + * face :: + * A handle to the source face. + * + * @output: + * amaster :: + * The variation descriptor. Allocates a data structure, which the + * user must deallocate with a call to @FT_Done_MM_Var after use. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Var( FT_Face face, + FT_MM_Var* *amaster ); + + + /************************************************************************** + * + * @function: + * FT_Done_MM_Var + * + * @description: + * Free the memory allocated by @FT_Get_MM_Var. + * + * @input: + * library :: + * A handle of the face's parent library object that was used in the + * call to @FT_Get_MM_Var to create `amaster`. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Done_MM_Var( FT_Library library, + FT_MM_Var *amaster ); + + + /************************************************************************** + * + * @function: + * FT_Set_MM_Design_Coordinates + * + * @description: + * For Adobe MM fonts, choose an interpolated font design through design + * coordinates. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * num_coords :: + * The number of available design coordinates. If it is larger than + * the number of axes, ignore the excess values. If it is smaller than + * the number of axes, use default values for the remaining axes. + * + * coords :: + * An array of design coordinates. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * [Since 2.8.1] To reset all axes to the default values, call the + * function with `num_coords` set to zero and `coords` set to `NULL`. + * + * [Since 2.9] If `num_coords` is larger than zero, this function sets + * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field + * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, + * this bit flag gets unset. + */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_Var_Design_Coordinates + * + * @description: + * Choose an interpolated font design through design coordinates. + * + * This function works with all supported variation formats. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * num_coords :: + * The number of available design coordinates. If it is larger than + * the number of axes, ignore the excess values. If it is smaller than + * the number of axes, use default values for the remaining axes. + * + * coords :: + * An array of design coordinates. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * [Since 2.8.1] To reset all axes to the default values, call the + * function with `num_coords` set to zero and `coords` set to `NULL`. + * [Since 2.9] 'Default values' means the currently selected named + * instance (or the base font if no named instance is selected). + * + * [Since 2.9] If `num_coords` is larger than zero, this function sets + * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field + * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, + * this bit flag gets unset. + */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Get_Var_Design_Coordinates + * + * @description: + * Get the design coordinates of the currently selected interpolated + * font. + * + * This function works with all supported variation formats. + * + * @input: + * face :: + * A handle to the source face. + * + * num_coords :: + * The number of design coordinates to retrieve. If it is larger than + * the number of axes, set the excess values to~0. + * + * @output: + * coords :: + * The design coordinates array. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.7.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_MM_Blend_Coordinates + * + * @description: + * Choose an interpolated font design through normalized blend + * coordinates. + * + * This function works with all supported variation formats. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * num_coords :: + * The number of available design coordinates. If it is larger than + * the number of axes, ignore the excess values. If it is smaller than + * the number of axes, use default values for the remaining axes. + * + * coords :: + * The design coordinates array (each element must be between 0 and 1.0 + * for Adobe MM fonts, and between -1.0 and 1.0 for TrueType GX and + * OpenType variation fonts). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * [Since 2.8.1] To reset all axes to the default values, call the + * function with `num_coords` set to zero and `coords` set to `NULL`. + * [Since 2.9] 'Default values' means the currently selected named + * instance (or the base font if no named instance is selected). + * + * [Since 2.9] If `num_coords` is larger than zero, this function sets + * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field + * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, + * this bit flag gets unset. + */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Get_MM_Blend_Coordinates + * + * @description: + * Get the normalized blend coordinates of the currently selected + * interpolated font. + * + * This function works with all supported variation formats. + * + * @input: + * face :: + * A handle to the source face. + * + * num_coords :: + * The number of normalized blend coordinates to retrieve. If it is + * larger than the number of axes, set the excess values to~0.5 for + * Adobe MM fonts, and to~0 for TrueType GX and OpenType variation + * fonts. + * + * @output: + * coords :: + * The normalized blend coordinates array. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.7.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_Var_Blend_Coordinates + * + * @description: + * This is another name of @FT_Set_MM_Blend_Coordinates. + */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Get_Var_Blend_Coordinates + * + * @description: + * This is another name of @FT_Get_MM_Blend_Coordinates. + * + * @since: + * 2.7.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_MM_WeightVector + * + * @description: + * For Adobe MM fonts, choose an interpolated font design by directly + * setting the weight vector. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * len :: + * The length of the weight vector array. If it is larger than the + * number of designs, the extra values are ignored. If it is less than + * the number of designs, the remaining values are set to zero. + * + * weightvector :: + * An array representing the weight vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Adobe Multiple Master fonts limit the number of designs, and thus the + * length of the weight vector to~16. + * + * If `len` is zero and `weightvector` is `NULL`, the weight vector array + * is reset to the default values. + * + * The Adobe documentation also states that the values in the + * WeightVector array must total 1.0 +/-~0.001. In practice this does + * not seem to be enforced, so is not enforced here, either. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Set_MM_WeightVector( FT_Face face, + FT_UInt len, + FT_Fixed* weightvector ); + + + /************************************************************************** + * + * @function: + * FT_Get_MM_WeightVector + * + * @description: + * For Adobe MM fonts, retrieve the current weight vector of the font. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @inout: + * face :: + * A handle to the source face. + * + * len :: + * A pointer to the size of the array to be filled. If the size of the + * array is less than the number of designs, `FT_Err_Invalid_Argument` + * is returned, and `len` is set to the required size (the number of + * designs). If the size of the array is greater than the number of + * designs, the remaining entries are set to~0. On successful + * completion, `len` is set to the number of designs (i.e., the number + * of values written to the array). + * + * @output: + * weightvector :: + * An array to be filled. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Adobe Multiple Master fonts limit the number of designs, and thus the + * length of the WeightVector to~16. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Get_MM_WeightVector( FT_Face face, + FT_UInt* len, + FT_Fixed* weightvector ); + + + /************************************************************************** + * + * @enum: + * FT_VAR_AXIS_FLAG_XXX + * + * @description: + * A list of bit flags used in the return value of + * @FT_Get_Var_Axis_Flags. + * + * @values: + * FT_VAR_AXIS_FLAG_HIDDEN :: + * The variation axis should not be exposed to user interfaces. + * + * @since: + * 2.8.1 + */ +#define FT_VAR_AXIS_FLAG_HIDDEN 1 + + + /************************************************************************** + * + * @function: + * FT_Get_Var_Axis_Flags + * + * @description: + * Get the 'flags' field of an OpenType Variation Axis Record. + * + * Not meaningful for Adobe MM fonts (`*flags` is always zero). + * + * @input: + * master :: + * The variation descriptor. + * + * axis_index :: + * The index of the requested variation axis. + * + * @output: + * flags :: + * The 'flags' field. See @FT_VAR_AXIS_FLAG_XXX for possible values. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.8.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_Var_Axis_Flags( FT_MM_Var* master, + FT_UInt axis_index, + FT_UInt* flags ); + + + /************************************************************************** + * + * @function: + * FT_Set_Named_Instance + * + * @description: + * Set or change the current named instance. + * + * @input: + * face :: + * A handle to the source face. + * + * instance_index :: + * The index of the requested instance, starting with value 1. If set + * to value 0, FreeType switches to font access without a named + * instance. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The function uses the value of `instance_index` to set bits 16-30 of + * the face's `face_index` field. It also resets any variation applied + * to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's + * `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION will + * return false). + * + * For Adobe MM fonts (which don't have named instances) this function + * simply resets the current face to the default instance. + * + * @since: + * 2.9 + */ + FT_EXPORT( FT_Error ) + FT_Set_Named_Instance( FT_Face face, + FT_UInt instance_index ); + + /* */ + + +FT_END_HEADER + +#endif /* FTMM_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmodapi.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmodapi.h new file mode 100644 index 0000000..b78db72 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmodapi.h @@ -0,0 +1,807 @@ +/**************************************************************************** + * + * ftmodapi.h + * + * FreeType modules public interface (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTMODAPI_H_ +#define FTMODAPI_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * module_management + * + * @title: + * Module Management + * + * @abstract: + * How to add, upgrade, remove, and control modules from FreeType. + * + * @description: + * The definitions below are used to manage modules within FreeType. + * Internal and external modules can be added, upgraded, and removed at + * runtime. For example, an alternative renderer or proprietary font + * driver can be registered and prioritized. Additionally, some module + * properties can also be controlled. + * + * Here is a list of existing values of the `module_name` field in the + * @FT_Module_Class structure. + * + * ``` + * autofitter + * bdf + * cff + * gxvalid + * otvalid + * pcf + * pfr + * psaux + * pshinter + * psnames + * raster1 + * sfnt + * smooth + * truetype + * type1 + * type42 + * t1cid + * winfonts + * ``` + * + * Note that the FreeType Cache sub-system is not a FreeType module. + * + * @order: + * FT_Module + * FT_Module_Constructor + * FT_Module_Destructor + * FT_Module_Requester + * FT_Module_Class + * + * FT_Add_Module + * FT_Get_Module + * FT_Remove_Module + * FT_Add_Default_Modules + * + * FT_FACE_DRIVER_NAME + * FT_Property_Set + * FT_Property_Get + * FT_Set_Default_Properties + * + * FT_New_Library + * FT_Done_Library + * FT_Reference_Library + * + * FT_Renderer + * FT_Renderer_Class + * + * FT_Get_Renderer + * FT_Set_Renderer + * + * FT_Set_Debug_Hook + * + */ + + + /* module bit flags */ +#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ +#define FT_MODULE_RENDERER 2 /* this module is a renderer */ +#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ +#define FT_MODULE_STYLER 8 /* this module is a styler */ + +#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ + /* scalable fonts */ +#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ + /* support vector outlines */ +#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ + /* own hinter */ +#define FT_MODULE_DRIVER_HINTS_LIGHTLY 0x800 /* the driver's hinter */ + /* produces LIGHT hints */ + + + /* deprecated values */ +#define ft_module_font_driver FT_MODULE_FONT_DRIVER +#define ft_module_renderer FT_MODULE_RENDERER +#define ft_module_hinter FT_MODULE_HINTER +#define ft_module_styler FT_MODULE_STYLER + +#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE +#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES +#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER +#define ft_module_driver_hints_lightly FT_MODULE_DRIVER_HINTS_LIGHTLY + + + typedef FT_Pointer FT_Module_Interface; + + + /************************************************************************** + * + * @functype: + * FT_Module_Constructor + * + * @description: + * A function used to initialize (not create) a new module object. + * + * @input: + * module :: + * The module to initialize. + */ + typedef FT_Error + (*FT_Module_Constructor)( FT_Module module ); + + + /************************************************************************** + * + * @functype: + * FT_Module_Destructor + * + * @description: + * A function used to finalize (not destroy) a given module object. + * + * @input: + * module :: + * The module to finalize. + */ + typedef void + (*FT_Module_Destructor)( FT_Module module ); + + + /************************************************************************** + * + * @functype: + * FT_Module_Requester + * + * @description: + * A function used to query a given module for a specific interface. + * + * @input: + * module :: + * The module to be searched. + * + * name :: + * The name of the interface in the module. + */ + typedef FT_Module_Interface + (*FT_Module_Requester)( FT_Module module, + const char* name ); + + + /************************************************************************** + * + * @struct: + * FT_Module_Class + * + * @description: + * The module class descriptor. While being a public structure necessary + * for FreeType's module bookkeeping, most of the fields are essentially + * internal, not to be used directly by an application. + * + * @fields: + * module_flags :: + * Bit flags describing the module. + * + * module_size :: + * The size of one module object/instance in bytes. + * + * module_name :: + * The name of the module. + * + * module_version :: + * The version, as a 16.16 fixed number (major.minor). + * + * module_requires :: + * The version of FreeType this module requires, as a 16.16 fixed + * number (major.minor). Starts at version 2.0, i.e., 0x20000. + * + * module_interface :: + * A typeless pointer to a structure (which varies between different + * modules) that holds the module's interface functions. This is + * essentially what `get_interface` returns. + * + * module_init :: + * The initializing function. + * + * module_done :: + * The finalizing function. + * + * get_interface :: + * The interface requesting function. + */ + typedef struct FT_Module_Class_ + { + FT_ULong module_flags; + FT_Long module_size; + const FT_String* module_name; + FT_Fixed module_version; + FT_Fixed module_requires; + + const void* module_interface; + + FT_Module_Constructor module_init; + FT_Module_Destructor module_done; + FT_Module_Requester get_interface; + + } FT_Module_Class; + + + /************************************************************************** + * + * @function: + * FT_Add_Module + * + * @description: + * Add a new module to a given library instance. + * + * @inout: + * library :: + * A handle to the library object. + * + * @input: + * clazz :: + * A pointer to class descriptor for the module. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * An error will be returned if a module already exists by that name, or + * if the module requires a version of FreeType that is too great. + */ + FT_EXPORT( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + + /************************************************************************** + * + * @function: + * FT_Get_Module + * + * @description: + * Find a module by its name. + * + * @input: + * library :: + * A handle to the library object. + * + * module_name :: + * The module's name (as an ASCII string). + * + * @return: + * A module handle. 0~if none was found. + * + * @note: + * FreeType's internal modules aren't documented very well, and you + * should look up the source code for details. + */ + FT_EXPORT( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ); + + + /************************************************************************** + * + * @function: + * FT_Remove_Module + * + * @description: + * Remove a given module from a library instance. + * + * @inout: + * library :: + * A handle to a library object. + * + * @input: + * module :: + * A handle to a module object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The module object is destroyed by the function in case of success. + */ + FT_EXPORT( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ); + + + /************************************************************************** + * + * @macro: + * FT_FACE_DRIVER_NAME + * + * @description: + * A macro that retrieves the name of a font driver from a face object. + * + * @note: + * The font driver name is a valid `module_name` for @FT_Property_Set + * and @FT_Property_Get. This is not the same as @FT_Get_Font_Format. + * + * @since: + * 2.11 + * + */ +#define FT_FACE_DRIVER_NAME( face ) \ + ( ( *FT_REINTERPRET_CAST( FT_Module_Class**, \ + ( face )->driver ) )->module_name ) + + + /************************************************************************** + * + * @function: + * FT_Property_Set + * + * @description: + * Set a property for a given module. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in section + * @properties. + * + * Note that only a few modules have properties. + * + * value :: + * A generic pointer to a variable or structure that gives the new + * value of the property. The exact definition of `value` is + * dependent on the property; see section @properties. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name` isn't a valid module name, or `property_name` + * doesn't specify a valid property, or if `value` doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example sets property 'bar' (a simple integer) in + * module 'foo' to value~1. + * + * ``` + * FT_UInt bar; + * + * + * bar = 1; + * FT_Property_Set( library, "foo", "bar", &bar ); + * ``` + * + * Note that the FreeType Cache sub-system doesn't recognize module + * property changes. To avoid glyph lookup confusion within the cache + * you should call @FTC_Manager_Reset to completely flush the cache if a + * module property gets changed after @FTC_Manager_New has been called. + * + * It is not possible to set properties of the FreeType Cache sub-system + * itself with FT_Property_Set; use @FTC_Property_Set instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Set( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + const void* value ); + + + /************************************************************************** + * + * @function: + * FT_Property_Get + * + * @description: + * Get a module's property value. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in section + * @properties. + * + * @inout: + * value :: + * A generic pointer to a variable or structure that gives the value + * of the property. The exact definition of `value` is dependent on + * the property; see section @properties. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name` isn't a valid module name, or `property_name` + * doesn't specify a valid property, or if `value` doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example gets property 'baz' (a range) in module 'foo'. + * + * ``` + * typedef range_ + * { + * FT_Int32 min; + * FT_Int32 max; + * + * } range; + * + * range baz; + * + * + * FT_Property_Get( library, "foo", "baz", &baz ); + * ``` + * + * It is not possible to retrieve properties of the FreeType Cache + * sub-system with FT_Property_Get; use @FTC_Property_Get instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Get( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + void* value ); + + + /************************************************************************** + * + * @function: + * FT_Set_Default_Properties + * + * @description: + * If compilation option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES` is + * set, this function reads the `FREETYPE_PROPERTIES` environment + * variable to control driver properties. See section @properties for + * more. + * + * If the compilation option is not set, this function does nothing. + * + * `FREETYPE_PROPERTIES` has the following syntax form (broken here into + * multiple lines for better readability). + * + * ``` + * + * ':' + * '=' + * + * ':' + * '=' + * ... + * ``` + * + * Example: + * + * ``` + * FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ + * cff:no-stem-darkening=0 + * ``` + * + * @inout: + * library :: + * A handle to a new library object. + * + * @since: + * 2.8 + */ + FT_EXPORT( void ) + FT_Set_Default_Properties( FT_Library library ); + + + /************************************************************************** + * + * @function: + * FT_Reference_Library + * + * @description: + * A counter gets initialized to~1 at the time an @FT_Library structure + * is created. This function increments the counter. @FT_Done_Library + * then only destroys a library if the counter is~1, otherwise it simply + * decrements the counter. + * + * This function helps in managing life-cycles of structures that + * reference @FT_Library objects. + * + * @input: + * library :: + * A handle to a target library object. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.4.2 + */ + FT_EXPORT( FT_Error ) + FT_Reference_Library( FT_Library library ); + + + /************************************************************************** + * + * @function: + * FT_New_Library + * + * @description: + * This function is used to create a new FreeType library instance from a + * given memory object. It is thus possible to use libraries with + * distinct memory allocators within the same program. Note, however, + * that the used @FT_Memory structure is expected to remain valid for the + * life of the @FT_Library object. + * + * Normally, you would call this function (followed by a call to + * @FT_Add_Default_Modules or a series of calls to @FT_Add_Module, and a + * call to @FT_Set_Default_Properties) instead of @FT_Init_FreeType to + * initialize the FreeType library. + * + * Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a library + * instance. + * + * @input: + * memory :: + * A handle to the original memory object. + * + * @output: + * alibrary :: + * A pointer to handle of a new library object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * See the discussion of reference counters in the description of + * @FT_Reference_Library. + */ + FT_EXPORT( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); + + + /************************************************************************** + * + * @function: + * FT_Done_Library + * + * @description: + * Discard a given library object. This closes all drivers and discards + * all resource objects. + * + * @input: + * library :: + * A handle to the target library. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * See the discussion of reference counters in the description of + * @FT_Reference_Library. + */ + FT_EXPORT( FT_Error ) + FT_Done_Library( FT_Library library ); + + + /************************************************************************** + * + * @functype: + * FT_DebugHook_Func + * + * @description: + * A drop-in replacement (or rather a wrapper) for the bytecode or + * charstring interpreter's main loop function. + * + * Its job is essentially + * + * - to activate debug mode to enforce single-stepping, + * + * - to call the main loop function to interpret the next opcode, and + * + * - to show the changed context to the user. + * + * An example for such a main loop function is `TT_RunIns` (declared in + * FreeType's internal header file `src/truetype/ttinterp.h`). + * + * Have a look at the source code of the `ttdebug` FreeType demo program + * for an example of a drop-in replacement. + * + * @inout: + * arg :: + * A typeless pointer, to be cast to the main loop function's data + * structure (which depends on the font module). For TrueType fonts + * it is bytecode interpreter's execution context, `TT_ExecContext`, + * which is declared in FreeType's internal header file `tttypes.h`. + */ + typedef FT_Error + (*FT_DebugHook_Func)( void* arg ); + + + /************************************************************************** + * + * @enum: + * FT_DEBUG_HOOK_XXX + * + * @description: + * A list of named debug hook indices. + * + * @values: + * FT_DEBUG_HOOK_TRUETYPE:: + * This hook index identifies the TrueType bytecode debugger. + */ +#define FT_DEBUG_HOOK_TRUETYPE 0 + + + /************************************************************************** + * + * @function: + * FT_Set_Debug_Hook + * + * @description: + * Set a debug hook function for debugging the interpreter of a font + * format. + * + * While this is a public API function, an application needs access to + * FreeType's internal header files to do something useful. + * + * Have a look at the source code of the `ttdebug` FreeType demo program + * for an example of its usage. + * + * @inout: + * library :: + * A handle to the library object. + * + * @input: + * hook_index :: + * The index of the debug hook. You should use defined enumeration + * macros like @FT_DEBUG_HOOK_TRUETYPE. + * + * debug_hook :: + * The function used to debug the interpreter. + * + * @note: + * Currently, four debug hook slots are available, but only one (for the + * TrueType interpreter) is defined. + */ + FT_EXPORT( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); + + + /************************************************************************** + * + * @function: + * FT_Add_Default_Modules + * + * @description: + * Add the set of default drivers to a given library object. This is + * only useful when you create a library object with @FT_New_Library + * (usually to plug a custom memory manager). + * + * @inout: + * library :: + * A handle to a new library object. + */ + FT_EXPORT( void ) + FT_Add_Default_Modules( FT_Library library ); + + + + /************************************************************************** + * + * @section: + * truetype_engine + * + * @title: + * The TrueType Engine + * + * @abstract: + * TrueType bytecode support. + * + * @description: + * This section contains a function used to query the level of TrueType + * bytecode support compiled in this version of the library. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_TrueTypeEngineType + * + * @description: + * A list of values describing which kind of TrueType bytecode engine is + * implemented in a given FT_Library instance. It is used by the + * @FT_Get_TrueType_Engine_Type function. + * + * @values: + * FT_TRUETYPE_ENGINE_TYPE_NONE :: + * The library doesn't implement any kind of bytecode interpreter. + * + * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: + * Deprecated and removed. + * + * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: + * The library implements a bytecode interpreter that covers the full + * instruction set of the TrueType virtual machine (this was governed + * by patents until May 2010, hence the name). + * + * @since: + * 2.2 + * + */ + typedef enum FT_TrueTypeEngineType_ + { + FT_TRUETYPE_ENGINE_TYPE_NONE = 0, + FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, + FT_TRUETYPE_ENGINE_TYPE_PATENTED + + } FT_TrueTypeEngineType; + + + /************************************************************************** + * + * @function: + * FT_Get_TrueType_Engine_Type + * + * @description: + * Return an @FT_TrueTypeEngineType value to indicate which level of the + * TrueType virtual machine a given library instance supports. + * + * @input: + * library :: + * A library instance. + * + * @return: + * A value indicating which level is supported. + * + * @since: + * 2.2 + * + */ + FT_EXPORT( FT_TrueTypeEngineType ) + FT_Get_TrueType_Engine_Type( FT_Library library ); + + /* */ + + +FT_END_HEADER + +#endif /* FTMODAPI_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmoderr.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmoderr.h new file mode 100644 index 0000000..88d2917 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftmoderr.h @@ -0,0 +1,204 @@ +/**************************************************************************** + * + * ftmoderr.h + * + * FreeType module error offsets (specification). + * + * Copyright (C) 2001-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file is used to define the FreeType module error codes. + * + * If the macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` in `ftoption.h` is + * set, the lower byte of an error value identifies the error code as + * usual. In addition, the higher byte identifies the module. For + * example, the error `FT_Err_Invalid_File_Format` has value 0x0003, the + * error `TT_Err_Invalid_File_Format` has value 0x1303, the error + * `T1_Err_Invalid_File_Format` has value 0x1403, etc. + * + * Note that `FT_Err_Ok`, `TT_Err_Ok`, etc. are always equal to zero, + * including the high byte. + * + * If `FT_CONFIG_OPTION_USE_MODULE_ERRORS` isn't set, the higher byte of an + * error value is set to zero. + * + * To hide the various `XXX_Err_` prefixes in the source code, FreeType + * provides some macros in `fttypes.h`. + * + * FT_ERR( err ) + * + * Add current error module prefix (as defined with the `FT_ERR_PREFIX` + * macro) to `err`. For example, in the BDF module the line + * + * ``` + * error = FT_ERR( Invalid_Outline ); + * ``` + * + * expands to + * + * ``` + * error = BDF_Err_Invalid_Outline; + * ``` + * + * For simplicity, you can always use `FT_Err_Ok` directly instead of + * `FT_ERR( Ok )`. + * + * FT_ERR_EQ( errcode, err ) + * FT_ERR_NEQ( errcode, err ) + * + * Compare error code `errcode` with the error `err` for equality and + * inequality, respectively. Example: + * + * ``` + * if ( FT_ERR_EQ( error, Invalid_Outline ) ) + * ... + * ``` + * + * Using this macro you don't have to think about error prefixes. Of + * course, if module errors are not active, the above example is the + * same as + * + * ``` + * if ( error == FT_Err_Invalid_Outline ) + * ... + * ``` + * + * FT_ERROR_BASE( errcode ) + * FT_ERROR_MODULE( errcode ) + * + * Get base error and module error code, respectively. + * + * It can also be used to create a module error message table easily with + * something like + * + * ``` + * #undef FTMODERR_H_ + * #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, + * #define FT_MODERR_START_LIST { + * #define FT_MODERR_END_LIST { 0, 0 } }; + * + * const struct + * { + * int mod_err_offset; + * const char* mod_err_msg + * } ft_mod_errors[] = + * + * #include + * ``` + * + */ + + +#ifndef FTMODERR_H_ +#define FTMODERR_H_ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#ifndef FT_MODERRDEF + +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, +#else +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, +#endif + +#define FT_MODERR_START_LIST enum { +#define FT_MODERR_END_LIST FT_Mod_Err_Max }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_MODERRDEF */ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST MODULE ERROR BASES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_MODERR_START_LIST + FT_MODERR_START_LIST +#endif + + + FT_MODERRDEF( Base, 0x000, "base module" ) + FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) + FT_MODERRDEF( BDF, 0x200, "BDF module" ) + FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" ) + FT_MODERRDEF( Cache, 0x400, "cache module" ) + FT_MODERRDEF( CFF, 0x500, "CFF module" ) + FT_MODERRDEF( CID, 0x600, "CID module" ) + FT_MODERRDEF( Gzip, 0x700, "Gzip module" ) + FT_MODERRDEF( LZW, 0x800, "LZW module" ) + FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" ) + FT_MODERRDEF( PCF, 0xA00, "PCF module" ) + FT_MODERRDEF( PFR, 0xB00, "PFR module" ) + FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" ) + FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" ) + FT_MODERRDEF( PSnames, 0xE00, "PS names module" ) + FT_MODERRDEF( Raster, 0xF00, "raster module" ) + FT_MODERRDEF( SFNT, 0x1000, "SFNT module" ) + FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" ) + FT_MODERRDEF( TrueType, 0x1200, "TrueType module" ) + FT_MODERRDEF( Type1, 0x1300, "Type 1 module" ) + FT_MODERRDEF( Type42, 0x1400, "Type 42 module" ) + FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) + FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) + FT_MODERRDEF( Sdf, 0x1700, "Signed distance field raster module" ) + + +#ifdef FT_MODERR_END_LIST + FT_MODERR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_MODERR_START_LIST +#undef FT_MODERR_END_LIST +#undef FT_MODERRDEF +#undef FT_NEED_EXTERN_C + + +#endif /* FTMODERR_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftotval.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftotval.h new file mode 100644 index 0000000..172fcf2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftotval.h @@ -0,0 +1,206 @@ +/**************************************************************************** + * + * ftotval.h + * + * FreeType API for validating OpenType tables (specification). + * + * Copyright (C) 2004-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +/**************************************************************************** + * + * + * Warning: This module might be moved to a different library in the + * future to avoid a tight dependency between FreeType and the + * OpenType specification. + * + * + */ + + +#ifndef FTOTVAL_H_ +#define FTOTVAL_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * ot_validation + * + * @title: + * OpenType Validation + * + * @abstract: + * An API to validate OpenType tables. + * + * @description: + * This section contains the declaration of functions to validate some + * OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + * @order: + * FT_OpenType_Validate + * FT_OpenType_Free + * + * FT_VALIDATE_OTXXX + * + */ + + + /************************************************************************** + * + * @enum: + * FT_VALIDATE_OTXXX + * + * @description: + * A list of bit-field constants used with @FT_OpenType_Validate to + * indicate which OpenType tables should be validated. + * + * @values: + * FT_VALIDATE_BASE :: + * Validate BASE table. + * + * FT_VALIDATE_GDEF :: + * Validate GDEF table. + * + * FT_VALIDATE_GPOS :: + * Validate GPOS table. + * + * FT_VALIDATE_GSUB :: + * Validate GSUB table. + * + * FT_VALIDATE_JSTF :: + * Validate JSTF table. + * + * FT_VALIDATE_MATH :: + * Validate MATH table. + * + * FT_VALIDATE_OT :: + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + */ +#define FT_VALIDATE_BASE 0x0100 +#define FT_VALIDATE_GDEF 0x0200 +#define FT_VALIDATE_GPOS 0x0400 +#define FT_VALIDATE_GSUB 0x0800 +#define FT_VALIDATE_JSTF 0x1000 +#define FT_VALIDATE_MATH 0x2000 + +#define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH ) + + + /************************************************************************** + * + * @function: + * FT_OpenType_Validate + * + * @description: + * Validate various OpenType tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_OTXXX for possible values. + * + * @output: + * BASE_table :: + * A pointer to the BASE table. + * + * GDEF_table :: + * A pointer to the GDEF table. + * + * GPOS_table :: + * A pointer to the GPOS table. + * + * GSUB_table :: + * A pointer to the GSUB table. + * + * JSTF_table :: + * A pointer to the JSTF table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with OpenType fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the five tables with + * @FT_OpenType_Free. A `NULL` value indicates that the table either + * doesn't exist in the font, or the application hasn't asked for + * validation. + */ + FT_EXPORT( FT_Error ) + FT_OpenType_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *BASE_table, + FT_Bytes *GDEF_table, + FT_Bytes *GPOS_table, + FT_Bytes *GSUB_table, + FT_Bytes *JSTF_table ); + + + /************************************************************************** + * + * @function: + * FT_OpenType_Free + * + * @description: + * Free the buffer allocated by OpenType validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_OpenType_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_OpenType_Validate only. + */ + FT_EXPORT( void ) + FT_OpenType_Free( FT_Face face, + FT_Bytes table ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTOTVAL_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftoutln.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftoutln.h new file mode 100644 index 0000000..46ebf93 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftoutln.h @@ -0,0 +1,588 @@ +/**************************************************************************** + * + * ftoutln.h + * + * Support for the FT_Outline type used to store glyph shapes of + * most scalable font formats (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTOUTLN_H_ +#define FTOUTLN_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * outline_processing + * + * @title: + * Outline Processing + * + * @abstract: + * Functions to create, transform, and render vectorial glyph images. + * + * @description: + * This section contains routines used to create and destroy scalable + * glyph images known as 'outlines'. These can also be measured, + * transformed, and converted into bitmaps and pixmaps. + * + * @order: + * FT_Outline + * FT_Outline_New + * FT_Outline_Done + * FT_Outline_Copy + * FT_Outline_Translate + * FT_Outline_Transform + * FT_Outline_Embolden + * FT_Outline_EmboldenXY + * FT_Outline_Reverse + * FT_Outline_Check + * + * FT_Outline_Get_CBox + * FT_Outline_Get_BBox + * + * FT_Outline_Get_Bitmap + * FT_Outline_Render + * FT_Outline_Decompose + * FT_Outline_Funcs + * FT_Outline_MoveToFunc + * FT_Outline_LineToFunc + * FT_Outline_ConicToFunc + * FT_Outline_CubicToFunc + * + * FT_Orientation + * FT_Outline_Get_Orientation + * + * FT_OUTLINE_XXX + * + */ + + + /************************************************************************** + * + * @function: + * FT_Outline_Decompose + * + * @description: + * Walk over an outline's structure to decompose it into individual + * segments and Bezier arcs. This function also emits 'move to' + * operations to indicate the start of new contours in the outline. + * + * @input: + * outline :: + * A pointer to the source target. + * + * func_interface :: + * A table of 'emitters', i.e., function pointers called during + * decomposition to indicate path operations. + * + * @inout: + * user :: + * A typeless pointer that is passed to each emitter during the + * decomposition. It can be used to store the state during the + * decomposition. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Degenerate contours, segments, and Bezier arcs may be reported. In + * most cases, it is best to filter these out before using the outline + * for stroking or other path modification purposes (which may cause + * degenerate segments to become non-degenrate and visible, like when + * stroke caps are used or the path is otherwise outset). Some glyph + * outlines may contain deliberate degenerate single points for mark + * attachement. + * + * Similarly, the function returns success for an empty outline also + * (doing nothing, this is, not calling any emitter); if necessary, you + * should filter this out, too. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ); + + + /************************************************************************** + * + * @function: + * FT_Outline_New + * + * @description: + * Create a new outline of a given size. + * + * @input: + * library :: + * A handle to the library object from where the outline is allocated. + * Note however that the new outline will **not** necessarily be + * **freed**, when destroying the library, by @FT_Done_FreeType. + * + * numPoints :: + * The maximum number of points within the outline. Must be smaller + * than or equal to 0xFFFF (65535). + * + * numContours :: + * The maximum number of contours within the outline. This value must + * be in the range 0 to `numPoints`. + * + * @output: + * anoutline :: + * A handle to the new outline. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The reason why this function takes a `library` parameter is simply to + * use the library's memory allocator. + */ + FT_EXPORT( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Done + * + * @description: + * Destroy an outline created with @FT_Outline_New. + * + * @input: + * library :: + * A handle of the library object used to allocate the outline. + * + * outline :: + * A pointer to the outline object to be discarded. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the outline's 'owner' field is not set, only the outline descriptor + * will be released. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Check + * + * @description: + * Check the contents of an outline descriptor. + * + * @input: + * outline :: + * A handle to a source outline. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * An empty outline, or an outline with a single point only is also + * valid. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Check( FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_CBox + * + * @description: + * Return an outline's 'control box'. The control box encloses all the + * outline's points, including Bezier control points. Though it + * coincides with the exact bounding box for most glyphs, it can be + * slightly larger in some situations (like when rotating an outline that + * contains Bezier outside arcs). + * + * Computing the control box is very fast, while getting the bounding box + * can take much more time as it needs to walk over all segments and arcs + * in the outline. To get the latter, you can use the 'ftbbox' + * component, which is dedicated to this single task. + * + * @input: + * outline :: + * A pointer to the source outline descriptor. + * + * @output: + * acbox :: + * The outline's control box. + * + * @note: + * See @FT_Glyph_Get_CBox for a discussion of tricky fonts. + */ + FT_EXPORT( void ) + FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Translate + * + * @description: + * Apply a simple translation to the points of an outline. + * + * @inout: + * outline :: + * A pointer to the target outline descriptor. + * + * @input: + * xOffset :: + * The horizontal offset. + * + * yOffset :: + * The vertical offset. + */ + FT_EXPORT( void ) + FT_Outline_Translate( const FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Copy + * + * @description: + * Copy an outline into another one. Both objects must have the same + * sizes (number of points & number of contours) when this function is + * called. + * + * @input: + * source :: + * A handle to the source outline. + * + * @output: + * target :: + * A handle to the target outline. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Copy( const FT_Outline* source, + FT_Outline *target ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Transform + * + * @description: + * Apply a simple 2x2 matrix to all of an outline's points. Useful for + * applying rotations, slanting, flipping, etc. + * + * @inout: + * outline :: + * A pointer to the target outline descriptor. + * + * @input: + * matrix :: + * A pointer to the transformation matrix. + * + * @note: + * You can use @FT_Outline_Translate if you need to translate the + * outline's points. + */ + FT_EXPORT( void ) + FT_Outline_Transform( const FT_Outline* outline, + const FT_Matrix* matrix ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Embolden + * + * @description: + * Embolden an outline. The new outline will be at most 4~times + * `strength` pixels wider and higher. You may think of the left and + * bottom borders as unchanged. + * + * Negative `strength` values to reduce the outline thickness are + * possible also. + * + * @inout: + * outline :: + * A handle to the target outline. + * + * @input: + * strength :: + * How strong the glyph is emboldened. Expressed in 26.6 pixel format. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The used algorithm to increase or decrease the thickness of the glyph + * doesn't change the number of points; this means that certain + * situations like acute angles or intersections are sometimes handled + * incorrectly. + * + * If you need 'better' metrics values you should call + * @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. + * + * To get meaningful results, font scaling values must be set with + * functions like @FT_Set_Char_Size before calling FT_Render_Glyph. + * + * @example: + * ``` + * FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); + * + * if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) + * FT_Outline_Embolden( &face->glyph->outline, strength ); + * ``` + * + */ + FT_EXPORT( FT_Error ) + FT_Outline_Embolden( FT_Outline* outline, + FT_Pos strength ); + + + /************************************************************************** + * + * @function: + * FT_Outline_EmboldenXY + * + * @description: + * Embolden an outline. The new outline will be `xstrength` pixels wider + * and `ystrength` pixels higher. Otherwise, it is similar to + * @FT_Outline_Embolden, which uses the same strength in both directions. + * + * @since: + * 2.4.10 + */ + FT_EXPORT( FT_Error ) + FT_Outline_EmboldenXY( FT_Outline* outline, + FT_Pos xstrength, + FT_Pos ystrength ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Reverse + * + * @description: + * Reverse the drawing direction of an outline. This is used to ensure + * consistent fill conventions for mirrored glyphs. + * + * @inout: + * outline :: + * A pointer to the target outline descriptor. + * + * @note: + * This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in the + * outline's `flags` field. + * + * It shouldn't be used by a normal client application, unless it knows + * what it is doing. + */ + FT_EXPORT( void ) + FT_Outline_Reverse( FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Bitmap + * + * @description: + * Render an outline within a bitmap. The outline's image is simply + * OR-ed to the target bitmap. + * + * @input: + * library :: + * A handle to a FreeType library object. + * + * outline :: + * A pointer to the source outline descriptor. + * + * @inout: + * abitmap :: + * A pointer to the target bitmap descriptor. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function does **not create** the bitmap, it only renders an + * outline image within the one you pass to it! Consequently, the + * various fields in `abitmap` should be set accordingly. + * + * It will use the raster corresponding to the default glyph format. + * + * The value of the `num_grays` field in `abitmap` is ignored. If you + * select the gray-level rasterizer, and you want less than 256 gray + * levels, you have to use @FT_Outline_Render directly. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + const FT_Bitmap *abitmap ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Render + * + * @description: + * Render an outline within a bitmap using the current scan-convert. + * + * @input: + * library :: + * A handle to a FreeType library object. + * + * outline :: + * A pointer to the source outline descriptor. + * + * @inout: + * params :: + * A pointer to an @FT_Raster_Params structure used to describe the + * rendering operation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This advanced function uses @FT_Raster_Params as an argument. + * The field `params.source` will be set to `outline` before the scan + * converter is called, which means that the value you give to it is + * actually ignored. Either `params.target` must point to preallocated + * bitmap, or @FT_RASTER_FLAG_DIRECT must be set in `params.flags` + * allowing FreeType rasterizer to be used for direct composition, + * translucency, etc. See @FT_Raster_Params for more details. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); + + + /************************************************************************** + * + * @enum: + * FT_Orientation + * + * @description: + * A list of values used to describe an outline's contour orientation. + * + * The TrueType and PostScript specifications use different conventions + * to determine whether outline contours should be filled or unfilled. + * + * @values: + * FT_ORIENTATION_TRUETYPE :: + * According to the TrueType specification, clockwise contours must be + * filled, and counter-clockwise ones must be unfilled. + * + * FT_ORIENTATION_POSTSCRIPT :: + * According to the PostScript specification, counter-clockwise + * contours must be filled, and clockwise ones must be unfilled. + * + * FT_ORIENTATION_FILL_RIGHT :: + * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to + * remember that in TrueType, everything that is to the right of the + * drawing direction of a contour must be filled. + * + * FT_ORIENTATION_FILL_LEFT :: + * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to + * remember that in PostScript, everything that is to the left of the + * drawing direction of a contour must be filled. + * + * FT_ORIENTATION_NONE :: + * The orientation cannot be determined. That is, different parts of + * the glyph have different orientation. + * + */ + typedef enum FT_Orientation_ + { + FT_ORIENTATION_TRUETYPE = 0, + FT_ORIENTATION_POSTSCRIPT = 1, + FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, + FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, + FT_ORIENTATION_NONE + + } FT_Orientation; + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Orientation + * + * @description: + * This function analyzes a glyph outline and tries to compute its fill + * orientation (see @FT_Orientation). This is done by integrating the + * total area covered by the outline. The positive integral corresponds + * to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT is + * returned. The negative integral corresponds to the counter-clockwise + * orientation and @FT_ORIENTATION_TRUETYPE is returned. + * + * Note that this will return @FT_ORIENTATION_TRUETYPE for empty + * outlines. + * + * @input: + * outline :: + * A handle to the source outline. + * + * @return: + * The orientation. + * + */ + FT_EXPORT( FT_Orientation ) + FT_Outline_Get_Orientation( FT_Outline* outline ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTOUTLN_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftparams.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftparams.h new file mode 100644 index 0000000..72080f3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftparams.h @@ -0,0 +1,218 @@ +/**************************************************************************** + * + * ftparams.h + * + * FreeType API for possible FT_Parameter tags (specification only). + * + * Copyright (C) 2017-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTPARAMS_H_ +#define FTPARAMS_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * parameter_tags + * + * @title: + * Parameter Tags + * + * @abstract: + * Macros for driver property and font loading parameter tags. + * + * @description: + * This section contains macros for the @FT_Parameter structure that are + * used with various functions to activate some special functionality or + * different behaviour of various components of FreeType. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY + * + * @description: + * A tag for @FT_Parameter to make @FT_Open_Face ignore typographic + * family names in the 'name' table (introduced in OpenType version 1.4). + * Use this for backward compatibility with legacy systems that have a + * four-faces-per-family restriction. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY \ + FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) + + + /* this constant is deprecated */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY \ + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY + * + * @description: + * A tag for @FT_Parameter to make @FT_Open_Face ignore typographic + * subfamily names in the 'name' table (introduced in OpenType version + * 1.4). Use this for backward compatibility with legacy systems that + * have a four-faces-per-family restriction. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY \ + FT_MAKE_TAG( 'i', 'g', 'p', 's' ) + + + /* this constant is deprecated */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY \ + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_INCREMENTAL + * + * @description: + * An @FT_Parameter tag to be used with @FT_Open_Face to indicate + * incremental glyph loading. + * + */ +#define FT_PARAM_TAG_INCREMENTAL \ + FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_IGNORE_SBIX + * + * @description: + * A tag for @FT_Parameter to make @FT_Open_Face ignore an 'sbix' table + * while loading a font. Use this if @FT_FACE_FLAG_SBIX is set and you + * want to access the outline glyphs in the font. + * + */ +#define FT_PARAM_TAG_IGNORE_SBIX \ + FT_MAKE_TAG( 'i', 's', 'b', 'x' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_LCD_FILTER_WEIGHTS + * + * @description: + * An @FT_Parameter tag to be used with @FT_Face_Properties. The + * corresponding argument specifies the five LCD filter weights for a + * given face (if using @FT_LOAD_TARGET_LCD, for example), overriding the + * global default values or the values set up with + * @FT_Library_SetLcdFilterWeights. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_LCD_FILTER_WEIGHTS \ + FT_MAKE_TAG( 'l', 'c', 'd', 'f' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_RANDOM_SEED + * + * @description: + * An @FT_Parameter tag to be used with @FT_Face_Properties. The + * corresponding 32bit signed integer argument overrides the font + * driver's random seed value with a face-specific one; see @random-seed. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_RANDOM_SEED \ + FT_MAKE_TAG( 's', 'e', 'e', 'd' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_STEM_DARKENING + * + * @description: + * An @FT_Parameter tag to be used with @FT_Face_Properties. The + * corresponding Boolean argument specifies whether to apply stem + * darkening, overriding the global default values or the values set up + * with @FT_Property_Set (see @no-stem-darkening). + * + * This is a passive setting that only takes effect if the font driver or + * autohinter honors it, which the CFF, Type~1, and CID drivers always + * do, but the autohinter only in 'light' hinting mode (as of version + * 2.9). + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_STEM_DARKENING \ + FT_MAKE_TAG( 'd', 'a', 'r', 'k' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * Deprecated, no effect. + * + * Previously: A constant used as the tag of an @FT_Parameter structure + * to indicate that unpatented methods only should be used by the + * TrueType bytecode interpreter for a typeface opened by @FT_Open_Face. + * + */ +#define FT_PARAM_TAG_UNPATENTED_HINTING \ + FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) + + + /* */ + + +FT_END_HEADER + + +#endif /* FTPARAMS_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftpfr.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftpfr.h new file mode 100644 index 0000000..428e327 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftpfr.h @@ -0,0 +1,179 @@ +/**************************************************************************** + * + * ftpfr.h + * + * FreeType API for accessing PFR-specific data (specification only). + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTPFR_H_ +#define FTPFR_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * pfr_fonts + * + * @title: + * PFR Fonts + * + * @abstract: + * PFR/TrueDoc-specific API. + * + * @description: + * This section contains the declaration of PFR-specific functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Get_PFR_Metrics + * + * @description: + * Return the outline and metrics resolutions of a given PFR face. + * + * @input: + * face :: + * Handle to the input face. It can be a non-PFR face. + * + * @output: + * aoutline_resolution :: + * Outline resolution. This is equivalent to `face->units_per_EM` for + * non-PFR fonts. Optional (parameter can be `NULL`). + * + * ametrics_resolution :: + * Metrics resolution. This is equivalent to `outline_resolution` for + * non-PFR fonts. Optional (parameter can be `NULL`). + * + * ametrics_x_scale :: + * A 16.16 fixed-point number used to scale distance expressed in + * metrics units to device subpixels. This is equivalent to + * `face->size->x_scale`, but for metrics only. Optional (parameter + * can be `NULL`). + * + * ametrics_y_scale :: + * Same as `ametrics_x_scale` but for the vertical direction. + * optional (parameter can be `NULL`). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the input face is not a PFR, this function will return an error. + * However, in all cases, it will return valid values. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Metrics( FT_Face face, + FT_UInt *aoutline_resolution, + FT_UInt *ametrics_resolution, + FT_Fixed *ametrics_x_scale, + FT_Fixed *ametrics_y_scale ); + + + /************************************************************************** + * + * @function: + * FT_Get_PFR_Kerning + * + * @description: + * Return the kerning pair corresponding to two glyphs in a PFR face. + * The distance is expressed in metrics units, unlike the result of + * @FT_Get_Kerning. + * + * @input: + * face :: + * A handle to the input face. + * + * left :: + * Index of the left glyph. + * + * right :: + * Index of the right glyph. + * + * @output: + * avector :: + * A kerning vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function always return distances in original PFR metrics units. + * This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED mode, + * which always returns distances converted to outline units. + * + * You can use the value of the `x_scale` and `y_scale` parameters + * returned by @FT_Get_PFR_Metrics to scale these to device subpixels. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Kerning( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + + /************************************************************************** + * + * @function: + * FT_Get_PFR_Advance + * + * @description: + * Return a given glyph advance, expressed in original metrics units, + * from a PFR font. + * + * @input: + * face :: + * A handle to the input face. + * + * gindex :: + * The glyph index. + * + * @output: + * aadvance :: + * The glyph advance in metrics units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You can use the `x_scale` or `y_scale` results of @FT_Get_PFR_Metrics + * to convert the advance to device subpixels (i.e., 1/64th of pixels). + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Advance( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + /* */ + + +FT_END_HEADER + +#endif /* FTPFR_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftrender.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftrender.h new file mode 100644 index 0000000..0fab3f8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftrender.h @@ -0,0 +1,244 @@ +/**************************************************************************** + * + * ftrender.h + * + * FreeType renderer modules public interface (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTRENDER_H_ +#define FTRENDER_H_ + + +#include +#include + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * module_management + * + */ + + + /* create a new glyph object */ + typedef FT_Error + (*FT_Glyph_InitFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + + /* destroys a given glyph object */ + typedef void + (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); + + typedef void + (*FT_Glyph_TransformFunc)( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + typedef void + (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, + FT_BBox* abbox ); + + typedef FT_Error + (*FT_Glyph_CopyFunc)( FT_Glyph source, + FT_Glyph target ); + + typedef FT_Error + (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + +/* deprecated */ +#define FT_Glyph_Init_Func FT_Glyph_InitFunc +#define FT_Glyph_Done_Func FT_Glyph_DoneFunc +#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc +#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc +#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc +#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc + + + struct FT_Glyph_Class_ + { + FT_Long glyph_size; + FT_Glyph_Format glyph_format; + + FT_Glyph_InitFunc glyph_init; + FT_Glyph_DoneFunc glyph_done; + FT_Glyph_CopyFunc glyph_copy; + FT_Glyph_TransformFunc glyph_transform; + FT_Glyph_GetBBoxFunc glyph_bbox; + FT_Glyph_PrepareFunc glyph_prepare; + }; + + + typedef FT_Error + (*FT_Renderer_RenderFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_Render_Mode mode, + const FT_Vector* origin ); + + typedef FT_Error + (*FT_Renderer_TransformFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + + typedef void + (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); + + + typedef FT_Error + (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); + +/* deprecated identifiers */ +#define FTRenderer_render FT_Renderer_RenderFunc +#define FTRenderer_transform FT_Renderer_TransformFunc +#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc +#define FTRenderer_setMode FT_Renderer_SetModeFunc + + + /************************************************************************** + * + * @struct: + * FT_Renderer_Class + * + * @description: + * The renderer module class descriptor. + * + * @fields: + * root :: + * The root @FT_Module_Class fields. + * + * glyph_format :: + * The glyph image format this renderer handles. + * + * render_glyph :: + * A method used to render the image that is in a given glyph slot into + * a bitmap. + * + * transform_glyph :: + * A method used to transform the image that is in a given glyph slot. + * + * get_glyph_cbox :: + * A method used to access the glyph's cbox. + * + * set_mode :: + * A method used to pass additional parameters. + * + * raster_class :: + * For @FT_GLYPH_FORMAT_OUTLINE renderers only. This is a pointer to + * its raster's class. + */ + typedef struct FT_Renderer_Class_ + { + FT_Module_Class root; + + FT_Glyph_Format glyph_format; + + FT_Renderer_RenderFunc render_glyph; + FT_Renderer_TransformFunc transform_glyph; + FT_Renderer_GetCBoxFunc get_glyph_cbox; + FT_Renderer_SetModeFunc set_mode; + + FT_Raster_Funcs* raster_class; + + } FT_Renderer_Class; + + + /************************************************************************** + * + * @function: + * FT_Get_Renderer + * + * @description: + * Retrieve the current renderer for a given glyph format. + * + * @input: + * library :: + * A handle to the library object. + * + * format :: + * The glyph format. + * + * @return: + * A renderer handle. 0~if none found. + * + * @note: + * An error will be returned if a module already exists by that name, or + * if the module requires a version of FreeType that is too great. + * + * To add a new renderer, simply use @FT_Add_Module. To retrieve a + * renderer by its name, use @FT_Get_Module. + */ + FT_EXPORT( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + + /************************************************************************** + * + * @function: + * FT_Set_Renderer + * + * @description: + * Set the current renderer to use, and set additional mode. + * + * @inout: + * library :: + * A handle to the library object. + * + * @input: + * renderer :: + * A handle to the renderer object. + * + * num_params :: + * The number of additional parameters. + * + * parameters :: + * Additional parameters. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * In case of success, the renderer will be used to convert glyph images + * in the renderer's known format into bitmaps. + * + * This doesn't change the current renderer for other formats. + * + * Currently, no FreeType renderer module uses `parameters`; you should + * thus always pass `NULL` as the value. + */ + FT_EXPORT( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + /* */ + + +FT_END_HEADER + +#endif /* FTRENDER_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsizes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsizes.h new file mode 100644 index 0000000..e30938d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsizes.h @@ -0,0 +1,159 @@ +/**************************************************************************** + * + * ftsizes.h + * + * FreeType size objects management (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * Typical application would normally not need to use these functions. + * However, they have been placed in a public API for the rare cases where + * they are needed. + * + */ + + +#ifndef FTSIZES_H_ +#define FTSIZES_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * sizes_management + * + * @title: + * Size Management + * + * @abstract: + * Managing multiple sizes per face. + * + * @description: + * When creating a new face object (e.g., with @FT_New_Face), an @FT_Size + * object is automatically created and used to store all pixel-size + * dependent information, available in the `face->size` field. + * + * It is however possible to create more sizes for a given face, mostly + * in order to manage several character pixel sizes of the same font + * family and style. See @FT_New_Size and @FT_Done_Size. + * + * Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only modify the + * contents of the current 'active' size; you thus need to use + * @FT_Activate_Size to change it. + * + * 99% of applications won't need the functions provided here, especially + * if they use the caching sub-system, so be cautious when using these. + * + */ + + + /************************************************************************** + * + * @function: + * FT_New_Size + * + * @description: + * Create a new size object from a given face object. + * + * @input: + * face :: + * A handle to a parent face object. + * + * @output: + * asize :: + * A handle to a new size object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You need to call @FT_Activate_Size in order to select the new size for + * upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, + * @FT_Load_Glyph, @FT_Load_Char, etc. + */ + FT_EXPORT( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size* size ); + + + /************************************************************************** + * + * @function: + * FT_Done_Size + * + * @description: + * Discard a given size object. Note that @FT_Done_Face automatically + * discards all size objects allocated with @FT_New_Size. + * + * @input: + * size :: + * A handle to a target size object. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Done_Size( FT_Size size ); + + + /************************************************************************** + * + * @function: + * FT_Activate_Size + * + * @description: + * Even though it is possible to create several size objects for a given + * face (see @FT_New_Size for details), functions like @FT_Load_Glyph or + * @FT_Load_Char only use the one that has been activated last to + * determine the 'current character pixel size'. + * + * This function can be used to 'activate' a previously created size + * object. + * + * @input: + * size :: + * A handle to a target size object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `face` is the size's parent face object, this function changes the + * value of `face->size` to the input size handle. + */ + FT_EXPORT( FT_Error ) + FT_Activate_Size( FT_Size size ); + + /* */ + + +FT_END_HEADER + +#endif /* FTSIZES_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsnames.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsnames.h new file mode 100644 index 0000000..384096a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsnames.h @@ -0,0 +1,272 @@ +/**************************************************************************** + * + * ftsnames.h + * + * Simple interface to access SFNT 'name' tables (which are used + * to hold font names, copyright info, notices, etc.) (specification). + * + * This is _not_ used to retrieve glyph names! + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTSNAMES_H_ +#define FTSNAMES_H_ + + +#include +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * sfnt_names + * + * @title: + * SFNT Names + * + * @abstract: + * Access the names embedded in TrueType and OpenType files. + * + * @description: + * The TrueType and OpenType specifications allow the inclusion of a + * special names table ('name') in font files. This table contains + * textual (and internationalized) information regarding the font, like + * family name, copyright, version, etc. + * + * The definitions below are used to access them if available. + * + * Note that this has nothing to do with glyph names! + * + */ + + + /************************************************************************** + * + * @struct: + * FT_SfntName + * + * @description: + * A structure used to model an SFNT 'name' table entry. + * + * @fields: + * platform_id :: + * The platform ID for `string`. See @TT_PLATFORM_XXX for possible + * values. + * + * encoding_id :: + * The encoding ID for `string`. See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, + * @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX for possible + * values. + * + * language_id :: + * The language ID for `string`. See @TT_MAC_LANGID_XXX and + * @TT_MS_LANGID_XXX for possible values. + * + * Registered OpenType values for `language_id` are always smaller than + * 0x8000; values equal or larger than 0x8000 usually indicate a + * language tag string (introduced in OpenType version 1.6). Use + * function @FT_Get_Sfnt_LangTag with `language_id` as its argument to + * retrieve the associated language tag. + * + * name_id :: + * An identifier for `string`. See @TT_NAME_ID_XXX for possible + * values. + * + * string :: + * The 'name' string. Note that its format differs depending on the + * (platform,encoding) pair, being either a string of bytes (without a + * terminating `NULL` byte) or containing UTF-16BE entities. + * + * string_len :: + * The length of `string` in bytes. + * + * @note: + * Please refer to the TrueType or OpenType specification for more + * details. + */ + typedef struct FT_SfntName_ + { + FT_UShort platform_id; + FT_UShort encoding_id; + FT_UShort language_id; + FT_UShort name_id; + + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntName; + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_Name_Count + * + * @description: + * Retrieve the number of name strings in the SFNT 'name' table. + * + * @input: + * face :: + * A handle to the source face. + * + * @return: + * The number of strings in the 'name' table. + * + * @note: + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`. + */ + FT_EXPORT( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_Name + * + * @description: + * Retrieve a string of the SFNT 'name' table for a given index. + * + * @input: + * face :: + * A handle to the source face. + * + * idx :: + * The index of the 'name' string. + * + * @output: + * aname :: + * The indexed @FT_SfntName structure. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The `string` array returned in the `aname` structure is not + * null-terminated. Note that you don't have to deallocate `string` by + * yourself; FreeType takes care of it if you call @FT_Done_Face. + * + * Use @FT_Get_Sfnt_Name_Count to get the total number of available + * 'name' table entries, then do a loop until you get the right platform, + * encoding, and name ID. + * + * 'name' table format~1 entries can use language tags also, see + * @FT_Get_Sfnt_LangTag. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`. + */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt idx, + FT_SfntName *aname ); + + + /************************************************************************** + * + * @struct: + * FT_SfntLangTag + * + * @description: + * A structure to model a language tag entry from an SFNT 'name' table. + * + * @fields: + * string :: + * The language tag string, encoded in UTF-16BE (without trailing + * `NULL` bytes). + * + * string_len :: + * The length of `string` in **bytes**. + * + * @note: + * Please refer to the TrueType or OpenType specification for more + * details. + * + * @since: + * 2.8 + */ + typedef struct FT_SfntLangTag_ + { + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntLangTag; + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_LangTag + * + * @description: + * Retrieve the language tag associated with a language ID of an SFNT + * 'name' table entry. + * + * @input: + * face :: + * A handle to the source face. + * + * langID :: + * The language ID, as returned by @FT_Get_Sfnt_Name. This is always a + * value larger than 0x8000. + * + * @output: + * alangTag :: + * The language tag associated with the 'name' table entry's language + * ID. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The `string` array returned in the `alangTag` structure is not + * null-terminated. Note that you don't have to deallocate `string` by + * yourself; FreeType takes care of it if you call @FT_Done_Face. + * + * Only 'name' table format~1 supports language tags. For format~0 + * tables, this function always returns FT_Err_Invalid_Table. For + * invalid format~1 language ID values, FT_Err_Invalid_Argument is + * returned. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`. + * + * @since: + * 2.8 + */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_LangTag( FT_Face face, + FT_UInt langID, + FT_SfntLangTag *alangTag ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTSNAMES_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftstroke.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftstroke.h new file mode 100644 index 0000000..12c006d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftstroke.h @@ -0,0 +1,773 @@ +/**************************************************************************** + * + * ftstroke.h + * + * FreeType path stroker (specification). + * + * Copyright (C) 2002-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTSTROKE_H_ +#define FTSTROKE_H_ + +#include +#include + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * glyph_stroker + * + * @title: + * Glyph Stroker + * + * @abstract: + * Generating bordered and stroked glyphs. + * + * @description: + * This component generates stroked outlines of a given vectorial glyph. + * It also allows you to retrieve the 'outside' and/or the 'inside' + * borders of the stroke. + * + * This can be useful to generate 'bordered' glyph, i.e., glyphs + * displayed with a colored (and anti-aliased) border around their + * shape. + * + * @order: + * FT_Stroker + * + * FT_Stroker_LineJoin + * FT_Stroker_LineCap + * FT_StrokerBorder + * + * FT_Outline_GetInsideBorder + * FT_Outline_GetOutsideBorder + * + * FT_Glyph_Stroke + * FT_Glyph_StrokeBorder + * + * FT_Stroker_New + * FT_Stroker_Set + * FT_Stroker_Rewind + * FT_Stroker_ParseOutline + * FT_Stroker_Done + * + * FT_Stroker_BeginSubPath + * FT_Stroker_EndSubPath + * + * FT_Stroker_LineTo + * FT_Stroker_ConicTo + * FT_Stroker_CubicTo + * + * FT_Stroker_GetBorderCounts + * FT_Stroker_ExportBorder + * FT_Stroker_GetCounts + * FT_Stroker_Export + * + */ + + + /************************************************************************** + * + * @type: + * FT_Stroker + * + * @description: + * Opaque handle to a path stroker object. + */ + typedef struct FT_StrokerRec_* FT_Stroker; + + + /************************************************************************** + * + * @enum: + * FT_Stroker_LineJoin + * + * @description: + * These values determine how two joining lines are rendered in a + * stroker. + * + * @values: + * FT_STROKER_LINEJOIN_ROUND :: + * Used to render rounded line joins. Circular arcs are used to join + * two lines smoothly. + * + * FT_STROKER_LINEJOIN_BEVEL :: + * Used to render beveled line joins. The outer corner of the joined + * lines is filled by enclosing the triangular region of the corner + * with a straight line between the outer corners of each stroke. + * + * FT_STROKER_LINEJOIN_MITER_FIXED :: + * Used to render mitered line joins, with fixed bevels if the miter + * limit is exceeded. The outer edges of the strokes for the two + * segments are extended until they meet at an angle. A bevel join + * (see above) is used if the segments meet at too sharp an angle and + * the outer edges meet beyond a distance corresponding to the meter + * limit. This prevents long spikes being created. + * `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line join as + * used in PostScript and PDF. + * + * FT_STROKER_LINEJOIN_MITER_VARIABLE :: + * FT_STROKER_LINEJOIN_MITER :: + * Used to render mitered line joins, with variable bevels if the miter + * limit is exceeded. The intersection of the strokes is clipped + * perpendicularly to the bisector, at a distance corresponding to + * the miter limit. This prevents long spikes being created. + * `FT_STROKER_LINEJOIN_MITER_VARIABLE` generates a mitered line join + * as used in XPS. `FT_STROKER_LINEJOIN_MITER` is an alias for + * `FT_STROKER_LINEJOIN_MITER_VARIABLE`, retained for backward + * compatibility. + */ + typedef enum FT_Stroker_LineJoin_ + { + FT_STROKER_LINEJOIN_ROUND = 0, + FT_STROKER_LINEJOIN_BEVEL = 1, + FT_STROKER_LINEJOIN_MITER_VARIABLE = 2, + FT_STROKER_LINEJOIN_MITER = FT_STROKER_LINEJOIN_MITER_VARIABLE, + FT_STROKER_LINEJOIN_MITER_FIXED = 3 + + } FT_Stroker_LineJoin; + + + /************************************************************************** + * + * @enum: + * FT_Stroker_LineCap + * + * @description: + * These values determine how the end of opened sub-paths are rendered in + * a stroke. + * + * @values: + * FT_STROKER_LINECAP_BUTT :: + * The end of lines is rendered as a full stop on the last point + * itself. + * + * FT_STROKER_LINECAP_ROUND :: + * The end of lines is rendered as a half-circle around the last point. + * + * FT_STROKER_LINECAP_SQUARE :: + * The end of lines is rendered as a square around the last point. + */ + typedef enum FT_Stroker_LineCap_ + { + FT_STROKER_LINECAP_BUTT = 0, + FT_STROKER_LINECAP_ROUND, + FT_STROKER_LINECAP_SQUARE + + } FT_Stroker_LineCap; + + + /************************************************************************** + * + * @enum: + * FT_StrokerBorder + * + * @description: + * These values are used to select a given stroke border in + * @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. + * + * @values: + * FT_STROKER_BORDER_LEFT :: + * Select the left border, relative to the drawing direction. + * + * FT_STROKER_BORDER_RIGHT :: + * Select the right border, relative to the drawing direction. + * + * @note: + * Applications are generally interested in the 'inside' and 'outside' + * borders. However, there is no direct mapping between these and the + * 'left' and 'right' ones, since this really depends on the glyph's + * drawing orientation, which varies between font formats. + * + * You can however use @FT_Outline_GetInsideBorder and + * @FT_Outline_GetOutsideBorder to get these. + */ + typedef enum FT_StrokerBorder_ + { + FT_STROKER_BORDER_LEFT = 0, + FT_STROKER_BORDER_RIGHT + + } FT_StrokerBorder; + + + /************************************************************************** + * + * @function: + * FT_Outline_GetInsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the 'inside' + * borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetInsideBorder( FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_GetOutsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the 'outside' + * borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetOutsideBorder( FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_New + * + * @description: + * Create a new stroker object. + * + * @input: + * library :: + * FreeType library handle. + * + * @output: + * astroker :: + * A new stroker object handle. `NULL` in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_New( FT_Library library, + FT_Stroker *astroker ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_Set + * + * @description: + * Reset a stroker object's attributes. + * + * @input: + * stroker :: + * The target stroker handle. + * + * radius :: + * The border radius. + * + * line_cap :: + * The line cap style. + * + * line_join :: + * The line join style. + * + * miter_limit :: + * The maximum reciprocal sine of half-angle at the miter join, + * expressed as 16.16 fixed point value. + * + * @note: + * The `radius` is expressed in the same units as the outline + * coordinates. + * + * The `miter_limit` multiplied by the `radius` gives the maximum size + * of a miter spike, at which it is clipped for + * @FT_STROKER_LINEJOIN_MITER_VARIABLE or replaced with a bevel join for + * @FT_STROKER_LINEJOIN_MITER_FIXED. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( void ) + FT_Stroker_Set( FT_Stroker stroker, + FT_Fixed radius, + FT_Stroker_LineCap line_cap, + FT_Stroker_LineJoin line_join, + FT_Fixed miter_limit ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_Rewind + * + * @description: + * Reset a stroker object without changing its attributes. You should + * call this function before beginning a new series of calls to + * @FT_Stroker_BeginSubPath or @FT_Stroker_EndSubPath. + * + * @input: + * stroker :: + * The target stroker handle. + */ + FT_EXPORT( void ) + FT_Stroker_Rewind( FT_Stroker stroker ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_ParseOutline + * + * @description: + * A convenience function used to parse a whole outline with the stroker. + * The resulting outline(s) can be retrieved later by functions like + * @FT_Stroker_GetCounts and @FT_Stroker_Export. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The source outline. + * + * opened :: + * A boolean. If~1, the outline is treated as an open path instead of + * a closed one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `opened` is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct 'border' outlines. + * + * If `opened` is~1, the outline is processed as an open path, and the + * stroker generates a single 'stroke' outline. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ParseOutline( FT_Stroker stroker, + FT_Outline* outline, + FT_Bool opened ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_BeginSubPath + * + * @description: + * Start a new sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the start vector. + * + * open :: + * A boolean. If~1, the sub-path is treated as an open one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is useful when you need to stroke a path that is not + * stored as an @FT_Outline object. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_BeginSubPath( FT_Stroker stroker, + FT_Vector* to, + FT_Bool open ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_EndSubPath + * + * @description: + * Close the current sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function after @FT_Stroker_BeginSubPath. If the + * subpath was not 'opened', this function 'draws' a single line segment + * to the start position when needed. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_EndSubPath( FT_Stroker stroker ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_LineTo + * + * @description: + * 'Draw' a single line segment in the stroker's current sub-path, from + * the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_LineTo( FT_Stroker stroker, + FT_Vector* to ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_ConicTo + * + * @description: + * 'Draw' a single quadratic Bezier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control :: + * A pointer to a Bezier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ConicTo( FT_Stroker stroker, + FT_Vector* control, + FT_Vector* to ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_CubicTo + * + * @description: + * 'Draw' a single cubic Bezier in the stroker's current sub-path, from + * the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control1 :: + * A pointer to the first Bezier control point. + * + * control2 :: + * A pointer to second Bezier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_CubicTo( FT_Stroker stroker, + FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_GetBorderCounts + * + * @description: + * Call this function once you have finished parsing your paths with the + * stroker. It returns the number of points and contours necessary to + * export one of the 'border' or 'stroke' outlines generated by the + * stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * When an outline, or a sub-path, is 'closed', the stroker generates two + * independent 'border' outlines, named 'left' and 'right'. + * + * When the outline, or a sub-path, is 'opened', the stroker merges the + * 'border' outlines with caps. The 'left' border receives all points, + * while the 'right' border becomes empty. + * + * Use the function @FT_Stroker_GetCounts instead if you want to retrieve + * the counts associated to both borders. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetBorderCounts( FT_Stroker stroker, + FT_StrokerBorder border, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_ExportBorder + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to export the + * corresponding border to your own @FT_Outline structure. + * + * Note that this function appends the border points and contours to your + * outline, but does not try to resize its arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * outline :: + * The target outline handle. + * + * @note: + * Always call this function after @FT_Stroker_GetBorderCounts to get + * sure that there is enough room in your @FT_Outline object to receive + * all new data. + * + * When an outline, or a sub-path, is 'closed', the stroker generates two + * independent 'border' outlines, named 'left' and 'right'. + * + * When the outline, or a sub-path, is 'opened', the stroker merges the + * 'border' outlines with caps. The 'left' border receives all points, + * while the 'right' border becomes empty. + * + * Use the function @FT_Stroker_Export instead if you want to retrieve + * all borders at once. + */ + FT_EXPORT( void ) + FT_Stroker_ExportBorder( FT_Stroker stroker, + FT_StrokerBorder border, + FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_GetCounts + * + * @description: + * Call this function once you have finished parsing your paths with the + * stroker. It returns the number of points and contours necessary to + * export all points/borders from the stroked outline/path. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetCounts( FT_Stroker stroker, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_Export + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to export all + * borders to your own @FT_Outline structure. + * + * Note that this function appends the border points and contours to your + * outline, but does not try to resize its arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The target outline handle. + */ + FT_EXPORT( void ) + FT_Stroker_Export( FT_Stroker stroker, + FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Stroker_Done + * + * @description: + * Destroy a stroker object. + * + * @input: + * stroker :: + * A stroker handle. Can be `NULL`. + */ + FT_EXPORT( void ) + FT_Stroker_Done( FT_Stroker stroker ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_Stroke + * + * @description: + * Stroke a given outline glyph object with a given stroker. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts to + * account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Stroke( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool destroy ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_StrokeBorder + * + * @description: + * Stroke a given outline glyph object with a given stroker, but only + * return either its inside or outside border. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * inside :: + * A Boolean. If~1, return the inside border, otherwise the outside + * border. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts to + * account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_StrokeBorder( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool inside, + FT_Bool destroy ); + + /* */ + +FT_END_HEADER + +#endif /* FTSTROKE_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsynth.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsynth.h new file mode 100644 index 0000000..afc40b1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsynth.h @@ -0,0 +1,83 @@ +/**************************************************************************** + * + * ftsynth.h + * + * FreeType synthesizing code for emboldening and slanting + * (specification). + * + * Copyright (C) 2000-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /********* *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ + /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ + /********* FREETYPE DEVELOPMENT TEAM *********/ + /********* *********/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* Main reason for not lifting the functions in this module to a */ + /* 'standard' API is that the used parameters for emboldening and */ + /* slanting are not configurable. Consider the functions as a */ + /* code resource that should be copied into the application and */ + /* adapted to the particular needs. */ + + +#ifndef FTSYNTH_H_ +#define FTSYNTH_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /* Embolden a glyph by a 'reasonable' value (which is highly a matter of */ + /* taste). This function is actually a convenience function, providing */ + /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ + /* */ + /* For emboldened outlines the height, width, and advance metrics are */ + /* increased by the strength of the emboldening -- this even affects */ + /* mono-width fonts! */ + /* */ + /* You can also call @FT_Outline_Get_CBox to get precise values. */ + FT_EXPORT( void ) + FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); + + /* Slant an outline glyph to the right by about 12 degrees. */ + FT_EXPORT( void ) + FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); + + /* */ + + +FT_END_HEADER + +#endif /* FTSYNTH_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsystem.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsystem.h new file mode 100644 index 0000000..5f8aec7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftsystem.h @@ -0,0 +1,352 @@ +/**************************************************************************** + * + * ftsystem.h + * + * FreeType low-level system interface definition (specification). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTSYSTEM_H_ +#define FTSYSTEM_H_ + + + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * system_interface + * + * @title: + * System Interface + * + * @abstract: + * How FreeType manages memory and i/o. + * + * @description: + * This section contains various definitions related to memory management + * and i/o access. You need to understand this information if you want to + * use a custom memory manager or you own i/o streams. + * + */ + + + /************************************************************************** + * + * M E M O R Y M A N A G E M E N T + * + */ + + + /************************************************************************** + * + * @type: + * FT_Memory + * + * @description: + * A handle to a given memory manager object, defined with an + * @FT_MemoryRec structure. + * + */ + typedef struct FT_MemoryRec_* FT_Memory; + + + /************************************************************************** + * + * @functype: + * FT_Alloc_Func + * + * @description: + * A function used to allocate `size` bytes from `memory`. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * size :: + * The size in bytes to allocate. + * + * @return: + * Address of new memory block. 0~in case of failure. + * + */ + typedef void* + (*FT_Alloc_Func)( FT_Memory memory, + long size ); + + + /************************************************************************** + * + * @functype: + * FT_Free_Func + * + * @description: + * A function used to release a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * block :: + * The address of the target memory block. + * + */ + typedef void + (*FT_Free_Func)( FT_Memory memory, + void* block ); + + + /************************************************************************** + * + * @functype: + * FT_Realloc_Func + * + * @description: + * A function used to re-allocate a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * cur_size :: + * The block's current size in bytes. + * + * new_size :: + * The block's requested new size. + * + * block :: + * The block's current address. + * + * @return: + * New block address. 0~in case of memory shortage. + * + * @note: + * In case of error, the old block must still be available. + * + */ + typedef void* + (*FT_Realloc_Func)( FT_Memory memory, + long cur_size, + long new_size, + void* block ); + + + /************************************************************************** + * + * @struct: + * FT_MemoryRec + * + * @description: + * A structure used to describe a given memory manager to FreeType~2. + * + * @fields: + * user :: + * A generic typeless pointer for user data. + * + * alloc :: + * A pointer type to an allocation function. + * + * free :: + * A pointer type to an memory freeing function. + * + * realloc :: + * A pointer type to a reallocation function. + * + */ + struct FT_MemoryRec_ + { + void* user; + FT_Alloc_Func alloc; + FT_Free_Func free; + FT_Realloc_Func realloc; + }; + + + /************************************************************************** + * + * I / O M A N A G E M E N T + * + */ + + + /************************************************************************** + * + * @type: + * FT_Stream + * + * @description: + * A handle to an input stream. + * + * @also: + * See @FT_StreamRec for the publicly accessible fields of a given stream + * object. + * + */ + typedef struct FT_StreamRec_* FT_Stream; + + + /************************************************************************** + * + * @struct: + * FT_StreamDesc + * + * @description: + * A union type used to store either a long or a pointer. This is used + * to store a file descriptor or a `FILE*` in an input stream. + * + */ + typedef union FT_StreamDesc_ + { + long value; + void* pointer; + + } FT_StreamDesc; + + + /************************************************************************** + * + * @functype: + * FT_Stream_IoFunc + * + * @description: + * A function used to seek and read data from a given input stream. + * + * @input: + * stream :: + * A handle to the source stream. + * + * offset :: + * The offset of read in stream (always from start). + * + * buffer :: + * The address of the read buffer. + * + * count :: + * The number of bytes to read from the stream. + * + * @return: + * The number of bytes effectively read by the stream. + * + * @note: + * This function might be called to perform a seek or skip operation with + * a `count` of~0. A non-zero return value then indicates an error. + * + */ + typedef unsigned long + (*FT_Stream_IoFunc)( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ); + + + /************************************************************************** + * + * @functype: + * FT_Stream_CloseFunc + * + * @description: + * A function used to close a given input stream. + * + * @input: + * stream :: + * A handle to the target stream. + * + */ + typedef void + (*FT_Stream_CloseFunc)( FT_Stream stream ); + + + /************************************************************************** + * + * @struct: + * FT_StreamRec + * + * @description: + * A structure used to describe an input stream. + * + * @input: + * base :: + * For memory-based streams, this is the address of the first stream + * byte in memory. This field should always be set to `NULL` for + * disk-based streams. + * + * size :: + * The stream size in bytes. + * + * In case of compressed streams where the size is unknown before + * actually doing the decompression, the value is set to 0x7FFFFFFF. + * (Note that this size value can occur for normal streams also; it is + * thus just a hint.) + * + * pos :: + * The current position within the stream. + * + * descriptor :: + * This field is a union that can hold an integer or a pointer. It is + * used by stream implementations to store file descriptors or `FILE*` + * pointers. + * + * pathname :: + * This field is completely ignored by FreeType. However, it is often + * useful during debugging to use it to store the stream's filename + * (where available). + * + * read :: + * The stream's input function. + * + * close :: + * The stream's close function. + * + * memory :: + * The memory manager to use to preload frames. This is set internally + * by FreeType and shouldn't be touched by stream implementations. + * + * cursor :: + * This field is set and used internally by FreeType when parsing + * frames. In particular, the `FT_GET_XXX` macros use this instead of + * the `pos` field. + * + * limit :: + * This field is set and used internally by FreeType when parsing + * frames. + * + */ + typedef struct FT_StreamRec_ + { + unsigned char* base; + unsigned long size; + unsigned long pos; + + FT_StreamDesc descriptor; + FT_StreamDesc pathname; + FT_Stream_IoFunc read; + FT_Stream_CloseFunc close; + + FT_Memory memory; + unsigned char* cursor; + unsigned char* limit; + + } FT_StreamRec; + + /* */ + + +FT_END_HEADER + +#endif /* FTSYSTEM_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fttrigon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fttrigon.h new file mode 100644 index 0000000..4e8d871 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fttrigon.h @@ -0,0 +1,350 @@ +/**************************************************************************** + * + * fttrigon.h + * + * FreeType trigonometric functions (specification). + * + * Copyright (C) 2001-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTTRIGON_H_ +#define FTTRIGON_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * computations + * + */ + + + /************************************************************************** + * + * @type: + * FT_Angle + * + * @description: + * This type is used to model angle values in FreeType. Note that the + * angle is a 16.16 fixed-point value expressed in degrees. + * + */ + typedef FT_Fixed FT_Angle; + + + /************************************************************************** + * + * @macro: + * FT_ANGLE_PI + * + * @description: + * The angle pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI ( 180L << 16 ) + + + /************************************************************************** + * + * @macro: + * FT_ANGLE_2PI + * + * @description: + * The angle 2*pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) + + + /************************************************************************** + * + * @macro: + * FT_ANGLE_PI2 + * + * @description: + * The angle pi/2 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) + + + /************************************************************************** + * + * @macro: + * FT_ANGLE_PI4 + * + * @description: + * The angle pi/4 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) + + + /************************************************************************** + * + * @function: + * FT_Sin + * + * @description: + * Return the sinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The sinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Sin( FT_Angle angle ); + + + /************************************************************************** + * + * @function: + * FT_Cos + * + * @description: + * Return the cosinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The cosinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Cos( FT_Angle angle ); + + + /************************************************************************** + * + * @function: + * FT_Tan + * + * @description: + * Return the tangent of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The tangent value. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Tan( FT_Angle angle ); + + + /************************************************************************** + * + * @function: + * FT_Atan2 + * + * @description: + * Return the arc-tangent corresponding to a given vector (x,y) in the 2d + * plane. + * + * @input: + * x :: + * The horizontal vector coordinate. + * + * y :: + * The vertical vector coordinate. + * + * @return: + * The arc-tangent value (i.e. angle). + * + */ + FT_EXPORT( FT_Angle ) + FT_Atan2( FT_Fixed x, + FT_Fixed y ); + + + /************************************************************************** + * + * @function: + * FT_Angle_Diff + * + * @description: + * Return the difference between two angles. The result is always + * constrained to the ]-PI..PI] interval. + * + * @input: + * angle1 :: + * First angle. + * + * angle2 :: + * Second angle. + * + * @return: + * Constrained value of `angle2-angle1`. + * + */ + FT_EXPORT( FT_Angle ) + FT_Angle_Diff( FT_Angle angle1, + FT_Angle angle2 ); + + + /************************************************************************** + * + * @function: + * FT_Vector_Unit + * + * @description: + * Return the unit vector corresponding to a given angle. After the + * call, the value of `vec.x` will be `cos(angle)`, and the value of + * `vec.y` will be `sin(angle)`. + * + * This function is useful to retrieve both the sinus and cosinus of a + * given angle quickly. + * + * @output: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************** + * + * @function: + * FT_Vector_Rotate + * + * @description: + * Rotate a vector by a given angle. + * + * @inout: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Rotate( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************** + * + * @function: + * FT_Vector_Length + * + * @description: + * Return the length of a given vector. + * + * @input: + * vec :: + * The address of target vector. + * + * @return: + * The vector length, expressed in the same units that the original + * vector coordinates. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Vector_Length( FT_Vector* vec ); + + + /************************************************************************** + * + * @function: + * FT_Vector_Polarize + * + * @description: + * Compute both the length and angle of a given vector. + * + * @input: + * vec :: + * The address of source vector. + * + * @output: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ); + + + /************************************************************************** + * + * @function: + * FT_Vector_From_Polar + * + * @description: + * Compute vector coordinates from a length and angle. + * + * @output: + * vec :: + * The address of source vector. + * + * @input: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_From_Polar( FT_Vector* vec, + FT_Fixed length, + FT_Angle angle ); + + /* */ + + +FT_END_HEADER + +#endif /* FTTRIGON_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fttypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fttypes.h new file mode 100644 index 0000000..29f32fb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/fttypes.h @@ -0,0 +1,614 @@ +/**************************************************************************** + * + * fttypes.h + * + * FreeType simple types definitions (specification only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTTYPES_H_ +#define FTTYPES_H_ + + +#include +#include FT_CONFIG_CONFIG_H +#include +#include + +#include + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * basic_types + * + * @title: + * Basic Data Types + * + * @abstract: + * The basic data types defined by the library. + * + * @description: + * This section contains the basic data types defined by FreeType~2, + * ranging from simple scalar types to bitmap descriptors. More + * font-specific structures are defined in a different section. + * + * @order: + * FT_Byte + * FT_Bytes + * FT_Char + * FT_Int + * FT_UInt + * FT_Int16 + * FT_UInt16 + * FT_Int32 + * FT_UInt32 + * FT_Int64 + * FT_UInt64 + * FT_Short + * FT_UShort + * FT_Long + * FT_ULong + * FT_Bool + * FT_Offset + * FT_PtrDist + * FT_String + * FT_Tag + * FT_Error + * FT_Fixed + * FT_Pointer + * FT_Pos + * FT_Vector + * FT_BBox + * FT_Matrix + * FT_FWord + * FT_UFWord + * FT_F2Dot14 + * FT_UnitVector + * FT_F26Dot6 + * FT_Data + * + * FT_MAKE_TAG + * + * FT_Generic + * FT_Generic_Finalizer + * + * FT_Bitmap + * FT_Pixel_Mode + * FT_Palette_Mode + * FT_Glyph_Format + * FT_IMAGE_TAG + * + */ + + + /************************************************************************** + * + * @type: + * FT_Bool + * + * @description: + * A typedef of unsigned char, used for simple booleans. As usual, + * values 1 and~0 represent true and false, respectively. + */ + typedef unsigned char FT_Bool; + + + /************************************************************************** + * + * @type: + * FT_FWord + * + * @description: + * A signed 16-bit integer used to store a distance in original font + * units. + */ + typedef signed short FT_FWord; /* distance in FUnits */ + + + /************************************************************************** + * + * @type: + * FT_UFWord + * + * @description: + * An unsigned 16-bit integer used to store a distance in original font + * units. + */ + typedef unsigned short FT_UFWord; /* unsigned distance */ + + + /************************************************************************** + * + * @type: + * FT_Char + * + * @description: + * A simple typedef for the _signed_ char type. + */ + typedef signed char FT_Char; + + + /************************************************************************** + * + * @type: + * FT_Byte + * + * @description: + * A simple typedef for the _unsigned_ char type. + */ + typedef unsigned char FT_Byte; + + + /************************************************************************** + * + * @type: + * FT_Bytes + * + * @description: + * A typedef for constant memory areas. + */ + typedef const FT_Byte* FT_Bytes; + + + /************************************************************************** + * + * @type: + * FT_Tag + * + * @description: + * A typedef for 32-bit tags (as used in the SFNT format). + */ + typedef FT_UInt32 FT_Tag; + + + /************************************************************************** + * + * @type: + * FT_String + * + * @description: + * A simple typedef for the char type, usually used for strings. + */ + typedef char FT_String; + + + /************************************************************************** + * + * @type: + * FT_Short + * + * @description: + * A typedef for signed short. + */ + typedef signed short FT_Short; + + + /************************************************************************** + * + * @type: + * FT_UShort + * + * @description: + * A typedef for unsigned short. + */ + typedef unsigned short FT_UShort; + + + /************************************************************************** + * + * @type: + * FT_Int + * + * @description: + * A typedef for the int type. + */ + typedef signed int FT_Int; + + + /************************************************************************** + * + * @type: + * FT_UInt + * + * @description: + * A typedef for the unsigned int type. + */ + typedef unsigned int FT_UInt; + + + /************************************************************************** + * + * @type: + * FT_Long + * + * @description: + * A typedef for signed long. + */ + typedef signed long FT_Long; + + + /************************************************************************** + * + * @type: + * FT_ULong + * + * @description: + * A typedef for unsigned long. + */ + typedef unsigned long FT_ULong; + + + /************************************************************************** + * + * @type: + * FT_F2Dot14 + * + * @description: + * A signed 2.14 fixed-point type used for unit vectors. + */ + typedef signed short FT_F2Dot14; + + + /************************************************************************** + * + * @type: + * FT_F26Dot6 + * + * @description: + * A signed 26.6 fixed-point type used for vectorial pixel coordinates. + */ + typedef signed long FT_F26Dot6; + + + /************************************************************************** + * + * @type: + * FT_Fixed + * + * @description: + * This type is used to store 16.16 fixed-point values, like scaling + * values or matrix coefficients. + */ + typedef signed long FT_Fixed; + + + /************************************************************************** + * + * @type: + * FT_Error + * + * @description: + * The FreeType error code type. A value of~0 is always interpreted as a + * successful operation. + */ + typedef int FT_Error; + + + /************************************************************************** + * + * @type: + * FT_Pointer + * + * @description: + * A simple typedef for a typeless pointer. + */ + typedef void* FT_Pointer; + + + /************************************************************************** + * + * @type: + * FT_Offset + * + * @description: + * This is equivalent to the ANSI~C `size_t` type, i.e., the largest + * _unsigned_ integer type used to express a file size or position, or a + * memory block size. + */ + typedef size_t FT_Offset; + + + /************************************************************************** + * + * @type: + * FT_PtrDist + * + * @description: + * This is equivalent to the ANSI~C `ptrdiff_t` type, i.e., the largest + * _signed_ integer type used to express the distance between two + * pointers. + */ + typedef ft_ptrdiff_t FT_PtrDist; + + + /************************************************************************** + * + * @struct: + * FT_UnitVector + * + * @description: + * A simple structure used to store a 2D vector unit vector. Uses + * FT_F2Dot14 types. + * + * @fields: + * x :: + * Horizontal coordinate. + * + * y :: + * Vertical coordinate. + */ + typedef struct FT_UnitVector_ + { + FT_F2Dot14 x; + FT_F2Dot14 y; + + } FT_UnitVector; + + + /************************************************************************** + * + * @struct: + * FT_Matrix + * + * @description: + * A simple structure used to store a 2x2 matrix. Coefficients are in + * 16.16 fixed-point format. The computation performed is: + * + * ``` + * x' = x*xx + y*xy + * y' = x*yx + y*yy + * ``` + * + * @fields: + * xx :: + * Matrix coefficient. + * + * xy :: + * Matrix coefficient. + * + * yx :: + * Matrix coefficient. + * + * yy :: + * Matrix coefficient. + */ + typedef struct FT_Matrix_ + { + FT_Fixed xx, xy; + FT_Fixed yx, yy; + + } FT_Matrix; + + + /************************************************************************** + * + * @struct: + * FT_Data + * + * @description: + * Read-only binary data represented as a pointer and a length. + * + * @fields: + * pointer :: + * The data. + * + * length :: + * The length of the data in bytes. + */ + typedef struct FT_Data_ + { + const FT_Byte* pointer; + FT_UInt length; + + } FT_Data; + + + /************************************************************************** + * + * @functype: + * FT_Generic_Finalizer + * + * @description: + * Describe a function used to destroy the 'client' data of any FreeType + * object. See the description of the @FT_Generic type for details of + * usage. + * + * @input: + * The address of the FreeType object that is under finalization. Its + * client data is accessed through its `generic` field. + */ + typedef void (*FT_Generic_Finalizer)( void* object ); + + + /************************************************************************** + * + * @struct: + * FT_Generic + * + * @description: + * Client applications often need to associate their own data to a + * variety of FreeType core objects. For example, a text layout API + * might want to associate a glyph cache to a given size object. + * + * Some FreeType object contains a `generic` field, of type `FT_Generic`, + * which usage is left to client applications and font servers. + * + * It can be used to store a pointer to client-specific data, as well as + * the address of a 'finalizer' function, which will be called by + * FreeType when the object is destroyed (for example, the previous + * client example would put the address of the glyph cache destructor in + * the `finalizer` field). + * + * @fields: + * data :: + * A typeless pointer to any client-specified data. This field is + * completely ignored by the FreeType library. + * + * finalizer :: + * A pointer to a 'generic finalizer' function, which will be called + * when the object is destroyed. If this field is set to `NULL`, no + * code will be called. + */ + typedef struct FT_Generic_ + { + void* data; + FT_Generic_Finalizer finalizer; + + } FT_Generic; + + + /************************************************************************** + * + * @macro: + * FT_MAKE_TAG + * + * @description: + * This macro converts four-letter tags that are used to label TrueType + * tables into an `FT_Tag` type, to be used within FreeType. + * + * @note: + * The produced values **must** be 32-bit integers. Don't redefine this + * macro. + */ +#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ + ( ( FT_STATIC_BYTE_CAST( FT_Tag, _x1 ) << 24 ) | \ + ( FT_STATIC_BYTE_CAST( FT_Tag, _x2 ) << 16 ) | \ + ( FT_STATIC_BYTE_CAST( FT_Tag, _x3 ) << 8 ) | \ + FT_STATIC_BYTE_CAST( FT_Tag, _x4 ) ) + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* L I S T M A N A G E M E N T */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @section: + * list_processing + * + */ + + + /************************************************************************** + * + * @type: + * FT_ListNode + * + * @description: + * Many elements and objects in FreeType are listed through an @FT_List + * record (see @FT_ListRec). As its name suggests, an FT_ListNode is a + * handle to a single list element. + */ + typedef struct FT_ListNodeRec_* FT_ListNode; + + + /************************************************************************** + * + * @type: + * FT_List + * + * @description: + * A handle to a list record (see @FT_ListRec). + */ + typedef struct FT_ListRec_* FT_List; + + + /************************************************************************** + * + * @struct: + * FT_ListNodeRec + * + * @description: + * A structure used to hold a single list element. + * + * @fields: + * prev :: + * The previous element in the list. `NULL` if first. + * + * next :: + * The next element in the list. `NULL` if last. + * + * data :: + * A typeless pointer to the listed object. + */ + typedef struct FT_ListNodeRec_ + { + FT_ListNode prev; + FT_ListNode next; + void* data; + + } FT_ListNodeRec; + + + /************************************************************************** + * + * @struct: + * FT_ListRec + * + * @description: + * A structure used to hold a simple doubly-linked list. These are used + * in many parts of FreeType. + * + * @fields: + * head :: + * The head (first element) of doubly-linked list. + * + * tail :: + * The tail (last element) of doubly-linked list. + */ + typedef struct FT_ListRec_ + { + FT_ListNode head; + FT_ListNode tail; + + } FT_ListRec; + + /* */ + + +#define FT_IS_EMPTY( list ) ( (list).head == 0 ) +#define FT_BOOL( x ) FT_STATIC_CAST( FT_Bool, (x) != 0 ) + + /* concatenate C tokens */ +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) + + /* see `ftmoderr.h` for descriptions of the following macros */ + +#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) +#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) + +#define FT_ERR_EQ( x, e ) \ + ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) +#define FT_ERR_NEQ( x, e ) \ + ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) + + +FT_END_HEADER + +#endif /* FTTYPES_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftwinfnt.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftwinfnt.h new file mode 100644 index 0000000..294f85a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ftwinfnt.h @@ -0,0 +1,276 @@ +/**************************************************************************** + * + * ftwinfnt.h + * + * FreeType API for accessing Windows fnt-specific data. + * + * Copyright (C) 2003-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTWINFNT_H_ +#define FTWINFNT_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * winfnt_fonts + * + * @title: + * Window FNT Files + * + * @abstract: + * Windows FNT-specific API. + * + * @description: + * This section contains the declaration of Windows FNT-specific + * functions. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_WinFNT_ID_XXX + * + * @description: + * A list of valid values for the `charset` byte in @FT_WinFNT_HeaderRec. + * Exact mapping tables for the various 'cpXXXX' encodings (except for + * 'cp1361') can be found at 'ftp://ftp.unicode.org/Public/' in the + * `MAPPINGS/VENDORS/MICSFT/WINDOWS` subdirectory. 'cp1361' is roughly a + * superset of `MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT`. + * + * @values: + * FT_WinFNT_ID_DEFAULT :: + * This is used for font enumeration and font creation as a 'don't + * care' value. Valid font files don't contain this value. When + * querying for information about the character set of the font that is + * currently selected into a specified device context, this return + * value (of the related Windows API) simply denotes failure. + * + * FT_WinFNT_ID_SYMBOL :: + * There is no known mapping table available. + * + * FT_WinFNT_ID_MAC :: + * Mac Roman encoding. + * + * FT_WinFNT_ID_OEM :: + * From Michael Poettgen : + * + * The 'Windows Font Mapping' article says that `FT_WinFNT_ID_OEM` is + * used for the charset of vector fonts, like `modern.fon`, + * `roman.fon`, and `script.fon` on Windows. + * + * The 'CreateFont' documentation says: The `FT_WinFNT_ID_OEM` value + * specifies a character set that is operating-system dependent. + * + * The 'IFIMETRICS' documentation from the 'Windows Driver Development + * Kit' says: This font supports an OEM-specific character set. The + * OEM character set is system dependent. + * + * In general OEM, as opposed to ANSI (i.e., 'cp1252'), denotes the + * second default codepage that most international versions of Windows + * have. It is one of the OEM codepages from + * + * https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers + * , + * + * and is used for the 'DOS boxes', to support legacy applications. A + * German Windows version for example usually uses ANSI codepage 1252 + * and OEM codepage 850. + * + * FT_WinFNT_ID_CP874 :: + * A superset of Thai TIS 620 and ISO 8859-11. + * + * FT_WinFNT_ID_CP932 :: + * A superset of Japanese Shift-JIS (with minor deviations). + * + * FT_WinFNT_ID_CP936 :: + * A superset of simplified Chinese GB 2312-1980 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP949 :: + * A superset of Korean Hangul KS~C 5601-1987 (with different ordering + * and minor deviations). + * + * FT_WinFNT_ID_CP950 :: + * A superset of traditional Chinese Big~5 ETen (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP1250 :: + * A superset of East European ISO 8859-2 (with slightly different + * ordering). + * + * FT_WinFNT_ID_CP1251 :: + * A superset of Russian ISO 8859-5 (with different ordering). + * + * FT_WinFNT_ID_CP1252 :: + * ANSI encoding. A superset of ISO 8859-1. + * + * FT_WinFNT_ID_CP1253 :: + * A superset of Greek ISO 8859-7 (with minor modifications). + * + * FT_WinFNT_ID_CP1254 :: + * A superset of Turkish ISO 8859-9. + * + * FT_WinFNT_ID_CP1255 :: + * A superset of Hebrew ISO 8859-8 (with some modifications). + * + * FT_WinFNT_ID_CP1256 :: + * A superset of Arabic ISO 8859-6 (with different ordering). + * + * FT_WinFNT_ID_CP1257 :: + * A superset of Baltic ISO 8859-13 (with some deviations). + * + * FT_WinFNT_ID_CP1258 :: + * For Vietnamese. This encoding doesn't cover all necessary + * characters. + * + * FT_WinFNT_ID_CP1361 :: + * Korean (Johab). + */ + +#define FT_WinFNT_ID_CP1252 0 +#define FT_WinFNT_ID_DEFAULT 1 +#define FT_WinFNT_ID_SYMBOL 2 +#define FT_WinFNT_ID_MAC 77 +#define FT_WinFNT_ID_CP932 128 +#define FT_WinFNT_ID_CP949 129 +#define FT_WinFNT_ID_CP1361 130 +#define FT_WinFNT_ID_CP936 134 +#define FT_WinFNT_ID_CP950 136 +#define FT_WinFNT_ID_CP1253 161 +#define FT_WinFNT_ID_CP1254 162 +#define FT_WinFNT_ID_CP1258 163 +#define FT_WinFNT_ID_CP1255 177 +#define FT_WinFNT_ID_CP1256 178 +#define FT_WinFNT_ID_CP1257 186 +#define FT_WinFNT_ID_CP1251 204 +#define FT_WinFNT_ID_CP874 222 +#define FT_WinFNT_ID_CP1250 238 +#define FT_WinFNT_ID_OEM 255 + + + /************************************************************************** + * + * @struct: + * FT_WinFNT_HeaderRec + * + * @description: + * Windows FNT Header info. + */ + typedef struct FT_WinFNT_HeaderRec_ + { + FT_UShort version; + FT_ULong file_size; + FT_Byte copyright[60]; + FT_UShort file_type; + FT_UShort nominal_point_size; + FT_UShort vertical_resolution; + FT_UShort horizontal_resolution; + FT_UShort ascent; + FT_UShort internal_leading; + FT_UShort external_leading; + FT_Byte italic; + FT_Byte underline; + FT_Byte strike_out; + FT_UShort weight; + FT_Byte charset; + FT_UShort pixel_width; + FT_UShort pixel_height; + FT_Byte pitch_and_family; + FT_UShort avg_width; + FT_UShort max_width; + FT_Byte first_char; + FT_Byte last_char; + FT_Byte default_char; + FT_Byte break_char; + FT_UShort bytes_per_row; + FT_ULong device_offset; + FT_ULong face_name_offset; + FT_ULong bits_pointer; + FT_ULong bits_offset; + FT_Byte reserved; + FT_ULong flags; + FT_UShort A_space; + FT_UShort B_space; + FT_UShort C_space; + FT_UShort color_table_offset; + FT_ULong reserved1[4]; + + } FT_WinFNT_HeaderRec; + + + /************************************************************************** + * + * @struct: + * FT_WinFNT_Header + * + * @description: + * A handle to an @FT_WinFNT_HeaderRec structure. + */ + typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; + + + /************************************************************************** + * + * @function: + * FT_Get_WinFNT_Header + * + * @description: + * Retrieve a Windows FNT font info header. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * aheader :: + * The WinFNT header. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with Windows FNT faces, returning an error + * otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_WinFNT_Header( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + /* */ + + +FT_END_HEADER + +#endif /* FTWINFNT_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/otsvg.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/otsvg.h new file mode 100644 index 0000000..2caadfd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/otsvg.h @@ -0,0 +1,336 @@ +/**************************************************************************** + * + * otsvg.h + * + * Interface for OT-SVG support related things (specification). + * + * Copyright (C) 2022 by + * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef OTSVG_H_ +#define OTSVG_H_ + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * svg_fonts + * + * @title: + * OpenType SVG Fonts + * + * @abstract: + * OT-SVG API between FreeType and an external SVG rendering library. + * + * @description: + * This section describes the four hooks necessary to render SVG + * 'documents' that are contained in an OpenType font's 'SVG~' table. + * + * For more information on the implementation, see our standard hooks + * based on 'librsvg' in the [FreeType Demo + * Programs](https://gitlab.freedesktop.org/freetype/freetype-demos) + * repository. + * + */ + + + /************************************************************************** + * + * @functype: + * SVG_Lib_Init_Func + * + * @description: + * A callback that is called when the first OT-SVG glyph is rendered in + * the lifetime of an @FT_Library object. In a typical implementation, + * one would want to allocate a structure and point the `data_pointer` + * to it and perform any library initializations that might be needed. + * + * @inout: + * data_pointer :: + * The SVG rendering module stores a pointer variable that can be used + * by clients to store any data that needs to be shared across + * different hooks. `data_pointer` is essentially a pointer to that + * pointer such that it can be written to as well as read from. + * + * @return: + * FreeType error code. 0 means success. + * + * @since: + * 2.12 + */ + typedef FT_Error + (*SVG_Lib_Init_Func)( FT_Pointer *data_pointer ); + + + /************************************************************************** + * + * @functype: + * SVG_Lib_Free_Func + * + * @description: + * A callback that is called when the `ot-svg` module is being freed. + * It is only called if the init hook was called earlier. This means + * that neither the init nor the free hook is called if no OT-SVG glyph + * is rendered. + * + * In a typical implementation, one would want to free any state + * structure that was allocated in the init hook and perform any + * library-related closure that might be needed. + * + * @inout: + * data_pointer :: + * The SVG rendering module stores a pointer variable that can be used + * by clients to store any data that needs to be shared across + * different hooks. `data_pointer` is essentially a pointer to that + * pointer such that it can be written to as well as read from. + * + * @since: + * 2.12 + */ + typedef void + (*SVG_Lib_Free_Func)( FT_Pointer *data_pointer ); + + + /************************************************************************** + * + * @functype: + * SVG_Lib_Render_Func + * + * @description: + * A callback that is called to render an OT-SVG glyph. This callback + * hook is called right after the preset hook @SVG_Lib_Preset_Slot_Func + * has been called with `cache` set to `TRUE`. The data necessary to + * render is available through the handle @FT_SVG_Document, which is set + * in the `other` field of @FT_GlyphSlotRec. + * + * The render hook is expected to render the SVG glyph to the bitmap + * buffer that is allocated already at `slot->bitmap.buffer`. It also + * sets the `num_grays` value as well as `slot->format`. + * + * @input: + * slot :: + * The slot to render. + * + * @inout: + * data_pointer :: + * The SVG rendering module stores a pointer variable that can be used + * by clients to store any data that needs to be shared across + * different hooks. `data_pointer` is essentially a pointer to that + * pointer such that it can be written to as well as read from. + * + * @return: + * FreeType error code. 0 means success. + * + * @since: + * 2.12 + */ + typedef FT_Error + (*SVG_Lib_Render_Func)( FT_GlyphSlot slot, + FT_Pointer *data_pointer ); + + + /************************************************************************** + * + * @functype: + * SVG_Lib_Preset_Slot_Func + * + * @description: + * A callback that is called to preset the glyph slot. It is called from + * two places. + * + * 1. When `FT_Load_Glyph` needs to preset the glyph slot. + * + * 2. Right before the `svg` module calls the render callback hook. + * + * When it is the former, the argument `cache` is set to `FALSE`. When + * it is the latter, the argument `cache` is set to `TRUE`. This + * distinction has been made because many calculations that are necessary + * for presetting a glyph slot are the same needed later for the render + * callback hook. Thus, if `cache` is `TRUE`, the hook can _cache_ those + * calculations in a memory block referenced by the state pointer. + * + * This hook is expected to preset the slot by setting parameters such as + * `bitmap_left`, `bitmap_top`, `width`, `rows`, `pitch`, and + * `pixel_mode`. It is also expected to set all the metrics for the slot + * including the vertical advance if it is not already set. Typically, + * fonts have horizontal advances but not vertical ones. If those are + * available, they had already been set, otherwise they have to be + * estimated and set manually. The hook must take into account the + * transformations that have been set, and translate the transformation + * matrices into the SVG coordinate system, as the original matrix is + * intended for the TTF/CFF coordinate system. + * + * @input: + * slot :: + * The glyph slot that has the SVG document loaded. + * + * cache :: + * See description. + * + * @inout: + * data_pointer :: + * The SVG rendering module stores a pointer variable that can be used + * by clients to store any data that needs to be shared across + * different hooks. `data_pointer` is essentially a pointer to that + * pointer such that it can be written to as well as read from. + * + * @return: + * FreeType error code. 0 means success. + * + * @since: + * 2.12 + */ + typedef FT_Error + (*SVG_Lib_Preset_Slot_Func)( FT_GlyphSlot slot, + FT_Bool cache, + FT_Pointer *state ); + + + /************************************************************************** + * + * @struct: + * SVG_RendererHooks + * + * @description: + * A structure that stores the four hooks needed to render OT-SVG glyphs + * properly. The structure is publicly used to set the hooks via the + * @svg-hooks driver property. + * + * The behavior of each hook is described in its documentation. One + * thing to note is that the preset hook and the render hook often need + * to do the same operations; therefore, it's better to cache the + * intermediate data in a state structure to avoid calculating it twice. + * For example, in the preset hook one can draw the glyph on a recorder + * surface and later create a bitmap surface from it in the render hook. + * + * All four hooks must be non-NULL. + * + * @fields: + * init_svg :: + * The initialization hook. + * + * free_svg :: + * The cleanup hook. + * + * render_hook :: + * The render hook. + * + * preset_slot :: + * The preset hook. + * + * @since: + * 2.12 + */ + typedef struct SVG_RendererHooks_ + { + SVG_Lib_Init_Func init_svg; + SVG_Lib_Free_Func free_svg; + SVG_Lib_Render_Func render_svg; + + SVG_Lib_Preset_Slot_Func preset_slot; + + } SVG_RendererHooks; + + + /************************************************************************** + * + * @struct: + * FT_SVG_DocumentRec + * + * @description: + * A structure that models one SVG document. + * + * @fields: + * svg_document :: + * A pointer to the SVG document. + * + * svg_document_length :: + * The length of `svg_document`. + * + * metrics :: + * A metrics object storing the size information. + * + * units_per_EM :: + * The size of the EM square. + * + * start_glyph_id :: + * The first glyph ID in the glyph range covered by this document. + * + * end_glyph_id :: + * The last glyph ID in the glyph range covered by this document. + * + * transform :: + * A 2x2 transformation matrix to apply to the glyph while rendering + * it. + * + * delta :: + * The translation to apply to the glyph while rendering. + * + * @note: + * When an @FT_GlyphSlot object `slot` is passed down to a renderer, the + * renderer can only access the `metrics` and `units_per_EM` fields via + * `slot->face`. However, when @FT_Glyph_To_Bitmap sets up a dummy + * object, it has no way to set a `face` object. Thus, metrics + * information and `units_per_EM` (which is necessary for OT-SVG) has to + * be stored separately. + * + * @since: + * 2.12 + */ + typedef struct FT_SVG_DocumentRec_ + { + FT_Byte* svg_document; + FT_ULong svg_document_length; + + FT_Size_Metrics metrics; + FT_UShort units_per_EM; + + FT_UShort start_glyph_id; + FT_UShort end_glyph_id; + + FT_Matrix transform; + FT_Vector delta; + + } FT_SVG_DocumentRec; + + + /************************************************************************** + * + * @type: + * FT_SVG_Document + * + * @description: + * A handle to an @FT_SVG_DocumentRec object. + * + * @since: + * 2.12 + */ + typedef struct FT_SVG_DocumentRec_* FT_SVG_Document; + + +FT_END_HEADER + +#endif /* OTSVG_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/t1tables.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/t1tables.h new file mode 100644 index 0000000..4068b20 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/t1tables.h @@ -0,0 +1,793 @@ +/**************************************************************************** + * + * t1tables.h + * + * Basic Type 1/Type 2 tables definitions and interface (specification + * only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef T1TABLES_H_ +#define T1TABLES_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * type1_tables + * + * @title: + * Type 1 Tables + * + * @abstract: + * Type~1-specific font tables. + * + * @description: + * This section contains the definition of Type~1-specific tables, + * including structures related to other PostScript font formats. + * + * @order: + * PS_FontInfoRec + * PS_FontInfo + * PS_PrivateRec + * PS_Private + * + * CID_FaceDictRec + * CID_FaceDict + * CID_FaceInfoRec + * CID_FaceInfo + * + * FT_Has_PS_Glyph_Names + * FT_Get_PS_Font_Info + * FT_Get_PS_Font_Private + * FT_Get_PS_Font_Value + * + * T1_Blend_Flags + * T1_EncodingType + * PS_Dict_Keys + * + */ + + + /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ + /* structures in order to support Multiple Master fonts. */ + + + /************************************************************************** + * + * @struct: + * PS_FontInfoRec + * + * @description: + * A structure used to model a Type~1 or Type~2 FontInfo dictionary. + * Note that for Multiple Master fonts, each instance has its own + * FontInfo dictionary. + */ + typedef struct PS_FontInfoRec_ + { + FT_String* version; + FT_String* notice; + FT_String* full_name; + FT_String* family_name; + FT_String* weight; + FT_Long italic_angle; + FT_Bool is_fixed_pitch; + FT_Short underline_position; + FT_UShort underline_thickness; + + } PS_FontInfoRec; + + + /************************************************************************** + * + * @struct: + * PS_FontInfo + * + * @description: + * A handle to a @PS_FontInfoRec structure. + */ + typedef struct PS_FontInfoRec_* PS_FontInfo; + + + /************************************************************************** + * + * @struct: + * T1_FontInfo + * + * @description: + * This type is equivalent to @PS_FontInfoRec. It is deprecated but kept + * to maintain source compatibility between various versions of FreeType. + */ + typedef PS_FontInfoRec T1_FontInfo; + + + /************************************************************************** + * + * @struct: + * PS_PrivateRec + * + * @description: + * A structure used to model a Type~1 or Type~2 private dictionary. Note + * that for Multiple Master fonts, each instance has its own Private + * dictionary. + */ + typedef struct PS_PrivateRec_ + { + FT_Int unique_id; + FT_Int lenIV; + + FT_Byte num_blue_values; + FT_Byte num_other_blues; + FT_Byte num_family_blues; + FT_Byte num_family_other_blues; + + FT_Short blue_values[14]; + FT_Short other_blues[10]; + + FT_Short family_blues [14]; + FT_Short family_other_blues[10]; + + FT_Fixed blue_scale; + FT_Int blue_shift; + FT_Int blue_fuzz; + + FT_UShort standard_width[1]; + FT_UShort standard_height[1]; + + FT_Byte num_snap_widths; + FT_Byte num_snap_heights; + FT_Bool force_bold; + FT_Bool round_stem_up; + + FT_Short snap_widths [13]; /* including std width */ + FT_Short snap_heights[13]; /* including std height */ + + FT_Fixed expansion_factor; + + FT_Long language_group; + FT_Long password; + + FT_Short min_feature[2]; + + } PS_PrivateRec; + + + /************************************************************************** + * + * @struct: + * PS_Private + * + * @description: + * A handle to a @PS_PrivateRec structure. + */ + typedef struct PS_PrivateRec_* PS_Private; + + + /************************************************************************** + * + * @struct: + * T1_Private + * + * @description: + * This type is equivalent to @PS_PrivateRec. It is deprecated but kept + * to maintain source compatibility between various versions of FreeType. + */ + typedef PS_PrivateRec T1_Private; + + + /************************************************************************** + * + * @enum: + * T1_Blend_Flags + * + * @description: + * A set of flags used to indicate which fields are present in a given + * blend dictionary (font info or private). Used to support Multiple + * Masters fonts. + * + * @values: + * T1_BLEND_UNDERLINE_POSITION :: + * T1_BLEND_UNDERLINE_THICKNESS :: + * T1_BLEND_ITALIC_ANGLE :: + * T1_BLEND_BLUE_VALUES :: + * T1_BLEND_OTHER_BLUES :: + * T1_BLEND_STANDARD_WIDTH :: + * T1_BLEND_STANDARD_HEIGHT :: + * T1_BLEND_STEM_SNAP_WIDTHS :: + * T1_BLEND_STEM_SNAP_HEIGHTS :: + * T1_BLEND_BLUE_SCALE :: + * T1_BLEND_BLUE_SHIFT :: + * T1_BLEND_FAMILY_BLUES :: + * T1_BLEND_FAMILY_OTHER_BLUES :: + * T1_BLEND_FORCE_BOLD :: + */ + typedef enum T1_Blend_Flags_ + { + /* required fields in a FontInfo blend dictionary */ + T1_BLEND_UNDERLINE_POSITION = 0, + T1_BLEND_UNDERLINE_THICKNESS, + T1_BLEND_ITALIC_ANGLE, + + /* required fields in a Private blend dictionary */ + T1_BLEND_BLUE_VALUES, + T1_BLEND_OTHER_BLUES, + T1_BLEND_STANDARD_WIDTH, + T1_BLEND_STANDARD_HEIGHT, + T1_BLEND_STEM_SNAP_WIDTHS, + T1_BLEND_STEM_SNAP_HEIGHTS, + T1_BLEND_BLUE_SCALE, + T1_BLEND_BLUE_SHIFT, + T1_BLEND_FAMILY_BLUES, + T1_BLEND_FAMILY_OTHER_BLUES, + T1_BLEND_FORCE_BOLD, + + T1_BLEND_MAX /* do not remove */ + + } T1_Blend_Flags; + + + /* these constants are deprecated; use the corresponding */ + /* `T1_Blend_Flags` values instead */ +#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION +#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS +#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE +#define t1_blend_blue_values T1_BLEND_BLUE_VALUES +#define t1_blend_other_blues T1_BLEND_OTHER_BLUES +#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH +#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT +#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS +#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS +#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE +#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT +#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES +#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES +#define t1_blend_force_bold T1_BLEND_FORCE_BOLD +#define t1_blend_max T1_BLEND_MAX + + /* */ + + + /* maximum number of Multiple Masters designs, as defined in the spec */ +#define T1_MAX_MM_DESIGNS 16 + + /* maximum number of Multiple Masters axes, as defined in the spec */ +#define T1_MAX_MM_AXIS 4 + + /* maximum number of elements in a design map */ +#define T1_MAX_MM_MAP_POINTS 20 + + + /* this structure is used to store the BlendDesignMap entry for an axis */ + typedef struct PS_DesignMap_ + { + FT_Byte num_points; + FT_Long* design_points; + FT_Fixed* blend_points; + + } PS_DesignMapRec, *PS_DesignMap; + + /* backward compatible definition */ + typedef PS_DesignMapRec T1_DesignMap; + + + typedef struct PS_BlendRec_ + { + FT_UInt num_designs; + FT_UInt num_axis; + + FT_String* axis_names[T1_MAX_MM_AXIS]; + FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; + PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; + + FT_Fixed* weight_vector; + FT_Fixed* default_weight_vector; + + PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; + PS_Private privates [T1_MAX_MM_DESIGNS + 1]; + + FT_ULong blend_bitflags; + + FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; + + /* since 2.3.0 */ + + /* undocumented, optional: the default design instance; */ + /* corresponds to default_weight_vector -- */ + /* num_default_design_vector == 0 means it is not present */ + /* in the font and associated metrics files */ + FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; + FT_UInt num_default_design_vector; + + } PS_BlendRec, *PS_Blend; + + + /* backward compatible definition */ + typedef PS_BlendRec T1_Blend; + + + /************************************************************************** + * + * @struct: + * CID_FaceDictRec + * + * @description: + * A structure used to represent data in a CID top-level dictionary. In + * most cases, they are part of the font's '/FDArray' array. Within a + * CID font file, such (internal) subfont dictionaries are enclosed by + * '%ADOBeginFontDict' and '%ADOEndFontDict' comments. + * + * Note that `CID_FaceDictRec` misses a field for the '/FontName' + * keyword, specifying the subfont's name (the top-level font name is + * given by the '/CIDFontName' keyword). This is an oversight, but it + * doesn't limit the 'cid' font module's functionality because FreeType + * neither needs this entry nor gives access to CID subfonts. + */ + typedef struct CID_FaceDictRec_ + { + PS_PrivateRec private_dict; + + FT_UInt len_buildchar; + FT_Fixed forcebold_threshold; + FT_Pos stroke_width; + FT_Fixed expansion_factor; /* this is a duplicate of */ + /* `private_dict->expansion_factor' */ + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_UInt num_subrs; + FT_ULong subrmap_offset; + FT_UInt sd_bytes; + + } CID_FaceDictRec; + + + /************************************************************************** + * + * @struct: + * CID_FaceDict + * + * @description: + * A handle to a @CID_FaceDictRec structure. + */ + typedef struct CID_FaceDictRec_* CID_FaceDict; + + + /************************************************************************** + * + * @struct: + * CID_FontDict + * + * @description: + * This type is equivalent to @CID_FaceDictRec. It is deprecated but + * kept to maintain source compatibility between various versions of + * FreeType. + */ + typedef CID_FaceDictRec CID_FontDict; + + + /************************************************************************** + * + * @struct: + * CID_FaceInfoRec + * + * @description: + * A structure used to represent CID Face information. + */ + typedef struct CID_FaceInfoRec_ + { + FT_String* cid_font_name; + FT_Fixed cid_version; + FT_Int cid_font_type; + + FT_String* registry; + FT_String* ordering; + FT_Int supplement; + + PS_FontInfoRec font_info; + FT_BBox font_bbox; + FT_ULong uid_base; + + FT_Int num_xuid; + FT_ULong xuid[16]; + + FT_ULong cidmap_offset; + FT_UInt fd_bytes; + FT_UInt gd_bytes; + FT_ULong cid_count; + + FT_UInt num_dicts; + CID_FaceDict font_dicts; + + FT_ULong data_offset; + + } CID_FaceInfoRec; + + + /************************************************************************** + * + * @struct: + * CID_FaceInfo + * + * @description: + * A handle to a @CID_FaceInfoRec structure. + */ + typedef struct CID_FaceInfoRec_* CID_FaceInfo; + + + /************************************************************************** + * + * @struct: + * CID_Info + * + * @description: + * This type is equivalent to @CID_FaceInfoRec. It is deprecated but kept + * to maintain source compatibility between various versions of FreeType. + */ + typedef CID_FaceInfoRec CID_Info; + + + /************************************************************************** + * + * @function: + * FT_Has_PS_Glyph_Names + * + * @description: + * Return true if a given face provides reliable PostScript glyph names. + * This is similar to using the @FT_HAS_GLYPH_NAMES macro, except that + * certain fonts (mostly TrueType) contain incorrect glyph name tables. + * + * When this function returns true, the caller is sure that the glyph + * names returned by @FT_Get_Glyph_Name are reliable. + * + * @input: + * face :: + * face handle + * + * @return: + * Boolean. True if glyph names are reliable. + * + */ + FT_EXPORT( FT_Int ) + FT_Has_PS_Glyph_Names( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Get_PS_Font_Info + * + * @description: + * Retrieve the @PS_FontInfoRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_info :: + * A pointer to a @PS_FontInfoRec object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * String pointers within the @PS_FontInfoRec structure are owned by the + * face and don't need to be freed by the caller. Missing entries in the + * font's FontInfo dictionary are represented by `NULL` pointers. + * + * The following font formats support this feature: 'Type~1', 'Type~42', + * 'CFF', 'CID~Type~1'. For other font formats this function returns the + * `FT_Err_Invalid_Argument` error code. + * + * @example: + * ``` + * PS_FontInfoRec font_info; + * + * + * error = FT_Get_PS_Font_Info( face, &font_info ); + * ... + * ``` + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Info( FT_Face face, + PS_FontInfo afont_info ); + + + /************************************************************************** + * + * @function: + * FT_Get_PS_Font_Private + * + * @description: + * Retrieve the @PS_PrivateRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_private :: + * A pointer to a @PS_PrivateRec object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the @PS_PrivateRec structure are owned by + * the face and don't need to be freed by the caller. + * + * Only the 'Type~1' font format supports this feature. For other font + * formats this function returns the `FT_Err_Invalid_Argument` error + * code. + * + * @example: + * ``` + * PS_PrivateRec font_private; + * + * + * error = FT_Get_PS_Font_Private( face, &font_private ); + * ... + * ``` + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Private( FT_Face face, + PS_Private afont_private ); + + + /************************************************************************** + * + * @enum: + * T1_EncodingType + * + * @description: + * An enumeration describing the 'Encoding' entry in a Type 1 dictionary. + * + * @values: + * T1_ENCODING_TYPE_NONE :: + * T1_ENCODING_TYPE_ARRAY :: + * T1_ENCODING_TYPE_STANDARD :: + * T1_ENCODING_TYPE_ISOLATIN1 :: + * T1_ENCODING_TYPE_EXPERT :: + * + * @since: + * 2.4.8 + */ + typedef enum T1_EncodingType_ + { + T1_ENCODING_TYPE_NONE = 0, + T1_ENCODING_TYPE_ARRAY, + T1_ENCODING_TYPE_STANDARD, + T1_ENCODING_TYPE_ISOLATIN1, + T1_ENCODING_TYPE_EXPERT + + } T1_EncodingType; + + + /************************************************************************** + * + * @enum: + * PS_Dict_Keys + * + * @description: + * An enumeration used in calls to @FT_Get_PS_Font_Value to identify the + * Type~1 dictionary entry to retrieve. + * + * @values: + * PS_DICT_FONT_TYPE :: + * PS_DICT_FONT_MATRIX :: + * PS_DICT_FONT_BBOX :: + * PS_DICT_PAINT_TYPE :: + * PS_DICT_FONT_NAME :: + * PS_DICT_UNIQUE_ID :: + * PS_DICT_NUM_CHAR_STRINGS :: + * PS_DICT_CHAR_STRING_KEY :: + * PS_DICT_CHAR_STRING :: + * PS_DICT_ENCODING_TYPE :: + * PS_DICT_ENCODING_ENTRY :: + * PS_DICT_NUM_SUBRS :: + * PS_DICT_SUBR :: + * PS_DICT_STD_HW :: + * PS_DICT_STD_VW :: + * PS_DICT_NUM_BLUE_VALUES :: + * PS_DICT_BLUE_VALUE :: + * PS_DICT_BLUE_FUZZ :: + * PS_DICT_NUM_OTHER_BLUES :: + * PS_DICT_OTHER_BLUE :: + * PS_DICT_NUM_FAMILY_BLUES :: + * PS_DICT_FAMILY_BLUE :: + * PS_DICT_NUM_FAMILY_OTHER_BLUES :: + * PS_DICT_FAMILY_OTHER_BLUE :: + * PS_DICT_BLUE_SCALE :: + * PS_DICT_BLUE_SHIFT :: + * PS_DICT_NUM_STEM_SNAP_H :: + * PS_DICT_STEM_SNAP_H :: + * PS_DICT_NUM_STEM_SNAP_V :: + * PS_DICT_STEM_SNAP_V :: + * PS_DICT_FORCE_BOLD :: + * PS_DICT_RND_STEM_UP :: + * PS_DICT_MIN_FEATURE :: + * PS_DICT_LEN_IV :: + * PS_DICT_PASSWORD :: + * PS_DICT_LANGUAGE_GROUP :: + * PS_DICT_VERSION :: + * PS_DICT_NOTICE :: + * PS_DICT_FULL_NAME :: + * PS_DICT_FAMILY_NAME :: + * PS_DICT_WEIGHT :: + * PS_DICT_IS_FIXED_PITCH :: + * PS_DICT_UNDERLINE_POSITION :: + * PS_DICT_UNDERLINE_THICKNESS :: + * PS_DICT_FS_TYPE :: + * PS_DICT_ITALIC_ANGLE :: + * + * @since: + * 2.4.8 + */ + typedef enum PS_Dict_Keys_ + { + /* conventionally in the font dictionary */ + PS_DICT_FONT_TYPE, /* FT_Byte */ + PS_DICT_FONT_MATRIX, /* FT_Fixed */ + PS_DICT_FONT_BBOX, /* FT_Fixed */ + PS_DICT_PAINT_TYPE, /* FT_Byte */ + PS_DICT_FONT_NAME, /* FT_String* */ + PS_DICT_UNIQUE_ID, /* FT_Int */ + PS_DICT_NUM_CHAR_STRINGS, /* FT_Int */ + PS_DICT_CHAR_STRING_KEY, /* FT_String* */ + PS_DICT_CHAR_STRING, /* FT_String* */ + PS_DICT_ENCODING_TYPE, /* T1_EncodingType */ + PS_DICT_ENCODING_ENTRY, /* FT_String* */ + + /* conventionally in the font Private dictionary */ + PS_DICT_NUM_SUBRS, /* FT_Int */ + PS_DICT_SUBR, /* FT_String* */ + PS_DICT_STD_HW, /* FT_UShort */ + PS_DICT_STD_VW, /* FT_UShort */ + PS_DICT_NUM_BLUE_VALUES, /* FT_Byte */ + PS_DICT_BLUE_VALUE, /* FT_Short */ + PS_DICT_BLUE_FUZZ, /* FT_Int */ + PS_DICT_NUM_OTHER_BLUES, /* FT_Byte */ + PS_DICT_OTHER_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_OTHER_BLUE, /* FT_Short */ + PS_DICT_BLUE_SCALE, /* FT_Fixed */ + PS_DICT_BLUE_SHIFT, /* FT_Int */ + PS_DICT_NUM_STEM_SNAP_H, /* FT_Byte */ + PS_DICT_STEM_SNAP_H, /* FT_Short */ + PS_DICT_NUM_STEM_SNAP_V, /* FT_Byte */ + PS_DICT_STEM_SNAP_V, /* FT_Short */ + PS_DICT_FORCE_BOLD, /* FT_Bool */ + PS_DICT_RND_STEM_UP, /* FT_Bool */ + PS_DICT_MIN_FEATURE, /* FT_Short */ + PS_DICT_LEN_IV, /* FT_Int */ + PS_DICT_PASSWORD, /* FT_Long */ + PS_DICT_LANGUAGE_GROUP, /* FT_Long */ + + /* conventionally in the font FontInfo dictionary */ + PS_DICT_VERSION, /* FT_String* */ + PS_DICT_NOTICE, /* FT_String* */ + PS_DICT_FULL_NAME, /* FT_String* */ + PS_DICT_FAMILY_NAME, /* FT_String* */ + PS_DICT_WEIGHT, /* FT_String* */ + PS_DICT_IS_FIXED_PITCH, /* FT_Bool */ + PS_DICT_UNDERLINE_POSITION, /* FT_Short */ + PS_DICT_UNDERLINE_THICKNESS, /* FT_UShort */ + PS_DICT_FS_TYPE, /* FT_UShort */ + PS_DICT_ITALIC_ANGLE, /* FT_Long */ + + PS_DICT_MAX = PS_DICT_ITALIC_ANGLE + + } PS_Dict_Keys; + + + /************************************************************************** + * + * @function: + * FT_Get_PS_Font_Value + * + * @description: + * Retrieve the value for the supplied key from a PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * key :: + * An enumeration value representing the dictionary key to retrieve. + * + * idx :: + * For array values, this specifies the index to be returned. + * + * value :: + * A pointer to memory into which to write the value. + * + * valen_len :: + * The size, in bytes, of the memory supplied for the value. + * + * @output: + * value :: + * The value matching the above key, if it exists. + * + * @return: + * The amount of memory (in bytes) required to hold the requested value + * (if it exists, -1 otherwise). + * + * @note: + * The values returned are not pointers into the internal structures of + * the face, but are 'fresh' copies, so that the memory containing them + * belongs to the calling application. This also enforces the + * 'read-only' nature of these values, i.e., this function cannot be + * used to manipulate the face. + * + * `value` is a void pointer because the values returned can be of + * various types. + * + * If either `value` is `NULL` or `value_len` is too small, just the + * required memory size for the requested entry is returned. + * + * The `idx` parameter is used, not only to retrieve elements of, for + * example, the FontMatrix or FontBBox, but also to retrieve name keys + * from the CharStrings dictionary, and the charstrings themselves. It + * is ignored for atomic values. + * + * `PS_DICT_BLUE_SCALE` returns a value that is scaled up by 1000. To + * get the value as in the font stream, you need to divide by 65536000.0 + * (to remove the FT_Fixed scale, and the x1000 scale). + * + * IMPORTANT: Only key/value pairs read by the FreeType interpreter can + * be retrieved. So, for example, PostScript procedures such as NP, ND, + * and RD are not available. Arbitrary keys are, obviously, not be + * available either. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument` error code. + * + * @since: + * 2.4.8 + * + */ + FT_EXPORT( FT_Long ) + FT_Get_PS_Font_Value( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + /* */ + +FT_END_HEADER + +#endif /* T1TABLES_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ttnameid.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ttnameid.h new file mode 100644 index 0000000..37b505a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/ttnameid.h @@ -0,0 +1,1235 @@ +/**************************************************************************** + * + * ttnameid.h + * + * TrueType name ID definitions (specification only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef TTNAMEID_H_ +#define TTNAMEID_H_ + + + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * truetype_tables + */ + + + /************************************************************************** + * + * Possible values for the 'platform' identifier code in the name records + * of an SFNT 'name' table. + * + */ + + + /************************************************************************** + * + * @enum: + * TT_PLATFORM_XXX + * + * @description: + * A list of valid values for the `platform_id` identifier code in + * @FT_CharMapRec and @FT_SfntName structures. + * + * @values: + * TT_PLATFORM_APPLE_UNICODE :: + * Used by Apple to indicate a Unicode character map and/or name entry. + * See @TT_APPLE_ID_XXX for corresponding `encoding_id` values. Note + * that name entries in this format are coded as big-endian UCS-2 + * character codes _only_. + * + * TT_PLATFORM_MACINTOSH :: + * Used by Apple to indicate a MacOS-specific charmap and/or name + * entry. See @TT_MAC_ID_XXX for corresponding `encoding_id` values. + * Note that most TrueType fonts contain an Apple roman charmap to be + * usable on MacOS systems (even if they contain a Microsoft charmap as + * well). + * + * TT_PLATFORM_ISO :: + * This value was used to specify ISO/IEC 10646 charmaps. It is + * however now deprecated. See @TT_ISO_ID_XXX for a list of + * corresponding `encoding_id` values. + * + * TT_PLATFORM_MICROSOFT :: + * Used by Microsoft to indicate Windows-specific charmaps. See + * @TT_MS_ID_XXX for a list of corresponding `encoding_id` values. + * Note that most fonts contain a Unicode charmap using + * (`TT_PLATFORM_MICROSOFT`, @TT_MS_ID_UNICODE_CS). + * + * TT_PLATFORM_CUSTOM :: + * Used to indicate application-specific charmaps. + * + * TT_PLATFORM_ADOBE :: + * This value isn't part of any font format specification, but is used + * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec + * structure. See @TT_ADOBE_ID_XXX. + */ + +#define TT_PLATFORM_APPLE_UNICODE 0 +#define TT_PLATFORM_MACINTOSH 1 +#define TT_PLATFORM_ISO 2 /* deprecated */ +#define TT_PLATFORM_MICROSOFT 3 +#define TT_PLATFORM_CUSTOM 4 +#define TT_PLATFORM_ADOBE 7 /* artificial */ + + + /************************************************************************** + * + * @enum: + * TT_APPLE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id` for + * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. + * + * @values: + * TT_APPLE_ID_DEFAULT :: + * Unicode version 1.0. + * + * TT_APPLE_ID_UNICODE_1_1 :: + * Unicode 1.1; specifies Hangul characters starting at U+34xx. + * + * TT_APPLE_ID_ISO_10646 :: + * Deprecated (identical to preceding). + * + * TT_APPLE_ID_UNICODE_2_0 :: + * Unicode 2.0 and beyond (UTF-16 BMP only). + * + * TT_APPLE_ID_UNICODE_32 :: + * Unicode 3.1 and beyond, using UTF-32. + * + * TT_APPLE_ID_VARIANT_SELECTOR :: + * From Adobe, not Apple. Not a normal cmap. Specifies variations on + * a real cmap. + * + * TT_APPLE_ID_FULL_UNICODE :: + * Used for fallback fonts that provide complete Unicode coverage with + * a type~13 cmap. + */ + +#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ +#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ +#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ +#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ +#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ +#define TT_APPLE_ID_FULL_UNICODE 6 /* used with type 13 cmaps */ + + + /************************************************************************** + * + * @enum: + * TT_MAC_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id` for + * @TT_PLATFORM_MACINTOSH charmaps and name entries. + */ + +#define TT_MAC_ID_ROMAN 0 +#define TT_MAC_ID_JAPANESE 1 +#define TT_MAC_ID_TRADITIONAL_CHINESE 2 +#define TT_MAC_ID_KOREAN 3 +#define TT_MAC_ID_ARABIC 4 +#define TT_MAC_ID_HEBREW 5 +#define TT_MAC_ID_GREEK 6 +#define TT_MAC_ID_RUSSIAN 7 +#define TT_MAC_ID_RSYMBOL 8 +#define TT_MAC_ID_DEVANAGARI 9 +#define TT_MAC_ID_GURMUKHI 10 +#define TT_MAC_ID_GUJARATI 11 +#define TT_MAC_ID_ORIYA 12 +#define TT_MAC_ID_BENGALI 13 +#define TT_MAC_ID_TAMIL 14 +#define TT_MAC_ID_TELUGU 15 +#define TT_MAC_ID_KANNADA 16 +#define TT_MAC_ID_MALAYALAM 17 +#define TT_MAC_ID_SINHALESE 18 +#define TT_MAC_ID_BURMESE 19 +#define TT_MAC_ID_KHMER 20 +#define TT_MAC_ID_THAI 21 +#define TT_MAC_ID_LAOTIAN 22 +#define TT_MAC_ID_GEORGIAN 23 +#define TT_MAC_ID_ARMENIAN 24 +#define TT_MAC_ID_MALDIVIAN 25 +#define TT_MAC_ID_SIMPLIFIED_CHINESE 25 +#define TT_MAC_ID_TIBETAN 26 +#define TT_MAC_ID_MONGOLIAN 27 +#define TT_MAC_ID_GEEZ 28 +#define TT_MAC_ID_SLAVIC 29 +#define TT_MAC_ID_VIETNAMESE 30 +#define TT_MAC_ID_SINDHI 31 +#define TT_MAC_ID_UNINTERP 32 + + + /************************************************************************** + * + * @enum: + * TT_ISO_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id` for @TT_PLATFORM_ISO + * charmaps and name entries. + * + * Their use is now deprecated. + * + * @values: + * TT_ISO_ID_7BIT_ASCII :: + * ASCII. + * TT_ISO_ID_10646 :: + * ISO/10646. + * TT_ISO_ID_8859_1 :: + * Also known as Latin-1. + */ + +#define TT_ISO_ID_7BIT_ASCII 0 +#define TT_ISO_ID_10646 1 +#define TT_ISO_ID_8859_1 2 + + + /************************************************************************** + * + * @enum: + * TT_MS_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id` for + * @TT_PLATFORM_MICROSOFT charmaps and name entries. + * + * @values: + * TT_MS_ID_SYMBOL_CS :: + * Microsoft symbol encoding. See @FT_ENCODING_MS_SYMBOL. + * + * TT_MS_ID_UNICODE_CS :: + * Microsoft WGL4 charmap, matching Unicode. See @FT_ENCODING_UNICODE. + * + * TT_MS_ID_SJIS :: + * Shift JIS Japanese encoding. See @FT_ENCODING_SJIS. + * + * TT_MS_ID_PRC :: + * Chinese encodings as used in the People's Republic of China (PRC). + * This means the encodings GB~2312 and its supersets GBK and GB~18030. + * See @FT_ENCODING_PRC. + * + * TT_MS_ID_BIG_5 :: + * Traditional Chinese as used in Taiwan and Hong Kong. See + * @FT_ENCODING_BIG5. + * + * TT_MS_ID_WANSUNG :: + * Korean Extended Wansung encoding. See @FT_ENCODING_WANSUNG. + * + * TT_MS_ID_JOHAB :: + * Korean Johab encoding. See @FT_ENCODING_JOHAB. + * + * TT_MS_ID_UCS_4 :: + * UCS-4 or UTF-32 charmaps. This has been added to the OpenType + * specification version 1.4 (mid-2001). + */ + +#define TT_MS_ID_SYMBOL_CS 0 +#define TT_MS_ID_UNICODE_CS 1 +#define TT_MS_ID_SJIS 2 +#define TT_MS_ID_PRC 3 +#define TT_MS_ID_BIG_5 4 +#define TT_MS_ID_WANSUNG 5 +#define TT_MS_ID_JOHAB 6 +#define TT_MS_ID_UCS_4 10 + + /* this value is deprecated */ +#define TT_MS_ID_GB2312 TT_MS_ID_PRC + + + /************************************************************************** + * + * @enum: + * TT_ADOBE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id` for @TT_PLATFORM_ADOBE + * charmaps. This is a FreeType-specific extension! + * + * @values: + * TT_ADOBE_ID_STANDARD :: + * Adobe standard encoding. + * TT_ADOBE_ID_EXPERT :: + * Adobe expert encoding. + * TT_ADOBE_ID_CUSTOM :: + * Adobe custom encoding. + * TT_ADOBE_ID_LATIN_1 :: + * Adobe Latin~1 encoding. + */ + +#define TT_ADOBE_ID_STANDARD 0 +#define TT_ADOBE_ID_EXPERT 1 +#define TT_ADOBE_ID_CUSTOM 2 +#define TT_ADOBE_ID_LATIN_1 3 + + + /************************************************************************** + * + * @enum: + * TT_MAC_LANGID_XXX + * + * @description: + * Possible values of the language identifier field in the name records + * of the SFNT 'name' table if the 'platform' identifier code is + * @TT_PLATFORM_MACINTOSH. These values are also used as return values + * for function @FT_Get_CMap_Language_ID. + * + * The canonical source for Apple's IDs is + * + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html + */ + +#define TT_MAC_LANGID_ENGLISH 0 +#define TT_MAC_LANGID_FRENCH 1 +#define TT_MAC_LANGID_GERMAN 2 +#define TT_MAC_LANGID_ITALIAN 3 +#define TT_MAC_LANGID_DUTCH 4 +#define TT_MAC_LANGID_SWEDISH 5 +#define TT_MAC_LANGID_SPANISH 6 +#define TT_MAC_LANGID_DANISH 7 +#define TT_MAC_LANGID_PORTUGUESE 8 +#define TT_MAC_LANGID_NORWEGIAN 9 +#define TT_MAC_LANGID_HEBREW 10 +#define TT_MAC_LANGID_JAPANESE 11 +#define TT_MAC_LANGID_ARABIC 12 +#define TT_MAC_LANGID_FINNISH 13 +#define TT_MAC_LANGID_GREEK 14 +#define TT_MAC_LANGID_ICELANDIC 15 +#define TT_MAC_LANGID_MALTESE 16 +#define TT_MAC_LANGID_TURKISH 17 +#define TT_MAC_LANGID_CROATIAN 18 +#define TT_MAC_LANGID_CHINESE_TRADITIONAL 19 +#define TT_MAC_LANGID_URDU 20 +#define TT_MAC_LANGID_HINDI 21 +#define TT_MAC_LANGID_THAI 22 +#define TT_MAC_LANGID_KOREAN 23 +#define TT_MAC_LANGID_LITHUANIAN 24 +#define TT_MAC_LANGID_POLISH 25 +#define TT_MAC_LANGID_HUNGARIAN 26 +#define TT_MAC_LANGID_ESTONIAN 27 +#define TT_MAC_LANGID_LETTISH 28 +#define TT_MAC_LANGID_SAAMISK 29 +#define TT_MAC_LANGID_FAEROESE 30 +#define TT_MAC_LANGID_FARSI 31 +#define TT_MAC_LANGID_RUSSIAN 32 +#define TT_MAC_LANGID_CHINESE_SIMPLIFIED 33 +#define TT_MAC_LANGID_FLEMISH 34 +#define TT_MAC_LANGID_IRISH 35 +#define TT_MAC_LANGID_ALBANIAN 36 +#define TT_MAC_LANGID_ROMANIAN 37 +#define TT_MAC_LANGID_CZECH 38 +#define TT_MAC_LANGID_SLOVAK 39 +#define TT_MAC_LANGID_SLOVENIAN 40 +#define TT_MAC_LANGID_YIDDISH 41 +#define TT_MAC_LANGID_SERBIAN 42 +#define TT_MAC_LANGID_MACEDONIAN 43 +#define TT_MAC_LANGID_BULGARIAN 44 +#define TT_MAC_LANGID_UKRAINIAN 45 +#define TT_MAC_LANGID_BYELORUSSIAN 46 +#define TT_MAC_LANGID_UZBEK 47 +#define TT_MAC_LANGID_KAZAKH 48 +#define TT_MAC_LANGID_AZERBAIJANI 49 +#define TT_MAC_LANGID_AZERBAIJANI_CYRILLIC_SCRIPT 49 +#define TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT 50 +#define TT_MAC_LANGID_ARMENIAN 51 +#define TT_MAC_LANGID_GEORGIAN 52 +#define TT_MAC_LANGID_MOLDAVIAN 53 +#define TT_MAC_LANGID_KIRGHIZ 54 +#define TT_MAC_LANGID_TAJIKI 55 +#define TT_MAC_LANGID_TURKMEN 56 +#define TT_MAC_LANGID_MONGOLIAN 57 +#define TT_MAC_LANGID_MONGOLIAN_MONGOLIAN_SCRIPT 57 +#define TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT 58 +#define TT_MAC_LANGID_PASHTO 59 +#define TT_MAC_LANGID_KURDISH 60 +#define TT_MAC_LANGID_KASHMIRI 61 +#define TT_MAC_LANGID_SINDHI 62 +#define TT_MAC_LANGID_TIBETAN 63 +#define TT_MAC_LANGID_NEPALI 64 +#define TT_MAC_LANGID_SANSKRIT 65 +#define TT_MAC_LANGID_MARATHI 66 +#define TT_MAC_LANGID_BENGALI 67 +#define TT_MAC_LANGID_ASSAMESE 68 +#define TT_MAC_LANGID_GUJARATI 69 +#define TT_MAC_LANGID_PUNJABI 70 +#define TT_MAC_LANGID_ORIYA 71 +#define TT_MAC_LANGID_MALAYALAM 72 +#define TT_MAC_LANGID_KANNADA 73 +#define TT_MAC_LANGID_TAMIL 74 +#define TT_MAC_LANGID_TELUGU 75 +#define TT_MAC_LANGID_SINHALESE 76 +#define TT_MAC_LANGID_BURMESE 77 +#define TT_MAC_LANGID_KHMER 78 +#define TT_MAC_LANGID_LAO 79 +#define TT_MAC_LANGID_VIETNAMESE 80 +#define TT_MAC_LANGID_INDONESIAN 81 +#define TT_MAC_LANGID_TAGALOG 82 +#define TT_MAC_LANGID_MALAY_ROMAN_SCRIPT 83 +#define TT_MAC_LANGID_MALAY_ARABIC_SCRIPT 84 +#define TT_MAC_LANGID_AMHARIC 85 +#define TT_MAC_LANGID_TIGRINYA 86 +#define TT_MAC_LANGID_GALLA 87 +#define TT_MAC_LANGID_SOMALI 88 +#define TT_MAC_LANGID_SWAHILI 89 +#define TT_MAC_LANGID_RUANDA 90 +#define TT_MAC_LANGID_RUNDI 91 +#define TT_MAC_LANGID_CHEWA 92 +#define TT_MAC_LANGID_MALAGASY 93 +#define TT_MAC_LANGID_ESPERANTO 94 +#define TT_MAC_LANGID_WELSH 128 +#define TT_MAC_LANGID_BASQUE 129 +#define TT_MAC_LANGID_CATALAN 130 +#define TT_MAC_LANGID_LATIN 131 +#define TT_MAC_LANGID_QUECHUA 132 +#define TT_MAC_LANGID_GUARANI 133 +#define TT_MAC_LANGID_AYMARA 134 +#define TT_MAC_LANGID_TATAR 135 +#define TT_MAC_LANGID_UIGHUR 136 +#define TT_MAC_LANGID_DZONGKHA 137 +#define TT_MAC_LANGID_JAVANESE 138 +#define TT_MAC_LANGID_SUNDANESE 139 + + /* The following codes are new as of 2000-03-10 */ +#define TT_MAC_LANGID_GALICIAN 140 +#define TT_MAC_LANGID_AFRIKAANS 141 +#define TT_MAC_LANGID_BRETON 142 +#define TT_MAC_LANGID_INUKTITUT 143 +#define TT_MAC_LANGID_SCOTTISH_GAELIC 144 +#define TT_MAC_LANGID_MANX_GAELIC 145 +#define TT_MAC_LANGID_IRISH_GAELIC 146 +#define TT_MAC_LANGID_TONGAN 147 +#define TT_MAC_LANGID_GREEK_POLYTONIC 148 +#define TT_MAC_LANGID_GREELANDIC 149 +#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 + + + /************************************************************************** + * + * @enum: + * TT_MS_LANGID_XXX + * + * @description: + * Possible values of the language identifier field in the name records + * of the SFNT 'name' table if the 'platform' identifier code is + * @TT_PLATFORM_MICROSOFT. These values are also used as return values + * for function @FT_Get_CMap_Language_ID. + * + * The canonical source for Microsoft's IDs is + * + * https://docs.microsoft.com/en-us/windows/desktop/Intl/language-identifier-constants-and-strings , + * + * however, we only provide macros for language identifiers present in + * the OpenType specification: Microsoft has abandoned the concept of + * LCIDs (language code identifiers), and format~1 of the 'name' table + * provides a better mechanism for languages not covered here. + * + * More legacy values not listed in the reference can be found in the + * @FT_TRUETYPE_IDS_H header file. + */ + +#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 +#define TT_MS_LANGID_ARABIC_IRAQ 0x0801 +#define TT_MS_LANGID_ARABIC_EGYPT 0x0C01 +#define TT_MS_LANGID_ARABIC_LIBYA 0x1001 +#define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 +#define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 +#define TT_MS_LANGID_ARABIC_TUNISIA 0x1C01 +#define TT_MS_LANGID_ARABIC_OMAN 0x2001 +#define TT_MS_LANGID_ARABIC_YEMEN 0x2401 +#define TT_MS_LANGID_ARABIC_SYRIA 0x2801 +#define TT_MS_LANGID_ARABIC_JORDAN 0x2C01 +#define TT_MS_LANGID_ARABIC_LEBANON 0x3001 +#define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 +#define TT_MS_LANGID_ARABIC_UAE 0x3801 +#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3C01 +#define TT_MS_LANGID_ARABIC_QATAR 0x4001 +#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 +#define TT_MS_LANGID_CATALAN_CATALAN 0x0403 +#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 +#define TT_MS_LANGID_CHINESE_PRC 0x0804 +#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0C04 +#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 +#define TT_MS_LANGID_CHINESE_MACAO 0x1404 +#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 +#define TT_MS_LANGID_DANISH_DENMARK 0x0406 +#define TT_MS_LANGID_GERMAN_GERMANY 0x0407 +#define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 +#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0C07 +#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 +#define TT_MS_LANGID_GERMAN_LIECHTENSTEIN 0x1407 +#define TT_MS_LANGID_GREEK_GREECE 0x0408 +#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 +#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 +#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0C09 +#define TT_MS_LANGID_ENGLISH_CANADA 0x1009 +#define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 +#define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 +#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1C09 +#define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 +#define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 +#define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 +#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2C09 +#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 +#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 +#define TT_MS_LANGID_ENGLISH_INDIA 0x4009 +#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 +#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 +#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040A +#define TT_MS_LANGID_SPANISH_MEXICO 0x080A +#define TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT 0x0C0A +#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100A +#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140A +#define TT_MS_LANGID_SPANISH_PANAMA 0x180A +#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1C0A +#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200A +#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240A +#define TT_MS_LANGID_SPANISH_PERU 0x280A +#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2C0A +#define TT_MS_LANGID_SPANISH_ECUADOR 0x300A +#define TT_MS_LANGID_SPANISH_CHILE 0x340A +#define TT_MS_LANGID_SPANISH_URUGUAY 0x380A +#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3C0A +#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400A +#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440A +#define TT_MS_LANGID_SPANISH_HONDURAS 0x480A +#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4C0A +#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500A +#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540A +#define TT_MS_LANGID_FINNISH_FINLAND 0x040B +#define TT_MS_LANGID_FRENCH_FRANCE 0x040C +#define TT_MS_LANGID_FRENCH_BELGIUM 0x080C +#define TT_MS_LANGID_FRENCH_CANADA 0x0C0C +#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100C +#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140C +#define TT_MS_LANGID_FRENCH_MONACO 0x180C +#define TT_MS_LANGID_HEBREW_ISRAEL 0x040D +#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040E +#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040F +#define TT_MS_LANGID_ITALIAN_ITALY 0x0410 +#define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 +#define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 +#define TT_MS_LANGID_KOREAN_KOREA 0x0412 +#define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 +#define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_NYNORSK 0x0814 +#define TT_MS_LANGID_POLISH_POLAND 0x0415 +#define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 +#define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 +#define TT_MS_LANGID_ROMANSH_SWITZERLAND 0x0417 +#define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 +#define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 +#define TT_MS_LANGID_CROATIAN_CROATIA 0x041A +#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081A +#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0C1A +#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101A +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141A +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181A +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x1C1A +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC 0x201A +#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041B +#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041C +#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041D +#define TT_MS_LANGID_SWEDISH_FINLAND 0x081D +#define TT_MS_LANGID_THAI_THAILAND 0x041E +#define TT_MS_LANGID_TURKISH_TURKEY 0x041F +#define TT_MS_LANGID_URDU_PAKISTAN 0x0420 +#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 +#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 +#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 +#define TT_MS_LANGID_SLOVENIAN_SLOVENIA 0x0424 +#define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 +#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 +#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 +#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 +#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042A +#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042B +#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042C +#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082C +#define TT_MS_LANGID_BASQUE_BASQUE 0x042D +#define TT_MS_LANGID_UPPER_SORBIAN_GERMANY 0x042E +#define TT_MS_LANGID_LOWER_SORBIAN_GERMANY 0x082E +#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042F +#define TT_MS_LANGID_SETSWANA_SOUTH_AFRICA 0x0432 +#define TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA 0x0434 +#define TT_MS_LANGID_ISIZULU_SOUTH_AFRICA 0x0435 +#define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 +#define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 +#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 +#define TT_MS_LANGID_HINDI_INDIA 0x0439 +#define TT_MS_LANGID_MALTESE_MALTA 0x043A +#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043B +#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083B +#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3B +#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103B +#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143B +#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183B +#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3B +#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203B +#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243B +#define TT_MS_LANGID_IRISH_IRELAND 0x083C +#define TT_MS_LANGID_MALAY_MALAYSIA 0x043E +#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083E +#define TT_MS_LANGID_KAZAKH_KAZAKHSTAN 0x043F +#define TT_MS_LANGID_KYRGYZ_KYRGYZSTAN /* Cyrillic */ 0x0440 +#define TT_MS_LANGID_KISWAHILI_KENYA 0x0441 +#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 +#define TT_MS_LANGID_TATAR_RUSSIA 0x0444 +#define TT_MS_LANGID_BENGALI_INDIA 0x0445 +#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 +#define TT_MS_LANGID_PUNJABI_INDIA 0x0446 +#define TT_MS_LANGID_GUJARATI_INDIA 0x0447 +#define TT_MS_LANGID_ODIA_INDIA 0x0448 +#define TT_MS_LANGID_TAMIL_INDIA 0x0449 +#define TT_MS_LANGID_TELUGU_INDIA 0x044A +#define TT_MS_LANGID_KANNADA_INDIA 0x044B +#define TT_MS_LANGID_MALAYALAM_INDIA 0x044C +#define TT_MS_LANGID_ASSAMESE_INDIA 0x044D +#define TT_MS_LANGID_MARATHI_INDIA 0x044E +#define TT_MS_LANGID_SANSKRIT_INDIA 0x044F +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 +#define TT_MS_LANGID_MONGOLIAN_PRC 0x0850 +#define TT_MS_LANGID_TIBETAN_PRC 0x0451 +#define TT_MS_LANGID_WELSH_UNITED_KINGDOM 0x0452 +#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 +#define TT_MS_LANGID_LAO_LAOS 0x0454 +#define TT_MS_LANGID_GALICIAN_GALICIAN 0x0456 +#define TT_MS_LANGID_KONKANI_INDIA 0x0457 +#define TT_MS_LANGID_SYRIAC_SYRIA 0x045A +#define TT_MS_LANGID_SINHALA_SRI_LANKA 0x045B +#define TT_MS_LANGID_INUKTITUT_CANADA 0x045D +#define TT_MS_LANGID_INUKTITUT_CANADA_LATIN 0x085D +#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045E +#define TT_MS_LANGID_TAMAZIGHT_ALGERIA 0x085F +#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 +#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 +#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 +#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 +#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 +#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 +#define TT_MS_LANGID_YORUBA_NIGERIA 0x046A +#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046B +#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086B +#define TT_MS_LANGID_QUECHUA_PERU 0x0C6B +#define TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA 0x046C +#define TT_MS_LANGID_BASHKIR_RUSSIA 0x046D +#define TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG 0x046E +#define TT_MS_LANGID_GREENLANDIC_GREENLAND 0x046F +#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 +#define TT_MS_LANGID_YI_PRC 0x0478 +#define TT_MS_LANGID_MAPUDUNGUN_CHILE 0x047A +#define TT_MS_LANGID_MOHAWK_MOHAWK 0x047C +#define TT_MS_LANGID_BRETON_FRANCE 0x047E +#define TT_MS_LANGID_UIGHUR_PRC 0x0480 +#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 +#define TT_MS_LANGID_OCCITAN_FRANCE 0x0482 +#define TT_MS_LANGID_CORSICAN_FRANCE 0x0483 +#define TT_MS_LANGID_ALSATIAN_FRANCE 0x0484 +#define TT_MS_LANGID_YAKUT_RUSSIA 0x0485 +#define TT_MS_LANGID_KICHE_GUATEMALA 0x0486 +#define TT_MS_LANGID_KINYARWANDA_RWANDA 0x0487 +#define TT_MS_LANGID_WOLOF_SENEGAL 0x0488 +#define TT_MS_LANGID_DARI_AFGHANISTAN 0x048C + + /* */ + + + /* legacy macro definitions not present in OpenType 1.8.1 */ +#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 +#define TT_MS_LANGID_CATALAN_SPAIN \ + TT_MS_LANGID_CATALAN_CATALAN +#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 +#define TT_MS_LANGID_CHINESE_MACAU \ + TT_MS_LANGID_CHINESE_MACAO +#define TT_MS_LANGID_GERMAN_LIECHTENSTEI \ + TT_MS_LANGID_GERMAN_LIECHTENSTEIN +#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 +#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 +#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3C09 +#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT \ + TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT +#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40AU +#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1C0C +#define TT_MS_LANGID_FRENCH_REUNION 0x200C +#define TT_MS_LANGID_FRENCH_CONGO 0x240C + /* which was formerly: */ +#define TT_MS_LANGID_FRENCH_ZAIRE \ + TT_MS_LANGID_FRENCH_CONGO +#define TT_MS_LANGID_FRENCH_SENEGAL 0x280C +#define TT_MS_LANGID_FRENCH_CAMEROON 0x2C0C +#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300C +#define TT_MS_LANGID_FRENCH_MALI 0x340C +#define TT_MS_LANGID_FRENCH_MOROCCO 0x380C +#define TT_MS_LANGID_FRENCH_HAITI 0x3C0C +#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40CU +#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA \ + TT_MS_LANGID_KOREAN_KOREA +#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 +#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND \ + TT_MS_LANGID_ROMANSH_SWITZERLAND +#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 +#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 +#define TT_MS_LANGID_URDU_INDIA 0x0820 +#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 +#define TT_MS_LANGID_SLOVENE_SLOVENIA \ + TT_MS_LANGID_SLOVENIAN_SLOVENIA +#define TT_MS_LANGID_FARSI_IRAN 0x0429 +#define TT_MS_LANGID_BASQUE_SPAIN \ + TT_MS_LANGID_BASQUE_BASQUE +#define TT_MS_LANGID_SORBIAN_GERMANY \ + TT_MS_LANGID_UPPER_SORBIAN_GERMANY +#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 +#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 +#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA \ + TT_MS_LANGID_SETSWANA_SOUTH_AFRICA +#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 +#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA \ + TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA +#define TT_MS_LANGID_ZULU_SOUTH_AFRICA \ + TT_MS_LANGID_ISIZULU_SOUTH_AFRICA +#define TT_MS_LANGID_SAAMI_LAPONIA 0x043B + /* the next two values are incorrectly inverted */ +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#define TT_MS_LANGID_YIDDISH_GERMANY 0x043D +#define TT_MS_LANGID_KAZAK_KAZAKSTAN \ + TT_MS_LANGID_KAZAKH_KAZAKHSTAN +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ + TT_MS_LANGID_KYRGYZ_KYRGYZSTAN +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN \ + TT_MS_LANGID_KYRGYZ_KYRGYZSTAN +#define TT_MS_LANGID_SWAHILI_KENYA \ + TT_MS_LANGID_KISWAHILI_KENYA +#define TT_MS_LANGID_TATAR_TATARSTAN \ + TT_MS_LANGID_TATAR_RUSSIA +#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 +#define TT_MS_LANGID_ORIYA_INDIA \ + TT_MS_LANGID_ODIA_INDIA +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN \ + TT_MS_LANGID_MONGOLIAN_PRC +#define TT_MS_LANGID_TIBETAN_CHINA \ + TT_MS_LANGID_TIBETAN_PRC +#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 +#define TT_MS_LANGID_TIBETAN_BHUTAN \ + TT_MS_LANGID_DZONGHKA_BHUTAN +#define TT_MS_LANGID_WELSH_WALES \ + TT_MS_LANGID_WELSH_UNITED_KINGDOM +#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 +#define TT_MS_LANGID_GALICIAN_SPAIN \ + TT_MS_LANGID_GALICIAN_GALICIAN +#define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458 +#define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459 +#define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859 +#define TT_MS_LANGID_SINHALESE_SRI_LANKA \ + TT_MS_LANGID_SINHALA_SRI_LANKA +#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045C +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045F +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN \ + TT_MS_LANGID_TAMAZIGHT_ALGERIA +#define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460 +#define TT_MS_LANGID_KASHMIRI_SASIA 0x0860 +#define TT_MS_LANGID_KASHMIRI_INDIA \ + TT_MS_LANGID_KASHMIRI_SASIA +#define TT_MS_LANGID_NEPALI_INDIA 0x0861 +#define TT_MS_LANGID_DIVEHI_MALDIVES \ + TT_MS_LANGID_DHIVEHI_MALDIVES +#define TT_MS_LANGID_EDO_NIGERIA 0x0466 +#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 +#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 +#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA \ + TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA +#define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \ + TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA +#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 +#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 +#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 +#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 +#define TT_MS_LANGID_TIGRIGNA_ERYTREA \ + TT_MS_LANGID_TIGRIGNA_ERYTHREA +#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 +#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 +#define TT_MS_LANGID_LATIN 0x0476 +#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 +#define TT_MS_LANGID_YI_CHINA \ + TT_MS_LANGID_YI_PRC +#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 +#define TT_MS_LANGID_UIGHUR_CHINA \ + TT_MS_LANGID_UIGHUR_PRC + + + /************************************************************************** + * + * @enum: + * TT_NAME_ID_XXX + * + * @description: + * Possible values of the 'name' identifier field in the name records of + * an SFNT 'name' table. These values are platform independent. + */ + +#define TT_NAME_ID_COPYRIGHT 0 +#define TT_NAME_ID_FONT_FAMILY 1 +#define TT_NAME_ID_FONT_SUBFAMILY 2 +#define TT_NAME_ID_UNIQUE_ID 3 +#define TT_NAME_ID_FULL_NAME 4 +#define TT_NAME_ID_VERSION_STRING 5 +#define TT_NAME_ID_PS_NAME 6 +#define TT_NAME_ID_TRADEMARK 7 + + /* the following values are from the OpenType spec */ +#define TT_NAME_ID_MANUFACTURER 8 +#define TT_NAME_ID_DESIGNER 9 +#define TT_NAME_ID_DESCRIPTION 10 +#define TT_NAME_ID_VENDOR_URL 11 +#define TT_NAME_ID_DESIGNER_URL 12 +#define TT_NAME_ID_LICENSE 13 +#define TT_NAME_ID_LICENSE_URL 14 + /* number 15 is reserved */ +#define TT_NAME_ID_TYPOGRAPHIC_FAMILY 16 +#define TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY 17 +#define TT_NAME_ID_MAC_FULL_NAME 18 + + /* The following code is new as of 2000-01-21 */ +#define TT_NAME_ID_SAMPLE_TEXT 19 + + /* This is new in OpenType 1.3 */ +#define TT_NAME_ID_CID_FINDFONT_NAME 20 + + /* This is new in OpenType 1.5 */ +#define TT_NAME_ID_WWS_FAMILY 21 +#define TT_NAME_ID_WWS_SUBFAMILY 22 + + /* This is new in OpenType 1.7 */ +#define TT_NAME_ID_LIGHT_BACKGROUND 23 +#define TT_NAME_ID_DARK_BACKGROUND 24 + + /* This is new in OpenType 1.8 */ +#define TT_NAME_ID_VARIATIONS_PREFIX 25 + + /* these two values are deprecated */ +#define TT_NAME_ID_PREFERRED_FAMILY TT_NAME_ID_TYPOGRAPHIC_FAMILY +#define TT_NAME_ID_PREFERRED_SUBFAMILY TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY + + + /************************************************************************** + * + * @enum: + * TT_UCR_XXX + * + * @description: + * Possible bit mask values for the `ulUnicodeRangeX` fields in an SFNT + * 'OS/2' table. + */ + + /* ulUnicodeRange1 */ + /* --------------- */ + + /* Bit 0 Basic Latin */ +#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ + /* Bit 1 C1 Controls and Latin-1 Supplement */ +#define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ + /* Bit 2 Latin Extended-A */ +#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ + /* Bit 3 Latin Extended-B */ +#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ + /* Bit 4 IPA Extensions */ + /* Phonetic Extensions */ + /* Phonetic Extensions Supplement */ +#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ + /* U+1D00-U+1D7F */ + /* U+1D80-U+1DBF */ + /* Bit 5 Spacing Modifier Letters */ + /* Modifier Tone Letters */ +#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ + /* U+A700-U+A71F */ + /* Bit 6 Combining Diacritical Marks */ + /* Combining Diacritical Marks Supplement */ +#define TT_UCR_COMBINING_DIACRITICAL_MARKS (1L << 6) /* U+0300-U+036F */ + /* U+1DC0-U+1DFF */ + /* Bit 7 Greek and Coptic */ +#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ + /* Bit 8 Coptic */ +#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ + /* Bit 9 Cyrillic */ + /* Cyrillic Supplement */ + /* Cyrillic Extended-A */ + /* Cyrillic Extended-B */ +#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ + /* U+0500-U+052F */ + /* U+2DE0-U+2DFF */ + /* U+A640-U+A69F */ + /* Bit 10 Armenian */ +#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ + /* Bit 11 Hebrew */ +#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ + /* Bit 12 Vai */ +#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ + /* Bit 13 Arabic */ + /* Arabic Supplement */ +#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ + /* U+0750-U+077F */ + /* Bit 14 NKo */ +#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ + /* Bit 15 Devanagari */ +#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ + /* Bit 16 Bengali */ +#define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ + /* Bit 17 Gurmukhi */ +#define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ + /* Bit 18 Gujarati */ +#define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ + /* Bit 19 Oriya */ +#define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ + /* Bit 20 Tamil */ +#define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ + /* Bit 21 Telugu */ +#define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ + /* Bit 22 Kannada */ +#define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ + /* Bit 23 Malayalam */ +#define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ + /* Bit 24 Thai */ +#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ + /* Bit 25 Lao */ +#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ + /* Bit 26 Georgian */ + /* Georgian Supplement */ +#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ + /* U+2D00-U+2D2F */ + /* Bit 27 Balinese */ +#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ + /* Bit 28 Hangul Jamo */ +#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ + /* Bit 29 Latin Extended Additional */ + /* Latin Extended-C */ + /* Latin Extended-D */ +#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ + /* U+2C60-U+2C7F */ + /* U+A720-U+A7FF */ + /* Bit 30 Greek Extended */ +#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ + /* Bit 31 General Punctuation */ + /* Supplemental Punctuation */ +#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ + /* U+2E00-U+2E7F */ + + /* ulUnicodeRange2 */ + /* --------------- */ + + /* Bit 32 Superscripts And Subscripts */ +#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ + /* Bit 33 Currency Symbols */ +#define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ + /* Bit 34 Combining Diacritical Marks For Symbols */ +#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ + (1L << 2) /* U+20D0-U+20FF */ + /* Bit 35 Letterlike Symbols */ +#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ + /* Bit 36 Number Forms */ +#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ + /* Bit 37 Arrows */ + /* Supplemental Arrows-A */ + /* Supplemental Arrows-B */ + /* Miscellaneous Symbols and Arrows */ +#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ + /* U+27F0-U+27FF */ + /* U+2900-U+297F */ + /* U+2B00-U+2BFF */ + /* Bit 38 Mathematical Operators */ + /* Supplemental Mathematical Operators */ + /* Miscellaneous Mathematical Symbols-A */ + /* Miscellaneous Mathematical Symbols-B */ +#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ + /* U+2A00-U+2AFF */ + /* U+27C0-U+27EF */ + /* U+2980-U+29FF */ + /* Bit 39 Miscellaneous Technical */ +#define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ + /* Bit 40 Control Pictures */ +#define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ + /* Bit 41 Optical Character Recognition */ +#define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ + /* Bit 42 Enclosed Alphanumerics */ +#define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ + /* Bit 43 Box Drawing */ +#define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ + /* Bit 44 Block Elements */ +#define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ + /* Bit 45 Geometric Shapes */ +#define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ + /* Bit 46 Miscellaneous Symbols */ +#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ + /* Bit 47 Dingbats */ +#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ + /* Bit 48 CJK Symbols and Punctuation */ +#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ + /* Bit 49 Hiragana */ +#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ + /* Bit 50 Katakana */ + /* Katakana Phonetic Extensions */ +#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ + /* U+31F0-U+31FF */ + /* Bit 51 Bopomofo */ + /* Bopomofo Extended */ +#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ + /* U+31A0-U+31BF */ + /* Bit 52 Hangul Compatibility Jamo */ +#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ + /* Bit 53 Phags-Pa */ +#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ +#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ +#define TT_UCR_PHAGSPA + /* Bit 54 Enclosed CJK Letters and Months */ +#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ + /* Bit 55 CJK Compatibility */ +#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ + /* Bit 56 Hangul Syllables */ +#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ + /* Bit 57 High Surrogates */ + /* High Private Use Surrogates */ + /* Low Surrogates */ + + /* According to OpenType specs v.1.3+, */ + /* setting bit 57 implies that there is */ + /* at least one codepoint beyond the */ + /* Basic Multilingual Plane that is */ + /* supported by this font. So it really */ + /* means >= U+10000. */ +#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ + /* U+DB80-U+DBFF */ + /* U+DC00-U+DFFF */ +#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES + /* Bit 58 Phoenician */ +#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ + /* Bit 59 CJK Unified Ideographs */ + /* CJK Radicals Supplement */ + /* Kangxi Radicals */ + /* Ideographic Description Characters */ + /* CJK Unified Ideographs Extension A */ + /* CJK Unified Ideographs Extension B */ + /* Kanbun */ +#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ + /* U+2E80-U+2EFF */ + /* U+2F00-U+2FDF */ + /* U+2FF0-U+2FFF */ + /* U+3400-U+4DB5 */ + /*U+20000-U+2A6DF*/ + /* U+3190-U+319F */ + /* Bit 60 Private Use */ +#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ + /* Bit 61 CJK Strokes */ + /* CJK Compatibility Ideographs */ + /* CJK Compatibility Ideographs Supplement */ +#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ + /* U+F900-U+FAFF */ + /*U+2F800-U+2FA1F*/ + /* Bit 62 Alphabetic Presentation Forms */ +#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ + /* Bit 63 Arabic Presentation Forms-A */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_A (1L << 31) /* U+FB50-U+FDFF */ + + /* ulUnicodeRange3 */ + /* --------------- */ + + /* Bit 64 Combining Half Marks */ +#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ + /* Bit 65 Vertical forms */ + /* CJK Compatibility Forms */ +#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ + /* U+FE30-U+FE4F */ + /* Bit 66 Small Form Variants */ +#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ + /* Bit 67 Arabic Presentation Forms-B */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_B (1L << 3) /* U+FE70-U+FEFE */ + /* Bit 68 Halfwidth and Fullwidth Forms */ +#define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ + /* Bit 69 Specials */ +#define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ + /* Bit 70 Tibetan */ +#define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ + /* Bit 71 Syriac */ +#define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ + /* Bit 72 Thaana */ +#define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ + /* Bit 73 Sinhala */ +#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ + /* Bit 74 Myanmar */ +#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ + /* Bit 75 Ethiopic */ + /* Ethiopic Supplement */ + /* Ethiopic Extended */ +#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ + /* U+1380-U+139F */ + /* U+2D80-U+2DDF */ + /* Bit 76 Cherokee */ +#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ + /* Bit 77 Unified Canadian Aboriginal Syllabics */ +#define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ + /* Bit 78 Ogham */ +#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ + /* Bit 79 Runic */ +#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ + /* Bit 80 Khmer */ + /* Khmer Symbols */ +#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ + /* U+19E0-U+19FF */ + /* Bit 81 Mongolian */ +#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ + /* Bit 82 Braille Patterns */ +#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ + /* Bit 83 Yi Syllables */ + /* Yi Radicals */ +#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ + /* U+A490-U+A4CF */ + /* Bit 84 Tagalog */ + /* Hanunoo */ + /* Buhid */ + /* Tagbanwa */ +#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ + /* U+1720-U+173F */ + /* U+1740-U+175F */ + /* U+1760-U+177F */ + /* Bit 85 Old Italic */ +#define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ + /* Bit 86 Gothic */ +#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ + /* Bit 87 Deseret */ +#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ + /* Bit 88 Byzantine Musical Symbols */ + /* Musical Symbols */ + /* Ancient Greek Musical Notation */ +#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ + /*U+1D100-U+1D1FF*/ + /*U+1D200-U+1D24F*/ + /* Bit 89 Mathematical Alphanumeric Symbols */ +#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ + /* Bit 90 Private Use (plane 15) */ + /* Private Use (plane 16) */ +#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ + /*U+100000-U+10FFFD*/ + /* Bit 91 Variation Selectors */ + /* Variation Selectors Supplement */ +#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ + /*U+E0100-U+E01EF*/ + /* Bit 92 Tags */ +#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ + /* Bit 93 Limbu */ +#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ + /* Bit 94 Tai Le */ +#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ + /* Bit 95 New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ + + /* ulUnicodeRange4 */ + /* --------------- */ + + /* Bit 96 Buginese */ +#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ + /* Bit 97 Glagolitic */ +#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ + /* Bit 98 Tifinagh */ +#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ + /* Bit 99 Yijing Hexagram Symbols */ +#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ + /* Bit 100 Syloti Nagri */ +#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ + /* Bit 101 Linear B Syllabary */ + /* Linear B Ideograms */ + /* Aegean Numbers */ +#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ + /*U+10080-U+100FF*/ + /*U+10100-U+1013F*/ + /* Bit 102 Ancient Greek Numbers */ +#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ + /* Bit 103 Ugaritic */ +#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ + /* Bit 104 Old Persian */ +#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ + /* Bit 105 Shavian */ +#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ + /* Bit 106 Osmanya */ +#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ + /* Bit 107 Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ + /* Bit 108 Kharoshthi */ +#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ + /* Bit 109 Tai Xuan Jing Symbols */ +#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ + /* Bit 110 Cuneiform */ + /* Cuneiform Numbers and Punctuation */ +#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ + /*U+12400-U+1247F*/ + /* Bit 111 Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ + /* Bit 112 Sundanese */ +#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ + /* Bit 113 Lepcha */ +#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ + /* Bit 114 Ol Chiki */ +#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ + /* Bit 115 Saurashtra */ +#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ + /* Bit 116 Kayah Li */ +#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ + /* Bit 117 Rejang */ +#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ + /* Bit 118 Cham */ +#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ + /* Bit 119 Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ + /* Bit 120 Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ + /* Bit 121 Carian */ + /* Lycian */ + /* Lydian */ +#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ + /*U+10280-U+1029F*/ + /*U+10920-U+1093F*/ + /* Bit 122 Domino Tiles */ + /* Mahjong Tiles */ +#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ + /*U+1F000-U+1F02F*/ + /* Bit 123-127 Reserved for process-internal usage */ + + /* */ + + /* for backward compatibility with older FreeType versions */ +#define TT_UCR_ARABIC_PRESENTATION_A \ + TT_UCR_ARABIC_PRESENTATION_FORMS_A +#define TT_UCR_ARABIC_PRESENTATION_B \ + TT_UCR_ARABIC_PRESENTATION_FORMS_B + +#define TT_UCR_COMBINING_DIACRITICS \ + TT_UCR_COMBINING_DIACRITICAL_MARKS +#define TT_UCR_COMBINING_DIACRITICS_SYMB \ + TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB + + +FT_END_HEADER + +#endif /* TTNAMEID_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/tttables.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/tttables.h new file mode 100644 index 0000000..21664df --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/tttables.h @@ -0,0 +1,855 @@ +/**************************************************************************** + * + * tttables.h + * + * Basic SFNT/TrueType tables definitions and interface + * (specification only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef TTTABLES_H_ +#define TTTABLES_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * truetype_tables + * + * @title: + * TrueType Tables + * + * @abstract: + * TrueType-specific table types and functions. + * + * @description: + * This section contains definitions of some basic tables specific to + * TrueType and OpenType as well as some routines used to access and + * process them. + * + * @order: + * TT_Header + * TT_HoriHeader + * TT_VertHeader + * TT_OS2 + * TT_Postscript + * TT_PCLT + * TT_MaxProfile + * + * FT_Sfnt_Tag + * FT_Get_Sfnt_Table + * FT_Load_Sfnt_Table + * FT_Sfnt_Table_Info + * + * FT_Get_CMap_Language_ID + * FT_Get_CMap_Format + * + * FT_PARAM_TAG_UNPATENTED_HINTING + * + */ + + + /************************************************************************** + * + * @struct: + * TT_Header + * + * @description: + * A structure to model a TrueType font header table. All fields follow + * the OpenType specification. The 64-bit timestamps are stored in + * two-element arrays `Created` and `Modified`, first the upper then + * the lower 32~bits. + */ + typedef struct TT_Header_ + { + FT_Fixed Table_Version; + FT_Fixed Font_Revision; + + FT_Long CheckSum_Adjust; + FT_Long Magic_Number; + + FT_UShort Flags; + FT_UShort Units_Per_EM; + + FT_ULong Created [2]; + FT_ULong Modified[2]; + + FT_Short xMin; + FT_Short yMin; + FT_Short xMax; + FT_Short yMax; + + FT_UShort Mac_Style; + FT_UShort Lowest_Rec_PPEM; + + FT_Short Font_Direction; + FT_Short Index_To_Loc_Format; + FT_Short Glyph_Data_Format; + + } TT_Header; + + + /************************************************************************** + * + * @struct: + * TT_HoriHeader + * + * @description: + * A structure to model a TrueType horizontal header, the 'hhea' table, + * as well as the corresponding horizontal metrics table, 'hmtx'. + * + * @fields: + * Version :: + * The table version. + * + * Ascender :: + * The font's ascender, i.e., the distance from the baseline to the + * top-most of all glyph points found in the font. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoAscender` field of the 'OS/2' table instead + * if you want the correct one. + * + * Descender :: + * The font's descender, i.e., the distance from the baseline to the + * bottom-most of all glyph points found in the font. It is negative. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoDescender` field of the 'OS/2' table + * instead if you want the correct one. + * + * Line_Gap :: + * The font's line gap, i.e., the distance to add to the ascender and + * descender to get the BTB, i.e., the baseline-to-baseline distance + * for the font. + * + * advance_Width_Max :: + * This field is the maximum of all advance widths found in the font. + * It can be used to compute the maximum width of an arbitrary string + * of text. + * + * min_Left_Side_Bearing :: + * The minimum left side bearing of all glyphs within the font. + * + * min_Right_Side_Bearing :: + * The minimum right side bearing of all glyphs within the font. + * + * xMax_Extent :: + * The maximum horizontal extent (i.e., the 'width' of a glyph's + * bounding box) for all glyphs in the font. + * + * caret_Slope_Rise :: + * The rise coefficient of the cursor's slope of the cursor + * (slope=rise/run). + * + * caret_Slope_Run :: + * The run coefficient of the cursor's slope. + * + * caret_Offset :: + * The cursor's offset for slanted fonts. + * + * Reserved :: + * 8~reserved bytes. + * + * metric_Data_Format :: + * Always~0. + * + * number_Of_HMetrics :: + * Number of HMetrics entries in the 'hmtx' table -- this value can be + * smaller than the total number of glyphs in the font. + * + * long_metrics :: + * A pointer into the 'hmtx' table. + * + * short_metrics :: + * A pointer into the 'hmtx' table. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `caret_Slope_Rise`, + * `caret_Slope_Run`, and `caret_Offset`. + */ + typedef struct TT_HoriHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Width_Max; /* advance width maximum */ + + FT_Short min_Left_Side_Bearing; /* minimum left-sb */ + FT_Short min_Right_Side_Bearing; /* minimum right-sb */ + FT_Short xMax_Extent; /* xmax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_HMetrics; + + /* The following fields are not defined by the OpenType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* 'hmtx' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_HoriHeader; + + + /************************************************************************** + * + * @struct: + * TT_VertHeader + * + * @description: + * A structure used to model a TrueType vertical header, the 'vhea' + * table, as well as the corresponding vertical metrics table, 'vmtx'. + * + * @fields: + * Version :: + * The table version. + * + * Ascender :: + * The font's ascender, i.e., the distance from the baseline to the + * top-most of all glyph points found in the font. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoAscender` field of the 'OS/2' table instead + * if you want the correct one. + * + * Descender :: + * The font's descender, i.e., the distance from the baseline to the + * bottom-most of all glyph points found in the font. It is negative. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoDescender` field of the 'OS/2' table + * instead if you want the correct one. + * + * Line_Gap :: + * The font's line gap, i.e., the distance to add to the ascender and + * descender to get the BTB, i.e., the baseline-to-baseline distance + * for the font. + * + * advance_Height_Max :: + * This field is the maximum of all advance heights found in the font. + * It can be used to compute the maximum height of an arbitrary string + * of text. + * + * min_Top_Side_Bearing :: + * The minimum top side bearing of all glyphs within the font. + * + * min_Bottom_Side_Bearing :: + * The minimum bottom side bearing of all glyphs within the font. + * + * yMax_Extent :: + * The maximum vertical extent (i.e., the 'height' of a glyph's + * bounding box) for all glyphs in the font. + * + * caret_Slope_Rise :: + * The rise coefficient of the cursor's slope of the cursor + * (slope=rise/run). + * + * caret_Slope_Run :: + * The run coefficient of the cursor's slope. + * + * caret_Offset :: + * The cursor's offset for slanted fonts. + * + * Reserved :: + * 8~reserved bytes. + * + * metric_Data_Format :: + * Always~0. + * + * number_Of_VMetrics :: + * Number of VMetrics entries in the 'vmtx' table -- this value can be + * smaller than the total number of glyphs in the font. + * + * long_metrics :: + * A pointer into the 'vmtx' table. + * + * short_metrics :: + * A pointer into the 'vmtx' table. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `Ascender`, `Descender`, + * `Line_Gap`, `caret_Slope_Rise`, `caret_Slope_Run`, and `caret_Offset`. + */ + typedef struct TT_VertHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Height_Max; /* advance height maximum */ + + FT_Short min_Top_Side_Bearing; /* minimum top-sb */ + FT_Short min_Bottom_Side_Bearing; /* minimum bottom-sb */ + FT_Short yMax_Extent; /* ymax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_VMetrics; + + /* The following fields are not defined by the OpenType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* 'vmtx' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_VertHeader; + + + /************************************************************************** + * + * @struct: + * TT_OS2 + * + * @description: + * A structure to model a TrueType 'OS/2' table. All fields comply to + * the OpenType specification. + * + * Note that we now support old Mac fonts that do not include an 'OS/2' + * table. In this case, the `version` field is always set to 0xFFFF. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `sCapHeight`, `sTypoAscender`, + * `sTypoDescender`, `sTypoLineGap`, `sxHeight`, `usWinAscent`, + * `usWinDescent`, `yStrikeoutPosition`, `yStrikeoutSize`, + * `ySubscriptXOffset`, `ySubScriptXSize`, `ySubscriptYOffset`, + * `ySubscriptYSize`, `ySuperscriptXOffset`, `ySuperscriptXSize`, + * `ySuperscriptYOffset`, and `ySuperscriptYSize`. + * + * Possible values for bits in the `ulUnicodeRangeX` fields are given by + * the @TT_UCR_XXX macros. + */ + + typedef struct TT_OS2_ + { + FT_UShort version; /* 0x0001 - more or 0xFFFF */ + FT_Short xAvgCharWidth; + FT_UShort usWeightClass; + FT_UShort usWidthClass; + FT_UShort fsType; + FT_Short ySubscriptXSize; + FT_Short ySubscriptYSize; + FT_Short ySubscriptXOffset; + FT_Short ySubscriptYOffset; + FT_Short ySuperscriptXSize; + FT_Short ySuperscriptYSize; + FT_Short ySuperscriptXOffset; + FT_Short ySuperscriptYOffset; + FT_Short yStrikeoutSize; + FT_Short yStrikeoutPosition; + FT_Short sFamilyClass; + + FT_Byte panose[10]; + + FT_ULong ulUnicodeRange1; /* Bits 0-31 */ + FT_ULong ulUnicodeRange2; /* Bits 32-63 */ + FT_ULong ulUnicodeRange3; /* Bits 64-95 */ + FT_ULong ulUnicodeRange4; /* Bits 96-127 */ + + FT_Char achVendID[4]; + + FT_UShort fsSelection; + FT_UShort usFirstCharIndex; + FT_UShort usLastCharIndex; + FT_Short sTypoAscender; + FT_Short sTypoDescender; + FT_Short sTypoLineGap; + FT_UShort usWinAscent; + FT_UShort usWinDescent; + + /* only version 1 and higher: */ + + FT_ULong ulCodePageRange1; /* Bits 0-31 */ + FT_ULong ulCodePageRange2; /* Bits 32-63 */ + + /* only version 2 and higher: */ + + FT_Short sxHeight; + FT_Short sCapHeight; + FT_UShort usDefaultChar; + FT_UShort usBreakChar; + FT_UShort usMaxContext; + + /* only version 5 and higher: */ + + FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */ + FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ + + } TT_OS2; + + + /************************************************************************** + * + * @struct: + * TT_Postscript + * + * @description: + * A structure to model a TrueType 'post' table. All fields comply to + * the OpenType specification. This structure does not reference a + * font's PostScript glyph names; use @FT_Get_Glyph_Name to retrieve + * them. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `underlinePosition` and + * `underlineThickness`. + */ + typedef struct TT_Postscript_ + { + FT_Fixed FormatType; + FT_Fixed italicAngle; + FT_Short underlinePosition; + FT_Short underlineThickness; + FT_ULong isFixedPitch; + FT_ULong minMemType42; + FT_ULong maxMemType42; + FT_ULong minMemType1; + FT_ULong maxMemType1; + + /* Glyph names follow in the 'post' table, but we don't */ + /* load them by default. */ + + } TT_Postscript; + + + /************************************************************************** + * + * @struct: + * TT_PCLT + * + * @description: + * A structure to model a TrueType 'PCLT' table. All fields comply to + * the OpenType specification. + */ + typedef struct TT_PCLT_ + { + FT_Fixed Version; + FT_ULong FontNumber; + FT_UShort Pitch; + FT_UShort xHeight; + FT_UShort Style; + FT_UShort TypeFamily; + FT_UShort CapHeight; + FT_UShort SymbolSet; + FT_Char TypeFace[16]; + FT_Char CharacterComplement[8]; + FT_Char FileName[6]; + FT_Char StrokeWeight; + FT_Char WidthType; + FT_Byte SerifStyle; + FT_Byte Reserved; + + } TT_PCLT; + + + /************************************************************************** + * + * @struct: + * TT_MaxProfile + * + * @description: + * The maximum profile ('maxp') table contains many max values, which can + * be used to pre-allocate arrays for speeding up glyph loading and + * hinting. + * + * @fields: + * version :: + * The version number. + * + * numGlyphs :: + * The number of glyphs in this TrueType font. + * + * maxPoints :: + * The maximum number of points in a non-composite TrueType glyph. See + * also `maxCompositePoints`. + * + * maxContours :: + * The maximum number of contours in a non-composite TrueType glyph. + * See also `maxCompositeContours`. + * + * maxCompositePoints :: + * The maximum number of points in a composite TrueType glyph. See + * also `maxPoints`. + * + * maxCompositeContours :: + * The maximum number of contours in a composite TrueType glyph. See + * also `maxContours`. + * + * maxZones :: + * The maximum number of zones used for glyph hinting. + * + * maxTwilightPoints :: + * The maximum number of points in the twilight zone used for glyph + * hinting. + * + * maxStorage :: + * The maximum number of elements in the storage area used for glyph + * hinting. + * + * maxFunctionDefs :: + * The maximum number of function definitions in the TrueType bytecode + * for this font. + * + * maxInstructionDefs :: + * The maximum number of instruction definitions in the TrueType + * bytecode for this font. + * + * maxStackElements :: + * The maximum number of stack elements used during bytecode + * interpretation. + * + * maxSizeOfInstructions :: + * The maximum number of TrueType opcodes used for glyph hinting. + * + * maxComponentElements :: + * The maximum number of simple (i.e., non-composite) glyphs in a + * composite glyph. + * + * maxComponentDepth :: + * The maximum nesting depth of composite glyphs. + * + * @note: + * This structure is only used during font loading. + */ + typedef struct TT_MaxProfile_ + { + FT_Fixed version; + FT_UShort numGlyphs; + FT_UShort maxPoints; + FT_UShort maxContours; + FT_UShort maxCompositePoints; + FT_UShort maxCompositeContours; + FT_UShort maxZones; + FT_UShort maxTwilightPoints; + FT_UShort maxStorage; + FT_UShort maxFunctionDefs; + FT_UShort maxInstructionDefs; + FT_UShort maxStackElements; + FT_UShort maxSizeOfInstructions; + FT_UShort maxComponentElements; + FT_UShort maxComponentDepth; + + } TT_MaxProfile; + + + /************************************************************************** + * + * @enum: + * FT_Sfnt_Tag + * + * @description: + * An enumeration to specify indices of SFNT tables loaded and parsed by + * FreeType during initialization of an SFNT font. Used in the + * @FT_Get_Sfnt_Table API function. + * + * @values: + * FT_SFNT_HEAD :: + * To access the font's @TT_Header structure. + * + * FT_SFNT_MAXP :: + * To access the font's @TT_MaxProfile structure. + * + * FT_SFNT_OS2 :: + * To access the font's @TT_OS2 structure. + * + * FT_SFNT_HHEA :: + * To access the font's @TT_HoriHeader structure. + * + * FT_SFNT_VHEA :: + * To access the font's @TT_VertHeader structure. + * + * FT_SFNT_POST :: + * To access the font's @TT_Postscript structure. + * + * FT_SFNT_PCLT :: + * To access the font's @TT_PCLT structure. + */ + typedef enum FT_Sfnt_Tag_ + { + FT_SFNT_HEAD, + FT_SFNT_MAXP, + FT_SFNT_OS2, + FT_SFNT_HHEA, + FT_SFNT_VHEA, + FT_SFNT_POST, + FT_SFNT_PCLT, + + FT_SFNT_MAX + + } FT_Sfnt_Tag; + + /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag` */ + /* values instead */ +#define ft_sfnt_head FT_SFNT_HEAD +#define ft_sfnt_maxp FT_SFNT_MAXP +#define ft_sfnt_os2 FT_SFNT_OS2 +#define ft_sfnt_hhea FT_SFNT_HHEA +#define ft_sfnt_vhea FT_SFNT_VHEA +#define ft_sfnt_post FT_SFNT_POST +#define ft_sfnt_pclt FT_SFNT_PCLT + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_Table + * + * @description: + * Return a pointer to a given SFNT table stored within a face. + * + * @input: + * face :: + * A handle to the source. + * + * tag :: + * The index of the SFNT table. + * + * @return: + * A type-less pointer to the table. This will be `NULL` in case of + * error, or if the corresponding table was not found **OR** loaded from + * the file. + * + * Use a typecast according to `tag` to access the structure elements. + * + * @note: + * The table is owned by the face object and disappears with it. + * + * This function is only useful to access SFNT tables that are loaded by + * the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for a + * list. + * + * @example: + * Here is an example demonstrating access to the 'vhea' table. + * + * ``` + * TT_VertHeader* vert_header; + * + * + * vert_header = + * (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); + * ``` + */ + FT_EXPORT( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); + + + /************************************************************************** + * + * @function: + * FT_Load_Sfnt_Table + * + * @description: + * Load any SFNT font table into client memory. + * + * @input: + * face :: + * A handle to the source face. + * + * tag :: + * The four-byte tag of the table to load. Use value~0 if you want to + * access the whole font file. Otherwise, you can use one of the + * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new + * one with @FT_MAKE_TAG. + * + * offset :: + * The starting offset in the table (or file if tag~==~0). + * + * @output: + * buffer :: + * The target buffer address. The client must ensure that the memory + * array is big enough to hold the data. + * + * @inout: + * length :: + * If the `length` parameter is `NULL`, try to load the whole table. + * Return an error code if it fails. + * + * Else, if `*length` is~0, exit immediately while returning the + * table's (or file) full size in it. + * + * Else the number of bytes to read from the table or file, from the + * starting offset. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If you need to determine the table's length you should first call this + * function with `*length` set to~0, as in the following example: + * + * ``` + * FT_ULong length = 0; + * + * + * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); + * if ( error ) { ... table does not exist ... } + * + * buffer = malloc( length ); + * if ( buffer == NULL ) { ... not enough memory ... } + * + * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); + * if ( error ) { ... could not load table ... } + * ``` + * + * Note that structures like @TT_Header or @TT_OS2 can't be used with + * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that + * those structures depend on the processor architecture, with varying + * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). + * + */ + FT_EXPORT( FT_Error ) + FT_Load_Sfnt_Table( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + + /************************************************************************** + * + * @function: + * FT_Sfnt_Table_Info + * + * @description: + * Return information on an SFNT table. + * + * @input: + * face :: + * A handle to the source face. + * + * table_index :: + * The index of an SFNT table. The function returns + * FT_Err_Table_Missing for an invalid value. + * + * @inout: + * tag :: + * The name tag of the SFNT table. If the value is `NULL`, + * `table_index` is ignored, and `length` returns the number of SFNT + * tables in the font. + * + * @output: + * length :: + * The length of the SFNT table (or the number of SFNT tables, + * depending on `tag`). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While parsing fonts, FreeType handles SFNT tables with length zero as + * missing. + * + */ + FT_EXPORT( FT_Error ) + FT_Sfnt_Table_Info( FT_Face face, + FT_UInt table_index, + FT_ULong *tag, + FT_ULong *length ); + + + /************************************************************************** + * + * @function: + * FT_Get_CMap_Language_ID + * + * @description: + * Return cmap language ID as specified in the OpenType standard. + * Definitions of language ID values are in file @FT_TRUETYPE_IDS_H. + * + * @input: + * charmap :: + * The target charmap. + * + * @return: + * The language ID of `charmap`. If `charmap` doesn't belong to an SFNT + * face, just return~0 as the default value. + * + * For a format~14 cmap (to access Unicode IVS), the return value is + * 0xFFFFFFFF. + */ + FT_EXPORT( FT_ULong ) + FT_Get_CMap_Language_ID( FT_CharMap charmap ); + + + /************************************************************************** + * + * @function: + * FT_Get_CMap_Format + * + * @description: + * Return the format of an SFNT 'cmap' table. + * + * @input: + * charmap :: + * The target charmap. + * + * @return: + * The format of `charmap`. If `charmap` doesn't belong to an SFNT face, + * return -1. + */ + FT_EXPORT( FT_Long ) + FT_Get_CMap_Format( FT_CharMap charmap ); + + /* */ + + +FT_END_HEADER + +#endif /* TTTABLES_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/tttags.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/tttags.h new file mode 100644 index 0000000..8b80764 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/freetype/tttags.h @@ -0,0 +1,124 @@ +/**************************************************************************** + * + * tttags.h + * + * Tags for TrueType and OpenType tables (specification only). + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef TTAGS_H_ +#define TTAGS_H_ + + +#include + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + +#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' ) +#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' ) +#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' ) +#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' ) +#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) +#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) +#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) +#define TTAG_CBDT FT_MAKE_TAG( 'C', 'B', 'D', 'T' ) +#define TTAG_CBLC FT_MAKE_TAG( 'C', 'B', 'L', 'C' ) +#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CFF2 FT_MAKE_TAG( 'C', 'F', 'F', '2' ) +#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) +#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) +#define TTAG_COLR FT_MAKE_TAG( 'C', 'O', 'L', 'R' ) +#define TTAG_CPAL FT_MAKE_TAG( 'C', 'P', 'A', 'L' ) +#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) +#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) +#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) +#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' ) +#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) +#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) +#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) +#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) +#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) +#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) +#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' ) +#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' ) +#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' ) +#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) +#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) +#define TTAG_HVAR FT_MAKE_TAG( 'H', 'V', 'A', 'R' ) +#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) +#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) +#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) +#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) +#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' ) +#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' ) +#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) +#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) +#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) +#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) +#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) +#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) +#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) +#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) +#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) +#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' ) +#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' ) +#define TTAG_MVAR FT_MAKE_TAG( 'M', 'V', 'A', 'R' ) +#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) +#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' ) +#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) +#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) +#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) +#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) +#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) +#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sbix FT_MAKE_TAG( 's', 'b', 'i', 'x' ) +#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) +#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) +#define TTAG_SVG FT_MAKE_TAG( 'S', 'V', 'G', ' ' ) +#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) +#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) +#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) +#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) +#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) +#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) +#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) +#define TTAG_VVAR FT_MAKE_TAG( 'V', 'V', 'A', 'R' ) +#define TTAG_wOFF FT_MAKE_TAG( 'w', 'O', 'F', 'F' ) +#define TTAG_wOF2 FT_MAKE_TAG( 'w', 'O', 'F', '2' ) + +/* used by "Keyboard.dfont" on legacy Mac OS X */ +#define TTAG_0xA5kbd FT_MAKE_TAG( 0xA5, 'k', 'b', 'd' ) + +/* used by "LastResort.dfont" on legacy Mac OS X */ +#define TTAG_0xA5lst FT_MAKE_TAG( 0xA5, 'l', 's', 't' ) + + +FT_END_HEADER + +#endif /* TTAGS_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/ft2build.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/ft2build.h new file mode 100644 index 0000000..2543ac4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/freetype2/ft2build.h @@ -0,0 +1,42 @@ +/**************************************************************************** + * + * ft2build.h + * + * FreeType 2 build and setup macros. + * + * Copyright (C) 1996-2022 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This is the 'entry point' for FreeType header file inclusions, to be + * loaded before all other header files. + * + * A typical example is + * + * ``` + * #include + * #include + * ``` + * + */ + + +#ifndef FT2BUILD_H_ +#define FT2BUILD_H_ + +#include + +#endif /* FT2BUILD_H_ */ + + +/* END */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-arabic.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-arabic.h new file mode 100644 index 0000000..ea82c68 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-arabic.h @@ -0,0 +1,81 @@ +/* fribidi-arabic.h - do Arabic shaping to presentation forms + * + * Copyright (C) 2005 Behdad Esfahbod + * + * This file is part of GNU FriBidi. + * + * GNU FriBidi is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GNU FriBidi 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with GNU FriBidi; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * For licensing issues, contact or write to + * Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran. + * + * Author(s): + * Behdad Esfahbod, 2005 + */ +#ifndef _FRIBIDI_ARABIC_H +#define _FRIBIDI_ARABIC_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" +#include "fribidi-flags.h" +#include "fribidi-bidi-types.h" +#include "fribidi-joining.h" + +#include "fribidi-begindecls.h" + + +/* fribidi_shape_arabic - do Arabic shaping + * + * The actual shaping that is done depends on the flags set. Only flags + * starting with FRIBIDI_FLAG_SHAPE_ARAB_ affect this function. + * Currently these are: + * + * * FRIBIDI_FLAG_SHAPE_MIRRORING: Do mirroring. + * * FRIBIDI_FLAG_SHAPE_ARAB_PRES: Shape Arabic characters to their + * presentation form glyphs. + * * FRIBIDI_FLAG_SHAPE_ARAB_LIGA: Form mandatory Arabic ligatures. + * * FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE: Perform additional Arabic shaping + * suitable for text rendered on + * grid terminals with no mark + * rendering capabilities. + * + * Of the above, FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE is only used in special + * cases, but the rest are recommended in any environment that doesn't have + * other means for doing Arabic shaping. The set of extra flags that enable + * this level of Arabic support has a shortcut named FRIBIDI_FLAGS_ARABIC. + */ +FRIBIDI_ENTRY void +fribidi_shape_arabic ( + FriBidiFlags flags, /* shaping flags */ + const FriBidiLevel *embedding_levels, + const FriBidiStrIndex len, /* input string length */ + FriBidiArabicProp *ar_props, /* input/output Arabic properties as + * computed by fribidi_join_arabic */ + FriBidiChar *str /* string to shape */ +); + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_ARABIC_H */ +/* Editor directions: + * Local Variables: + * mode: c + * c-basic-offset: 2 + * indent-tabs-mode: t + * tab-width: 8 + * End: + * vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8: + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-begindecls.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-begindecls.h new file mode 100644 index 0000000..0f4acdd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-begindecls.h @@ -0,0 +1,3 @@ +#ifdef FRIBIDI_BEGIN_DECLS +FRIBIDI_BEGIN_DECLS +#endif /* FRIBIDI_BEGIN_DECLS */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi-types-list.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi-types-list.h new file mode 100644 index 0000000..c4ffc6f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi-types-list.h @@ -0,0 +1,96 @@ +#ifndef __FRIBIDI_DOC +/* FriBidi + * fribidi-bidi-types-list.h - list of bidi types + * + * Author: + * Behdad Esfahbod, 2001, 2002, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc. + * Copyright (C) 2001,2002 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +/* *INDENT-OFF* */ +#endif /* !__FRIBIDI_DOC */ +#ifndef _FRIBIDI_ADD_TYPE +# define _FRIBIDI_ADD_TYPE(x,y) +#endif +#ifndef _FRIBIDI_ADD_ALIAS +# define _FRIBIDI_ADD_ALIAS(x1,x2) +#endif + +#if !defined(_FRIBIDI_PAR_TYPES) || defined(_FRIBIDI_ALL_TYPES) + +_FRIBIDI_ADD_TYPE (LTR, 'L') /* Left-To-Right letter */ +_FRIBIDI_ADD_TYPE (RTL, 'R') /* Right-To-Left letter */ +_FRIBIDI_ADD_TYPE (AL, 'A') /* Arabic Letter */ +_FRIBIDI_ADD_TYPE (EN, '1') /* European Numeral */ +_FRIBIDI_ADD_TYPE (AN, '9') /* Arabic Numeral */ +_FRIBIDI_ADD_TYPE (ES, 'w') /* European number Separator */ +_FRIBIDI_ADD_TYPE (ET, 'w') /* European number Terminator */ +_FRIBIDI_ADD_TYPE (CS, 'w') /* Common Separator */ +_FRIBIDI_ADD_TYPE (NSM, '`') /* Non Spacing Mark */ +_FRIBIDI_ADD_TYPE (BN, 'b') /* Boundary Neutral */ +_FRIBIDI_ADD_TYPE (BS, 'B') /* Block Separator */ +_FRIBIDI_ADD_TYPE (SS, 'S') /* Segment Separator */ +_FRIBIDI_ADD_TYPE (WS, '_') /* WhiteSpace */ +_FRIBIDI_ADD_TYPE (ON, 'n') /* Other Neutral */ +_FRIBIDI_ADD_TYPE (LRE, '+') /* Left-to-Right Embedding */ +_FRIBIDI_ADD_TYPE (RLE, '+') /* Right-to-Left Embedding */ +_FRIBIDI_ADD_TYPE (LRO, '+') /* Left-to-Right Override */ +_FRIBIDI_ADD_TYPE (RLO, '+') /* Right-to-Left Override */ +_FRIBIDI_ADD_TYPE (PDF, '-') /* Pop Directional Flag */ +_FRIBIDI_ADD_TYPE (LRI, '+') /* Left-to-Right Isolate */ +_FRIBIDI_ADD_TYPE (RLI, '+') /* Right-to-Left Isolate */ +_FRIBIDI_ADD_TYPE (FSI, '+') /* First-Strong Isolate */ +_FRIBIDI_ADD_TYPE (PDI, '-') /* Pop Directional Isolate */ + +#if defined(_FRIBIDI_ADD_ALIAS) +_FRIBIDI_ADD_ALIAS (L, LTR) +_FRIBIDI_ADD_ALIAS (R, RTL) +_FRIBIDI_ADD_ALIAS (B, BS) +_FRIBIDI_ADD_ALIAS (S, SS) +#endif /* _FRIBIDI_ADD_ALIAS */ + +#if defined(_FRIBIDI_SENTINEL_TYPE) || defined(_FRIBIDI_ALL_TYPES) +_FRIBIDI_ADD_TYPE (SENTINEL, '$') /* SENTINEL */ +#endif /* _FRIBIDI_SENTINEL_TYPES || _FRIBIDI_ALL_TYPES*/ +#endif /* !_FRIBIDI_PAR_TYPES || _FRIBIDI_ALL_TYPES */ + +#if defined(_FRIBIDI_PAR_TYPES) || defined(_FRIBIDI_ALL_TYPES) +# if !defined(_FRIBIDI_ALL_TYPES) +_FRIBIDI_ADD_TYPE (LTR, 'L') /* Left-To-Right paragraph */ +_FRIBIDI_ADD_TYPE (RTL, 'R') /* Right-To-Left paragraph */ +_FRIBIDI_ADD_TYPE (ON, 'n') /* directiOn-Neutral paragraph */ +# endif /* !_FRIBIDI_ALL_TYPES */ +_FRIBIDI_ADD_TYPE (WLTR, 'l') /* Weak Left To Right paragraph */ +_FRIBIDI_ADD_TYPE (WRTL, 'r') /* Weak Right To Left paragraph */ +#endif /* _FRIBIDI_PAR_TYPES || _FRIBIDI_ALL_TYPES*/ + +#if defined(_FRIBIDI_ENUM_TYPES) +typedef enum { +# define _FRIBIDI_ADD_TYPE _FRIBIDI_ENUM_ADD_TYPE +# include "fribidi-bidi-types-list.h" +# undef _FRIBIDI_ADD_TYPE + _FRIBIDI_TYPES_MAX +} _FRIBIDI_ENUM_TYPES +#endif /* _FRIBIDI_ENUM_TYPES */ + +#ifndef __FRIBIDI_DOC +/* *INDENT-ON* */ +#endif /* !__FRIBIDI_DOC */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi-types.h new file mode 100644 index 0000000..cfe3cf0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi-types.h @@ -0,0 +1,405 @@ +/* FriBidi + * fribidi-bidi-types.h - character bidi types + * + * Author: + * Behdad Esfahbod, 2001, 2002, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc. + * Copyright (C) 2001,2002 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_BIDI_TYPES_H +#define _FRIBIDI_BIDI_TYPES_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" + +#include "fribidi-begindecls.h" + +typedef signed char FriBidiLevel; + +/* + * Define bit masks that bidi types are based on, each mask has + * only one bit set. + */ + +/* RTL mask better be the least significant bit. */ +#define FRIBIDI_MASK_RTL 0x00000001L /* Is right to left */ +#define FRIBIDI_MASK_ARABIC 0x00000002L /* Is arabic */ + +/* Each char can be only one of the three following. */ +#define FRIBIDI_MASK_STRONG 0x00000010L /* Is strong */ +#define FRIBIDI_MASK_WEAK 0x00000020L /* Is weak */ +#define FRIBIDI_MASK_NEUTRAL 0x00000040L /* Is neutral */ +#define FRIBIDI_MASK_SENTINEL 0x00000080L /* Is sentinel */ +/* Sentinels are not valid chars, just identify the start/end of strings. */ + +/* Each char can be only one of the six following. */ +#define FRIBIDI_MASK_LETTER 0x00000100L /* Is letter: L, R, AL */ +#define FRIBIDI_MASK_NUMBER 0x00000200L /* Is number: EN, AN */ +#define FRIBIDI_MASK_NUMSEPTER 0x00000400L /* Is separator or terminator: ES, ET, CS */ +#define FRIBIDI_MASK_SPACE 0x00000800L /* Is space: BN, BS, SS, WS */ +#define FRIBIDI_MASK_EXPLICIT 0x00001000L /* Is explicit mark: LRE, RLE, LRO, RLO, PDF */ +#define FRIBIDI_MASK_ISOLATE 0x00008000L /* Is isolate mark: LRI, RLI, FSI, PDI */ + +/* Can be set only if FRIBIDI_MASK_SPACE is also set. */ +#define FRIBIDI_MASK_SEPARATOR 0x00002000L /* Is text separator: BS, SS */ +/* Can be set only if FRIBIDI_MASK_EXPLICIT is also set. */ +#define FRIBIDI_MASK_OVERRIDE 0x00004000L /* Is explicit override: LRO, RLO */ +#define FRIBIDI_MASK_FIRST 0x02000000L /* Whether direction is determined by first strong */ + + +/* The following exist to make types pairwise different, some of them can + * be removed but are here because of efficiency (make queries faster). */ + +#define FRIBIDI_MASK_ES 0x00010000L +#define FRIBIDI_MASK_ET 0x00020000L +#define FRIBIDI_MASK_CS 0x00040000L + +#define FRIBIDI_MASK_NSM 0x00080000L +#define FRIBIDI_MASK_BN 0x00100000L + +#define FRIBIDI_MASK_BS 0x00200000L +#define FRIBIDI_MASK_SS 0x00400000L +#define FRIBIDI_MASK_WS 0x00800000L + +/* We reserve a single bit for user's private use: we will never use it. */ +#define FRIBIDI_MASK_PRIVATE 0x01000000L + + +/* + * Define values for FriBidiCharType + */ + +/* Strong types */ + +/* Left-To-Right letter */ +#define FRIBIDI_TYPE_LTR_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_LETTER ) +/* Right-To-Left letter */ +#define FRIBIDI_TYPE_RTL_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_LETTER \ + | FRIBIDI_MASK_RTL) +/* Arabic Letter */ +#define FRIBIDI_TYPE_AL_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_LETTER \ + | FRIBIDI_MASK_RTL | FRIBIDI_MASK_ARABIC ) +/* Left-to-Right Embedding */ +#define FRIBIDI_TYPE_LRE_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT) +/* Right-to-Left Embedding */ +#define FRIBIDI_TYPE_RLE_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT \ + | FRIBIDI_MASK_RTL ) +/* Left-to-Right Override */ +#define FRIBIDI_TYPE_LRO_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT \ + | FRIBIDI_MASK_OVERRIDE ) +/* Right-to-Left Override */ +#define FRIBIDI_TYPE_RLO_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT \ + | FRIBIDI_MASK_RTL | FRIBIDI_MASK_OVERRIDE ) + +/* Weak types */ + +/* Pop Directional Flag*/ +#define FRIBIDI_TYPE_PDF_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_EXPLICIT ) +/* European Numeral */ +#define FRIBIDI_TYPE_EN_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMBER ) +/* Arabic Numeral */ +#define FRIBIDI_TYPE_AN_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMBER \ + | FRIBIDI_MASK_ARABIC ) +/* European number Separator */ +#define FRIBIDI_TYPE_ES_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMSEPTER \ + | FRIBIDI_MASK_ES ) +/* European number Terminator */ +#define FRIBIDI_TYPE_ET_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMSEPTER \ + | FRIBIDI_MASK_ET ) +/* Common Separator */ +#define FRIBIDI_TYPE_CS_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMSEPTER \ + | FRIBIDI_MASK_CS ) +/* Non Spacing Mark */ +#define FRIBIDI_TYPE_NSM_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NSM ) +/* Boundary Neutral */ +#define FRIBIDI_TYPE_BN_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_SPACE \ + | FRIBIDI_MASK_BN ) + +/* Neutral types */ + +/* Block Separator */ +#define FRIBIDI_TYPE_BS_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_SPACE \ + | FRIBIDI_MASK_SEPARATOR | FRIBIDI_MASK_BS ) +/* Segment Separator */ +#define FRIBIDI_TYPE_SS_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_SPACE \ + | FRIBIDI_MASK_SEPARATOR | FRIBIDI_MASK_SS ) +/* WhiteSpace */ +#define FRIBIDI_TYPE_WS_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_SPACE \ + | FRIBIDI_MASK_WS ) +/* Other Neutral */ +#define FRIBIDI_TYPE_ON_VAL ( FRIBIDI_MASK_NEUTRAL ) + + +/* The following are used in specifying paragraph direction only. */ + +/* Weak Left-To-Right */ +#define FRIBIDI_TYPE_WLTR_VAL ( FRIBIDI_MASK_WEAK ) +/* Weak Right-To-Left */ +#define FRIBIDI_TYPE_WRTL_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_RTL ) + +/* start or end of text (run list) SENTINEL. Only used internally */ +#define FRIBIDI_TYPE_SENTINEL ( FRIBIDI_MASK_SENTINEL ) + +/* Private types for applications. More private types can be obtained by + * summing up from this one. */ +#define FRIBIDI_TYPE_PRIVATE ( FRIBIDI_MASK_PRIVATE ) + + +/* New types in Unicode 6.3 */ + +/* Left-to-Right Isolate */ +#define FRIBIDI_TYPE_LRI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_ISOLATE ) +/* Right-to-Left Isolate */ +#define FRIBIDI_TYPE_RLI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_ISOLATE | FRIBIDI_MASK_RTL ) +/* First strong isolate */ +#define FRIBIDI_TYPE_FSI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_ISOLATE | FRIBIDI_MASK_FIRST ) + +/* Pop Directional Isolate*/ +#define FRIBIDI_TYPE_PDI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_WEAK | FRIBIDI_MASK_ISOLATE ) + +/* Define Enums only if sizeof(int) == 4 (UTF-32), and not compiling C++. + * The problem with C++ is that then casts between int32 and enum will fail! + */ +#if defined(__FRIBIDI_DOC) || (FRIBIDI_SIZEOF_INT+0 == 4 && !defined(__cplusplus)) + +typedef enum +{ +# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) \ + FRIBIDI_TYPE_##TYPE = FRIBIDI_TYPE_##TYPE##_VAL, +# include "fribidi-bidi-types-list.h" +# undef _FRIBIDI_ADD_TYPE + _FRIBIDI_TYPE_SENTINEL = FRIBIDI_TYPE_SENTINEL /* Don't use this */ +} FriBidiCharType; + +typedef enum +{ +# define _FRIBIDI_PAR_TYPES +# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) \ + FRIBIDI_PAR_##TYPE = FRIBIDI_TYPE_##TYPE##_VAL, +# include "fribidi-bidi-types-list.h" +# undef _FRIBIDI_ADD_TYPE +# undef _FRIBIDI_PAR_TYPES + _FRIBIDI_PAR_SENTINEL = FRIBIDI_TYPE_SENTINEL /* Don't use this */ +} FriBidiParType; + +#else + +typedef uint32_t FriBidiCharType; +# define FRIBIDI_TYPE_LTR FRIBIDI_TYPE_LTR_VAL +# define FRIBIDI_TYPE_RTL FRIBIDI_TYPE_RTL_VAL +# define FRIBIDI_TYPE_AL FRIBIDI_TYPE_AL_VAL +# define FRIBIDI_TYPE_EN FRIBIDI_TYPE_EN_VAL +# define FRIBIDI_TYPE_AN FRIBIDI_TYPE_AN_VAL +# define FRIBIDI_TYPE_ES FRIBIDI_TYPE_ES_VAL +# define FRIBIDI_TYPE_ET FRIBIDI_TYPE_ET_VAL +# define FRIBIDI_TYPE_CS FRIBIDI_TYPE_CS_VAL +# define FRIBIDI_TYPE_NSM FRIBIDI_TYPE_NSM_VAL +# define FRIBIDI_TYPE_BN FRIBIDI_TYPE_BN_VAL +# define FRIBIDI_TYPE_BS FRIBIDI_TYPE_BS_VAL +# define FRIBIDI_TYPE_SS FRIBIDI_TYPE_SS_VAL +# define FRIBIDI_TYPE_WS FRIBIDI_TYPE_WS_VAL +# define FRIBIDI_TYPE_ON FRIBIDI_TYPE_ON_VAL +# define FRIBIDI_TYPE_LRE FRIBIDI_TYPE_LRE_VAL +# define FRIBIDI_TYPE_RLE FRIBIDI_TYPE_RLE_VAL +# define FRIBIDI_TYPE_LRO FRIBIDI_TYPE_LRO_VAL +# define FRIBIDI_TYPE_RLO FRIBIDI_TYPE_RLO_VAL +# define FRIBIDI_TYPE_PDF FRIBIDI_TYPE_PDF_VAL +# define FRIBIDI_TYPE_LRI FRIBIDI_TYPE_LRI_VAL +# define FRIBIDI_TYPE_RLI FRIBIDI_TYPE_RLI_VAL +# define FRIBIDI_TYPE_FSI FRIBIDI_TYPE_FSI_VAL +# define FRIBIDI_TYPE_PDI FRIBIDI_TYPE_PDI_VAL + +typedef uint32_t FriBidiParType; +# define FRIBIDI_PAR_LTR FRIBIDI_TYPE_LTR_VAL +# define FRIBIDI_PAR_RTL FRIBIDI_TYPE_RTL_VAL +# define FRIBIDI_PAR_ON FRIBIDI_TYPE_ON_VAL +# define FRIBIDI_PAR_WLTR FRIBIDI_TYPE_WLTR_VAL +# define FRIBIDI_PAR_WRTL FRIBIDI_TYPE_WRTL_VAL + +#endif + +/* Please don't use these two type names, use FRIBIDI_PAR_* form instead. */ +#define FRIBIDI_TYPE_WLTR FRIBIDI_PAR_WLTR +#define FRIBIDI_TYPE_WRTL FRIBIDI_PAR_WRTL + + +/* + * Defining macros for needed queries, It is fully dependent on the + * implementation of FriBidiCharType. + */ + + +/* Is right-to-left level? */ +#define FRIBIDI_LEVEL_IS_RTL(lev) ((lev) & 1) + +/* Return the bidi type corresponding to the direction of the level number, + FRIBIDI_TYPE_LTR for evens and FRIBIDI_TYPE_RTL for odds. */ +#define FRIBIDI_LEVEL_TO_DIR(lev) \ + (FRIBIDI_LEVEL_IS_RTL (lev) ? FRIBIDI_TYPE_RTL : FRIBIDI_TYPE_LTR) + +/* Return the minimum level of the direction, 0 for FRIBIDI_TYPE_LTR and + 1 for FRIBIDI_TYPE_RTL and FRIBIDI_TYPE_AL. */ +#define FRIBIDI_DIR_TO_LEVEL(dir) \ + ((FriBidiLevel) (FRIBIDI_IS_RTL (dir) ? 1 : 0)) + +/* Is right to left: RTL, AL, RLE, RLO? */ +#define FRIBIDI_IS_RTL(p) ((p) & FRIBIDI_MASK_RTL) +/* Is arabic: AL, AN? */ +#define FRIBIDI_IS_ARABIC(p) ((p) & FRIBIDI_MASK_ARABIC) + +/* Is strong? */ +#define FRIBIDI_IS_STRONG(p) ((p) & FRIBIDI_MASK_STRONG) +/* Is weak? */ +#define FRIBIDI_IS_WEAK(p) ((p) & FRIBIDI_MASK_WEAK) +/* Is neutral? */ +#define FRIBIDI_IS_NEUTRAL(p) ((p) & FRIBIDI_MASK_NEUTRAL) +/* Is sentinel? */ +#define FRIBIDI_IS_SENTINEL(p) ((p) & FRIBIDI_MASK_SENTINEL) + +/* Is letter: L, R, AL? */ +#define FRIBIDI_IS_LETTER(p) ((p) & FRIBIDI_MASK_LETTER) +/* Is number: EN, AN? */ +#define FRIBIDI_IS_NUMBER(p) ((p) & FRIBIDI_MASK_NUMBER) +/* Is number separator or terminator: ES, ET, CS? */ +#define FRIBIDI_IS_NUMBER_SEPARATOR_OR_TERMINATOR(p) \ + ((p) & FRIBIDI_MASK_NUMSEPTER) +/* Is space: BN, BS, SS, WS? */ +#define FRIBIDI_IS_SPACE(p) ((p) & FRIBIDI_MASK_SPACE) +/* Is explicit mark: LRE, RLE, LRO, RLO, PDF? */ +#define FRIBIDI_IS_EXPLICIT(p) ((p) & FRIBIDI_MASK_EXPLICIT) +/* Is isolator */ +#define FRIBIDI_IS_ISOLATE(p) ((p) & FRIBIDI_MASK_ISOLATE) + +/* Is text separator: BS, SS? */ +#define FRIBIDI_IS_SEPARATOR(p) ((p) & FRIBIDI_MASK_SEPARATOR) + +/* Is explicit override: LRO, RLO? */ +#define FRIBIDI_IS_OVERRIDE(p) ((p) & FRIBIDI_MASK_OVERRIDE) + +/* Some more: */ + +/* Is left to right letter: LTR? */ +#define FRIBIDI_IS_LTR_LETTER(p) \ + ((p) & (FRIBIDI_MASK_LETTER | FRIBIDI_MASK_RTL) == FRIBIDI_MASK_LETTER) + +/* Is right to left letter: RTL, AL? */ +#define FRIBIDI_IS_RTL_LETTER(p) \ + ((p) & (FRIBIDI_MASK_LETTER | FRIBIDI_MASK_RTL) \ + == (FRIBIDI_MASK_LETTER | FRIBIDI_MASK_RTL)) + +/* Is ES or CS: ES, CS? */ +#define FRIBIDI_IS_ES_OR_CS(p) \ + ((p) & (FRIBIDI_MASK_ES | FRIBIDI_MASK_CS)) + +/* Is explicit or BN: LRE, RLE, LRO, RLO, PDF, BN? */ +#define FRIBIDI_IS_EXPLICIT_OR_BN(p) \ + ((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_BN)) + +/* Is explicit or BN or NSM: LRE, RLE, LRO, RLO, PDF, BN, NSM? */ +#define FRIBIDI_IS_EXPLICIT_OR_BN_OR_NSM(p) \ + ((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_BN | FRIBIDI_MASK_NSM)) + +/* Is explicit or BN or NSM: LRE, RLE, LRO, RLO, PDF, BN, NSM? */ +#define FRIBIDI_IS_EXPLICIT_OR_ISOLATE_OR_BN_OR_NSM(p) \ + ((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_ISOLATE | FRIBIDI_MASK_BN | FRIBIDI_MASK_NSM)) + +/* Is explicit or BN or WS: LRE, RLE, LRO, RLO, PDF, BN, WS? */ +#define FRIBIDI_IS_EXPLICIT_OR_BN_OR_WS(p) \ + ((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_BN | FRIBIDI_MASK_WS)) + +/* Is explicit or separator or BN or WS: LRE, RLE, LRO, RLO, PDF, BS, SS, BN, WS? */ +#define FRIBIDI_IS_EXPLICIT_OR_SEPARATOR_OR_BN_OR_WS(p) \ + ((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_SEPARATOR \ + | FRIBIDI_MASK_BN | FRIBIDI_MASK_WS)) + +/* Is private-use type for application? */ +#define FRIBIDI_IS_PRIVATE(p) ((p) & FRIBIDI_MASK_PRIVATE) + +/* Define some conversions. */ + +/* Change numbers to RTL: EN,AN -> RTL. */ +#define FRIBIDI_CHANGE_NUMBER_TO_RTL(p) \ + (FRIBIDI_IS_NUMBER(p) ? FRIBIDI_TYPE_RTL : (p)) + +/* Override status of an explicit mark: + * LRO,LRE->LTR, RLO,RLE->RTL, otherwise->ON. */ +#define FRIBIDI_EXPLICIT_TO_OVERRIDE_DIR(p) \ + (FRIBIDI_IS_OVERRIDE(p) ? FRIBIDI_LEVEL_TO_DIR(FRIBIDI_DIR_TO_LEVEL(p)) \ + : FRIBIDI_TYPE_ON) + +/* Weaken type for paragraph fallback purposes: + * LTR->WLTR, RTL->WRTL. */ +#define FRIBIDI_WEAK_PARAGRAPH(p) (FRIBIDI_PAR_WLTR | ((p) & FRIBIDI_MASK_RTL)) + + +/* Functions finally */ + + +/* fribidi_get_bidi_type - get character bidi type + * + * This function returns the bidi type of a character as defined in Table 3.7 + * Bidirectional Character Types of the Unicode Bidirectional Algorithm + * available at + * http://www.unicode.org/reports/tr9/#Bidirectional_Character_Types, using + * data provided in file UnicodeData.txt of the Unicode Character Database + * available at http://www.unicode.org/Public/UNIDATA/UnicodeData.txt. + * + * There are a few macros defined in fribidi-bidi-types.h for querying a bidi + * type. + */ +FRIBIDI_ENTRY FriBidiCharType +fribidi_get_bidi_type ( + FriBidiChar ch /* input character */ +) FRIBIDI_GNUC_CONST; + +/* fribidi_get_bidi_types - get bidi types for an string of characters + * + * This function finds the bidi types of an string of characters. See + * fribidi_get_bidi_type() for more information about the bidi types returned + * by this function. + */ +FRIBIDI_ENTRY void fribidi_get_bidi_types ( + const FriBidiChar *str, /* input string */ + const FriBidiStrIndex len, /* input string length */ + FriBidiCharType *btypes /* output bidi types */ +); + +/* fribidi_get_bidi_type_name - get bidi type name + * + * This function returns the bidi type name of a character type. The + * returned string is a static string and should not be freed. + * + * The type names are the same as ones defined in Table 3.7 Bidirectional + * Character Types of the Unicode Bidirectional Algorithm available at + * http://www.unicode.org/reports/tr9/#Bidirectional_Character_Types, with a + * few modifications: L->LTR, R->RTL, B->BS, S->SS. + */ + FRIBIDI_ENTRY const char *fribidi_get_bidi_type_name ( + FriBidiCharType t /* input bidi type */ +) FRIBIDI_GNUC_CONST; + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_BIDI_TYPES_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi.h new file mode 100644 index 0000000..4e3277c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-bidi.h @@ -0,0 +1,142 @@ +/* FriBidi + * fribidi-bidi.h - bidirectional algorithm + * + * Authors: + * Behdad Esfahbod, 2001, 2002, 2004 + * Dov Grobgeld, 1999, 2000 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2001,2002 Behdad Esfahbod + * Copyright (C) 1999,2000 Dov Grobgeld + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_BIDI_H +#define _FRIBIDI_BIDI_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" +#include "fribidi-flags.h" +#include "fribidi-bidi-types.h" + +#include "fribidi-begindecls.h" + +/* fribidi_get_par_direction - get base paragraph direction + * + * This function finds the base direction of a single paragraph, + * as defined by rule P2 of the Unicode Bidirectional Algorithm available at + * http://www.unicode.org/reports/tr9/#P2. + * + * You typically do not need this function as + * fribidi_get_par_embedding_levels() knows how to compute base direction + * itself, but you may need this to implement a more sophisticated paragraph + * direction handling. Note that you can pass more than a paragraph to this + * function and the direction of the first non-neutral paragraph is returned, + * which is a very good heuristic to set direction of the neutral paragraphs + * at the beginning of text. For other neutral paragraphs, you better use the + * direction of the previous paragraph. + * + * Returns: Base pargraph direction. No weak paragraph direction is returned, + * only LTR, RTL, or ON. + */ +FRIBIDI_ENTRY FriBidiParType fribidi_get_par_direction ( + const FriBidiCharType *bidi_types, /* input list of bidi types as returned by + fribidi_get_bidi_types() */ + const FriBidiStrIndex len /* input string length */ +); + +/* fribidi_get_par_embedding_levels_ex - get bidi embedding levels of a paragraph + * + * This function finds the bidi embedding levels of a single paragraph, + * as defined by the Unicode Bidirectional Algorithm available at + * http://www.unicode.org/reports/tr9/. This function implements rules P2 to + * I1 inclusive, and parts 1 to 3 of L1, except for rule X9 which is + * implemented in fribidi_remove_bidi_marks(). Part 4 of L1 is implemented + * in fribidi_reorder_line(). + * + * There are a few macros defined in fribidi-bidi-types.h to work with this + * embedding levels. + * + * Returns: Maximum level found plus one, or zero if any error occurred + * (memory allocation failure most probably). + */ +FRIBIDI_ENTRY FriBidiLevel +fribidi_get_par_embedding_levels_ex ( + const FriBidiCharType *bidi_types, /* input list of bidi types as returned by + fribidi_get_bidi_types() */ + const FriBidiBracketType *bracket_types, /* input list of bracket types as returned by + fribidi_get_bracket_types() */ + const FriBidiStrIndex len, /* input string length of the paragraph */ + FriBidiParType *pbase_dir, /* requested and resolved paragraph + * base direction */ + FriBidiLevel *embedding_levels /* output list of embedding levels */ +) FRIBIDI_GNUC_WARN_UNUSED; + +/* fribidi_reorder_line - reorder a line of logical string to visual + * + * This function reorders the characters in a line of text from logical to + * final visual order. This function implements part 4 of rule L1, and rules + * L2 and L3 of the Unicode Bidirectional Algorithm available at + * http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels. + * + * As a side effect it also sets position maps if not NULL. + * + * You should provide the resolved paragraph direction and embedding levels as + * set by fribidi_get_par_embedding_levels(). Also note that the embedding + * levels may change a bit. To be exact, the embedding level of any sequence + * of white space at the end of line is reset to the paragraph embedding level + * (That is part 4 of rule L1). + * + * Note that the bidi types and embedding levels are not reordered. You can + * reorder these (or any other) arrays using the map later. The user is + * responsible to initialize map to something sensible, like an identity + * mapping, or pass NULL if no map is needed. + * + * There is an optional part to this function, which is whether non-spacing + * marks for right-to-left parts of the text should be reordered to come after + * their base characters in the visual string or not. Most rendering engines + * expect this behavior, but console-based systems for example do not like it. + * This is controlled by the FRIBIDI_FLAG_REORDER_NSM flag. The flag is on + * in FRIBIDI_FLAGS_DEFAULT. + * + * Returns: Maximum level found in this line plus one, or zero if any error + * occurred (memory allocation failure most probably). + */ +FRIBIDI_ENTRY FriBidiLevel fribidi_reorder_line ( + FriBidiFlags flags, /* reorder flags */ + const FriBidiCharType *bidi_types, /* input list of bidi types as returned by + fribidi_get_bidi_types() */ + const FriBidiStrIndex len, /* input length of the line */ + const FriBidiStrIndex off, /* input offset of the beginning of the line + in the paragraph */ + const FriBidiParType base_dir, /* resolved paragraph base direction */ + FriBidiLevel *embedding_levels, /* input list of embedding levels, + as returned by + fribidi_get_par_embedding_levels */ + FriBidiChar *visual_str, /* visual string to reorder */ + FriBidiStrIndex *map /* a map of string indices which is reordered + * to reflect where each glyph ends up. */ +) FRIBIDI_GNUC_WARN_UNUSED; + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_BIDI_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-brackets.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-brackets.h new file mode 100644 index 0000000..5569def --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-brackets.h @@ -0,0 +1,89 @@ +/* fribidi-brackets.h - get bracket character property + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2001, 2002, 2004 Behdad Esfahbod + * Copyright (C) 1999, 2000, 2017 Dov Grobgeld + * + * This file is part of GNU FriBidi. + * + * GNU FriBidi is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GNU FriBidi 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with GNU FriBidi; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * For licensing issues, contact or write to + * Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran. + * + * Author(s): + * Behdad Esfahbod, 2001, 2002, 2004 + * Dov Grobgeld, 1999, 2000, 2017 + */ +#ifndef _FRIBIDI_BRACKETS_H +#define _FRIBIDI_BRACKETS_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" +#include "fribidi-bidi-types.h" + +#include "fribidi-begindecls.h" + +/* fribidi_get_bracket - get bracketed character + * + * This function finds the bracketed equivalent of a character as defined in + * the file BidiBrackets.txt of the Unicode Character Database available at + * http://www.unicode.org/Public/UNIDATA/BidiBrackets.txt. + * + * If the input character is a declared as a brackets character in the + * Unicode standard and has a bracketed equivalent. The matching bracketed + * character is put in the output, otherwise the input character itself is + * put. + * + * Returns: The bracket type of the character. Use the + * FRIBIDI_IS_BRACKET(FriBidiBracketType) to test if it is a valid + * property. + */ +FRIBIDI_ENTRY FriBidiBracketType fribidi_get_bracket ( + FriBidiChar ch /* input character */ +); + +/* fribidi_get_bracket_types - get bracketed characters + * + * This function finds the bracketed characters of an string of characters. + * See fribidi_get_bracket() for more information about the bracketed + * characters returned by this function. + */ +FRIBIDI_ENTRY void +fribidi_get_bracket_types ( + const FriBidiChar *str, /* input string */ + const FriBidiStrIndex len, /* input string length */ + const FriBidiCharType *types, /* input bidi types */ + FriBidiBracketType *btypes /* output bracketed characters */ +); + +#define FRIBIDI_BRACKET_OPEN_MASK 0x80000000 +#define FRIBIDI_BRACKET_ID_MASK 0x7fffffff +#define FRIBIDI_IS_BRACKET_OPEN(bt) ((bt & FRIBIDI_BRACKET_OPEN_MASK)>0) +#define FRIBIDI_BRACKET_ID(bt) ((bt & FRIBIDI_BRACKET_ID_MASK)) + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_BRACKETS_H */ +/* Editor directions: + * Local Variables: + * mode: c + * c-basic-offset: 2 + * indent-tabs-mode: t + * tab-width: 8 + * End: + * vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8: + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-char-sets-list.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-char-sets-list.h new file mode 100644 index 0000000..b0231d8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-char-sets-list.h @@ -0,0 +1,54 @@ +#ifndef __FRIBIDI_DOC +/* FriBidi + * fribidi-char-sets-list.h - list of supported character sets + * + * Author: + * Behdad Esfahbod, 2001, 2002, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc. + * Copyright (C) 2001,2002 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +/* *INDENT-OFF* */ + +/* The order of types in this list should not be important at compile time, + * but apparently it should not be changed after compilation! */ +#endif /* !__FRIBIDI_DOC */ +#ifdef _FRIBIDI_ADD_CHAR_SET +# define _FRIBIDI_ADD_CHAR_SET_OTHERS _FRIBIDI_ADD_CHAR_SET +# define _FRIBIDI_ADD_CHAR_SET_ONE2ONE _FRIBIDI_ADD_CHAR_SET +#endif /* _FRIBIDI_ADD_CHAR_SET */ +#ifdef _FRIBIDI_ADD_CHAR_SET_OTHERS +_FRIBIDI_ADD_CHAR_SET_OTHERS (UTF8, utf8) /* UTF-8 (Unicode) */ +_FRIBIDI_ADD_CHAR_SET_OTHERS (CAP_RTL, cap_rtl) /* CapRTL (Test) */ +#endif /* _FRIBIDI_ADD_CHAR_SET_OTHERS */ +#ifdef _FRIBIDI_ADD_CHAR_SET_ONE2ONE +_FRIBIDI_ADD_CHAR_SET_ONE2ONE (ISO8859_6, iso8859_6) /* ISO8859-6 (Arabic) */ +_FRIBIDI_ADD_CHAR_SET_ONE2ONE (ISO8859_8, iso8859_8) /* ISO8859-8 (Hebrew) */ +_FRIBIDI_ADD_CHAR_SET_ONE2ONE (CP1255, cp1255) /* CP1255 (MS Hebrew/Yiddish) */ +_FRIBIDI_ADD_CHAR_SET_ONE2ONE (CP1256, cp1256) /* CP1256 (MS Arabic) */ +#endif /* _FRIBIDI_ADD_CHAR_SET_ONE2ONE */ +#ifdef _FRIBIDI_ADD_CHAR_SET +# undef _FRIBIDI_ADD_CHAR_SET_OTHERS +# undef _FRIBIDI_ADD_CHAR_SET_ONE2ONE +#endif /* _FRIBIDI_ADD_CHAR_SET */ + +#ifndef __FRIBIDI_DOC +/* *INDENT-ON* */ +#endif /* !__FRIBIDI_DOC */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-char-sets.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-char-sets.h new file mode 100644 index 0000000..98ea109 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-char-sets.h @@ -0,0 +1,106 @@ +/* FriBidi + * fribidi-char-sets.h - character set conversion routines + * + * Authors: + * Behdad Esfahbod, 2001, 2002, 2004 + * Dov Grobgeld, 1999, 2000 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2001,2002 Behdad Esfahbod + * Copyright (C) 1999,2000 Dov Grobgeld + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_CHAR_SETS_H +#define _FRIBIDI_CHAR_SETS_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" + +#include "fribidi-begindecls.h" + +typedef enum +{ + _FRIBIDI_CHAR_SET_NOT_FOUND, +# define _FRIBIDI_ADD_CHAR_SET(CHAR_SET, char_set) FRIBIDI_CHAR_SET_##CHAR_SET, +# include "fribidi-char-sets-list.h" +# undef _FRIBIDI_ADD_CHAR_SET + _FRIBIDI_CHAR_SETS_NUM_PLUS_ONE +} +FriBidiCharSet; + +#define FRIBIDI_CHAR_SET_NOT_FOUND _FRIBIDI_CHAR_SET_NOT_FOUND +#define FRIBIDI_CHAR_SETS_NUM (_FRIBIDI_CHAR_SETS_NUM_PLUS_ONE - 1) + + +/* fribidi_charset_to_unicode - convert string to Unicode + * + * This function converts an string from a character set, to a Unicode string. + * + * Returns: The length of the new string. + */ +FRIBIDI_ENTRY FriBidiStrIndex fribidi_charset_to_unicode ( + FriBidiCharSet char_set, /* character set to convert from */ + const char *s, /* input string encoded in char_set */ + FriBidiStrIndex len, /* input string length */ + FriBidiChar *us /* output Unicode string */ +); + +/* fribidi_unicode_to_charset - convert string from Unicode + * + * This function converts a Unicode string to an string in another character + * set. It also null-terminates the output string. + * + * Returns: The length of the new string. + */ +FRIBIDI_ENTRY FriBidiStrIndex fribidi_unicode_to_charset ( + FriBidiCharSet char_set, /* character set to convert to */ + const FriBidiChar *us, /* input Unicode string */ + FriBidiStrIndex len, /* input string length */ + char *s /* output string encoded in char_set */ +); + +/* fribidi_parse_charset - parse character set name + * + * Returns: The character set named s, or FRIBIDI_CHAR_SET_NOT_FOUND if the + * character set is not available. + */ +FRIBIDI_ENTRY FriBidiCharSet fribidi_parse_charset ( + const char *s /* input name of the character set */ +); + + +FRIBIDI_ENTRY const char *fribidi_char_set_name ( + FriBidiCharSet char_set +); + +FRIBIDI_ENTRY const char *fribidi_char_set_title ( + FriBidiCharSet char_set +); + +FRIBIDI_ENTRY const char *fribidi_char_set_desc ( + FriBidiCharSet char_set +); + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_CHAR_SETS_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-common.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-common.h new file mode 100644 index 0000000..d874d8b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-common.h @@ -0,0 +1,158 @@ +/* FriBidi + * fribidi-common.h - common include for library headers + * + * Author: + * Behdad Esfahbod, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_COMMON_H +#define _FRIBIDI_COMMON_H + +#ifdef DONT_HAVE_FRIBIDI_CONFIG_H +# define FRIBIDI "fribidi" +# define FRIBIDI_NAME "fribidi" +# define FRIBIDI_VERSION "unknown" +# define FRIBIDI_BUGREPORT "unknown" +# define FRIBIDI_INTERFACE_VERSION_STRING "unknown" +#else /* !DONT_HAVE_FRIBIDI_CONFIG_H */ +# include "fribidi-config.h" +#endif /* !DONT_HAVE_FRIBIDI_CONFIG_H */ + +#ifdef HAVE_FRIBIDI_CUSTOM_H +# include +#endif /* HAVE_FRIBIDI_CUSTOM_H */ + + +/* FRIBIDI_ENTRY is a macro used to declare library entry points. */ +#ifndef FRIBIDI_LIB_STATIC +# ifndef FRIBIDI_ENTRY +# ifdef _WIN32 +# ifdef FRIBIDI_BUILD +# define FRIBIDI_ENTRY __declspec(dllexport) +# else +# define FRIBIDI_ENTRY __declspec(dllimport) +# endif +# elif (defined(__SUNPRO_C) || defined(__SUNPRO_CC)) +# define FRIBIDI_ENTRY __global +# else +# if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__ICC) +# define FRIBIDI_ENTRY __attribute__ ((visibility("default"))) +# else +# define FRIBIDI_ENTRY +# endif +# endif +# endif +#else +# ifndef FRIBIDI_ENTRY +# define FRIBIDI_ENTRY +# endif +#endif + +#define FRIBIDI_EXTERN extern + +#ifdef __ICC +#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \ + _Pragma ("warning (push)") \ + _Pragma ("warning (disable:1478)") +#define FRIBIDI_END_IGNORE_DEPRECATIONS \ + _Pragma ("warning (pop)") +#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#define FRIBIDI_END_IGNORE_DEPRECATIONS \ + _Pragma ("GCC diagnostic pop") +#elif defined (_MSC_VER) && (_MSC_VER >= 1500) +#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \ + __pragma (warning (push)) \ + __pragma (warning (disable : 4996)) +#define FRIBIDI_END_IGNORE_DEPRECATIONS \ + __pragma (warning (pop)) +#elif defined (__clang__) +#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#define FRIBIDI_END_IGNORE_DEPRECATIONS \ + _Pragma("clang diagnostic pop") +#else +#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS +#define FRIBIDI_END_IGNORE_DEPRECATIONS +#endif + +#if (defined(__GNUC__) && (__GNUC__ > 2)) && ! defined(_WIN32) +# define FRIBIDI_GNUC_WARN_UNUSED __attribute__((__warn_unused_result__)) +# define FRIBIDI_GNUC_MALLOC __attribute__((__malloc__)) +# define FRIBIDI_GNUC_HIDDEN __attribute__((__visibility__ ("hidden"))) +# define FRIBIDI_GNUC_CONST __attribute__((__const__)) +# define FRIBIDI_GNUC_DEPRECATED __attribute__((__unused__)) +#else /* __GNUC__ */ +# define FRIBIDI_GNUC_WARN_UNUSED +# define FRIBIDI_GNUC_MALLOC +# define FRIBIDI_GNUC_HIDDEN +# define FRIBIDI_GNUC_CONST +# define FRIBIDI_GNUC_DEPRECATED +#endif /* __GNUC__ */ + +/* FRIBIDI_BEGIN_DECLS should be used at the beginning of your declarations, + * so that C++ compilers don't mangle their names. Use FRIBIDI_END_DECLS at + * the end of C declarations. */ +#ifndef FRIBIDI_BEGIN_DECLS +# ifdef __cplusplus +# define FRIBIDI_BEGIN_DECLS extern "C" { +# define FRIBIDI_END_DECLS } +# else /* !__cplusplus */ +# define FRIBIDI_BEGIN_DECLS /* empty */ +# define FRIBIDI_END_DECLS /* empty */ +# endif /* !__cplusplus */ +#endif /* !FRIBIDI_BEGIN_DECLS */ + + + + +/* fribidi_debug_status - get current debug state + * + */ +FRIBIDI_ENTRY int fribidi_debug_status ( + void +); + +/* fribidi_set_debug - set debug state + * + */ +FRIBIDI_ENTRY int +fribidi_set_debug ( + int state /* new state to set */ +); + + + + + + + + + + + +#endif /* !_FRIBIDI_COMMON_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-config.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-config.h new file mode 100644 index 0000000..b1d79a6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-config.h @@ -0,0 +1,23 @@ +/* fribidi-config.h file generated by Meson */ +/* Not copyrighted, in public domain. */ +#ifndef FRIBIDI_CONFIG_H +#define FRIBIDI_CONFIG_H + +#define FRIBIDI "fribidi" +#define FRIBIDI_NAME "GNU FriBidi" +#define FRIBIDI_BUGREPORT "https://github.com/fribidi/fribidi/issues/new" + +#define FRIBIDI_VERSION "1.0.12" +#define FRIBIDI_MAJOR_VERSION 1 +#define FRIBIDI_MINOR_VERSION 0 +#define FRIBIDI_MICRO_VERSION 12 +#define FRIBIDI_INTERFACE_VERSION 4 +#define FRIBIDI_INTERFACE_VERSION_STRING "4" + +/* The size of a `int', as computed by sizeof. */ +#define FRIBIDI_SIZEOF_INT 4 + +/* Define if fribidi was built with MSVC */ +#undef FRIBIDI_BUILT_WITH_MSVC + +#endif /* FRIBIDI_CONFIG_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-deprecated.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-deprecated.h new file mode 100644 index 0000000..cb2322d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-deprecated.h @@ -0,0 +1,175 @@ +/* FriBidi + * fribidi-deprecated.h - Deprecated interfaces + * + * Author: + * Behdad Esfahbod, 2004, 2005 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2004, 2005 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_DEPRECATED_H +#define _FRIBIDI_DEPRECATED_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" + +#include "fribidi-bidi-types.h" + +#include "fribidi-begindecls.h" + + + +/* fribidi_mirroring_status - get current mirroring status + * + * This function is deprecated and only used with other deprecated functions. + */ +FRIBIDI_ENTRY fribidi_boolean fribidi_mirroring_status ( + void +) FRIBIDI_GNUC_DEPRECATED; + +/* fribidi_set_mirroring - set mirroring on or off + * + * This function is used to turn character mirroring on or off. + * Character mirroring is the act of replacing a mirrorable glyph + * (character), eg. left parenthesis, with the matching glyph, + * eg. right parenthesis, in a right-to-left resolved context. + * If your rendering engine does mirroring itself, you may want to + * turn it off here. + * + * This flag is on by default. + * This function is deprecated and only used with other deprecated functions. + * + * Returns: the new mirroring status. + */ +FRIBIDI_ENTRY fribidi_boolean fribidi_set_mirroring ( + fribidi_boolean state /* new state to set */ +) FRIBIDI_GNUC_DEPRECATED; + + +/* fribidi_reorder_nsm_status - get current marks reordering status + * + * This function is deprecated and only used with other deprecated functions. + */ +FRIBIDI_ENTRY fribidi_boolean fribidi_reorder_nsm_status ( + void +) FRIBIDI_GNUC_DEPRECATED; + +/* fribidi_set_reorder_nsm - set marks reordering on or off + * + * This function is used to turn non-spacing marks reordering on or + * off. Reordering non-spacing marks is the act of placing non-spacing + * marks (bidi class NSM) after their base character in a right-to-left + * resolved context. If your rendering engine expects non-spacing marks + * always after the base character in the memory representation of the + * visual string, you need this option on. An example of where people + * may need it off is when rendering in the console when non-spacing + * marks cannot be applied on top of the base character. + * + * This flag is on by default. + * This function is deprecated and only used with other deprecated functions. + * + * Returns: the new marks reordering status. + */ +FRIBIDI_ENTRY fribidi_boolean fribidi_set_reorder_nsm ( + fribidi_boolean state /* new state to set */ +) FRIBIDI_GNUC_DEPRECATED; + + + + +/* fribidi_log2vis_get_embedding_levels - get embedding levels + * + * Deprecated. Replaced by fribidi_get_par_embedding_levels_ex. + */ +FRIBIDI_ENTRY FriBidiLevel +fribidi_log2vis_get_embedding_levels ( + const FriBidiCharType *bidi_types, /* input list of bidi types as returned by + fribidi_get_bidi_types() */ + const FriBidiStrIndex len, /* input string length of the paragraph */ + FriBidiParType *pbase_dir, /* requested and resolved paragraph + * base direction */ + FriBidiLevel *embedding_levels /* output list of embedding levels */ +) FRIBIDI_GNUC_DEPRECATED; + +/* fribidi_get_type - get character bidi type + * + * Deprecated. Replaced by fribidi_get_bidi_type. + */ +FRIBIDI_ENTRY FriBidiCharType +fribidi_get_type ( + FriBidiChar ch /* input character */ +) FRIBIDI_GNUC_DEPRECATED; + +/* fribidi_get_type_internal - get character bidi type + * + * Deprecated. Replaced by fribidi_get_bidi_type. + */ +FRIBIDI_ENTRY FriBidiCharType +fribidi_get_type_internal ( + FriBidiChar ch /* input character */ +) FRIBIDI_GNUC_DEPRECATED; + +/* fribidi_get_par_embedding_levels - get bidi embedding levels of a paragraph + * + * Deprecated interface to fribidi_get_par_embedding_levels_ex(). Refer to + * it for documentation. + */ +FRIBIDI_ENTRY FriBidiLevel +fribidi_get_par_embedding_levels ( + const FriBidiCharType *bidi_types, /* input list of bidi types as returned by + fribidi_get_bidi_types() */ + const FriBidiStrIndex len, /* input string length of the paragraph */ + FriBidiParType *pbase_dir, /* requested and resolved paragraph + * base direction */ + FriBidiLevel *embedding_levels /* output list of embedding levels */ +) + FRIBIDI_GNUC_WARN_UNUSED FRIBIDI_GNUC_DEPRECATED; + +#define UNI_MAX_BIDI_LEVEL FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL +#define UNI_LRM FRIBIDI_CHAR_LRM +#define UNI_RLM FRIBIDI_CHAR_RLM +#define UNI_LRE FRIBIDI_CHAR_LRE +#define UNI_RLE FRIBIDI_CHAR_RLE +#define UNI_LRO FRIBIDI_CHAR_LRO +#define UNI_RLO FRIBIDI_CHAR_RLO +#define UNI_LS FRIBIDI_CHAR_LS +#define UNI_PS FRIBIDI_CHAR_PS +#define UNI_ZWNJ FRIBIDI_CHAR_ZWNJ +#define UNI_ZWJ FRIBIDI_CHAR_ZWJ +#define UNI_HEBREW_ALEF FRIBIDI_CHAR_HEBREW_ALEF +#define UNI_ARABIC_ALEF FRIBIDI_CHAR_ARABIC_ALEF +#define UNI_ARABIC_ZERO FRIBIDI_CHAR_ARABIC_ZERO +#define UNI_FARSI_ZERO FRIBIDI_CHAR_PERSIAN_ZERO + +#define FRIBIDI_TYPE_WL FRIBIDI_PAR_WLTR +#define FRIBIDI_TYPE_WR FRIBIDI_PAR_WRTL +#define FRIBIDI_TYPE_L FRIBIDI_PAR_LTR +#define FRIBIDI_TYPE_R FRIBIDI_PAR_RTL +#define FRIBIDI_TYPE_N FRIBIDI_PAR_ON +#define FRIBIDI_TYPE_B FRIBIDI_TYPE_BS +#define FRIBIDI_TYPE_S FRIBIDI_TYPE_SS + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_DEPRECATED_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-enddecls.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-enddecls.h new file mode 100644 index 0000000..eb300c9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-enddecls.h @@ -0,0 +1,3 @@ +#ifdef FRIBIDI_END_DECLS +FRIBIDI_END_DECLS +#endif /* FRIBIDI_END_DECLS */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-flags.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-flags.h new file mode 100644 index 0000000..166c93a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-flags.h @@ -0,0 +1,72 @@ +/* FriBidi + * fribidi-flags.h - option flags + * + * Author: + * Behdad Esfahbod, 2005 + * + * Copyright (C) 2005 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_FLAGS_H +#define _FRIBIDI_FLAGS_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" + +#include "fribidi-begindecls.h" + +typedef uint32_t FriBidiFlags; + +/* + * Define option flags that various functions use. Each mask has + * only one bit set. + */ + +#define FRIBIDI_FLAG_SHAPE_MIRRORING 0x00000001 +#define FRIBIDI_FLAG_REORDER_NSM 0x00000002 + +#define FRIBIDI_FLAG_SHAPE_ARAB_PRES 0x00000100 +#define FRIBIDI_FLAG_SHAPE_ARAB_LIGA 0x00000200 +#define FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE 0x00000400 + +#define FRIBIDI_FLAG_REMOVE_BIDI 0x00010000 +#define FRIBIDI_FLAG_REMOVE_JOINING 0x00020000 +#define FRIBIDI_FLAG_REMOVE_SPECIALS 0x00040000 + + +/* + * And their combinations. + */ + +#define FRIBIDI_FLAGS_DEFAULT ( \ + FRIBIDI_FLAG_SHAPE_MIRRORING | \ + FRIBIDI_FLAG_REORDER_NSM | \ + FRIBIDI_FLAG_REMOVE_SPECIALS ) + +#define FRIBIDI_FLAGS_ARABIC ( \ + FRIBIDI_FLAG_SHAPE_ARAB_PRES | \ + FRIBIDI_FLAG_SHAPE_ARAB_LIGA ) + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_FLAGS_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining-types-list.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining-types-list.h new file mode 100644 index 0000000..198bad0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining-types-list.h @@ -0,0 +1,44 @@ +#ifndef __FRIBIDI_DOC +/* FriBidi + * fribidi-joining-types-list.h - list of joining types + * + * Author: + * Behdad Esfahbod, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc. + * Copyright (C) 2004 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +/* *INDENT-OFF* */ +#endif /* !__FRIBIDI_DOC */ +#ifndef _FRIBIDI_ADD_TYPE +# define _FRIBIDI_ADD_TYPE(x,y) +#endif + +_FRIBIDI_ADD_TYPE (U, '|') /* nUn-joining, e.g. Full Stop */ +_FRIBIDI_ADD_TYPE (R, '<') /* Right-joining, e.g. Arabic Letter Dal */ +_FRIBIDI_ADD_TYPE (D, '+') /* Dual-joining, e.g. Arabic Letter Ain */ +_FRIBIDI_ADD_TYPE (C, '-') /* join-Causing, e.g. Tatweel, ZWJ */ +_FRIBIDI_ADD_TYPE (T, '^') /* Transparent, e.g. Arabic Fatha */ +_FRIBIDI_ADD_TYPE (L, '>') /* Left-joining, i.e. fictional */ +_FRIBIDI_ADD_TYPE (G, '~') /* iGnored, e.g. LRE, RLE, ZWNBSP */ + +#ifndef __FRIBIDI_DOC +/* *INDENT-ON* */ +#endif /* !__FRIBIDI_DOC */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining-types.h new file mode 100644 index 0000000..99bbd80 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining-types.h @@ -0,0 +1,249 @@ +/* FriBidi + * fribidi-joining-types.h - character joining types + * + * Author: + * Behdad Esfahbod, 2001, 2002, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc. + * Copyright (C) 2001,2002 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_JOINING_TYPES_H +#define _FRIBIDI_JOINING_TYPES_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" + +#include "fribidi-begindecls.h" + +/* + * Define bit masks that joining types are based on, each mask has + * only one bit set. + */ + +#define FRIBIDI_MASK_JOINS_RIGHT 0x01 /* May join to right */ +#define FRIBIDI_MASK_JOINS_LEFT 0x02 /* May join to right */ +#define FRIBIDI_MASK_ARAB_SHAPES 0x04 /* May Arabic shape */ +#define FRIBIDI_MASK_TRANSPARENT 0x08 /* Is transparent */ +#define FRIBIDI_MASK_IGNORED 0x10 /* Is ignored */ +#define FRIBIDI_MASK_LIGATURED 0x20 /* Is ligatured */ + +/* + * Define values for FriBidiJoiningType + */ + +/* nUn-joining */ +#define FRIBIDI_JOINING_TYPE_U_VAL ( 0 ) + +/* Right-joining */ +#define FRIBIDI_JOINING_TYPE_R_VAL \ + ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_ARAB_SHAPES ) + +/* Dual-joining */ +#define FRIBIDI_JOINING_TYPE_D_VAL \ + ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \ + | FRIBIDI_MASK_ARAB_SHAPES ) + +/* join-Causing */ +#define FRIBIDI_JOINING_TYPE_C_VAL \ + ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) + +/* Left-joining */ +#define FRIBIDI_JOINING_TYPE_L_VAL \ + ( FRIBIDI_MASK_JOINS_LEFT | FRIBIDI_MASK_ARAB_SHAPES ) + +/* Transparent */ +#define FRIBIDI_JOINING_TYPE_T_VAL \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_ARAB_SHAPES ) + +/* iGnored */ +#define FRIBIDI_JOINING_TYPE_G_VAL ( FRIBIDI_MASK_IGNORED ) + + +enum _FriBidiJoiningTypeEnum +{ +# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) \ + FRIBIDI_JOINING_TYPE_##TYPE = FRIBIDI_JOINING_TYPE_##TYPE##_VAL, +# include "fribidi-joining-types-list.h" +# undef _FRIBIDI_ADD_TYPE + _FRIBIDI_JOINING_TYPE_JUNK /* Don't use this */ +}; + +#ifdef __FRIBIDI_DOC +typedef enum _FriBidiJoiningTypeEnum FriBidiJoiningType; +#else /* !__FRIBIDI_DOC */ +typedef uint8_t FriBidiJoiningType; +#endif /* !__FRIBIDI_DOC */ + +/* FriBidiArabicProp is essentially the same type as FriBidiJoiningType, but + * not limited to the few values returned by fribidi_get_joining_type. */ +typedef uint8_t FriBidiArabicProp; + +/* + * The equivalent of JoiningType values for ArabicProp + */ + +/* Primary Arabic Joining Classes (Table 8-2) */ + +/* nUn-joining */ +#define FRIBIDI_IS_JOINING_TYPE_U(p) \ + ( 0 == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) ) ) + +/* Right-joining */ +#define FRIBIDI_IS_JOINING_TYPE_R(p) \ + ( FRIBIDI_MASK_JOINS_RIGHT == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) ) ) + +/* Dual-joining */ +#define FRIBIDI_IS_JOINING_TYPE_D(p) \ + ( ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \ + | FRIBIDI_MASK_ARAB_SHAPES ) == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \ + | FRIBIDI_MASK_ARAB_SHAPES ) ) ) + +/* join-Causing */ +#define FRIBIDI_IS_JOINING_TYPE_C(p) \ + ( ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \ + | FRIBIDI_MASK_ARAB_SHAPES ) ) ) + +/* Left-joining */ +#define FRIBIDI_IS_JOINING_TYPE_L(p) \ + ( FRIBIDI_MASK_JOINS_LEFT == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) ) ) + +/* Transparent */ +#define FRIBIDI_IS_JOINING_TYPE_T(p) \ + ( FRIBIDI_MASK_TRANSPARENT == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED ) ) ) + +/* iGnored */ +#define FRIBIDI_IS_JOINING_TYPE_G(p) \ + ( FRIBIDI_MASK_IGNORED == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED ) ) ) + +/* and for Derived Arabic Joining Classes (Table 8-3) */ + +/* Right join-Causing */ +#define FRIBIDI_IS_JOINING_TYPE_RC(p) \ + ( FRIBIDI_MASK_JOINS_RIGHT == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_JOINS_RIGHT ) ) ) + +/* Left join-Causing */ +#define FRIBIDI_IS_JOINING_TYPE_LC(p) \ + ( FRIBIDI_MASK_JOINS_LEFT == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_JOINS_LEFT ) ) ) + + +/* + * Defining macros for needed queries, It is fully dependent on the + * implementation of FriBidiJoiningType. + */ + +/* Joins to right: R, D, C? */ +#define FRIBIDI_JOINS_RIGHT(p) ((p) & FRIBIDI_MASK_JOINS_RIGHT) + +/* Joins to left: L, D, C? */ +#define FRIBIDI_JOINS_LEFT(p) ((p) & FRIBIDI_MASK_JOINS_LEFT) + +/* May shape: R, D, L, T? */ +#define FRIBIDI_ARAB_SHAPES(p) ((p) & FRIBIDI_MASK_ARAB_SHAPES) + +/* Is skipped in joining: T, G? */ +#define FRIBIDI_IS_JOIN_SKIPPED(p) \ + ((p) & (FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED)) + +/* Is base that will be shaped: R, D, L? */ +#define FRIBIDI_IS_JOIN_BASE_SHAPES(p) \ + ( FRIBIDI_MASK_ARAB_SHAPES == ( (p) & \ + ( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \ + | FRIBIDI_MASK_ARAB_SHAPES ) ) ) + +#define FRIBIDI_JOINS_PRECEDING_MASK(level) \ + (FRIBIDI_LEVEL_IS_RTL (level) ? FRIBIDI_MASK_JOINS_RIGHT \ + : FRIBIDI_MASK_JOINS_LEFT) + +#define FRIBIDI_JOINS_FOLLOWING_MASK(level) \ + (FRIBIDI_LEVEL_IS_RTL (level) ? FRIBIDI_MASK_JOINS_LEFT \ + : FRIBIDI_MASK_JOINS_RIGHT) + +#define FRIBIDI_JOIN_SHAPE(p) \ + ((p) & ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT )) + +/* Functions finally */ + + +/* fribidi_get_joining_type - get character joining type + * + * This function returns the joining type of a character as defined in Table + * 8-2 Primary Arabic Joining Classes of the Unicode standard available at + * http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462, using data + * provided in file ArabicShaping.txt and UnicodeData.txt of the Unicode + * Character Database available at + * http://www.unicode.org/Public/UNIDATA/ArabicShaping.txt and + * http://www.unicode.org/Public/UNIDATA/UnicodeData.txt. + * + * There are a few macros defined in fribidi-joining-types.h for querying a + * joining type. + */ +FRIBIDI_ENTRY FriBidiJoiningType +fribidi_get_joining_type ( + FriBidiChar ch /* input character */ +) FRIBIDI_GNUC_CONST; + +/* fribidi_get_joining_types - get joining types for an string of characters + * + * This function finds the joining types of an string of characters. See + * fribidi_get_joining_type for more information about the joining types + * returned by this function. + */ +FRIBIDI_ENTRY void fribidi_get_joining_types ( + const FriBidiChar *str, /* input string */ + const FriBidiStrIndex len, /* input string length */ + FriBidiJoiningType *jtypes /* output joining types */ +); + +/* fribidi_get_joining_type_name - get joining type name + * + * This function returns the joining type name of a joining type. The + * returned string is a static string and should not be freed. + * + * The type names are the same as ones defined in Table 8-2 Primary Arabic + * Joining Classes of the Unicode standard available at + * http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462. + */ +FRIBIDI_ENTRY const char *fribidi_get_joining_type_name ( + FriBidiJoiningType j /* input joining type */ +) FRIBIDI_GNUC_CONST; + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_JOINING_TYPES_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining.h new file mode 100644 index 0000000..92539dd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-joining.h @@ -0,0 +1,74 @@ +/* FriBidi + * fribidi-joining.h - Arabic joining algorithm + * + * Authors: + * Behdad Esfahbod, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2004 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_JOINING_H +#define _FRIBIDI_JOINING_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" +#include "fribidi-bidi-types.h" +#include "fribidi-joining-types.h" + +#include "fribidi-begindecls.h" + +/* fribidi_join_arabic - do Arabic joining + * + * This function does the Arabic joining algorithm. Means, given Arabic + * joining types of the characters in ar_props (don't worry, + * FriBidiJoiningType can be casted to FriBidiArabicProp automagically), this + * function modifies this properties to grasp the effect of neighboring + * characters. You probably need this information later to do Arabic shaping. + * + * This function implements rules R1 to R7 inclusive (all rules) of the Arabic + * Cursive Joining algorithm of the Unicode standard as available at + * http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462. It also + * interacts correctly with the bidirection algorithm as defined in Section + * 3.5 Shaping of the Unicode Bidirectional Algorithm available at + * http://www.unicode.org/reports/tr9/#Shaping. + * + * There are a few macros defined in fribidi-joining-types.h for querying the + * Arabic properties computed by this function. + */ +FRIBIDI_ENTRY void fribidi_join_arabic ( + const FriBidiCharType *bidi_types, /* input list of bidi types as + returned by + fribidi_get_bidi_types() */ + const FriBidiStrIndex len, /* input string length */ + const FriBidiLevel *embedding_levels, /* input list of embedding + levels, as returned by + fribidi_get_par_embedding_levels */ + FriBidiArabicProp *ar_props /* Arabic properties to analyze, initialized by + joining types, as returned by + fribidi_get_joining_types */ +); + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_JOINING_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-mirroring.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-mirroring.h new file mode 100644 index 0000000..ddc3a14 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-mirroring.h @@ -0,0 +1,86 @@ +/* fribidi-mirroring.h - get mirrored character + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2001, 2002, 2004 Behdad Esfahbod + * Copyright (C) 1999, 2000, 2017 Dov Grobgeld + * + * This file is part of GNU FriBidi. + * + * GNU FriBidi is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GNU FriBidi 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with GNU FriBidi; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * For licensing issues, contact or write to + * Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran. + * + * Author(s): + * Behdad Esfahbod, 2001, 2002, 2004 + * Dov Grobgeld, 1999, 2000 + */ +#ifndef _FRIBIDI_MIRRORING_H +#define _FRIBIDI_MIRRORING_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" +#include "fribidi-bidi-types.h" + +#include "fribidi-begindecls.h" + +/* fribidi_get_mirror_char - get mirrored character + * + * This function finds the mirrored equivalent of a character as defined in + * the file BidiMirroring.txt of the Unicode Character Database available at + * http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt. + * + * If the input character is a declared as a mirroring character in the + * Unicode standard and has a mirrored equivalent. The matching mirrored + * character is put in the output, otherwise the input character itself is + * put. + * + * Returns: if the character has a mirroring equivalent or not. + */ +FRIBIDI_ENTRY fribidi_boolean fribidi_get_mirror_char ( + FriBidiChar ch, /* input character */ + FriBidiChar *mirrored_ch /* output mirrored character */ +); + +/* fribidi_shape_mirroring - do mirroring shaping + * + * This functions replaces mirroring characters on right-to-left embeddings in + * string with their mirrored equivalent as returned by + * fribidi_get_mirror_char(). + * + * This function implements rule L4 of the Unicode Bidirectional Algorithm + * available at http://www.unicode.org/reports/tr9/#L4. + */ +FRIBIDI_ENTRY void fribidi_shape_mirroring ( + const FriBidiLevel *embedding_levels, /* input list of embedding + levels, as returned by + fribidi_get_par_embedding_levels */ + const FriBidiStrIndex len, /* input string length */ + FriBidiChar *str /* string to shape */ +); + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_MIRRORING_H */ +/* Editor directions: + * Local Variables: + * mode: c + * c-basic-offset: 2 + * indent-tabs-mode: t + * tab-width: 8 + * End: + * vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8: + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-shape.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-shape.h new file mode 100644 index 0000000..ff258b5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-shape.h @@ -0,0 +1,71 @@ +/* FriBidi + * fribidi-shape.h - shaping + * + * Author: + * Behdad Esfahbod, 2004, 2005 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2004, 2005 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_SHAPE_H +#define _FRIBIDI_SHAPE_H + +#include "fribidi-types.h" +#include "fribidi-flags.h" +#include "fribidi-bidi-types.h" +#include "fribidi-joining-types.h" + +#include "fribidi-begindecls.h" + + +/* fribidi_shape - do bidi-aware shaping + * + * This function does all shaping work that depends on the resolved embedding + * levels of the characters. Currently it does mirroring and Arabic shaping, + * but the list may grow in the future. This function is a wrapper around + * fribidi_shape_mirroring and fribidi_shape_arabic. + * + * The flags parameter specifies which shapings are applied. The only flags + * affecting the functionality of this function are those beginning with + * FRIBIDI_FLAG_SHAPE_. Of these, only FRIBIDI_FLAG_SHAPE_MIRRORING is on + * in FRIBIDI_FLAGS_DEFAULT. For details of the Arabic-specific flags see + * fribidi_shape_arabic. If ar_props is NULL, no Arabic shaping is performed. + * + * Feel free to do your own shaping before or after calling this function, + * but you should take care of embedding levels yourself then. + */ +FRIBIDI_ENTRY void fribidi_shape ( + FriBidiFlags flags, /* shaping flags */ + const FriBidiLevel *embedding_levels, /* input list of embedding + levels, as returned by + fribidi_get_par_embedding_levels */ + const FriBidiStrIndex len, /* input string length */ + FriBidiArabicProp *ar_props, /* input/output Arabic properties as + * computed by fribidi_join_arabic */ + FriBidiChar *str /* string to shape */ +); + + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_SHAPE_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-types.h new file mode 100644 index 0000000..90238b4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-types.h @@ -0,0 +1,79 @@ +/* FriBidi + * fribidi-types.h - define data types for the rest of the library + * + * Author: + * Behdad Esfahbod, 2001, 2002, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc. + * Copyright (C) 2001,2002 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_TYPES_H +#define _FRIBIDI_TYPES_H + +#include "fribidi-common.h" + +#include "fribidi-begindecls.h" + + +# if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \ + defined (_sgi) || defined (__sun) || defined (sun) || \ + defined (__digital__) || defined (__HP_cc) +# include +# elif defined (_AIX) +# include +# else +# include +# endif + +typedef int fribidi_boolean; + +typedef uint32_t FriBidiChar; +typedef int FriBidiStrIndex; + +/* The MSB is used to indicate an opening bracket */ +typedef FriBidiChar FriBidiBracketType; + +/* Use FRIBIDI_NO_BRACKET for assigning to a non-bracket */ +#define FRIBIDI_NO_BRACKET 0 + +/* A few macros for working with bits */ + +#define FRIBIDI_TEST_BITS(x, mask) (((x) & (mask)) ? 1 : 0) + +#define FRIBIDI_INCLUDE_BITS(x, mask) ((x) | (mask)) + +#define FRIBIDI_EXCLUDE_BITS(x, mask) ((x) & ~(mask)) + +#define FRIBIDI_SET_BITS(x, mask) ((x) |= (mask)) + +#define FRIBIDI_UNSET_BITS(x, mask) ((x) &= ~(mask)) + +#define FRIBIDI_ADJUST_BITS(x, mask, cond) \ + ((x) = ((x) & ~(mask)) | ((cond) ? (mask) : 0)) + +#define FRIBIDI_ADJUST_AND_TEST_BITS(x, mask, cond) \ + FRIBIDI_TEST_BITS(FRIBIDI_ADJUST_BITS((x), (mask), (cond)), (mask)) + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_TYPES_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-unicode-version.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-unicode-version.h new file mode 100644 index 0000000..516e0ff --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-unicode-version.h @@ -0,0 +1,10 @@ +/* fribidi-unicode-version.h + * generated by gen-unicode-version (fribidi unknown) + * from the file ReadMe.txt */ + +#define FRIBIDI_UNICODE_VERSION "14.0.0" +#define FRIBIDI_UNICODE_MAJOR_VERSION 14 +#define FRIBIDI_UNICODE_MINOR_VERSION 0 +#define FRIBIDI_UNICODE_MICRO_VERSION 0 + +/* End of generated fribidi-unicode-version.h */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-unicode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-unicode.h new file mode 100644 index 0000000..f5a5783 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi-unicode.h @@ -0,0 +1,105 @@ +/* FriBidi + * fribidi-unicode.h - general Unicode definitions + * + * Author: + * Behdad Esfahbod, 2001, 2002, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * Copyright (C) 2001,2002 Behdad Esfahbod + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_UNICODE_H +#define _FRIBIDI_UNICODE_H + +#include "fribidi-common.h" + +#include "fribidi-types.h" + +#include "fribidi-begindecls.h" + +/* We do not support surrogates yet */ +#define FRIBIDI_UNICODE_CHARS (sizeof(FriBidiChar) >= 4 ? 0x110000 : 0xFFFE) + +/* Unicode version - FRIBIDI_UNICODE_VERSION */ +#ifdef DONT_HAVE_FRIBIDI_UNICODE_VERSION_H +# define FRIBIDI_UNICODE_VERSION "unknown" +#else /* !DONT_HAVE_FRIBIDI_UNICODE_VERSION_H */ +# include "fribidi-unicode-version.h" +#endif /* !DONT_HAVE_FRIBIDI_UNICODE_VERSION_H */ + +/* An string containing the version the Unicode standard implemented, + * in the form of "x.y.z", or "unknown". */ +FRIBIDI_ENTRY FRIBIDI_EXTERN const char *fribidi_unicode_version; + + +/* Unicode Bidirectional Algorithm definitions: */ + +/* Number of types defined in the bidi algorithm */ +#define FRIBIDI_BIDI_NUM_TYPES 19 + +/* The maximum embedding level value assigned by explicit marks */ +#define FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL 125 + +/* The maximum *number* of different resolved embedding levels: 0-126 */ +#define FRIBIDI_BIDI_MAX_RESOLVED_LEVELS 127 + +/* The maximum *number* of nested brackets: 0-63 */ +#define FRIBIDI_BIDI_MAX_NESTED_BRACKET_PAIRS 63 + +/* A few Unicode characters: */ + +/* Bidirectional marks */ +#define FRIBIDI_CHAR_LRM 0x200E +#define FRIBIDI_CHAR_RLM 0x200F +#define FRIBIDI_CHAR_LRE 0x202A +#define FRIBIDI_CHAR_RLE 0x202B +#define FRIBIDI_CHAR_PDF 0x202C +#define FRIBIDI_CHAR_LRO 0x202D +#define FRIBIDI_CHAR_RLO 0x202E +#define FRIBIDI_CHAR_LRI 0x2066 +#define FRIBIDI_CHAR_RLI 0x2067 +#define FRIBIDI_CHAR_FSI 0x2068 +#define FRIBIDI_CHAR_PDI 0x2069 + +/* Line and Paragraph Separators */ +#define FRIBIDI_CHAR_LS 0x2028 +#define FRIBIDI_CHAR_PS 0x2029 + +/* Arabic Joining marks */ +#define FRIBIDI_CHAR_ZWNJ 0x200C +#define FRIBIDI_CHAR_ZWJ 0x200D + +/* Hebrew and Arabic */ +#define FRIBIDI_CHAR_HEBREW_ALEF 0x05D0 +#define FRIBIDI_CHAR_ARABIC_ALEF 0x0627 +#define FRIBIDI_CHAR_ARABIC_ZERO 0x0660 +#define FRIBIDI_CHAR_PERSIAN_ZERO 0x06F0 + +/* Misc */ +#define FRIBIDI_CHAR_ZWNBSP 0xFEFF + +/* Char we place for a deleted slot, to delete later */ +#define FRIBIDI_CHAR_FILL FRIBIDI_CHAR_ZWNBSP + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_UNICODE_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi.h new file mode 100644 index 0000000..6157a3a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/fribidi/fribidi.h @@ -0,0 +1,129 @@ +/* FriBidi + * fribidi.h - Unicode bidirectional and Arabic joining/shaping algorithms + * + * Author: + * Behdad Esfahbod, 2004 + * + * Copyright (C) 2004 Sharif FarsiWeb, Inc + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA + * + * For licensing issues, contact . + */ +#ifndef _FRIBIDI_H +#define _FRIBIDI_H + +#include "fribidi-common.h" + +#include "fribidi-unicode.h" +#include "fribidi-types.h" +#include "fribidi-flags.h" +#include "fribidi-bidi-types.h" +#include "fribidi-bidi.h" +#include "fribidi-joining-types.h" +#include "fribidi-joining.h" +#include "fribidi-mirroring.h" +#include "fribidi-brackets.h" +#include "fribidi-arabic.h" +#include "fribidi-shape.h" +#include "fribidi-char-sets.h" + +#include "fribidi-begindecls.h" + +/* fribidi_remove_bidi_marks - remove bidi marks out of an string + * + * This function removes the bidi and boundary-neutral marks out of an string + * and the accompanying lists. It implements rule X9 of the Unicode + * Bidirectional Algorithm available at + * http://www.unicode.org/reports/tr9/#X9, with the exception that it removes + * U+200E LEFT-TO-RIGHT MARK and U+200F RIGHT-TO-LEFT MARK too. + * + * If any of the input lists are NULL, the list is skipped. If str is the + * visual string, then positions_to_this is positions_L_to_V and + * position_from_this_list is positions_V_to_L; if str is the logical + * string, the other way. Moreover, the position maps should be filled with + * valid entries. + * + * A position map pointing to a removed character is filled with \(mi1. By the + * way, you should not use embedding_levels if str is visual string. + * + * For best results this function should be run on a whole paragraph, not + * lines; but feel free to do otherwise if you know what you are doing. + * + * Returns: New length of the string, or \(mi1 if an error occurred (memory + * allocation failure most probably). + */ +FRIBIDI_ENTRY FriBidiStrIndex +fribidi_remove_bidi_marks ( + FriBidiChar *str, /* input string to clean */ + const FriBidiStrIndex len, /* input string length */ + FriBidiStrIndex *positions_to_this, /* list mapping positions to the + order used in str */ + FriBidiStrIndex *position_from_this_list, /* list mapping positions from the + order used in str */ + FriBidiLevel *embedding_levels /* list of embedding levels */ +); + + +/* fribidi_log2vis - get visual string + * + * This function converts the logical input string to the visual output + * strings as specified by the Unicode Bidirectional Algorithm. As a side + * effect it also generates mapping lists between the two strings, and the + * list of embedding levels as defined by the algorithm. + * + * If NULL is passed as any of the the lists, the list is ignored and not + * filled. + * + * Note that this function handles one-line paragraphs. For multi- + * paragraph texts it is necessary to first split the text into + * separate paragraphs and then carry over the resolved pbase_dir + * between the subsequent invocations. + * + * Returns: Maximum level found plus one, or zero if any error occurred + * (memory allocation failure most probably). + */ +FRIBIDI_ENTRY FriBidiLevel fribidi_log2vis ( + const FriBidiChar *str, /* input logical string */ + const FriBidiStrIndex len, /* input string length */ + FriBidiParType *pbase_dir, /* requested and resolved paragraph + * base direction */ + FriBidiChar *visual_str, /* output visual string */ + FriBidiStrIndex *positions_L_to_V, /* output mapping from logical to + * visual string positions */ + FriBidiStrIndex *positions_V_to_L, /* output mapping from visual string + * back to the logical string + * positions */ + FriBidiLevel *embedding_levels /* output list of embedding levels */ +); + +/* End of functions */ + +#ifdef FRIBIDI_NO_DEPRECATED +#else +# include "fribidi-deprecated.h" +#endif /* !FRIBIDI_NO_DEPRECATED */ + + +/* An string containing the version information of the library. */ +FRIBIDI_ENTRY FRIBIDI_EXTERN const char *fribidi_version_info; + +#include "fribidi-enddecls.h" + +#endif /* !_FRIBIDI_H */ +/* Editor directions: + * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h new file mode 100644 index 0000000..cae551e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h @@ -0,0 +1,221 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ +/* GdkPixbuf library - Animation support + * + * Copyright (C) 1999 The Free Software Foundation + * + * Authors: Mark Crichton + * Miguel de Icaza + * Federico Mena-Quintero + * Havoc Pennington + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_ANIMATION_H +#define GDK_PIXBUF_ANIMATION_H + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/* Animation support */ + +typedef struct _GdkPixbufAnimation GdkPixbufAnimation; + + +typedef struct _GdkPixbufAnimationIter GdkPixbufAnimationIter; + +#define GDK_TYPE_PIXBUF_ANIMATION (gdk_pixbuf_animation_get_type ()) +#define GDK_PIXBUF_ANIMATION(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_PIXBUF_ANIMATION, GdkPixbufAnimation)) +#define GDK_IS_PIXBUF_ANIMATION(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_PIXBUF_ANIMATION)) + +#define GDK_TYPE_PIXBUF_ANIMATION_ITER (gdk_pixbuf_animation_iter_get_type ()) +#define GDK_PIXBUF_ANIMATION_ITER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_PIXBUF_ANIMATION_ITER, GdkPixbufAnimationIter)) +#define GDK_IS_PIXBUF_ANIMATION_ITER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_PIXBUF_ANIMATION_ITER)) + +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_animation_get_type (void) G_GNUC_CONST; + +#ifdef G_OS_WIN32 +/* API/ABI compat, see gdk-pixbuf-core.h for details */ +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufAnimation *gdk_pixbuf_animation_new_from_file_utf8 (const char *filename, + GError **error); +#endif + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufAnimation *gdk_pixbuf_animation_new_from_file (const char *filename, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_28 +GdkPixbufAnimation *gdk_pixbuf_animation_new_from_stream (GInputStream *stream, + GCancellable *cancellable, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_28 +void gdk_pixbuf_animation_new_from_stream_async (GInputStream *stream, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GDK_PIXBUF_AVAILABLE_IN_2_28 +GdkPixbufAnimation *gdk_pixbuf_animation_new_from_stream_finish (GAsyncResult*async_result, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_28 +GdkPixbufAnimation *gdk_pixbuf_animation_new_from_resource(const char *resource_path, + GError **error); + +#ifndef GDK_PIXBUF_DISABLE_DEPRECATED + +GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_ref) +GdkPixbufAnimation *gdk_pixbuf_animation_ref (GdkPixbufAnimation *animation); +GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_unref) +void gdk_pixbuf_animation_unref (GdkPixbufAnimation *animation); +#endif + +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_animation_get_width (GdkPixbufAnimation *animation); +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_animation_get_height (GdkPixbufAnimation *animation); +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_animation_is_static_image (GdkPixbufAnimation *animation); +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_animation_get_static_image (GdkPixbufAnimation *animation); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufAnimationIter *gdk_pixbuf_animation_get_iter (GdkPixbufAnimation *animation, + const GTimeVal *start_time); +G_GNUC_END_IGNORE_DEPRECATIONS + +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_animation_iter_get_type (void) G_GNUC_CONST; +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_animation_iter_get_delay_time (GdkPixbufAnimationIter *iter); +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_animation_iter_get_pixbuf (GdkPixbufAnimationIter *iter); +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_animation_iter_on_currently_loading_frame (GdkPixbufAnimationIter *iter); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_animation_iter_advance (GdkPixbufAnimationIter *iter, + const GTimeVal *current_time); +G_GNUC_END_IGNORE_DEPRECATIONS + + +#ifdef GDK_PIXBUF_ENABLE_BACKEND + + + +/** + * GdkPixbufAnimationClass: + * @parent_class: the parent class + * @is_static_image: returns whether the given animation is just a static image. + * @get_static_image: returns a static image representing the given animation. + * @get_size: fills @width and @height with the frame size of the animation. + * @get_iter: returns an iterator for the given animation. + * + * Modules supporting animations must derive a type from + * #GdkPixbufAnimation, providing suitable implementations of the + * virtual functions. + */ +typedef struct _GdkPixbufAnimationClass GdkPixbufAnimationClass; + +#define GDK_PIXBUF_ANIMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_PIXBUF_ANIMATION, GdkPixbufAnimationClass)) +#define GDK_IS_PIXBUF_ANIMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PIXBUF_ANIMATION)) +#define GDK_PIXBUF_ANIMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_PIXBUF_ANIMATION, GdkPixbufAnimationClass)) + +/* Private part of the GdkPixbufAnimation structure */ +struct _GdkPixbufAnimation { + GObject parent_instance; + +}; + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +struct _GdkPixbufAnimationClass { + GObjectClass parent_class; + + /*< public >*/ + + gboolean (*is_static_image) (GdkPixbufAnimation *animation); + + GdkPixbuf* (*get_static_image) (GdkPixbufAnimation *animation); + + void (*get_size) (GdkPixbufAnimation *animation, + int *width, + int *height); + + GdkPixbufAnimationIter* (*get_iter) (GdkPixbufAnimation *animation, + const GTimeVal *start_time); +}; +G_GNUC_END_IGNORE_DEPRECATIONS + + + +/** + * GdkPixbufAnimationIterClass: + * @parent_class: the parent class + * @get_delay_time: returns the time in milliseconds that the current frame + * should be shown. + * @get_pixbuf: returns the current frame. + * @on_currently_loading_frame: returns whether the current frame of @iter is + * being loaded. + * @advance: advances the iterator to @current_time, possibly changing the + * current frame. + * + * Modules supporting animations must derive a type from + * #GdkPixbufAnimationIter, providing suitable implementations of the + * virtual functions. + */ +typedef struct _GdkPixbufAnimationIterClass GdkPixbufAnimationIterClass; + +#define GDK_PIXBUF_ANIMATION_ITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_PIXBUF_ANIMATION_ITER, GdkPixbufAnimationIterClass)) +#define GDK_IS_PIXBUF_ANIMATION_ITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PIXBUF_ANIMATION_ITER)) +#define GDK_PIXBUF_ANIMATION_ITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_PIXBUF_ANIMATION_ITER, GdkPixbufAnimationIterClass)) + +struct _GdkPixbufAnimationIter { + GObject parent_instance; + +}; + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +struct _GdkPixbufAnimationIterClass { + GObjectClass parent_class; + + /*< public >*/ + + int (*get_delay_time) (GdkPixbufAnimationIter *iter); + + GdkPixbuf* (*get_pixbuf) (GdkPixbufAnimationIter *iter); + + gboolean (*on_currently_loading_frame) (GdkPixbufAnimationIter *iter); + + gboolean (*advance) (GdkPixbufAnimationIter *iter, + const GTimeVal *current_time); +}; +G_GNUC_END_IGNORE_DEPRECATIONS + + +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_non_anim_get_type (void) G_GNUC_CONST; +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufAnimation* gdk_pixbuf_non_anim_new (GdkPixbuf *pixbuf); + +#endif /* GDK_PIXBUF_ENABLE_BACKEND */ + +G_END_DECLS + +#endif /* GDK_PIXBUF_ANIMATION_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h new file mode 100644 index 0000000..9b6f58b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h @@ -0,0 +1,37 @@ +/* GdkPixbuf library - Autocleanup definitions + * + * Copyright (C) 2015 Kalev Lember + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_AUTOCLEANUPS_H +#define GDK_PIXBUF_AUTOCLEANUPS_H + +/* We need all the types, so don't try to include this directly */ +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkPixbuf, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkPixbufAnimation, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkPixbufAnimationIter, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkPixbufLoader, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkPixbufSimpleAnim, g_object_unref) + +#endif + +#endif /* GDK_PIXBUF_AUTOCLEANUPS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h new file mode 100644 index 0000000..4b8c9b9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h @@ -0,0 +1,525 @@ +/* GdkPixbuf library - GdkPixbuf data structure + * + * Copyright (C) 2003 The Free Software Foundation + * + * Authors: Mark Crichton + * Miguel de Icaza + * Federico Mena-Quintero + * Havoc Pennington + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_CORE_H +#define GDK_PIXBUF_CORE_H + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +#include + +G_BEGIN_DECLS + +/** + * GdkPixbufAlphaMode: + * @GDK_PIXBUF_ALPHA_BILEVEL: A bilevel clipping mask (black and white) + * will be created and used to draw the image. Pixels below 0.5 opacity + * will be considered fully transparent, and all others will be + * considered fully opaque. + * @GDK_PIXBUF_ALPHA_FULL: For now falls back to #GDK_PIXBUF_ALPHA_BILEVEL. + * In the future it will do full alpha compositing. + * + * Control the alpha channel for drawables. + * + * These values can be passed to gdk_pixbuf_xlib_render_to_drawable_alpha() + * in gdk-pixbuf-xlib to control how the alpha channel of an image should + * be handled. + * + * This function can create a bilevel clipping mask (black and white) and use + * it while painting the image. + * + * In the future, when the X Window System gets an alpha channel extension, + * it will be possible to do full alpha compositing onto arbitrary drawables. + * For now both cases fall back to a bilevel clipping mask. + * + * Deprecated: 2.42: There is no user of GdkPixbufAlphaMode in GdkPixbuf, + * and the Xlib utility functions have been split out to their own + * library, gdk-pixbuf-xlib + */ +typedef enum +{ + GDK_PIXBUF_ALPHA_BILEVEL, + GDK_PIXBUF_ALPHA_FULL +} GdkPixbufAlphaMode; + +/** + * GdkColorspace: + * @GDK_COLORSPACE_RGB: Indicates a red/green/blue additive color space. + * + * This enumeration defines the color spaces that are supported by + * the gdk-pixbuf library. + * + * Currently only RGB is supported. + */ +/* Note that these values are encoded in inline pixbufs + * as ints, so don't reorder them + */ +typedef enum { + GDK_COLORSPACE_RGB +} GdkColorspace; + +/* All of these are opaque structures */ + +typedef struct _GdkPixbuf GdkPixbuf; + +#define GDK_TYPE_PIXBUF (gdk_pixbuf_get_type ()) +#define GDK_PIXBUF(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_PIXBUF, GdkPixbuf)) +#define GDK_IS_PIXBUF(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_PIXBUF)) + + +/** + * GdkPixbufDestroyNotify: + * @pixels: (array) (element-type guint8): The pixel array of the pixbuf + * that is being finalized. + * @data: (closure): User closure data. + * + * A function of this type is responsible for freeing the pixel array + * of a pixbuf. + * + * The gdk_pixbuf_new_from_data() function lets you pass in a pre-allocated + * pixel array so that a pixbuf can be created from it; in this case you + * will need to pass in a function of type `GdkPixbufDestroyNotify` so that + * the pixel data can be freed when the pixbuf is finalized. + */ +typedef void (* GdkPixbufDestroyNotify) (guchar *pixels, gpointer data); + +/** + * GDK_PIXBUF_ERROR: + * + * Error domain used for pixbuf operations. + * + * Indicates that the error code will be in the `GdkPixbufError` enumeration. + * + * See the `GError` for information on error domains and error codes. + */ +#define GDK_PIXBUF_ERROR gdk_pixbuf_error_quark () + +/** + * GdkPixbufError: + * @GDK_PIXBUF_ERROR_CORRUPT_IMAGE: An image file was broken somehow. + * @GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY: Not enough memory. + * @GDK_PIXBUF_ERROR_BAD_OPTION: A bad option was passed to a pixbuf save module. + * @GDK_PIXBUF_ERROR_UNKNOWN_TYPE: Unknown image type. + * @GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION: Don't know how to perform the + * given operation on the type of image at hand. + * @GDK_PIXBUF_ERROR_FAILED: Generic failure code, something went wrong. + * @GDK_PIXBUF_ERROR_INCOMPLETE_ANIMATION: Only part of the animation was loaded. + * + * An error code in the `GDK_PIXBUF_ERROR` domain. + * + * Many gdk-pixbuf operations can cause errors in this domain, or in + * the `G_FILE_ERROR` domain. + */ +typedef enum { + /* image data hosed */ + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, + /* no mem to load image */ + GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, + /* bad option passed to save routine */ + GDK_PIXBUF_ERROR_BAD_OPTION, + /* unsupported image type (sort of an ENOSYS) */ + GDK_PIXBUF_ERROR_UNKNOWN_TYPE, + /* unsupported operation (load, save) for image type */ + GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION, + GDK_PIXBUF_ERROR_FAILED, + GDK_PIXBUF_ERROR_INCOMPLETE_ANIMATION +} GdkPixbufError; + +GDK_PIXBUF_AVAILABLE_IN_ALL +GQuark gdk_pixbuf_error_quark (void); + + + +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_get_type (void) G_GNUC_CONST; + +/* Reference counting */ + +#ifndef GDK_PIXBUF_DISABLE_DEPRECATED +GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_ref) +GdkPixbuf *gdk_pixbuf_ref (GdkPixbuf *pixbuf); +GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_unref) +void gdk_pixbuf_unref (GdkPixbuf *pixbuf); +#endif + +/* GdkPixbuf accessors */ + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkColorspace gdk_pixbuf_get_colorspace (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_get_n_channels (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_get_has_alpha (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_get_bits_per_sample (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +guchar *gdk_pixbuf_get_pixels (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_get_width (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_get_height (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +int gdk_pixbuf_get_rowstride (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_2_26 +gsize gdk_pixbuf_get_byte_length (const GdkPixbuf *pixbuf); + +GDK_PIXBUF_AVAILABLE_IN_2_26 +guchar *gdk_pixbuf_get_pixels_with_length (const GdkPixbuf *pixbuf, + guint *length); + +GDK_PIXBUF_AVAILABLE_IN_2_32 +const guint8* gdk_pixbuf_read_pixels (const GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_2_32 +GBytes * gdk_pixbuf_read_pixel_bytes (const GdkPixbuf *pixbuf); + + + +/* Create a blank pixbuf with an optimal rowstride and a new buffer */ + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_new (GdkColorspace colorspace, gboolean has_alpha, int bits_per_sample, + int width, int height); + +GDK_PIXBUF_AVAILABLE_IN_2_36 +gint gdk_pixbuf_calculate_rowstride (GdkColorspace colorspace, + gboolean has_alpha, + int bits_per_sample, + int width, + int height); + +/* Copy a pixbuf */ +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_copy (const GdkPixbuf *pixbuf); + +/* Create a pixbuf which points to the pixels of another pixbuf */ +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_new_subpixbuf (GdkPixbuf *src_pixbuf, + int src_x, + int src_y, + int width, + int height); + +/* Simple loading */ + +#ifdef G_OS_WIN32 +/* In previous versions these _utf8 variants where exported and linked to + * by default. Export them here for ABI (and gi API) compat. + */ + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_new_from_file_utf8 (const char *filename, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_4 +GdkPixbuf *gdk_pixbuf_new_from_file_at_size_utf8 (const char *filename, + int width, + int height, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_6 +GdkPixbuf *gdk_pixbuf_new_from_file_at_scale_utf8 (const char *filename, + int width, + int height, + gboolean preserve_aspect_ratio, + GError **error); +#endif + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_new_from_file (const char *filename, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_4 +GdkPixbuf *gdk_pixbuf_new_from_file_at_size (const char *filename, + int width, + int height, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_6 +GdkPixbuf *gdk_pixbuf_new_from_file_at_scale (const char *filename, + int width, + int height, + gboolean preserve_aspect_ratio, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_26 +GdkPixbuf *gdk_pixbuf_new_from_resource (const char *resource_path, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_26 +GdkPixbuf *gdk_pixbuf_new_from_resource_at_scale (const char *resource_path, + int width, + int height, + gboolean preserve_aspect_ratio, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_new_from_data (const guchar *data, + GdkColorspace colorspace, + gboolean has_alpha, + int bits_per_sample, + int width, int height, + int rowstride, + GdkPixbufDestroyNotify destroy_fn, + gpointer destroy_fn_data); + +GDK_PIXBUF_AVAILABLE_IN_2_32 +GdkPixbuf *gdk_pixbuf_new_from_bytes (GBytes *data, + GdkColorspace colorspace, + gboolean has_alpha, + int bits_per_sample, + int width, int height, + int rowstride); + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_new_from_xpm_data (const char **data); + +#ifndef GDK_PIXBUF_DISABLE_DEPRECATED +GDK_PIXBUF_DEPRECATED_IN_2_32 +GdkPixbuf* gdk_pixbuf_new_from_inline (gint data_length, + const guint8 *data, + gboolean copy_pixels, + GError **error); +#endif + +/* Mutations */ +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_fill (GdkPixbuf *pixbuf, + guint32 pixel); + +/* Saving */ + +#ifndef __GTK_DOC_IGNORE__ +#ifdef G_OS_WIN32 +/* DLL ABI stability hack. */ +#define gdk_pixbuf_save gdk_pixbuf_save_utf8 +#endif +#endif + +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_save (GdkPixbuf *pixbuf, + const char *filename, + const char *type, + GError **error, + ...) G_GNUC_NULL_TERMINATED; + +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_savev (GdkPixbuf *pixbuf, + const char *filename, + const char *type, + char **option_keys, + char **option_values, + GError **error); + +#ifdef G_OS_WIN32 +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_savev_utf8 (GdkPixbuf *pixbuf, + const char *filename, + const char *type, + char **option_keys, + char **option_values, + GError **error); +#endif + +/* Saving to a callback function */ + + +/** + * GdkPixbufSaveFunc: + * @buf: (array length=count) (element-type guint8): bytes to be written. + * @count: number of bytes in @buf. + * @error: (out): A location to return an error. + * @data: (closure): user data passed to gdk_pixbuf_save_to_callback(). + * + * Save functions used by [method@GdkPixbuf.Pixbuf.save_to_callback]. + * + * This function is called once for each block of bytes that is "written" + * by `gdk_pixbuf_save_to_callback()`. + * + * If successful it should return `TRUE`; if an error occurs it should set + * `error` and return `FALSE`, in which case `gdk_pixbuf_save_to_callback()` + * will fail with the same error. + * + * Returns: `TRUE` if successful, `FALSE` otherwise + * + * Since: 2.4 + */ + +typedef gboolean (*GdkPixbufSaveFunc) (const gchar *buf, + gsize count, + GError **error, + gpointer data); + +GDK_PIXBUF_AVAILABLE_IN_2_4 +gboolean gdk_pixbuf_save_to_callback (GdkPixbuf *pixbuf, + GdkPixbufSaveFunc save_func, + gpointer user_data, + const char *type, + GError **error, + ...) G_GNUC_NULL_TERMINATED; + +GDK_PIXBUF_AVAILABLE_IN_2_4 +gboolean gdk_pixbuf_save_to_callbackv (GdkPixbuf *pixbuf, + GdkPixbufSaveFunc save_func, + gpointer user_data, + const char *type, + char **option_keys, + char **option_values, + GError **error); + +/* Saving into a newly allocated char array */ + +GDK_PIXBUF_AVAILABLE_IN_2_4 +gboolean gdk_pixbuf_save_to_buffer (GdkPixbuf *pixbuf, + gchar **buffer, + gsize *buffer_size, + const char *type, + GError **error, + ...) G_GNUC_NULL_TERMINATED; + +GDK_PIXBUF_AVAILABLE_IN_2_4 +gboolean gdk_pixbuf_save_to_bufferv (GdkPixbuf *pixbuf, + gchar **buffer, + gsize *buffer_size, + const char *type, + char **option_keys, + char **option_values, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_2_14 +GdkPixbuf *gdk_pixbuf_new_from_stream (GInputStream *stream, + GCancellable *cancellable, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_new_from_stream_async (GInputStream *stream, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_new_from_stream_finish (GAsyncResult *async_result, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_2_14 +GdkPixbuf *gdk_pixbuf_new_from_stream_at_scale (GInputStream *stream, + gint width, + gint height, + gboolean preserve_aspect_ratio, + GCancellable *cancellable, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_new_from_stream_at_scale_async (GInputStream *stream, + gint width, + gint height, + gboolean preserve_aspect_ratio, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GDK_PIXBUF_AVAILABLE_IN_2_14 +gboolean gdk_pixbuf_save_to_stream (GdkPixbuf *pixbuf, + GOutputStream *stream, + const char *type, + GCancellable *cancellable, + GError **error, + ...); + +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_save_to_stream_async (GdkPixbuf *pixbuf, + GOutputStream *stream, + const gchar *type, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data, + ...); + +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_save_to_stream_finish (GAsyncResult *async_result, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_2_36 +void gdk_pixbuf_save_to_streamv_async (GdkPixbuf *pixbuf, + GOutputStream *stream, + const gchar *type, + gchar **option_keys, + gchar **option_values, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GDK_PIXBUF_AVAILABLE_IN_2_36 +gboolean gdk_pixbuf_save_to_streamv (GdkPixbuf *pixbuf, + GOutputStream *stream, + const char *type, + char **option_keys, + char **option_values, + GCancellable *cancellable, + GError **error); + +/* Adding an alpha channel */ +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_add_alpha (const GdkPixbuf *pixbuf, gboolean substitute_color, + guchar r, guchar g, guchar b); + +/* Copy an area of a pixbuf onto another one */ +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_copy_area (const GdkPixbuf *src_pixbuf, + int src_x, int src_y, + int width, int height, + GdkPixbuf *dest_pixbuf, + int dest_x, int dest_y); + +/* Brighten/darken and optionally make it pixelated-looking */ +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_saturate_and_pixelate (const GdkPixbuf *src, + GdkPixbuf *dest, + gfloat saturation, + gboolean pixelate); + +/* Transform an image to agree with its embedded orientation option / tag */ +GDK_PIXBUF_AVAILABLE_IN_2_12 +GdkPixbuf *gdk_pixbuf_apply_embedded_orientation (GdkPixbuf *src); + +/* key/value pairs that can be attached by the pixbuf loader */ +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_set_option (GdkPixbuf *pixbuf, + const gchar *key, + const gchar *value); +GDK_PIXBUF_AVAILABLE_IN_ALL +const gchar * gdk_pixbuf_get_option (GdkPixbuf *pixbuf, + const gchar *key); +GDK_PIXBUF_AVAILABLE_IN_2_36 +gboolean gdk_pixbuf_remove_option (GdkPixbuf *pixbuf, + const gchar *key); +GDK_PIXBUF_AVAILABLE_IN_2_32 +GHashTable * gdk_pixbuf_get_options (GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_2_36 +gboolean gdk_pixbuf_copy_options (GdkPixbuf *src_pixbuf, + GdkPixbuf *dest_pixbuf); + + +G_END_DECLS + + +#endif /* GDK_PIXBUF_CORE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h new file mode 100644 index 0000000..f692664 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h @@ -0,0 +1,40 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_PIXBUF_ENUM_TYPES_H__ +#define __GDK_PIXBUF_ENUM_TYPES_H__ + +#include + +#include + +G_BEGIN_DECLS + +/* enumerations from "gdk-pixbuf-core.h" */ +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_alpha_mode_get_type (void) G_GNUC_CONST; +#define GDK_TYPE_PIXBUF_ALPHA_MODE (gdk_pixbuf_alpha_mode_get_type ()) +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_colorspace_get_type (void) G_GNUC_CONST; +#define GDK_TYPE_COLORSPACE (gdk_colorspace_get_type ()) +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_error_get_type (void) G_GNUC_CONST; +#define GDK_TYPE_PIXBUF_ERROR (gdk_pixbuf_error_get_type ()) + +/* enumerations from "gdk-pixbuf-transform.h" */ +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_interp_type_get_type (void) G_GNUC_CONST; +#define GDK_TYPE_INTERP_TYPE (gdk_interp_type_get_type ()) +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_rotation_get_type (void) G_GNUC_CONST; +#define GDK_TYPE_PIXBUF_ROTATION (gdk_pixbuf_rotation_get_type ()) +G_END_DECLS + +#endif /* __GDK_PIXBUF_ENUM_TYPES_H__ */ + +/* Generated data ends here */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h new file mode 100644 index 0000000..958040f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h @@ -0,0 +1,115 @@ +#ifndef __GDK_PIXBUF_FEATURES_H__ +#define __GDK_PIXBUF_FEATURES_H__ + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +/** + * GDK_PIXBUF_MAJOR: + * + * Major version of gdk-pixbuf library, that is the "0" in + * "0.8.2" for example. + */ +/** + * GDK_PIXBUF_MINOR: + * + * Minor version of gdk-pixbuf library, that is the "8" in + * "0.8.2" for example. + */ +/** + * GDK_PIXBUF_MICRO: + * + * Micro version of gdk-pixbuf library, that is the "2" in + * "0.8.2" for example. + */ +/** + * GDK_PIXBUF_VERSION: + * + * Contains the full version of GdkPixbuf as a string. + * + * This is the version being compiled against; contrast with + * `gdk_pixbuf_version`. + */ + +#define GDK_PIXBUF_MAJOR (2) +#define GDK_PIXBUF_MINOR (42) +#define GDK_PIXBUF_MICRO (10) +#define GDK_PIXBUF_VERSION "2.42.10" + +#ifndef _GDK_PIXBUF_EXTERN +#define _GDK_PIXBUF_EXTERN extern +#endif + +/* We prefix variable declarations so they can + * properly get exported/imported from Windows DLLs. + */ +#ifdef G_PLATFORM_WIN32 +# ifdef GDK_PIXBUF_STATIC_COMPILATION +# define GDK_PIXBUF_VAR extern +# else /* !GDK_PIXBUF_STATIC_COMPILATION */ +# ifdef GDK_PIXBUF_C_COMPILATION +# ifdef DLL_EXPORT +# define GDK_PIXBUF_VAR _GDK_PIXBUF_EXTERN +# else /* !DLL_EXPORT */ +# define GDK_PIXBUF_VAR extern +# endif /* !DLL_EXPORT */ +# else /* !GDK_PIXBUF_C_COMPILATION */ +# define GDK_PIXBUF_VAR extern __declspec(dllimport) +# endif /* !GDK_PIXBUF_C_COMPILATION */ +# endif /* !GDK_PIXBUF_STATIC_COMPILATION */ +#else /* !G_PLATFORM_WIN32 */ +# define GDK_PIXBUF_VAR _GDK_PIXBUF_EXTERN +#endif /* !G_PLATFORM_WIN32 */ + +/** + * gdk_pixbuf_major_version: + * + * The major version number of the gdk-pixbuf library. (e.g. in + * gdk-pixbuf version 1.2.5 this is 1.) + * + * + * This variable is in the library, so represents the + * gdk-pixbuf library you have linked against. Contrast with the + * `GDK_PIXBUF_MAJOR` macro, which represents the major version of the + * gdk-pixbuf headers you have included. + */ +/** + * gdk_pixbuf_minor_version: + * + * The minor version number of the gdk-pixbuf library. (e.g. in + * gdk-pixbuf version 1.2.5 this is 2.) + * + * + * This variable is in the library, so represents the + * gdk-pixbuf library you have linked against. Contrast with the + * `GDK_PIXBUF_MINOR` macro, which represents the minor version of the + * gdk-pixbuf headers you have included. + */ +/** + * gdk_pixbuf_micro_version: + * + * The micro version number of the gdk-pixbuf library. (e.g. in + * gdk-pixbuf version 1.2.5 this is 5.) + * + * + * This variable is in the library, so represents the + * gdk-pixbuf library you have linked against. Contrast with the + * `GDK_PIXBUF_MICRO` macro, which represents the micro version of the + * gdk-pixbuf headers you have included. + */ +/** + * gdk_pixbuf_version: + * + * Contains the full version of the gdk-pixbuf library as a string. + * This is the version currently in use by a running program. + */ + +GDK_PIXBUF_VAR const guint gdk_pixbuf_major_version; +GDK_PIXBUF_VAR const guint gdk_pixbuf_minor_version; +GDK_PIXBUF_VAR const guint gdk_pixbuf_micro_version; +GDK_PIXBUF_VAR const char *gdk_pixbuf_version; + +#endif /* __GDK_PIXBUF_FEATURES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h new file mode 100644 index 0000000..7565744 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h @@ -0,0 +1,481 @@ +/* GdkPixbuf library - Io handling. This is an internal header for + * GdkPixbuf. You should never use it unless you are doing development for + * GdkPixbuf itself. + * + * Copyright (C) 1999 The Free Software Foundation + * + * Authors: Mark Crichton + * Miguel de Icaza + * Federico Mena-Quintero + * Jonathan Blandford + * Michael Fulbright + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_IO_H +#define GDK_PIXBUF_IO_H + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct _GdkPixbufFormat GdkPixbufFormat; + +GDK_PIXBUF_AVAILABLE_IN_2_40 +gboolean gdk_pixbuf_init_modules (const char *path, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_format_get_type (void) G_GNUC_CONST; + +GDK_PIXBUF_AVAILABLE_IN_ALL +GSList *gdk_pixbuf_get_formats (void); +GDK_PIXBUF_AVAILABLE_IN_2_2 +gchar *gdk_pixbuf_format_get_name (GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_2_2 +gchar *gdk_pixbuf_format_get_description (GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_2_2 +gchar **gdk_pixbuf_format_get_mime_types (GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_2_2 +gchar **gdk_pixbuf_format_get_extensions (GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_2_36 +gboolean gdk_pixbuf_format_is_save_option_supported (GdkPixbufFormat *format, + const gchar *option_key); +GDK_PIXBUF_AVAILABLE_IN_2_2 +gboolean gdk_pixbuf_format_is_writable (GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_2_6 +gboolean gdk_pixbuf_format_is_scalable (GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_2_6 +gboolean gdk_pixbuf_format_is_disabled (GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_2_6 +void gdk_pixbuf_format_set_disabled (GdkPixbufFormat *format, + gboolean disabled); +GDK_PIXBUF_AVAILABLE_IN_2_6 +gchar *gdk_pixbuf_format_get_license (GdkPixbufFormat *format); + +GDK_PIXBUF_AVAILABLE_IN_2_4 +GdkPixbufFormat *gdk_pixbuf_get_file_info (const gchar *filename, + gint *width, + gint *height); +GDK_PIXBUF_AVAILABLE_IN_2_32 +void gdk_pixbuf_get_file_info_async (const gchar *filename, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GDK_PIXBUF_AVAILABLE_IN_2_32 +GdkPixbufFormat *gdk_pixbuf_get_file_info_finish (GAsyncResult *async_result, + gint *width, + gint *height, + GError **error); + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufFormat *gdk_pixbuf_format_copy (const GdkPixbufFormat *format); +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_format_free (GdkPixbufFormat *format); + +#ifdef GDK_PIXBUF_ENABLE_BACKEND + + + +/** + * GdkPixbufModuleSizeFunc: + * @width: pointer to a location containing the current image width + * @height: pointer to a location containing the current image height + * @user_data: the loader. + * + * Defines the type of the function that gets called once the size + * of the loaded image is known. + * + * The function is expected to set @width and @height to the desired + * size to which the image should be scaled. If a module has no efficient + * way to achieve the desired scaling during the loading of the image, it may + * either ignore the size request, or only approximate it - gdk-pixbuf will + * then perform the required scaling on the completely loaded image. + * + * If the function sets @width or @height to zero, the module should interpret + * this as a hint that it will be closed soon and shouldn't allocate further + * resources. This convention is used to implement gdk_pixbuf_get_file_info() + * efficiently. + * + * Since: 2.2 + */ +typedef void (* GdkPixbufModuleSizeFunc) (gint *width, + gint *height, + gpointer user_data); + +/** + * GdkPixbufModulePreparedFunc: + * @pixbuf: the #GdkPixbuf that is currently being loaded. + * @anim: if an animation is being loaded, the #GdkPixbufAnimation, else %NULL. + * @user_data: the loader. + * + * Defines the type of the function that gets called once the initial + * setup of @pixbuf is done. + * + * #GdkPixbufLoader uses a function of this type to emit the + * "area_prepared" + * signal. + * + * Since: 2.2 + */ +typedef void (* GdkPixbufModulePreparedFunc) (GdkPixbuf *pixbuf, + GdkPixbufAnimation *anim, + gpointer user_data); + +/** + * GdkPixbufModuleUpdatedFunc: + * @pixbuf: the #GdkPixbuf that is currently being loaded. + * @x: the X origin of the updated area. + * @y: the Y origin of the updated area. + * @width: the width of the updated area. + * @height: the height of the updated area. + * @user_data: the loader. + * + * Defines the type of the function that gets called every time a region + * of @pixbuf is updated. + * + * #GdkPixbufLoader uses a function of this type to emit the + * "area_updated" + * signal. + * + * Since: 2.2 + */ +typedef void (* GdkPixbufModuleUpdatedFunc) (GdkPixbuf *pixbuf, + int x, + int y, + int width, + int height, + gpointer user_data); + +/** + * GdkPixbufModulePattern: + * @prefix: the prefix for this pattern + * @mask: mask containing bytes which modify how the prefix is matched against + * test data + * @relevance: relevance of this pattern + * + * The signature prefix for a module. + * + * The signature of a module is a set of prefixes. Prefixes are encoded as + * pairs of ordinary strings, where the second string, called the mask, if + * not `NULL`, must be of the same length as the first one and may contain + * ' ', '!', 'x', 'z', and 'n' to indicate bytes that must be matched, + * not matched, "don't-care"-bytes, zeros and non-zeros, respectively. + * + * Each prefix has an associated integer that describes the relevance of + * the prefix, with 0 meaning a mismatch and 100 a "perfect match". + * + * Starting with gdk-pixbuf 2.8, the first byte of the mask may be '*', + * indicating an unanchored pattern that matches not only at the beginning, + * but also in the middle. Versions prior to 2.8 will interpret the '*' + * like an 'x'. + * + * The signature of a module is stored as an array of + * `GdkPixbufModulePatterns`. The array is terminated by a pattern + * where the `prefix` is `NULL`. + * + * ```c + * GdkPixbufModulePattern *signature[] = { + * { "abcdx", " !x z", 100 }, + * { "bla", NULL, 90 }, + * { NULL, NULL, 0 } + * }; + * ``` + * + * In the example above, the signature matches e.g. "auud\0" with + * relevance 100, and "blau" with relevance 90. + * + * Since: 2.2 + */ +typedef struct _GdkPixbufModulePattern GdkPixbufModulePattern; +struct _GdkPixbufModulePattern { + char *prefix; + char *mask; + int relevance; +}; + +/** + * GdkPixbufModuleLoadFunc: + * @f: the file stream from which the image should be loaded + * @error: return location for a loading error + * + * Loads a file from a standard C file stream into a new `GdkPixbuf`. + * + * In case of error, this function should return `NULL` and set the `error` argument. + * + * Returns: (transfer full): a newly created `GdkPixbuf` for the contents of the file + */ +typedef GdkPixbuf *(* GdkPixbufModuleLoadFunc) (FILE *f, + GError **error); + +/** + * GdkPixbufModuleLoadXpmDataFunc: + * @data: (array zero-terminated=1): the XPM data + * + * Loads XPM data into a new `GdkPixbuf`. + * + * Returns: (transfer full): a newly created `GdkPixbuf` for the XPM data + */ +typedef GdkPixbuf *(* GdkPixbufModuleLoadXpmDataFunc) (const char **data); + +/** + * GdkPixbufModuleLoadAnimationFunc: + * @f: the file stream from which the image should be loaded + * @error: return location for a loading error + * + * Loads a file from a standard C file stream into a new `GdkPixbufAnimation`. + * + * In case of error, this function should return `NULL` and set the `error` argument. + * + * Returns: (transfer full): a newly created `GdkPixbufAnimation` for the contents of the file + */ +typedef GdkPixbufAnimation *(* GdkPixbufModuleLoadAnimationFunc) (FILE *f, + GError **error); + +/** + * GdkPixbufModuleBeginLoadFunc: + * @size_func: the function to be called when the size is known + * @prepared_func: the function to be called when the data has been prepared + * @updated_func: the function to be called when the data has been updated + * @user_data: the data to be passed to the functions + * @error: return location for a loading error + * + * Sets up the image loading state. + * + * The image loader is responsible for storing the given function pointers + * and user data, and call them when needed. + * + * The image loader should set up an internal state object, and return it + * from this function; the state object will then be updated from the + * [callback@GdkPixbuf.PixbufModuleIncrementLoadFunc] callback, and will be freed + * by [callback@GdkPixbuf.PixbufModuleStopLoadFunc] callback. + * + * Returns: (transfer full): the data to be passed to + * [callback@GdkPixbuf.PixbufModuleIncrementLoadFunc] + * and [callback@GdkPixbuf.PixbufModuleStopLoadFunc], or `NULL` in case of error + */ +typedef gpointer (* GdkPixbufModuleBeginLoadFunc) (GdkPixbufModuleSizeFunc size_func, + GdkPixbufModulePreparedFunc prepared_func, + GdkPixbufModuleUpdatedFunc updated_func, + gpointer user_data, + GError **error); + +/** + * GdkPixbufModuleStopLoadFunc: + * @context: (transfer full): the state object created by [callback@GdkPixbuf.PixbufModuleBeginLoadFunc] + * @error: return location for a loading error + * + * Finalizes the image loading state. + * + * This function is called on success and error states. + * + * Returns: `TRUE` if the loading operation was successful + */ +typedef gboolean (* GdkPixbufModuleStopLoadFunc) (gpointer context, + GError **error); + +/** + * GdkPixbufModuleIncrementLoadFunc: + * @context: (transfer none): the state object created by [callback@GdkPixbuf.PixbufModuleBeginLoadFunc] + * @buf: (array length=size) (element-type guint8): the data to load + * @size: the length of the data to load + * @error: return location for a loading error + * + * Incrementally loads a buffer into the image data. + * + * Returns: `TRUE` if the incremental load was successful + */ +typedef gboolean (* GdkPixbufModuleIncrementLoadFunc) (gpointer context, + const guchar *buf, + guint size, + GError **error); + +/** + * GdkPixbufModuleSaveFunc: + * @f: the file stream into which the image should be saved + * @pixbuf: the image to save + * @param_keys: (nullable) (array zero-terminated=1): parameter keys to save + * @param_values: (nullable) (array zero-terminated=1): parameter values to save + * @error: return location for a saving error + * + * Saves a `GdkPixbuf` into a standard C file stream. + * + * The optional `param_keys` and `param_values` arrays contain the keys and + * values (in the same order) for attributes to be saved alongside the image + * data. + * + * Returns: `TRUE` on success; in case of failure, `FALSE` is returned and + * the `error` is set + */ +typedef gboolean (* GdkPixbufModuleSaveFunc) (FILE *f, + GdkPixbuf *pixbuf, + gchar **param_keys, + gchar **param_values, + GError **error); + +/** + * GdkPixbufModuleSaveCallbackFunc: + * @save_func: the function to call when saving + * @user_data: (closure): the data to pass to @save_func + * @pixbuf: the `GdkPixbuf` to save + * @option_keys: (nullable) (array zero-terminated=1): an array of option names + * @option_values: (nullable) (array zero-terminated=1): an array of option values + * @error: return location for a save error + * + * Saves a `GdkPixbuf` by calling the provided function. + * + * The optional `option_keys` and `option_values` arrays contain the keys and + * values (in the same order) for attributes to be saved alongside the image + * data. + * + * Returns: `TRUE` on success; in case of failure, `FALSE` is returned and + * the `error` is set + */ +typedef gboolean (* GdkPixbufModuleSaveCallbackFunc) (GdkPixbufSaveFunc save_func, + gpointer user_data, + GdkPixbuf *pixbuf, + gchar **option_keys, + gchar **option_values, + GError **error); + +/** + * GdkPixbufModuleSaveOptionSupportedFunc: + * @option_key: the option key to check + * + * Checks whether the given `option_key` is supported when saving. + * + * Returns: `TRUE` if the option is supported + */ +typedef gboolean (* GdkPixbufModuleSaveOptionSupportedFunc) (const gchar *option_key); + +typedef struct _GdkPixbufModule GdkPixbufModule; +struct _GdkPixbufModule { + char *module_name; + char *module_path; + GModule *module; + GdkPixbufFormat *info; + + /* Atomic loading */ + GdkPixbufModuleLoadFunc load; + GdkPixbufModuleLoadXpmDataFunc load_xpm_data; + + /* Incremental loading */ + GdkPixbufModuleBeginLoadFunc begin_load; + GdkPixbufModuleStopLoadFunc stop_load; + GdkPixbufModuleIncrementLoadFunc load_increment; + + /* Animation loading */ + GdkPixbufModuleLoadAnimationFunc load_animation; + + /* Saving */ + GdkPixbufModuleSaveFunc save; + GdkPixbufModuleSaveCallbackFunc save_to_callback; + GdkPixbufModuleSaveOptionSupportedFunc is_save_option_supported; + + /*< private >*/ + void (*_reserved1) (void); + void (*_reserved2) (void); + void (*_reserved3) (void); + void (*_reserved4) (void); +}; + +/** + * GdkPixbufModuleFillVtableFunc: + * @module: a #GdkPixbufModule. + * + * Defines the type of the function used to set the vtable of a + * #GdkPixbufModule when it is loaded. + * + * Since: 2.2 + */ +typedef void (* GdkPixbufModuleFillVtableFunc) (GdkPixbufModule *module); + +/** + * GdkPixbufModuleFillInfoFunc: + * @info: a #GdkPixbufFormat. + * + * Defines the type of the function used to fill a + * #GdkPixbufFormat structure with information about a module. + * + * Since: 2.2 + */ +typedef void (* GdkPixbufModuleFillInfoFunc) (GdkPixbufFormat *info); + +/** + * GdkPixbufFormatFlags: + * @GDK_PIXBUF_FORMAT_WRITABLE: the module can write out images in the format. + * @GDK_PIXBUF_FORMAT_SCALABLE: the image format is scalable + * @GDK_PIXBUF_FORMAT_THREADSAFE: the module is threadsafe. gdk-pixbuf + * ignores modules that are not marked as threadsafe. (Since 2.28). + * + * Flags which allow a module to specify further details about the supported + * operations. + * + * Since: 2.2 + */ +typedef enum /*< skip >*/ +{ + GDK_PIXBUF_FORMAT_WRITABLE = 1 << 0, + GDK_PIXBUF_FORMAT_SCALABLE = 1 << 1, + GDK_PIXBUF_FORMAT_THREADSAFE = 1 << 2 +} GdkPixbufFormatFlags; + +/** + * GdkPixbufFormat: + * @name: the name of the image format + * @signature: the signature of the module + * @domain: the message domain for the `description` + * @description: a description of the image format + * @mime_types: (array zero-terminated=1): the MIME types for the image format + * @extensions: (array zero-terminated=1): typical filename extensions for the + * image format + * @flags: a combination of `GdkPixbufFormatFlags` + * @disabled: a boolean determining whether the loader is disabled` + * @license: a string containing license information, typically set to + * shorthands like "GPL", "LGPL", etc. + * + * A `GdkPixbufFormat` contains information about the image format accepted + * by a module. + * + * Only modules should access the fields directly, applications should + * use the `gdk_pixbuf_format_*` family of functions. + * + * Since: 2.2 + */ +struct _GdkPixbufFormat { + gchar *name; + GdkPixbufModulePattern *signature; + gchar *domain; + gchar *description; + gchar **mime_types; + gchar **extensions; + guint32 flags; + gboolean disabled; + gchar *license; +}; + +#endif /* GDK_PIXBUF_ENABLE_BACKEND */ + +G_END_DECLS + +#endif /* GDK_PIXBUF_IO_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h new file mode 100644 index 0000000..1cc3413 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h @@ -0,0 +1,113 @@ +/* GdkPixbuf library - Progressive loader object + * + * Copyright (C) 1999 The Free Software Foundation + * + * Authors: Mark Crichton + * Miguel de Icaza + * Federico Mena-Quintero + * Jonathan Blandford + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_LOADER_H +#define GDK_PIXBUF_LOADER_H + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_PIXBUF_LOADER (gdk_pixbuf_loader_get_type ()) +#define GDK_PIXBUF_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoader)) +#define GDK_PIXBUF_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoaderClass)) +#define GDK_IS_PIXBUF_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_PIXBUF_LOADER)) +#define GDK_IS_PIXBUF_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PIXBUF_LOADER)) +#define GDK_PIXBUF_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoaderClass)) + +typedef struct _GdkPixbufLoader GdkPixbufLoader; +struct _GdkPixbufLoader +{ + /*< private >*/ + GObject parent_instance; + + gpointer priv; +}; + +typedef struct _GdkPixbufLoaderClass GdkPixbufLoaderClass; +struct _GdkPixbufLoaderClass +{ + GObjectClass parent_class; + + void (*size_prepared) (GdkPixbufLoader *loader, + int width, + int height); + + void (*area_prepared) (GdkPixbufLoader *loader); + + /* Last known frame needs a redraw for x, y, width, height */ + void (*area_updated) (GdkPixbufLoader *loader, + int x, + int y, + int width, + int height); + + void (*closed) (GdkPixbufLoader *loader); +}; + +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_loader_get_type (void) G_GNUC_CONST; +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufLoader * gdk_pixbuf_loader_new (void); +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufLoader * gdk_pixbuf_loader_new_with_type (const char *image_type, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_4 +GdkPixbufLoader * gdk_pixbuf_loader_new_with_mime_type (const char *mime_type, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_2 +void gdk_pixbuf_loader_set_size (GdkPixbufLoader *loader, + int width, + int height); +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader, + const guchar *buf, + gsize count, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_30 +gboolean gdk_pixbuf_loader_write_bytes (GdkPixbufLoader *loader, + GBytes *buffer, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf * gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader); +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbufAnimation * gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader); +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_loader_close (GdkPixbufLoader *loader, + GError **error); +GDK_PIXBUF_AVAILABLE_IN_2_2 +GdkPixbufFormat *gdk_pixbuf_loader_get_format (GdkPixbufLoader *loader); + +G_END_DECLS + +#endif + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-macros.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-macros.h new file mode 100644 index 0000000..6461c54 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-macros.h @@ -0,0 +1,718 @@ +/* GdkPixbuf library - GdkPixbuf Macros + * + * Copyright (C) 2016 Chun-wei Fan + * + * Authors: Chun-wei Fan + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef GDK_PIXBUF_MACROS_H +#define GDK_PIXBUF_MACROS_H + +#include + +#include + +/** + * GDK_PIXBUF_CHECK_VERSION: + * @major: major version (e.g. 2 for version 2.34.0) + * @minor: minor version (e.g. 34 for version 2.34.0) + * @micro: micro version (e.g. 0 for version 2.34.0) + * + * Macro to test the version of GdkPixbuf being compiled against. + * + * Returns: %TRUE if the version of the GdkPixbuf header files + * is the same as or newer than the passed-in version. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_CHECK_VERSION(major, minor, micro) \ + (GDK_PIXBUF_MAJOR > (major) || \ + (GDK_PIXBUF_MAJOR == (major) && GDK_PIXBUF_MINOR > (minor)) || \ + (GDK_PIXBUF_MAJOR == (major) && GDK_PIXBUF_MINOR == (minor) && \ + GDK_PIXBUF_MICRO >= (micro))) + +/** + * GDK_PIXBUF_VERSION_2_0: + * + * A macro that evaluates to the 2.0 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_0 (G_ENCODE_VERSION (2, 0)) + +/** + * GDK_PIXBUF_VERSION_2_2: + * + * A macro that evaluates to the 2.2 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_2 (G_ENCODE_VERSION (2, 2)) + +/** + * GDK_PIXBUF_VERSION_2_4: + * + * A macro that evaluates to the 2.4 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_4 (G_ENCODE_VERSION (2, 4)) + +/** + * GDK_PIXBUF_VERSION_2_6: + * + * A macro that evaluates to the 2.6 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_6 (G_ENCODE_VERSION (2, 6)) + +/** + * GDK_PIXBUF_VERSION_2_8: + * + * A macro that evaluates to the 2.8 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_8 (G_ENCODE_VERSION (2, 8)) + +/** + * GDK_PIXBUF_VERSION_2_10: + * + * A macro that evaluates to the 2.10 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_10 (G_ENCODE_VERSION (2, 10)) + +/** + * GDK_PIXBUF_VERSION_2_12: + * + * A macro that evaluates to the 2.12 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_12 (G_ENCODE_VERSION (2, 12)) + +/** + * GDK_PIXBUF_VERSION_2_14: + * + * A macro that evaluates to the 2.14 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_14 (G_ENCODE_VERSION (2, 14)) + +/** + * GDK_PIXBUF_VERSION_2_16: + * + * A macro that evaluates to the 2.16 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_16 (G_ENCODE_VERSION (2, 16)) + +/** + * GDK_PIXBUF_VERSION_2_18: + * + * A macro that evaluates to the 2.18 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_18 (G_ENCODE_VERSION (2, 18)) + +/** + * GDK_PIXBUF_VERSION_2_20: + * + * A macro that evaluates to the 2.20 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_20 (G_ENCODE_VERSION (2, 20)) + +/** + * GDK_PIXBUF_VERSION_2_22: + * + * A macro that evaluates to the 2.22 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_22 (G_ENCODE_VERSION (2, 22)) + +/** + * GDK_PIXBUF_VERSION_2_24: + * + * A macro that evaluates to the 2.24 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_24 (G_ENCODE_VERSION (2, 24)) + +/** + * GDK_PIXBUF_VERSION_2_26: + * + * A macro that evaluates to the 2.26 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_26 (G_ENCODE_VERSION (2, 26)) + +/** + * GDK_PIXBUF_VERSION_2_28: + * + * A macro that evaluates to the 2.28 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_28 (G_ENCODE_VERSION (2, 28)) + +/** + * GDK_PIXBUF_VERSION_2_30: + * + * A macro that evaluates to the 2.30 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_30 (G_ENCODE_VERSION (2, 30)) + +/** + * GDK_PIXBUF_VERSION_2_32: + * + * A macro that evaluates to the 2.32 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_32 (G_ENCODE_VERSION (2, 32)) + +/** + * GDK_PIXBUF_VERSION_2_34: + * + * A macro that evaluates to the 2.34 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_34 (G_ENCODE_VERSION (2, 34)) + +/** + * GDK_PIXBUF_VERSION_2_36: + * + * A macro that evaluates to the 2.36 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GDK_PIXBUF_VERSION_2_36 (G_ENCODE_VERSION (2, 36)) + +/** + * GDK_PIXBUF_VERSION_2_38: + * + * A macro that evaluates to the 2.38 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.38 + */ +#define GDK_PIXBUF_VERSION_2_38 (G_ENCODE_VERSION (2, 38)) + +/** + * GDK_PIXBUF_VERSION_2_40: + * + * A macro that evaluates to the 2.40 version of GdkPixbuf, + * in a format that can be used by the C pre-processor. + * + * Since: 2.40 + */ +#define GDK_PIXBUF_VERSION_2_40 (G_ENCODE_VERSION (2, 40)) + +#ifndef __GTK_DOC_IGNORE__ +#if (GDK_PIXBUF_MINOR % 2) +#define GDK_PIXBUF_VERSION_CUR_STABLE (G_ENCODE_VERSION (GDK_PIXBUF_MAJOR, GDK_PIXBUF_MINOR + 1)) +#else +#define GDK_PIXBUF_VERSION_CUR_STABLE (G_ENCODE_VERSION (GDK_PIXBUF_MAJOR, GDK_PIXBUF_MINOR)) +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if (GDK_PIXBUF_MINOR % 2) +#define GDK_PIXBUF_VERSION_PREV_STABLE (G_ENCODE_VERSION (GDK_PIXBUF_MAJOR, GDK_PIXBUF_MINOR - 1)) +#else +#define GDK_PIXBUF_VERSION_PREV_STABLE (G_ENCODE_VERSION (GDK_PIXBUF_MAJOR, GDK_PIXBUF_MINOR - 2)) +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +/** + * GDK_PIXBUF_VERSION_MIN_REQUIRED: + * + * A macro that should be defined by the user prior to including + * the gdk-pixbuf.h header. + * The definition should be one of the predefined version + * macros: %GDK_PIXBUF_VERSION_2_0, %GDK_PIXBUF_VERSION_2_2, ... + * + * This macro defines the lower bound for the GdkPixbuf API to use. + * + * If a function has been deprecated in a newer version of GdkPixbuf, + * defining this symbol hides the compiler warnings for those functions + * without disabling warnings for the other deprecated functions. + * + * + * Warning: if you define this macro, do not forget to update it! Especially + * when writing new code. Otherwise you can miss the new deprecations. + * + * + * Since: 2.36 + */ +#ifndef GDK_PIXBUF_VERSION_MIN_REQUIRED +#define GDK_PIXBUF_VERSION_MIN_REQUIRED (GDK_PIXBUF_VERSION_CUR_STABLE) +#endif + +/** + * GDK_PIXBUF_VERSION_MAX_ALLOWED: + * + * A macro that should be defined by the user prior to including + * the gdk-pixbuf.h header. + * The definition should be one of the predefined version + * macros: %GDK_PIXBUF_VERSION_2_0, %GDK_PIXBUF_VERSION_2_2, ... + * + * This macro defines the upper bound for the GdkPixbuf API to use. + * + * If a function has been introduced in a newer version of GdkPixbuf, + * it is possible to use this symbol to get compiler warnings when + * trying to use that function. + * + * Since: 2.36 + */ +#ifndef GDK_PIXBUF_VERSION_MAX_ALLOWED +#if GDK_PIXBUF_VERSION_MIN_REQUIRED > GDK_PIXBUF_VERSION_PREV_STABLE +#define GDK_PIXBUF_VERSION_MAX_ALLOWED GDK_PIXBUF_VERSION_MIN_REQUIRED +#else +#define GDK_PIXBUF_VERSION_MAX_ALLOWED GDK_PIXBUF_VERSION_CUR_STABLE +#endif +#endif + +/* sanity checks */ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_MIN_REQUIRED +#error "GDK_PIXBUF_VERSION_MAX_ALLOWED must be >= GDK_PIXBUF_VERSION_MIN_REQUIRED" +#endif +#if GDK_PIXBUF_VERSION_MIN_REQUIRED < GDK_PIXBUF_VERSION_2_0 +#error "GDK_PIXBUF_VERSION_MIN_REQUIRED must be >= GDK_PIXBUF_VERSION_2_0" +#endif + +#ifndef __GTK_DOC_IGNORE__ +#define GDK_PIXBUF_AVAILABLE_IN_ALL _GDK_PIXBUF_EXTERN +#endif + +/* Every new stable minor release should add a set of macros here */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_0 +#define GDK_PIXBUF_DEPRECATED_IN_2_0 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_0 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_0 +#define GDK_PIXBUF_AVAILABLE_IN_2_0 G_UNAVAILABLE(2, 0) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_0 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_2 +#define GDK_PIXBUF_DEPRECATED_IN_2_2 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_2_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_2 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_2_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_2 +#define GDK_PIXBUF_AVAILABLE_IN_2_2 G_UNAVAILABLE(2, 2) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_2 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_4 +#define GDK_PIXBUF_DEPRECATED_IN_2_4 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_4_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_4 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_4_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_4 +#define GDK_PIXBUF_AVAILABLE_IN_2_4 G_UNAVAILABLE(2, 4) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_4 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_6 +#define GDK_PIXBUF_DEPRECATED_IN_2_6 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_6_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_6 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_6_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_6 +#define GDK_PIXBUF_AVAILABLE_IN_2_6 G_UNAVAILABLE(2, 6) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_6 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_8 +#define GDK_PIXBUF_DEPRECATED_IN_2_8 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_8_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_8 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_8_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_8 +#define GDK_PIXBUF_AVAILABLE_IN_2_8 G_UNAVAILABLE(2, 8) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_8 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_10 +#define GDK_PIXBUF_DEPRECATED_IN_2_10 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_10_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_10 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_10_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_10 +#define GDK_PIXBUF_AVAILABLE_IN_2_10 G_UNAVAILABLE(2, 10) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_10 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_12 +#define GDK_PIXBUF_DEPRECATED_IN_2_12 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_12_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_12 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_12_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_12 +#define GDK_PIXBUF_AVAILABLE_IN_2_12 G_UNAVAILABLE(2, 12) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_12 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_14 +#define GDK_PIXBUF_DEPRECATED_IN_2_14 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_14_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_14 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_14_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_14 +#define GDK_PIXBUF_AVAILABLE_IN_2_14 G_UNAVAILABLE(2, 14) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_14 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_16 +#define GDK_PIXBUF_DEPRECATED_IN_2_16 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_16_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_16 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_16_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_16 +#define GDK_PIXBUF_AVAILABLE_IN_2_16 G_UNAVAILABLE(2, 16) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_16 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_18 +#define GDK_PIXBUF_DEPRECATED_IN_2_18 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_18_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_18 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_18_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_18 +#define GDK_PIXBUF_AVAILABLE_IN_2_18 G_UNAVAILABLE(2, 18) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_18 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_20 +#define GDK_PIXBUF_DEPRECATED_IN_2_20 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_20_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_20 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_20_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_20 +#define GDK_PIXBUF_AVAILABLE_IN_2_20 G_UNAVAILABLE(2, 20) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_20 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_22 +#define GDK_PIXBUF_DEPRECATED_IN_2_22 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_22_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_22 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_22_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_22 +#define GDK_PIXBUF_AVAILABLE_IN_2_22 G_UNAVAILABLE(2, 22) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_22 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_24 +#define GDK_PIXBUF_DEPRECATED_IN_2_24 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_24_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_24 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_24_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_24 +#define GDK_PIXBUF_AVAILABLE_IN_2_24 G_UNAVAILABLE(2, 24) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_24 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_26 +#define GDK_PIXBUF_DEPRECATED_IN_2_26 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_26_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_26 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_26_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_26 +#define GDK_PIXBUF_AVAILABLE_IN_2_26 G_UNAVAILABLE(2, 26) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_26 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_28 +#define GDK_PIXBUF_DEPRECATED_IN_2_28 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_28_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_28 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_28_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_28 +#define GDK_PIXBUF_AVAILABLE_IN_2_28 G_UNAVAILABLE(2, 28) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_28 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_30 +#define GDK_PIXBUF_DEPRECATED_IN_2_30 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_30_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_30 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_30_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_30 +#define GDK_PIXBUF_AVAILABLE_IN_2_30 G_UNAVAILABLE(2, 30) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_30 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_32 +#define GDK_PIXBUF_DEPRECATED_IN_2_32 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_32_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_32 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_32_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_32 +#define GDK_PIXBUF_AVAILABLE_IN_2_32 G_UNAVAILABLE(2, 32) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_32 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_34 +#define GDK_PIXBUF_DEPRECATED_IN_2_34 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_34_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_34 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_34_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_34 +#define GDK_PIXBUF_AVAILABLE_IN_2_34 G_UNAVAILABLE(2, 34) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_34 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_36 +#define GDK_PIXBUF_DEPRECATED_IN_2_36 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_36_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_36 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_36_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_36 +#define GDK_PIXBUF_AVAILABLE_IN_2_36 G_UNAVAILABLE(2, 36) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_36 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_38 +#define GDK_PIXBUF_DEPRECATED_IN_2_38 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_38_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_38 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_38_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_38 +#define GDK_PIXBUF_AVAILABLE_IN_2_38 G_UNAVAILABLE(2, 38) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_38 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MIN_REQUIRED >= GDK_PIXBUF_VERSION_2_40 +#define GDK_PIXBUF_DEPRECATED_IN_2_40 G_DEPRECATED _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_40_FOR(f) G_DEPRECATED_FOR(f) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_DEPRECATED_IN_2_40 _GDK_PIXBUF_EXTERN +#define GDK_PIXBUF_DEPRECATED_IN_2_40_FOR(f) _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#ifndef __GTK_DOC_IGNORE__ +#if GDK_PIXBUF_VERSION_MAX_ALLOWED < GDK_PIXBUF_VERSION_2_40 +#define GDK_PIXBUF_AVAILABLE_IN_2_40 G_UNAVAILABLE(2, 40) _GDK_PIXBUF_EXTERN +#else +#define GDK_PIXBUF_AVAILABLE_IN_2_40 _GDK_PIXBUF_EXTERN +#endif +#endif /* __GTK_DOC_IGNORE__ */ + +#endif /* GDK_PIXBUF_MACROS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-marshal.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-marshal.h new file mode 100644 index 0000000..01e8bad --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-marshal.h @@ -0,0 +1,33 @@ +/* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ +#pragma once + +#include + +G_BEGIN_DECLS + +/* VOID:VOID (../gdk-pixbuf-2.42.10/gdk-pixbuf/gdk-pixbuf-marshal.list:25) */ +#define _gdk_pixbuf_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID + +/* VOID:INT,INT (../gdk-pixbuf-2.42.10/gdk-pixbuf/gdk-pixbuf-marshal.list:26) */ +extern +void _gdk_pixbuf_marshal_VOID__INT_INT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); + +/* VOID:INT,INT,INT,INT (../gdk-pixbuf-2.42.10/gdk-pixbuf/gdk-pixbuf-marshal.list:27) */ +extern +void _gdk_pixbuf_marshal_VOID__INT_INT_INT_INT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); + +/* VOID:POINTER (../gdk-pixbuf-2.42.10/gdk-pixbuf/gdk-pixbuf-marshal.list:28) */ +#define _gdk_pixbuf_marshal_VOID__POINTER g_cclosure_marshal_VOID__POINTER + + +G_END_DECLS diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h new file mode 100644 index 0000000..487120e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h @@ -0,0 +1,70 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ +/* GdkPixbuf library - Simple frame-based animations + * + * Copyright (C) 2004 Dom Lachowicz + * + * Authors: Dom Lachowicz + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_SIMPLE_ANIM_H +#define GDK_PIXBUF_SIMPLE_ANIM_H + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GdkPixbufSimpleAnim: + * + * An opaque struct representing a simple animation. + */ +typedef struct _GdkPixbufSimpleAnim GdkPixbufSimpleAnim; +typedef struct _GdkPixbufSimpleAnimClass GdkPixbufSimpleAnimClass; + +#define GDK_TYPE_PIXBUF_SIMPLE_ANIM (gdk_pixbuf_simple_anim_get_type ()) +#define GDK_PIXBUF_SIMPLE_ANIM(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_PIXBUF_SIMPLE_ANIM, GdkPixbufSimpleAnim)) +#define GDK_IS_PIXBUF_SIMPLE_ANIM(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_PIXBUF_SIMPLE_ANIM)) + +#define GDK_PIXBUF_SIMPLE_ANIM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_PIXBUF_SIMPLE_ANIM, GdkPixbufSimpleAnimClass)) +#define GDK_IS_PIXBUF_SIMPLE_ANIM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PIXBUF_SIMPLE_ANIM)) +#define GDK_PIXBUF_SIMPLE_ANIM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_PIXBUF_SIMPLE_ANIM, GdkPixbufSimpleAnimClass)) + +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_simple_anim_get_type (void) G_GNUC_CONST; +GDK_PIXBUF_AVAILABLE_IN_ALL +GType gdk_pixbuf_simple_anim_iter_get_type (void) G_GNUC_CONST; + +GDK_PIXBUF_AVAILABLE_IN_2_8 +GdkPixbufSimpleAnim *gdk_pixbuf_simple_anim_new (gint width, + gint height, + gfloat rate); +GDK_PIXBUF_AVAILABLE_IN_2_8 +void gdk_pixbuf_simple_anim_add_frame (GdkPixbufSimpleAnim *animation, + GdkPixbuf *pixbuf); +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_simple_anim_set_loop (GdkPixbufSimpleAnim *animation, + gboolean loop); +GDK_PIXBUF_AVAILABLE_IN_ALL +gboolean gdk_pixbuf_simple_anim_get_loop (GdkPixbufSimpleAnim *animation); + +G_END_DECLS + + +#endif /* GDK_PIXBUF_SIMPLE_ANIM_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h new file mode 100644 index 0000000..2ba28c4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h @@ -0,0 +1,168 @@ +/* GdkPixbuf library - transformations + * + * Copyright (C) 2003 The Free Software Foundation + * + * Authors: Mark Crichton + * Miguel de Icaza + * Federico Mena-Quintero + * Havoc Pennington + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_TRANSFORM_H +#define GDK_PIXBUF_TRANSFORM_H + +#if defined(GDK_PIXBUF_DISABLE_SINGLE_INCLUDES) && !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + + +G_BEGIN_DECLS + +/* Scaling */ + +/** + * GdkInterpType: + * @GDK_INTERP_NEAREST: Nearest neighbor sampling; this is the fastest + * and lowest quality mode. Quality is normally unacceptable when scaling + * down, but may be OK when scaling up. + * @GDK_INTERP_TILES: This is an accurate simulation of the PostScript + * image operator without any interpolation enabled. Each pixel is + * rendered as a tiny parallelogram of solid color, the edges of which + * are implemented with antialiasing. It resembles nearest neighbor for + * enlargement, and bilinear for reduction. + * @GDK_INTERP_BILINEAR: Best quality/speed balance; use this mode by + * default. Bilinear interpolation. For enlargement, it is + * equivalent to point-sampling the ideal bilinear-interpolated image. + * For reduction, it is equivalent to laying down small tiles and + * integrating over the coverage area. + * @GDK_INTERP_HYPER: This is the slowest and highest quality + * reconstruction function. It is derived from the hyperbolic filters in + * Wolberg's "Digital Image Warping", and is formally defined as the + * hyperbolic-filter sampling the ideal hyperbolic-filter interpolated + * image (the filter is designed to be idempotent for 1:1 pixel mapping). + * **Deprecated**: this interpolation filter is deprecated, as in reality + * it has a lower quality than the @GDK_INTERP_BILINEAR filter + * (Since: 2.38) + * + * Interpolation modes for scaling functions. + * + * The `GDK_INTERP_NEAREST` mode is the fastest scaling method, but has + * horrible quality when scaling down; `GDK_INTERP_BILINEAR` is the best + * choice if you aren't sure what to choose, it has a good speed/quality + * balance. + * + * **Note**: Cubic filtering is missing from the list; hyperbolic + * interpolation is just as fast and results in higher quality. + */ +typedef enum { + GDK_INTERP_NEAREST, + GDK_INTERP_TILES, + GDK_INTERP_BILINEAR, + GDK_INTERP_HYPER +} GdkInterpType; + +/** + * GdkPixbufRotation: + * @GDK_PIXBUF_ROTATE_NONE: No rotation. + * @GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE: Rotate by 90 degrees. + * @GDK_PIXBUF_ROTATE_UPSIDEDOWN: Rotate by 180 degrees. + * @GDK_PIXBUF_ROTATE_CLOCKWISE: Rotate by 270 degrees. + * + * The possible rotations which can be passed to gdk_pixbuf_rotate_simple(). + * + * To make them easier to use, their numerical values are the actual degrees. + */ +typedef enum { + GDK_PIXBUF_ROTATE_NONE = 0, + GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE = 90, + GDK_PIXBUF_ROTATE_UPSIDEDOWN = 180, + GDK_PIXBUF_ROTATE_CLOCKWISE = 270 +} GdkPixbufRotation; + +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_scale (const GdkPixbuf *src, + GdkPixbuf *dest, + int dest_x, + int dest_y, + int dest_width, + int dest_height, + double offset_x, + double offset_y, + double scale_x, + double scale_y, + GdkInterpType interp_type); +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_composite (const GdkPixbuf *src, + GdkPixbuf *dest, + int dest_x, + int dest_y, + int dest_width, + int dest_height, + double offset_x, + double offset_y, + double scale_x, + double scale_y, + GdkInterpType interp_type, + int overall_alpha); +GDK_PIXBUF_AVAILABLE_IN_ALL +void gdk_pixbuf_composite_color (const GdkPixbuf *src, + GdkPixbuf *dest, + int dest_x, + int dest_y, + int dest_width, + int dest_height, + double offset_x, + double offset_y, + double scale_x, + double scale_y, + GdkInterpType interp_type, + int overall_alpha, + int check_x, + int check_y, + int check_size, + guint32 color1, + guint32 color2); + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_scale_simple (const GdkPixbuf *src, + int dest_width, + int dest_height, + GdkInterpType interp_type); + +GDK_PIXBUF_AVAILABLE_IN_ALL +GdkPixbuf *gdk_pixbuf_composite_color_simple (const GdkPixbuf *src, + int dest_width, + int dest_height, + GdkInterpType interp_type, + int overall_alpha, + int check_size, + guint32 color1, + guint32 color2); + +GDK_PIXBUF_AVAILABLE_IN_2_6 +GdkPixbuf *gdk_pixbuf_rotate_simple (const GdkPixbuf *src, + GdkPixbufRotation angle); +GDK_PIXBUF_AVAILABLE_IN_2_6 +GdkPixbuf *gdk_pixbuf_flip (const GdkPixbuf *src, + gboolean horizontal); + +G_END_DECLS + + +#endif /* GDK_PIXBUF_TRANSFORM_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h new file mode 100644 index 0000000..0770b2f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h @@ -0,0 +1,46 @@ +/* GdkPixbuf library - Main header file + * + * Copyright (C) 1999 The Free Software Foundation + * + * Authors: Mark Crichton + * Miguel de Icaza + * Federico Mena-Quintero + * Havoc Pennington + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef GDK_PIXBUF_H +#define GDK_PIXBUF_H + +#define GDK_PIXBUF_H_INSIDE + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#undef GDK_PIXBUF_H_INSIDE + +#endif /* GDK_PIXBUF_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixdata.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixdata.h new file mode 100644 index 0000000..4c25698 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixdata.h @@ -0,0 +1,165 @@ +/* GdkPixbuf library - GdkPixdata - functions for inlined pixbuf handling + * Copyright (C) 1999, 2001 Tim Janik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#ifndef __GDK_PIXDATA_H__ +#define __GDK_PIXDATA_H__ + +#ifndef GDK_PIXBUF_DISABLE_DEPRECATED +#include + +G_BEGIN_DECLS + +/** + * GDK_PIXBUF_MAGIC_NUMBER: + * + * Magic number for #GdkPixdata structures. + **/ +#define GDK_PIXBUF_MAGIC_NUMBER (0x47646b50) /* 'GdkP' */ + +/** + * GdkPixdataType: + * @GDK_PIXDATA_COLOR_TYPE_RGB: each pixel has red, green and blue samples. + * @GDK_PIXDATA_COLOR_TYPE_RGBA: each pixel has red, green and blue samples + * and an alpha value. + * @GDK_PIXDATA_COLOR_TYPE_MASK: mask for the colortype flags of the enum. + * @GDK_PIXDATA_SAMPLE_WIDTH_8: each sample has 8 bits. + * @GDK_PIXDATA_SAMPLE_WIDTH_MASK: mask for the sample width flags of the enum. + * @GDK_PIXDATA_ENCODING_RAW: the pixel data is in raw form. + * @GDK_PIXDATA_ENCODING_RLE: the pixel data is run-length encoded. Runs may + * be up to 127 bytes long; their length is stored in a single byte + * preceding the pixel data for the run. If a run is constant, its length + * byte has the high bit set and the pixel data consists of a single pixel + * which must be repeated. + * @GDK_PIXDATA_ENCODING_MASK: mask for the encoding flags of the enum. + * + * An enumeration containing three sets of flags for a #GdkPixdata struct: + * one for the used colorspace, one for the width of the samples and one + * for the encoding of the pixel data. + * + * Deprecated: 2.32 + **/ +typedef enum +{ + /* colorspace + alpha */ + GDK_PIXDATA_COLOR_TYPE_RGB = 0x01, + GDK_PIXDATA_COLOR_TYPE_RGBA = 0x02, + GDK_PIXDATA_COLOR_TYPE_MASK = 0xff, + /* width, support 8bits only currently */ + GDK_PIXDATA_SAMPLE_WIDTH_8 = 0x01 << 16, + GDK_PIXDATA_SAMPLE_WIDTH_MASK = 0x0f << 16, + /* encoding */ + GDK_PIXDATA_ENCODING_RAW = 0x01 << 24, + GDK_PIXDATA_ENCODING_RLE = 0x02 << 24, + GDK_PIXDATA_ENCODING_MASK = 0x0f << 24 +} GdkPixdataType; + +typedef struct _GdkPixdata GdkPixdata; +struct _GdkPixdata +{ + guint32 magic; /* GDK_PIXBUF_MAGIC_NUMBER */ + gint32 length; /* <1 to disable length checks, otherwise: + * GDK_PIXDATA_HEADER_LENGTH + pixel_data length + */ + guint32 pixdata_type; /* GdkPixdataType */ + guint32 rowstride; + guint32 width; + guint32 height; + guint8 *pixel_data; +}; + +/** + * GDK_PIXDATA_HEADER_LENGTH: + * + * The length of a #GdkPixdata structure without the @pixel_data pointer. + * + * Deprecated: 2.32 + **/ +#define GDK_PIXDATA_HEADER_LENGTH (4 + 4 + 4 + 4 + 4 + 4) + +/* the returned stream is plain htonl of GdkPixdata members + pixel_data */ +GDK_PIXBUF_DEPRECATED_IN_2_32 +guint8* gdk_pixdata_serialize (const GdkPixdata *pixdata, + guint *stream_length_p); +GDK_PIXBUF_DEPRECATED_IN_2_32 +gboolean gdk_pixdata_deserialize (GdkPixdata *pixdata, + guint stream_length, + const guint8 *stream, + GError **error); +GDK_PIXBUF_DEPRECATED_IN_2_32 +gpointer gdk_pixdata_from_pixbuf (GdkPixdata *pixdata, + const GdkPixbuf *pixbuf, + gboolean use_rle); +GDK_PIXBUF_DEPRECATED_IN_2_32 +GdkPixbuf* gdk_pixbuf_from_pixdata (const GdkPixdata *pixdata, + gboolean copy_pixels, + GError **error); +/** + * GdkPixdataDumpType: + * @GDK_PIXDATA_DUMP_PIXDATA_STREAM: Generate pixbuf data stream (a single + * string containing a serialized #GdkPixdata structure in network byte + * order). + * @GDK_PIXDATA_DUMP_PIXDATA_STRUCT: Generate #GdkPixdata structure (needs + * the #GdkPixdata structure definition from gdk-pixdata.h). + * @GDK_PIXDATA_DUMP_MACROS: Generate *_ROWSTRIDE, + * *_WIDTH, *_HEIGHT, + * *_BYTES_PER_PIXEL and + * *_RLE_PIXEL_DATA or *_PIXEL_DATA + * macro definitions for the image. + * @GDK_PIXDATA_DUMP_GTYPES: Generate GLib data types instead of + * standard C data types. + * @GDK_PIXDATA_DUMP_CTYPES: Generate standard C data types instead of + * GLib data types. + * @GDK_PIXDATA_DUMP_STATIC: Generate static symbols. + * @GDK_PIXDATA_DUMP_CONST: Generate const symbols. + * @GDK_PIXDATA_DUMP_RLE_DECODER: Provide a *_RUN_LENGTH_DECODE(image_buf, rle_data, size, bpp) + * macro definition to decode run-length encoded image data. + * + * An enumeration which is used by gdk_pixdata_to_csource() to + * determine the form of C source to be generated. The three values + * @GDK_PIXDATA_DUMP_PIXDATA_STREAM, @GDK_PIXDATA_DUMP_PIXDATA_STRUCT + * and @GDK_PIXDATA_DUMP_MACROS are mutually exclusive, as are + * @GDK_PIXBUF_DUMP_GTYPES and @GDK_PIXBUF_DUMP_CTYPES. The remaining + * elements are optional flags that can be freely added. + * + * Deprecated: 2.32 + **/ +typedef enum +{ + /* type of source to save */ + GDK_PIXDATA_DUMP_PIXDATA_STREAM = 0, + GDK_PIXDATA_DUMP_PIXDATA_STRUCT = 1, + GDK_PIXDATA_DUMP_MACROS = 2, + /* type of variables to use */ + GDK_PIXDATA_DUMP_GTYPES = 0, + GDK_PIXDATA_DUMP_CTYPES = 1 << 8, + GDK_PIXDATA_DUMP_STATIC = 1 << 9, + GDK_PIXDATA_DUMP_CONST = 1 << 10, + /* save RLE decoder macro? */ + GDK_PIXDATA_DUMP_RLE_DECODER = 1 << 16 +} GdkPixdataDumpType; + + +GDK_PIXBUF_DEPRECATED_IN_2_32 +GString* gdk_pixdata_to_csource (GdkPixdata *pixdata, + const gchar *name, + GdkPixdataDumpType dump_type); + + +G_END_DECLS + +#endif /* GDK_PIXBUF_DISABLE_DEPRECATED */ + +#endif /* __GDK_PIXDATA_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gio-win32-2.0/gio/gwin32inputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gio-win32-2.0/gio/gwin32inputstream.h new file mode 100644 index 0000000..2f4f4f8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gio-win32-2.0/gio/gwin32inputstream.h @@ -0,0 +1,86 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + * Author: Tor Lillqvist + */ + +#ifndef __G_WIN32_INPUT_STREAM_H__ +#define __G_WIN32_INPUT_STREAM_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_WIN32_INPUT_STREAM (g_win32_input_stream_get_type ()) +#define G_WIN32_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_WIN32_INPUT_STREAM, GWin32InputStream)) +#define G_WIN32_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_WIN32_INPUT_STREAM, GWin32InputStreamClass)) +#define G_IS_WIN32_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_WIN32_INPUT_STREAM)) +#define G_IS_WIN32_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_WIN32_INPUT_STREAM)) +#define G_WIN32_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_WIN32_INPUT_STREAM, GWin32InputStreamClass)) + +/** + * GWin32InputStream: + * + * Implements #GInputStream for reading from selectable Windows file handles + **/ +typedef struct _GWin32InputStream GWin32InputStream; +typedef struct _GWin32InputStreamClass GWin32InputStreamClass; +typedef struct _GWin32InputStreamPrivate GWin32InputStreamPrivate; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GWin32InputStream, g_object_unref) + +struct _GWin32InputStream +{ + GInputStream parent_instance; + + /*< private >*/ + GWin32InputStreamPrivate *priv; +}; + +struct _GWin32InputStreamClass +{ + GInputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_win32_input_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GInputStream * g_win32_input_stream_new (void *handle, + gboolean close_handle); +GLIB_AVAILABLE_IN_ALL +void g_win32_input_stream_set_close_handle (GWin32InputStream *stream, + gboolean close_handle); +GLIB_AVAILABLE_IN_ALL +gboolean g_win32_input_stream_get_close_handle (GWin32InputStream *stream); +GLIB_AVAILABLE_IN_ALL +void *g_win32_input_stream_get_handle (GWin32InputStream *stream); + +G_END_DECLS + +#endif /* __G_WIN32_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gio-win32-2.0/gio/gwin32outputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gio-win32-2.0/gio/gwin32outputstream.h new file mode 100644 index 0000000..6b21849 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/gio-win32-2.0/gio/gwin32outputstream.h @@ -0,0 +1,85 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + * Author: Tor Lillqvist + */ + +#ifndef __G_WIN32_OUTPUT_STREAM_H__ +#define __G_WIN32_OUTPUT_STREAM_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_WIN32_OUTPUT_STREAM (g_win32_output_stream_get_type ()) +#define G_WIN32_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_WIN32_OUTPUT_STREAM, GWin32OutputStream)) +#define G_WIN32_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_WIN32_OUTPUT_STREAM, GWin32OutputStreamClass)) +#define G_IS_WIN32_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_WIN32_OUTPUT_STREAM)) +#define G_IS_WIN32_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_WIN32_OUTPUT_STREAM)) +#define G_WIN32_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_WIN32_OUTPUT_STREAM, GWin32OutputStreamClass)) + +/** + * GWin32OutputStream: + * + * Implements #GOutputStream for outputting to Windows file handles + **/ +typedef struct _GWin32OutputStream GWin32OutputStream; +typedef struct _GWin32OutputStreamClass GWin32OutputStreamClass; +typedef struct _GWin32OutputStreamPrivate GWin32OutputStreamPrivate; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GWin32OutputStream, g_object_unref) + +struct _GWin32OutputStream +{ + GOutputStream parent_instance; + + /*< private >*/ + GWin32OutputStreamPrivate *priv; +}; + +struct _GWin32OutputStreamClass +{ + GOutputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_win32_output_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GOutputStream * g_win32_output_stream_new (void *handle, + gboolean close_handle); +GLIB_AVAILABLE_IN_ALL +void g_win32_output_stream_set_close_handle (GWin32OutputStream *stream, + gboolean close_handle); +GLIB_AVAILABLE_IN_ALL +gboolean g_win32_output_stream_get_close_handle (GWin32OutputStream *stream); +GLIB_AVAILABLE_IN_ALL +void *g_win32_output_stream_get_handle (GWin32OutputStream *stream); +G_END_DECLS + +#endif /* __G_WIN32_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gaction.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gaction.h new file mode 100644 index 0000000..988ddc3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gaction.h @@ -0,0 +1,100 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_ACTION_H__ +#define __G_ACTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_ACTION (g_action_get_type ()) +#define G_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_ACTION, GAction)) +#define G_IS_ACTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_ACTION)) +#define G_ACTION_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ + G_TYPE_ACTION, GActionInterface)) + +typedef struct _GActionInterface GActionInterface; + +struct _GActionInterface +{ + GTypeInterface g_iface; + + /* virtual functions */ + const gchar * (* get_name) (GAction *action); + const GVariantType * (* get_parameter_type) (GAction *action); + const GVariantType * (* get_state_type) (GAction *action); + GVariant * (* get_state_hint) (GAction *action); + + gboolean (* get_enabled) (GAction *action); + GVariant * (* get_state) (GAction *action); + + void (* change_state) (GAction *action, + GVariant *value); + void (* activate) (GAction *action, + GVariant *parameter); +}; + +GLIB_AVAILABLE_IN_2_30 +GType g_action_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +const gchar * g_action_get_name (GAction *action); +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_action_get_parameter_type (GAction *action); +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_action_get_state_type (GAction *action); +GLIB_AVAILABLE_IN_ALL +GVariant * g_action_get_state_hint (GAction *action); + +GLIB_AVAILABLE_IN_ALL +gboolean g_action_get_enabled (GAction *action); +GLIB_AVAILABLE_IN_ALL +GVariant * g_action_get_state (GAction *action); + +GLIB_AVAILABLE_IN_ALL +void g_action_change_state (GAction *action, + GVariant *value); +GLIB_AVAILABLE_IN_ALL +void g_action_activate (GAction *action, + GVariant *parameter); + +GLIB_AVAILABLE_IN_2_28 +gboolean g_action_name_is_valid (const gchar *action_name); + +GLIB_AVAILABLE_IN_2_38 +gboolean g_action_parse_detailed_name (const gchar *detailed_name, + gchar **action_name, + GVariant **target_value, + GError **error); + +GLIB_AVAILABLE_IN_2_38 +gchar * g_action_print_detailed_name (const gchar *action_name, + GVariant *target_value); + +G_END_DECLS + +#endif /* __G_ACTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactiongroup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactiongroup.h new file mode 100644 index 0000000..e6b0c3f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactiongroup.h @@ -0,0 +1,163 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_ACTION_GROUP_H__ +#define __G_ACTION_GROUP_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +#define G_TYPE_ACTION_GROUP (g_action_group_get_type ()) +#define G_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_ACTION_GROUP, GActionGroup)) +#define G_IS_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_ACTION_GROUP)) +#define G_ACTION_GROUP_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ + G_TYPE_ACTION_GROUP, GActionGroupInterface)) + +typedef struct _GActionGroupInterface GActionGroupInterface; + +struct _GActionGroupInterface +{ + GTypeInterface g_iface; + + /* virtual functions */ + gboolean (* has_action) (GActionGroup *action_group, + const gchar *action_name); + + gchar ** (* list_actions) (GActionGroup *action_group); + + gboolean (* get_action_enabled) (GActionGroup *action_group, + const gchar *action_name); + + const GVariantType * (* get_action_parameter_type) (GActionGroup *action_group, + const gchar *action_name); + + const GVariantType * (* get_action_state_type) (GActionGroup *action_group, + const gchar *action_name); + + GVariant * (* get_action_state_hint) (GActionGroup *action_group, + const gchar *action_name); + + GVariant * (* get_action_state) (GActionGroup *action_group, + const gchar *action_name); + + void (* change_action_state) (GActionGroup *action_group, + const gchar *action_name, + GVariant *value); + + void (* activate_action) (GActionGroup *action_group, + const gchar *action_name, + GVariant *parameter); + + /* signals */ + void (* action_added) (GActionGroup *action_group, + const gchar *action_name); + void (* action_removed) (GActionGroup *action_group, + const gchar *action_name); + void (* action_enabled_changed) (GActionGroup *action_group, + const gchar *action_name, + gboolean enabled); + void (* action_state_changed) (GActionGroup *action_group, + const gchar *action_name, + GVariant *state); + + /* more virtual functions */ + gboolean (* query_action) (GActionGroup *action_group, + const gchar *action_name, + gboolean *enabled, + const GVariantType **parameter_type, + const GVariantType **state_type, + GVariant **state_hint, + GVariant **state); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_action_group_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_action_group_has_action (GActionGroup *action_group, + const gchar *action_name); +GLIB_AVAILABLE_IN_ALL +gchar ** g_action_group_list_actions (GActionGroup *action_group); + +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_action_group_get_action_parameter_type (GActionGroup *action_group, + const gchar *action_name); +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_action_group_get_action_state_type (GActionGroup *action_group, + const gchar *action_name); +GLIB_AVAILABLE_IN_ALL +GVariant * g_action_group_get_action_state_hint (GActionGroup *action_group, + const gchar *action_name); + +GLIB_AVAILABLE_IN_ALL +gboolean g_action_group_get_action_enabled (GActionGroup *action_group, + const gchar *action_name); + +GLIB_AVAILABLE_IN_ALL +GVariant * g_action_group_get_action_state (GActionGroup *action_group, + const gchar *action_name); +GLIB_AVAILABLE_IN_ALL +void g_action_group_change_action_state (GActionGroup *action_group, + const gchar *action_name, + GVariant *value); + +GLIB_AVAILABLE_IN_ALL +void g_action_group_activate_action (GActionGroup *action_group, + const gchar *action_name, + GVariant *parameter); + +/* signals */ +GLIB_AVAILABLE_IN_ALL +void g_action_group_action_added (GActionGroup *action_group, + const gchar *action_name); +GLIB_AVAILABLE_IN_ALL +void g_action_group_action_removed (GActionGroup *action_group, + const gchar *action_name); +GLIB_AVAILABLE_IN_ALL +void g_action_group_action_enabled_changed (GActionGroup *action_group, + const gchar *action_name, + gboolean enabled); + +GLIB_AVAILABLE_IN_ALL +void g_action_group_action_state_changed (GActionGroup *action_group, + const gchar *action_name, + GVariant *state); + +GLIB_AVAILABLE_IN_2_32 +gboolean g_action_group_query_action (GActionGroup *action_group, + const gchar *action_name, + gboolean *enabled, + const GVariantType **parameter_type, + const GVariantType **state_type, + GVariant **state_hint, + GVariant **state); + +G_END_DECLS + +#endif /* __G_ACTION_GROUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactiongroupexporter.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactiongroupexporter.h new file mode 100644 index 0000000..365e5a1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactiongroupexporter.h @@ -0,0 +1,47 @@ +/* + * Copyright © 2010 Codethink Limited + * Copyright © 2011 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + + +#ifndef __G_ACTION_GROUP_EXPORTER_H__ +#define __G_ACTION_GROUP_EXPORTER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_32 +guint g_dbus_connection_export_action_group (GDBusConnection *connection, + const gchar *object_path, + GActionGroup *action_group, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +void g_dbus_connection_unexport_action_group (GDBusConnection *connection, + guint export_id); + +G_END_DECLS + +#endif /* __G_ACTION_GROUP_EXPORTER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactionmap.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactionmap.h new file mode 100644 index 0000000..6a4e826 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gactionmap.h @@ -0,0 +1,97 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_ACTION_MAP_H__ +#define __G_ACTION_MAP_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +#define G_TYPE_ACTION_MAP (g_action_map_get_type ()) +#define G_ACTION_MAP(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_ACTION_MAP, GActionMap)) +#define G_IS_ACTION_MAP(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_ACTION_MAP)) +#define G_ACTION_MAP_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ + G_TYPE_ACTION_MAP, GActionMapInterface)) + +typedef struct _GActionMapInterface GActionMapInterface; +typedef struct _GActionEntry GActionEntry; + +struct _GActionMapInterface +{ + GTypeInterface g_iface; + + GAction * (* lookup_action) (GActionMap *action_map, + const gchar *action_name); + void (* add_action) (GActionMap *action_map, + GAction *action); + void (* remove_action) (GActionMap *action_map, + const gchar *action_name); +}; + +struct _GActionEntry +{ + const gchar *name; + + void (* activate) (GSimpleAction *action, + GVariant *parameter, + gpointer user_data); + + const gchar *parameter_type; + + const gchar *state; + + void (* change_state) (GSimpleAction *action, + GVariant *value, + gpointer user_data); + + /*< private >*/ + gsize padding[3]; +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_action_map_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +GAction * g_action_map_lookup_action (GActionMap *action_map, + const gchar *action_name); +GLIB_AVAILABLE_IN_2_32 +void g_action_map_add_action (GActionMap *action_map, + GAction *action); +GLIB_AVAILABLE_IN_2_32 +void g_action_map_remove_action (GActionMap *action_map, + const gchar *action_name); +GLIB_AVAILABLE_IN_2_32 +void g_action_map_add_action_entries (GActionMap *action_map, + const GActionEntry *entries, + gint n_entries, + gpointer user_data); + +G_END_DECLS + +#endif /* __G_ACTION_MAP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gappinfo.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gappinfo.h new file mode 100644 index 0000000..84162f0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gappinfo.h @@ -0,0 +1,369 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_APP_INFO_H__ +#define __G_APP_INFO_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_APP_INFO (g_app_info_get_type ()) +#define G_APP_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_APP_INFO, GAppInfo)) +#define G_IS_APP_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_APP_INFO)) +#define G_APP_INFO_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_APP_INFO, GAppInfoIface)) + +#define G_TYPE_APP_LAUNCH_CONTEXT (g_app_launch_context_get_type ()) +#define G_APP_LAUNCH_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_APP_LAUNCH_CONTEXT, GAppLaunchContext)) +#define G_APP_LAUNCH_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_APP_LAUNCH_CONTEXT, GAppLaunchContextClass)) +#define G_IS_APP_LAUNCH_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_APP_LAUNCH_CONTEXT)) +#define G_IS_APP_LAUNCH_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_APP_LAUNCH_CONTEXT)) +#define G_APP_LAUNCH_CONTEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_APP_LAUNCH_CONTEXT, GAppLaunchContextClass)) + +typedef struct _GAppLaunchContextClass GAppLaunchContextClass; +typedef struct _GAppLaunchContextPrivate GAppLaunchContextPrivate; + +/** + * GAppInfo: + * + * Information about an installed application and methods to launch + * it (with file arguments). + */ + +/** + * GAppInfoIface: + * @g_iface: The parent interface. + * @dup: Copies a #GAppInfo. + * @equal: Checks two #GAppInfos for equality. + * @get_id: Gets a string identifier for a #GAppInfo. + * @get_name: Gets the name of the application for a #GAppInfo. + * @get_description: Gets a short description for the application described by the #GAppInfo. + * @get_executable: Gets the executable name for the #GAppInfo. + * @get_icon: Gets the #GIcon for the #GAppInfo. + * @launch: Launches an application specified by the #GAppInfo. + * @supports_uris: Indicates whether the application specified supports launching URIs. + * @supports_files: Indicates whether the application specified accepts filename arguments. + * @launch_uris: Launches an application with a list of URIs. + * @should_show: Returns whether an application should be shown (e.g. when getting a list of installed applications). + * [FreeDesktop.Org Startup Notification Specification](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt). + * @set_as_default_for_type: Sets an application as default for a given content type. + * @set_as_default_for_extension: Sets an application as default for a given file extension. + * @add_supports_type: Adds to the #GAppInfo information about supported file types. + * @can_remove_supports_type: Checks for support for removing supported file types from a #GAppInfo. + * @remove_supports_type: Removes a supported application type from a #GAppInfo. + * @can_delete: Checks if a #GAppInfo can be deleted. Since 2.20 + * @do_delete: Deletes a #GAppInfo. Since 2.20 + * @get_commandline: Gets the commandline for the #GAppInfo. Since 2.20 + * @get_display_name: Gets the display name for the #GAppInfo. Since 2.24 + * @set_as_last_used_for_type: Sets the application as the last used. See g_app_info_set_as_last_used_for_type(). + * @get_supported_types: Retrieves the list of content types that @app_info claims to support. + * @launch_uris_async: Asynchronously launches an application with a list of URIs. (Since: 2.60) + * @launch_uris_finish: Finishes an operation started with @launch_uris_async. (Since: 2.60) + + * Application Information interface, for operating system portability. + */ +typedef struct _GAppInfoIface GAppInfoIface; + +struct _GAppInfoIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + GAppInfo * (* dup) (GAppInfo *appinfo); + gboolean (* equal) (GAppInfo *appinfo1, + GAppInfo *appinfo2); + const char * (* get_id) (GAppInfo *appinfo); + const char * (* get_name) (GAppInfo *appinfo); + const char * (* get_description) (GAppInfo *appinfo); + const char * (* get_executable) (GAppInfo *appinfo); + GIcon * (* get_icon) (GAppInfo *appinfo); + gboolean (* launch) (GAppInfo *appinfo, + GList *files, + GAppLaunchContext *context, + GError **error); + gboolean (* supports_uris) (GAppInfo *appinfo); + gboolean (* supports_files) (GAppInfo *appinfo); + gboolean (* launch_uris) (GAppInfo *appinfo, + GList *uris, + GAppLaunchContext *context, + GError **error); + gboolean (* should_show) (GAppInfo *appinfo); + + /* For changing associations */ + gboolean (* set_as_default_for_type) (GAppInfo *appinfo, + const char *content_type, + GError **error); + gboolean (* set_as_default_for_extension) (GAppInfo *appinfo, + const char *extension, + GError **error); + gboolean (* add_supports_type) (GAppInfo *appinfo, + const char *content_type, + GError **error); + gboolean (* can_remove_supports_type) (GAppInfo *appinfo); + gboolean (* remove_supports_type) (GAppInfo *appinfo, + const char *content_type, + GError **error); + gboolean (* can_delete) (GAppInfo *appinfo); + gboolean (* do_delete) (GAppInfo *appinfo); + const char * (* get_commandline) (GAppInfo *appinfo); + const char * (* get_display_name) (GAppInfo *appinfo); + gboolean (* set_as_last_used_for_type) (GAppInfo *appinfo, + const char *content_type, + GError **error); + const char ** (* get_supported_types) (GAppInfo *appinfo); + void (* launch_uris_async) (GAppInfo *appinfo, + GList *uris, + GAppLaunchContext *context, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* launch_uris_finish) (GAppInfo *appinfo, + GAsyncResult *result, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_app_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GAppInfo * g_app_info_create_from_commandline (const char *commandline, + const char *application_name, + GAppInfoCreateFlags flags, + GError **error); +GLIB_AVAILABLE_IN_ALL +GAppInfo * g_app_info_dup (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_equal (GAppInfo *appinfo1, + GAppInfo *appinfo2); +GLIB_AVAILABLE_IN_ALL +const char *g_app_info_get_id (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +const char *g_app_info_get_name (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +const char *g_app_info_get_display_name (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +const char *g_app_info_get_description (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +const char *g_app_info_get_executable (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +const char *g_app_info_get_commandline (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +GIcon * g_app_info_get_icon (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_launch (GAppInfo *appinfo, + GList *files, + GAppLaunchContext *context, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_supports_uris (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_supports_files (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_launch_uris (GAppInfo *appinfo, + GList *uris, + GAppLaunchContext *context, + GError **error); +GLIB_AVAILABLE_IN_2_60 +void g_app_info_launch_uris_async (GAppInfo *appinfo, + GList *uris, + GAppLaunchContext *context, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_60 +gboolean g_app_info_launch_uris_finish (GAppInfo *appinfo, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_should_show (GAppInfo *appinfo); + +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_set_as_default_for_type (GAppInfo *appinfo, + const char *content_type, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_set_as_default_for_extension (GAppInfo *appinfo, + const char *extension, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_add_supports_type (GAppInfo *appinfo, + const char *content_type, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_can_remove_supports_type (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_remove_supports_type (GAppInfo *appinfo, + const char *content_type, + GError **error); +GLIB_AVAILABLE_IN_2_34 +const char **g_app_info_get_supported_types (GAppInfo *appinfo); + +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_can_delete (GAppInfo *appinfo); +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_delete (GAppInfo *appinfo); + +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_set_as_last_used_for_type (GAppInfo *appinfo, + const char *content_type, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GList * g_app_info_get_all (void); +GLIB_AVAILABLE_IN_ALL +GList * g_app_info_get_all_for_type (const char *content_type); +GLIB_AVAILABLE_IN_ALL +GList * g_app_info_get_recommended_for_type (const gchar *content_type); +GLIB_AVAILABLE_IN_ALL +GList * g_app_info_get_fallback_for_type (const gchar *content_type); + +GLIB_AVAILABLE_IN_ALL +void g_app_info_reset_type_associations (const char *content_type); +GLIB_AVAILABLE_IN_ALL +GAppInfo *g_app_info_get_default_for_type (const char *content_type, + gboolean must_support_uris); +GLIB_AVAILABLE_IN_2_74 +void g_app_info_get_default_for_type_async (const char *content_type, + gboolean must_support_uris, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_74 +GAppInfo *g_app_info_get_default_for_type_finish (GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +GAppInfo *g_app_info_get_default_for_uri_scheme (const char *uri_scheme); + +GLIB_AVAILABLE_IN_2_74 +void g_app_info_get_default_for_uri_scheme_async (const char *uri_scheme, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_74 +GAppInfo *g_app_info_get_default_for_uri_scheme_finish (GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_app_info_launch_default_for_uri (const char *uri, + GAppLaunchContext *context, + GError **error); + +GLIB_AVAILABLE_IN_2_50 +void g_app_info_launch_default_for_uri_async (const char *uri, + GAppLaunchContext *context, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_50 +gboolean g_app_info_launch_default_for_uri_finish (GAsyncResult *result, + GError **error); + + +/** + * GAppLaunchContext: + * + * Integrating the launch with the launching application. This is used to + * handle for instance startup notification and launching the new application + * on the same screen as the launching window. + */ +struct _GAppLaunchContext +{ + GObject parent_instance; + + /*< private >*/ + GAppLaunchContextPrivate *priv; +}; + +struct _GAppLaunchContextClass +{ + GObjectClass parent_class; + + char * (* get_display) (GAppLaunchContext *context, + GAppInfo *info, + GList *files); + char * (* get_startup_notify_id) (GAppLaunchContext *context, + GAppInfo *info, + GList *files); + void (* launch_failed) (GAppLaunchContext *context, + const char *startup_notify_id); + void (* launched) (GAppLaunchContext *context, + GAppInfo *info, + GVariant *platform_data); + void (* launch_started) (GAppLaunchContext *context, + GAppInfo *info, + GVariant *platform_data); + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_app_launch_context_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GAppLaunchContext *g_app_launch_context_new (void); + +GLIB_AVAILABLE_IN_2_32 +void g_app_launch_context_setenv (GAppLaunchContext *context, + const char *variable, + const char *value); +GLIB_AVAILABLE_IN_2_32 +void g_app_launch_context_unsetenv (GAppLaunchContext *context, + const char *variable); +GLIB_AVAILABLE_IN_2_32 +char ** g_app_launch_context_get_environment (GAppLaunchContext *context); + +GLIB_AVAILABLE_IN_ALL +char * g_app_launch_context_get_display (GAppLaunchContext *context, + GAppInfo *info, + GList *files); +GLIB_AVAILABLE_IN_ALL +char * g_app_launch_context_get_startup_notify_id (GAppLaunchContext *context, + GAppInfo *info, + GList *files); +GLIB_AVAILABLE_IN_ALL +void g_app_launch_context_launch_failed (GAppLaunchContext *context, + const char * startup_notify_id); + +#define G_TYPE_APP_INFO_MONITOR (g_app_info_monitor_get_type ()) +#define G_APP_INFO_MONITOR(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_APP_INFO_MONITOR, GAppInfoMonitor)) +#define G_IS_APP_INFO_MONITOR(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_APP_INFO_MONITOR)) + +typedef struct _GAppInfoMonitor GAppInfoMonitor; + +GLIB_AVAILABLE_IN_2_40 +GType g_app_info_monitor_get_type (void); + +GLIB_AVAILABLE_IN_2_40 +GAppInfoMonitor * g_app_info_monitor_get (void); + +G_END_DECLS + +#endif /* __G_APP_INFO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gapplication.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gapplication.h new file mode 100644 index 0000000..3454053 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gapplication.h @@ -0,0 +1,254 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_APPLICATION_H__ +#define __G_APPLICATION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_APPLICATION (g_application_get_type ()) +#define G_APPLICATION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_APPLICATION, GApplication)) +#define G_APPLICATION_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_APPLICATION, GApplicationClass)) +#define G_IS_APPLICATION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_APPLICATION)) +#define G_IS_APPLICATION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_APPLICATION)) +#define G_APPLICATION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_APPLICATION, GApplicationClass)) + +typedef struct _GApplicationPrivate GApplicationPrivate; +typedef struct _GApplicationClass GApplicationClass; + +struct _GApplication +{ + /*< private >*/ + GObject parent_instance; + + GApplicationPrivate *priv; +}; + +struct _GApplicationClass +{ + /*< private >*/ + GObjectClass parent_class; + + /*< public >*/ + /* signals */ + void (* startup) (GApplication *application); + + void (* activate) (GApplication *application); + + void (* open) (GApplication *application, + GFile **files, + gint n_files, + const gchar *hint); + + int (* command_line) (GApplication *application, + GApplicationCommandLine *command_line); + + /* vfuncs */ + + /** + * GApplicationClass::local_command_line: + * @application: a #GApplication + * @arguments: (inout) (array zero-terminated=1): array of command line arguments + * @exit_status: (out): exit status to fill after processing the command line. + * + * This virtual function is always invoked in the local instance. It + * gets passed a pointer to a %NULL-terminated copy of @argv and is + * expected to remove arguments that it handled (shifting up remaining + * arguments). + * + * The last argument to local_command_line() is a pointer to the @status + * variable which can used to set the exit status that is returned from + * g_application_run(). + * + * See g_application_run() for more details on #GApplication startup. + * + * Returns: %TRUE if the commandline has been completely handled + */ + gboolean (* local_command_line) (GApplication *application, + gchar ***arguments, + int *exit_status); + + void (* before_emit) (GApplication *application, + GVariant *platform_data); + void (* after_emit) (GApplication *application, + GVariant *platform_data); + void (* add_platform_data) (GApplication *application, + GVariantBuilder *builder); + void (* quit_mainloop) (GApplication *application); + void (* run_mainloop) (GApplication *application); + void (* shutdown) (GApplication *application); + + gboolean (* dbus_register) (GApplication *application, + GDBusConnection *connection, + const gchar *object_path, + GError **error); + void (* dbus_unregister) (GApplication *application, + GDBusConnection *connection, + const gchar *object_path); + gint (* handle_local_options)(GApplication *application, + GVariantDict *options); + gboolean (* name_lost) (GApplication *application); + + /*< private >*/ + gpointer padding[7]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_application_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_application_id_is_valid (const gchar *application_id); + +GLIB_AVAILABLE_IN_ALL +GApplication * g_application_new (const gchar *application_id, + GApplicationFlags flags); + +GLIB_AVAILABLE_IN_ALL +const gchar * g_application_get_application_id (GApplication *application); +GLIB_AVAILABLE_IN_ALL +void g_application_set_application_id (GApplication *application, + const gchar *application_id); + +GLIB_AVAILABLE_IN_2_34 +GDBusConnection * g_application_get_dbus_connection (GApplication *application); +GLIB_AVAILABLE_IN_2_34 +const gchar * g_application_get_dbus_object_path (GApplication *application); + +GLIB_AVAILABLE_IN_ALL +guint g_application_get_inactivity_timeout (GApplication *application); +GLIB_AVAILABLE_IN_ALL +void g_application_set_inactivity_timeout (GApplication *application, + guint inactivity_timeout); + +GLIB_AVAILABLE_IN_ALL +GApplicationFlags g_application_get_flags (GApplication *application); +GLIB_AVAILABLE_IN_ALL +void g_application_set_flags (GApplication *application, + GApplicationFlags flags); + +GLIB_AVAILABLE_IN_2_42 +const gchar * g_application_get_resource_base_path (GApplication *application); +GLIB_AVAILABLE_IN_2_42 +void g_application_set_resource_base_path (GApplication *application, + const gchar *resource_path); + +GLIB_DEPRECATED +void g_application_set_action_group (GApplication *application, + GActionGroup *action_group); + +GLIB_AVAILABLE_IN_2_40 +void g_application_add_main_option_entries (GApplication *application, + const GOptionEntry *entries); + +GLIB_AVAILABLE_IN_2_42 +void g_application_add_main_option (GApplication *application, + const char *long_name, + char short_name, + GOptionFlags flags, + GOptionArg arg, + const char *description, + const char *arg_description); +GLIB_AVAILABLE_IN_2_40 +void g_application_add_option_group (GApplication *application, + GOptionGroup *group); +GLIB_AVAILABLE_IN_2_56 +void g_application_set_option_context_parameter_string (GApplication *application, + const gchar *parameter_string); +GLIB_AVAILABLE_IN_2_56 +void g_application_set_option_context_summary (GApplication *application, + const gchar *summary); +GLIB_AVAILABLE_IN_2_56 +void g_application_set_option_context_description (GApplication *application, + const gchar *description); +GLIB_AVAILABLE_IN_ALL +gboolean g_application_get_is_registered (GApplication *application); +GLIB_AVAILABLE_IN_ALL +gboolean g_application_get_is_remote (GApplication *application); + +GLIB_AVAILABLE_IN_ALL +gboolean g_application_register (GApplication *application, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_application_hold (GApplication *application); +GLIB_AVAILABLE_IN_ALL +void g_application_release (GApplication *application); + +GLIB_AVAILABLE_IN_ALL +void g_application_activate (GApplication *application); + +GLIB_AVAILABLE_IN_ALL +void g_application_open (GApplication *application, + GFile **files, + gint n_files, + const gchar *hint); + +GLIB_AVAILABLE_IN_ALL +int g_application_run (GApplication *application, + int argc, + char **argv); + +GLIB_AVAILABLE_IN_2_32 +void g_application_quit (GApplication *application); + +GLIB_AVAILABLE_IN_2_32 +GApplication * g_application_get_default (void); +GLIB_AVAILABLE_IN_2_32 +void g_application_set_default (GApplication *application); + +GLIB_AVAILABLE_IN_2_38 +void g_application_mark_busy (GApplication *application); +GLIB_AVAILABLE_IN_2_38 +void g_application_unmark_busy (GApplication *application); +GLIB_AVAILABLE_IN_2_44 +gboolean g_application_get_is_busy (GApplication *application); + +GLIB_AVAILABLE_IN_2_40 +void g_application_send_notification (GApplication *application, + const gchar *id, + GNotification *notification); +GLIB_AVAILABLE_IN_2_40 +void g_application_withdraw_notification (GApplication *application, + const gchar *id); + +GLIB_AVAILABLE_IN_2_44 +void g_application_bind_busy_property (GApplication *application, + gpointer object, + const gchar *property); + +GLIB_AVAILABLE_IN_2_44 +void g_application_unbind_busy_property (GApplication *application, + gpointer object, + const gchar *property); + +G_END_DECLS + +#endif /* __G_APPLICATION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gapplicationcommandline.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gapplicationcommandline.h new file mode 100644 index 0000000..a22a2b5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gapplicationcommandline.h @@ -0,0 +1,124 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_APPLICATION_COMMAND_LINE_H__ +#define __G_APPLICATION_COMMAND_LINE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_APPLICATION_COMMAND_LINE (g_application_command_line_get_type ()) +#define G_APPLICATION_COMMAND_LINE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_APPLICATION_COMMAND_LINE, \ + GApplicationCommandLine)) +#define G_APPLICATION_COMMAND_LINE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_APPLICATION_COMMAND_LINE, \ + GApplicationCommandLineClass)) +#define G_IS_APPLICATION_COMMAND_LINE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_APPLICATION_COMMAND_LINE)) +#define G_IS_APPLICATION_COMMAND_LINE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_APPLICATION_COMMAND_LINE)) +#define G_APPLICATION_COMMAND_LINE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_APPLICATION_COMMAND_LINE, \ + GApplicationCommandLineClass)) + +typedef struct _GApplicationCommandLinePrivate GApplicationCommandLinePrivate; +typedef struct _GApplicationCommandLineClass GApplicationCommandLineClass; + +struct _GApplicationCommandLine +{ + /*< private >*/ + GObject parent_instance; + + GApplicationCommandLinePrivate *priv; +}; + +struct _GApplicationCommandLineClass +{ + /*< private >*/ + GObjectClass parent_class; + + void (* print_literal) (GApplicationCommandLine *cmdline, + const gchar *message); + void (* printerr_literal) (GApplicationCommandLine *cmdline, + const gchar *message); + GInputStream * (* get_stdin) (GApplicationCommandLine *cmdline); + + gpointer padding[11]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_application_command_line_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gchar ** g_application_command_line_get_arguments (GApplicationCommandLine *cmdline, + int *argc); + +GLIB_AVAILABLE_IN_2_40 +GVariantDict * g_application_command_line_get_options_dict (GApplicationCommandLine *cmdline); + +GLIB_AVAILABLE_IN_2_36 +GInputStream * g_application_command_line_get_stdin (GApplicationCommandLine *cmdline); + +GLIB_AVAILABLE_IN_ALL +const gchar * const * g_application_command_line_get_environ (GApplicationCommandLine *cmdline); + +GLIB_AVAILABLE_IN_ALL +const gchar * g_application_command_line_getenv (GApplicationCommandLine *cmdline, + const gchar *name); + +GLIB_AVAILABLE_IN_ALL +const gchar * g_application_command_line_get_cwd (GApplicationCommandLine *cmdline); + +GLIB_AVAILABLE_IN_ALL +gboolean g_application_command_line_get_is_remote (GApplicationCommandLine *cmdline); + +GLIB_AVAILABLE_IN_ALL +void g_application_command_line_print (GApplicationCommandLine *cmdline, + const gchar *format, + ...) G_GNUC_PRINTF(2, 3); +GLIB_AVAILABLE_IN_ALL +void g_application_command_line_printerr (GApplicationCommandLine *cmdline, + const gchar *format, + ...) G_GNUC_PRINTF(2, 3); + +GLIB_AVAILABLE_IN_ALL +int g_application_command_line_get_exit_status (GApplicationCommandLine *cmdline); +GLIB_AVAILABLE_IN_ALL +void g_application_command_line_set_exit_status (GApplicationCommandLine *cmdline, + int exit_status); + +GLIB_AVAILABLE_IN_ALL +GVariant * g_application_command_line_get_platform_data (GApplicationCommandLine *cmdline); + +GLIB_AVAILABLE_IN_2_36 +GFile * g_application_command_line_create_file_for_arg (GApplicationCommandLine *cmdline, + const gchar *arg); + +G_END_DECLS + +#endif /* __G_APPLICATION_COMMAND_LINE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gasyncinitable.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gasyncinitable.h new file mode 100644 index 0000000..225702c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gasyncinitable.h @@ -0,0 +1,132 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_ASYNC_INITABLE_H__ +#define __G_ASYNC_INITABLE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_ASYNC_INITABLE (g_async_initable_get_type ()) +#define G_ASYNC_INITABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ASYNC_INITABLE, GAsyncInitable)) +#define G_IS_ASYNC_INITABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ASYNC_INITABLE)) +#define G_ASYNC_INITABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_ASYNC_INITABLE, GAsyncInitableIface)) +#define G_TYPE_IS_ASYNC_INITABLE(type) (g_type_is_a ((type), G_TYPE_ASYNC_INITABLE)) + +/** + * GAsyncInitable: + * + * Interface for asynchronously initializable objects. + * + * Since: 2.22 + **/ +typedef struct _GAsyncInitableIface GAsyncInitableIface; + +/** + * GAsyncInitableIface: + * @g_iface: The parent interface. + * @init_async: Starts initialization of the object. + * @init_finish: Finishes initialization of the object. + * + * Provides an interface for asynchronous initializing object such that + * initialization may fail. + * + * Since: 2.22 + **/ +struct _GAsyncInitableIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + void (* init_async) (GAsyncInitable *initable, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* init_finish) (GAsyncInitable *initable, + GAsyncResult *res, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_async_initable_get_type (void) G_GNUC_CONST; + + +GLIB_AVAILABLE_IN_ALL +void g_async_initable_init_async (GAsyncInitable *initable, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_async_initable_init_finish (GAsyncInitable *initable, + GAsyncResult *res, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_async_initable_new_async (GType object_type, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data, + const gchar *first_property_name, + ...); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties and g_async_initable_init_async) +void g_async_initable_newv_async (GType object_type, + guint n_parameters, + GParameter *parameters, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +void g_async_initable_new_valist_async (GType object_type, + const gchar *first_property_name, + va_list var_args, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GObject *g_async_initable_new_finish (GAsyncInitable *initable, + GAsyncResult *res, + GError **error); + + + +G_END_DECLS + + +#endif /* __G_ASYNC_INITABLE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gasyncresult.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gasyncresult.h new file mode 100644 index 0000000..c352c79 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gasyncresult.h @@ -0,0 +1,87 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_ASYNC_RESULT_H__ +#define __G_ASYNC_RESULT_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_ASYNC_RESULT (g_async_result_get_type ()) +#define G_ASYNC_RESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ASYNC_RESULT, GAsyncResult)) +#define G_IS_ASYNC_RESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ASYNC_RESULT)) +#define G_ASYNC_RESULT_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_ASYNC_RESULT, GAsyncResultIface)) + +/** + * GAsyncResult: + * + * Holds results information for an asynchronous operation, + * usually passed directly to an asynchronous _finish() operation. + **/ +typedef struct _GAsyncResultIface GAsyncResultIface; + + +/** + * GAsyncResultIface: + * @g_iface: The parent interface. + * @get_user_data: Gets the user data passed to the callback. + * @get_source_object: Gets the source object that issued the asynchronous operation. + * @is_tagged: Checks if a result is tagged with a particular source. + * + * Interface definition for #GAsyncResult. + **/ +struct _GAsyncResultIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + gpointer (* get_user_data) (GAsyncResult *res); + GObject * (* get_source_object) (GAsyncResult *res); + + gboolean (* is_tagged) (GAsyncResult *res, + gpointer source_tag); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_async_result_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gpointer g_async_result_get_user_data (GAsyncResult *res); +GLIB_AVAILABLE_IN_ALL +GObject *g_async_result_get_source_object (GAsyncResult *res); + +GLIB_AVAILABLE_IN_2_34 +gboolean g_async_result_legacy_propagate_error (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_2_34 +gboolean g_async_result_is_tagged (GAsyncResult *res, + gpointer source_tag); + +G_END_DECLS + +#endif /* __G_ASYNC_RESULT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbufferedinputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbufferedinputstream.h new file mode 100644 index 0000000..ca7b0f9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbufferedinputstream.h @@ -0,0 +1,135 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Christian Kellner + */ + +#ifndef __G_BUFFERED_INPUT_STREAM_H__ +#define __G_BUFFERED_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_BUFFERED_INPUT_STREAM (g_buffered_input_stream_get_type ()) +#define G_BUFFERED_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_BUFFERED_INPUT_STREAM, GBufferedInputStream)) +#define G_BUFFERED_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_BUFFERED_INPUT_STREAM, GBufferedInputStreamClass)) +#define G_IS_BUFFERED_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_BUFFERED_INPUT_STREAM)) +#define G_IS_BUFFERED_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_BUFFERED_INPUT_STREAM)) +#define G_BUFFERED_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_BUFFERED_INPUT_STREAM, GBufferedInputStreamClass)) + +/** + * GBufferedInputStream: + * + * Implements #GFilterInputStream with a sized input buffer. + **/ +typedef struct _GBufferedInputStreamClass GBufferedInputStreamClass; +typedef struct _GBufferedInputStreamPrivate GBufferedInputStreamPrivate; + +struct _GBufferedInputStream +{ + GFilterInputStream parent_instance; + + /*< private >*/ + GBufferedInputStreamPrivate *priv; +}; + +struct _GBufferedInputStreamClass +{ + GFilterInputStreamClass parent_class; + + gssize (* fill) (GBufferedInputStream *stream, + gssize count, + GCancellable *cancellable, + GError **error); + + /* Async ops: (optional in derived classes) */ + void (* fill_async) (GBufferedInputStream *stream, + gssize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gssize (* fill_finish) (GBufferedInputStream *stream, + GAsyncResult *result, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_buffered_input_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GInputStream* g_buffered_input_stream_new (GInputStream *base_stream); +GLIB_AVAILABLE_IN_ALL +GInputStream* g_buffered_input_stream_new_sized (GInputStream *base_stream, + gsize size); + +GLIB_AVAILABLE_IN_ALL +gsize g_buffered_input_stream_get_buffer_size (GBufferedInputStream *stream); +GLIB_AVAILABLE_IN_ALL +void g_buffered_input_stream_set_buffer_size (GBufferedInputStream *stream, + gsize size); +GLIB_AVAILABLE_IN_ALL +gsize g_buffered_input_stream_get_available (GBufferedInputStream *stream); +GLIB_AVAILABLE_IN_ALL +gsize g_buffered_input_stream_peek (GBufferedInputStream *stream, + void *buffer, + gsize offset, + gsize count); +GLIB_AVAILABLE_IN_ALL +const void* g_buffered_input_stream_peek_buffer (GBufferedInputStream *stream, + gsize *count); + +GLIB_AVAILABLE_IN_ALL +gssize g_buffered_input_stream_fill (GBufferedInputStream *stream, + gssize count, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_buffered_input_stream_fill_async (GBufferedInputStream *stream, + gssize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gssize g_buffered_input_stream_fill_finish (GBufferedInputStream *stream, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +int g_buffered_input_stream_read_byte (GBufferedInputStream *stream, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + +#endif /* __G_BUFFERED_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbufferedoutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbufferedoutputstream.h new file mode 100644 index 0000000..a50d5e7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbufferedoutputstream.h @@ -0,0 +1,88 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Christian Kellner + */ + +#ifndef __G_BUFFERED_OUTPUT_STREAM_H__ +#define __G_BUFFERED_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_BUFFERED_OUTPUT_STREAM (g_buffered_output_stream_get_type ()) +#define G_BUFFERED_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_BUFFERED_OUTPUT_STREAM, GBufferedOutputStream)) +#define G_BUFFERED_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_BUFFERED_OUTPUT_STREAM, GBufferedOutputStreamClass)) +#define G_IS_BUFFERED_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_BUFFERED_OUTPUT_STREAM)) +#define G_IS_BUFFERED_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_BUFFERED_OUTPUT_STREAM)) +#define G_BUFFERED_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_BUFFERED_OUTPUT_STREAM, GBufferedOutputStreamClass)) + +/** + * GBufferedOutputStream: + * + * An implementation of #GFilterOutputStream with a sized buffer. + **/ +typedef struct _GBufferedOutputStreamClass GBufferedOutputStreamClass; +typedef struct _GBufferedOutputStreamPrivate GBufferedOutputStreamPrivate; + +struct _GBufferedOutputStream +{ + GFilterOutputStream parent_instance; + + /*< protected >*/ + GBufferedOutputStreamPrivate *priv; +}; + +struct _GBufferedOutputStreamClass +{ + GFilterOutputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_buffered_output_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GOutputStream* g_buffered_output_stream_new (GOutputStream *base_stream); +GLIB_AVAILABLE_IN_ALL +GOutputStream* g_buffered_output_stream_new_sized (GOutputStream *base_stream, + gsize size); +GLIB_AVAILABLE_IN_ALL +gsize g_buffered_output_stream_get_buffer_size (GBufferedOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +void g_buffered_output_stream_set_buffer_size (GBufferedOutputStream *stream, + gsize size); +GLIB_AVAILABLE_IN_ALL +gboolean g_buffered_output_stream_get_auto_grow (GBufferedOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +void g_buffered_output_stream_set_auto_grow (GBufferedOutputStream *stream, + gboolean auto_grow); + +G_END_DECLS + +#endif /* __G_BUFFERED_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbytesicon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbytesicon.h new file mode 100644 index 0000000..668f85f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gbytesicon.h @@ -0,0 +1,54 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_BYTES_ICON_H__ +#define __G_BYTES_ICON_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_BYTES_ICON (g_bytes_icon_get_type ()) +#define G_BYTES_ICON(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_BYTES_ICON, GBytesIcon)) +#define G_IS_BYTES_ICON(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_BYTES_ICON)) + +/** + * GBytesIcon: + * + * Gets an icon for a #GBytes. Implements #GLoadableIcon. + **/ +GLIB_AVAILABLE_IN_2_38 +GType g_bytes_icon_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_38 +GIcon * g_bytes_icon_new (GBytes *bytes); + +GLIB_AVAILABLE_IN_2_38 +GBytes * g_bytes_icon_get_bytes (GBytesIcon *icon); + +G_END_DECLS + +#endif /* __G_BYTES_ICON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcancellable.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcancellable.h new file mode 100644 index 0000000..790a59b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcancellable.h @@ -0,0 +1,120 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_CANCELLABLE_H__ +#define __G_CANCELLABLE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_CANCELLABLE (g_cancellable_get_type ()) +#define G_CANCELLABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CANCELLABLE, GCancellable)) +#define G_CANCELLABLE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CANCELLABLE, GCancellableClass)) +#define G_IS_CANCELLABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CANCELLABLE)) +#define G_IS_CANCELLABLE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CANCELLABLE)) +#define G_CANCELLABLE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CANCELLABLE, GCancellableClass)) + +/** + * GCancellable: + * + * Allows actions to be cancelled. + */ +typedef struct _GCancellableClass GCancellableClass; +typedef struct _GCancellablePrivate GCancellablePrivate; + +struct _GCancellable +{ + GObject parent_instance; + + /*< private >*/ + GCancellablePrivate *priv; +}; + +struct _GCancellableClass +{ + GObjectClass parent_class; + + void (* cancelled) (GCancellable *cancellable); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_cancellable_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GCancellable *g_cancellable_new (void); + +/* These are only safe to call inside a cancellable op */ +GLIB_AVAILABLE_IN_ALL +gboolean g_cancellable_is_cancelled (GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +gboolean g_cancellable_set_error_if_cancelled (GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +int g_cancellable_get_fd (GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +gboolean g_cancellable_make_pollfd (GCancellable *cancellable, + GPollFD *pollfd); +GLIB_AVAILABLE_IN_ALL +void g_cancellable_release_fd (GCancellable *cancellable); + +GLIB_AVAILABLE_IN_ALL +GSource * g_cancellable_source_new (GCancellable *cancellable); + +GLIB_AVAILABLE_IN_ALL +GCancellable *g_cancellable_get_current (void); +GLIB_AVAILABLE_IN_ALL +void g_cancellable_push_current (GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +void g_cancellable_pop_current (GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +void g_cancellable_reset (GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +gulong g_cancellable_connect (GCancellable *cancellable, + GCallback callback, + gpointer data, + GDestroyNotify data_destroy_func); +GLIB_AVAILABLE_IN_ALL +void g_cancellable_disconnect (GCancellable *cancellable, + gulong handler_id); + + +/* This is safe to call from another thread */ +GLIB_AVAILABLE_IN_ALL +void g_cancellable_cancel (GCancellable *cancellable); + +G_END_DECLS + +#endif /* __G_CANCELLABLE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcharsetconverter.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcharsetconverter.h new file mode 100644 index 0000000..5ab8f32 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcharsetconverter.h @@ -0,0 +1,65 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_CHARSET_CONVERTER_H__ +#define __G_CHARSET_CONVERTER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_CHARSET_CONVERTER (g_charset_converter_get_type ()) +#define G_CHARSET_CONVERTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CHARSET_CONVERTER, GCharsetConverter)) +#define G_CHARSET_CONVERTER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CHARSET_CONVERTER, GCharsetConverterClass)) +#define G_IS_CHARSET_CONVERTER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CHARSET_CONVERTER)) +#define G_IS_CHARSET_CONVERTER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CHARSET_CONVERTER)) +#define G_CHARSET_CONVERTER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CHARSET_CONVERTER, GCharsetConverterClass)) + +typedef struct _GCharsetConverterClass GCharsetConverterClass; + +struct _GCharsetConverterClass +{ + GObjectClass parent_class; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_charset_converter_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GCharsetConverter *g_charset_converter_new (const gchar *to_charset, + const gchar *from_charset, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_charset_converter_set_use_fallback (GCharsetConverter *converter, + gboolean use_fallback); +GLIB_AVAILABLE_IN_ALL +gboolean g_charset_converter_get_use_fallback (GCharsetConverter *converter); +GLIB_AVAILABLE_IN_ALL +guint g_charset_converter_get_num_fallbacks (GCharsetConverter *converter); + +G_END_DECLS + +#endif /* __G_CHARSET_CONVERTER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcontenttype.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcontenttype.h new file mode 100644 index 0000000..bd487f1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcontenttype.h @@ -0,0 +1,84 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_CONTENT_TYPE_H__ +#define __G_CONTENT_TYPE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +gboolean g_content_type_equals (const gchar *type1, + const gchar *type2); +GLIB_AVAILABLE_IN_ALL +gboolean g_content_type_is_a (const gchar *type, + const gchar *supertype); +GLIB_AVAILABLE_IN_2_52 +gboolean g_content_type_is_mime_type (const gchar *type, + const gchar *mime_type); +GLIB_AVAILABLE_IN_ALL +gboolean g_content_type_is_unknown (const gchar *type); +GLIB_AVAILABLE_IN_ALL +gchar * g_content_type_get_description (const gchar *type); +GLIB_AVAILABLE_IN_ALL +gchar * g_content_type_get_mime_type (const gchar *type); +GLIB_AVAILABLE_IN_ALL +GIcon * g_content_type_get_icon (const gchar *type); +GLIB_AVAILABLE_IN_2_34 +GIcon * g_content_type_get_symbolic_icon (const gchar *type); +GLIB_AVAILABLE_IN_2_34 +gchar * g_content_type_get_generic_icon_name (const gchar *type); + +GLIB_AVAILABLE_IN_ALL +gboolean g_content_type_can_be_executable (const gchar *type); + +GLIB_AVAILABLE_IN_ALL +gchar * g_content_type_from_mime_type (const gchar *mime_type); + +GLIB_AVAILABLE_IN_ALL +gchar * g_content_type_guess (const gchar *filename, + const guchar *data, + gsize data_size, + gboolean *result_uncertain); + +GLIB_AVAILABLE_IN_ALL +gchar ** g_content_type_guess_for_tree (GFile *root); + +GLIB_AVAILABLE_IN_ALL +GList * g_content_types_get_registered (void); + +/*< private >*/ +#ifndef __GTK_DOC_IGNORE__ +GLIB_AVAILABLE_IN_2_60 +const gchar * const *g_content_type_get_mime_dirs (void); +GLIB_AVAILABLE_IN_2_60 +void g_content_type_set_mime_dirs (const gchar * const *dirs); +#endif /* __GTK_DOC_IGNORE__ */ + +G_END_DECLS + +#endif /* __G_CONTENT_TYPE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverter.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverter.h new file mode 100644 index 0000000..a39a765 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverter.h @@ -0,0 +1,98 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_CONVERTER_H__ +#define __G_CONVERTER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_CONVERTER (g_converter_get_type ()) +#define G_CONVERTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_CONVERTER, GConverter)) +#define G_IS_CONVERTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_CONVERTER)) +#define G_CONVERTER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_CONVERTER, GConverterIface)) + +/** + * GConverter: + * + * Seek object for streaming operations. + * + * Since: 2.24 + **/ +typedef struct _GConverterIface GConverterIface; + +/** + * GConverterIface: + * @g_iface: The parent interface. + * @convert: Converts data. + * @reset: Reverts the internal state of the converter to its initial state. + * + * Provides an interface for converting data from one type + * to another type. The conversion can be stateful + * and may fail at any place. + * + * Since: 2.24 + **/ +struct _GConverterIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + GConverterResult (* convert) (GConverter *converter, + const void *inbuf, + gsize inbuf_size, + void *outbuf, + gsize outbuf_size, + GConverterFlags flags, + gsize *bytes_read, + gsize *bytes_written, + GError **error); + void (* reset) (GConverter *converter); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_converter_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GConverterResult g_converter_convert (GConverter *converter, + const void *inbuf, + gsize inbuf_size, + void *outbuf, + gsize outbuf_size, + GConverterFlags flags, + gsize *bytes_read, + gsize *bytes_written, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_converter_reset (GConverter *converter); + + +G_END_DECLS + + +#endif /* __G_CONVERTER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverterinputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverterinputstream.h new file mode 100644 index 0000000..2747fdb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverterinputstream.h @@ -0,0 +1,82 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_CONVERTER_INPUT_STREAM_H__ +#define __G_CONVERTER_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_CONVERTER_INPUT_STREAM (g_converter_input_stream_get_type ()) +#define G_CONVERTER_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CONVERTER_INPUT_STREAM, GConverterInputStream)) +#define G_CONVERTER_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CONVERTER_INPUT_STREAM, GConverterInputStreamClass)) +#define G_IS_CONVERTER_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CONVERTER_INPUT_STREAM)) +#define G_IS_CONVERTER_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CONVERTER_INPUT_STREAM)) +#define G_CONVERTER_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CONVERTER_INPUT_STREAM, GConverterInputStreamClass)) + +/** + * GConverterInputStream: + * + * An implementation of #GFilterInputStream that allows data + * conversion. + **/ +typedef struct _GConverterInputStreamClass GConverterInputStreamClass; +typedef struct _GConverterInputStreamPrivate GConverterInputStreamPrivate; + +struct _GConverterInputStream +{ + GFilterInputStream parent_instance; + + /*< private >*/ + GConverterInputStreamPrivate *priv; +}; + +struct _GConverterInputStreamClass +{ + GFilterInputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_converter_input_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GInputStream *g_converter_input_stream_new (GInputStream *base_stream, + GConverter *converter); +GLIB_AVAILABLE_IN_ALL +GConverter *g_converter_input_stream_get_converter (GConverterInputStream *converter_stream); + +G_END_DECLS + +#endif /* __G_CONVERTER_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverteroutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverteroutputstream.h new file mode 100644 index 0000000..d6a960b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gconverteroutputstream.h @@ -0,0 +1,82 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_CONVERTER_OUTPUT_STREAM_H__ +#define __G_CONVERTER_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_CONVERTER_OUTPUT_STREAM (g_converter_output_stream_get_type ()) +#define G_CONVERTER_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CONVERTER_OUTPUT_STREAM, GConverterOutputStream)) +#define G_CONVERTER_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CONVERTER_OUTPUT_STREAM, GConverterOutputStreamClass)) +#define G_IS_CONVERTER_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CONVERTER_OUTPUT_STREAM)) +#define G_IS_CONVERTER_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CONVERTER_OUTPUT_STREAM)) +#define G_CONVERTER_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CONVERTER_OUTPUT_STREAM, GConverterOutputStreamClass)) + +/** + * GConverterOutputStream: + * + * An implementation of #GFilterOutputStream that allows data + * conversion. + **/ +typedef struct _GConverterOutputStreamClass GConverterOutputStreamClass; +typedef struct _GConverterOutputStreamPrivate GConverterOutputStreamPrivate; + +struct _GConverterOutputStream +{ + GFilterOutputStream parent_instance; + + /*< private >*/ + GConverterOutputStreamPrivate *priv; +}; + +struct _GConverterOutputStreamClass +{ + GFilterOutputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_converter_output_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GOutputStream *g_converter_output_stream_new (GOutputStream *base_stream, + GConverter *converter); +GLIB_AVAILABLE_IN_ALL +GConverter *g_converter_output_stream_get_converter (GConverterOutputStream *converter_stream); + +G_END_DECLS + +#endif /* __G_CONVERTER_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcredentials.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcredentials.h new file mode 100644 index 0000000..60b3aba --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gcredentials.h @@ -0,0 +1,87 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_CREDENTIALS_H__ +#define __G_CREDENTIALS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +#ifdef G_OS_UNIX +/* To get the uid_t type */ +#include +#include +#endif + +G_BEGIN_DECLS + +#define G_TYPE_CREDENTIALS (g_credentials_get_type ()) +#define G_CREDENTIALS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CREDENTIALS, GCredentials)) +#define G_CREDENTIALS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CREDENTIALS, GCredentialsClass)) +#define G_CREDENTIALS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CREDENTIALS, GCredentialsClass)) +#define G_IS_CREDENTIALS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CREDENTIALS)) +#define G_IS_CREDENTIALS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CREDENTIALS)) + +typedef struct _GCredentialsClass GCredentialsClass; + +GLIB_AVAILABLE_IN_ALL +GType g_credentials_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GCredentials *g_credentials_new (void); + +GLIB_AVAILABLE_IN_ALL +gchar *g_credentials_to_string (GCredentials *credentials); + +GLIB_AVAILABLE_IN_ALL +gpointer g_credentials_get_native (GCredentials *credentials, + GCredentialsType native_type); + +GLIB_AVAILABLE_IN_ALL +void g_credentials_set_native (GCredentials *credentials, + GCredentialsType native_type, + gpointer native); + +GLIB_AVAILABLE_IN_ALL +gboolean g_credentials_is_same_user (GCredentials *credentials, + GCredentials *other_credentials, + GError **error); + +#ifdef G_OS_UNIX +GLIB_AVAILABLE_IN_2_36 +pid_t g_credentials_get_unix_pid (GCredentials *credentials, + GError **error); +GLIB_AVAILABLE_IN_ALL +uid_t g_credentials_get_unix_user (GCredentials *credentials, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_credentials_set_unix_user (GCredentials *credentials, + uid_t uid, + GError **error); +#endif + +G_END_DECLS + +#endif /* __G_CREDENTIALS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdatagrambased.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdatagrambased.h new file mode 100644 index 0000000..798e003 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdatagrambased.h @@ -0,0 +1,146 @@ +/* + * Copyright 2015 Collabora Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Philip Withnall + */ + +#ifndef __G_DATAGRAM_BASED_H__ +#define __G_DATAGRAM_BASED_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DATAGRAM_BASED (g_datagram_based_get_type ()) +#define G_DATAGRAM_BASED(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_DATAGRAM_BASED, GDatagramBased)) +#define G_IS_DATAGRAM_BASED(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_DATAGRAM_BASED)) +#define G_DATAGRAM_BASED_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ + G_TYPE_DATAGRAM_BASED, \ + GDatagramBasedInterface)) +#define G_TYPE_IS_DATAGRAM_BASED(type) (g_type_is_a ((type), \ + G_TYPE_DATAGRAM_BASED)) + +/** + * GDatagramBased: + * + * Interface for socket-like objects with datagram semantics. + * + * Since: 2.48 + */ +typedef struct _GDatagramBasedInterface GDatagramBasedInterface; + +/** + * GDatagramBasedInterface: + * @g_iface: The parent interface. + * @receive_messages: Virtual method for g_datagram_based_receive_messages(). + * @send_messages: Virtual method for g_datagram_based_send_messages(). + * @create_source: Virtual method for g_datagram_based_create_source(). + * @condition_check: Virtual method for g_datagram_based_condition_check(). + * @condition_wait: Virtual method for + * g_datagram_based_condition_wait(). + * + * Provides an interface for socket-like objects which have datagram semantics, + * following the Berkeley sockets API. The interface methods are thin wrappers + * around the corresponding virtual methods, and no pre-processing of inputs is + * implemented — so implementations of this API must handle all functionality + * documented in the interface methods. + * + * Since: 2.48 + */ +struct _GDatagramBasedInterface +{ + GTypeInterface g_iface; + + /* Virtual table */ + gint (*receive_messages) (GDatagramBased *datagram_based, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + gint (*send_messages) (GDatagramBased *datagram_based, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + + GSource *(*create_source) (GDatagramBased *datagram_based, + GIOCondition condition, + GCancellable *cancellable); + GIOCondition (*condition_check) (GDatagramBased *datagram_based, + GIOCondition condition); + gboolean (*condition_wait) (GDatagramBased *datagram_based, + GIOCondition condition, + gint64 timeout, + GCancellable *cancellable, + GError **error); +}; + +GLIB_AVAILABLE_IN_2_48 +GType +g_datagram_based_get_type (void); + +GLIB_AVAILABLE_IN_2_48 +gint +g_datagram_based_receive_messages (GDatagramBased *datagram_based, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +gint +g_datagram_based_send_messages (GDatagramBased *datagram_based, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +GSource * +g_datagram_based_create_source (GDatagramBased *datagram_based, + GIOCondition condition, + GCancellable *cancellable); +GLIB_AVAILABLE_IN_2_48 +GIOCondition +g_datagram_based_condition_check (GDatagramBased *datagram_based, + GIOCondition condition); +GLIB_AVAILABLE_IN_2_48 +gboolean +g_datagram_based_condition_wait (GDatagramBased *datagram_based, + GIOCondition condition, + gint64 timeout, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + +#endif /* __G_DATAGRAM_BASED_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdatainputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdatainputstream.h new file mode 100644 index 0000000..4380f06 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdatainputstream.h @@ -0,0 +1,182 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_DATA_INPUT_STREAM_H__ +#define __G_DATA_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DATA_INPUT_STREAM (g_data_input_stream_get_type ()) +#define G_DATA_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DATA_INPUT_STREAM, GDataInputStream)) +#define G_DATA_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DATA_INPUT_STREAM, GDataInputStreamClass)) +#define G_IS_DATA_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DATA_INPUT_STREAM)) +#define G_IS_DATA_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DATA_INPUT_STREAM)) +#define G_DATA_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DATA_INPUT_STREAM, GDataInputStreamClass)) + +/** + * GDataInputStream: + * + * An implementation of #GBufferedInputStream that allows for high-level + * data manipulation of arbitrary data (including binary operations). + **/ +typedef struct _GDataInputStreamClass GDataInputStreamClass; +typedef struct _GDataInputStreamPrivate GDataInputStreamPrivate; + +struct _GDataInputStream +{ + GBufferedInputStream parent_instance; + + /*< private >*/ + GDataInputStreamPrivate *priv; +}; + +struct _GDataInputStreamClass +{ + GBufferedInputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_data_input_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDataInputStream * g_data_input_stream_new (GInputStream *base_stream); + +GLIB_AVAILABLE_IN_ALL +void g_data_input_stream_set_byte_order (GDataInputStream *stream, + GDataStreamByteOrder order); +GLIB_AVAILABLE_IN_ALL +GDataStreamByteOrder g_data_input_stream_get_byte_order (GDataInputStream *stream); +GLIB_AVAILABLE_IN_ALL +void g_data_input_stream_set_newline_type (GDataInputStream *stream, + GDataStreamNewlineType type); +GLIB_AVAILABLE_IN_ALL +GDataStreamNewlineType g_data_input_stream_get_newline_type (GDataInputStream *stream); +GLIB_AVAILABLE_IN_ALL +guchar g_data_input_stream_read_byte (GDataInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gint16 g_data_input_stream_read_int16 (GDataInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +guint16 g_data_input_stream_read_uint16 (GDataInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gint32 g_data_input_stream_read_int32 (GDataInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +guint32 g_data_input_stream_read_uint32 (GDataInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gint64 g_data_input_stream_read_int64 (GDataInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +guint64 g_data_input_stream_read_uint64 (GDataInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +char * g_data_input_stream_read_line (GDataInputStream *stream, + gsize *length, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_30 +char * g_data_input_stream_read_line_utf8 (GDataInputStream *stream, + gsize *length, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_data_input_stream_read_line_async (GDataInputStream *stream, + gint io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +char * g_data_input_stream_read_line_finish (GDataInputStream *stream, + GAsyncResult *result, + gsize *length, + GError **error); +GLIB_AVAILABLE_IN_2_30 +char * g_data_input_stream_read_line_finish_utf8(GDataInputStream *stream, + GAsyncResult *result, + gsize *length, + GError **error); +GLIB_DEPRECATED_IN_2_56_FOR (g_data_input_stream_read_upto) +char * g_data_input_stream_read_until (GDataInputStream *stream, + const gchar *stop_chars, + gsize *length, + GCancellable *cancellable, + GError **error); +GLIB_DEPRECATED_IN_2_56_FOR (g_data_input_stream_read_upto_async) +void g_data_input_stream_read_until_async (GDataInputStream *stream, + const gchar *stop_chars, + gint io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_DEPRECATED_IN_2_56_FOR (g_data_input_stream_read_upto_finish) +char * g_data_input_stream_read_until_finish (GDataInputStream *stream, + GAsyncResult *result, + gsize *length, + GError **error); + +GLIB_AVAILABLE_IN_ALL +char * g_data_input_stream_read_upto (GDataInputStream *stream, + const gchar *stop_chars, + gssize stop_chars_len, + gsize *length, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_data_input_stream_read_upto_async (GDataInputStream *stream, + const gchar *stop_chars, + gssize stop_chars_len, + gint io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +char * g_data_input_stream_read_upto_finish (GDataInputStream *stream, + GAsyncResult *result, + gsize *length, + GError **error); + +G_END_DECLS + +#endif /* __G_DATA_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdataoutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdataoutputstream.h new file mode 100644 index 0000000..046550c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdataoutputstream.h @@ -0,0 +1,127 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_DATA_OUTPUT_STREAM_H__ +#define __G_DATA_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DATA_OUTPUT_STREAM (g_data_output_stream_get_type ()) +#define G_DATA_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DATA_OUTPUT_STREAM, GDataOutputStream)) +#define G_DATA_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DATA_OUTPUT_STREAM, GDataOutputStreamClass)) +#define G_IS_DATA_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DATA_OUTPUT_STREAM)) +#define G_IS_DATA_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DATA_OUTPUT_STREAM)) +#define G_DATA_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DATA_OUTPUT_STREAM, GDataOutputStreamClass)) + +/** + * GDataOutputStream: + * + * An implementation of #GBufferedOutputStream that allows for high-level + * data manipulation of arbitrary data (including binary operations). + **/ +typedef struct _GDataOutputStream GDataOutputStream; +typedef struct _GDataOutputStreamClass GDataOutputStreamClass; +typedef struct _GDataOutputStreamPrivate GDataOutputStreamPrivate; + +struct _GDataOutputStream +{ + GFilterOutputStream parent_instance; + + /*< private >*/ + GDataOutputStreamPrivate *priv; +}; + +struct _GDataOutputStreamClass +{ + GFilterOutputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_data_output_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDataOutputStream * g_data_output_stream_new (GOutputStream *base_stream); + +GLIB_AVAILABLE_IN_ALL +void g_data_output_stream_set_byte_order (GDataOutputStream *stream, + GDataStreamByteOrder order); +GLIB_AVAILABLE_IN_ALL +GDataStreamByteOrder g_data_output_stream_get_byte_order (GDataOutputStream *stream); + +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_byte (GDataOutputStream *stream, + guchar data, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_int16 (GDataOutputStream *stream, + gint16 data, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_uint16 (GDataOutputStream *stream, + guint16 data, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_int32 (GDataOutputStream *stream, + gint32 data, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_uint32 (GDataOutputStream *stream, + guint32 data, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_int64 (GDataOutputStream *stream, + gint64 data, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_uint64 (GDataOutputStream *stream, + guint64 data, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_data_output_stream_put_string (GDataOutputStream *stream, + const char *str, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + +#endif /* __G_DATA_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusactiongroup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusactiongroup.h new file mode 100644 index 0000000..1575ffb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusactiongroup.h @@ -0,0 +1,56 @@ +/* + * Copyright © 2010 Codethink Limited + * Copyright © 2011 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_DBUS_ACTION_GROUP_H__ +#define __G_DBUS_ACTION_GROUP_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include "giotypes.h" + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_ACTION_GROUP (g_dbus_action_group_get_type ()) +#define G_DBUS_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_DBUS_ACTION_GROUP, GDBusActionGroup)) +#define G_DBUS_ACTION_GROUP_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_DBUS_ACTION_GROUP, GDBusActionGroupClass)) +#define G_IS_DBUS_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_DBUS_ACTION_GROUP)) +#define G_IS_DBUS_ACTION_GROUP_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_DBUS_ACTION_GROUP)) +#define G_DBUS_ACTION_GROUP_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_DBUS_ACTION_GROUP, GDBusActionGroupClass)) + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_action_group_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +GDBusActionGroup * g_dbus_action_group_get (GDBusConnection *connection, + const gchar *bus_name, + const gchar *object_path); + +G_END_DECLS + +#endif /* __G_DBUS_ACTION_GROUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusaddress.h new file mode 100644 index 0000000..cc99c59 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusaddress.h @@ -0,0 +1,67 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_ADDRESS_H__ +#define __G_DBUS_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_36 +gchar *g_dbus_address_escape_value (const gchar *string); + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_is_address (const gchar *string); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_is_supported_address (const gchar *string, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_dbus_address_get_stream (const gchar *address, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GIOStream *g_dbus_address_get_stream_finish (GAsyncResult *res, + gchar **out_guid, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GIOStream *g_dbus_address_get_stream_sync (const gchar *address, + gchar **out_guid, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gchar *g_dbus_address_get_for_bus_sync (GBusType bus_type, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + +#endif /* __G_DBUS_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusauthobserver.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusauthobserver.h new file mode 100644 index 0000000..1961a33 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusauthobserver.h @@ -0,0 +1,53 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_AUTH_OBSERVER_H__ +#define __G_DBUS_AUTH_OBSERVER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_AUTH_OBSERVER (g_dbus_auth_observer_get_type ()) +#define G_DBUS_AUTH_OBSERVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_AUTH_OBSERVER, GDBusAuthObserver)) +#define G_IS_DBUS_AUTH_OBSERVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_AUTH_OBSERVER)) + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_auth_observer_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusAuthObserver *g_dbus_auth_observer_new (void); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_auth_observer_authorize_authenticated_peer (GDBusAuthObserver *observer, + GIOStream *stream, + GCredentials *credentials); + +GLIB_AVAILABLE_IN_2_34 +gboolean g_dbus_auth_observer_allow_mechanism (GDBusAuthObserver *observer, + const gchar *mechanism); + +G_END_DECLS + +#endif /* _G_DBUS_AUTH_OBSERVER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusconnection.h new file mode 100644 index 0000000..5956251 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusconnection.h @@ -0,0 +1,691 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_CONNECTION_H__ +#define __G_DBUS_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_CONNECTION (g_dbus_connection_get_type ()) +#define G_DBUS_CONNECTION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_CONNECTION, GDBusConnection)) +#define G_IS_DBUS_CONNECTION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_CONNECTION)) + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_connection_get_type (void) G_GNUC_CONST; + +/* ---------------------------------------------------------------------------------------------------- */ + +GLIB_AVAILABLE_IN_ALL +void g_bus_get (GBusType bus_type, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_bus_get_finish (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_bus_get_sync (GBusType bus_type, + GCancellable *cancellable, + GError **error); + +/* ---------------------------------------------------------------------------------------------------- */ + +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_new (GIOStream *stream, + const gchar *guid, + GDBusConnectionFlags flags, + GDBusAuthObserver *observer, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_connection_new_finish (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_connection_new_sync (GIOStream *stream, + const gchar *guid, + GDBusConnectionFlags flags, + GDBusAuthObserver *observer, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_new_for_address (const gchar *address, + GDBusConnectionFlags flags, + GDBusAuthObserver *observer, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_connection_new_for_address_finish (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_connection_new_for_address_sync (const gchar *address, + GDBusConnectionFlags flags, + GDBusAuthObserver *observer, + GCancellable *cancellable, + GError **error); + +/* ---------------------------------------------------------------------------------------------------- */ + +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_start_message_processing (GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_is_closed (GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +GIOStream *g_dbus_connection_get_stream (GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_connection_get_guid (GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_connection_get_unique_name (GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +GCredentials *g_dbus_connection_get_peer_credentials (GDBusConnection *connection); + +GLIB_AVAILABLE_IN_2_34 +guint32 g_dbus_connection_get_last_serial (GDBusConnection *connection); + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_get_exit_on_close (GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_set_exit_on_close (GDBusConnection *connection, + gboolean exit_on_close); +GLIB_AVAILABLE_IN_ALL +GDBusCapabilityFlags g_dbus_connection_get_capabilities (GDBusConnection *connection); +GLIB_AVAILABLE_IN_2_60 +GDBusConnectionFlags g_dbus_connection_get_flags (GDBusConnection *connection); + +/* ---------------------------------------------------------------------------------------------------- */ + +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_close (GDBusConnection *connection, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_close_finish (GDBusConnection *connection, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_close_sync (GDBusConnection *connection, + GCancellable *cancellable, + GError **error); + +/* ---------------------------------------------------------------------------------------------------- */ + +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_flush (GDBusConnection *connection, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_flush_finish (GDBusConnection *connection, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_flush_sync (GDBusConnection *connection, + GCancellable *cancellable, + GError **error); + +/* ---------------------------------------------------------------------------------------------------- */ + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_send_message (GDBusConnection *connection, + GDBusMessage *message, + GDBusSendMessageFlags flags, + volatile guint32 *out_serial, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_send_message_with_reply (GDBusConnection *connection, + GDBusMessage *message, + GDBusSendMessageFlags flags, + gint timeout_msec, + volatile guint32 *out_serial, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_connection_send_message_with_reply_finish (GDBusConnection *connection, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_connection_send_message_with_reply_sync (GDBusConnection *connection, + GDBusMessage *message, + GDBusSendMessageFlags flags, + gint timeout_msec, + volatile guint32 *out_serial, + GCancellable *cancellable, + GError **error); + +/* ---------------------------------------------------------------------------------------------------- */ + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_emit_signal (GDBusConnection *connection, + const gchar *destination_bus_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *signal_name, + GVariant *parameters, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_call (GDBusConnection *connection, + const gchar *bus_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + const GVariantType *reply_type, + GDBusCallFlags flags, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_connection_call_finish (GDBusConnection *connection, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_connection_call_sync (GDBusConnection *connection, + const gchar *bus_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + const GVariantType *reply_type, + GDBusCallFlags flags, + gint timeout_msec, + GCancellable *cancellable, + GError **error); + +#ifdef G_OS_UNIX + +GLIB_AVAILABLE_IN_2_30 +void g_dbus_connection_call_with_unix_fd_list (GDBusConnection *connection, + const gchar *bus_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + const GVariantType *reply_type, + GDBusCallFlags flags, + gint timeout_msec, + GUnixFDList *fd_list, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_30 +GVariant *g_dbus_connection_call_with_unix_fd_list_finish (GDBusConnection *connection, + GUnixFDList **out_fd_list, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_2_30 +GVariant *g_dbus_connection_call_with_unix_fd_list_sync (GDBusConnection *connection, + const gchar *bus_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + const GVariantType *reply_type, + GDBusCallFlags flags, + gint timeout_msec, + GUnixFDList *fd_list, + GUnixFDList **out_fd_list, + GCancellable *cancellable, + GError **error); + +#endif /* G_OS_UNIX */ + +/* ---------------------------------------------------------------------------------------------------- */ + + +/** + * GDBusInterfaceMethodCallFunc: + * @connection: A #GDBusConnection. + * @sender: The unique bus name of the remote caller. + * @object_path: The object path that the method was invoked on. + * @interface_name: The D-Bus interface name the method was invoked on. + * @method_name: The name of the method that was invoked. + * @parameters: A #GVariant tuple with parameters. + * @invocation: (transfer full): A #GDBusMethodInvocation object that must be used to return a value or error. + * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_object(). + * + * The type of the @method_call function in #GDBusInterfaceVTable. + * + * Since: 2.26 + */ +typedef void (*GDBusInterfaceMethodCallFunc) (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data); + +/** + * GDBusInterfaceGetPropertyFunc: + * @connection: A #GDBusConnection. + * @sender: The unique bus name of the remote caller. + * @object_path: The object path that the method was invoked on. + * @interface_name: The D-Bus interface name for the property. + * @property_name: The name of the property to get the value of. + * @error: Return location for error. + * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_object(). + * + * The type of the @get_property function in #GDBusInterfaceVTable. + * + * Returns: A #GVariant with the value for @property_name or %NULL if + * @error is set. If the returned #GVariant is floating, it is + * consumed - otherwise its reference count is decreased by one. + * + * Since: 2.26 + */ +typedef GVariant *(*GDBusInterfaceGetPropertyFunc) (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer user_data); + +/** + * GDBusInterfaceSetPropertyFunc: + * @connection: A #GDBusConnection. + * @sender: The unique bus name of the remote caller. + * @object_path: The object path that the method was invoked on. + * @interface_name: The D-Bus interface name for the property. + * @property_name: The name of the property to get the value of. + * @value: The value to set the property to. + * @error: Return location for error. + * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_object(). + * + * The type of the @set_property function in #GDBusInterfaceVTable. + * + * Returns: %TRUE if the property was set to @value, %FALSE if @error is set. + * + * Since: 2.26 + */ +typedef gboolean (*GDBusInterfaceSetPropertyFunc) (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer user_data); + +/** + * GDBusInterfaceVTable: + * @method_call: Function for handling incoming method calls. + * @get_property: Function for getting a property. + * @set_property: Function for setting a property. + * + * Virtual table for handling properties and method calls for a D-Bus + * interface. + * + * Since 2.38, if you want to handle getting/setting D-Bus properties + * asynchronously, give %NULL as your get_property() or set_property() + * function. The D-Bus call will be directed to your @method_call function, + * with the provided @interface_name set to "org.freedesktop.DBus.Properties". + * + * Ownership of the #GDBusMethodInvocation object passed to the + * method_call() function is transferred to your handler; you must + * call one of the methods of #GDBusMethodInvocation to return a reply + * (possibly empty), or an error. These functions also take ownership + * of the passed-in invocation object, so unless the invocation + * object has otherwise been referenced, it will be then be freed. + * Calling one of these functions may be done within your + * method_call() implementation but it also can be done at a later + * point to handle the method asynchronously. + * + * The usual checks on the validity of the calls is performed. For + * `Get` calls, an error is automatically returned if the property does + * not exist or the permissions do not allow access. The same checks are + * performed for `Set` calls, and the provided value is also checked for + * being the correct type. + * + * For both `Get` and `Set` calls, the #GDBusMethodInvocation + * passed to the @method_call handler can be queried with + * g_dbus_method_invocation_get_property_info() to get a pointer + * to the #GDBusPropertyInfo of the property. + * + * If you have readable properties specified in your interface info, + * you must ensure that you either provide a non-%NULL @get_property() + * function or provide implementations of both the `Get` and `GetAll` + * methods on org.freedesktop.DBus.Properties interface in your @method_call + * function. Note that the required return type of the `Get` call is + * `(v)`, not the type of the property. `GetAll` expects a return value + * of type `a{sv}`. + * + * If you have writable properties specified in your interface info, + * you must ensure that you either provide a non-%NULL @set_property() + * function or provide an implementation of the `Set` call. If implementing + * the call, you must return the value of type %G_VARIANT_TYPE_UNIT. + * + * Since: 2.26 + */ +struct _GDBusInterfaceVTable +{ + GDBusInterfaceMethodCallFunc method_call; + GDBusInterfaceGetPropertyFunc get_property; + GDBusInterfaceSetPropertyFunc set_property; + + /*< private >*/ + /* Padding for future expansion - also remember to update + * gdbusconnection.c:_g_dbus_interface_vtable_copy() when + * changing this. + */ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +guint g_dbus_connection_register_object (GDBusConnection *connection, + const gchar *object_path, + GDBusInterfaceInfo *interface_info, + const GDBusInterfaceVTable *vtable, + gpointer user_data, + GDestroyNotify user_data_free_func, + GError **error); +GLIB_AVAILABLE_IN_2_46 +guint g_dbus_connection_register_object_with_closures (GDBusConnection *connection, + const gchar *object_path, + GDBusInterfaceInfo *interface_info, + GClosure *method_call_closure, + GClosure *get_property_closure, + GClosure *set_property_closure, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_unregister_object (GDBusConnection *connection, + guint registration_id); + +/* ---------------------------------------------------------------------------------------------------- */ + +/** + * GDBusSubtreeEnumerateFunc: + * @connection: A #GDBusConnection. + * @sender: The unique bus name of the remote caller. + * @object_path: The object path that was registered with g_dbus_connection_register_subtree(). + * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_subtree(). + * + * The type of the @enumerate function in #GDBusSubtreeVTable. + * + * This function is called when generating introspection data and also + * when preparing to dispatch incoming messages in the event that the + * %G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is not + * specified (ie: to verify that the object path is valid). + * + * Hierarchies are not supported; the items that you return should not + * contain the `/` character. + * + * The return value will be freed with g_strfreev(). + * + * Returns: (array zero-terminated=1) (transfer full): A newly allocated array of strings for node names that are children of @object_path. + * + * Since: 2.26 + */ +typedef gchar** (*GDBusSubtreeEnumerateFunc) (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + gpointer user_data); + +/** + * GDBusSubtreeIntrospectFunc: + * @connection: A #GDBusConnection. + * @sender: The unique bus name of the remote caller. + * @object_path: The object path that was registered with g_dbus_connection_register_subtree(). + * @node: A node that is a child of @object_path (relative to @object_path) or %NULL for the root of the subtree. + * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_subtree(). + * + * The type of the @introspect function in #GDBusSubtreeVTable. + * + * Subtrees are flat. @node, if non-%NULL, is always exactly one + * segment of the object path (ie: it never contains a slash). + * + * This function should return %NULL to indicate that there is no object + * at this node. + * + * If this function returns non-%NULL, the return value is expected to + * be a %NULL-terminated array of pointers to #GDBusInterfaceInfo + * structures describing the interfaces implemented by @node. This + * array will have g_dbus_interface_info_unref() called on each item + * before being freed with g_free(). + * + * The difference between returning %NULL and an array containing zero + * items is that the standard DBus interfaces will returned to the + * remote introspector in the empty array case, but not in the %NULL + * case. + * + * Returns: (array zero-terminated=1) (nullable) (transfer full): A %NULL-terminated array of pointers to #GDBusInterfaceInfo, or %NULL. + * + * Since: 2.26 + */ +typedef GDBusInterfaceInfo ** (*GDBusSubtreeIntrospectFunc) (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *node, + gpointer user_data); + +/** + * GDBusSubtreeDispatchFunc: + * @connection: A #GDBusConnection. + * @sender: The unique bus name of the remote caller. + * @object_path: The object path that was registered with g_dbus_connection_register_subtree(). + * @interface_name: The D-Bus interface name that the method call or property access is for. + * @node: A node that is a child of @object_path (relative to @object_path) or %NULL for the root of the subtree. + * @out_user_data: (nullable) (not optional): Return location for user data to pass to functions in the returned #GDBusInterfaceVTable. + * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_subtree(). + * + * The type of the @dispatch function in #GDBusSubtreeVTable. + * + * Subtrees are flat. @node, if non-%NULL, is always exactly one + * segment of the object path (ie: it never contains a slash). + * + * Returns: (nullable): A #GDBusInterfaceVTable or %NULL if you don't want to handle the methods. + * + * Since: 2.26 + */ +typedef const GDBusInterfaceVTable * (*GDBusSubtreeDispatchFunc) (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *node, + gpointer *out_user_data, + gpointer user_data); + +/** + * GDBusSubtreeVTable: + * @enumerate: Function for enumerating child nodes. + * @introspect: Function for introspecting a child node. + * @dispatch: Function for dispatching a remote call on a child node. + * + * Virtual table for handling subtrees registered with g_dbus_connection_register_subtree(). + * + * Since: 2.26 + */ +struct _GDBusSubtreeVTable +{ + GDBusSubtreeEnumerateFunc enumerate; + GDBusSubtreeIntrospectFunc introspect; + GDBusSubtreeDispatchFunc dispatch; + + /*< private >*/ + /* Padding for future expansion - also remember to update + * gdbusconnection.c:_g_dbus_subtree_vtable_copy() when + * changing this. + */ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +guint g_dbus_connection_register_subtree (GDBusConnection *connection, + const gchar *object_path, + const GDBusSubtreeVTable *vtable, + GDBusSubtreeFlags flags, + gpointer user_data, + GDestroyNotify user_data_free_func, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_connection_unregister_subtree (GDBusConnection *connection, + guint registration_id); + +/* ---------------------------------------------------------------------------------------------------- */ + +/** + * GDBusSignalCallback: + * @connection: A #GDBusConnection. + * @sender_name: (nullable): The unique bus name of the sender of the signal, + or %NULL on a peer-to-peer D-Bus connection. + * @object_path: The object path that the signal was emitted on. + * @interface_name: The name of the interface. + * @signal_name: The name of the signal. + * @parameters: A #GVariant tuple with parameters for the signal. + * @user_data: User data passed when subscribing to the signal. + * + * Signature for callback function used in g_dbus_connection_signal_subscribe(). + * + * Since: 2.26 + */ +typedef void (*GDBusSignalCallback) (GDBusConnection *connection, + const gchar *sender_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *signal_name, + GVariant *parameters, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +guint g_dbus_connection_signal_subscribe (GDBusConnection *connection, + const gchar *sender, + const gchar *interface_name, + const gchar *member, + const gchar *object_path, + const gchar *arg0, + GDBusSignalFlags flags, + GDBusSignalCallback callback, + gpointer user_data, + GDestroyNotify user_data_free_func); +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_signal_unsubscribe (GDBusConnection *connection, + guint subscription_id); + +/* ---------------------------------------------------------------------------------------------------- */ + +/** + * GDBusMessageFilterFunction: + * @connection: (transfer none): A #GDBusConnection. + * @message: (transfer full): A locked #GDBusMessage that the filter function takes ownership of. + * @incoming: %TRUE if it is a message received from the other peer, %FALSE if it is + * a message to be sent to the other peer. + * @user_data: User data passed when adding the filter. + * + * Signature for function used in g_dbus_connection_add_filter(). + * + * A filter function is passed a #GDBusMessage and expected to return + * a #GDBusMessage too. Passive filter functions that don't modify the + * message can simply return the @message object: + * |[ + * static GDBusMessage * + * passive_filter (GDBusConnection *connection + * GDBusMessage *message, + * gboolean incoming, + * gpointer user_data) + * { + * // inspect @message + * return message; + * } + * ]| + * Filter functions that wants to drop a message can simply return %NULL: + * |[ + * static GDBusMessage * + * drop_filter (GDBusConnection *connection + * GDBusMessage *message, + * gboolean incoming, + * gpointer user_data) + * { + * if (should_drop_message) + * { + * g_object_unref (message); + * message = NULL; + * } + * return message; + * } + * ]| + * Finally, a filter function may modify a message by copying it: + * |[ + * static GDBusMessage * + * modifying_filter (GDBusConnection *connection + * GDBusMessage *message, + * gboolean incoming, + * gpointer user_data) + * { + * GDBusMessage *copy; + * GError *error; + * + * error = NULL; + * copy = g_dbus_message_copy (message, &error); + * // handle @error being set + * g_object_unref (message); + * + * // modify @copy + * + * return copy; + * } + * ]| + * If the returned #GDBusMessage is different from @message and cannot + * be sent on @connection (it could use features, such as file + * descriptors, not compatible with @connection), then a warning is + * logged to standard error. Applications can + * check this ahead of time using g_dbus_message_to_blob() passing a + * #GDBusCapabilityFlags value obtained from @connection. + * + * Returns: (transfer full) (nullable): A #GDBusMessage that will be freed with + * g_object_unref() or %NULL to drop the message. Passive filter + * functions can simply return the passed @message object. + * + * Since: 2.26 + */ +typedef GDBusMessage *(*GDBusMessageFilterFunction) (GDBusConnection *connection, + GDBusMessage *message, + gboolean incoming, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +guint g_dbus_connection_add_filter (GDBusConnection *connection, + GDBusMessageFilterFunction filter_function, + gpointer user_data, + GDestroyNotify user_data_free_func); + +GLIB_AVAILABLE_IN_ALL +void g_dbus_connection_remove_filter (GDBusConnection *connection, + guint filter_id); + +/* ---------------------------------------------------------------------------------------------------- */ + + +G_END_DECLS + +#endif /* __G_DBUS_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbuserror.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbuserror.h new file mode 100644 index 0000000..d35d07b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbuserror.h @@ -0,0 +1,111 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_ERROR_H__ +#define __G_DBUS_ERROR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_DBUS_ERROR: + * + * Error domain for errors generated by a remote message bus. Errors + * in this domain will be from the #GDBusError enumeration. See + * #GError for more information on error domains. + * + * Note that this error domain is intended only for + * returning errors from a remote message bus process. Errors + * generated locally in-process by e.g. #GDBusConnection should use the + * %G_IO_ERROR domain. + * + * Since: 2.26 + */ +#define G_DBUS_ERROR g_dbus_error_quark() + +GLIB_AVAILABLE_IN_ALL +GQuark g_dbus_error_quark (void); + +/* Used by applications to check, get and strip the D-Bus error name */ +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_error_is_remote_error (const GError *error); +GLIB_AVAILABLE_IN_ALL +gchar *g_dbus_error_get_remote_error (const GError *error); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_error_strip_remote_error (GError *error); + +/** + * GDBusErrorEntry: + * @error_code: An error code. + * @dbus_error_name: The D-Bus error name to associate with @error_code. + * + * Struct used in g_dbus_error_register_error_domain(). + * + * Since: 2.26 + */ +struct _GDBusErrorEntry +{ + gint error_code; + const gchar *dbus_error_name; +}; + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_error_register_error (GQuark error_domain, + gint error_code, + const gchar *dbus_error_name); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_error_unregister_error (GQuark error_domain, + gint error_code, + const gchar *dbus_error_name); +GLIB_AVAILABLE_IN_ALL +void g_dbus_error_register_error_domain (const gchar *error_domain_quark_name, + volatile gsize *quark_volatile, + const GDBusErrorEntry *entries, + guint num_entries); + +/* Only used by object mappings to map back and forth to GError */ +GLIB_AVAILABLE_IN_ALL +GError *g_dbus_error_new_for_dbus_error (const gchar *dbus_error_name, + const gchar *dbus_error_message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_error_set_dbus_error (GError **error, + const gchar *dbus_error_name, + const gchar *dbus_error_message, + const gchar *format, + ...) G_GNUC_PRINTF(4, 5); +GLIB_AVAILABLE_IN_ALL +void g_dbus_error_set_dbus_error_valist (GError **error, + const gchar *dbus_error_name, + const gchar *dbus_error_message, + const gchar *format, + va_list var_args) G_GNUC_PRINTF(4, 0); +GLIB_AVAILABLE_IN_ALL +gchar *g_dbus_error_encode_gerror (const GError *error); + +G_END_DECLS + +#endif /* __G_DBUS_ERROR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusinterface.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusinterface.h new file mode 100644 index 0000000..83e524b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusinterface.h @@ -0,0 +1,83 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_INTERFACE_H__ +#define __G_DBUS_INTERFACE_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_INTERFACE (g_dbus_interface_get_type()) +#define G_DBUS_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_INTERFACE, GDBusInterface)) +#define G_IS_DBUS_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_INTERFACE)) +#define G_DBUS_INTERFACE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), G_TYPE_DBUS_INTERFACE, GDBusInterfaceIface)) + +/** + * GDBusInterface: + * + * Base type for D-Bus interfaces. + * + * Since: 2.30 + */ + +typedef struct _GDBusInterfaceIface GDBusInterfaceIface; + +/** + * GDBusInterfaceIface: + * @parent_iface: The parent interface. + * @get_info: Returns a #GDBusInterfaceInfo. See g_dbus_interface_get_info(). + * @get_object: Gets the enclosing #GDBusObject. See g_dbus_interface_get_object(). + * @set_object: Sets the enclosing #GDBusObject. See g_dbus_interface_set_object(). + * @dup_object: Gets a reference to the enclosing #GDBusObject. See g_dbus_interface_dup_object(). Added in 2.32. + * + * Base type for D-Bus interfaces. + * + * Since: 2.30 + */ +struct _GDBusInterfaceIface +{ + GTypeInterface parent_iface; + + /* Virtual Functions */ + GDBusInterfaceInfo *(*get_info) (GDBusInterface *interface_); + GDBusObject *(*get_object) (GDBusInterface *interface_); + void (*set_object) (GDBusInterface *interface_, + GDBusObject *object); + GDBusObject *(*dup_object) (GDBusInterface *interface_); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_interface_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusInterfaceInfo *g_dbus_interface_get_info (GDBusInterface *interface_); +GLIB_AVAILABLE_IN_ALL +GDBusObject *g_dbus_interface_get_object (GDBusInterface *interface_); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_set_object (GDBusInterface *interface_, + GDBusObject *object); +GLIB_AVAILABLE_IN_2_32 +GDBusObject *g_dbus_interface_dup_object (GDBusInterface *interface_); + +G_END_DECLS + +#endif /* __G_DBUS_INTERFACE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusinterfaceskeleton.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusinterfaceskeleton.h new file mode 100644 index 0000000..bc13b74 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusinterfaceskeleton.h @@ -0,0 +1,129 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_INTERFACE_SKELETON_H__ +#define __G_DBUS_INTERFACE_SKELETON_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_INTERFACE_SKELETON (g_dbus_interface_skeleton_get_type ()) +#define G_DBUS_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeleton)) +#define G_DBUS_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeletonClass)) +#define G_DBUS_INTERFACE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeletonClass)) +#define G_IS_DBUS_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_INTERFACE_SKELETON)) +#define G_IS_DBUS_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_INTERFACE_SKELETON)) + +typedef struct _GDBusInterfaceSkeletonClass GDBusInterfaceSkeletonClass; +typedef struct _GDBusInterfaceSkeletonPrivate GDBusInterfaceSkeletonPrivate; + +/** + * GDBusInterfaceSkeleton: + * + * The #GDBusInterfaceSkeleton structure contains private data and should + * only be accessed using the provided API. + * + * Since: 2.30 + */ +struct _GDBusInterfaceSkeleton +{ + /*< private >*/ + GObject parent_instance; + GDBusInterfaceSkeletonPrivate *priv; +}; + +/** + * GDBusInterfaceSkeletonClass: + * @parent_class: The parent class. + * @get_info: Returns a #GDBusInterfaceInfo. See g_dbus_interface_skeleton_get_info() for details. + * @get_vtable: Returns a #GDBusInterfaceVTable. See g_dbus_interface_skeleton_get_vtable() for details. + * @get_properties: Returns a #GVariant with all properties. See g_dbus_interface_skeleton_get_properties(). + * @flush: Emits outstanding changes, if any. See g_dbus_interface_skeleton_flush(). + * @g_authorize_method: Signal class handler for the #GDBusInterfaceSkeleton::g-authorize-method signal. + * + * Class structure for #GDBusInterfaceSkeleton. + * + * Since: 2.30 + */ +struct _GDBusInterfaceSkeletonClass +{ + GObjectClass parent_class; + + /* Virtual Functions */ + GDBusInterfaceInfo *(*get_info) (GDBusInterfaceSkeleton *interface_); + GDBusInterfaceVTable *(*get_vtable) (GDBusInterfaceSkeleton *interface_); + GVariant *(*get_properties) (GDBusInterfaceSkeleton *interface_); + void (*flush) (GDBusInterfaceSkeleton *interface_); + + /*< private >*/ + gpointer vfunc_padding[8]; + /*< public >*/ + + /* Signals */ + gboolean (*g_authorize_method) (GDBusInterfaceSkeleton *interface_, + GDBusMethodInvocation *invocation); + + /*< private >*/ + gpointer signal_padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_interface_skeleton_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusInterfaceSkeletonFlags g_dbus_interface_skeleton_get_flags (GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_skeleton_set_flags (GDBusInterfaceSkeleton *interface_, + GDBusInterfaceSkeletonFlags flags); +GLIB_AVAILABLE_IN_ALL +GDBusInterfaceInfo *g_dbus_interface_skeleton_get_info (GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +GDBusInterfaceVTable *g_dbus_interface_skeleton_get_vtable (GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_interface_skeleton_get_properties (GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_skeleton_flush (GDBusInterfaceSkeleton *interface_); + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_interface_skeleton_export (GDBusInterfaceSkeleton *interface_, + GDBusConnection *connection, + const gchar *object_path, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_skeleton_unexport (GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_skeleton_unexport_from_connection (GDBusInterfaceSkeleton *interface_, + GDBusConnection *connection); + +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_interface_skeleton_get_connection (GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +GList *g_dbus_interface_skeleton_get_connections (GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_interface_skeleton_has_connection (GDBusInterfaceSkeleton *interface_, + GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_interface_skeleton_get_object_path (GDBusInterfaceSkeleton *interface_); + +G_END_DECLS + +#endif /* __G_DBUS_INTERFACE_SKELETON_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusintrospection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusintrospection.h new file mode 100644 index 0000000..e2fbf5e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusintrospection.h @@ -0,0 +1,327 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_INTROSPECTION_H__ +#define __G_DBUS_INTROSPECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GDBusAnnotationInfo: + * @ref_count: The reference count or -1 if statically allocated. + * @key: The name of the annotation, e.g. "org.freedesktop.DBus.Deprecated". + * @value: The value of the annotation. + * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. + * + * Information about an annotation. + * + * Since: 2.26 + */ +struct _GDBusAnnotationInfo +{ + /*< public >*/ + gint ref_count; /* (atomic) */ + gchar *key; + gchar *value; + GDBusAnnotationInfo **annotations; +}; + +/** + * GDBusArgInfo: + * @ref_count: The reference count or -1 if statically allocated. + * @name: Name of the argument, e.g. @unix_user_id. + * @signature: D-Bus signature of the argument (a single complete type). + * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. + * + * Information about an argument for a method or a signal. + * + * Since: 2.26 + */ +struct _GDBusArgInfo +{ + /*< public >*/ + gint ref_count; /* (atomic) */ + gchar *name; + gchar *signature; + GDBusAnnotationInfo **annotations; +}; + +/** + * GDBusMethodInfo: + * @ref_count: The reference count or -1 if statically allocated. + * @name: The name of the D-Bus method, e.g. @RequestName. + * @in_args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no in arguments. + * @out_args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no out arguments. + * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. + * + * Information about a method on an D-Bus interface. + * + * Since: 2.26 + */ +struct _GDBusMethodInfo +{ + /*< public >*/ + gint ref_count; /* (atomic) */ + gchar *name; + GDBusArgInfo **in_args; + GDBusArgInfo **out_args; + GDBusAnnotationInfo **annotations; +}; + +/** + * GDBusSignalInfo: + * @ref_count: The reference count or -1 if statically allocated. + * @name: The name of the D-Bus signal, e.g. "NameOwnerChanged". + * @args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no arguments. + * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. + * + * Information about a signal on a D-Bus interface. + * + * Since: 2.26 + */ +struct _GDBusSignalInfo +{ + /*< public >*/ + gint ref_count; /* (atomic) */ + gchar *name; + GDBusArgInfo **args; + GDBusAnnotationInfo **annotations; +}; + +/** + * GDBusPropertyInfo: + * @ref_count: The reference count or -1 if statically allocated. + * @name: The name of the D-Bus property, e.g. "SupportedFilesystems". + * @signature: The D-Bus signature of the property (a single complete type). + * @flags: Access control flags for the property. + * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. + * + * Information about a D-Bus property on a D-Bus interface. + * + * Since: 2.26 + */ +struct _GDBusPropertyInfo +{ + /*< public >*/ + gint ref_count; /* (atomic) */ + gchar *name; + gchar *signature; + GDBusPropertyInfoFlags flags; + GDBusAnnotationInfo **annotations; +}; + +/** + * GDBusInterfaceInfo: + * @ref_count: The reference count or -1 if statically allocated. + * @name: The name of the D-Bus interface, e.g. "org.freedesktop.DBus.Properties". + * @methods: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusMethodInfo structures or %NULL if there are no methods. + * @signals: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusSignalInfo structures or %NULL if there are no signals. + * @properties: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusPropertyInfo structures or %NULL if there are no properties. + * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. + * + * Information about a D-Bus interface. + * + * Since: 2.26 + */ +struct _GDBusInterfaceInfo +{ + /*< public >*/ + gint ref_count; /* (atomic) */ + gchar *name; + GDBusMethodInfo **methods; + GDBusSignalInfo **signals; + GDBusPropertyInfo **properties; + GDBusAnnotationInfo **annotations; +}; + +/** + * GDBusNodeInfo: + * @ref_count: The reference count or -1 if statically allocated. + * @path: The path of the node or %NULL if omitted. Note that this may be a relative path. See the D-Bus specification for more details. + * @interfaces: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusInterfaceInfo structures or %NULL if there are no interfaces. + * @nodes: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusNodeInfo structures or %NULL if there are no nodes. + * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations. + * + * Information about nodes in a remote object hierarchy. + * + * Since: 2.26 + */ +struct _GDBusNodeInfo +{ + /*< public >*/ + gint ref_count; /* (atomic) */ + gchar *path; + GDBusInterfaceInfo **interfaces; + GDBusNodeInfo **nodes; + GDBusAnnotationInfo **annotations; +}; + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_annotation_info_lookup (GDBusAnnotationInfo **annotations, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +GDBusMethodInfo *g_dbus_interface_info_lookup_method (GDBusInterfaceInfo *info, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +GDBusSignalInfo *g_dbus_interface_info_lookup_signal (GDBusInterfaceInfo *info, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +GDBusPropertyInfo *g_dbus_interface_info_lookup_property (GDBusInterfaceInfo *info, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_info_cache_build (GDBusInterfaceInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_info_cache_release (GDBusInterfaceInfo *info); + +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_info_generate_xml (GDBusInterfaceInfo *info, + guint indent, + GString *string_builder); + +GLIB_AVAILABLE_IN_ALL +GDBusNodeInfo *g_dbus_node_info_new_for_xml (const gchar *xml_data, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusInterfaceInfo *g_dbus_node_info_lookup_interface (GDBusNodeInfo *info, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +void g_dbus_node_info_generate_xml (GDBusNodeInfo *info, + guint indent, + GString *string_builder); + +GLIB_AVAILABLE_IN_ALL +GDBusNodeInfo *g_dbus_node_info_ref (GDBusNodeInfo *info); +GLIB_AVAILABLE_IN_ALL +GDBusInterfaceInfo *g_dbus_interface_info_ref (GDBusInterfaceInfo *info); +GLIB_AVAILABLE_IN_ALL +GDBusMethodInfo *g_dbus_method_info_ref (GDBusMethodInfo *info); +GLIB_AVAILABLE_IN_ALL +GDBusSignalInfo *g_dbus_signal_info_ref (GDBusSignalInfo *info); +GLIB_AVAILABLE_IN_ALL +GDBusPropertyInfo *g_dbus_property_info_ref (GDBusPropertyInfo *info); +GLIB_AVAILABLE_IN_ALL +GDBusArgInfo *g_dbus_arg_info_ref (GDBusArgInfo *info); +GLIB_AVAILABLE_IN_ALL +GDBusAnnotationInfo *g_dbus_annotation_info_ref (GDBusAnnotationInfo *info); + +GLIB_AVAILABLE_IN_ALL +void g_dbus_node_info_unref (GDBusNodeInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_dbus_interface_info_unref (GDBusInterfaceInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_info_unref (GDBusMethodInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_dbus_signal_info_unref (GDBusSignalInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_dbus_property_info_unref (GDBusPropertyInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_dbus_arg_info_unref (GDBusArgInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_dbus_annotation_info_unref (GDBusAnnotationInfo *info); + +/** + * G_TYPE_DBUS_NODE_INFO: + * + * The #GType for a boxed type holding a #GDBusNodeInfo. + * + * Since: 2.26 + */ +#define G_TYPE_DBUS_NODE_INFO (g_dbus_node_info_get_type ()) + +/** + * G_TYPE_DBUS_INTERFACE_INFO: + * + * The #GType for a boxed type holding a #GDBusInterfaceInfo. + * + * Since: 2.26 + */ +#define G_TYPE_DBUS_INTERFACE_INFO (g_dbus_interface_info_get_type ()) + +/** + * G_TYPE_DBUS_METHOD_INFO: + * + * The #GType for a boxed type holding a #GDBusMethodInfo. + * + * Since: 2.26 + */ +#define G_TYPE_DBUS_METHOD_INFO (g_dbus_method_info_get_type ()) + +/** + * G_TYPE_DBUS_SIGNAL_INFO: + * + * The #GType for a boxed type holding a #GDBusSignalInfo. + * + * Since: 2.26 + */ +#define G_TYPE_DBUS_SIGNAL_INFO (g_dbus_signal_info_get_type ()) + +/** + * G_TYPE_DBUS_PROPERTY_INFO: + * + * The #GType for a boxed type holding a #GDBusPropertyInfo. + * + * Since: 2.26 + */ +#define G_TYPE_DBUS_PROPERTY_INFO (g_dbus_property_info_get_type ()) + +/** + * G_TYPE_DBUS_ARG_INFO: + * + * The #GType for a boxed type holding a #GDBusArgInfo. + * + * Since: 2.26 + */ +#define G_TYPE_DBUS_ARG_INFO (g_dbus_arg_info_get_type ()) + +/** + * G_TYPE_DBUS_ANNOTATION_INFO: + * + * The #GType for a boxed type holding a #GDBusAnnotationInfo. + * + * Since: 2.26 + */ +#define G_TYPE_DBUS_ANNOTATION_INFO (g_dbus_annotation_info_get_type ()) + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_node_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_dbus_interface_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_dbus_method_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_dbus_signal_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_dbus_property_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_dbus_arg_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_dbus_annotation_info_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __G_DBUS_INTROSPECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmenumodel.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmenumodel.h new file mode 100644 index 0000000..5e9a9ce --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmenumodel.h @@ -0,0 +1,47 @@ +/* + * Copyright © 2011 Canonical Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_DBUS_MENU_MODEL_H__ +#define __G_DBUS_MENU_MODEL_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_MENU_MODEL (g_dbus_menu_model_get_type ()) +#define G_DBUS_MENU_MODEL(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_DBUS_MENU_MODEL, GDBusMenuModel)) +#define G_IS_DBUS_MENU_MODEL(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_DBUS_MENU_MODEL)) + +typedef struct _GDBusMenuModel GDBusMenuModel; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_menu_model_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GDBusMenuModel * g_dbus_menu_model_get (GDBusConnection *connection, + const gchar *bus_name, + const gchar *object_path); + +G_END_DECLS + +#endif /* __G_DBUS_MENU_MODEL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmessage.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmessage.h new file mode 100644 index 0000000..84e3c5f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmessage.h @@ -0,0 +1,204 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_MESSAGE_H__ +#define __G_DBUS_MESSAGE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_MESSAGE (g_dbus_message_get_type ()) +#define G_DBUS_MESSAGE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_MESSAGE, GDBusMessage)) +#define G_IS_DBUS_MESSAGE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_MESSAGE)) + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_message_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new (void); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new_signal (const gchar *path, + const gchar *interface_, + const gchar *signal); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new_method_call (const gchar *name, + const gchar *path, + const gchar *interface_, + const gchar *method); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new_method_reply (GDBusMessage *method_call_message); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new_method_error (GDBusMessage *method_call_message, + const gchar *error_name, + const gchar *error_message_format, + ...) G_GNUC_PRINTF(3, 4); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new_method_error_valist (GDBusMessage *method_call_message, + const gchar *error_name, + const gchar *error_message_format, + va_list var_args); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new_method_error_literal (GDBusMessage *method_call_message, + const gchar *error_name, + const gchar *error_message); +GLIB_AVAILABLE_IN_ALL +gchar *g_dbus_message_print (GDBusMessage *message, + guint indent); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_message_get_locked (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_lock (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_copy (GDBusMessage *message, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusMessageByteOrder g_dbus_message_get_byte_order (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_byte_order (GDBusMessage *message, + GDBusMessageByteOrder byte_order); + +GLIB_AVAILABLE_IN_ALL +GDBusMessageType g_dbus_message_get_message_type (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_message_type (GDBusMessage *message, + GDBusMessageType type); +GLIB_AVAILABLE_IN_ALL +GDBusMessageFlags g_dbus_message_get_flags (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_flags (GDBusMessage *message, + GDBusMessageFlags flags); +GLIB_AVAILABLE_IN_ALL +guint32 g_dbus_message_get_serial (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_serial (GDBusMessage *message, + guint32 serial); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_message_get_header (GDBusMessage *message, + GDBusMessageHeaderField header_field); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_header (GDBusMessage *message, + GDBusMessageHeaderField header_field, + GVariant *value); +GLIB_AVAILABLE_IN_ALL +guchar *g_dbus_message_get_header_fields (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_message_get_body (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_body (GDBusMessage *message, + GVariant *body); + +#ifdef G_OS_UNIX + +GLIB_AVAILABLE_IN_ALL +GUnixFDList *g_dbus_message_get_unix_fd_list (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_unix_fd_list (GDBusMessage *message, + GUnixFDList *fd_list); + +#endif /* G_OS_UNIX */ + +GLIB_AVAILABLE_IN_ALL +guint32 g_dbus_message_get_reply_serial (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_reply_serial (GDBusMessage *message, + guint32 value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_interface (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_interface (GDBusMessage *message, + const gchar *value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_member (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_member (GDBusMessage *message, + const gchar *value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_path (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_path (GDBusMessage *message, + const gchar *value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_sender (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_sender (GDBusMessage *message, + const gchar *value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_destination (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_destination (GDBusMessage *message, + const gchar *value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_error_name (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_error_name (GDBusMessage *message, + const gchar *value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_signature (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_signature (GDBusMessage *message, + const gchar *value); + +GLIB_AVAILABLE_IN_ALL +guint32 g_dbus_message_get_num_unix_fds (GDBusMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_message_set_num_unix_fds (GDBusMessage *message, + guint32 value); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_message_get_arg0 (GDBusMessage *message); + + +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_message_new_from_blob (guchar *blob, + gsize blob_len, + GDBusCapabilityFlags capabilities, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gssize g_dbus_message_bytes_needed (guchar *blob, + gsize blob_len, + GError **error); + +GLIB_AVAILABLE_IN_ALL +guchar *g_dbus_message_to_blob (GDBusMessage *message, + gsize *out_size, + GDBusCapabilityFlags capabilities, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_message_to_gerror (GDBusMessage *message, + GError **error); + +G_END_DECLS + +#endif /* __G_DBUS_MESSAGE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmethodinvocation.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmethodinvocation.h new file mode 100644 index 0000000..c5751cc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusmethodinvocation.h @@ -0,0 +1,136 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_METHOD_INVOCATION_H__ +#define __G_DBUS_METHOD_INVOCATION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_METHOD_INVOCATION (g_dbus_method_invocation_get_type ()) +#define G_DBUS_METHOD_INVOCATION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_METHOD_INVOCATION, GDBusMethodInvocation)) +#define G_IS_DBUS_METHOD_INVOCATION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_METHOD_INVOCATION)) + +/** + * G_DBUS_METHOD_INVOCATION_HANDLED: + * + * The value returned by handlers of the signals generated by + * the `gdbus-codegen` tool to indicate that a method call has been + * handled by an implementation. It is equal to %TRUE, but using + * this macro is sometimes more readable. + * + * In code that needs to be backwards-compatible with older GLib, + * use %TRUE instead, often written like this: + * + * |[ + * g_dbus_method_invocation_return_error (invocation, ...); + * return TRUE; // handled + * ]| + * + * Since: 2.68 + */ +#define G_DBUS_METHOD_INVOCATION_HANDLED TRUE GLIB_AVAILABLE_MACRO_IN_2_68 + +/** + * G_DBUS_METHOD_INVOCATION_UNHANDLED: + * + * The value returned by handlers of the signals generated by + * the `gdbus-codegen` tool to indicate that a method call has not been + * handled by an implementation. It is equal to %FALSE, but using + * this macro is sometimes more readable. + * + * In code that needs to be backwards-compatible with older GLib, + * use %FALSE instead. + * + * Since: 2.68 + */ +#define G_DBUS_METHOD_INVOCATION_UNHANDLED FALSE GLIB_AVAILABLE_MACRO_IN_2_68 + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_method_invocation_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_method_invocation_get_sender (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_method_invocation_get_object_path (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_method_invocation_get_interface_name (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_method_invocation_get_method_name (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +const GDBusMethodInfo *g_dbus_method_invocation_get_method_info (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_2_38 +const GDBusPropertyInfo *g_dbus_method_invocation_get_property_info (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_method_invocation_get_connection (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +GDBusMessage *g_dbus_method_invocation_get_message (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_method_invocation_get_parameters (GDBusMethodInvocation *invocation); +GLIB_AVAILABLE_IN_ALL +gpointer g_dbus_method_invocation_get_user_data (GDBusMethodInvocation *invocation); + +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_return_value (GDBusMethodInvocation *invocation, + GVariant *parameters); +#ifdef G_OS_UNIX +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_return_value_with_unix_fd_list (GDBusMethodInvocation *invocation, + GVariant *parameters, + GUnixFDList *fd_list); +#endif /* G_OS_UNIX */ +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_return_error (GDBusMethodInvocation *invocation, + GQuark domain, + gint code, + const gchar *format, + ...) G_GNUC_PRINTF(4, 5); +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_return_error_valist (GDBusMethodInvocation *invocation, + GQuark domain, + gint code, + const gchar *format, + va_list var_args) + G_GNUC_PRINTF(4, 0); +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_return_error_literal (GDBusMethodInvocation *invocation, + GQuark domain, + gint code, + const gchar *message); +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_return_gerror (GDBusMethodInvocation *invocation, + const GError *error); +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_take_error (GDBusMethodInvocation *invocation, + GError *error); +GLIB_AVAILABLE_IN_ALL +void g_dbus_method_invocation_return_dbus_error (GDBusMethodInvocation *invocation, + const gchar *error_name, + const gchar *error_message); + +G_END_DECLS + +#endif /* __G_DBUS_METHOD_INVOCATION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusnameowning.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusnameowning.h new file mode 100644 index 0000000..fbeb961 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusnameowning.h @@ -0,0 +1,117 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_NAME_OWNING_H__ +#define __G_DBUS_NAME_OWNING_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GBusAcquiredCallback: + * @connection: The #GDBusConnection to a message bus. + * @name: The name that is requested to be owned. + * @user_data: User data passed to g_bus_own_name(). + * + * Invoked when a connection to a message bus has been obtained. + * + * Since: 2.26 + */ +typedef void (*GBusAcquiredCallback) (GDBusConnection *connection, + const gchar *name, + gpointer user_data); + +/** + * GBusNameAcquiredCallback: + * @connection: The #GDBusConnection on which to acquired the name. + * @name: The name being owned. + * @user_data: User data passed to g_bus_own_name() or g_bus_own_name_on_connection(). + * + * Invoked when the name is acquired. + * + * Since: 2.26 + */ +typedef void (*GBusNameAcquiredCallback) (GDBusConnection *connection, + const gchar *name, + gpointer user_data); + +/** + * GBusNameLostCallback: + * @connection: The #GDBusConnection on which to acquire the name or %NULL if + * the connection was disconnected. + * @name: The name being owned. + * @user_data: User data passed to g_bus_own_name() or g_bus_own_name_on_connection(). + * + * Invoked when the name is lost or @connection has been closed. + * + * Since: 2.26 + */ +typedef void (*GBusNameLostCallback) (GDBusConnection *connection, + const gchar *name, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +guint g_bus_own_name (GBusType bus_type, + const gchar *name, + GBusNameOwnerFlags flags, + GBusAcquiredCallback bus_acquired_handler, + GBusNameAcquiredCallback name_acquired_handler, + GBusNameLostCallback name_lost_handler, + gpointer user_data, + GDestroyNotify user_data_free_func); + +GLIB_AVAILABLE_IN_ALL +guint g_bus_own_name_on_connection (GDBusConnection *connection, + const gchar *name, + GBusNameOwnerFlags flags, + GBusNameAcquiredCallback name_acquired_handler, + GBusNameLostCallback name_lost_handler, + gpointer user_data, + GDestroyNotify user_data_free_func); + +GLIB_AVAILABLE_IN_ALL +guint g_bus_own_name_with_closures (GBusType bus_type, + const gchar *name, + GBusNameOwnerFlags flags, + GClosure *bus_acquired_closure, + GClosure *name_acquired_closure, + GClosure *name_lost_closure); + +GLIB_AVAILABLE_IN_ALL +guint g_bus_own_name_on_connection_with_closures ( + GDBusConnection *connection, + const gchar *name, + GBusNameOwnerFlags flags, + GClosure *name_acquired_closure, + GClosure *name_lost_closure); + +GLIB_AVAILABLE_IN_ALL +void g_bus_unown_name (guint owner_id); + +G_END_DECLS + +#endif /* __G_DBUS_NAME_OWNING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusnamewatching.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusnamewatching.h new file mode 100644 index 0000000..a344e2c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusnamewatching.h @@ -0,0 +1,104 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_NAME_WATCHING_H__ +#define __G_DBUS_NAME_WATCHING_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GBusNameAppearedCallback: + * @connection: The #GDBusConnection the name is being watched on. + * @name: The name being watched. + * @name_owner: Unique name of the owner of the name being watched. + * @user_data: User data passed to g_bus_watch_name(). + * + * Invoked when the name being watched is known to have to have an owner. + * + * Since: 2.26 + */ +typedef void (*GBusNameAppearedCallback) (GDBusConnection *connection, + const gchar *name, + const gchar *name_owner, + gpointer user_data); + +/** + * GBusNameVanishedCallback: + * @connection: The #GDBusConnection the name is being watched on, or + * %NULL. + * @name: The name being watched. + * @user_data: User data passed to g_bus_watch_name(). + * + * Invoked when the name being watched is known not to have to have an owner. + * + * This is also invoked when the #GDBusConnection on which the watch was + * established has been closed. In that case, @connection will be + * %NULL. + * + * Since: 2.26 + */ +typedef void (*GBusNameVanishedCallback) (GDBusConnection *connection, + const gchar *name, + gpointer user_data); + + +GLIB_AVAILABLE_IN_ALL +guint g_bus_watch_name (GBusType bus_type, + const gchar *name, + GBusNameWatcherFlags flags, + GBusNameAppearedCallback name_appeared_handler, + GBusNameVanishedCallback name_vanished_handler, + gpointer user_data, + GDestroyNotify user_data_free_func); +GLIB_AVAILABLE_IN_ALL +guint g_bus_watch_name_on_connection (GDBusConnection *connection, + const gchar *name, + GBusNameWatcherFlags flags, + GBusNameAppearedCallback name_appeared_handler, + GBusNameVanishedCallback name_vanished_handler, + gpointer user_data, + GDestroyNotify user_data_free_func); +GLIB_AVAILABLE_IN_ALL +guint g_bus_watch_name_with_closures (GBusType bus_type, + const gchar *name, + GBusNameWatcherFlags flags, + GClosure *name_appeared_closure, + GClosure *name_vanished_closure); +GLIB_AVAILABLE_IN_ALL +guint g_bus_watch_name_on_connection_with_closures ( + GDBusConnection *connection, + const gchar *name, + GBusNameWatcherFlags flags, + GClosure *name_appeared_closure, + GClosure *name_vanished_closure); +GLIB_AVAILABLE_IN_ALL +void g_bus_unwatch_name (guint watcher_id); + +G_END_DECLS + +#endif /* __G_DBUS_NAME_WATCHING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobject.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobject.h new file mode 100644 index 0000000..050534e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobject.h @@ -0,0 +1,80 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_OBJECT_H__ +#define __G_DBUS_OBJECT_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_OBJECT (g_dbus_object_get_type()) +#define G_DBUS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT, GDBusObject)) +#define G_IS_DBUS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT)) +#define G_DBUS_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), G_TYPE_DBUS_OBJECT, GDBusObjectIface)) + +typedef struct _GDBusObjectIface GDBusObjectIface; + +/** + * GDBusObjectIface: + * @parent_iface: The parent interface. + * @get_object_path: Returns the object path. See g_dbus_object_get_object_path(). + * @get_interfaces: Returns all interfaces. See g_dbus_object_get_interfaces(). + * @get_interface: Returns an interface by name. See g_dbus_object_get_interface(). + * @interface_added: Signal handler for the #GDBusObject::interface-added signal. + * @interface_removed: Signal handler for the #GDBusObject::interface-removed signal. + * + * Base object type for D-Bus objects. + * + * Since: 2.30 + */ +struct _GDBusObjectIface +{ + GTypeInterface parent_iface; + + /* Virtual Functions */ + const gchar *(*get_object_path) (GDBusObject *object); + GList *(*get_interfaces) (GDBusObject *object); + GDBusInterface *(*get_interface) (GDBusObject *object, + const gchar *interface_name); + + /* Signals */ + void (*interface_added) (GDBusObject *object, + GDBusInterface *interface_); + void (*interface_removed) (GDBusObject *object, + GDBusInterface *interface_); + +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_object_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_object_get_object_path (GDBusObject *object); +GLIB_AVAILABLE_IN_ALL +GList *g_dbus_object_get_interfaces (GDBusObject *object); +GLIB_AVAILABLE_IN_ALL +GDBusInterface *g_dbus_object_get_interface (GDBusObject *object, + const gchar *interface_name); + +G_END_DECLS + +#endif /* __G_DBUS_OBJECT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanager.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanager.h new file mode 100644 index 0000000..908d96c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanager.h @@ -0,0 +1,96 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_OBJECT_MANAGER_H__ +#define __G_DBUS_OBJECT_MANAGER_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_OBJECT_MANAGER (g_dbus_object_manager_get_type()) +#define G_DBUS_OBJECT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_MANAGER, GDBusObjectManager)) +#define G_IS_DBUS_OBJECT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_MANAGER)) +#define G_DBUS_OBJECT_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), G_TYPE_DBUS_OBJECT_MANAGER, GDBusObjectManagerIface)) + +typedef struct _GDBusObjectManagerIface GDBusObjectManagerIface; + +/** + * GDBusObjectManagerIface: + * @parent_iface: The parent interface. + * @get_object_path: Virtual function for g_dbus_object_manager_get_object_path(). + * @get_objects: Virtual function for g_dbus_object_manager_get_objects(). + * @get_object: Virtual function for g_dbus_object_manager_get_object(). + * @get_interface: Virtual function for g_dbus_object_manager_get_interface(). + * @object_added: Signal handler for the #GDBusObjectManager::object-added signal. + * @object_removed: Signal handler for the #GDBusObjectManager::object-removed signal. + * @interface_added: Signal handler for the #GDBusObjectManager::interface-added signal. + * @interface_removed: Signal handler for the #GDBusObjectManager::interface-removed signal. + * + * Base type for D-Bus object managers. + * + * Since: 2.30 + */ +struct _GDBusObjectManagerIface +{ + GTypeInterface parent_iface; + + /* Virtual Functions */ + const gchar *(*get_object_path) (GDBusObjectManager *manager); + GList *(*get_objects) (GDBusObjectManager *manager); + GDBusObject *(*get_object) (GDBusObjectManager *manager, + const gchar *object_path); + GDBusInterface *(*get_interface) (GDBusObjectManager *manager, + const gchar *object_path, + const gchar *interface_name); + + /* Signals */ + void (*object_added) (GDBusObjectManager *manager, + GDBusObject *object); + void (*object_removed) (GDBusObjectManager *manager, + GDBusObject *object); + + void (*interface_added) (GDBusObjectManager *manager, + GDBusObject *object, + GDBusInterface *interface_); + void (*interface_removed) (GDBusObjectManager *manager, + GDBusObject *object, + GDBusInterface *interface_); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_object_manager_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_object_manager_get_object_path (GDBusObjectManager *manager); +GLIB_AVAILABLE_IN_ALL +GList *g_dbus_object_manager_get_objects (GDBusObjectManager *manager); +GLIB_AVAILABLE_IN_ALL +GDBusObject *g_dbus_object_manager_get_object (GDBusObjectManager *manager, + const gchar *object_path); +GLIB_AVAILABLE_IN_ALL +GDBusInterface *g_dbus_object_manager_get_interface (GDBusObjectManager *manager, + const gchar *object_path, + const gchar *interface_name); + +G_END_DECLS + +#endif /* __G_DBUS_OBJECT_MANAGER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanagerclient.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanagerclient.h new file mode 100644 index 0000000..c00e682 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanagerclient.h @@ -0,0 +1,148 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_OBJECT_MANAGER_CLIENT_H__ +#define __G_DBUS_OBJECT_MANAGER_CLIENT_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_OBJECT_MANAGER_CLIENT (g_dbus_object_manager_client_get_type ()) +#define G_DBUS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, GDBusObjectManagerClient)) +#define G_DBUS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, GDBusObjectManagerClientClass)) +#define G_DBUS_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, GDBusObjectManagerClientClass)) +#define G_IS_DBUS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT)) +#define G_IS_DBUS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT)) + +typedef struct _GDBusObjectManagerClientClass GDBusObjectManagerClientClass; +typedef struct _GDBusObjectManagerClientPrivate GDBusObjectManagerClientPrivate; + +/** + * GDBusObjectManagerClient: + * + * The #GDBusObjectManagerClient structure contains private data and should + * only be accessed using the provided API. + * + * Since: 2.30 + */ +struct _GDBusObjectManagerClient +{ + /*< private >*/ + GObject parent_instance; + GDBusObjectManagerClientPrivate *priv; +}; + +/** + * GDBusObjectManagerClientClass: + * @parent_class: The parent class. + * @interface_proxy_signal: Signal class handler for the #GDBusObjectManagerClient::interface-proxy-signal signal. + * @interface_proxy_properties_changed: Signal class handler for the #GDBusObjectManagerClient::interface-proxy-properties-changed signal. + * + * Class structure for #GDBusObjectManagerClient. + * + * Since: 2.30 + */ +struct _GDBusObjectManagerClientClass +{ + GObjectClass parent_class; + + /* signals */ + void (*interface_proxy_signal) (GDBusObjectManagerClient *manager, + GDBusObjectProxy *object_proxy, + GDBusProxy *interface_proxy, + const gchar *sender_name, + const gchar *signal_name, + GVariant *parameters); + + void (*interface_proxy_properties_changed) (GDBusObjectManagerClient *manager, + GDBusObjectProxy *object_proxy, + GDBusProxy *interface_proxy, + GVariant *changed_properties, + const gchar* const *invalidated_properties); + + /*< private >*/ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_object_manager_client_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_manager_client_new (GDBusConnection *connection, + GDBusObjectManagerClientFlags flags, + const gchar *name, + const gchar *object_path, + GDBusProxyTypeFunc get_proxy_type_func, + gpointer get_proxy_type_user_data, + GDestroyNotify get_proxy_type_destroy_notify, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusObjectManager *g_dbus_object_manager_client_new_finish (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusObjectManager *g_dbus_object_manager_client_new_sync (GDBusConnection *connection, + GDBusObjectManagerClientFlags flags, + const gchar *name, + const gchar *object_path, + GDBusProxyTypeFunc get_proxy_type_func, + gpointer get_proxy_type_user_data, + GDestroyNotify get_proxy_type_destroy_notify, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_manager_client_new_for_bus (GBusType bus_type, + GDBusObjectManagerClientFlags flags, + const gchar *name, + const gchar *object_path, + GDBusProxyTypeFunc get_proxy_type_func, + gpointer get_proxy_type_user_data, + GDestroyNotify get_proxy_type_destroy_notify, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusObjectManager *g_dbus_object_manager_client_new_for_bus_finish (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusObjectManager *g_dbus_object_manager_client_new_for_bus_sync (GBusType bus_type, + GDBusObjectManagerClientFlags flags, + const gchar *name, + const gchar *object_path, + GDBusProxyTypeFunc get_proxy_type_func, + gpointer get_proxy_type_user_data, + GDestroyNotify get_proxy_type_destroy_notify, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_object_manager_client_get_connection (GDBusObjectManagerClient *manager); +GLIB_AVAILABLE_IN_ALL +GDBusObjectManagerClientFlags g_dbus_object_manager_client_get_flags (GDBusObjectManagerClient *manager); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_object_manager_client_get_name (GDBusObjectManagerClient *manager); +GLIB_AVAILABLE_IN_ALL +gchar *g_dbus_object_manager_client_get_name_owner (GDBusObjectManagerClient *manager); + +G_END_DECLS + +#endif /* __G_DBUS_OBJECT_MANAGER_CLIENT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanagerserver.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanagerserver.h new file mode 100644 index 0000000..b81823d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectmanagerserver.h @@ -0,0 +1,95 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_OBJECT_MANAGER_SERVER_H__ +#define __G_DBUS_OBJECT_MANAGER_SERVER_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_OBJECT_MANAGER_SERVER (g_dbus_object_manager_server_get_type ()) +#define G_DBUS_OBJECT_MANAGER_SERVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_MANAGER_SERVER, GDBusObjectManagerServer)) +#define G_DBUS_OBJECT_MANAGER_SERVER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_MANAGER_SERVER, GDBusObjectManagerServerClass)) +#define G_DBUS_OBJECT_MANAGER_SERVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_MANAGER_SERVER, GDBusObjectManagerServerClass)) +#define G_IS_DBUS_OBJECT_MANAGER_SERVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_MANAGER_SERVER)) +#define G_IS_DBUS_OBJECT_MANAGER_SERVER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_MANAGER_SERVER)) + +typedef struct _GDBusObjectManagerServerClass GDBusObjectManagerServerClass; +typedef struct _GDBusObjectManagerServerPrivate GDBusObjectManagerServerPrivate; + +/** + * GDBusObjectManagerServer: + * + * The #GDBusObjectManagerServer structure contains private data and should + * only be accessed using the provided API. + * + * Since: 2.30 + */ +struct _GDBusObjectManagerServer +{ + /*< private >*/ + GObject parent_instance; + GDBusObjectManagerServerPrivate *priv; +}; + +/** + * GDBusObjectManagerServerClass: + * @parent_class: The parent class. + * + * Class structure for #GDBusObjectManagerServer. + * + * Since: 2.30 + */ +struct _GDBusObjectManagerServerClass +{ + GObjectClass parent_class; + + /*< private >*/ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_object_manager_server_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusObjectManagerServer *g_dbus_object_manager_server_new (const gchar *object_path); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_object_manager_server_get_connection (GDBusObjectManagerServer *manager); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_manager_server_set_connection (GDBusObjectManagerServer *manager, + GDBusConnection *connection); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_manager_server_export (GDBusObjectManagerServer *manager, + GDBusObjectSkeleton *object); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_manager_server_export_uniquely (GDBusObjectManagerServer *manager, + GDBusObjectSkeleton *object); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_object_manager_server_is_exported (GDBusObjectManagerServer *manager, + GDBusObjectSkeleton *object); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_object_manager_server_unexport (GDBusObjectManagerServer *manager, + const gchar *object_path); + +G_END_DECLS + +#endif /* __G_DBUS_OBJECT_MANAGER_SERVER_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectproxy.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectproxy.h new file mode 100644 index 0000000..d7a450d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectproxy.h @@ -0,0 +1,81 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_OBJECT_PROXY_H__ +#define __G_DBUS_OBJECT_PROXY_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_OBJECT_PROXY (g_dbus_object_proxy_get_type ()) +#define G_DBUS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_PROXY, GDBusObjectProxy)) +#define G_DBUS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_PROXY, GDBusObjectProxyClass)) +#define G_DBUS_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_PROXY, GDBusObjectProxyClass)) +#define G_IS_DBUS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_PROXY)) +#define G_IS_DBUS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_PROXY)) + +typedef struct _GDBusObjectProxyClass GDBusObjectProxyClass; +typedef struct _GDBusObjectProxyPrivate GDBusObjectProxyPrivate; + +/** + * GDBusObjectProxy: + * + * The #GDBusObjectProxy structure contains private data and should + * only be accessed using the provided API. + * + * Since: 2.30 + */ +struct _GDBusObjectProxy +{ + /*< private >*/ + GObject parent_instance; + GDBusObjectProxyPrivate *priv; +}; + +/** + * GDBusObjectProxyClass: + * @parent_class: The parent class. + * + * Class structure for #GDBusObjectProxy. + * + * Since: 2.30 + */ +struct _GDBusObjectProxyClass +{ + GObjectClass parent_class; + + /*< private >*/ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_object_proxy_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusObjectProxy *g_dbus_object_proxy_new (GDBusConnection *connection, + const gchar *object_path); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_object_proxy_get_connection (GDBusObjectProxy *proxy); + +G_END_DECLS + +#endif /* __G_DBUS_OBJECT_PROXY_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectskeleton.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectskeleton.h new file mode 100644 index 0000000..417dd6e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusobjectskeleton.h @@ -0,0 +1,98 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_OBJECT_SKELETON_H__ +#define __G_DBUS_OBJECT_SKELETON_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_OBJECT_SKELETON (g_dbus_object_skeleton_get_type ()) +#define G_DBUS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_SKELETON, GDBusObjectSkeleton)) +#define G_DBUS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_SKELETON, GDBusObjectSkeletonClass)) +#define G_DBUS_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_SKELETON, GDBusObjectSkeletonClass)) +#define G_IS_DBUS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_SKELETON)) +#define G_IS_DBUS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_SKELETON)) + +typedef struct _GDBusObjectSkeletonClass GDBusObjectSkeletonClass; +typedef struct _GDBusObjectSkeletonPrivate GDBusObjectSkeletonPrivate; + +/** + * GDBusObjectSkeleton: + * + * The #GDBusObjectSkeleton structure contains private data and should only be + * accessed using the provided API. + * + * Since: 2.30 + */ +struct _GDBusObjectSkeleton +{ + /*< private >*/ + GObject parent_instance; + GDBusObjectSkeletonPrivate *priv; +}; + +/** + * GDBusObjectSkeletonClass: + * @parent_class: The parent class. + * @authorize_method: Signal class handler for the #GDBusObjectSkeleton::authorize-method signal. + * + * Class structure for #GDBusObjectSkeleton. + * + * Since: 2.30 + */ +struct _GDBusObjectSkeletonClass +{ + GObjectClass parent_class; + + /* Signals */ + gboolean (*authorize_method) (GDBusObjectSkeleton *object, + GDBusInterfaceSkeleton *interface_, + GDBusMethodInvocation *invocation); + + /*< private >*/ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_object_skeleton_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusObjectSkeleton *g_dbus_object_skeleton_new (const gchar *object_path); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_skeleton_flush (GDBusObjectSkeleton *object); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_skeleton_add_interface (GDBusObjectSkeleton *object, + GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_skeleton_remove_interface (GDBusObjectSkeleton *object, + GDBusInterfaceSkeleton *interface_); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_skeleton_remove_interface_by_name (GDBusObjectSkeleton *object, + const gchar *interface_name); +GLIB_AVAILABLE_IN_ALL +void g_dbus_object_skeleton_set_object_path (GDBusObjectSkeleton *object, + const gchar *object_path); + +G_END_DECLS + +#endif /* __G_DBUS_OBJECT_SKELETON_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusproxy.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusproxy.h new file mode 100644 index 0000000..aac6663 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusproxy.h @@ -0,0 +1,220 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_PROXY_H__ +#define __G_DBUS_PROXY_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_PROXY (g_dbus_proxy_get_type ()) +#define G_DBUS_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_PROXY, GDBusProxy)) +#define G_DBUS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_PROXY, GDBusProxyClass)) +#define G_DBUS_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_PROXY, GDBusProxyClass)) +#define G_IS_DBUS_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_PROXY)) +#define G_IS_DBUS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_PROXY)) + +typedef struct _GDBusProxyClass GDBusProxyClass; +typedef struct _GDBusProxyPrivate GDBusProxyPrivate; + +/** + * GDBusProxy: + * + * The #GDBusProxy structure contains only private data and + * should only be accessed using the provided API. + * + * Since: 2.26 + */ +struct _GDBusProxy +{ + /*< private >*/ + GObject parent_instance; + GDBusProxyPrivate *priv; +}; + +/** + * GDBusProxyClass: + * @g_properties_changed: Signal class handler for the #GDBusProxy::g-properties-changed signal. + * @g_signal: Signal class handler for the #GDBusProxy::g-signal signal. + * + * Class structure for #GDBusProxy. + * + * Since: 2.26 + */ +struct _GDBusProxyClass +{ + /*< private >*/ + GObjectClass parent_class; + + /*< public >*/ + /* Signals */ + void (*g_properties_changed) (GDBusProxy *proxy, + GVariant *changed_properties, + const gchar* const *invalidated_properties); + void (*g_signal) (GDBusProxy *proxy, + const gchar *sender_name, + const gchar *signal_name, + GVariant *parameters); + + /*< private >*/ + /* Padding for future expansion */ + gpointer padding[32]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_proxy_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +void g_dbus_proxy_new (GDBusConnection *connection, + GDBusProxyFlags flags, + GDBusInterfaceInfo *info, + const gchar *name, + const gchar *object_path, + const gchar *interface_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusProxy *g_dbus_proxy_new_finish (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusProxy *g_dbus_proxy_new_sync (GDBusConnection *connection, + GDBusProxyFlags flags, + GDBusInterfaceInfo *info, + const gchar *name, + const gchar *object_path, + const gchar *interface_name, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_dbus_proxy_new_for_bus (GBusType bus_type, + GDBusProxyFlags flags, + GDBusInterfaceInfo *info, + const gchar *name, + const gchar *object_path, + const gchar *interface_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GDBusProxy *g_dbus_proxy_new_for_bus_finish (GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusProxy *g_dbus_proxy_new_for_bus_sync (GBusType bus_type, + GDBusProxyFlags flags, + GDBusInterfaceInfo *info, + const gchar *name, + const gchar *object_path, + const gchar *interface_name, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GDBusConnection *g_dbus_proxy_get_connection (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +GDBusProxyFlags g_dbus_proxy_get_flags (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_proxy_get_name (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +gchar *g_dbus_proxy_get_name_owner (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_proxy_get_object_path (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_proxy_get_interface_name (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +gint g_dbus_proxy_get_default_timeout (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +void g_dbus_proxy_set_default_timeout (GDBusProxy *proxy, + gint timeout_msec); +GLIB_AVAILABLE_IN_ALL +GDBusInterfaceInfo *g_dbus_proxy_get_interface_info (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +void g_dbus_proxy_set_interface_info (GDBusProxy *proxy, + GDBusInterfaceInfo *info); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_proxy_get_cached_property (GDBusProxy *proxy, + const gchar *property_name); +GLIB_AVAILABLE_IN_ALL +void g_dbus_proxy_set_cached_property (GDBusProxy *proxy, + const gchar *property_name, + GVariant *value); +GLIB_AVAILABLE_IN_ALL +gchar **g_dbus_proxy_get_cached_property_names (GDBusProxy *proxy); +GLIB_AVAILABLE_IN_ALL +void g_dbus_proxy_call (GDBusProxy *proxy, + const gchar *method_name, + GVariant *parameters, + GDBusCallFlags flags, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_proxy_call_finish (GDBusProxy *proxy, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_proxy_call_sync (GDBusProxy *proxy, + const gchar *method_name, + GVariant *parameters, + GDBusCallFlags flags, + gint timeout_msec, + GCancellable *cancellable, + GError **error); + +#ifdef G_OS_UNIX + +GLIB_AVAILABLE_IN_ALL +void g_dbus_proxy_call_with_unix_fd_list (GDBusProxy *proxy, + const gchar *method_name, + GVariant *parameters, + GDBusCallFlags flags, + gint timeout_msec, + GUnixFDList *fd_list, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_proxy_call_with_unix_fd_list_finish (GDBusProxy *proxy, + GUnixFDList **out_fd_list, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_proxy_call_with_unix_fd_list_sync (GDBusProxy *proxy, + const gchar *method_name, + GVariant *parameters, + GDBusCallFlags flags, + gint timeout_msec, + GUnixFDList *fd_list, + GUnixFDList **out_fd_list, + GCancellable *cancellable, + GError **error); + +#endif /* G_OS_UNIX */ + +G_END_DECLS + +#endif /* __G_DBUS_PROXY_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusserver.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusserver.h new file mode 100644 index 0000000..63dd4cb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusserver.h @@ -0,0 +1,62 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_SERVER_H__ +#define __G_DBUS_SERVER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DBUS_SERVER (g_dbus_server_get_type ()) +#define G_DBUS_SERVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_SERVER, GDBusServer)) +#define G_IS_DBUS_SERVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_SERVER)) + +GLIB_AVAILABLE_IN_ALL +GType g_dbus_server_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GDBusServer *g_dbus_server_new_sync (const gchar *address, + GDBusServerFlags flags, + const gchar *guid, + GDBusAuthObserver *observer, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_server_get_client_address (GDBusServer *server); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dbus_server_get_guid (GDBusServer *server); +GLIB_AVAILABLE_IN_ALL +GDBusServerFlags g_dbus_server_get_flags (GDBusServer *server); +GLIB_AVAILABLE_IN_ALL +void g_dbus_server_start (GDBusServer *server); +GLIB_AVAILABLE_IN_ALL +void g_dbus_server_stop (GDBusServer *server); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_server_is_active (GDBusServer *server); + +G_END_DECLS + +#endif /* __G_DBUS_SERVER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusutils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusutils.h new file mode 100644 index 0000000..c0f2ba5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdbusutils.h @@ -0,0 +1,65 @@ +/* GDBus - GLib D-Bus Library + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: David Zeuthen + */ + +#ifndef __G_DBUS_UTILS_H__ +#define __G_DBUS_UTILS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_is_guid (const gchar *string); +GLIB_AVAILABLE_IN_ALL +gchar *g_dbus_generate_guid (void); + +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_is_name (const gchar *string); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_is_unique_name (const gchar *string); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_is_member_name (const gchar *string); +GLIB_AVAILABLE_IN_ALL +gboolean g_dbus_is_interface_name (const gchar *string); +GLIB_AVAILABLE_IN_2_70 +gboolean g_dbus_is_error_name (const gchar *string); + +GLIB_AVAILABLE_IN_ALL +void g_dbus_gvariant_to_gvalue (GVariant *value, + GValue *out_gvalue); +GLIB_AVAILABLE_IN_ALL +GVariant *g_dbus_gvalue_to_gvariant (const GValue *gvalue, + const GVariantType *type); +GLIB_AVAILABLE_IN_2_68 +gchar *g_dbus_escape_object_path_bytestring (const guint8 *bytes); +GLIB_AVAILABLE_IN_2_68 +gchar *g_dbus_escape_object_path (const gchar *s); +GLIB_AVAILABLE_IN_2_68 +guint8 *g_dbus_unescape_object_path (const gchar *s); + +G_END_DECLS + +#endif /* __G_DBUS_UTILS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdebugcontroller.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdebugcontroller.h new file mode 100644 index 0000000..3816034 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdebugcontroller.h @@ -0,0 +1,81 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2021 Endless OS Foundation, LLC + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#ifndef __G_DEBUG_CONTROLLER_H__ +#define __G_DEBUG_CONTROLLER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_DEBUG_CONTROLLER_EXTENSION_POINT_NAME: + * + * Extension point for debug control functionality. + * See [Extending GIO][extending-gio]. + * + * Since: 2.72 + */ +#define G_DEBUG_CONTROLLER_EXTENSION_POINT_NAME "gio-debug-controller" + +/** + * GDebugController: + * + * #GDebugController is an interface to expose control of debugging features and + * debug output. + * + * Since: 2.72 + */ +#define G_TYPE_DEBUG_CONTROLLER (g_debug_controller_get_type ()) +GLIB_AVAILABLE_IN_2_72 +G_DECLARE_INTERFACE(GDebugController, g_debug_controller, g, debug_controller, GObject) + +#define G_DEBUG_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DEBUG_CONTROLLER, GDebugController)) +#define G_IS_DEBUG_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DEBUG_CONTROLLER)) +#define G_DEBUG_CONTROLLER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_DEBUG_CONTROLLER, GDebugControllerInterface)) + +/** + * GDebugControllerInterface: + * @g_iface: The parent interface. + * + * The virtual function table for #GDebugController. + * + * Since: 2.72 + */ +struct _GDebugControllerInterface { + /*< private >*/ + GTypeInterface g_iface; +}; + +GLIB_AVAILABLE_IN_2_72 +gboolean g_debug_controller_get_debug_enabled (GDebugController *self); +GLIB_AVAILABLE_IN_2_72 +void g_debug_controller_set_debug_enabled (GDebugController *self, + gboolean debug_enabled); + +G_END_DECLS + +#endif /* __G_DEBUG_CONTROLLER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdebugcontrollerdbus.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdebugcontrollerdbus.h new file mode 100644 index 0000000..d28545b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdebugcontrollerdbus.h @@ -0,0 +1,71 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2021 Endless OS Foundation, LLC + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#ifndef __G_DEBUG_CONTROLLER_DBUS_H__ +#define __G_DEBUG_CONTROLLER_DBUS_H__ + +#include +#include + +G_BEGIN_DECLS + +/** + * GDebugControllerDBus: + * + * #GDebugControllerDBus is an implementation of #GDebugController over D-Bus. + * + * Since: 2.72 + */ +#define G_TYPE_DEBUG_CONTROLLER_DBUS (g_debug_controller_dbus_get_type ()) +GLIB_AVAILABLE_IN_2_72 +G_DECLARE_DERIVABLE_TYPE (GDebugControllerDBus, g_debug_controller_dbus, G, DEBUG_CONTROLLER_DBUS, GObject) + +/** + * GDebugControllerDBusClass: + * @parent_class: The parent class. + * @authorize: Default handler for the #GDebugControllerDBus::authorize signal. + * + * The virtual function table for #GDebugControllerDBus. + * + * Since: 2.72 + */ +struct _GDebugControllerDBusClass +{ + GObjectClass parent_class; + + gboolean (*authorize) (GDebugControllerDBus *controller, + GDBusMethodInvocation *invocation); + + gpointer padding[12]; +}; + +GLIB_AVAILABLE_IN_2_72 +GDebugControllerDBus *g_debug_controller_dbus_new (GDBusConnection *connection, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_72 +void g_debug_controller_dbus_stop (GDebugControllerDBus *self); + +G_END_DECLS + +#endif /* __G_DEBUG_CONTROLLER_DBUS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdrive.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdrive.h new file mode 100644 index 0000000..f5a5d12 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdrive.h @@ -0,0 +1,274 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + * David Zeuthen + */ + +#ifndef __G_DRIVE_H__ +#define __G_DRIVE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_DRIVE_IDENTIFIER_KIND_UNIX_DEVICE: + * + * The string used to obtain a Unix device path with g_drive_get_identifier(). + * + * Since: 2.58 + */ +#define G_DRIVE_IDENTIFIER_KIND_UNIX_DEVICE "unix-device" + +#define G_TYPE_DRIVE (g_drive_get_type ()) +#define G_DRIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_DRIVE, GDrive)) +#define G_IS_DRIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_DRIVE)) +#define G_DRIVE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_DRIVE, GDriveIface)) + +/** + * GDriveIface: + * @g_iface: The parent interface. + * @changed: Signal emitted when the drive is changed. + * @disconnected: The removed signal that is emitted when the #GDrive have been disconnected. If the recipient is holding references to the object they should release them so the object can be finalized. + * @eject_button: Signal emitted when the physical eject button (if any) of a drive have been pressed. + * @get_name: Returns the name for the given #GDrive. + * @get_icon: Returns a #GIcon for the given #GDrive. + * @has_volumes: Returns %TRUE if the #GDrive has mountable volumes. + * @get_volumes: Returns a list #GList of #GVolume for the #GDrive. + * @is_removable: Returns %TRUE if the #GDrive and/or its media is considered removable by the user. Since 2.50. + * @is_media_removable: Returns %TRUE if the #GDrive supports removal and insertion of media. + * @has_media: Returns %TRUE if the #GDrive has media inserted. + * @is_media_check_automatic: Returns %TRUE if the #GDrive is capable of automatically detecting media changes. + * @can_poll_for_media: Returns %TRUE if the #GDrive is capable of manually polling for media change. + * @can_eject: Returns %TRUE if the #GDrive can eject media. + * @eject: Ejects a #GDrive. + * @eject_finish: Finishes an eject operation. + * @poll_for_media: Poll for media insertion/removal on a #GDrive. + * @poll_for_media_finish: Finishes a media poll operation. + * @get_identifier: Returns the identifier of the given kind, or %NULL if + * the #GDrive doesn't have one. + * @enumerate_identifiers: Returns an array strings listing the kinds + * of identifiers which the #GDrive has. + * @get_start_stop_type: Gets a #GDriveStartStopType with details about starting/stopping the drive. Since 2.22. + * @can_stop: Returns %TRUE if a #GDrive can be stopped. Since 2.22. + * @stop: Stops a #GDrive. Since 2.22. + * @stop_finish: Finishes a stop operation. Since 2.22. + * @can_start: Returns %TRUE if a #GDrive can be started. Since 2.22. + * @can_start_degraded: Returns %TRUE if a #GDrive can be started degraded. Since 2.22. + * @start: Starts a #GDrive. Since 2.22. + * @start_finish: Finishes a start operation. Since 2.22. + * @stop_button: Signal emitted when the physical stop button (if any) of a drive have been pressed. Since 2.22. + * @eject_with_operation: Starts ejecting a #GDrive using a #GMountOperation. Since 2.22. + * @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22. + * @get_sort_key: Gets a key used for sorting #GDrive instances or %NULL if no such key exists. Since 2.32. + * @get_symbolic_icon: Returns a symbolic #GIcon for the given #GDrive. Since 2.34. + * + * Interface for creating #GDrive implementations. + */ +typedef struct _GDriveIface GDriveIface; + +struct _GDriveIface +{ + GTypeInterface g_iface; + + /* signals */ + void (* changed) (GDrive *drive); + void (* disconnected) (GDrive *drive); + void (* eject_button) (GDrive *drive); + + /* Virtual Table */ + char * (* get_name) (GDrive *drive); + GIcon * (* get_icon) (GDrive *drive); + gboolean (* has_volumes) (GDrive *drive); + GList * (* get_volumes) (GDrive *drive); + gboolean (* is_media_removable) (GDrive *drive); + gboolean (* has_media) (GDrive *drive); + gboolean (* is_media_check_automatic) (GDrive *drive); + gboolean (* can_eject) (GDrive *drive); + gboolean (* can_poll_for_media) (GDrive *drive); + void (* eject) (GDrive *drive, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_finish) (GDrive *drive, + GAsyncResult *result, + GError **error); + void (* poll_for_media) (GDrive *drive, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* poll_for_media_finish) (GDrive *drive, + GAsyncResult *result, + GError **error); + + char * (* get_identifier) (GDrive *drive, + const char *kind); + char ** (* enumerate_identifiers) (GDrive *drive); + + GDriveStartStopType (* get_start_stop_type) (GDrive *drive); + + gboolean (* can_start) (GDrive *drive); + gboolean (* can_start_degraded) (GDrive *drive); + void (* start) (GDrive *drive, + GDriveStartFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* start_finish) (GDrive *drive, + GAsyncResult *result, + GError **error); + + gboolean (* can_stop) (GDrive *drive); + void (* stop) (GDrive *drive, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* stop_finish) (GDrive *drive, + GAsyncResult *result, + GError **error); + /* signal, not VFunc */ + void (* stop_button) (GDrive *drive); + + void (* eject_with_operation) (GDrive *drive, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_with_operation_finish) (GDrive *drive, + GAsyncResult *result, + GError **error); + + const gchar * (* get_sort_key) (GDrive *drive); + GIcon * (* get_symbolic_icon) (GDrive *drive); + gboolean (* is_removable) (GDrive *drive); + +}; + +GLIB_AVAILABLE_IN_ALL +GType g_drive_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +char * g_drive_get_name (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +GIcon * g_drive_get_icon (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +GIcon * g_drive_get_symbolic_icon (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_has_volumes (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +GList * g_drive_get_volumes (GDrive *drive); +GLIB_AVAILABLE_IN_2_50 +gboolean g_drive_is_removable (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_is_media_removable (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_has_media (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_is_media_check_automatic (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_can_poll_for_media (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_can_eject (GDrive *drive); +GLIB_DEPRECATED_FOR(g_drive_eject_with_operation) +void g_drive_eject (GDrive *drive, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_DEPRECATED_FOR(g_drive_eject_with_operation_finish) +gboolean g_drive_eject_finish (GDrive *drive, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_drive_poll_for_media (GDrive *drive, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_poll_for_media_finish (GDrive *drive, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +char * g_drive_get_identifier (GDrive *drive, + const char *kind); +GLIB_AVAILABLE_IN_ALL +char ** g_drive_enumerate_identifiers (GDrive *drive); + +GLIB_AVAILABLE_IN_ALL +GDriveStartStopType g_drive_get_start_stop_type (GDrive *drive); + +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_can_start (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_can_start_degraded (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +void g_drive_start (GDrive *drive, + GDriveStartFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_start_finish (GDrive *drive, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_can_stop (GDrive *drive); +GLIB_AVAILABLE_IN_ALL +void g_drive_stop (GDrive *drive, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_stop_finish (GDrive *drive, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_drive_eject_with_operation (GDrive *drive, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_drive_eject_with_operation_finish (GDrive *drive, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +const gchar *g_drive_get_sort_key (GDrive *drive); + +G_END_DECLS + +#endif /* __G_DRIVE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsclientconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsclientconnection.h new file mode 100644 index 0000000..f772647 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsclientconnection.h @@ -0,0 +1,77 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc. + * Copyright © 2015 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_DTLS_CLIENT_CONNECTION_H__ +#define __G_DTLS_CLIENT_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DTLS_CLIENT_CONNECTION (g_dtls_client_connection_get_type ()) +#define G_DTLS_CLIENT_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_DTLS_CLIENT_CONNECTION, GDtlsClientConnection)) +#define G_IS_DTLS_CLIENT_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_DTLS_CLIENT_CONNECTION)) +#define G_DTLS_CLIENT_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_DTLS_CLIENT_CONNECTION, GDtlsClientConnectionInterface)) + +typedef struct _GDtlsClientConnectionInterface GDtlsClientConnectionInterface; + +/** + * GDtlsClientConnectionInterface: + * @g_iface: The parent interface. + * + * vtable for a #GDtlsClientConnection implementation. + * + * Since: 2.48 + */ +struct _GDtlsClientConnectionInterface +{ + GTypeInterface g_iface; +}; + +GLIB_AVAILABLE_IN_2_48 +GType g_dtls_client_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_48 +GDatagramBased *g_dtls_client_connection_new (GDatagramBased *base_socket, + GSocketConnectable *server_identity, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +GTlsCertificateFlags g_dtls_client_connection_get_validation_flags (GDtlsClientConnection *conn); +GLIB_AVAILABLE_IN_2_48 +void g_dtls_client_connection_set_validation_flags (GDtlsClientConnection *conn, + GTlsCertificateFlags flags); +GLIB_AVAILABLE_IN_2_48 +GSocketConnectable *g_dtls_client_connection_get_server_identity (GDtlsClientConnection *conn); +GLIB_AVAILABLE_IN_2_48 +void g_dtls_client_connection_set_server_identity (GDtlsClientConnection *conn, + GSocketConnectable *identity); +GLIB_AVAILABLE_IN_2_48 +GList * g_dtls_client_connection_get_accepted_cas (GDtlsClientConnection *conn); + + +G_END_DECLS + +#endif /* __G_DTLS_CLIENT_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsconnection.h new file mode 100644 index 0000000..6a02ee6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsconnection.h @@ -0,0 +1,230 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc. + * Copyright © 2015 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_DTLS_CONNECTION_H__ +#define __G_DTLS_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DTLS_CONNECTION (g_dtls_connection_get_type ()) +#define G_DTLS_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_DTLS_CONNECTION, GDtlsConnection)) +#define G_IS_DTLS_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_DTLS_CONNECTION)) +#define G_DTLS_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_DTLS_CONNECTION, GDtlsConnectionInterface)) + +typedef struct _GDtlsConnectionInterface GDtlsConnectionInterface; + +/** + * GDtlsConnectionInterface: + * @g_iface: The parent interface. + * @accept_certificate: Check whether to accept a certificate. + * @handshake: Perform a handshake operation. + * @handshake_async: Start an asynchronous handshake operation. + * @handshake_finish: Finish an asynchronous handshake operation. + * @shutdown: Shut down one or both directions of the connection. + * @shutdown_async: Start an asynchronous shutdown operation. + * @shutdown_finish: Finish an asynchronous shutdown operation. + * @set_advertised_protocols: Set APLN protocol list (Since: 2.60) + * @get_negotiated_protocol: Get ALPN-negotiated protocol (Since: 2.60) + * @get_binding_data: Retrieve TLS channel binding data (Since: 2.66) + * + * Virtual method table for a #GDtlsConnection implementation. + * + * Since: 2.48 + */ +struct _GDtlsConnectionInterface +{ + GTypeInterface g_iface; + + /* signals */ + gboolean (*accept_certificate) (GDtlsConnection *connection, + GTlsCertificate *peer_cert, + GTlsCertificateFlags errors); + + /* methods */ + gboolean (*handshake) (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error); + + void (*handshake_async) (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*handshake_finish) (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + + gboolean (*shutdown) (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + GCancellable *cancellable, + GError **error); + + void (*shutdown_async) (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*shutdown_finish) (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + + void (*set_advertised_protocols) (GDtlsConnection *conn, + const gchar * const *protocols); + const gchar *(*get_negotiated_protocol) (GDtlsConnection *conn); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + gboolean (*get_binding_data) (GDtlsConnection *conn, + GTlsChannelBindingType type, + GByteArray *data, + GError **error); +G_GNUC_END_IGNORE_DEPRECATIONS +}; + +GLIB_AVAILABLE_IN_2_48 +GType g_dtls_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_database (GDtlsConnection *conn, + GTlsDatabase *database); +GLIB_AVAILABLE_IN_2_48 +GTlsDatabase *g_dtls_connection_get_database (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_certificate (GDtlsConnection *conn, + GTlsCertificate *certificate); +GLIB_AVAILABLE_IN_2_48 +GTlsCertificate *g_dtls_connection_get_certificate (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_interaction (GDtlsConnection *conn, + GTlsInteraction *interaction); +GLIB_AVAILABLE_IN_2_48 +GTlsInteraction *g_dtls_connection_get_interaction (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +GTlsCertificate *g_dtls_connection_get_peer_certificate (GDtlsConnection *conn); +GLIB_AVAILABLE_IN_2_48 +GTlsCertificateFlags g_dtls_connection_get_peer_certificate_errors (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_require_close_notify (GDtlsConnection *conn, + gboolean require_close_notify); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_get_require_close_notify (GDtlsConnection *conn); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_60 +void g_dtls_connection_set_rehandshake_mode (GDtlsConnection *conn, + GTlsRehandshakeMode mode); +GLIB_DEPRECATED_IN_2_60 +GTlsRehandshakeMode g_dtls_connection_get_rehandshake_mode (GDtlsConnection *conn); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_handshake (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_handshake_async (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_handshake_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_shutdown (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_shutdown_async (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_shutdown_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_close (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_close_async (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_close_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + +/*< protected >*/ +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_emit_accept_certificate (GDtlsConnection *conn, + GTlsCertificate *peer_cert, + GTlsCertificateFlags errors); +GLIB_AVAILABLE_IN_2_60 +void g_dtls_connection_set_advertised_protocols (GDtlsConnection *conn, + const gchar * const *protocols); + +GLIB_AVAILABLE_IN_2_60 +const gchar * g_dtls_connection_get_negotiated_protocol (GDtlsConnection *conn); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_2_66 +gboolean g_dtls_connection_get_channel_binding_data (GDtlsConnection *conn, + GTlsChannelBindingType type, + GByteArray *data, + GError **error); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_2_70 +GTlsProtocolVersion g_dtls_connection_get_protocol_version (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_70 +gchar * g_dtls_connection_get_ciphersuite_name (GDtlsConnection *conn); + +G_END_DECLS + +#endif /* __G_DTLS_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsserverconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsserverconnection.h new file mode 100644 index 0000000..b713b2c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gdtlsserverconnection.h @@ -0,0 +1,71 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc. + * Copyright © 2015 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_DTLS_SERVER_CONNECTION_H__ +#define __G_DTLS_SERVER_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DTLS_SERVER_CONNECTION (g_dtls_server_connection_get_type ()) +#define G_DTLS_SERVER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_DTLS_SERVER_CONNECTION, GDtlsServerConnection)) +#define G_IS_DTLS_SERVER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_DTLS_SERVER_CONNECTION)) +#define G_DTLS_SERVER_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_DTLS_SERVER_CONNECTION, GDtlsServerConnectionInterface)) + +/** + * GDtlsServerConnection: + * + * DTLS server-side connection. This is the server-side implementation + * of a #GDtlsConnection. + * + * Since: 2.48 + */ +typedef struct _GDtlsServerConnectionInterface GDtlsServerConnectionInterface; + +/** + * GDtlsServerConnectionInterface: + * @g_iface: The parent interface. + * + * vtable for a #GDtlsServerConnection implementation. + * + * Since: 2.48 + */ +struct _GDtlsServerConnectionInterface +{ + GTypeInterface g_iface; +}; + +GLIB_AVAILABLE_IN_2_48 +GType g_dtls_server_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_48 +GDatagramBased *g_dtls_server_connection_new (GDatagramBased *base_socket, + GTlsCertificate *certificate, + GError **error); + +G_END_DECLS + +#endif /* __G_DTLS_SERVER_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gemblem.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gemblem.h new file mode 100644 index 0000000..246671e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gemblem.h @@ -0,0 +1,63 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Clemens N. Buss + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + */ + +#ifndef __G_EMBLEM_H__ +#define __G_EMBLEM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_EMBLEM (g_emblem_get_type ()) +#define G_EMBLEM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_EMBLEM, GEmblem)) +#define G_EMBLEM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_EMBLEM, GEmblemClass)) +#define G_IS_EMBLEM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_EMBLEM)) +#define G_IS_EMBLEM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_EMBLEM)) +#define G_EMBLEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_EMBLEM, GEmblemClass)) + +/** + * GEmblem: + * + * An object for Emblems + */ +typedef struct _GEmblem GEmblem; +typedef struct _GEmblemClass GEmblemClass; + +GLIB_AVAILABLE_IN_ALL +GType g_emblem_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GEmblem *g_emblem_new (GIcon *icon); +GLIB_AVAILABLE_IN_ALL +GEmblem *g_emblem_new_with_origin (GIcon *icon, + GEmblemOrigin origin); +GLIB_AVAILABLE_IN_ALL +GIcon *g_emblem_get_icon (GEmblem *emblem); +GLIB_AVAILABLE_IN_ALL +GEmblemOrigin g_emblem_get_origin (GEmblem *emblem); + +G_END_DECLS + +#endif /* __G_EMBLEM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gemblemedicon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gemblemedicon.h new file mode 100644 index 0000000..c19e99f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gemblemedicon.h @@ -0,0 +1,83 @@ +/* Gio - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Matthias Clasen + * Clemens N. Buss + */ + +#ifndef __G_EMBLEMED_ICON_H__ +#define __G_EMBLEMED_ICON_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_EMBLEMED_ICON (g_emblemed_icon_get_type ()) +#define G_EMBLEMED_ICON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_EMBLEMED_ICON, GEmblemedIcon)) +#define G_EMBLEMED_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_EMBLEMED_ICON, GEmblemedIconClass)) +#define G_IS_EMBLEMED_ICON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_EMBLEMED_ICON)) +#define G_IS_EMBLEMED_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_EMBLEMED_ICON)) +#define G_EMBLEMED_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_EMBLEMED_ICON, GEmblemedIconClass)) + +/** + * GEmblemedIcon: + * + * An implementation of #GIcon for icons with emblems. + **/ +typedef struct _GEmblemedIcon GEmblemedIcon; +typedef struct _GEmblemedIconClass GEmblemedIconClass; +typedef struct _GEmblemedIconPrivate GEmblemedIconPrivate; + +struct _GEmblemedIcon +{ + GObject parent_instance; + + /*< private >*/ + GEmblemedIconPrivate *priv; +}; + +struct _GEmblemedIconClass +{ + GObjectClass parent_class; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_emblemed_icon_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GIcon *g_emblemed_icon_new (GIcon *icon, + GEmblem *emblem); +GLIB_AVAILABLE_IN_ALL +GIcon *g_emblemed_icon_get_icon (GEmblemedIcon *emblemed); +GLIB_AVAILABLE_IN_ALL +GList *g_emblemed_icon_get_emblems (GEmblemedIcon *emblemed); +GLIB_AVAILABLE_IN_ALL +void g_emblemed_icon_add_emblem (GEmblemedIcon *emblemed, + GEmblem *emblem); +GLIB_AVAILABLE_IN_ALL +void g_emblemed_icon_clear_emblems (GEmblemedIcon *emblemed); + +G_END_DECLS + +#endif /* __G_EMBLEMED_ICON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfile.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfile.h new file mode 100644 index 0000000..13ffed6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfile.h @@ -0,0 +1,1357 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_H__ +#define __G_FILE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE (g_file_get_type ()) +#define G_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_FILE, GFile)) +#define G_IS_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_FILE)) +#define G_FILE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_FILE, GFileIface)) + +#if 0 +/** + * GFile: + * + * A handle to an object implementing the #GFileIface interface. + * Generally stores a location within the file system. Handles do not + * necessarily represent files or directories that currently exist. + **/ +typedef struct _GFile GFile; /* Dummy typedef */ +#endif +typedef struct _GFileIface GFileIface; + + +/** + * GFileIface: + * @g_iface: The parent interface. + * @dup: Duplicates a #GFile. + * @hash: Creates a hash of a #GFile. + * @equal: Checks equality of two given #GFiles. + * @is_native: Checks to see if a file is native to the system. + * @has_uri_scheme: Checks to see if a #GFile has a given URI scheme. + * @get_uri_scheme: Gets the URI scheme for a #GFile. + * @get_basename: Gets the basename for a given #GFile. + * @get_path: Gets the current path within a #GFile. + * @get_uri: Gets a URI for the path within a #GFile. + * @get_parse_name: Gets the parsed name for the #GFile. + * @get_parent: Gets the parent directory for the #GFile. + * @prefix_matches: Checks whether a #GFile contains a specified file. + * @get_relative_path: Gets the path for a #GFile relative to a given path. + * @resolve_relative_path: Resolves a relative path for a #GFile to an absolute path. + * @get_child_for_display_name: Gets the child #GFile for a given display name. + * @enumerate_children: Gets a #GFileEnumerator with the children of a #GFile. + * @enumerate_children_async: Asynchronously gets a #GFileEnumerator with the children of a #GFile. + * @enumerate_children_finish: Finishes asynchronously enumerating the children. + * @query_info: Gets the #GFileInfo for a #GFile. + * @query_info_async: Asynchronously gets the #GFileInfo for a #GFile. + * @query_info_finish: Finishes an asynchronous query info operation. + * @query_filesystem_info: Gets a #GFileInfo for the file system #GFile is on. + * @query_filesystem_info_async: Asynchronously gets a #GFileInfo for the file system #GFile is on. + * @query_filesystem_info_finish: Finishes asynchronously getting the file system info. + * @find_enclosing_mount: Gets a #GMount for the #GFile. + * @find_enclosing_mount_async: Asynchronously gets the #GMount for a #GFile. + * @find_enclosing_mount_finish: Finishes asynchronously getting the volume. + * @set_display_name: Sets the display name for a #GFile. + * @set_display_name_async: Asynchronously sets a #GFile's display name. + * @set_display_name_finish: Finishes asynchronously setting a #GFile's display name. + * @query_settable_attributes: Returns a list of #GFileAttributeInfos that can be set. + * @_query_settable_attributes_async: Asynchronously gets a list of #GFileAttributeInfos that can be set. + * @_query_settable_attributes_finish: Finishes asynchronously querying settable attributes. + * @query_writable_namespaces: Returns a list of #GFileAttributeInfo namespaces that are writable. + * @_query_writable_namespaces_async: Asynchronously gets a list of #GFileAttributeInfo namespaces that are writable. + * @_query_writable_namespaces_finish: Finishes asynchronously querying the writable namespaces. + * @set_attribute: Sets a #GFileAttributeInfo. + * @set_attributes_from_info: Sets a #GFileAttributeInfo with information from a #GFileInfo. + * @set_attributes_async: Asynchronously sets a file's attributes. + * @set_attributes_finish: Finishes setting a file's attributes asynchronously. + * @read_fn: Reads a file asynchronously. + * @read_async: Asynchronously reads a file. + * @read_finish: Finishes asynchronously reading a file. + * @append_to: Writes to the end of a file. + * @append_to_async: Asynchronously writes to the end of a file. + * @append_to_finish: Finishes an asynchronous file append operation. + * @create: Creates a new file. + * @create_async: Asynchronously creates a file. + * @create_finish: Finishes asynchronously creating a file. + * @replace: Replaces the contents of a file. + * @replace_async: Asynchronously replaces the contents of a file. + * @replace_finish: Finishes asynchronously replacing a file. + * @delete_file: Deletes a file. + * @delete_file_async: Asynchronously deletes a file. + * @delete_file_finish: Finishes an asynchronous delete. + * @trash: Sends a #GFile to the Trash location. + * @trash_async: Asynchronously sends a #GFile to the Trash location. + * @trash_finish: Finishes an asynchronous file trashing operation. + * @make_directory: Makes a directory. + * @make_directory_async: Asynchronously makes a directory. + * @make_directory_finish: Finishes making a directory asynchronously. + * @make_symbolic_link: (nullable): Makes a symbolic link. %NULL if symbolic + * links are unsupported. + * @make_symbolic_link_async: Asynchronously makes a symbolic link + * @make_symbolic_link_finish: Finishes making a symbolic link asynchronously. + * @copy: (nullable): Copies a file. %NULL if copying is unsupported, which will + * cause `GFile` to use a fallback copy method where it reads from the + * source and writes to the destination. + * @copy_async: Asynchronously copies a file. + * @copy_finish: Finishes an asynchronous copy operation. + * @move: Moves a file. + * @move_async: Asynchronously moves a file. Since: 2.72 + * @move_finish: Finishes an asynchronous move operation. Since: 2.72 + * @mount_mountable: Mounts a mountable object. + * @mount_mountable_finish: Finishes a mounting operation. + * @unmount_mountable: Unmounts a mountable object. + * @unmount_mountable_finish: Finishes an unmount operation. + * @eject_mountable: Ejects a mountable. + * @eject_mountable_finish: Finishes an eject operation. + * @mount_enclosing_volume: Mounts a specified location. + * @mount_enclosing_volume_finish: Finishes mounting a specified location. + * @monitor_dir: Creates a #GFileMonitor for the location. + * @monitor_file: Creates a #GFileMonitor for the location. + * @open_readwrite: Open file read/write. Since 2.22. + * @open_readwrite_async: Asynchronously opens file read/write. Since 2.22. + * @open_readwrite_finish: Finishes an asynchronous open read/write. Since 2.22. + * @create_readwrite: Creates file read/write. Since 2.22. + * @create_readwrite_async: Asynchronously creates file read/write. Since 2.22. + * @create_readwrite_finish: Finishes an asynchronous creates read/write. Since 2.22. + * @replace_readwrite: Replaces file read/write. Since 2.22. + * @replace_readwrite_async: Asynchronously replaces file read/write. Since 2.22. + * @replace_readwrite_finish: Finishes an asynchronous replace read/write. Since 2.22. + * @start_mountable: Starts a mountable object. Since 2.22. + * @start_mountable_finish: Finishes a start operation. Since 2.22. + * @stop_mountable: Stops a mountable. Since 2.22. + * @stop_mountable_finish: Finishes a stop operation. Since 2.22. + * @supports_thread_contexts: a boolean that indicates whether the #GFile implementation supports thread-default contexts. Since 2.22. + * @unmount_mountable_with_operation: Unmounts a mountable object using a #GMountOperation. Since 2.22. + * @unmount_mountable_with_operation_finish: Finishes an unmount operation using a #GMountOperation. Since 2.22. + * @eject_mountable_with_operation: Ejects a mountable object using a #GMountOperation. Since 2.22. + * @eject_mountable_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22. + * @poll_mountable: Polls a mountable object for media changes. Since 2.22. + * @poll_mountable_finish: Finishes a poll operation for media changes. Since 2.22. + * @measure_disk_usage: Recursively measures the disk usage of @file. Since 2.38 + * @measure_disk_usage_async: Asynchronously recursively measures the disk usage of @file. Since 2.38 + * @measure_disk_usage_finish: Finishes an asynchronous recursive measurement of the disk usage of @file. Since 2.38 + * + * An interface for writing VFS file handles. + **/ +struct _GFileIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + GFile * (* dup) (GFile *file); + guint (* hash) (GFile *file); + gboolean (* equal) (GFile *file1, + GFile *file2); + gboolean (* is_native) (GFile *file); + gboolean (* has_uri_scheme) (GFile *file, + const char *uri_scheme); + char * (* get_uri_scheme) (GFile *file); + char * (* get_basename) (GFile *file); + char * (* get_path) (GFile *file); + char * (* get_uri) (GFile *file); + char * (* get_parse_name) (GFile *file); + GFile * (* get_parent) (GFile *file); + gboolean (* prefix_matches) (GFile *prefix, + GFile *file); + char * (* get_relative_path) (GFile *parent, + GFile *descendant); + GFile * (* resolve_relative_path) (GFile *file, + const char *relative_path); + GFile * (* get_child_for_display_name) (GFile *file, + const char *display_name, + GError **error); + + GFileEnumerator * (* enumerate_children) (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); + void (* enumerate_children_async) (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileEnumerator * (* enumerate_children_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + GFileInfo * (* query_info) (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); + void (* query_info_async) (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileInfo * (* query_info_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + GFileInfo * (* query_filesystem_info) (GFile *file, + const char *attributes, + GCancellable *cancellable, + GError **error); + void (* query_filesystem_info_async) (GFile *file, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileInfo * (* query_filesystem_info_finish)(GFile *file, + GAsyncResult *res, + GError **error); + + GMount * (* find_enclosing_mount) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* find_enclosing_mount_async) (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GMount * (* find_enclosing_mount_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + GFile * (* set_display_name) (GFile *file, + const char *display_name, + GCancellable *cancellable, + GError **error); + void (* set_display_name_async) (GFile *file, + const char *display_name, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFile * (* set_display_name_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + GFileAttributeInfoList * (* query_settable_attributes) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* _query_settable_attributes_async) (void); + void (* _query_settable_attributes_finish) (void); + + GFileAttributeInfoList * (* query_writable_namespaces) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* _query_writable_namespaces_async) (void); + void (* _query_writable_namespaces_finish) (void); + + gboolean (* set_attribute) (GFile *file, + const char *attribute, + GFileAttributeType type, + gpointer value_p, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); + gboolean (* set_attributes_from_info) (GFile *file, + GFileInfo *info, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); + void (* set_attributes_async) (GFile *file, + GFileInfo *info, + GFileQueryInfoFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* set_attributes_finish) (GFile *file, + GAsyncResult *result, + GFileInfo **info, + GError **error); + + GFileInputStream * (* read_fn) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* read_async) (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileInputStream * (* read_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + GFileOutputStream * (* append_to) (GFile *file, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); + void (* append_to_async) (GFile *file, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileOutputStream * (* append_to_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + GFileOutputStream * (* create) (GFile *file, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); + void (* create_async) (GFile *file, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileOutputStream * (* create_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + GFileOutputStream * (* replace) (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); + void (* replace_async) (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileOutputStream * (* replace_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + gboolean (* delete_file) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* delete_file_async) (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* delete_file_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + gboolean (* trash) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* trash_async) (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* trash_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + gboolean (* make_directory) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* make_directory_async) (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* make_directory_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + gboolean (* make_symbolic_link) (GFile *file, + const char *symlink_value, + GCancellable *cancellable, + GError **error); + void (* make_symbolic_link_async) (GFile *file, + const char *symlink_value, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* make_symbolic_link_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + gboolean (* copy) (GFile *source, + GFile *destination, + GFileCopyFlags flags, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GError **error); + void (* copy_async) (GFile *source, + GFile *destination, + GFileCopyFlags flags, + int io_priority, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* copy_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + gboolean (* move) (GFile *source, + GFile *destination, + GFileCopyFlags flags, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GError **error); + void (* move_async) (GFile *source, + GFile *destination, + GFileCopyFlags flags, + int io_priority, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* move_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + void (* mount_mountable) (GFile *file, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFile * (* mount_mountable_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + void (* unmount_mountable) (GFile *file, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* unmount_mountable_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + void (* eject_mountable) (GFile *file, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_mountable_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + void (* mount_enclosing_volume) (GFile *location, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* mount_enclosing_volume_finish) (GFile *location, + GAsyncResult *result, + GError **error); + + GFileMonitor * (* monitor_dir) (GFile *file, + GFileMonitorFlags flags, + GCancellable *cancellable, + GError **error); + GFileMonitor * (* monitor_file) (GFile *file, + GFileMonitorFlags flags, + GCancellable *cancellable, + GError **error); + + GFileIOStream * (* open_readwrite) (GFile *file, + GCancellable *cancellable, + GError **error); + void (* open_readwrite_async) (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileIOStream * (* open_readwrite_finish) (GFile *file, + GAsyncResult *res, + GError **error); + GFileIOStream * (* create_readwrite) (GFile *file, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); + void (* create_readwrite_async) (GFile *file, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileIOStream * (* create_readwrite_finish) (GFile *file, + GAsyncResult *res, + GError **error); + GFileIOStream * (* replace_readwrite) (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); + void (* replace_readwrite_async) (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileIOStream * (* replace_readwrite_finish) (GFile *file, + GAsyncResult *res, + GError **error); + + void (* start_mountable) (GFile *file, + GDriveStartFlags flags, + GMountOperation *start_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* start_mountable_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + void (* stop_mountable) (GFile *file, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* stop_mountable_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + gboolean supports_thread_contexts; + + void (* unmount_mountable_with_operation) (GFile *file, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* unmount_mountable_with_operation_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + void (* eject_mountable_with_operation) (GFile *file, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_mountable_with_operation_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + void (* poll_mountable) (GFile *file, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* poll_mountable_finish) (GFile *file, + GAsyncResult *result, + GError **error); + + gboolean (* measure_disk_usage) (GFile *file, + GFileMeasureFlags flags, + GCancellable *cancellable, + GFileMeasureProgressCallback progress_callback, + gpointer progress_data, + guint64 *disk_usage, + guint64 *num_dirs, + guint64 *num_files, + GError **error); + void (* measure_disk_usage_async) (GFile *file, + GFileMeasureFlags flags, + gint io_priority, + GCancellable *cancellable, + GFileMeasureProgressCallback progress_callback, + gpointer progress_data, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* measure_disk_usage_finish) (GFile *file, + GAsyncResult *result, + guint64 *disk_usage, + guint64 *num_dirs, + guint64 *num_files, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_file_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFile * g_file_new_for_path (const char *path); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_new_for_uri (const char *uri); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_new_for_commandline_arg (const char *arg); +GLIB_AVAILABLE_IN_2_36 +GFile * g_file_new_for_commandline_arg_and_cwd (const gchar *arg, + const gchar *cwd); +GLIB_AVAILABLE_IN_2_32 +GFile * g_file_new_tmp (const char *tmpl, + GFileIOStream **iostream, + GError **error); +GLIB_AVAILABLE_IN_2_74 +void g_file_new_tmp_async (const char *tmpl, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_74 +GFile * g_file_new_tmp_finish (GAsyncResult *result, + GFileIOStream **iostream, + GError **error); +GLIB_AVAILABLE_IN_2_74 +void g_file_new_tmp_dir_async (const char *tmpl, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_74 +GFile * g_file_new_tmp_dir_finish (GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_parse_name (const char *parse_name); +GLIB_AVAILABLE_IN_2_56 +GFile * g_file_new_build_filename (const gchar *first_element, + ...) G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_ALL +GFile * g_file_dup (GFile *file); +GLIB_AVAILABLE_IN_ALL +guint g_file_hash (gconstpointer file); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_equal (GFile *file1, + GFile *file2); +GLIB_AVAILABLE_IN_ALL +char * g_file_get_basename (GFile *file); +GLIB_AVAILABLE_IN_ALL +char * g_file_get_path (GFile *file); +GLIB_AVAILABLE_IN_2_56 +const char * g_file_peek_path (GFile *file); +GLIB_AVAILABLE_IN_ALL +char * g_file_get_uri (GFile *file); +GLIB_AVAILABLE_IN_ALL +char * g_file_get_parse_name (GFile *file); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_get_parent (GFile *file); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_has_parent (GFile *file, + GFile *parent); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_get_child (GFile *file, + const char *name); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_get_child_for_display_name (GFile *file, + const char *display_name, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_has_prefix (GFile *file, + GFile *prefix); +GLIB_AVAILABLE_IN_ALL +char * g_file_get_relative_path (GFile *parent, + GFile *descendant); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_resolve_relative_path (GFile *file, + const char *relative_path); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_is_native (GFile *file); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_has_uri_scheme (GFile *file, + const char *uri_scheme); +GLIB_AVAILABLE_IN_ALL +char * g_file_get_uri_scheme (GFile *file); +GLIB_AVAILABLE_IN_ALL +GFileInputStream * g_file_read (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_read_async (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileInputStream * g_file_read_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileOutputStream * g_file_append_to (GFile *file, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileOutputStream * g_file_create (GFile *file, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileOutputStream * g_file_replace (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_append_to_async (GFile *file, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileOutputStream * g_file_append_to_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_create_async (GFile *file, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileOutputStream * g_file_create_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_replace_async (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileOutputStream * g_file_replace_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileIOStream * g_file_open_readwrite (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_open_readwrite_async (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileIOStream * g_file_open_readwrite_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileIOStream * g_file_create_readwrite (GFile *file, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_create_readwrite_async (GFile *file, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileIOStream * g_file_create_readwrite_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileIOStream * g_file_replace_readwrite (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_replace_readwrite_async (GFile *file, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileIOStream * g_file_replace_readwrite_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_query_exists (GFile *file, + GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +GFileType g_file_query_file_type (GFile *file, + GFileQueryInfoFlags flags, + GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +GFileInfo * g_file_query_info (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_query_info_async (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileInfo * g_file_query_info_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileInfo * g_file_query_filesystem_info (GFile *file, + const char *attributes, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_query_filesystem_info_async (GFile *file, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileInfo * g_file_query_filesystem_info_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GMount * g_file_find_enclosing_mount (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_find_enclosing_mount_async (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GMount * g_file_find_enclosing_mount_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileEnumerator * g_file_enumerate_children (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_enumerate_children_async (GFile *file, + const char *attributes, + GFileQueryInfoFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileEnumerator * g_file_enumerate_children_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_set_display_name (GFile *file, + const char *display_name, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_set_display_name_async (GFile *file, + const char *display_name, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_set_display_name_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_delete (GFile *file, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_34 +void g_file_delete_async (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_34 +gboolean g_file_delete_finish (GFile *file, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_trash (GFile *file, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_38 +void g_file_trash_async (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_38 +gboolean g_file_trash_finish (GFile *file, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_copy (GFile *source, + GFile *destination, + GFileCopyFlags flags, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_copy_async (GFile *source, + GFile *destination, + GFileCopyFlags flags, + int io_priority, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_copy_finish (GFile *file, + GAsyncResult *res, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_move (GFile *source, + GFile *destination, + GFileCopyFlags flags, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GError **error); +GLIB_AVAILABLE_IN_2_72 +void g_file_move_async (GFile *source, + GFile *destination, + GFileCopyFlags flags, + int io_priority, + GCancellable *cancellable, + GFileProgressCallback progress_callback, + gpointer progress_callback_data, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_72 +gboolean g_file_move_finish (GFile *file, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_make_directory (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_38 +void g_file_make_directory_async (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_38 +gboolean g_file_make_directory_finish (GFile *file, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_make_directory_with_parents (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_make_symbolic_link (GFile *file, + const char *symlink_value, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_74 +void g_file_make_symbolic_link_async (GFile *file, + const char *symlink_value, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_74 +gboolean g_file_make_symbolic_link_finish (GFile *file, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileAttributeInfoList *g_file_query_settable_attributes (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileAttributeInfoList *g_file_query_writable_namespaces (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attribute (GFile *file, + const char *attribute, + GFileAttributeType type, + gpointer value_p, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attributes_from_info (GFile *file, + GFileInfo *info, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_set_attributes_async (GFile *file, + GFileInfo *info, + GFileQueryInfoFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attributes_finish (GFile *file, + GAsyncResult *result, + GFileInfo **info, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attribute_string (GFile *file, + const char *attribute, + const char *value, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attribute_byte_string (GFile *file, + const char *attribute, + const char *value, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attribute_uint32 (GFile *file, + const char *attribute, + guint32 value, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attribute_int32 (GFile *file, + const char *attribute, + gint32 value, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attribute_uint64 (GFile *file, + const char *attribute, + guint64 value, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_attribute_int64 (GFile *file, + const char *attribute, + gint64 value, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_mount_enclosing_volume (GFile *location, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_mount_enclosing_volume_finish (GFile *location, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_mount_mountable (GFile *file, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_mount_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error); +GLIB_DEPRECATED_FOR(g_file_unmount_mountable_with_operation) +void g_file_unmount_mountable (GFile *file, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_DEPRECATED_FOR(g_file_unmount_mountable_with_operation_finish) +gboolean g_file_unmount_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_unmount_mountable_with_operation (GFile *file, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_unmount_mountable_with_operation_finish (GFile *file, + GAsyncResult *result, + GError **error); +GLIB_DEPRECATED_FOR(g_file_eject_mountable_with_operation) +void g_file_eject_mountable (GFile *file, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_DEPRECATED_FOR(g_file_eject_mountable_with_operation_finish) +gboolean g_file_eject_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_eject_mountable_with_operation (GFile *file, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_eject_mountable_with_operation_finish (GFile *file, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_68 +char * g_file_build_attribute_list_for_copy (GFile *file, + GFileCopyFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_copy_attributes (GFile *source, + GFile *destination, + GFileCopyFlags flags, + GCancellable *cancellable, + GError **error); + + +GLIB_AVAILABLE_IN_ALL +GFileMonitor* g_file_monitor_directory (GFile *file, + GFileMonitorFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileMonitor* g_file_monitor_file (GFile *file, + GFileMonitorFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GFileMonitor* g_file_monitor (GFile *file, + GFileMonitorFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_38 +gboolean g_file_measure_disk_usage (GFile *file, + GFileMeasureFlags flags, + GCancellable *cancellable, + GFileMeasureProgressCallback progress_callback, + gpointer progress_data, + guint64 *disk_usage, + guint64 *num_dirs, + guint64 *num_files, + GError **error); + +GLIB_AVAILABLE_IN_2_38 +void g_file_measure_disk_usage_async (GFile *file, + GFileMeasureFlags flags, + gint io_priority, + GCancellable *cancellable, + GFileMeasureProgressCallback progress_callback, + gpointer progress_data, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_38 +gboolean g_file_measure_disk_usage_finish (GFile *file, + GAsyncResult *result, + guint64 *disk_usage, + guint64 *num_dirs, + guint64 *num_files, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_file_start_mountable (GFile *file, + GDriveStartFlags flags, + GMountOperation *start_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_start_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_stop_mountable (GFile *file, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_stop_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_file_poll_mountable (GFile *file, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_poll_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error); + +/* Utilities */ + +GLIB_AVAILABLE_IN_ALL +GAppInfo *g_file_query_default_handler (GFile *file, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_60 +void g_file_query_default_handler_async (GFile *file, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_60 +GAppInfo *g_file_query_default_handler_finish (GFile *file, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_load_contents (GFile *file, + GCancellable *cancellable, + char **contents, + gsize *length, + char **etag_out, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_load_contents_async (GFile *file, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_load_contents_finish (GFile *file, + GAsyncResult *res, + char **contents, + gsize *length, + char **etag_out, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_load_partial_contents_async (GFile *file, + GCancellable *cancellable, + GFileReadMoreCallback read_more_callback, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_load_partial_contents_finish (GFile *file, + GAsyncResult *res, + char **contents, + gsize *length, + char **etag_out, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_replace_contents (GFile *file, + const char *contents, + gsize length, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + char **new_etag, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_replace_contents_async (GFile *file, + const char *contents, + gsize length, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_40 +void g_file_replace_contents_bytes_async (GFile *file, + GBytes *contents, + const char *etag, + gboolean make_backup, + GFileCreateFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_replace_contents_finish (GFile *file, + GAsyncResult *res, + char **new_etag, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_supports_thread_contexts (GFile *file); + +GLIB_AVAILABLE_IN_2_56 +GBytes *g_file_load_bytes (GFile *file, + GCancellable *cancellable, + gchar **etag_out, + GError **error); +GLIB_AVAILABLE_IN_2_56 +void g_file_load_bytes_async (GFile *file, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_56 +GBytes *g_file_load_bytes_finish (GFile *file, + GAsyncResult *result, + gchar **etag_out, + GError **error); + +G_END_DECLS + +#endif /* __G_FILE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileattribute.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileattribute.h new file mode 100644 index 0000000..f139c1e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileattribute.h @@ -0,0 +1,86 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_ATTRIBUTE_H__ +#define __G_FILE_ATTRIBUTE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GFileAttributeInfo: + * @name: the name of the attribute. + * @type: the #GFileAttributeType type of the attribute. + * @flags: a set of #GFileAttributeInfoFlags. + * + * Information about a specific attribute. + **/ +struct _GFileAttributeInfo +{ + char *name; + GFileAttributeType type; + GFileAttributeInfoFlags flags; +}; + +/** + * GFileAttributeInfoList: + * @infos: an array of #GFileAttributeInfos. + * @n_infos: the number of values in the array. + * + * Acts as a lightweight registry for possible valid file attributes. + * The registry stores Key-Value pair formats as #GFileAttributeInfos. + **/ +struct _GFileAttributeInfoList +{ + GFileAttributeInfo *infos; + int n_infos; +}; + +#define G_TYPE_FILE_ATTRIBUTE_INFO_LIST (g_file_attribute_info_list_get_type ()) +GLIB_AVAILABLE_IN_ALL +GType g_file_attribute_info_list_get_type (void); + +GLIB_AVAILABLE_IN_ALL +GFileAttributeInfoList * g_file_attribute_info_list_new (void); +GLIB_AVAILABLE_IN_ALL +GFileAttributeInfoList * g_file_attribute_info_list_ref (GFileAttributeInfoList *list); +GLIB_AVAILABLE_IN_ALL +void g_file_attribute_info_list_unref (GFileAttributeInfoList *list); +GLIB_AVAILABLE_IN_ALL +GFileAttributeInfoList * g_file_attribute_info_list_dup (GFileAttributeInfoList *list); +GLIB_AVAILABLE_IN_ALL +const GFileAttributeInfo *g_file_attribute_info_list_lookup (GFileAttributeInfoList *list, + const char *name); +GLIB_AVAILABLE_IN_ALL +void g_file_attribute_info_list_add (GFileAttributeInfoList *list, + const char *name, + GFileAttributeType type, + GFileAttributeInfoFlags flags); + +G_END_DECLS + +#endif /* __G_FILE_INFO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileenumerator.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileenumerator.h new file mode 100644 index 0000000..68d4b94 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileenumerator.h @@ -0,0 +1,154 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_ENUMERATOR_H__ +#define __G_FILE_ENUMERATOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE_ENUMERATOR (g_file_enumerator_get_type ()) +#define G_FILE_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_ENUMERATOR, GFileEnumerator)) +#define G_FILE_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_ENUMERATOR, GFileEnumeratorClass)) +#define G_IS_FILE_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_ENUMERATOR)) +#define G_IS_FILE_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_ENUMERATOR)) +#define G_FILE_ENUMERATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_ENUMERATOR, GFileEnumeratorClass)) + +/** + * GFileEnumerator: + * + * A per matched file iterator. + **/ +typedef struct _GFileEnumeratorClass GFileEnumeratorClass; +typedef struct _GFileEnumeratorPrivate GFileEnumeratorPrivate; + +struct _GFileEnumerator +{ + GObject parent_instance; + + /*< private >*/ + GFileEnumeratorPrivate *priv; +}; + +struct _GFileEnumeratorClass +{ + GObjectClass parent_class; + + /* Virtual Table */ + + GFileInfo * (* next_file) (GFileEnumerator *enumerator, + GCancellable *cancellable, + GError **error); + gboolean (* close_fn) (GFileEnumerator *enumerator, + GCancellable *cancellable, + GError **error); + + void (* next_files_async) (GFileEnumerator *enumerator, + int num_files, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GList * (* next_files_finish) (GFileEnumerator *enumerator, + GAsyncResult *result, + GError **error); + void (* close_async) (GFileEnumerator *enumerator, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* close_finish) (GFileEnumerator *enumerator, + GAsyncResult *result, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); + void (*_g_reserved7) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_file_enumerator_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_file_enumerator_next_file (GFileEnumerator *enumerator, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_enumerator_close (GFileEnumerator *enumerator, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_enumerator_next_files_async (GFileEnumerator *enumerator, + int num_files, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GList * g_file_enumerator_next_files_finish (GFileEnumerator *enumerator, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_enumerator_close_async (GFileEnumerator *enumerator, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_enumerator_close_finish (GFileEnumerator *enumerator, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_enumerator_is_closed (GFileEnumerator *enumerator); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_enumerator_has_pending (GFileEnumerator *enumerator); +GLIB_AVAILABLE_IN_ALL +void g_file_enumerator_set_pending (GFileEnumerator *enumerator, + gboolean pending); +GLIB_AVAILABLE_IN_ALL +GFile * g_file_enumerator_get_container (GFileEnumerator *enumerator); +GLIB_AVAILABLE_IN_2_36 +GFile * g_file_enumerator_get_child (GFileEnumerator *enumerator, + GFileInfo *info); + +GLIB_AVAILABLE_IN_2_44 +gboolean g_file_enumerator_iterate (GFileEnumerator *direnum, + GFileInfo **out_info, + GFile **out_child, + GCancellable *cancellable, + GError **error); + + +G_END_DECLS + +#endif /* __G_FILE_ENUMERATOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileicon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileicon.h new file mode 100644 index 0000000..a3229cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileicon.h @@ -0,0 +1,59 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_ICON_H__ +#define __G_FILE_ICON_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE_ICON (g_file_icon_get_type ()) +#define G_FILE_ICON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_ICON, GFileIcon)) +#define G_FILE_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_ICON, GFileIconClass)) +#define G_IS_FILE_ICON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_ICON)) +#define G_IS_FILE_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_ICON)) +#define G_FILE_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_ICON, GFileIconClass)) + +/** + * GFileIcon: + * + * Gets an icon for a #GFile. Implements #GLoadableIcon. + **/ +typedef struct _GFileIconClass GFileIconClass; + +GLIB_AVAILABLE_IN_ALL +GType g_file_icon_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GIcon * g_file_icon_new (GFile *file); + +GLIB_AVAILABLE_IN_ALL +GFile * g_file_icon_get_file (GFileIcon *icon); + +G_END_DECLS + +#endif /* __G_FILE_ICON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileinfo.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileinfo.h new file mode 100644 index 0000000..28bddfe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileinfo.h @@ -0,0 +1,1363 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_INFO_H__ +#define __G_FILE_INFO_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE_INFO (g_file_info_get_type ()) +#define G_FILE_INFO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_INFO, GFileInfo)) +#define G_FILE_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_INFO, GFileInfoClass)) +#define G_IS_FILE_INFO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_INFO)) +#define G_IS_FILE_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_INFO)) +#define G_FILE_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_INFO, GFileInfoClass)) + +/** + * GFileInfo: + * + * Stores information about a file system object referenced by a #GFile. + **/ +typedef struct _GFileInfoClass GFileInfoClass; + + +/* Common Attributes: */ +/** + * G_FILE_ATTRIBUTE_STANDARD_TYPE: + * + * A key in the "standard" namespace for storing file types. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + * + * The value for this key should contain a #GFileType. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_TYPE "standard::type" /* uint32 (GFileType) */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN: + * + * A key in the "standard" namespace for checking if a file is hidden. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN "standard::is-hidden" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP: + * + * A key in the "standard" namespace for checking if a file is a backup file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP "standard::is-backup" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK: + * + * A key in the "standard" namespace for checking if the file is a symlink. + * Typically the actual type is something else, if we followed the symlink + * to get the type. + * + * On Windows NTFS mountpoints are considered to be symlinks as well. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "standard::is-symlink" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL: + * + * A key in the "standard" namespace for checking if a file is virtual. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL "standard::is-virtual" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE: + * + * A key in the "standard" namespace for checking if a file is + * volatile. This is meant for opaque, non-POSIX-like backends to + * indicate that the URI is not persistent. Applications should look + * at %G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET for the persistent URI. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.46 + **/ +#define G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE "standard::is-volatile" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_NAME: + * + * A key in the "standard" namespace for getting the name of the file. + * + * The name is the on-disk filename which may not be in any known encoding, + * and can thus not be generally displayed as is. It is guaranteed to be set on + * every file. + * + * Use %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME if you need to display the + * name in a user interface. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_NAME "standard::name" /* byte string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME: + * + * A key in the "standard" namespace for getting the display name of the file. + * + * A display name is guaranteed to be in UTF-8 and can thus be displayed in + * the UI. It is guaranteed to be set on every file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "standard::display-name" /* string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME: + * + * A key in the "standard" namespace for edit name of the file. + * + * An edit name is similar to the display name, but it is meant to be + * used when you want to rename the file in the UI. The display name + * might contain information you don't want in the new filename (such as + * "(invalid unicode)" if the filename was in an invalid encoding). + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME "standard::edit-name" /* string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_COPY_NAME: + * + * A key in the "standard" namespace for getting the copy name of the file. + * + * The copy name is an optional version of the name. If available it's always + * in UTF8, and corresponds directly to the original filename (only transcoded to + * UTF8). This is useful if you want to copy the file to another filesystem that + * might have a different encoding. If the filename is not a valid string in the + * encoding selected for the filesystem it is in then the copy name will not be set. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_COPY_NAME "standard::copy-name" /* string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION: + * + * A key in the "standard" namespace for getting the description of the file. + * + * The description is a utf8 string that describes the file, generally containing + * the filename, but can also contain further information. Example descriptions + * could be "filename (on hostname)" for a remote file or "filename (in trash)" + * for a file in the trash. This is useful for instance as the window title + * when displaying a directory or for a bookmarks menu. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION "standard::description" /* string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_ICON: + * + * A key in the "standard" namespace for getting the icon for the file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT. + * + * The value for this key should contain a #GIcon. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_ICON "standard::icon" /* object (GIcon) */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON: + * + * A key in the "standard" namespace for getting the symbolic icon for the file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT. + * + * The value for this key should contain a #GIcon. + * + * Since: 2.34 + **/ +#define G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON "standard::symbolic-icon" /* object (GIcon) */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE: + * + * A key in the "standard" namespace for getting the content type of the file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + * + * The value for this key should contain a valid content type. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "standard::content-type" /* string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE: + * + * A key in the "standard" namespace for getting the fast content type. + * + * The fast content type isn't as reliable as the regular one, as it + * only uses the filename to guess it, but it is faster to calculate than the + * regular content type. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + * + **/ +#define G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE "standard::fast-content-type" /* string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_SIZE: + * + * A key in the "standard" namespace for getting the file's size (in bytes). + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_SIZE "standard::size" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE: + * + * A key in the "standard" namespace for getting the amount of disk space + * that is consumed by the file (in bytes). + * + * This will generally be larger than the file size (due to block size + * overhead) but can occasionally be smaller (for example, for sparse files). + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64. + * + * Since: 2.20 + **/ +#define G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE "standard::allocated-size" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET: + * + * A key in the "standard" namespace for getting the symlink target, if the file + * is a symlink. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET "standard::symlink-target" /* byte string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_TARGET_URI: + * + * A key in the "standard" namespace for getting the target URI for the file, in + * the case of %G_FILE_TYPE_SHORTCUT or %G_FILE_TYPE_MOUNTABLE files. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_TARGET_URI "standard::target-uri" /* string */ + +/** + * G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER: + * + * A key in the "standard" namespace for setting the sort order of a file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_INT32. + * + * An example use would be in file managers, which would use this key + * to set the order files are displayed. Files with smaller sort order + * should be sorted first, and files without sort order as if sort order + * was zero. + **/ +#define G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER "standard::sort-order" /* int32 */ + +/* Entity tags, used to avoid missing updates on save */ + +/** + * G_FILE_ATTRIBUTE_ETAG_VALUE: + * + * A key in the "etag" namespace for getting the value of the file's + * entity tag. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_ETAG_VALUE "etag::value" /* string */ + +/* File identifier, for e.g. avoiding loops when doing recursive + * directory scanning + */ + +/** + * G_FILE_ATTRIBUTE_ID_FILE: + * + * A key in the "id" namespace for getting a file identifier. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + * + * An example use would be during listing files, to avoid recursive + * directory scanning. + **/ +#define G_FILE_ATTRIBUTE_ID_FILE "id::file" /* string */ + +/** + * G_FILE_ATTRIBUTE_ID_FILESYSTEM: + * + * A key in the "id" namespace for getting the file system identifier. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + * + * An example use would be during drag and drop to see if the source + * and target are on the same filesystem (default to move) or not (default + * to copy). + **/ +#define G_FILE_ATTRIBUTE_ID_FILESYSTEM "id::filesystem" /* string */ + +/* Calculated Access Rights for current user */ + +/** + * G_FILE_ATTRIBUTE_ACCESS_CAN_READ: + * + * A key in the "access" namespace for getting read privileges. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * This attribute will be %TRUE if the user is able to read the file. + **/ +#define G_FILE_ATTRIBUTE_ACCESS_CAN_READ "access::can-read" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE: + * + * A key in the "access" namespace for getting write privileges. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * This attribute will be %TRUE if the user is able to write to the file. + **/ +#define G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE "access::can-write" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE: + * + * A key in the "access" namespace for getting execution privileges. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * This attribute will be %TRUE if the user is able to execute the file. + **/ +#define G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE "access::can-execute" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE: + * + * A key in the "access" namespace for checking deletion privileges. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * This attribute will be %TRUE if the user is able to delete the file. + **/ +#define G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE "access::can-delete" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH: + * + * A key in the "access" namespace for checking trashing privileges. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * This attribute will be %TRUE if the user is able to move the file to + * the trash. + **/ +#define G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH "access::can-trash" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME: + * + * A key in the "access" namespace for checking renaming privileges. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * This attribute will be %TRUE if the user is able to rename the file. + **/ +#define G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME "access::can-rename" /* boolean */ + +/* TODO: Should we have special version for directories? can_enumerate, etc */ + +/* Mountable attributes */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) is mountable. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT "mountable::can-mount" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) is unmountable. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT "mountable::can-unmount" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) can be ejected. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT "mountable::can-eject" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE: + * + * A key in the "mountable" namespace for getting the unix device. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE "mountable::unix-device" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE: + * + * A key in the "mountable" namespace for getting the unix device file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + * + * Since: 2.22 + **/ +#define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE "mountable::unix-device-file" /* string */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI: + * + * A key in the "mountable" namespace for getting the HAL UDI for the mountable + * file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI "mountable::hal-udi" /* string */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) can be started. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.22 + */ +#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START "mountable::can-start" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) can be started degraded. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.22 + */ +#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED "mountable::can-start-degraded" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) can be stopped. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.22 + */ +#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP "mountable::can-stop" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE: + * + * A key in the "mountable" namespace for getting the #GDriveStartStopType. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + * + * Since: 2.22 + */ +#define G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE "mountable::start-stop-type" /* uint32 (GDriveStartStopType) */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) can be polled. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.22 + */ +#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL "mountable::can-poll" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC: + * + * A key in the "mountable" namespace for checking if a file (of + * type G_FILE_TYPE_MOUNTABLE) is automatically polled for media. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.22 + */ +#define G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC "mountable::is-media-check-automatic" /* boolean */ + +/* Time attributes */ + +/** + * G_FILE_ATTRIBUTE_TIME_MODIFIED: + * + * A key in the "time" namespace for getting the time the file was last + * modified. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64, and + * contains the time since the file was modified, in seconds since the UNIX + * epoch. + **/ +#define G_FILE_ATTRIBUTE_TIME_MODIFIED "time::modified" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC: + * + * A key in the "time" namespace for getting the microseconds of the time + * the file was last modified. + * + * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_MODIFIED. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC "time::modified-usec" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TIME_MODIFIED_NSEC: + * + * A key in the "time" namespace for getting the nanoseconds of the time + * the file was last modified. This should be used in conjunction with + * #G_FILE_ATTRIBUTE_TIME_MODIFIED. Corresponding #GFileAttributeType is + * %G_FILE_ATTRIBUTE_TYPE_UINT32. + * + * Since: 2.74 + **/ +#define G_FILE_ATTRIBUTE_TIME_MODIFIED_NSEC "time::modified-nsec" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TIME_ACCESS: + * + * A key in the "time" namespace for getting the time the file was last + * accessed. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64, and + * contains the time since the file was last accessed, in seconds since the + * UNIX epoch. + **/ +#define G_FILE_ATTRIBUTE_TIME_ACCESS "time::access" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_TIME_ACCESS_USEC: + * + * A key in the "time" namespace for getting the microseconds of the time + * the file was last accessed. + * + * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_ACCESS. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_TIME_ACCESS_USEC "time::access-usec" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TIME_ACCESS_NSEC: + * + * A key in the "time" namespace for getting the nanoseconds of the time + * the file was last accessed. This should be used in conjunction with + * #G_FILE_ATTRIBUTE_TIME_ACCESS. Corresponding #GFileAttributeType is + * %G_FILE_ATTRIBUTE_TYPE_UINT32. + * + * Since: 2.74 + **/ +#define G_FILE_ATTRIBUTE_TIME_ACCESS_NSEC "time::access-nsec" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TIME_CHANGED: + * + * A key in the "time" namespace for getting the time the file was last + * changed. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64, + * and contains the time since the file was last changed, in seconds since + * the UNIX epoch. + * + * This corresponds to the traditional UNIX ctime. + **/ +#define G_FILE_ATTRIBUTE_TIME_CHANGED "time::changed" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_TIME_CHANGED_USEC: + * + * A key in the "time" namespace for getting the microseconds of the time + * the file was last changed. + * + * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_CHANGED. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_TIME_CHANGED_USEC "time::changed-usec" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TIME_CHANGED_NSEC: + * + * A key in the "time" namespace for getting the nanoseconds of the time + * the file was last changed. This should be used in conjunction with + * #G_FILE_ATTRIBUTE_TIME_CHANGED. Corresponding #GFileAttributeType is + * %G_FILE_ATTRIBUTE_TYPE_UINT32. + * + * Since: 2.74 + **/ +#define G_FILE_ATTRIBUTE_TIME_CHANGED_NSEC "time::changed-nsec" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TIME_CREATED: + * + * A key in the "time" namespace for getting the time the file was created. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64, + * and contains the time since the file was created, in seconds since the UNIX + * epoch. + * + * This may correspond to Linux `stx_btime`, FreeBSD `st_birthtim`, NetBSD + * `st_birthtime` or NTFS `ctime`. + **/ +#define G_FILE_ATTRIBUTE_TIME_CREATED "time::created" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_TIME_CREATED_USEC: + * + * A key in the "time" namespace for getting the microseconds of the time + * the file was created. + * + * This should be used in conjunction with %G_FILE_ATTRIBUTE_TIME_CREATED. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_TIME_CREATED_USEC "time::created-usec" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TIME_CREATED_NSEC: + * + * A key in the "time" namespace for getting the nanoseconds of the time + * the file was created. This should be used in conjunction with + * #G_FILE_ATTRIBUTE_TIME_CREATED. Corresponding #GFileAttributeType is + * %G_FILE_ATTRIBUTE_TYPE_UINT32. + * + * Since: 2.74 + **/ +#define G_FILE_ATTRIBUTE_TIME_CREATED_NSEC "time::created-nsec" /* uint32 */ + +/* Unix specific attributes */ + +/** + * G_FILE_ATTRIBUTE_UNIX_DEVICE: + * + * A key in the "unix" namespace for getting the device id of the device the + * file is located on (see stat() documentation). + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_UNIX_DEVICE "unix::device" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_INODE: + * + * A key in the "unix" namespace for getting the inode of the file. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64. + **/ +#define G_FILE_ATTRIBUTE_UNIX_INODE "unix::inode" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_MODE: + * + * A key in the "unix" namespace for getting the mode of the file + * (e.g. whether the file is a regular file, symlink, etc). + * + * See the documentation for `lstat()`: this attribute is equivalent to + * the `st_mode` member of `struct stat`, and includes both the file type + * and permissions. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_UNIX_MODE "unix::mode" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_NLINK: + * + * A key in the "unix" namespace for getting the number of hard links + * for a file. + * + * See the documentation for `lstat()`. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_UNIX_NLINK "unix::nlink" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_UID: + * + * A key in the "unix" namespace for getting the user ID for the file. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_UNIX_UID "unix::uid" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_GID: + * + * A key in the "unix" namespace for getting the group ID for the file. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_UNIX_GID "unix::gid" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_RDEV: + * + * A key in the "unix" namespace for getting the device ID for the file + * (if it is a special file). + * + * See the documentation for `lstat()`. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_UNIX_RDEV "unix::rdev" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE: + * + * A key in the "unix" namespace for getting the block size for the file + * system. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE "unix::block-size" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_BLOCKS: + * + * A key in the "unix" namespace for getting the number of blocks allocated + * for the file. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64. + **/ +#define G_FILE_ATTRIBUTE_UNIX_BLOCKS "unix::blocks" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT: + * + * A key in the "unix" namespace for checking if the file represents a + * UNIX mount point. + * + * This attribute is %TRUE if the file is a UNIX mount point. + * + * Since 2.58, `/` is considered to be a mount point. + * + * This attribute is only available for UNIX file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT "unix::is-mountpoint" /* boolean */ + +/* DOS specific attributes */ + +/** + * G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE: + * + * A key in the "dos" namespace for checking if the file's archive flag + * is set. + * + * This attribute is %TRUE if the archive flag is set. + * + * This attribute is only available for DOS file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE "dos::is-archive" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_DOS_IS_SYSTEM: + * + * A key in the "dos" namespace for checking if the file's backup flag + * is set. + * + * This attribute is %TRUE if the backup flag is set. + * + * This attribute is only available for DOS file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_DOS_IS_SYSTEM "dos::is-system" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_DOS_IS_MOUNTPOINT: + * + * A key in the "dos" namespace for checking if the file is a NTFS mount point + * (a volume mount or a junction point). + * + * This attribute is %TRUE if file is a reparse point of type + * [IO_REPARSE_TAG_MOUNT_POINT](https://msdn.microsoft.com/en-us/library/dd541667.aspx). + * + * This attribute is only available for DOS file systems. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.60 + **/ +#define G_FILE_ATTRIBUTE_DOS_IS_MOUNTPOINT "dos::is-mountpoint" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_DOS_REPARSE_POINT_TAG: + * + * A key in the "dos" namespace for getting the file NTFS reparse tag. + * + * This value is 0 for files that are not reparse points. + * + * See the [Reparse Tags](https://msdn.microsoft.com/en-us/library/dd541667.aspx) + * page for possible reparse tag values. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + * + * Since: 2.60 + **/ +#define G_FILE_ATTRIBUTE_DOS_REPARSE_POINT_TAG "dos::reparse-point-tag" /* uint32 */ + +/* Owner attributes */ + +/** + * G_FILE_ATTRIBUTE_OWNER_USER: + * + * A key in the "owner" namespace for getting the user name of the + * file's owner. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_OWNER_USER "owner::user" /* string */ + +/** + * G_FILE_ATTRIBUTE_OWNER_USER_REAL: + * + * A key in the "owner" namespace for getting the real name of the + * user that owns the file. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_OWNER_USER_REAL "owner::user-real" /* string */ + +/** + * G_FILE_ATTRIBUTE_OWNER_GROUP: + * + * A key in the "owner" namespace for getting the file owner's group. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_OWNER_GROUP "owner::group" /* string */ + +/* Thumbnails */ + +/** + * G_FILE_ATTRIBUTE_THUMBNAIL_PATH: + * + * A key in the "thumbnail" namespace for getting the path to the thumbnail + * image. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING. + **/ +#define G_FILE_ATTRIBUTE_THUMBNAIL_PATH "thumbnail::path" /* bytestring */ +/** + * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED: + * + * A key in the "thumbnail" namespace for checking if thumbnailing failed. + * + * This attribute is %TRUE if thumbnailing failed. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED "thumbnail::failed" /* boolean */ +/** + * G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID: + * + * A key in the "thumbnail" namespace for checking whether the thumbnail is outdated. + * + * This attribute is %TRUE if the thumbnail is up-to-date with the file it represents, + * and %FALSE if the file has been modified since the thumbnail was generated. + * + * If %G_FILE_ATTRIBUTE_THUMBNAILING_FAILED is %TRUE and this attribute is %FALSE, + * it indicates that thumbnailing may be attempted again and may succeed. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.40 + */ +#define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID "thumbnail::is-valid" /* boolean */ + +/* Preview */ + +/** + * G_FILE_ATTRIBUTE_PREVIEW_ICON: + * + * A key in the "preview" namespace for getting a #GIcon that can be + * used to get preview of the file. + * + * For example, it may be a low resolution thumbnail without metadata. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT. + * + * The value for this key should contain a #GIcon. + * + * Since: 2.20 + **/ +#define G_FILE_ATTRIBUTE_PREVIEW_ICON "preview::icon" /* object (GIcon) */ + +/* File system info (for g_file_get_filesystem_info) */ + +/** + * G_FILE_ATTRIBUTE_FILESYSTEM_SIZE: + * + * A key in the "filesystem" namespace for getting the total size (in + * bytes) of the file system, used in g_file_query_filesystem_info(). + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64. + **/ +#define G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "filesystem::size" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_FILESYSTEM_FREE: + * + * A key in the "filesystem" namespace for getting the number of bytes + * of free space left on the file system. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64. + **/ +#define G_FILE_ATTRIBUTE_FILESYSTEM_FREE "filesystem::free" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_FILESYSTEM_USED: + * + * A key in the "filesystem" namespace for getting the number of bytes + * used by data on the file system. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64. + * + * Since: 2.32 + */ +#define G_FILE_ATTRIBUTE_FILESYSTEM_USED "filesystem::used" /* uint64 */ + +/** + * G_FILE_ATTRIBUTE_FILESYSTEM_TYPE: + * + * A key in the "filesystem" namespace for getting the file system's type. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_FILESYSTEM_TYPE "filesystem::type" /* string */ + +/** + * G_FILE_ATTRIBUTE_FILESYSTEM_READONLY: + * + * A key in the "filesystem" namespace for checking if the file system + * is read only. + * + * Is set to %TRUE if the file system is read only. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_FILESYSTEM_READONLY "filesystem::readonly" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW: + * + * A key in the "filesystem" namespace for hinting a file manager + * application whether it should preview (e.g. thumbnail) files on the + * file system. + * + * The value for this key contain a #GFilesystemPreviewType. + **/ +#define G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW "filesystem::use-preview" /* uint32 (GFilesystemPreviewType) */ + +/** + * G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE: + * + * A key in the "filesystem" namespace for checking if the file system + * is remote. + * + * Is set to %TRUE if the file system is remote. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + **/ +#define G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE "filesystem::remote" /* boolean */ + +/** + * G_FILE_ATTRIBUTE_GVFS_BACKEND: + * + * A key in the "gvfs" namespace that gets the name of the current + * GVFS backend in use. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + **/ +#define G_FILE_ATTRIBUTE_GVFS_BACKEND "gvfs::backend" /* string */ + +/** + * G_FILE_ATTRIBUTE_SELINUX_CONTEXT: + * + * A key in the "selinux" namespace for getting the file's SELinux + * context. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + * + * Note that this attribute is only available if GLib has been built + * with SELinux support. + **/ +#define G_FILE_ATTRIBUTE_SELINUX_CONTEXT "selinux::context" /* string */ + +/** + * G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT: + * + * A key in the "trash" namespace for getting the number of (toplevel) items + * that are present in the `trash:///` folder. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32. + **/ +#define G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT "trash::item-count" /* uint32 */ + +/** + * G_FILE_ATTRIBUTE_TRASH_ORIG_PATH: + * + * A key in the "trash" namespace for getting the original path of a file + * inside the `trash:///` folder before it was trashed. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING. + * + * Since: 2.24 + **/ +#define G_FILE_ATTRIBUTE_TRASH_ORIG_PATH "trash::orig-path" /* byte string */ + +/** + * G_FILE_ATTRIBUTE_TRASH_DELETION_DATE: + * + * A key in the "trash" namespace for getting the deletion date and time + * of a file inside the `trash:///` folder. + * + * The format of the returned string is `YYYY-MM-DDThh:mm:ss`. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING. + * + * Since: 2.24 + **/ +#define G_FILE_ATTRIBUTE_TRASH_DELETION_DATE "trash::deletion-date" /* string */ + +/** + * G_FILE_ATTRIBUTE_RECENT_MODIFIED: + * + * A key in the "recent" namespace for getting time, when the metadata for the + * file in `recent:///` was last changed. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_INT64. + * + * Since: 2.52 + **/ +#define G_FILE_ATTRIBUTE_RECENT_MODIFIED "recent::modified" /* int64 (time_t) */ + +GLIB_AVAILABLE_IN_ALL +GType g_file_info_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFileInfo * g_file_info_new (void); +GLIB_AVAILABLE_IN_ALL +GFileInfo * g_file_info_dup (GFileInfo *other); +GLIB_AVAILABLE_IN_ALL +void g_file_info_copy_into (GFileInfo *src_info, + GFileInfo *dest_info); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_has_attribute (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_has_namespace (GFileInfo *info, + const char *name_space); +GLIB_AVAILABLE_IN_ALL +char ** g_file_info_list_attributes (GFileInfo *info, + const char *name_space); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_get_attribute_data (GFileInfo *info, + const char *attribute, + GFileAttributeType *type, + gpointer *value_pp, + GFileAttributeStatus *status); +GLIB_AVAILABLE_IN_ALL +GFileAttributeType g_file_info_get_attribute_type (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +void g_file_info_remove_attribute (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +GFileAttributeStatus g_file_info_get_attribute_status (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_set_attribute_status (GFileInfo *info, + const char *attribute, + GFileAttributeStatus status); +GLIB_AVAILABLE_IN_ALL +char * g_file_info_get_attribute_as_string (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_attribute_string (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_attribute_byte_string (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_get_attribute_boolean (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +guint32 g_file_info_get_attribute_uint32 (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +gint32 g_file_info_get_attribute_int32 (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +guint64 g_file_info_get_attribute_uint64 (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +gint64 g_file_info_get_attribute_int64 (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +GObject * g_file_info_get_attribute_object (GFileInfo *info, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +char ** g_file_info_get_attribute_stringv (GFileInfo *info, + const char *attribute); + +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute (GFileInfo *info, + const char *attribute, + GFileAttributeType type, + gpointer value_p); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_string (GFileInfo *info, + const char *attribute, + const char *attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_byte_string (GFileInfo *info, + const char *attribute, + const char *attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_boolean (GFileInfo *info, + const char *attribute, + gboolean attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_uint32 (GFileInfo *info, + const char *attribute, + guint32 attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_int32 (GFileInfo *info, + const char *attribute, + gint32 attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_uint64 (GFileInfo *info, + const char *attribute, + guint64 attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_int64 (GFileInfo *info, + const char *attribute, + gint64 attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_object (GFileInfo *info, + const char *attribute, + GObject *attr_value); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_stringv (GFileInfo *info, + const char *attribute, + char **attr_value); + +GLIB_AVAILABLE_IN_ALL +void g_file_info_clear_status (GFileInfo *info); + +/* Helper getters: */ +GLIB_AVAILABLE_IN_2_36 +GDateTime * g_file_info_get_deletion_date (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +GFileType g_file_info_get_file_type (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_get_is_hidden (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_get_is_backup (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_info_get_is_symlink (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_name (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_display_name (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_edit_name (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +GIcon * g_file_info_get_icon (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +GIcon * g_file_info_get_symbolic_icon (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_content_type (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +goffset g_file_info_get_size (GFileInfo *info); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_62_FOR(g_file_info_get_modification_date_time) +void g_file_info_get_modification_time (GFileInfo *info, + GTimeVal *result); +G_GNUC_END_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_2_62 +GDateTime * g_file_info_get_modification_date_time (GFileInfo *info); +GLIB_AVAILABLE_IN_2_70 +GDateTime * g_file_info_get_access_date_time (GFileInfo *info); +GLIB_AVAILABLE_IN_2_70 +GDateTime * g_file_info_get_creation_date_time (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_symlink_target (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +const char * g_file_info_get_etag (GFileInfo *info); +GLIB_AVAILABLE_IN_ALL +gint32 g_file_info_get_sort_order (GFileInfo *info); + +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_attribute_mask (GFileInfo *info, + GFileAttributeMatcher *mask); +GLIB_AVAILABLE_IN_ALL +void g_file_info_unset_attribute_mask (GFileInfo *info); + +/* Helper setters: */ +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_file_type (GFileInfo *info, + GFileType type); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_is_hidden (GFileInfo *info, + gboolean is_hidden); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_is_symlink (GFileInfo *info, + gboolean is_symlink); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_name (GFileInfo *info, + const char *name); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_display_name (GFileInfo *info, + const char *display_name); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_edit_name (GFileInfo *info, + const char *edit_name); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_icon (GFileInfo *info, + GIcon *icon); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_symbolic_icon (GFileInfo *info, + GIcon *icon); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_content_type (GFileInfo *info, + const char *content_type); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_size (GFileInfo *info, + goffset size); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_62_FOR(g_file_info_set_modification_date_time) +void g_file_info_set_modification_time (GFileInfo *info, + GTimeVal *mtime); +G_GNUC_END_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_2_62 +void g_file_info_set_modification_date_time (GFileInfo *info, + GDateTime *mtime); +GLIB_AVAILABLE_IN_2_70 +void g_file_info_set_access_date_time (GFileInfo *info, + GDateTime *atime); +GLIB_AVAILABLE_IN_2_70 +void g_file_info_set_creation_date_time (GFileInfo *info, + GDateTime *creation_time); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_symlink_target (GFileInfo *info, + const char *symlink_target); +GLIB_AVAILABLE_IN_ALL +void g_file_info_set_sort_order (GFileInfo *info, + gint32 sort_order); + +#define G_TYPE_FILE_ATTRIBUTE_MATCHER (g_file_attribute_matcher_get_type ()) +GLIB_AVAILABLE_IN_ALL +GType g_file_attribute_matcher_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFileAttributeMatcher *g_file_attribute_matcher_new (const char *attributes); +GLIB_AVAILABLE_IN_ALL +GFileAttributeMatcher *g_file_attribute_matcher_ref (GFileAttributeMatcher *matcher); +GLIB_AVAILABLE_IN_ALL +void g_file_attribute_matcher_unref (GFileAttributeMatcher *matcher); +GLIB_AVAILABLE_IN_ALL +GFileAttributeMatcher *g_file_attribute_matcher_subtract (GFileAttributeMatcher *matcher, + GFileAttributeMatcher *subtract); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_attribute_matcher_matches (GFileAttributeMatcher *matcher, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_attribute_matcher_matches_only (GFileAttributeMatcher *matcher, + const char *attribute); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_attribute_matcher_enumerate_namespace (GFileAttributeMatcher *matcher, + const char *ns); +GLIB_AVAILABLE_IN_ALL +const char * g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher); +GLIB_AVAILABLE_IN_2_32 +char * g_file_attribute_matcher_to_string (GFileAttributeMatcher *matcher); + +G_END_DECLS + +#endif /* __G_FILE_INFO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileinputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileinputstream.h new file mode 100644 index 0000000..83a000f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileinputstream.h @@ -0,0 +1,116 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_INPUT_STREAM_H__ +#define __G_FILE_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE_INPUT_STREAM (g_file_input_stream_get_type ()) +#define G_FILE_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_INPUT_STREAM, GFileInputStream)) +#define G_FILE_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_INPUT_STREAM, GFileInputStreamClass)) +#define G_IS_FILE_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_INPUT_STREAM)) +#define G_IS_FILE_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_INPUT_STREAM)) +#define G_FILE_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_INPUT_STREAM, GFileInputStreamClass)) + +/** + * GFileInputStream: + * + * A subclass of GInputStream for opened files. This adds + * a few file-specific operations and seeking. + * + * #GFileInputStream implements #GSeekable. + **/ +typedef struct _GFileInputStreamClass GFileInputStreamClass; +typedef struct _GFileInputStreamPrivate GFileInputStreamPrivate; + +struct _GFileInputStream +{ + GInputStream parent_instance; + + /*< private >*/ + GFileInputStreamPrivate *priv; +}; + +struct _GFileInputStreamClass +{ + GInputStreamClass parent_class; + + goffset (* tell) (GFileInputStream *stream); + gboolean (* can_seek) (GFileInputStream *stream); + gboolean (* seek) (GFileInputStream *stream, + goffset offset, + GSeekType type, + GCancellable *cancellable, + GError **error); + GFileInfo * (* query_info) (GFileInputStream *stream, + const char *attributes, + GCancellable *cancellable, + GError **error); + void (* query_info_async) (GFileInputStream *stream, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileInfo * (* query_info_finish) (GFileInputStream *stream, + GAsyncResult *result, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_file_input_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_file_input_stream_query_info (GFileInputStream *stream, + const char *attributes, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_input_stream_query_info_async (GFileInputStream *stream, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_file_input_stream_query_info_finish (GFileInputStream *stream, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#endif /* __G_FILE_FILE_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileiostream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileiostream.h new file mode 100644 index 0000000..2db4e2b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileiostream.h @@ -0,0 +1,123 @@ +/* GIO - GLib Input, Io and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_IO_STREAM_H__ +#define __G_FILE_IO_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE_IO_STREAM (g_file_io_stream_get_type ()) +#define G_FILE_IO_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_IO_STREAM, GFileIOStream)) +#define G_FILE_IO_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_IO_STREAM, GFileIOStreamClass)) +#define G_IS_FILE_IO_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_IO_STREAM)) +#define G_IS_FILE_IO_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_IO_STREAM)) +#define G_FILE_IO_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_IO_STREAM, GFileIOStreamClass)) + +/** + * GFileIOStream: + * + * A subclass of GIOStream for opened files. This adds + * a few file-specific operations and seeking and truncating. + * + * #GFileIOStream implements GSeekable. + **/ +typedef struct _GFileIOStreamClass GFileIOStreamClass; +typedef struct _GFileIOStreamPrivate GFileIOStreamPrivate; + +struct _GFileIOStream +{ + GIOStream parent_instance; + + /*< private >*/ + GFileIOStreamPrivate *priv; +}; + +struct _GFileIOStreamClass +{ + GIOStreamClass parent_class; + + goffset (* tell) (GFileIOStream *stream); + gboolean (* can_seek) (GFileIOStream *stream); + gboolean (* seek) (GFileIOStream *stream, + goffset offset, + GSeekType type, + GCancellable *cancellable, + GError **error); + gboolean (* can_truncate) (GFileIOStream *stream); + gboolean (* truncate_fn) (GFileIOStream *stream, + goffset size, + GCancellable *cancellable, + GError **error); + GFileInfo * (* query_info) (GFileIOStream *stream, + const char *attributes, + GCancellable *cancellable, + GError **error); + void (* query_info_async) (GFileIOStream *stream, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileInfo * (* query_info_finish) (GFileIOStream *stream, + GAsyncResult *result, + GError **error); + char * (* get_etag) (GFileIOStream *stream); + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_file_io_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_file_io_stream_query_info (GFileIOStream *stream, + const char *attributes, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_io_stream_query_info_async (GFileIOStream *stream, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_file_io_stream_query_info_finish (GFileIOStream *stream, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +char * g_file_io_stream_get_etag (GFileIOStream *stream); + +G_END_DECLS + +#endif /* __G_FILE_FILE_IO_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilemonitor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilemonitor.h new file mode 100644 index 0000000..06cd2d7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilemonitor.h @@ -0,0 +1,100 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_MONITOR_H__ +#define __G_FILE_MONITOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE_MONITOR (g_file_monitor_get_type ()) +#define G_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_MONITOR, GFileMonitor)) +#define G_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_MONITOR, GFileMonitorClass)) +#define G_IS_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_MONITOR)) +#define G_IS_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_MONITOR)) +#define G_FILE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_MONITOR, GFileMonitorClass)) + +typedef struct _GFileMonitorClass GFileMonitorClass; +typedef struct _GFileMonitorPrivate GFileMonitorPrivate; + +/** + * GFileMonitor: + * + * Watches for changes to a file. + **/ +struct _GFileMonitor +{ + GObject parent_instance; + + /*< private >*/ + GFileMonitorPrivate *priv; +}; + +struct _GFileMonitorClass +{ + GObjectClass parent_class; + + /* Signals */ + void (* changed) (GFileMonitor *monitor, + GFile *file, + GFile *other_file, + GFileMonitorEvent event_type); + + /* Virtual Table */ + gboolean (* cancel) (GFileMonitor *monitor); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_file_monitor_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_monitor_cancel (GFileMonitor *monitor); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_monitor_is_cancelled (GFileMonitor *monitor); +GLIB_AVAILABLE_IN_ALL +void g_file_monitor_set_rate_limit (GFileMonitor *monitor, + gint limit_msecs); + + +/* For implementations */ +GLIB_AVAILABLE_IN_ALL +void g_file_monitor_emit_event (GFileMonitor *monitor, + GFile *child, + GFile *other_file, + GFileMonitorEvent event_type); + +G_END_DECLS + +#endif /* __G_FILE_MONITOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilenamecompleter.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilenamecompleter.h new file mode 100644 index 0000000..95ecae3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilenamecompleter.h @@ -0,0 +1,81 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILENAME_COMPLETER_H__ +#define __G_FILENAME_COMPLETER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILENAME_COMPLETER (g_filename_completer_get_type ()) +#define G_FILENAME_COMPLETER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILENAME_COMPLETER, GFilenameCompleter)) +#define G_FILENAME_COMPLETER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILENAME_COMPLETER, GFilenameCompleterClass)) +#define G_FILENAME_COMPLETER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILENAME_COMPLETER, GFilenameCompleterClass)) +#define G_IS_FILENAME_COMPLETER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILENAME_COMPLETER)) +#define G_IS_FILENAME_COMPLETER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILENAME_COMPLETER)) + +/** + * GFilenameCompleter: + * + * Completes filenames based on files that exist within the file system. + **/ +typedef struct _GFilenameCompleterClass GFilenameCompleterClass; + +struct _GFilenameCompleterClass +{ + GObjectClass parent_class; + + /*< public >*/ + /* signals */ + void (* got_completion_data) (GFilenameCompleter *filename_completer); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_filename_completer_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFilenameCompleter *g_filename_completer_new (void); + +GLIB_AVAILABLE_IN_ALL +char * g_filename_completer_get_completion_suffix (GFilenameCompleter *completer, + const char *initial_text); +GLIB_AVAILABLE_IN_ALL +char ** g_filename_completer_get_completions (GFilenameCompleter *completer, + const char *initial_text); +GLIB_AVAILABLE_IN_ALL +void g_filename_completer_set_dirs_only (GFilenameCompleter *completer, + gboolean dirs_only); + +G_END_DECLS + +#endif /* __G_FILENAME_COMPLETER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileoutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileoutputstream.h new file mode 100644 index 0000000..5af8eab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfileoutputstream.h @@ -0,0 +1,124 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_FILE_OUTPUT_STREAM_H__ +#define __G_FILE_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILE_OUTPUT_STREAM (g_file_output_stream_get_type ()) +#define G_FILE_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStream)) +#define G_FILE_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStreamClass)) +#define G_IS_FILE_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_OUTPUT_STREAM)) +#define G_IS_FILE_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_OUTPUT_STREAM)) +#define G_FILE_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStreamClass)) + +/** + * GFileOutputStream: + * + * A subclass of GOutputStream for opened files. This adds + * a few file-specific operations and seeking and truncating. + * + * #GFileOutputStream implements GSeekable. + **/ +typedef struct _GFileOutputStreamClass GFileOutputStreamClass; +typedef struct _GFileOutputStreamPrivate GFileOutputStreamPrivate; + +struct _GFileOutputStream +{ + GOutputStream parent_instance; + + /*< private >*/ + GFileOutputStreamPrivate *priv; +}; + +struct _GFileOutputStreamClass +{ + GOutputStreamClass parent_class; + + goffset (* tell) (GFileOutputStream *stream); + gboolean (* can_seek) (GFileOutputStream *stream); + gboolean (* seek) (GFileOutputStream *stream, + goffset offset, + GSeekType type, + GCancellable *cancellable, + GError **error); + gboolean (* can_truncate) (GFileOutputStream *stream); + gboolean (* truncate_fn) (GFileOutputStream *stream, + goffset size, + GCancellable *cancellable, + GError **error); + GFileInfo * (* query_info) (GFileOutputStream *stream, + const char *attributes, + GCancellable *cancellable, + GError **error); + void (* query_info_async) (GFileOutputStream *stream, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GFileInfo * (* query_info_finish) (GFileOutputStream *stream, + GAsyncResult *result, + GError **error); + char * (* get_etag) (GFileOutputStream *stream); + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_file_output_stream_get_type (void) G_GNUC_CONST; + + +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_file_output_stream_query_info (GFileOutputStream *stream, + const char *attributes, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_file_output_stream_query_info_async (GFileOutputStream *stream, + const char *attributes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_file_output_stream_query_info_finish (GFileOutputStream *stream, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +char * g_file_output_stream_get_etag (GFileOutputStream *stream); + +G_END_DECLS + +#endif /* __G_FILE_FILE_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilterinputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilterinputstream.h new file mode 100644 index 0000000..09a087a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilterinputstream.h @@ -0,0 +1,80 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Christian Kellner + */ + +#ifndef __G_FILTER_INPUT_STREAM_H__ +#define __G_FILTER_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILTER_INPUT_STREAM (g_filter_input_stream_get_type ()) +#define G_FILTER_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILTER_INPUT_STREAM, GFilterInputStream)) +#define G_FILTER_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILTER_INPUT_STREAM, GFilterInputStreamClass)) +#define G_IS_FILTER_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILTER_INPUT_STREAM)) +#define G_IS_FILTER_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILTER_INPUT_STREAM)) +#define G_FILTER_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILTER_INPUT_STREAM, GFilterInputStreamClass)) + +/** + * GFilterInputStream: + * + * A base class for all input streams that work on an underlying stream. + **/ +typedef struct _GFilterInputStreamClass GFilterInputStreamClass; + +struct _GFilterInputStream +{ + GInputStream parent_instance; + + /**/ + GInputStream *base_stream; +}; + +struct _GFilterInputStreamClass +{ + GInputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_filter_input_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GInputStream * g_filter_input_stream_get_base_stream (GFilterInputStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_filter_input_stream_get_close_base_stream (GFilterInputStream *stream); +GLIB_AVAILABLE_IN_ALL +void g_filter_input_stream_set_close_base_stream (GFilterInputStream *stream, + gboolean close_base); + +G_END_DECLS + +#endif /* __G_FILTER_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilteroutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilteroutputstream.h new file mode 100644 index 0000000..5fc6b82 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gfilteroutputstream.h @@ -0,0 +1,80 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Christian Kellner + */ + +#ifndef __G_FILTER_OUTPUT_STREAM_H__ +#define __G_FILTER_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_FILTER_OUTPUT_STREAM (g_filter_output_stream_get_type ()) +#define G_FILTER_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILTER_OUTPUT_STREAM, GFilterOutputStream)) +#define G_FILTER_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILTER_OUTPUT_STREAM, GFilterOutputStreamClass)) +#define G_IS_FILTER_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILTER_OUTPUT_STREAM)) +#define G_IS_FILTER_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILTER_OUTPUT_STREAM)) +#define G_FILTER_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILTER_OUTPUT_STREAM, GFilterOutputStreamClass)) + +/** + * GFilterOutputStream: + * + * A base class for all output streams that work on an underlying stream. + **/ +typedef struct _GFilterOutputStreamClass GFilterOutputStreamClass; + +struct _GFilterOutputStream +{ + GOutputStream parent_instance; + + /*< protected >*/ + GOutputStream *base_stream; +}; + +struct _GFilterOutputStreamClass +{ + GOutputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_filter_output_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GOutputStream * g_filter_output_stream_get_base_stream (GFilterOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_filter_output_stream_get_close_base_stream (GFilterOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +void g_filter_output_stream_set_close_base_stream (GFilterOutputStream *stream, + gboolean close_base); + +G_END_DECLS + +#endif /* __G_FILTER_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gicon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gicon.h new file mode 100644 index 0000000..22e7e5e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gicon.h @@ -0,0 +1,104 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_ICON_H__ +#define __G_ICON_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_ICON (g_icon_get_type ()) +#define G_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ICON, GIcon)) +#define G_IS_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ICON)) +#define G_ICON_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_ICON, GIconIface)) + +/** + * GIcon: + * + * An abstract type that specifies an icon. + **/ +typedef struct _GIconIface GIconIface; + +/** + * GIconIface: + * @g_iface: The parent interface. + * @hash: A hash for a given #GIcon. + * @equal: Checks if two #GIcons are equal. + * @to_tokens: Serializes a #GIcon into tokens. The tokens must not + * contain any whitespace. Don't implement if the #GIcon can't be + * serialized (Since 2.20). + * @from_tokens: Constructs a #GIcon from tokens. Set the #GError if + * the tokens are malformed. Don't implement if the #GIcon can't be + * serialized (Since 2.20). + * @serialize: Serializes a #GIcon into a #GVariant. Since: 2.38 + * + * GIconIface is used to implement GIcon types for various + * different systems. See #GThemedIcon and #GLoadableIcon for + * examples of how to implement this interface. + */ +struct _GIconIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + guint (* hash) (GIcon *icon); + gboolean (* equal) (GIcon *icon1, + GIcon *icon2); + gboolean (* to_tokens) (GIcon *icon, + GPtrArray *tokens, + gint *out_version); + GIcon * (* from_tokens) (gchar **tokens, + gint num_tokens, + gint version, + GError **error); + + GVariant * (* serialize) (GIcon *icon); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_icon_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +guint g_icon_hash (gconstpointer icon); +GLIB_AVAILABLE_IN_ALL +gboolean g_icon_equal (GIcon *icon1, + GIcon *icon2); +GLIB_AVAILABLE_IN_ALL +gchar *g_icon_to_string (GIcon *icon); +GLIB_AVAILABLE_IN_ALL +GIcon *g_icon_new_for_string (const gchar *str, + GError **error); + +GLIB_AVAILABLE_IN_2_38 +GVariant * g_icon_serialize (GIcon *icon); +GLIB_AVAILABLE_IN_2_38 +GIcon * g_icon_deserialize (GVariant *value); + +G_END_DECLS + +#endif /* __G_ICON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetaddress.h new file mode 100644 index 0000000..5a1b7da --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetaddress.h @@ -0,0 +1,125 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + */ + +#ifndef __G_INET_ADDRESS_H__ +#define __G_INET_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_INET_ADDRESS (g_inet_address_get_type ()) +#define G_INET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INET_ADDRESS, GInetAddress)) +#define G_INET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INET_ADDRESS, GInetAddressClass)) +#define G_IS_INET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INET_ADDRESS)) +#define G_IS_INET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INET_ADDRESS)) +#define G_INET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INET_ADDRESS, GInetAddressClass)) + +typedef struct _GInetAddressClass GInetAddressClass; +typedef struct _GInetAddressPrivate GInetAddressPrivate; + +struct _GInetAddress +{ + GObject parent_instance; + + /*< private >*/ + GInetAddressPrivate *priv; +}; + +struct _GInetAddressClass +{ + GObjectClass parent_class; + + gchar * (*to_string) (GInetAddress *address); + const guint8 * (*to_bytes) (GInetAddress *address); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_inet_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GInetAddress * g_inet_address_new_from_string (const gchar *string); + +GLIB_AVAILABLE_IN_ALL +GInetAddress * g_inet_address_new_from_bytes (const guint8 *bytes, + GSocketFamily family); + +GLIB_AVAILABLE_IN_ALL +GInetAddress * g_inet_address_new_loopback (GSocketFamily family); + +GLIB_AVAILABLE_IN_ALL +GInetAddress * g_inet_address_new_any (GSocketFamily family); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_equal (GInetAddress *address, + GInetAddress *other_address); + +GLIB_AVAILABLE_IN_ALL +gchar * g_inet_address_to_string (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +const guint8 * g_inet_address_to_bytes (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gsize g_inet_address_get_native_size (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +GSocketFamily g_inet_address_get_family (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_any (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_loopback (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_link_local (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_site_local (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_multicast (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_mc_global (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_mc_link_local (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_mc_node_local (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_mc_org_local (GInetAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_inet_address_get_is_mc_site_local (GInetAddress *address); + +G_END_DECLS + +#endif /* __G_INET_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetaddressmask.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetaddressmask.h new file mode 100644 index 0000000..f4a9769 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetaddressmask.h @@ -0,0 +1,86 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2011 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_INET_ADDRESS_MASK_H__ +#define __G_INET_ADDRESS_MASK_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_INET_ADDRESS_MASK (g_inet_address_mask_get_type ()) +#define G_INET_ADDRESS_MASK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INET_ADDRESS_MASK, GInetAddressMask)) +#define G_INET_ADDRESS_MASK_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INET_ADDRESS_MASK, GInetAddressMaskClass)) +#define G_IS_INET_ADDRESS_MASK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INET_ADDRESS_MASK)) +#define G_IS_INET_ADDRESS_MASK_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INET_ADDRESS_MASK)) +#define G_INET_ADDRESS_MASK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INET_ADDRESS_MASK, GInetAddressMaskClass)) + +typedef struct _GInetAddressMaskClass GInetAddressMaskClass; +typedef struct _GInetAddressMaskPrivate GInetAddressMaskPrivate; + +struct _GInetAddressMask +{ + GObject parent_instance; + + /*< private >*/ + GInetAddressMaskPrivate *priv; +}; + +struct _GInetAddressMaskClass +{ + GObjectClass parent_class; + +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_inet_address_mask_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +GInetAddressMask *g_inet_address_mask_new (GInetAddress *addr, + guint length, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +GInetAddressMask *g_inet_address_mask_new_from_string (const gchar *mask_string, + GError **error); +GLIB_AVAILABLE_IN_2_32 +gchar *g_inet_address_mask_to_string (GInetAddressMask *mask); + +GLIB_AVAILABLE_IN_2_32 +GSocketFamily g_inet_address_mask_get_family (GInetAddressMask *mask); +GLIB_AVAILABLE_IN_2_32 +GInetAddress *g_inet_address_mask_get_address (GInetAddressMask *mask); +GLIB_AVAILABLE_IN_2_32 +guint g_inet_address_mask_get_length (GInetAddressMask *mask); + +GLIB_AVAILABLE_IN_2_32 +gboolean g_inet_address_mask_matches (GInetAddressMask *mask, + GInetAddress *address); +GLIB_AVAILABLE_IN_2_32 +gboolean g_inet_address_mask_equal (GInetAddressMask *mask, + GInetAddressMask *mask2); + +G_END_DECLS + +#endif /* __G_INET_ADDRESS_MASK_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetsocketaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetsocketaddress.h new file mode 100644 index 0000000..c0c418d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginetsocketaddress.h @@ -0,0 +1,80 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + */ + +#ifndef __G_INET_SOCKET_ADDRESS_H__ +#define __G_INET_SOCKET_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_INET_SOCKET_ADDRESS (g_inet_socket_address_get_type ()) +#define G_INET_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INET_SOCKET_ADDRESS, GInetSocketAddress)) +#define G_INET_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INET_SOCKET_ADDRESS, GInetSocketAddressClass)) +#define G_IS_INET_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INET_SOCKET_ADDRESS)) +#define G_IS_INET_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INET_SOCKET_ADDRESS)) +#define G_INET_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INET_SOCKET_ADDRESS, GInetSocketAddressClass)) + +typedef struct _GInetSocketAddressClass GInetSocketAddressClass; +typedef struct _GInetSocketAddressPrivate GInetSocketAddressPrivate; + +struct _GInetSocketAddress +{ + GSocketAddress parent_instance; + + /*< private >*/ + GInetSocketAddressPrivate *priv; +}; + +struct _GInetSocketAddressClass +{ + GSocketAddressClass parent_class; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_inet_socket_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_inet_socket_address_new (GInetAddress *address, + guint16 port); +GLIB_AVAILABLE_IN_2_40 +GSocketAddress *g_inet_socket_address_new_from_string (const char *address, + guint port); + +GLIB_AVAILABLE_IN_ALL +GInetAddress * g_inet_socket_address_get_address (GInetSocketAddress *address); +GLIB_AVAILABLE_IN_ALL +guint16 g_inet_socket_address_get_port (GInetSocketAddress *address); + +GLIB_AVAILABLE_IN_2_32 +guint32 g_inet_socket_address_get_flowinfo (GInetSocketAddress *address); +GLIB_AVAILABLE_IN_2_32 +guint32 g_inet_socket_address_get_scope_id (GInetSocketAddress *address); + +G_END_DECLS + +#endif /* __G_INET_SOCKET_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginitable.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginitable.h new file mode 100644 index 0000000..981c3c9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginitable.h @@ -0,0 +1,107 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_INITABLE_H__ +#define __G_INITABLE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_INITABLE (g_initable_get_type ()) +#define G_INITABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_INITABLE, GInitable)) +#define G_IS_INITABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_INITABLE)) +#define G_INITABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_INITABLE, GInitableIface)) +#define G_TYPE_IS_INITABLE(type) (g_type_is_a ((type), G_TYPE_INITABLE)) + +/** + * GInitable: + * + * Interface for initializable objects. + * + * Since: 2.22 + **/ +typedef struct _GInitableIface GInitableIface; + +/** + * GInitableIface: + * @g_iface: The parent interface. + * @init: Initializes the object. + * + * Provides an interface for initializing object such that initialization + * may fail. + * + * Since: 2.22 + **/ +struct _GInitableIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + gboolean (* init) (GInitable *initable, + GCancellable *cancellable, + GError **error); +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_initable_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_initable_init (GInitable *initable, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gpointer g_initable_new (GType object_type, + GCancellable *cancellable, + GError **error, + const gchar *first_property_name, + ...); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties and g_initable_init) +gpointer g_initable_newv (GType object_type, + guint n_parameters, + GParameter *parameters, + GCancellable *cancellable, + GError **error); + +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +GObject* g_initable_new_valist (GType object_type, + const gchar *first_property_name, + va_list var_args, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + + +#endif /* __G_INITABLE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginputstream.h new file mode 100644 index 0000000..deb139b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/ginputstream.h @@ -0,0 +1,218 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_INPUT_STREAM_H__ +#define __G_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_INPUT_STREAM (g_input_stream_get_type ()) +#define G_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INPUT_STREAM, GInputStream)) +#define G_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INPUT_STREAM, GInputStreamClass)) +#define G_IS_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INPUT_STREAM)) +#define G_IS_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INPUT_STREAM)) +#define G_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INPUT_STREAM, GInputStreamClass)) + +/** + * GInputStream: + * + * Base class for streaming input operations. + **/ +typedef struct _GInputStreamClass GInputStreamClass; +typedef struct _GInputStreamPrivate GInputStreamPrivate; + +struct _GInputStream +{ + GObject parent_instance; + + /*< private >*/ + GInputStreamPrivate *priv; +}; + +struct _GInputStreamClass +{ + GObjectClass parent_class; + + /* Sync ops: */ + + gssize (* read_fn) (GInputStream *stream, + void *buffer, + gsize count, + GCancellable *cancellable, + GError **error); + gssize (* skip) (GInputStream *stream, + gsize count, + GCancellable *cancellable, + GError **error); + gboolean (* close_fn) (GInputStream *stream, + GCancellable *cancellable, + GError **error); + + /* Async ops: (optional in derived classes) */ + void (* read_async) (GInputStream *stream, + void *buffer, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gssize (* read_finish) (GInputStream *stream, + GAsyncResult *result, + GError **error); + void (* skip_async) (GInputStream *stream, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gssize (* skip_finish) (GInputStream *stream, + GAsyncResult *result, + GError **error); + void (* close_async) (GInputStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* close_finish) (GInputStream *stream, + GAsyncResult *result, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_input_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gssize g_input_stream_read (GInputStream *stream, + void *buffer, + gsize count, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_input_stream_read_all (GInputStream *stream, + void *buffer, + gsize count, + gsize *bytes_read, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_34 +GBytes *g_input_stream_read_bytes (GInputStream *stream, + gsize count, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_input_stream_skip (GInputStream *stream, + gsize count, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_input_stream_close (GInputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_input_stream_read_async (GInputStream *stream, + void *buffer, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gssize g_input_stream_read_finish (GInputStream *stream, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_44 +void g_input_stream_read_all_async (GInputStream *stream, + void *buffer, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_44 +gboolean g_input_stream_read_all_finish (GInputStream *stream, + GAsyncResult *result, + gsize *bytes_read, + GError **error); + +GLIB_AVAILABLE_IN_2_34 +void g_input_stream_read_bytes_async (GInputStream *stream, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_34 +GBytes *g_input_stream_read_bytes_finish (GInputStream *stream, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_input_stream_skip_async (GInputStream *stream, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gssize g_input_stream_skip_finish (GInputStream *stream, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_input_stream_close_async (GInputStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_input_stream_close_finish (GInputStream *stream, + GAsyncResult *result, + GError **error); + +/* For implementations: */ + +GLIB_AVAILABLE_IN_ALL +gboolean g_input_stream_is_closed (GInputStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_input_stream_has_pending (GInputStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_input_stream_set_pending (GInputStream *stream, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_input_stream_clear_pending (GInputStream *stream); + +G_END_DECLS + +#endif /* __G_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gio-autocleanups.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gio-autocleanups.h new file mode 100644 index 0000000..15e37d1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gio-autocleanups.h @@ -0,0 +1,155 @@ +/* + * Copyright © 2015 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAction, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GActionMap, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAppInfo, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAppLaunchContext, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAppInfoMonitor, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GApplicationCommandLine, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GApplication, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAsyncInitable, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAsyncResult, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBufferedInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBufferedOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBytesIcon, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GCancellable, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GCharsetConverter, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GConverter, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GConverterInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GConverterOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GCredentials, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDatagramBased, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDataInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDataOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusActionGroup, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusAuthObserver, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusConnection, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusInterface, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusInterfaceSkeleton, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusMenuModel, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusMessage, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusMethodInvocation, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusNodeInfo, g_dbus_node_info_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusObject, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusObjectManagerClient, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusObjectManager, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusObjectManagerServer, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusObjectProxy, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusObjectSkeleton, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusProxy, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusServer, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDrive, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GEmblemedIcon, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GEmblem, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileEnumerator, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFile, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileAttributeInfoList, g_file_attribute_info_list_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileIcon, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileInfo, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileIOStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileMonitor, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFilenameCompleter, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFileOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFilterInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFilterOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GIcon, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GInetAddress, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GInetAddressMask, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GInetSocketAddress, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GInitable, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GIOModule, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GIOStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GLoadableIcon, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMemoryInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMemoryOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMenu, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMenuItem, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMenuModel, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMenuAttributeIter, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMenuLinkIter, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMount, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMountOperation, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GNativeVolumeMonitor, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GNetworkAddress, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GNetworkMonitor, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GNetworkService, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GNotification, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPermission, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPollableInputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPollableOutputStream, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPropertyAction, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GProxyAddressEnumerator, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GProxyAddress, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GProxy, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GProxyResolver, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRemoteActionGroup, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GResolver, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GResource, g_resource_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSeekable, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSettingsBackend, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSettingsSchema, g_settings_schema_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSettingsSchemaKey, g_settings_schema_key_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSettingsSchemaSource, g_settings_schema_source_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSettings, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSimpleActionGroup, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSimpleAction, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSimpleAsyncResult, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSimplePermission, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSimpleProxyResolver, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketAddressEnumerator, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketAddress, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketClient, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketConnectable, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketConnection, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketControlMessage, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocket, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketListener, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSocketService, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSubprocess, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSubprocessLauncher, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTask, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTcpConnection, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTcpWrapperConnection, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTestDBus, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GThemedIcon, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GThreadedSocketService, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsBackend, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsCertificate, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsClientConnection, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsConnection, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsDatabase, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsFileDatabase, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsInteraction, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsPassword, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTlsServerConnection, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVfs, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVolume, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVolumeMonitor, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GZlibCompressor, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GZlibDecompressor, g_object_unref) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gio.h new file mode 100644 index 0000000..c17657d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gio.h @@ -0,0 +1,186 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_IO_H__ +#define __G_IO_H__ + +#define __GIO_GIO_H_INSIDE__ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#undef __GIO_GIO_H_INSIDE__ + +#endif /* __G_IO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioenums.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioenums.h new file mode 100644 index 0000000..1d109aa --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioenums.h @@ -0,0 +1,2145 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __GIO_ENUMS_H__ +#define __GIO_ENUMS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +/** + * GAppInfoCreateFlags: + * @G_APP_INFO_CREATE_NONE: No flags. + * @G_APP_INFO_CREATE_NEEDS_TERMINAL: Application opens in a terminal window. + * @G_APP_INFO_CREATE_SUPPORTS_URIS: Application supports URI arguments. + * @G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION: Application supports startup notification. Since 2.26 + * + * Flags used when creating a #GAppInfo. + */ +typedef enum { + G_APP_INFO_CREATE_NONE = 0, /*< nick=none >*/ + G_APP_INFO_CREATE_NEEDS_TERMINAL = (1 << 0), /*< nick=needs-terminal >*/ + G_APP_INFO_CREATE_SUPPORTS_URIS = (1 << 1), /*< nick=supports-uris >*/ + G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION = (1 << 2) /*< nick=supports-startup-notification >*/ +} GAppInfoCreateFlags; + +/** + * GConverterFlags: + * @G_CONVERTER_NO_FLAGS: No flags. + * @G_CONVERTER_INPUT_AT_END: At end of input data + * @G_CONVERTER_FLUSH: Flush data + * + * Flags used when calling a g_converter_convert(). + * + * Since: 2.24 + */ +typedef enum { + G_CONVERTER_NO_FLAGS = 0, /*< nick=none >*/ + G_CONVERTER_INPUT_AT_END = (1 << 0), /*< nick=input-at-end >*/ + G_CONVERTER_FLUSH = (1 << 1) /*< nick=flush >*/ +} GConverterFlags; + +/** + * GConverterResult: + * @G_CONVERTER_ERROR: There was an error during conversion. + * @G_CONVERTER_CONVERTED: Some data was consumed or produced + * @G_CONVERTER_FINISHED: The conversion is finished + * @G_CONVERTER_FLUSHED: Flushing is finished + * + * Results returned from g_converter_convert(). + * + * Since: 2.24 + */ +typedef enum { + G_CONVERTER_ERROR = 0, /*< nick=error >*/ + G_CONVERTER_CONVERTED = 1, /*< nick=converted >*/ + G_CONVERTER_FINISHED = 2, /*< nick=finished >*/ + G_CONVERTER_FLUSHED = 3 /*< nick=flushed >*/ +} GConverterResult; + + +/** + * GDataStreamByteOrder: + * @G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN: Selects Big Endian byte order. + * @G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN: Selects Little Endian byte order. + * @G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN: Selects endianness based on host machine's architecture. + * + * #GDataStreamByteOrder is used to ensure proper endianness of streaming data sources + * across various machine architectures. + * + **/ +typedef enum { + G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN, + G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN, + G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN +} GDataStreamByteOrder; + + +/** + * GDataStreamNewlineType: + * @G_DATA_STREAM_NEWLINE_TYPE_LF: Selects "LF" line endings, common on most modern UNIX platforms. + * @G_DATA_STREAM_NEWLINE_TYPE_CR: Selects "CR" line endings. + * @G_DATA_STREAM_NEWLINE_TYPE_CR_LF: Selects "CR, LF" line ending, common on Microsoft Windows. + * @G_DATA_STREAM_NEWLINE_TYPE_ANY: Automatically try to handle any line ending type. + * + * #GDataStreamNewlineType is used when checking for or setting the line endings for a given file. + **/ +typedef enum { + G_DATA_STREAM_NEWLINE_TYPE_LF, + G_DATA_STREAM_NEWLINE_TYPE_CR, + G_DATA_STREAM_NEWLINE_TYPE_CR_LF, + G_DATA_STREAM_NEWLINE_TYPE_ANY +} GDataStreamNewlineType; + + +/** + * GFileAttributeType: + * @G_FILE_ATTRIBUTE_TYPE_INVALID: indicates an invalid or uninitialized type. + * @G_FILE_ATTRIBUTE_TYPE_STRING: a null terminated UTF8 string. + * @G_FILE_ATTRIBUTE_TYPE_BYTE_STRING: a zero terminated string of non-zero bytes. + * @G_FILE_ATTRIBUTE_TYPE_BOOLEAN: a boolean value. + * @G_FILE_ATTRIBUTE_TYPE_UINT32: an unsigned 4-byte/32-bit integer. + * @G_FILE_ATTRIBUTE_TYPE_INT32: a signed 4-byte/32-bit integer. + * @G_FILE_ATTRIBUTE_TYPE_UINT64: an unsigned 8-byte/64-bit integer. + * @G_FILE_ATTRIBUTE_TYPE_INT64: a signed 8-byte/64-bit integer. + * @G_FILE_ATTRIBUTE_TYPE_OBJECT: a #GObject. + * @G_FILE_ATTRIBUTE_TYPE_STRINGV: a %NULL terminated char **. Since 2.22 + * + * The data types for file attributes. + **/ +typedef enum { + G_FILE_ATTRIBUTE_TYPE_INVALID = 0, + G_FILE_ATTRIBUTE_TYPE_STRING, + G_FILE_ATTRIBUTE_TYPE_BYTE_STRING, /* zero terminated string of non-zero bytes */ + G_FILE_ATTRIBUTE_TYPE_BOOLEAN, + G_FILE_ATTRIBUTE_TYPE_UINT32, + G_FILE_ATTRIBUTE_TYPE_INT32, + G_FILE_ATTRIBUTE_TYPE_UINT64, + G_FILE_ATTRIBUTE_TYPE_INT64, + G_FILE_ATTRIBUTE_TYPE_OBJECT, + G_FILE_ATTRIBUTE_TYPE_STRINGV +} GFileAttributeType; + + +/** + * GFileAttributeInfoFlags: + * @G_FILE_ATTRIBUTE_INFO_NONE: no flags set. + * @G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE: copy the attribute values when the file is copied. + * @G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED: copy the attribute values when the file is moved. + * + * Flags specifying the behaviour of an attribute. + **/ +typedef enum { + G_FILE_ATTRIBUTE_INFO_NONE = 0, + G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE = (1 << 0), + G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED = (1 << 1) +} GFileAttributeInfoFlags; + + +/** + * GFileAttributeStatus: + * @G_FILE_ATTRIBUTE_STATUS_UNSET: Attribute value is unset (empty). + * @G_FILE_ATTRIBUTE_STATUS_SET: Attribute value is set. + * @G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING: Indicates an error in setting the value. + * + * Used by g_file_set_attributes_from_info() when setting file attributes. + **/ +typedef enum { + G_FILE_ATTRIBUTE_STATUS_UNSET = 0, + G_FILE_ATTRIBUTE_STATUS_SET, + G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING +} GFileAttributeStatus; + + +/** + * GFileQueryInfoFlags: + * @G_FILE_QUERY_INFO_NONE: No flags set. + * @G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS: Don't follow symlinks. + * + * Flags used when querying a #GFileInfo. + */ +typedef enum { + G_FILE_QUERY_INFO_NONE = 0, + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS = (1 << 0) /*< nick=nofollow-symlinks >*/ +} GFileQueryInfoFlags; + + +/** + * GFileCreateFlags: + * @G_FILE_CREATE_NONE: No flags set. + * @G_FILE_CREATE_PRIVATE: Create a file that can only be + * accessed by the current user. + * @G_FILE_CREATE_REPLACE_DESTINATION: Replace the destination + * as if it didn't exist before. Don't try to keep any old + * permissions, replace instead of following links. This + * is generally useful if you're doing a "copy over" + * rather than a "save new version of" replace operation. + * You can think of it as "unlink destination" before + * writing to it, although the implementation may not + * be exactly like that. This flag can only be used with + * g_file_replace() and its variants, including g_file_replace_contents(). + * Since 2.20 + * + * Flags used when an operation may create a file. + */ +typedef enum { + G_FILE_CREATE_NONE = 0, + G_FILE_CREATE_PRIVATE = (1 << 0), + G_FILE_CREATE_REPLACE_DESTINATION = (1 << 1) +} GFileCreateFlags; + +/** + * GFileMeasureFlags: + * @G_FILE_MEASURE_NONE: No flags set. + * @G_FILE_MEASURE_REPORT_ANY_ERROR: Report any error encountered + * while traversing the directory tree. Normally errors are only + * reported for the toplevel file. + * @G_FILE_MEASURE_APPARENT_SIZE: Tally usage based on apparent file + * sizes. Normally, the block-size is used, if available, as this is a + * more accurate representation of disk space used. + * Compare with `du --apparent-size`. + * @G_FILE_MEASURE_NO_XDEV: Do not cross mount point boundaries. + * Compare with `du -x`. + * + * Flags that can be used with g_file_measure_disk_usage(). + * + * Since: 2.38 + **/ +typedef enum { + G_FILE_MEASURE_NONE = 0, + G_FILE_MEASURE_REPORT_ANY_ERROR = (1 << 1), + G_FILE_MEASURE_APPARENT_SIZE = (1 << 2), + G_FILE_MEASURE_NO_XDEV = (1 << 3) +} GFileMeasureFlags; + +/** + * GMountMountFlags: + * @G_MOUNT_MOUNT_NONE: No flags set. + * + * Flags used when mounting a mount. + */ +typedef enum /*< flags >*/ { + G_MOUNT_MOUNT_NONE = 0 +} GMountMountFlags; + + +/** + * GMountUnmountFlags: + * @G_MOUNT_UNMOUNT_NONE: No flags set. + * @G_MOUNT_UNMOUNT_FORCE: Unmount even if there are outstanding + * file operations on the mount. + * + * Flags used when an unmounting a mount. + */ +typedef enum { + G_MOUNT_UNMOUNT_NONE = 0, + G_MOUNT_UNMOUNT_FORCE = (1 << 0) +} GMountUnmountFlags; + +/** + * GDriveStartFlags: + * @G_DRIVE_START_NONE: No flags set. + * + * Flags used when starting a drive. + * + * Since: 2.22 + */ +typedef enum /*< flags >*/ { + G_DRIVE_START_NONE = 0 +} GDriveStartFlags; + +/** + * GDriveStartStopType: + * @G_DRIVE_START_STOP_TYPE_UNKNOWN: Unknown or drive doesn't support + * start/stop. + * @G_DRIVE_START_STOP_TYPE_SHUTDOWN: The stop method will physically + * shut down the drive and e.g. power down the port the drive is + * attached to. + * @G_DRIVE_START_STOP_TYPE_NETWORK: The start/stop methods are used + * for connecting/disconnect to the drive over the network. + * @G_DRIVE_START_STOP_TYPE_MULTIDISK: The start/stop methods will + * assemble/disassemble a virtual drive from several physical + * drives. + * @G_DRIVE_START_STOP_TYPE_PASSWORD: The start/stop methods will + * unlock/lock the disk (for example using the ATA SECURITY + * UNLOCK DEVICE command) + * + * Enumeration describing how a drive can be started/stopped. + * + * Since: 2.22 + */ +typedef enum { + G_DRIVE_START_STOP_TYPE_UNKNOWN, + G_DRIVE_START_STOP_TYPE_SHUTDOWN, + G_DRIVE_START_STOP_TYPE_NETWORK, + G_DRIVE_START_STOP_TYPE_MULTIDISK, + G_DRIVE_START_STOP_TYPE_PASSWORD +} GDriveStartStopType; + +/** + * GFileCopyFlags: + * @G_FILE_COPY_NONE: No flags set. + * @G_FILE_COPY_OVERWRITE: Overwrite any existing files + * @G_FILE_COPY_BACKUP: Make a backup of any existing files. + * @G_FILE_COPY_NOFOLLOW_SYMLINKS: Don't follow symlinks. + * @G_FILE_COPY_ALL_METADATA: Copy all file metadata instead of just default set used for copy (see #GFileInfo). + * @G_FILE_COPY_NO_FALLBACK_FOR_MOVE: Don't use copy and delete fallback if native move not supported. + * @G_FILE_COPY_TARGET_DEFAULT_PERMS: Leaves target file with default perms, instead of setting the source file perms. + * + * Flags used when copying or moving files. + */ +typedef enum { + G_FILE_COPY_NONE = 0, /*< nick=none >*/ + G_FILE_COPY_OVERWRITE = (1 << 0), + G_FILE_COPY_BACKUP = (1 << 1), + G_FILE_COPY_NOFOLLOW_SYMLINKS = (1 << 2), + G_FILE_COPY_ALL_METADATA = (1 << 3), + G_FILE_COPY_NO_FALLBACK_FOR_MOVE = (1 << 4), + G_FILE_COPY_TARGET_DEFAULT_PERMS = (1 << 5) +} GFileCopyFlags; + + +/** + * GFileMonitorFlags: + * @G_FILE_MONITOR_NONE: No flags set. + * @G_FILE_MONITOR_WATCH_MOUNTS: Watch for mount events. + * @G_FILE_MONITOR_SEND_MOVED: Pair DELETED and CREATED events caused + * by file renames (moves) and send a single G_FILE_MONITOR_EVENT_MOVED + * event instead (NB: not supported on all backends; the default + * behaviour -without specifying this flag- is to send single DELETED + * and CREATED events). Deprecated since 2.46: use + * %G_FILE_MONITOR_WATCH_MOVES instead. + * @G_FILE_MONITOR_WATCH_HARD_LINKS: Watch for changes to the file made + * via another hard link. Since 2.36. + * @G_FILE_MONITOR_WATCH_MOVES: Watch for rename operations on a + * monitored directory. This causes %G_FILE_MONITOR_EVENT_RENAMED, + * %G_FILE_MONITOR_EVENT_MOVED_IN and %G_FILE_MONITOR_EVENT_MOVED_OUT + * events to be emitted when possible. Since: 2.46. + * + * Flags used to set what a #GFileMonitor will watch for. + */ +typedef enum { + G_FILE_MONITOR_NONE = 0, + G_FILE_MONITOR_WATCH_MOUNTS = (1 << 0), + G_FILE_MONITOR_SEND_MOVED = (1 << 1), + G_FILE_MONITOR_WATCH_HARD_LINKS = (1 << 2), + G_FILE_MONITOR_WATCH_MOVES = (1 << 3) +} GFileMonitorFlags; + + +/** + * GFileType: + * @G_FILE_TYPE_UNKNOWN: File's type is unknown. + * @G_FILE_TYPE_REGULAR: File handle represents a regular file. + * @G_FILE_TYPE_DIRECTORY: File handle represents a directory. + * @G_FILE_TYPE_SYMBOLIC_LINK: File handle represents a symbolic link + * (Unix systems). + * @G_FILE_TYPE_SPECIAL: File is a "special" file, such as a socket, fifo, + * block device, or character device. + * @G_FILE_TYPE_SHORTCUT: File is a shortcut (Windows systems). + * @G_FILE_TYPE_MOUNTABLE: File is a mountable location. + * + * Indicates the file's on-disk type. + * + * On Windows systems a file will never have %G_FILE_TYPE_SYMBOLIC_LINK type; + * use #GFileInfo and %G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK to determine + * whether a file is a symlink or not. This is due to the fact that NTFS does + * not have a single filesystem object type for symbolic links - it has + * files that symlink to files, and directories that symlink to directories. + * #GFileType enumeration cannot precisely represent this important distinction, + * which is why all Windows symlinks will continue to be reported as + * %G_FILE_TYPE_REGULAR or %G_FILE_TYPE_DIRECTORY. + **/ +typedef enum { + G_FILE_TYPE_UNKNOWN = 0, + G_FILE_TYPE_REGULAR, + G_FILE_TYPE_DIRECTORY, + G_FILE_TYPE_SYMBOLIC_LINK, + G_FILE_TYPE_SPECIAL, /* socket, fifo, blockdev, chardev */ + G_FILE_TYPE_SHORTCUT, + G_FILE_TYPE_MOUNTABLE +} GFileType; + + +/** + * GFilesystemPreviewType: + * @G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS: Only preview files if user has explicitly requested it. + * @G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL: Preview files if user has requested preview of "local" files. + * @G_FILESYSTEM_PREVIEW_TYPE_NEVER: Never preview files. + * + * Indicates a hint from the file system whether files should be + * previewed in a file manager. Returned as the value of the key + * %G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW. + **/ +typedef enum { + G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS = 0, + G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL, + G_FILESYSTEM_PREVIEW_TYPE_NEVER +} GFilesystemPreviewType; + + +/** + * GFileMonitorEvent: + * @G_FILE_MONITOR_EVENT_CHANGED: a file changed. + * @G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: a hint that this was probably the last change in a set of changes. + * @G_FILE_MONITOR_EVENT_DELETED: a file was deleted. + * @G_FILE_MONITOR_EVENT_CREATED: a file was created. + * @G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED: a file attribute was changed. + * @G_FILE_MONITOR_EVENT_PRE_UNMOUNT: the file location will soon be unmounted. + * @G_FILE_MONITOR_EVENT_UNMOUNTED: the file location was unmounted. + * @G_FILE_MONITOR_EVENT_MOVED: the file was moved -- only sent if the + * (deprecated) %G_FILE_MONITOR_SEND_MOVED flag is set + * @G_FILE_MONITOR_EVENT_RENAMED: the file was renamed within the + * current directory -- only sent if the %G_FILE_MONITOR_WATCH_MOVES + * flag is set. Since: 2.46. + * @G_FILE_MONITOR_EVENT_MOVED_IN: the file was moved into the + * monitored directory from another location -- only sent if the + * %G_FILE_MONITOR_WATCH_MOVES flag is set. Since: 2.46. + * @G_FILE_MONITOR_EVENT_MOVED_OUT: the file was moved out of the + * monitored directory to another location -- only sent if the + * %G_FILE_MONITOR_WATCH_MOVES flag is set. Since: 2.46 + * + * Specifies what type of event a monitor event is. + **/ +typedef enum { + G_FILE_MONITOR_EVENT_CHANGED, + G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, + G_FILE_MONITOR_EVENT_DELETED, + G_FILE_MONITOR_EVENT_CREATED, + G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED, + G_FILE_MONITOR_EVENT_PRE_UNMOUNT, + G_FILE_MONITOR_EVENT_UNMOUNTED, + G_FILE_MONITOR_EVENT_MOVED, + G_FILE_MONITOR_EVENT_RENAMED, + G_FILE_MONITOR_EVENT_MOVED_IN, + G_FILE_MONITOR_EVENT_MOVED_OUT +} GFileMonitorEvent; + + +/* This enumeration conflicts with GIOError in giochannel.h. However, + * that is only used as a return value in some deprecated functions. + * So, we reuse the same prefix for the enumeration values, but call + * the actual enumeration (which is rarely used) GIOErrorEnum. + */ +/** + * GIOErrorEnum: + * @G_IO_ERROR_FAILED: Generic error condition for when an operation fails + * and no more specific #GIOErrorEnum value is defined. + * @G_IO_ERROR_NOT_FOUND: File not found. + * @G_IO_ERROR_EXISTS: File already exists. + * @G_IO_ERROR_IS_DIRECTORY: File is a directory. + * @G_IO_ERROR_NOT_DIRECTORY: File is not a directory. + * @G_IO_ERROR_NOT_EMPTY: File is a directory that isn't empty. + * @G_IO_ERROR_NOT_REGULAR_FILE: File is not a regular file. + * @G_IO_ERROR_NOT_SYMBOLIC_LINK: File is not a symbolic link. + * @G_IO_ERROR_NOT_MOUNTABLE_FILE: File cannot be mounted. + * @G_IO_ERROR_FILENAME_TOO_LONG: Filename is too many characters. + * @G_IO_ERROR_INVALID_FILENAME: Filename is invalid or contains invalid characters. + * @G_IO_ERROR_TOO_MANY_LINKS: File contains too many symbolic links. + * @G_IO_ERROR_NO_SPACE: No space left on drive. + * @G_IO_ERROR_INVALID_ARGUMENT: Invalid argument. + * @G_IO_ERROR_PERMISSION_DENIED: Permission denied. + * @G_IO_ERROR_NOT_SUPPORTED: Operation (or one of its parameters) not supported + * @G_IO_ERROR_NOT_MOUNTED: File isn't mounted. + * @G_IO_ERROR_ALREADY_MOUNTED: File is already mounted. + * @G_IO_ERROR_CLOSED: File was closed. + * @G_IO_ERROR_CANCELLED: Operation was cancelled. See #GCancellable. + * @G_IO_ERROR_PENDING: Operations are still pending. + * @G_IO_ERROR_READ_ONLY: File is read only. + * @G_IO_ERROR_CANT_CREATE_BACKUP: Backup couldn't be created. + * @G_IO_ERROR_WRONG_ETAG: File's Entity Tag was incorrect. + * @G_IO_ERROR_TIMED_OUT: Operation timed out. + * @G_IO_ERROR_WOULD_RECURSE: Operation would be recursive. + * @G_IO_ERROR_BUSY: File is busy. + * @G_IO_ERROR_WOULD_BLOCK: Operation would block. + * @G_IO_ERROR_HOST_NOT_FOUND: Host couldn't be found (remote operations). + * @G_IO_ERROR_WOULD_MERGE: Operation would merge files. + * @G_IO_ERROR_FAILED_HANDLED: Operation failed and a helper program has + * already interacted with the user. Do not display any error dialog. + * @G_IO_ERROR_TOO_MANY_OPEN_FILES: The current process has too many files + * open and can't open any more. Duplicate descriptors do count toward + * this limit. Since 2.20 + * @G_IO_ERROR_NOT_INITIALIZED: The object has not been initialized. Since 2.22 + * @G_IO_ERROR_ADDRESS_IN_USE: The requested address is already in use. Since 2.22 + * @G_IO_ERROR_PARTIAL_INPUT: Need more input to finish operation. Since 2.24 + * @G_IO_ERROR_INVALID_DATA: The input data was invalid. Since 2.24 + * @G_IO_ERROR_DBUS_ERROR: A remote object generated an error that + * doesn't correspond to a locally registered #GError error + * domain. Use g_dbus_error_get_remote_error() to extract the D-Bus + * error name and g_dbus_error_strip_remote_error() to fix up the + * message so it matches what was received on the wire. Since 2.26. + * @G_IO_ERROR_HOST_UNREACHABLE: Host unreachable. Since 2.26 + * @G_IO_ERROR_NETWORK_UNREACHABLE: Network unreachable. Since 2.26 + * @G_IO_ERROR_CONNECTION_REFUSED: Connection refused. Since 2.26 + * @G_IO_ERROR_PROXY_FAILED: Connection to proxy server failed. Since 2.26 + * @G_IO_ERROR_PROXY_AUTH_FAILED: Proxy authentication failed. Since 2.26 + * @G_IO_ERROR_PROXY_NEED_AUTH: Proxy server needs authentication. Since 2.26 + * @G_IO_ERROR_PROXY_NOT_ALLOWED: Proxy connection is not allowed by ruleset. + * Since 2.26 + * @G_IO_ERROR_BROKEN_PIPE: Broken pipe. Since 2.36 + * @G_IO_ERROR_CONNECTION_CLOSED: Connection closed by peer. Note that this + * is the same code as %G_IO_ERROR_BROKEN_PIPE; before 2.44 some + * "connection closed" errors returned %G_IO_ERROR_BROKEN_PIPE, but others + * returned %G_IO_ERROR_FAILED. Now they should all return the same + * value, which has this more logical name. Since 2.44. + * @G_IO_ERROR_NOT_CONNECTED: Transport endpoint is not connected. Since 2.44 + * @G_IO_ERROR_MESSAGE_TOO_LARGE: Message too large. Since 2.48. + * @G_IO_ERROR_NO_SUCH_DEVICE: No such device found. Since 2.74 + * + * Error codes returned by GIO functions. + * + * Note that this domain may be extended in future GLib releases. In + * general, new error codes either only apply to new APIs, or else + * replace %G_IO_ERROR_FAILED in cases that were not explicitly + * distinguished before. You should therefore avoid writing code like + * |[ + * if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED)) + * { + * // Assume that this is EPRINTERONFIRE + * ... + * } + * ]| + * but should instead treat all unrecognized error codes the same as + * %G_IO_ERROR_FAILED. + * + * See also #GPollableReturn for a cheaper way of returning + * %G_IO_ERROR_WOULD_BLOCK to callers without allocating a #GError. + **/ +typedef enum { + G_IO_ERROR_FAILED, + G_IO_ERROR_NOT_FOUND, + G_IO_ERROR_EXISTS, + G_IO_ERROR_IS_DIRECTORY, + G_IO_ERROR_NOT_DIRECTORY, + G_IO_ERROR_NOT_EMPTY, + G_IO_ERROR_NOT_REGULAR_FILE, + G_IO_ERROR_NOT_SYMBOLIC_LINK, + G_IO_ERROR_NOT_MOUNTABLE_FILE, + G_IO_ERROR_FILENAME_TOO_LONG, + G_IO_ERROR_INVALID_FILENAME, + G_IO_ERROR_TOO_MANY_LINKS, + G_IO_ERROR_NO_SPACE, + G_IO_ERROR_INVALID_ARGUMENT, + G_IO_ERROR_PERMISSION_DENIED, + G_IO_ERROR_NOT_SUPPORTED, + G_IO_ERROR_NOT_MOUNTED, + G_IO_ERROR_ALREADY_MOUNTED, + G_IO_ERROR_CLOSED, + G_IO_ERROR_CANCELLED, + G_IO_ERROR_PENDING, + G_IO_ERROR_READ_ONLY, + G_IO_ERROR_CANT_CREATE_BACKUP, + G_IO_ERROR_WRONG_ETAG, + G_IO_ERROR_TIMED_OUT, + G_IO_ERROR_WOULD_RECURSE, + G_IO_ERROR_BUSY, + G_IO_ERROR_WOULD_BLOCK, + G_IO_ERROR_HOST_NOT_FOUND, + G_IO_ERROR_WOULD_MERGE, + G_IO_ERROR_FAILED_HANDLED, + G_IO_ERROR_TOO_MANY_OPEN_FILES, + G_IO_ERROR_NOT_INITIALIZED, + G_IO_ERROR_ADDRESS_IN_USE, + G_IO_ERROR_PARTIAL_INPUT, + G_IO_ERROR_INVALID_DATA, + G_IO_ERROR_DBUS_ERROR, + G_IO_ERROR_HOST_UNREACHABLE, + G_IO_ERROR_NETWORK_UNREACHABLE, + G_IO_ERROR_CONNECTION_REFUSED, + G_IO_ERROR_PROXY_FAILED, + G_IO_ERROR_PROXY_AUTH_FAILED, + G_IO_ERROR_PROXY_NEED_AUTH, + G_IO_ERROR_PROXY_NOT_ALLOWED, + G_IO_ERROR_BROKEN_PIPE, + G_IO_ERROR_CONNECTION_CLOSED = G_IO_ERROR_BROKEN_PIPE, + G_IO_ERROR_NOT_CONNECTED, + G_IO_ERROR_MESSAGE_TOO_LARGE, + G_IO_ERROR_NO_SUCH_DEVICE GLIB_AVAILABLE_ENUMERATOR_IN_2_74, +} GIOErrorEnum; + + +/** + * GAskPasswordFlags: + * @G_ASK_PASSWORD_NEED_PASSWORD: operation requires a password. + * @G_ASK_PASSWORD_NEED_USERNAME: operation requires a username. + * @G_ASK_PASSWORD_NEED_DOMAIN: operation requires a domain. + * @G_ASK_PASSWORD_SAVING_SUPPORTED: operation supports saving settings. + * @G_ASK_PASSWORD_ANONYMOUS_SUPPORTED: operation supports anonymous users. + * @G_ASK_PASSWORD_TCRYPT: operation takes TCRYPT parameters (Since: 2.58) + * + * #GAskPasswordFlags are used to request specific information from the + * user, or to notify the user of their choices in an authentication + * situation. + **/ +typedef enum { + G_ASK_PASSWORD_NEED_PASSWORD = (1 << 0), + G_ASK_PASSWORD_NEED_USERNAME = (1 << 1), + G_ASK_PASSWORD_NEED_DOMAIN = (1 << 2), + G_ASK_PASSWORD_SAVING_SUPPORTED = (1 << 3), + G_ASK_PASSWORD_ANONYMOUS_SUPPORTED = (1 << 4), + G_ASK_PASSWORD_TCRYPT = (1 << 5), +} GAskPasswordFlags; + + +/** + * GPasswordSave: + * @G_PASSWORD_SAVE_NEVER: never save a password. + * @G_PASSWORD_SAVE_FOR_SESSION: save a password for the session. + * @G_PASSWORD_SAVE_PERMANENTLY: save a password permanently. + * + * #GPasswordSave is used to indicate the lifespan of a saved password. + * + * #Gvfs stores passwords in the Gnome keyring when this flag allows it + * to, and later retrieves it again from there. + **/ +typedef enum { + G_PASSWORD_SAVE_NEVER, + G_PASSWORD_SAVE_FOR_SESSION, + G_PASSWORD_SAVE_PERMANENTLY +} GPasswordSave; + + +/** + * GMountOperationResult: + * @G_MOUNT_OPERATION_HANDLED: The request was fulfilled and the + * user specified data is now available + * @G_MOUNT_OPERATION_ABORTED: The user requested the mount operation + * to be aborted + * @G_MOUNT_OPERATION_UNHANDLED: The request was unhandled (i.e. not + * implemented) + * + * #GMountOperationResult is returned as a result when a request for + * information is send by the mounting operation. + **/ +typedef enum { + G_MOUNT_OPERATION_HANDLED, + G_MOUNT_OPERATION_ABORTED, + G_MOUNT_OPERATION_UNHANDLED +} GMountOperationResult; + + +/** + * GOutputStreamSpliceFlags: + * @G_OUTPUT_STREAM_SPLICE_NONE: Do not close either stream. + * @G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE: Close the source stream after + * the splice. + * @G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET: Close the target stream after + * the splice. + * + * GOutputStreamSpliceFlags determine how streams should be spliced. + **/ +typedef enum { + G_OUTPUT_STREAM_SPLICE_NONE = 0, + G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE = (1 << 0), + G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET = (1 << 1) +} GOutputStreamSpliceFlags; + + +/** + * GIOStreamSpliceFlags: + * @G_IO_STREAM_SPLICE_NONE: Do not close either stream. + * @G_IO_STREAM_SPLICE_CLOSE_STREAM1: Close the first stream after + * the splice. + * @G_IO_STREAM_SPLICE_CLOSE_STREAM2: Close the second stream after + * the splice. + * @G_IO_STREAM_SPLICE_WAIT_FOR_BOTH: Wait for both splice operations to finish + * before calling the callback. + * + * GIOStreamSpliceFlags determine how streams should be spliced. + * + * Since: 2.28 + **/ +typedef enum { + G_IO_STREAM_SPLICE_NONE = 0, + G_IO_STREAM_SPLICE_CLOSE_STREAM1 = (1 << 0), + G_IO_STREAM_SPLICE_CLOSE_STREAM2 = (1 << 1), + G_IO_STREAM_SPLICE_WAIT_FOR_BOTH = (1 << 2) +} GIOStreamSpliceFlags; + +/** + * GEmblemOrigin: + * @G_EMBLEM_ORIGIN_UNKNOWN: Emblem of unknown origin + * @G_EMBLEM_ORIGIN_DEVICE: Emblem adds device-specific information + * @G_EMBLEM_ORIGIN_LIVEMETADATA: Emblem depicts live metadata, such as "readonly" + * @G_EMBLEM_ORIGIN_TAG: Emblem comes from a user-defined tag, e.g. set by nautilus (in the future) + * + * GEmblemOrigin is used to add information about the origin of the emblem + * to #GEmblem. + * + * Since: 2.18 + */ +typedef enum { + G_EMBLEM_ORIGIN_UNKNOWN, + G_EMBLEM_ORIGIN_DEVICE, + G_EMBLEM_ORIGIN_LIVEMETADATA, + G_EMBLEM_ORIGIN_TAG +} GEmblemOrigin; + +/** + * GResolverError: + * @G_RESOLVER_ERROR_NOT_FOUND: the requested name/address/service was not + * found + * @G_RESOLVER_ERROR_TEMPORARY_FAILURE: the requested information could not + * be looked up due to a network error or similar problem + * @G_RESOLVER_ERROR_INTERNAL: unknown error + * + * An error code used with %G_RESOLVER_ERROR in a #GError returned + * from a #GResolver routine. + * + * Since: 2.22 + */ +typedef enum { + G_RESOLVER_ERROR_NOT_FOUND, + G_RESOLVER_ERROR_TEMPORARY_FAILURE, + G_RESOLVER_ERROR_INTERNAL +} GResolverError; + +/** + * GResolverRecordType: + * @G_RESOLVER_RECORD_SRV: look up DNS SRV records for a domain + * @G_RESOLVER_RECORD_MX: look up DNS MX records for a domain + * @G_RESOLVER_RECORD_TXT: look up DNS TXT records for a name + * @G_RESOLVER_RECORD_SOA: look up DNS SOA records for a zone + * @G_RESOLVER_RECORD_NS: look up DNS NS records for a domain + * + * The type of record that g_resolver_lookup_records() or + * g_resolver_lookup_records_async() should retrieve. The records are returned + * as lists of #GVariant tuples. Each record type has different values in + * the variant tuples returned. + * + * %G_RESOLVER_RECORD_SRV records are returned as variants with the signature + * `(qqqs)`, containing a `guint16` with the priority, a `guint16` with the + * weight, a `guint16` with the port, and a string of the hostname. + * + * %G_RESOLVER_RECORD_MX records are returned as variants with the signature + * `(qs)`, representing a `guint16` with the preference, and a string containing + * the mail exchanger hostname. + * + * %G_RESOLVER_RECORD_TXT records are returned as variants with the signature + * `(as)`, representing an array of the strings in the text record. Note: Most TXT + * records only contain a single string, but + * [RFC 1035](https://tools.ietf.org/html/rfc1035#section-3.3.14) does allow a + * record to contain multiple strings. The RFC which defines the interpretation + * of a specific TXT record will likely require concatenation of multiple + * strings if they are present, as with + * [RFC 7208](https://tools.ietf.org/html/rfc7208#section-3.3). + * + * %G_RESOLVER_RECORD_SOA records are returned as variants with the signature + * `(ssuuuuu)`, representing a string containing the primary name server, a + * string containing the administrator, the serial as a `guint32`, the refresh + * interval as a `guint32`, the retry interval as a `guint32`, the expire timeout + * as a `guint32`, and the TTL as a `guint32`. + * + * %G_RESOLVER_RECORD_NS records are returned as variants with the signature + * `(s)`, representing a string of the hostname of the name server. + * + * Since: 2.34 + */ +typedef enum { + G_RESOLVER_RECORD_SRV = 1, + G_RESOLVER_RECORD_MX, + G_RESOLVER_RECORD_TXT, + G_RESOLVER_RECORD_SOA, + G_RESOLVER_RECORD_NS +} GResolverRecordType; + +/** + * GResourceError: + * @G_RESOURCE_ERROR_NOT_FOUND: no file was found at the requested path + * @G_RESOURCE_ERROR_INTERNAL: unknown error + * + * An error code used with %G_RESOURCE_ERROR in a #GError returned + * from a #GResource routine. + * + * Since: 2.32 + */ +typedef enum { + G_RESOURCE_ERROR_NOT_FOUND, + G_RESOURCE_ERROR_INTERNAL +} GResourceError; + +/** + * GResourceFlags: + * @G_RESOURCE_FLAGS_NONE: No flags set. + * @G_RESOURCE_FLAGS_COMPRESSED: The file is compressed. + * + * GResourceFlags give information about a particular file inside a resource + * bundle. + * + * Since: 2.32 + **/ +typedef enum { + G_RESOURCE_FLAGS_NONE = 0, + G_RESOURCE_FLAGS_COMPRESSED = (1<<0) +} GResourceFlags; + +/** + * GResourceLookupFlags: + * @G_RESOURCE_LOOKUP_FLAGS_NONE: No flags set. + * + * GResourceLookupFlags determine how resource path lookups are handled. + * + * Since: 2.32 + **/ +typedef enum /*< flags >*/ { + G_RESOURCE_LOOKUP_FLAGS_NONE = 0 +} GResourceLookupFlags; + +/** + * GSocketFamily: + * @G_SOCKET_FAMILY_INVALID: no address family + * @G_SOCKET_FAMILY_IPV4: the IPv4 family + * @G_SOCKET_FAMILY_IPV6: the IPv6 family + * @G_SOCKET_FAMILY_UNIX: the UNIX domain family + * + * The protocol family of a #GSocketAddress. (These values are + * identical to the system defines %AF_INET, %AF_INET6 and %AF_UNIX, + * if available.) + * + * Since: 2.22 + */ +typedef enum { + G_SOCKET_FAMILY_INVALID, + G_SOCKET_FAMILY_UNIX = GLIB_SYSDEF_AF_UNIX, + G_SOCKET_FAMILY_IPV4 = GLIB_SYSDEF_AF_INET, + G_SOCKET_FAMILY_IPV6 = GLIB_SYSDEF_AF_INET6 +} GSocketFamily; + +/** + * GSocketType: + * @G_SOCKET_TYPE_INVALID: Type unknown or wrong + * @G_SOCKET_TYPE_STREAM: Reliable connection-based byte streams (e.g. TCP). + * @G_SOCKET_TYPE_DATAGRAM: Connectionless, unreliable datagram passing. + * (e.g. UDP) + * @G_SOCKET_TYPE_SEQPACKET: Reliable connection-based passing of datagrams + * of fixed maximum length (e.g. SCTP). + * + * Flags used when creating a #GSocket. Some protocols may not implement + * all the socket types. + * + * Since: 2.22 + */ +typedef enum +{ + G_SOCKET_TYPE_INVALID, + G_SOCKET_TYPE_STREAM, + G_SOCKET_TYPE_DATAGRAM, + G_SOCKET_TYPE_SEQPACKET +} GSocketType; + +/** + * GSocketMsgFlags: + * @G_SOCKET_MSG_NONE: No flags. + * @G_SOCKET_MSG_OOB: Request to send/receive out of band data. + * @G_SOCKET_MSG_PEEK: Read data from the socket without removing it from + * the queue. + * @G_SOCKET_MSG_DONTROUTE: Don't use a gateway to send out the packet, + * only send to hosts on directly connected networks. + * + * Flags used in g_socket_receive_message() and g_socket_send_message(). + * The flags listed in the enum are some commonly available flags, but the + * values used for them are the same as on the platform, and any other flags + * are passed in/out as is. So to use a platform specific flag, just include + * the right system header and pass in the flag. + * + * Since: 2.22 + */ +typedef enum /*< flags >*/ +{ + G_SOCKET_MSG_NONE, + G_SOCKET_MSG_OOB = GLIB_SYSDEF_MSG_OOB, + G_SOCKET_MSG_PEEK = GLIB_SYSDEF_MSG_PEEK, + G_SOCKET_MSG_DONTROUTE = GLIB_SYSDEF_MSG_DONTROUTE +} GSocketMsgFlags; + +/** + * GSocketProtocol: + * @G_SOCKET_PROTOCOL_UNKNOWN: The protocol type is unknown + * @G_SOCKET_PROTOCOL_DEFAULT: The default protocol for the family/type + * @G_SOCKET_PROTOCOL_TCP: TCP over IP + * @G_SOCKET_PROTOCOL_UDP: UDP over IP + * @G_SOCKET_PROTOCOL_SCTP: SCTP over IP + * + * A protocol identifier is specified when creating a #GSocket, which is a + * family/type specific identifier, where 0 means the default protocol for + * the particular family/type. + * + * This enum contains a set of commonly available and used protocols. You + * can also pass any other identifiers handled by the platform in order to + * use protocols not listed here. + * + * Since: 2.22 + */ +typedef enum { + G_SOCKET_PROTOCOL_UNKNOWN = -1, + G_SOCKET_PROTOCOL_DEFAULT = 0, + G_SOCKET_PROTOCOL_TCP = 6, + G_SOCKET_PROTOCOL_UDP = 17, + G_SOCKET_PROTOCOL_SCTP = 132 +} GSocketProtocol; + +/** + * GZlibCompressorFormat: + * @G_ZLIB_COMPRESSOR_FORMAT_ZLIB: deflate compression with zlib header + * @G_ZLIB_COMPRESSOR_FORMAT_GZIP: gzip file format + * @G_ZLIB_COMPRESSOR_FORMAT_RAW: deflate compression with no header + * + * Used to select the type of data format to use for #GZlibDecompressor + * and #GZlibCompressor. + * + * Since: 2.24 + */ +typedef enum { + G_ZLIB_COMPRESSOR_FORMAT_ZLIB, + G_ZLIB_COMPRESSOR_FORMAT_GZIP, + G_ZLIB_COMPRESSOR_FORMAT_RAW +} GZlibCompressorFormat; + +/** + * GUnixSocketAddressType: + * @G_UNIX_SOCKET_ADDRESS_INVALID: invalid + * @G_UNIX_SOCKET_ADDRESS_ANONYMOUS: anonymous + * @G_UNIX_SOCKET_ADDRESS_PATH: a filesystem path + * @G_UNIX_SOCKET_ADDRESS_ABSTRACT: an abstract name + * @G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED: an abstract name, 0-padded + * to the full length of a unix socket name + * + * The type of name used by a #GUnixSocketAddress. + * %G_UNIX_SOCKET_ADDRESS_PATH indicates a traditional unix domain + * socket bound to a filesystem path. %G_UNIX_SOCKET_ADDRESS_ANONYMOUS + * indicates a socket not bound to any name (eg, a client-side socket, + * or a socket created with socketpair()). + * + * For abstract sockets, there are two incompatible ways of naming + * them; the man pages suggest using the entire `struct sockaddr_un` + * as the name, padding the unused parts of the %sun_path field with + * zeroes; this corresponds to %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED. + * However, many programs instead just use a portion of %sun_path, and + * pass an appropriate smaller length to bind() or connect(). This is + * %G_UNIX_SOCKET_ADDRESS_ABSTRACT. + * + * Since: 2.26 + */ +typedef enum { + G_UNIX_SOCKET_ADDRESS_INVALID, + G_UNIX_SOCKET_ADDRESS_ANONYMOUS, + G_UNIX_SOCKET_ADDRESS_PATH, + G_UNIX_SOCKET_ADDRESS_ABSTRACT, + G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED +} GUnixSocketAddressType; + +/** + * GBusType: + * @G_BUS_TYPE_STARTER: An alias for the message bus that activated the process, if any. + * @G_BUS_TYPE_NONE: Not a message bus. + * @G_BUS_TYPE_SYSTEM: The system-wide message bus. + * @G_BUS_TYPE_SESSION: The login session message bus. + * + * An enumeration for well-known message buses. + * + * Since: 2.26 + */ +typedef enum +{ + G_BUS_TYPE_STARTER = -1, + G_BUS_TYPE_NONE = 0, + G_BUS_TYPE_SYSTEM = 1, + G_BUS_TYPE_SESSION = 2 +} GBusType; + +/** + * GBusNameOwnerFlags: + * @G_BUS_NAME_OWNER_FLAGS_NONE: No flags set. + * @G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT: Allow another message bus connection to claim the name. + * @G_BUS_NAME_OWNER_FLAGS_REPLACE: If another message bus connection owns the name and have + * specified %G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, then take the name from the other connection. + * @G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE: If another message bus connection owns the name, immediately + * return an error from g_bus_own_name() rather than entering the waiting queue for that name. (Since 2.54) + * + * Flags used in g_bus_own_name(). + * + * Since: 2.26 + */ +typedef enum +{ + G_BUS_NAME_OWNER_FLAGS_NONE = 0, /*< nick=none >*/ + G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT = (1<<0), /*< nick=allow-replacement >*/ + G_BUS_NAME_OWNER_FLAGS_REPLACE = (1<<1), /*< nick=replace >*/ + G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE = (1<<2) /*< nick=do-not-queue >*/ +} GBusNameOwnerFlags; +/* When adding new flags, their numeric values must currently match those + * used in the D-Bus Specification. */ + +/** + * GBusNameWatcherFlags: + * @G_BUS_NAME_WATCHER_FLAGS_NONE: No flags set. + * @G_BUS_NAME_WATCHER_FLAGS_AUTO_START: If no-one owns the name when + * beginning to watch the name, ask the bus to launch an owner for the + * name. + * + * Flags used in g_bus_watch_name(). + * + * Since: 2.26 + */ +typedef enum +{ + G_BUS_NAME_WATCHER_FLAGS_NONE = 0, + G_BUS_NAME_WATCHER_FLAGS_AUTO_START = (1<<0) +} GBusNameWatcherFlags; + +/** + * GDBusProxyFlags: + * @G_DBUS_PROXY_FLAGS_NONE: No flags set. + * @G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES: Don't load properties. + * @G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS: Don't connect to signals on the remote object. + * @G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START: If the proxy is for a well-known name, + * do not ask the bus to launch an owner during proxy initialization or a method call. + * This flag is only meaningful in proxies for well-known names. + * @G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES: If set, the property value for any __invalidated property__ will be (asynchronously) retrieved upon receiving the [`PropertiesChanged`](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties) D-Bus signal and the property will not cause emission of the #GDBusProxy::g-properties-changed signal. When the value is received the #GDBusProxy::g-properties-changed signal is emitted for the property along with the retrieved value. Since 2.32. + * @G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION: If the proxy is for a well-known name, + * do not ask the bus to launch an owner during proxy initialization, but allow it to be + * autostarted by a method call. This flag is only meaningful in proxies for well-known names, + * and only if %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is not also specified. + * @G_DBUS_PROXY_FLAGS_NO_MATCH_RULE: Don't actually send the AddMatch D-Bus + * call for this signal subscription. This gives you more control + * over which match rules you add (but you must add them manually). (Since: 2.72) + * + * Flags used when constructing an instance of a #GDBusProxy derived class. + * + * Since: 2.26 + */ +typedef enum +{ + G_DBUS_PROXY_FLAGS_NONE = 0, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = (1<<0), + G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = (1<<1), + G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = (1<<2), + G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = (1<<3), + G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION = (1<<4), + G_DBUS_PROXY_FLAGS_NO_MATCH_RULE GLIB_AVAILABLE_ENUMERATOR_IN_2_72 = (1<<5) +} GDBusProxyFlags; + +/** + * GDBusError: + * @G_DBUS_ERROR_FAILED: + * A generic error; "something went wrong" - see the error message for + * more. + * @G_DBUS_ERROR_NO_MEMORY: + * There was not enough memory to complete an operation. + * @G_DBUS_ERROR_SERVICE_UNKNOWN: + * The bus doesn't know how to launch a service to supply the bus name + * you wanted. + * @G_DBUS_ERROR_NAME_HAS_NO_OWNER: + * The bus name you referenced doesn't exist (i.e. no application owns + * it). + * @G_DBUS_ERROR_NO_REPLY: + * No reply to a message expecting one, usually means a timeout occurred. + * @G_DBUS_ERROR_IO_ERROR: + * Something went wrong reading or writing to a socket, for example. + * @G_DBUS_ERROR_BAD_ADDRESS: + * A D-Bus bus address was malformed. + * @G_DBUS_ERROR_NOT_SUPPORTED: + * Requested operation isn't supported (like ENOSYS on UNIX). + * @G_DBUS_ERROR_LIMITS_EXCEEDED: + * Some limited resource is exhausted. + * @G_DBUS_ERROR_ACCESS_DENIED: + * Security restrictions don't allow doing what you're trying to do. + * @G_DBUS_ERROR_AUTH_FAILED: + * Authentication didn't work. + * @G_DBUS_ERROR_NO_SERVER: + * Unable to connect to server (probably caused by ECONNREFUSED on a + * socket). + * @G_DBUS_ERROR_TIMEOUT: + * Certain timeout errors, possibly ETIMEDOUT on a socket. Note that + * %G_DBUS_ERROR_NO_REPLY is used for message reply timeouts. Warning: + * this is confusingly-named given that %G_DBUS_ERROR_TIMED_OUT also + * exists. We can't fix it for compatibility reasons so just be + * careful. + * @G_DBUS_ERROR_NO_NETWORK: + * No network access (probably ENETUNREACH on a socket). + * @G_DBUS_ERROR_ADDRESS_IN_USE: + * Can't bind a socket since its address is in use (i.e. EADDRINUSE). + * @G_DBUS_ERROR_DISCONNECTED: + * The connection is disconnected and you're trying to use it. + * @G_DBUS_ERROR_INVALID_ARGS: + * Invalid arguments passed to a method call. + * @G_DBUS_ERROR_FILE_NOT_FOUND: + * Missing file. + * @G_DBUS_ERROR_FILE_EXISTS: + * Existing file and the operation you're using does not silently overwrite. + * @G_DBUS_ERROR_UNKNOWN_METHOD: + * Method name you invoked isn't known by the object you invoked it on. + * @G_DBUS_ERROR_UNKNOWN_OBJECT: + * Object you invoked a method on isn't known. Since 2.42 + * @G_DBUS_ERROR_UNKNOWN_INTERFACE: + * Interface you invoked a method on isn't known by the object. Since 2.42 + * @G_DBUS_ERROR_UNKNOWN_PROPERTY: + * Property you tried to access isn't known by the object. Since 2.42 + * @G_DBUS_ERROR_PROPERTY_READ_ONLY: + * Property you tried to set is read-only. Since 2.42 + * @G_DBUS_ERROR_TIMED_OUT: + * Certain timeout errors, e.g. while starting a service. Warning: this is + * confusingly-named given that %G_DBUS_ERROR_TIMEOUT also exists. We + * can't fix it for compatibility reasons so just be careful. + * @G_DBUS_ERROR_MATCH_RULE_NOT_FOUND: + * Tried to remove or modify a match rule that didn't exist. + * @G_DBUS_ERROR_MATCH_RULE_INVALID: + * The match rule isn't syntactically valid. + * @G_DBUS_ERROR_SPAWN_EXEC_FAILED: + * While starting a new process, the exec() call failed. + * @G_DBUS_ERROR_SPAWN_FORK_FAILED: + * While starting a new process, the fork() call failed. + * @G_DBUS_ERROR_SPAWN_CHILD_EXITED: + * While starting a new process, the child exited with a status code. + * @G_DBUS_ERROR_SPAWN_CHILD_SIGNALED: + * While starting a new process, the child exited on a signal. + * @G_DBUS_ERROR_SPAWN_FAILED: + * While starting a new process, something went wrong. + * @G_DBUS_ERROR_SPAWN_SETUP_FAILED: + * We failed to setup the environment correctly. + * @G_DBUS_ERROR_SPAWN_CONFIG_INVALID: + * We failed to setup the config parser correctly. + * @G_DBUS_ERROR_SPAWN_SERVICE_INVALID: + * Bus name was not valid. + * @G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND: + * Service file not found in system-services directory. + * @G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID: + * Permissions are incorrect on the setuid helper. + * @G_DBUS_ERROR_SPAWN_FILE_INVALID: + * Service file invalid (Name, User or Exec missing). + * @G_DBUS_ERROR_SPAWN_NO_MEMORY: + * Tried to get a UNIX process ID and it wasn't available. + * @G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN: + * Tried to get a UNIX process ID and it wasn't available. + * @G_DBUS_ERROR_INVALID_SIGNATURE: + * A type signature is not valid. + * @G_DBUS_ERROR_INVALID_FILE_CONTENT: + * A file contains invalid syntax or is otherwise broken. + * @G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN: + * Asked for SELinux security context and it wasn't available. + * @G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN: + * Asked for ADT audit data and it wasn't available. + * @G_DBUS_ERROR_OBJECT_PATH_IN_USE: + * There's already an object with the requested object path. + * + * Error codes for the %G_DBUS_ERROR error domain. + * + * Since: 2.26 + */ +typedef enum +{ + /* Well-known errors in the org.freedesktop.DBus.Error namespace */ + G_DBUS_ERROR_FAILED, /* org.freedesktop.DBus.Error.Failed */ + G_DBUS_ERROR_NO_MEMORY, /* org.freedesktop.DBus.Error.NoMemory */ + G_DBUS_ERROR_SERVICE_UNKNOWN, /* org.freedesktop.DBus.Error.ServiceUnknown */ + G_DBUS_ERROR_NAME_HAS_NO_OWNER, /* org.freedesktop.DBus.Error.NameHasNoOwner */ + G_DBUS_ERROR_NO_REPLY, /* org.freedesktop.DBus.Error.NoReply */ + G_DBUS_ERROR_IO_ERROR, /* org.freedesktop.DBus.Error.IOError */ + G_DBUS_ERROR_BAD_ADDRESS, /* org.freedesktop.DBus.Error.BadAddress */ + G_DBUS_ERROR_NOT_SUPPORTED, /* org.freedesktop.DBus.Error.NotSupported */ + G_DBUS_ERROR_LIMITS_EXCEEDED, /* org.freedesktop.DBus.Error.LimitsExceeded */ + G_DBUS_ERROR_ACCESS_DENIED, /* org.freedesktop.DBus.Error.AccessDenied */ + G_DBUS_ERROR_AUTH_FAILED, /* org.freedesktop.DBus.Error.AuthFailed */ + G_DBUS_ERROR_NO_SERVER, /* org.freedesktop.DBus.Error.NoServer */ + G_DBUS_ERROR_TIMEOUT, /* org.freedesktop.DBus.Error.Timeout */ + G_DBUS_ERROR_NO_NETWORK, /* org.freedesktop.DBus.Error.NoNetwork */ + G_DBUS_ERROR_ADDRESS_IN_USE, /* org.freedesktop.DBus.Error.AddressInUse */ + G_DBUS_ERROR_DISCONNECTED, /* org.freedesktop.DBus.Error.Disconnected */ + G_DBUS_ERROR_INVALID_ARGS, /* org.freedesktop.DBus.Error.InvalidArgs */ + G_DBUS_ERROR_FILE_NOT_FOUND, /* org.freedesktop.DBus.Error.FileNotFound */ + G_DBUS_ERROR_FILE_EXISTS, /* org.freedesktop.DBus.Error.FileExists */ + G_DBUS_ERROR_UNKNOWN_METHOD, /* org.freedesktop.DBus.Error.UnknownMethod */ + G_DBUS_ERROR_TIMED_OUT, /* org.freedesktop.DBus.Error.TimedOut */ + G_DBUS_ERROR_MATCH_RULE_NOT_FOUND, /* org.freedesktop.DBus.Error.MatchRuleNotFound */ + G_DBUS_ERROR_MATCH_RULE_INVALID, /* org.freedesktop.DBus.Error.MatchRuleInvalid */ + G_DBUS_ERROR_SPAWN_EXEC_FAILED, /* org.freedesktop.DBus.Error.Spawn.ExecFailed */ + G_DBUS_ERROR_SPAWN_FORK_FAILED, /* org.freedesktop.DBus.Error.Spawn.ForkFailed */ + G_DBUS_ERROR_SPAWN_CHILD_EXITED, /* org.freedesktop.DBus.Error.Spawn.ChildExited */ + G_DBUS_ERROR_SPAWN_CHILD_SIGNALED, /* org.freedesktop.DBus.Error.Spawn.ChildSignaled */ + G_DBUS_ERROR_SPAWN_FAILED, /* org.freedesktop.DBus.Error.Spawn.Failed */ + G_DBUS_ERROR_SPAWN_SETUP_FAILED, /* org.freedesktop.DBus.Error.Spawn.FailedToSetup */ + G_DBUS_ERROR_SPAWN_CONFIG_INVALID, /* org.freedesktop.DBus.Error.Spawn.ConfigInvalid */ + G_DBUS_ERROR_SPAWN_SERVICE_INVALID, /* org.freedesktop.DBus.Error.Spawn.ServiceNotValid */ + G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND, /* org.freedesktop.DBus.Error.Spawn.ServiceNotFound */ + G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID, /* org.freedesktop.DBus.Error.Spawn.PermissionsInvalid */ + G_DBUS_ERROR_SPAWN_FILE_INVALID, /* org.freedesktop.DBus.Error.Spawn.FileInvalid */ + G_DBUS_ERROR_SPAWN_NO_MEMORY, /* org.freedesktop.DBus.Error.Spawn.NoMemory */ + G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN, /* org.freedesktop.DBus.Error.UnixProcessIdUnknown */ + G_DBUS_ERROR_INVALID_SIGNATURE, /* org.freedesktop.DBus.Error.InvalidSignature */ + G_DBUS_ERROR_INVALID_FILE_CONTENT, /* org.freedesktop.DBus.Error.InvalidFileContent */ + G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN, /* org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown */ + G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN, /* org.freedesktop.DBus.Error.AdtAuditDataUnknown */ + G_DBUS_ERROR_OBJECT_PATH_IN_USE, /* org.freedesktop.DBus.Error.ObjectPathInUse */ + G_DBUS_ERROR_UNKNOWN_OBJECT, /* org.freedesktop.DBus.Error.UnknownObject */ + G_DBUS_ERROR_UNKNOWN_INTERFACE, /* org.freedesktop.DBus.Error.UnknownInterface */ + G_DBUS_ERROR_UNKNOWN_PROPERTY, /* org.freedesktop.DBus.Error.UnknownProperty */ + G_DBUS_ERROR_PROPERTY_READ_ONLY /* org.freedesktop.DBus.Error.PropertyReadOnly */ +} GDBusError; +/* Remember to update g_dbus_error_quark() in gdbuserror.c if you extend this enumeration */ + +/** + * GDBusConnectionFlags: + * @G_DBUS_CONNECTION_FLAGS_NONE: No flags set. + * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT: Perform authentication against server. + * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER: Perform authentication against client. + * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS: When + * authenticating as a server, allow the anonymous authentication + * method. + * @G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION: Pass this flag if connecting to a peer that is a + * message bus. This means that the Hello() method will be invoked as part of the connection setup. + * @G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING: If set, processing of D-Bus messages is + * delayed until g_dbus_connection_start_message_processing() is called. + * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER: When authenticating + * as a server, require the UID of the peer to be the same as the UID of the server. (Since: 2.68) + * @G_DBUS_CONNECTION_FLAGS_CROSS_NAMESPACE: When authenticating, try to use + * protocols that work across a Linux user namespace boundary, even if this + * reduces interoperability with older D-Bus implementations. This currently + * affects client-side `EXTERNAL` authentication, for which this flag makes + * connections to a server in another user namespace succeed, but causes + * a deadlock when connecting to a GDBus server older than 2.73.3. Since: 2.74 + * + * Flags used when creating a new #GDBusConnection. + * + * Since: 2.26 + */ +typedef enum { + G_DBUS_CONNECTION_FLAGS_NONE = 0, + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT = (1<<0), + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER = (1<<1), + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<2), + G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION = (1<<3), + G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING = (1<<4), + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<5), + G_DBUS_CONNECTION_FLAGS_CROSS_NAMESPACE GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = (1<<6) +} GDBusConnectionFlags; + +/** + * GDBusCapabilityFlags: + * @G_DBUS_CAPABILITY_FLAGS_NONE: No flags set. + * @G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING: The connection + * supports exchanging UNIX file descriptors with the remote peer. + * + * Capabilities negotiated with the remote peer. + * + * Since: 2.26 + */ +typedef enum { + G_DBUS_CAPABILITY_FLAGS_NONE = 0, + G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING = (1<<0) +} GDBusCapabilityFlags; + +/** + * GDBusCallFlags: + * @G_DBUS_CALL_FLAGS_NONE: No flags set. + * @G_DBUS_CALL_FLAGS_NO_AUTO_START: The bus must not launch + * an owner for the destination name in response to this method + * invocation. + * @G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: the caller is prepared to + * wait for interactive authorization. Since 2.46. + * + * Flags used in g_dbus_connection_call() and similar APIs. + * + * Since: 2.26 + */ +typedef enum { + G_DBUS_CALL_FLAGS_NONE = 0, + G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0), + G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<1) +} GDBusCallFlags; +/* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */ + +/** + * GDBusMessageType: + * @G_DBUS_MESSAGE_TYPE_INVALID: Message is of invalid type. + * @G_DBUS_MESSAGE_TYPE_METHOD_CALL: Method call. + * @G_DBUS_MESSAGE_TYPE_METHOD_RETURN: Method reply. + * @G_DBUS_MESSAGE_TYPE_ERROR: Error reply. + * @G_DBUS_MESSAGE_TYPE_SIGNAL: Signal emission. + * + * Message types used in #GDBusMessage. + * + * Since: 2.26 + */ +typedef enum { + G_DBUS_MESSAGE_TYPE_INVALID, + G_DBUS_MESSAGE_TYPE_METHOD_CALL, + G_DBUS_MESSAGE_TYPE_METHOD_RETURN, + G_DBUS_MESSAGE_TYPE_ERROR, + G_DBUS_MESSAGE_TYPE_SIGNAL +} GDBusMessageType; + +/** + * GDBusMessageFlags: + * @G_DBUS_MESSAGE_FLAGS_NONE: No flags set. + * @G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED: A reply is not expected. + * @G_DBUS_MESSAGE_FLAGS_NO_AUTO_START: The bus must not launch an + * owner for the destination name in response to this message. + * @G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: If set on a method + * call, this flag means that the caller is prepared to wait for interactive + * authorization. Since 2.46. + * + * Message flags used in #GDBusMessage. + * + * Since: 2.26 + */ +typedef enum { + G_DBUS_MESSAGE_FLAGS_NONE = 0, + G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED = (1<<0), + G_DBUS_MESSAGE_FLAGS_NO_AUTO_START = (1<<1), + G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<2) +} GDBusMessageFlags; + +/** + * GDBusMessageHeaderField: + * @G_DBUS_MESSAGE_HEADER_FIELD_INVALID: Not a valid header field. + * @G_DBUS_MESSAGE_HEADER_FIELD_PATH: The object path. + * @G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE: The interface name. + * @G_DBUS_MESSAGE_HEADER_FIELD_MEMBER: The method or signal name. + * @G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME: The name of the error that occurred. + * @G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL: The serial number the message is a reply to. + * @G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION: The name the message is intended for. + * @G_DBUS_MESSAGE_HEADER_FIELD_SENDER: Unique name of the sender of the message (filled in by the bus). + * @G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE: The signature of the message body. + * @G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS: The number of UNIX file descriptors that accompany the message. + * + * Header fields used in #GDBusMessage. + * + * Since: 2.26 + */ +typedef enum { + G_DBUS_MESSAGE_HEADER_FIELD_INVALID, + G_DBUS_MESSAGE_HEADER_FIELD_PATH, + G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE, + G_DBUS_MESSAGE_HEADER_FIELD_MEMBER, + G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME, + G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL, + G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION, + G_DBUS_MESSAGE_HEADER_FIELD_SENDER, + G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE, + G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS +} GDBusMessageHeaderField; + +/** + * GDBusPropertyInfoFlags: + * @G_DBUS_PROPERTY_INFO_FLAGS_NONE: No flags set. + * @G_DBUS_PROPERTY_INFO_FLAGS_READABLE: Property is readable. + * @G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE: Property is writable. + * + * Flags describing the access control of a D-Bus property. + * + * Since: 2.26 + */ +typedef enum +{ + G_DBUS_PROPERTY_INFO_FLAGS_NONE = 0, + G_DBUS_PROPERTY_INFO_FLAGS_READABLE = (1<<0), + G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE = (1<<1) +} GDBusPropertyInfoFlags; + +/** + * GDBusSubtreeFlags: + * @G_DBUS_SUBTREE_FLAGS_NONE: No flags set. + * @G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES: Method calls to objects not in the enumerated range + * will still be dispatched. This is useful if you want + * to dynamically spawn objects in the subtree. + * + * Flags passed to g_dbus_connection_register_subtree(). + * + * Since: 2.26 + */ +typedef enum +{ + G_DBUS_SUBTREE_FLAGS_NONE = 0, + G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES = (1<<0) +} GDBusSubtreeFlags; + +/** + * GDBusServerFlags: + * @G_DBUS_SERVER_FLAGS_NONE: No flags set. + * @G_DBUS_SERVER_FLAGS_RUN_IN_THREAD: All #GDBusServer::new-connection + * signals will run in separated dedicated threads (see signal for + * details). + * @G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS: Allow the anonymous + * authentication method. + * @G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER: Require the UID of the + * peer to be the same as the UID of the server when authenticating. (Since: 2.68) + * + * Flags used when creating a #GDBusServer. + * + * Since: 2.26 + */ +typedef enum +{ + G_DBUS_SERVER_FLAGS_NONE = 0, + G_DBUS_SERVER_FLAGS_RUN_IN_THREAD = (1<<0), + G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<1), + G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<2) +} GDBusServerFlags; + +/** + * GDBusSignalFlags: + * @G_DBUS_SIGNAL_FLAGS_NONE: No flags set. + * @G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE: Don't actually send the AddMatch + * D-Bus call for this signal subscription. This gives you more control + * over which match rules you add (but you must add them manually). + * @G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE: Match first arguments that + * contain a bus or interface name with the given namespace. + * @G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH: Match first arguments that + * contain an object path that is either equivalent to the given path, + * or one of the paths is a subpath of the other. + * + * Flags used when subscribing to signals via g_dbus_connection_signal_subscribe(). + * + * Since: 2.26 + */ +typedef enum /*< flags >*/ +{ + G_DBUS_SIGNAL_FLAGS_NONE = 0, + G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE = (1<<0), + G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE = (1<<1), + G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH = (1<<2) +} GDBusSignalFlags; + +/** + * GDBusSendMessageFlags: + * @G_DBUS_SEND_MESSAGE_FLAGS_NONE: No flags set. + * @G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL: Do not automatically + * assign a serial number from the #GDBusConnection object when + * sending a message. + * + * Flags used when sending #GDBusMessages on a #GDBusConnection. + * + * Since: 2.26 + */ +typedef enum +{ + G_DBUS_SEND_MESSAGE_FLAGS_NONE = 0, + G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL = (1<<0) +} GDBusSendMessageFlags; +/* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */ + +/** + * GCredentialsType: + * @G_CREDENTIALS_TYPE_INVALID: Indicates an invalid native credential type. + * @G_CREDENTIALS_TYPE_LINUX_UCRED: The native credentials type is a `struct ucred`. + * @G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED: The native credentials type is a `struct cmsgcred`. + * @G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED: The native credentials type is a `struct sockpeercred`. Added in 2.30. + * @G_CREDENTIALS_TYPE_SOLARIS_UCRED: The native credentials type is a `ucred_t`. Added in 2.40. + * @G_CREDENTIALS_TYPE_NETBSD_UNPCBID: The native credentials type is a `struct unpcbid`. Added in 2.42. + * @G_CREDENTIALS_TYPE_APPLE_XUCRED: The native credentials type is a `struct xucred`. Added in 2.66. + * @G_CREDENTIALS_TYPE_WIN32_PID: The native credentials type is a PID `DWORD`. Added in 2.72. + * + * Enumeration describing different kinds of native credential types. + * + * Since: 2.26 + */ +typedef enum +{ + G_CREDENTIALS_TYPE_INVALID, + G_CREDENTIALS_TYPE_LINUX_UCRED, + G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED, + G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED, + G_CREDENTIALS_TYPE_SOLARIS_UCRED, + G_CREDENTIALS_TYPE_NETBSD_UNPCBID, + G_CREDENTIALS_TYPE_APPLE_XUCRED, + G_CREDENTIALS_TYPE_WIN32_PID, +} GCredentialsType; + +/** + * GDBusMessageByteOrder: + * @G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN: The byte order is big endian. + * @G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN: The byte order is little endian. + * + * Enumeration used to describe the byte order of a D-Bus message. + * + * Since: 2.26 + */ +typedef enum +{ + G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN = 'B', + G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN = 'l' +} GDBusMessageByteOrder; + +/** + * GApplicationFlags: + * @G_APPLICATION_FLAGS_NONE: Default. Deprecated in 2.74, use + * %G_APPLICATION_DEFAULT_FLAGS instead + * @G_APPLICATION_DEFAULT_FLAGS: Default flags. Since: 2.74 + * @G_APPLICATION_IS_SERVICE: Run as a service. In this mode, registration + * fails if the service is already running, and the application + * will initially wait up to 10 seconds for an initial activation + * message to arrive. + * @G_APPLICATION_IS_LAUNCHER: Don't try to become the primary instance. + * @G_APPLICATION_HANDLES_OPEN: This application handles opening files (in + * the primary instance). Note that this flag only affects the default + * implementation of local_command_line(), and has no effect if + * %G_APPLICATION_HANDLES_COMMAND_LINE is given. + * See g_application_run() for details. + * @G_APPLICATION_HANDLES_COMMAND_LINE: This application handles command line + * arguments (in the primary instance). Note that this flag only affect + * the default implementation of local_command_line(). + * See g_application_run() for details. + * @G_APPLICATION_SEND_ENVIRONMENT: Send the environment of the + * launching process to the primary instance. Set this flag if your + * application is expected to behave differently depending on certain + * environment variables. For instance, an editor might be expected + * to use the `GIT_COMMITTER_NAME` environment variable + * when editing a git commit message. The environment is available + * to the #GApplication::command-line signal handler, via + * g_application_command_line_getenv(). + * @G_APPLICATION_NON_UNIQUE: Make no attempts to do any of the typical + * single-instance application negotiation, even if the application + * ID is given. The application neither attempts to become the + * owner of the application ID nor does it check if an existing + * owner already exists. Everything occurs in the local process. + * Since: 2.30. + * @G_APPLICATION_CAN_OVERRIDE_APP_ID: Allow users to override the + * application ID from the command line with `--gapplication-app-id`. + * Since: 2.48 + * @G_APPLICATION_ALLOW_REPLACEMENT: Allow another instance to take over + * the bus name. Since: 2.60 + * @G_APPLICATION_REPLACE: Take over from another instance. This flag is + * usually set by passing `--gapplication-replace` on the commandline. + * Since: 2.60 + * + * Flags used to define the behaviour of a #GApplication. + * + * Since: 2.28 + **/ +typedef enum /*< prefix=G_APPLICATION >*/ +{ + G_APPLICATION_FLAGS_NONE GLIB_DEPRECATED_ENUMERATOR_IN_2_74_FOR(G_APPLICATION_DEFAULT_FLAGS), + G_APPLICATION_DEFAULT_FLAGS GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_APPLICATION_IS_SERVICE = (1 << 0), + G_APPLICATION_IS_LAUNCHER = (1 << 1), + + G_APPLICATION_HANDLES_OPEN = (1 << 2), + G_APPLICATION_HANDLES_COMMAND_LINE = (1 << 3), + G_APPLICATION_SEND_ENVIRONMENT = (1 << 4), + + G_APPLICATION_NON_UNIQUE = (1 << 5), + + G_APPLICATION_CAN_OVERRIDE_APP_ID = (1 << 6), + G_APPLICATION_ALLOW_REPLACEMENT = (1 << 7), + G_APPLICATION_REPLACE = (1 << 8) +} GApplicationFlags; + +/** + * GTlsError: + * @G_TLS_ERROR_UNAVAILABLE: No TLS provider is available + * @G_TLS_ERROR_MISC: Miscellaneous TLS error + * @G_TLS_ERROR_BAD_CERTIFICATE: The certificate presented could not + * be parsed or failed validation. + * @G_TLS_ERROR_NOT_TLS: The TLS handshake failed because the + * peer does not seem to be a TLS server. + * @G_TLS_ERROR_HANDSHAKE: The TLS handshake failed because the + * peer's certificate was not acceptable. + * @G_TLS_ERROR_CERTIFICATE_REQUIRED: The TLS handshake failed because + * the server requested a client-side certificate, but none was + * provided. See g_tls_connection_set_certificate(). + * @G_TLS_ERROR_EOF: The TLS connection was closed without proper + * notice, which may indicate an attack. See + * g_tls_connection_set_require_close_notify(). + * @G_TLS_ERROR_INAPPROPRIATE_FALLBACK: The TLS handshake failed + * because the client sent the fallback SCSV, indicating a protocol + * downgrade attack. Since: 2.60 + * @G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD: The certificate failed + * to load because a password was incorrect. Since: 2.72 + * + * An error code used with %G_TLS_ERROR in a #GError returned from a + * TLS-related routine. + * + * Since: 2.28 + */ +typedef enum { + G_TLS_ERROR_UNAVAILABLE, + G_TLS_ERROR_MISC, + G_TLS_ERROR_BAD_CERTIFICATE, + G_TLS_ERROR_NOT_TLS, + G_TLS_ERROR_HANDSHAKE, + G_TLS_ERROR_CERTIFICATE_REQUIRED, + G_TLS_ERROR_EOF, + G_TLS_ERROR_INAPPROPRIATE_FALLBACK, + G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD +} GTlsError; + +/** + * GTlsCertificateFlags: + * @G_TLS_CERTIFICATE_NO_FLAGS: No flags set. Since: 2.74 + * @G_TLS_CERTIFICATE_UNKNOWN_CA: The signing certificate authority is + * not known. + * @G_TLS_CERTIFICATE_BAD_IDENTITY: The certificate does not match the + * expected identity of the site that it was retrieved from. + * @G_TLS_CERTIFICATE_NOT_ACTIVATED: The certificate's activation time + * is still in the future + * @G_TLS_CERTIFICATE_EXPIRED: The certificate has expired + * @G_TLS_CERTIFICATE_REVOKED: The certificate has been revoked + * according to the #GTlsConnection's certificate revocation list. + * @G_TLS_CERTIFICATE_INSECURE: The certificate's algorithm is + * considered insecure. + * @G_TLS_CERTIFICATE_GENERIC_ERROR: Some other error occurred validating + * the certificate + * @G_TLS_CERTIFICATE_VALIDATE_ALL: the combination of all of the above + * flags + * + * A set of flags describing TLS certification validation. This can be + * used to describe why a particular certificate was rejected (for + * example, in #GTlsConnection::accept-certificate). + * + * GLib guarantees that if certificate verification fails, at least one + * flag will be set, but it does not guarantee that all possible flags + * will be set. Accordingly, you may not safely decide to ignore any + * particular type of error. For example, it would be incorrect to mask + * %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired certificates, + * because this could potentially be the only error flag set even if + * other problems exist with the certificate. + * + * Since: 2.28 + */ +typedef enum { + G_TLS_CERTIFICATE_NO_FLAGS GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_TLS_CERTIFICATE_UNKNOWN_CA = (1 << 0), + G_TLS_CERTIFICATE_BAD_IDENTITY = (1 << 1), + G_TLS_CERTIFICATE_NOT_ACTIVATED = (1 << 2), + G_TLS_CERTIFICATE_EXPIRED = (1 << 3), + G_TLS_CERTIFICATE_REVOKED = (1 << 4), + G_TLS_CERTIFICATE_INSECURE = (1 << 5), + G_TLS_CERTIFICATE_GENERIC_ERROR = (1 << 6), + + G_TLS_CERTIFICATE_VALIDATE_ALL = 0x007f +} GTlsCertificateFlags; + +/** + * GTlsAuthenticationMode: + * @G_TLS_AUTHENTICATION_NONE: client authentication not required + * @G_TLS_AUTHENTICATION_REQUESTED: client authentication is requested + * @G_TLS_AUTHENTICATION_REQUIRED: client authentication is required + * + * The client authentication mode for a #GTlsServerConnection. + * + * Since: 2.28 + */ +typedef enum { + G_TLS_AUTHENTICATION_NONE, + G_TLS_AUTHENTICATION_REQUESTED, + G_TLS_AUTHENTICATION_REQUIRED +} GTlsAuthenticationMode; + +/** + * GTlsChannelBindingType: + * @G_TLS_CHANNEL_BINDING_TLS_UNIQUE: + * [`tls-unique`](https://tools.ietf.org/html/rfc5929#section-3) binding + * type + * @G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT: + * [`tls-server-end-point`](https://tools.ietf.org/html/rfc5929#section-4) + * binding type + * @G_TLS_CHANNEL_BINDING_TLS_EXPORTER: + * [`tls-exporter`](https://www.rfc-editor.org/rfc/rfc9266.html) binding + * type. Since: 2.74 + * + * The type of TLS channel binding data to retrieve from #GTlsConnection + * or #GDtlsConnection, as documented by RFC 5929 or RFC 9266. The + * [`tls-unique-for-telnet`](https://tools.ietf.org/html/rfc5929#section-5) + * binding type is not currently implemented. + * + * Since: 2.66 + */ +GLIB_AVAILABLE_TYPE_IN_2_66 +typedef enum { + G_TLS_CHANNEL_BINDING_TLS_UNIQUE, + G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT, + G_TLS_CHANNEL_BINDING_TLS_EXPORTER GLIB_AVAILABLE_ENUMERATOR_IN_2_74, +} GTlsChannelBindingType; + +/** + * GTlsChannelBindingError: + * @G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED: Either entire binding + * retrieval facility or specific binding type is not implemented in the + * TLS backend. + * @G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE: The handshake is not yet + * complete on the connection which is a strong requirement for any existing + * binding type. + * @G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE: Handshake is complete but + * binding data is not available. That normally indicates the TLS + * implementation failed to provide the binding data. For example, some + * implementations do not provide a peer certificate for resumed connections. + * @G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED: Binding type is not supported + * on the current connection. This error could be triggered when requesting + * `tls-server-end-point` binding data for a certificate which has no hash + * function or uses multiple hash functions. + * @G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR: Any other backend error + * preventing binding data retrieval. + * + * An error code used with %G_TLS_CHANNEL_BINDING_ERROR in a #GError to + * indicate a TLS channel binding retrieval error. + * + * Since: 2.66 + */ +GLIB_AVAILABLE_TYPE_IN_2_66 +typedef enum { + G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED, + G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE, + G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE, + G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED, + G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR +} GTlsChannelBindingError; + +/** + * GTlsRehandshakeMode: + * @G_TLS_REHANDSHAKE_NEVER: Never allow rehandshaking + * @G_TLS_REHANDSHAKE_SAFELY: Allow safe rehandshaking only + * @G_TLS_REHANDSHAKE_UNSAFELY: Allow unsafe rehandshaking + * + * When to allow rehandshaking. See + * g_tls_connection_set_rehandshake_mode(). + * + * Since: 2.28 + * + * Deprecated: 2.60. Changing the rehandshake mode is no longer + * required for compatibility. Also, rehandshaking has been removed + * from the TLS protocol in TLS 1.3. + */ +typedef enum { + G_TLS_REHANDSHAKE_NEVER, + G_TLS_REHANDSHAKE_SAFELY, + G_TLS_REHANDSHAKE_UNSAFELY +} GTlsRehandshakeMode GLIB_DEPRECATED_TYPE_IN_2_60; + +/** + * GTlsPasswordFlags: + * @G_TLS_PASSWORD_NONE: No flags + * @G_TLS_PASSWORD_RETRY: The password was wrong, and the user should retry. + * @G_TLS_PASSWORD_MANY_TRIES: Hint to the user that the password has been + * wrong many times, and the user may not have many chances left. + * @G_TLS_PASSWORD_FINAL_TRY: Hint to the user that this is the last try to get + * this password right. + * @G_TLS_PASSWORD_PKCS11_USER: For PKCS #11, the user PIN is required. + * Since: 2.70. + * @G_TLS_PASSWORD_PKCS11_SECURITY_OFFICER: For PKCS #11, the security officer + * PIN is required. Since: 2.70. + * @G_TLS_PASSWORD_PKCS11_CONTEXT_SPECIFIC: For PKCS #11, the context-specific + * PIN is required. Since: 2.70. + * + * Various flags for the password. + * + * Since: 2.30 + */ + +typedef enum _GTlsPasswordFlags +{ + G_TLS_PASSWORD_NONE = 0, + G_TLS_PASSWORD_RETRY = 1 << 1, + G_TLS_PASSWORD_MANY_TRIES = 1 << 2, + G_TLS_PASSWORD_FINAL_TRY = 1 << 3, + G_TLS_PASSWORD_PKCS11_USER = 1 << 4, + G_TLS_PASSWORD_PKCS11_SECURITY_OFFICER = 1 << 5, + G_TLS_PASSWORD_PKCS11_CONTEXT_SPECIFIC = 1 << 6 +} GTlsPasswordFlags; + +/** + * GTlsInteractionResult: + * @G_TLS_INTERACTION_UNHANDLED: The interaction was unhandled (i.e. not + * implemented). + * @G_TLS_INTERACTION_HANDLED: The interaction completed, and resulting data + * is available. + * @G_TLS_INTERACTION_FAILED: The interaction has failed, or was cancelled. + * and the operation should be aborted. + * + * #GTlsInteractionResult is returned by various functions in #GTlsInteraction + * when finishing an interaction request. + * + * Since: 2.30 + */ +typedef enum { + G_TLS_INTERACTION_UNHANDLED, + G_TLS_INTERACTION_HANDLED, + G_TLS_INTERACTION_FAILED +} GTlsInteractionResult; + +/** + * GDBusInterfaceSkeletonFlags: + * @G_DBUS_INTERFACE_SKELETON_FLAGS_NONE: No flags set. + * @G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD: Each method invocation is handled in + * a thread dedicated to the invocation. This means that the method implementation can use blocking IO + * without blocking any other part of the process. It also means that the method implementation must + * use locking to access data structures used by other threads. + * + * Flags describing the behavior of a #GDBusInterfaceSkeleton instance. + * + * Since: 2.30 + */ +typedef enum +{ + G_DBUS_INTERFACE_SKELETON_FLAGS_NONE = 0, + G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD = (1<<0) +} GDBusInterfaceSkeletonFlags; + +/** + * GDBusObjectManagerClientFlags: + * @G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE: No flags set. + * @G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START: If not set and the + * manager is for a well-known name, then request the bus to launch + * an owner for the name if no-one owns the name. This flag can only + * be used in managers for well-known names. + * + * Flags used when constructing a #GDBusObjectManagerClient. + * + * Since: 2.30 + */ +typedef enum +{ + G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE = 0, + G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START = (1<<0) +} GDBusObjectManagerClientFlags; + +/** + * GTlsDatabaseVerifyFlags: + * @G_TLS_DATABASE_VERIFY_NONE: No verification flags + * + * Flags for g_tls_database_verify_chain(). + * + * Since: 2.30 + */ +typedef enum /*< flags >*/ { + G_TLS_DATABASE_VERIFY_NONE = 0 +} GTlsDatabaseVerifyFlags; + +/** + * GTlsDatabaseLookupFlags: + * @G_TLS_DATABASE_LOOKUP_NONE: No lookup flags + * @G_TLS_DATABASE_LOOKUP_KEYPAIR: Restrict lookup to certificates that have + * a private key. + * + * Flags for g_tls_database_lookup_certificate_for_handle(), + * g_tls_database_lookup_certificate_issuer(), + * and g_tls_database_lookup_certificates_issued_by(). + * + * Since: 2.30 + */ +typedef enum { + G_TLS_DATABASE_LOOKUP_NONE = 0, + G_TLS_DATABASE_LOOKUP_KEYPAIR = 1 +} GTlsDatabaseLookupFlags; + +/** + * GTlsCertificateRequestFlags: + * @G_TLS_CERTIFICATE_REQUEST_NONE: No flags + * + * Flags for g_tls_interaction_request_certificate(), + * g_tls_interaction_request_certificate_async(), and + * g_tls_interaction_invoke_request_certificate(). + * + * Since: 2.40 + */ +typedef enum { + G_TLS_CERTIFICATE_REQUEST_NONE = 0 +} GTlsCertificateRequestFlags; + +/** + * GTlsProtocolVersion: + * @G_TLS_PROTOCOL_VERSION_UNKNOWN: No protocol version or unknown protocol version + * @G_TLS_PROTOCOL_VERSION_SSL_3_0: SSL 3.0, which is insecure and should not be used + * @G_TLS_PROTOCOL_VERSION_TLS_1_0: TLS 1.0, which is insecure and should not be used + * @G_TLS_PROTOCOL_VERSION_TLS_1_1: TLS 1.1, which is insecure and should not be used + * @G_TLS_PROTOCOL_VERSION_TLS_1_2: TLS 1.2, defined by [RFC 5246](https://datatracker.ietf.org/doc/html/rfc5246) + * @G_TLS_PROTOCOL_VERSION_TLS_1_3: TLS 1.3, defined by [RFC 8446](https://datatracker.ietf.org/doc/html/rfc8446) + * @G_TLS_PROTOCOL_VERSION_DTLS_1_0: DTLS 1.0, which is insecure and should not be used + * @G_TLS_PROTOCOL_VERSION_DTLS_1_2: DTLS 1.2, defined by [RFC 6347](https://datatracker.ietf.org/doc/html/rfc6347) + * + * The TLS or DTLS protocol version used by a #GTlsConnection or + * #GDtlsConnection. The integer values of these versions are sequential + * to ensure newer known protocol versions compare greater than older + * known versions. Any known DTLS protocol version will compare greater + * than any SSL or TLS protocol version. The protocol version may be + * %G_TLS_PROTOCOL_VERSION_UNKNOWN if the TLS backend supports a newer + * protocol version that GLib does not yet know about. This means that + * it's possible for an unknown DTLS protocol version to compare less + * than the TLS protocol versions. + * + * Since: 2.70 + */ +typedef enum { + G_TLS_PROTOCOL_VERSION_UNKNOWN = 0, + G_TLS_PROTOCOL_VERSION_SSL_3_0 = 1, + G_TLS_PROTOCOL_VERSION_TLS_1_0 = 2, + G_TLS_PROTOCOL_VERSION_TLS_1_1 = 3, + G_TLS_PROTOCOL_VERSION_TLS_1_2 = 4, + G_TLS_PROTOCOL_VERSION_TLS_1_3 = 5, + G_TLS_PROTOCOL_VERSION_DTLS_1_0 = 201, + G_TLS_PROTOCOL_VERSION_DTLS_1_2 = 202, +} GTlsProtocolVersion; + +/** + * GIOModuleScopeFlags: + * @G_IO_MODULE_SCOPE_NONE: No module scan flags + * @G_IO_MODULE_SCOPE_BLOCK_DUPLICATES: When using this scope to load or + * scan modules, automatically block a modules which has the same base + * basename as previously loaded module. + * + * Flags for use with g_io_module_scope_new(). + * + * Since: 2.30 + */ +typedef enum { + G_IO_MODULE_SCOPE_NONE, + G_IO_MODULE_SCOPE_BLOCK_DUPLICATES +} GIOModuleScopeFlags; + +/** + * GSocketClientEvent: + * @G_SOCKET_CLIENT_RESOLVING: The client is doing a DNS lookup. + * @G_SOCKET_CLIENT_RESOLVED: The client has completed a DNS lookup. + * @G_SOCKET_CLIENT_CONNECTING: The client is connecting to a remote + * host (either a proxy or the destination server). + * @G_SOCKET_CLIENT_CONNECTED: The client has connected to a remote + * host. + * @G_SOCKET_CLIENT_PROXY_NEGOTIATING: The client is negotiating + * with a proxy to connect to the destination server. + * @G_SOCKET_CLIENT_PROXY_NEGOTIATED: The client has negotiated + * with the proxy server. + * @G_SOCKET_CLIENT_TLS_HANDSHAKING: The client is performing a + * TLS handshake. + * @G_SOCKET_CLIENT_TLS_HANDSHAKED: The client has performed a + * TLS handshake. + * @G_SOCKET_CLIENT_COMPLETE: The client is done with a particular + * #GSocketConnectable. + * + * Describes an event occurring on a #GSocketClient. See the + * #GSocketClient::event signal for more details. + * + * Additional values may be added to this type in the future. + * + * Since: 2.32 + */ +typedef enum { + G_SOCKET_CLIENT_RESOLVING, + G_SOCKET_CLIENT_RESOLVED, + G_SOCKET_CLIENT_CONNECTING, + G_SOCKET_CLIENT_CONNECTED, + G_SOCKET_CLIENT_PROXY_NEGOTIATING, + G_SOCKET_CLIENT_PROXY_NEGOTIATED, + G_SOCKET_CLIENT_TLS_HANDSHAKING, + G_SOCKET_CLIENT_TLS_HANDSHAKED, + G_SOCKET_CLIENT_COMPLETE +} GSocketClientEvent; + +/** + * GSocketListenerEvent: + * @G_SOCKET_LISTENER_BINDING: The listener is about to bind a socket. + * @G_SOCKET_LISTENER_BOUND: The listener has bound a socket. + * @G_SOCKET_LISTENER_LISTENING: The listener is about to start + * listening on this socket. + * @G_SOCKET_LISTENER_LISTENED: The listener is now listening on + * this socket. + * + * Describes an event occurring on a #GSocketListener. See the + * #GSocketListener::event signal for more details. + * + * Additional values may be added to this type in the future. + * + * Since: 2.46 + */ +typedef enum { + G_SOCKET_LISTENER_BINDING, + G_SOCKET_LISTENER_BOUND, + G_SOCKET_LISTENER_LISTENING, + G_SOCKET_LISTENER_LISTENED +} GSocketListenerEvent; + +/** + * GTestDBusFlags: + * @G_TEST_DBUS_NONE: No flags. + * + * Flags to define future #GTestDBus behaviour. + * + * Since: 2.34 + */ +typedef enum /*< flags >*/ { + G_TEST_DBUS_NONE = 0 +} GTestDBusFlags; + +/** + * GSubprocessFlags: + * @G_SUBPROCESS_FLAGS_NONE: No flags. + * @G_SUBPROCESS_FLAGS_STDIN_PIPE: create a pipe for the stdin of the + * spawned process that can be accessed with + * g_subprocess_get_stdin_pipe(). + * @G_SUBPROCESS_FLAGS_STDIN_INHERIT: stdin is inherited from the + * calling process. + * @G_SUBPROCESS_FLAGS_STDOUT_PIPE: create a pipe for the stdout of the + * spawned process that can be accessed with + * g_subprocess_get_stdout_pipe(). + * @G_SUBPROCESS_FLAGS_STDOUT_SILENCE: silence the stdout of the spawned + * process (ie: redirect to `/dev/null`). + * @G_SUBPROCESS_FLAGS_STDERR_PIPE: create a pipe for the stderr of the + * spawned process that can be accessed with + * g_subprocess_get_stderr_pipe(). + * @G_SUBPROCESS_FLAGS_STDERR_SILENCE: silence the stderr of the spawned + * process (ie: redirect to `/dev/null`). + * @G_SUBPROCESS_FLAGS_STDERR_MERGE: merge the stderr of the spawned + * process with whatever the stdout happens to be. This is a good way + * of directing both streams to a common log file, for example. + * @G_SUBPROCESS_FLAGS_INHERIT_FDS: spawned processes will inherit the + * file descriptors of their parent, unless those descriptors have + * been explicitly marked as close-on-exec. This flag has no effect + * over the "standard" file descriptors (stdin, stdout, stderr). + * @G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP: if path searching is + * needed when spawning the subprocess, use the `PATH` in the launcher + * environment. (Since: 2.72) + * + * Flags to define the behaviour of a #GSubprocess. + * + * Note that the default for stdin is to redirect from `/dev/null`. For + * stdout and stderr the default are for them to inherit the + * corresponding descriptor from the calling process. + * + * Note that it is a programmer error to mix 'incompatible' flags. For + * example, you may not request both %G_SUBPROCESS_FLAGS_STDOUT_PIPE and + * %G_SUBPROCESS_FLAGS_STDOUT_SILENCE. + * + * Since: 2.40 + **/ +typedef enum { + G_SUBPROCESS_FLAGS_NONE = 0, + G_SUBPROCESS_FLAGS_STDIN_PIPE = (1u << 0), + G_SUBPROCESS_FLAGS_STDIN_INHERIT = (1u << 1), + G_SUBPROCESS_FLAGS_STDOUT_PIPE = (1u << 2), + G_SUBPROCESS_FLAGS_STDOUT_SILENCE = (1u << 3), + G_SUBPROCESS_FLAGS_STDERR_PIPE = (1u << 4), + G_SUBPROCESS_FLAGS_STDERR_SILENCE = (1u << 5), + G_SUBPROCESS_FLAGS_STDERR_MERGE = (1u << 6), + G_SUBPROCESS_FLAGS_INHERIT_FDS = (1u << 7), + G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP = (1u << 8) +} GSubprocessFlags; + +/** + * GNotificationPriority: + * @G_NOTIFICATION_PRIORITY_LOW: for notifications that do not require + * immediate attention - typically used for contextual background + * information, such as contact birthdays or local weather + * @G_NOTIFICATION_PRIORITY_NORMAL: the default priority, to be used for the + * majority of notifications (for example email messages, software updates, + * completed download/sync operations) + * @G_NOTIFICATION_PRIORITY_HIGH: for events that require more attention, + * usually because responses are time-sensitive (for example chat and SMS + * messages or alarms) + * @G_NOTIFICATION_PRIORITY_URGENT: for urgent notifications, or notifications + * that require a response in a short space of time (for example phone calls + * or emergency warnings) + * + * Priority levels for #GNotifications. + * + * Since: 2.42 + */ +typedef enum { + G_NOTIFICATION_PRIORITY_NORMAL, + G_NOTIFICATION_PRIORITY_LOW, + G_NOTIFICATION_PRIORITY_HIGH, + G_NOTIFICATION_PRIORITY_URGENT +} GNotificationPriority; + +/** + * GNetworkConnectivity: + * @G_NETWORK_CONNECTIVITY_LOCAL: The host is not configured with a + * route to the Internet; it may or may not be connected to a local + * network. + * @G_NETWORK_CONNECTIVITY_LIMITED: The host is connected to a network, but + * does not appear to be able to reach the full Internet, perhaps + * due to upstream network problems. + * @G_NETWORK_CONNECTIVITY_PORTAL: The host is behind a captive portal and + * cannot reach the full Internet. + * @G_NETWORK_CONNECTIVITY_FULL: The host is connected to a network, and + * appears to be able to reach the full Internet. + * + * The host's network connectivity state, as reported by #GNetworkMonitor. + * + * Since: 2.44 + */ +typedef enum { + G_NETWORK_CONNECTIVITY_LOCAL = 1, + G_NETWORK_CONNECTIVITY_LIMITED = 2, + G_NETWORK_CONNECTIVITY_PORTAL = 3, + G_NETWORK_CONNECTIVITY_FULL = 4 +} GNetworkConnectivity; + +/** + * GPollableReturn: + * @G_POLLABLE_RETURN_FAILED: Generic error condition for when an operation fails. + * @G_POLLABLE_RETURN_OK: The operation was successfully finished. + * @G_POLLABLE_RETURN_WOULD_BLOCK: The operation would block. + * + * Return value for various IO operations that signal errors via the + * return value and not necessarily via a #GError. + * + * This enum exists to be able to return errors to callers without having to + * allocate a #GError. Allocating #GErrors can be quite expensive for + * regularly happening errors like %G_IO_ERROR_WOULD_BLOCK. + * + * In case of %G_POLLABLE_RETURN_FAILED a #GError should be set for the + * operation to give details about the error that happened. + * + * Since: 2.60 + */ +typedef enum { + G_POLLABLE_RETURN_FAILED = 0, + G_POLLABLE_RETURN_OK = 1, + G_POLLABLE_RETURN_WOULD_BLOCK = -G_IO_ERROR_WOULD_BLOCK +} GPollableReturn; + +/** + * GMemoryMonitorWarningLevel: + * @G_MEMORY_MONITOR_WARNING_LEVEL_LOW: Memory on the device is low, processes + * should free up unneeded resources (for example, in-memory caches) so they can + * be used elsewhere. + * @G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM: Same as @G_MEMORY_MONITOR_WARNING_LEVEL_LOW + * but the device has even less free memory, so processes should try harder to free + * up unneeded resources. If your process does not need to stay running, it is a + * good time for it to quit. + * @G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL: The system will soon start terminating + * processes to reclaim memory, including background processes. + * + * Memory availability warning levels. + * + * Note that because new values might be added, it is recommended that applications check + * #GMemoryMonitorWarningLevel as ranges, for example: + * |[ + * if (warning_level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW) + * drop_caches (); + * ]| + * + * Since: 2.64 + */ +typedef enum { + G_MEMORY_MONITOR_WARNING_LEVEL_LOW = 50, + G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM = 100, + G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL = 255 +} GMemoryMonitorWarningLevel; + +G_END_DECLS + +#endif /* __GIO_ENUMS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioenumtypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioenumtypes.h new file mode 100644 index 0000000..3240c9e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioenumtypes.h @@ -0,0 +1,206 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +/* + * Copyright © 2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Matthias Clasen + */ + +#ifndef __GIO_ENUM_TYPES_H__ +#define __GIO_ENUM_TYPES_H__ + +#include + +G_BEGIN_DECLS + +/* enumerations from "../glib-2.74.1/gio/gioenums.h" */ +GLIB_AVAILABLE_IN_ALL GType g_app_info_create_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_APP_INFO_CREATE_FLAGS (g_app_info_create_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_converter_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_CONVERTER_FLAGS (g_converter_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_converter_result_get_type (void) G_GNUC_CONST; +#define G_TYPE_CONVERTER_RESULT (g_converter_result_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_data_stream_byte_order_get_type (void) G_GNUC_CONST; +#define G_TYPE_DATA_STREAM_BYTE_ORDER (g_data_stream_byte_order_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_data_stream_newline_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_DATA_STREAM_NEWLINE_TYPE (g_data_stream_newline_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_attribute_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_ATTRIBUTE_TYPE (g_file_attribute_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_attribute_info_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_ATTRIBUTE_INFO_FLAGS (g_file_attribute_info_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_attribute_status_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_ATTRIBUTE_STATUS (g_file_attribute_status_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_query_info_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_QUERY_INFO_FLAGS (g_file_query_info_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_create_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_CREATE_FLAGS (g_file_create_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_measure_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_MEASURE_FLAGS (g_file_measure_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_mount_mount_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_MOUNT_MOUNT_FLAGS (g_mount_mount_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_mount_unmount_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_MOUNT_UNMOUNT_FLAGS (g_mount_unmount_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_drive_start_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DRIVE_START_FLAGS (g_drive_start_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_drive_start_stop_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_DRIVE_START_STOP_TYPE (g_drive_start_stop_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_copy_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_COPY_FLAGS (g_file_copy_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_monitor_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_MONITOR_FLAGS (g_file_monitor_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_TYPE (g_file_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_filesystem_preview_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILESYSTEM_PREVIEW_TYPE (g_filesystem_preview_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_file_monitor_event_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_MONITOR_EVENT (g_file_monitor_event_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_io_error_enum_get_type (void) G_GNUC_CONST; +#define G_TYPE_IO_ERROR_ENUM (g_io_error_enum_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_ask_password_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_ASK_PASSWORD_FLAGS (g_ask_password_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_password_save_get_type (void) G_GNUC_CONST; +#define G_TYPE_PASSWORD_SAVE (g_password_save_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_mount_operation_result_get_type (void) G_GNUC_CONST; +#define G_TYPE_MOUNT_OPERATION_RESULT (g_mount_operation_result_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_output_stream_splice_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_OUTPUT_STREAM_SPLICE_FLAGS (g_output_stream_splice_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_io_stream_splice_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_IO_STREAM_SPLICE_FLAGS (g_io_stream_splice_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_emblem_origin_get_type (void) G_GNUC_CONST; +#define G_TYPE_EMBLEM_ORIGIN (g_emblem_origin_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_resolver_error_get_type (void) G_GNUC_CONST; +#define G_TYPE_RESOLVER_ERROR (g_resolver_error_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_resolver_record_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_RESOLVER_RECORD_TYPE (g_resolver_record_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_resource_error_get_type (void) G_GNUC_CONST; +#define G_TYPE_RESOURCE_ERROR (g_resource_error_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_resource_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_RESOURCE_FLAGS (g_resource_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_resource_lookup_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_RESOURCE_LOOKUP_FLAGS (g_resource_lookup_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_socket_family_get_type (void) G_GNUC_CONST; +#define G_TYPE_SOCKET_FAMILY (g_socket_family_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_socket_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_SOCKET_TYPE (g_socket_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_socket_msg_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_SOCKET_MSG_FLAGS (g_socket_msg_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_socket_protocol_get_type (void) G_GNUC_CONST; +#define G_TYPE_SOCKET_PROTOCOL (g_socket_protocol_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_zlib_compressor_format_get_type (void) G_GNUC_CONST; +#define G_TYPE_ZLIB_COMPRESSOR_FORMAT (g_zlib_compressor_format_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_unix_socket_address_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_UNIX_SOCKET_ADDRESS_TYPE (g_unix_socket_address_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_bus_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_BUS_TYPE (g_bus_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_bus_name_owner_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_BUS_NAME_OWNER_FLAGS (g_bus_name_owner_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_bus_name_watcher_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_BUS_NAME_WATCHER_FLAGS (g_bus_name_watcher_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_proxy_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_PROXY_FLAGS (g_dbus_proxy_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_error_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_ERROR (g_dbus_error_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_connection_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_CONNECTION_FLAGS (g_dbus_connection_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_capability_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_CAPABILITY_FLAGS (g_dbus_capability_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_call_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_CALL_FLAGS (g_dbus_call_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_message_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_MESSAGE_TYPE (g_dbus_message_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_message_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_MESSAGE_FLAGS (g_dbus_message_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_message_header_field_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_MESSAGE_HEADER_FIELD (g_dbus_message_header_field_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_property_info_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_PROPERTY_INFO_FLAGS (g_dbus_property_info_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_subtree_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_SUBTREE_FLAGS (g_dbus_subtree_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_server_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_SERVER_FLAGS (g_dbus_server_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_signal_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_SIGNAL_FLAGS (g_dbus_signal_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_send_message_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_SEND_MESSAGE_FLAGS (g_dbus_send_message_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_credentials_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_CREDENTIALS_TYPE (g_credentials_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_message_byte_order_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_MESSAGE_BYTE_ORDER (g_dbus_message_byte_order_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_application_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_APPLICATION_FLAGS (g_application_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_error_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_ERROR (g_tls_error_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_certificate_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_CERTIFICATE_FLAGS (g_tls_certificate_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_authentication_mode_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_AUTHENTICATION_MODE (g_tls_authentication_mode_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_channel_binding_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_CHANNEL_BINDING_TYPE (g_tls_channel_binding_type_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_channel_binding_error_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_CHANNEL_BINDING_ERROR (g_tls_channel_binding_error_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_rehandshake_mode_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_REHANDSHAKE_MODE (g_tls_rehandshake_mode_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_password_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_PASSWORD_FLAGS (g_tls_password_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_interaction_result_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_INTERACTION_RESULT (g_tls_interaction_result_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_interface_skeleton_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_INTERFACE_SKELETON_FLAGS (g_dbus_interface_skeleton_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_dbus_object_manager_client_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_DBUS_OBJECT_MANAGER_CLIENT_FLAGS (g_dbus_object_manager_client_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_database_verify_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_DATABASE_VERIFY_FLAGS (g_tls_database_verify_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_database_lookup_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_DATABASE_LOOKUP_FLAGS (g_tls_database_lookup_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_certificate_request_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_CERTIFICATE_REQUEST_FLAGS (g_tls_certificate_request_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_tls_protocol_version_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_PROTOCOL_VERSION (g_tls_protocol_version_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_io_module_scope_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_IO_MODULE_SCOPE_FLAGS (g_io_module_scope_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_socket_client_event_get_type (void) G_GNUC_CONST; +#define G_TYPE_SOCKET_CLIENT_EVENT (g_socket_client_event_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_socket_listener_event_get_type (void) G_GNUC_CONST; +#define G_TYPE_SOCKET_LISTENER_EVENT (g_socket_listener_event_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_test_dbus_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_TEST_DBUS_FLAGS (g_test_dbus_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_subprocess_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_SUBPROCESS_FLAGS (g_subprocess_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_notification_priority_get_type (void) G_GNUC_CONST; +#define G_TYPE_NOTIFICATION_PRIORITY (g_notification_priority_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_network_connectivity_get_type (void) G_GNUC_CONST; +#define G_TYPE_NETWORK_CONNECTIVITY (g_network_connectivity_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_pollable_return_get_type (void) G_GNUC_CONST; +#define G_TYPE_POLLABLE_RETURN (g_pollable_return_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_memory_monitor_warning_level_get_type (void) G_GNUC_CONST; +#define G_TYPE_MEMORY_MONITOR_WARNING_LEVEL (g_memory_monitor_warning_level_get_type ()) + +/* enumerations from "../glib-2.74.1/gio/gresolver.h" */ +GLIB_AVAILABLE_IN_ALL GType g_resolver_name_lookup_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_RESOLVER_NAME_LOOKUP_FLAGS (g_resolver_name_lookup_flags_get_type ()) + +/* enumerations from "../glib-2.74.1/gio/gsettings.h" */ +GLIB_AVAILABLE_IN_ALL GType g_settings_bind_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_SETTINGS_BIND_FLAGS (g_settings_bind_flags_get_type ()) +G_END_DECLS + +#endif /* __GIO_ENUM_TYPES_H__ */ + +/* Generated data ends here */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioerror.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioerror.h new file mode 100644 index 0000000..958c4a9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioerror.h @@ -0,0 +1,58 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_IO_ERROR_H__ +#define __G_IO_ERROR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +/** + * G_IO_ERROR: + * + * Error domain for GIO. Errors in this domain will be from the #GIOErrorEnum enumeration. + * See #GError for more information on error domains. + **/ +#define G_IO_ERROR g_io_error_quark() + +GLIB_AVAILABLE_IN_ALL +GQuark g_io_error_quark (void); +GLIB_AVAILABLE_IN_ALL +GIOErrorEnum g_io_error_from_errno (gint err_no); +GLIB_AVAILABLE_IN_2_74 +GIOErrorEnum g_io_error_from_file_error (GFileError file_error); + +#ifdef G_OS_WIN32 +GLIB_AVAILABLE_IN_ALL +GIOErrorEnum g_io_error_from_win32_error (gint error_code); +#endif + +G_END_DECLS + +#endif /* __G_IO_ERROR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giomodule.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giomodule.h new file mode 100644 index 0000000..45a7c26 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giomodule.h @@ -0,0 +1,195 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_IO_MODULE_H__ +#define __G_IO_MODULE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GIOModuleScope GIOModuleScope; + +GLIB_AVAILABLE_IN_2_30 +GIOModuleScope * g_io_module_scope_new (GIOModuleScopeFlags flags); +GLIB_AVAILABLE_IN_2_30 +void g_io_module_scope_free (GIOModuleScope *scope); +GLIB_AVAILABLE_IN_2_30 +void g_io_module_scope_block (GIOModuleScope *scope, + const gchar *basename); + +#define G_IO_TYPE_MODULE (g_io_module_get_type ()) +#define G_IO_MODULE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_IO_TYPE_MODULE, GIOModule)) +#define G_IO_MODULE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_IO_TYPE_MODULE, GIOModuleClass)) +#define G_IO_IS_MODULE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_IO_TYPE_MODULE)) +#define G_IO_IS_MODULE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_IO_TYPE_MODULE)) +#define G_IO_MODULE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_IO_TYPE_MODULE, GIOModuleClass)) + +/** + * GIOModule: + * + * Opaque module base class for extending GIO. + **/ +typedef struct _GIOModuleClass GIOModuleClass; + +GLIB_AVAILABLE_IN_ALL +GType g_io_module_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GIOModule *g_io_module_new (const gchar *filename); + +GLIB_AVAILABLE_IN_ALL +void g_io_modules_scan_all_in_directory (const char *dirname); +GLIB_AVAILABLE_IN_ALL +GList *g_io_modules_load_all_in_directory (const gchar *dirname); + +GLIB_AVAILABLE_IN_2_30 +void g_io_modules_scan_all_in_directory_with_scope (const gchar *dirname, + GIOModuleScope *scope); +GLIB_AVAILABLE_IN_2_30 +GList *g_io_modules_load_all_in_directory_with_scope (const gchar *dirname, + GIOModuleScope *scope); + +GLIB_AVAILABLE_IN_ALL +GIOExtensionPoint *g_io_extension_point_register (const char *name); +GLIB_AVAILABLE_IN_ALL +GIOExtensionPoint *g_io_extension_point_lookup (const char *name); +GLIB_AVAILABLE_IN_ALL +void g_io_extension_point_set_required_type (GIOExtensionPoint *extension_point, + GType type); +GLIB_AVAILABLE_IN_ALL +GType g_io_extension_point_get_required_type (GIOExtensionPoint *extension_point); +GLIB_AVAILABLE_IN_ALL +GList *g_io_extension_point_get_extensions (GIOExtensionPoint *extension_point); +GLIB_AVAILABLE_IN_ALL +GIOExtension * g_io_extension_point_get_extension_by_name (GIOExtensionPoint *extension_point, + const char *name); +GLIB_AVAILABLE_IN_ALL +GIOExtension * g_io_extension_point_implement (const char *extension_point_name, + GType type, + const char *extension_name, + gint priority); + +GLIB_AVAILABLE_IN_ALL +GType g_io_extension_get_type (GIOExtension *extension); +GLIB_AVAILABLE_IN_ALL +const char * g_io_extension_get_name (GIOExtension *extension); +GLIB_AVAILABLE_IN_ALL +gint g_io_extension_get_priority (GIOExtension *extension); +GLIB_AVAILABLE_IN_ALL +GTypeClass* g_io_extension_ref_class (GIOExtension *extension); + + +/* API for the modules to implement */ + +/** + * g_io_module_load: (skip) + * @module: a #GIOModule. + * + * Required API for GIO modules to implement. + * + * This function is run after the module has been loaded into GIO, + * to initialize the module. Typically, this function will call + * g_io_extension_point_implement(). + * + * Since 2.56, this function should be named `g_io__load`, where + * `modulename` is the plugin’s filename with the `lib` or `libgio` prefix and + * everything after the first dot removed, and with `-` replaced with `_` + * throughout. For example, `libgiognutls-helper.so` becomes `gnutls_helper`. + * Using the new symbol names avoids name clashes when building modules + * statically. The old symbol names continue to be supported, but cannot be used + * for static builds. + **/ +GLIB_AVAILABLE_IN_ALL +void g_io_module_load (GIOModule *module); + +/** + * g_io_module_unload: (skip) + * @module: a #GIOModule. + * + * Required API for GIO modules to implement. + * + * This function is run when the module is being unloaded from GIO, + * to finalize the module. + * + * Since 2.56, this function should be named `g_io__unload`, where + * `modulename` is the plugin’s filename with the `lib` or `libgio` prefix and + * everything after the first dot removed, and with `-` replaced with `_` + * throughout. For example, `libgiognutls-helper.so` becomes `gnutls_helper`. + * Using the new symbol names avoids name clashes when building modules + * statically. The old symbol names continue to be supported, but cannot be used + * for static builds. + **/ +GLIB_AVAILABLE_IN_ALL +void g_io_module_unload (GIOModule *module); + +/** + * g_io_module_query: + * + * Optional API for GIO modules to implement. + * + * Should return a list of all the extension points that may be + * implemented in this module. + * + * This method will not be called in normal use, however it may be + * called when probing existing modules and recording which extension + * points that this model is used for. This means we won't have to + * load and initialize this module unless its needed. + * + * If this function is not implemented by the module the module will + * always be loaded, initialized and then unloaded on application + * startup so that it can register its extension points during init. + * + * Note that a module need not actually implement all the extension + * points that g_io_module_query() returns, since the exact list of + * extension may depend on runtime issues. However all extension + * points actually implemented must be returned by g_io_module_query() + * (if defined). + * + * When installing a module that implements g_io_module_query() you must + * run gio-querymodules in order to build the cache files required for + * lazy loading. + * + * Since 2.56, this function should be named `g_io__query`, where + * `modulename` is the plugin’s filename with the `lib` or `libgio` prefix and + * everything after the first dot removed, and with `-` replaced with `_` + * throughout. For example, `libgiognutls-helper.so` becomes `gnutls_helper`. + * Using the new symbol names avoids name clashes when building modules + * statically. The old symbol names continue to be supported, but cannot be used + * for static builds. + * + * Returns: (transfer full): A %NULL-terminated array of strings, + * listing the supported extension points of the module. The array + * must be suitable for freeing with g_strfreev(). + * + * Since: 2.24 + **/ +GLIB_AVAILABLE_IN_ALL +char **g_io_module_query (void); + +G_END_DECLS + +#endif /* __G_IO_MODULE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioscheduler.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioscheduler.h new file mode 100644 index 0000000..ef51d5a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gioscheduler.h @@ -0,0 +1,56 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_IO_SCHEDULER_H__ +#define __G_IO_SCHEDULER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +GLIB_DEPRECATED_IN_2_36_FOR ("GThreadPool or g_task_run_in_thread") +void g_io_scheduler_push_job (GIOSchedulerJobFunc job_func, + gpointer user_data, + GDestroyNotify notify, + gint io_priority, + GCancellable *cancellable); +GLIB_DEPRECATED_IN_2_36 +void g_io_scheduler_cancel_all_jobs (void); +GLIB_DEPRECATED_IN_2_36_FOR (g_main_context_invoke) +gboolean g_io_scheduler_job_send_to_mainloop (GIOSchedulerJob *job, + GSourceFunc func, + gpointer user_data, + GDestroyNotify notify); +GLIB_DEPRECATED_IN_2_36_FOR (g_main_context_invoke) +void g_io_scheduler_job_send_to_mainloop_async (GIOSchedulerJob *job, + GSourceFunc func, + gpointer user_data, + GDestroyNotify notify); + +G_END_DECLS + +#endif /* __G_IO_SCHEDULER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giostream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giostream.h new file mode 100644 index 0000000..f862b48 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giostream.h @@ -0,0 +1,137 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2008, 2009 Codethink Limited + * Copyright © 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * See the included COPYING file for more information. + * + * Authors: Ryan Lortie + * Alexander Larsson + */ + +#ifndef __G_IO_STREAM_H__ +#define __G_IO_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_IO_STREAM (g_io_stream_get_type ()) +#define G_IO_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_IO_STREAM, GIOStream)) +#define G_IO_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_IO_STREAM, GIOStreamClass)) +#define G_IS_IO_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_IO_STREAM)) +#define G_IS_IO_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_IO_STREAM)) +#define G_IO_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_IO_STREAM, GIOStreamClass)) + +typedef struct _GIOStreamPrivate GIOStreamPrivate; +typedef struct _GIOStreamClass GIOStreamClass; + +/** + * GIOStream: + * + * Base class for read-write streams. + **/ +struct _GIOStream +{ + GObject parent_instance; + + /*< private >*/ + GIOStreamPrivate *priv; +}; + +struct _GIOStreamClass +{ + GObjectClass parent_class; + + GInputStream * (*get_input_stream) (GIOStream *stream); + GOutputStream * (*get_output_stream) (GIOStream *stream); + + gboolean (* close_fn) (GIOStream *stream, + GCancellable *cancellable, + GError **error); + void (* close_async) (GIOStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* close_finish) (GIOStream *stream, + GAsyncResult *result, + GError **error); + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); + void (*_g_reserved7) (void); + void (*_g_reserved8) (void); + void (*_g_reserved9) (void); + void (*_g_reserved10) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_io_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GInputStream * g_io_stream_get_input_stream (GIOStream *stream); +GLIB_AVAILABLE_IN_ALL +GOutputStream *g_io_stream_get_output_stream (GIOStream *stream); + +GLIB_AVAILABLE_IN_ALL +void g_io_stream_splice_async (GIOStream *stream1, + GIOStream *stream2, + GIOStreamSpliceFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +gboolean g_io_stream_splice_finish (GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_io_stream_close (GIOStream *stream, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_io_stream_close_async (GIOStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_io_stream_close_finish (GIOStream *stream, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_io_stream_is_closed (GIOStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_io_stream_has_pending (GIOStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_io_stream_set_pending (GIOStream *stream, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_io_stream_clear_pending (GIOStream *stream); + +G_END_DECLS + +#endif /* __G_IO_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giotypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giotypes.h new file mode 100644 index 0000000..f69766a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/giotypes.h @@ -0,0 +1,660 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __GIO_TYPES_H__ +#define __GIO_TYPES_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GAppLaunchContext GAppLaunchContext; +typedef struct _GAppInfo GAppInfo; /* Dummy typedef */ +typedef struct _GAsyncResult GAsyncResult; /* Dummy typedef */ +typedef struct _GAsyncInitable GAsyncInitable; +typedef struct _GBufferedInputStream GBufferedInputStream; +typedef struct _GBufferedOutputStream GBufferedOutputStream; +typedef struct _GCancellable GCancellable; +typedef struct _GCharsetConverter GCharsetConverter; +typedef struct _GConverter GConverter; +typedef struct _GConverterInputStream GConverterInputStream; +typedef struct _GConverterOutputStream GConverterOutputStream; +typedef struct _GDatagramBased GDatagramBased; +typedef struct _GDataInputStream GDataInputStream; +typedef struct _GSimplePermission GSimplePermission; +typedef struct _GZlibCompressor GZlibCompressor; +typedef struct _GZlibDecompressor GZlibDecompressor; + +typedef struct _GSimpleActionGroup GSimpleActionGroup; +typedef struct _GRemoteActionGroup GRemoteActionGroup; +typedef struct _GDBusActionGroup GDBusActionGroup; +typedef struct _GActionMap GActionMap; +typedef struct _GActionGroup GActionGroup; +typedef struct _GPropertyAction GPropertyAction; +typedef struct _GSimpleAction GSimpleAction; +typedef struct _GAction GAction; +typedef struct _GApplication GApplication; +typedef struct _GApplicationCommandLine GApplicationCommandLine; +typedef struct _GSettingsBackend GSettingsBackend; +typedef struct _GSettings GSettings; +typedef struct _GPermission GPermission; + +typedef struct _GMenuModel GMenuModel; +typedef struct _GNotification GNotification; + +/** + * GDrive: + * + * Opaque drive object. + **/ +typedef struct _GDrive GDrive; /* Dummy typedef */ +typedef struct _GFileEnumerator GFileEnumerator; +typedef struct _GFileMonitor GFileMonitor; +typedef struct _GFilterInputStream GFilterInputStream; +typedef struct _GFilterOutputStream GFilterOutputStream; + +/** + * GFile: + * + * A handle to an object implementing the #GFileIface interface. + * Generally stores a location within the file system. Handles do not + * necessarily represent files or directories that currently exist. + **/ +typedef struct _GFile GFile; /* Dummy typedef */ +typedef struct _GFileInfo GFileInfo; + +/** + * GFileAttributeMatcher: + * + * Determines if a string matches a file attribute. + **/ +typedef struct _GFileAttributeMatcher GFileAttributeMatcher; +typedef struct _GFileAttributeInfo GFileAttributeInfo; +typedef struct _GFileAttributeInfoList GFileAttributeInfoList; +typedef struct _GFileDescriptorBased GFileDescriptorBased; +typedef struct _GFileInputStream GFileInputStream; +typedef struct _GFileOutputStream GFileOutputStream; +typedef struct _GFileIOStream GFileIOStream; +typedef struct _GFileIcon GFileIcon; +typedef struct _GFilenameCompleter GFilenameCompleter; + + +typedef struct _GIcon GIcon; /* Dummy typedef */ +typedef struct _GInetAddress GInetAddress; +typedef struct _GInetAddressMask GInetAddressMask; +typedef struct _GInetSocketAddress GInetSocketAddress; +typedef struct _GNativeSocketAddress GNativeSocketAddress; +typedef struct _GInputStream GInputStream; +typedef struct _GInitable GInitable; +typedef struct _GIOModule GIOModule; +typedef struct _GIOExtensionPoint GIOExtensionPoint; +typedef struct _GIOExtension GIOExtension; + +/** + * GIOSchedulerJob: + * + * Opaque class for defining and scheduling IO jobs. + **/ +typedef struct _GIOSchedulerJob GIOSchedulerJob; +typedef struct _GIOStreamAdapter GIOStreamAdapter; +typedef struct _GLoadableIcon GLoadableIcon; /* Dummy typedef */ +typedef struct _GBytesIcon GBytesIcon; +typedef struct _GMemoryInputStream GMemoryInputStream; +typedef struct _GMemoryOutputStream GMemoryOutputStream; + +/** + * GMount: + * + * A handle to an object implementing the #GMountIface interface. + **/ +typedef struct _GMount GMount; /* Dummy typedef */ +typedef struct _GMountOperation GMountOperation; +typedef struct _GNetworkAddress GNetworkAddress; +typedef struct _GNetworkMonitor GNetworkMonitor; +typedef struct _GNetworkService GNetworkService; +typedef struct _GOutputStream GOutputStream; +typedef struct _GIOStream GIOStream; +typedef struct _GSimpleIOStream GSimpleIOStream; +typedef struct _GPollableInputStream GPollableInputStream; /* Dummy typedef */ +typedef struct _GPollableOutputStream GPollableOutputStream; /* Dummy typedef */ +typedef struct _GResolver GResolver; + +/** + * GResource: + * + * A resource bundle. + * + * Since: 2.32 + */ +typedef struct _GResource GResource; +typedef struct _GSeekable GSeekable; +typedef struct _GSimpleAsyncResult GSimpleAsyncResult; + +/** + * GSocket: + * + * A lowlevel network socket object. + * + * Since: 2.22 + **/ +typedef struct _GSocket GSocket; + +/** + * GSocketControlMessage: + * + * Base class for socket-type specific control messages that can be sent and + * received over #GSocket. + **/ +typedef struct _GSocketControlMessage GSocketControlMessage; +/** + * GSocketClient: + * + * A helper class for network clients to make connections. + * + * Since: 2.22 + **/ +typedef struct _GSocketClient GSocketClient; +/** + * GSocketConnection: + * + * A socket connection GIOStream object for connection-oriented sockets. + * + * Since: 2.22 + **/ +typedef struct _GSocketConnection GSocketConnection; +/** + * GSocketListener: + * + * A helper class for network servers to listen for and accept connections. + * + * Since: 2.22 + **/ +typedef struct _GSocketListener GSocketListener; +/** + * GSocketService: + * + * A helper class for handling accepting incoming connections in the + * glib mainloop. + * + * Since: 2.22 + **/ +typedef struct _GSocketService GSocketService; +typedef struct _GSocketAddress GSocketAddress; +typedef struct _GSocketAddressEnumerator GSocketAddressEnumerator; +typedef struct _GSocketConnectable GSocketConnectable; +typedef struct _GSrvTarget GSrvTarget; +typedef struct _GTask GTask; +/** + * GTcpConnection: + * + * A #GSocketConnection for TCP/IP connections. + * + * Since: 2.22 + **/ +typedef struct _GTcpConnection GTcpConnection; +typedef struct _GTcpWrapperConnection GTcpWrapperConnection; +/** + * GThreadedSocketService: + * + * A helper class for handling accepting incoming connections in the + * glib mainloop and handling them in a thread. + * + * Since: 2.22 + **/ +typedef struct _GThreadedSocketService GThreadedSocketService; +typedef struct _GDtlsConnection GDtlsConnection; +typedef struct _GDtlsClientConnection GDtlsClientConnection; /* Dummy typedef */ +typedef struct _GDtlsServerConnection GDtlsServerConnection; /* Dummy typedef */ +typedef struct _GThemedIcon GThemedIcon; +typedef struct _GTlsCertificate GTlsCertificate; +typedef struct _GTlsClientConnection GTlsClientConnection; /* Dummy typedef */ +typedef struct _GTlsConnection GTlsConnection; +typedef struct _GTlsDatabase GTlsDatabase; +typedef struct _GTlsFileDatabase GTlsFileDatabase; +typedef struct _GTlsInteraction GTlsInteraction; +typedef struct _GTlsPassword GTlsPassword; +typedef struct _GTlsServerConnection GTlsServerConnection; /* Dummy typedef */ +typedef struct _GVfs GVfs; /* Dummy typedef */ + +/** + * GProxyResolver: + * + * A helper class to enumerate proxies base on URI. + * + * Since: 2.26 + **/ +typedef struct _GProxyResolver GProxyResolver; +typedef struct _GProxy GProxy; +typedef struct _GProxyAddress GProxyAddress; +typedef struct _GProxyAddressEnumerator GProxyAddressEnumerator; + +/** + * GVolume: + * + * Opaque mountable volume object. + **/ +typedef struct _GVolume GVolume; /* Dummy typedef */ +typedef struct _GVolumeMonitor GVolumeMonitor; + +/** + * GAsyncReadyCallback: + * @source_object: (nullable): the object the asynchronous operation was started with. + * @res: a #GAsyncResult. + * @user_data: user data passed to the callback. + * + * Type definition for a function that will be called back when an asynchronous + * operation within GIO has been completed. #GAsyncReadyCallback + * callbacks from #GTask are guaranteed to be invoked in a later + * iteration of the + * [thread-default main context][g-main-context-push-thread-default] + * where the #GTask was created. All other users of + * #GAsyncReadyCallback must likewise call it asynchronously in a + * later iteration of the main context. + * + * The asynchronous operation is guaranteed to have held a reference to + * @source_object from the time when the `*_async()` function was called, until + * after this callback returns. + **/ +typedef void (*GAsyncReadyCallback) (GObject *source_object, + GAsyncResult *res, + gpointer user_data); + +/** + * GFileProgressCallback: + * @current_num_bytes: the current number of bytes in the operation. + * @total_num_bytes: the total number of bytes in the operation. + * @user_data: user data passed to the callback. + * + * When doing file operations that may take a while, such as moving + * a file or copying a file, a progress callback is used to pass how + * far along that operation is to the application. + **/ +typedef void (*GFileProgressCallback) (goffset current_num_bytes, + goffset total_num_bytes, + gpointer user_data); + +/** + * GFileReadMoreCallback: + * @file_contents: the data as currently read. + * @file_size: the size of the data currently read. + * @user_data: data passed to the callback. + * + * When loading the partial contents of a file with g_file_load_partial_contents_async(), + * it may become necessary to determine if any more data from the file should be loaded. + * A #GFileReadMoreCallback function facilitates this by returning %TRUE if more data + * should be read, or %FALSE otherwise. + * + * Returns: %TRUE if more data should be read back. %FALSE otherwise. + **/ +typedef gboolean (* GFileReadMoreCallback) (const char *file_contents, + goffset file_size, + gpointer user_data); + +/** + * GFileMeasureProgressCallback: + * @reporting: %TRUE if more reports will come + * @current_size: the current cumulative size measurement + * @num_dirs: the number of directories visited so far + * @num_files: the number of non-directory files encountered + * @user_data: the data passed to the original request for this callback + * + * This callback type is used by g_file_measure_disk_usage() to make + * periodic progress reports when measuring the amount of disk spaced + * used by a directory. + * + * These calls are made on a best-effort basis and not all types of + * #GFile will support them. At the minimum, however, one call will + * always be made immediately. + * + * In the case that there is no support, @reporting will be set to + * %FALSE (and the other values undefined) and no further calls will be + * made. Otherwise, the @reporting will be %TRUE and the other values + * all-zeros during the first (immediate) call. In this way, you can + * know which type of progress UI to show without a delay. + * + * For g_file_measure_disk_usage() the callback is made directly. For + * g_file_measure_disk_usage_async() the callback is made via the + * default main context of the calling thread (ie: the same way that the + * final async result would be reported). + * + * @current_size is in the same units as requested by the operation (see + * %G_FILE_MEASURE_APPARENT_SIZE). + * + * The frequency of the updates is implementation defined, but is + * ideally about once every 200ms. + * + * The last progress callback may or may not be equal to the final + * result. Always check the async result to get the final value. + * + * Since: 2.38 + **/ +typedef void (* GFileMeasureProgressCallback) (gboolean reporting, + guint64 current_size, + guint64 num_dirs, + guint64 num_files, + gpointer user_data); + +/** + * GIOSchedulerJobFunc: + * @job: a #GIOSchedulerJob. + * @cancellable: optional #GCancellable object, %NULL to ignore. + * @user_data: the data to pass to callback function + * + * I/O Job function. + * + * Long-running jobs should periodically check the @cancellable + * to see if they have been cancelled. + * + * Returns: %TRUE if this function should be called again to + * complete the job, %FALSE if the job is complete (or cancelled) + **/ +typedef gboolean (*GIOSchedulerJobFunc) (GIOSchedulerJob *job, + GCancellable *cancellable, + gpointer user_data); + +/** + * GSimpleAsyncThreadFunc: + * @res: a #GSimpleAsyncResult. + * @object: a #GObject. + * @cancellable: optional #GCancellable object, %NULL to ignore. + * + * Simple thread function that runs an asynchronous operation and + * checks for cancellation. + **/ +typedef void (*GSimpleAsyncThreadFunc) (GSimpleAsyncResult *res, + GObject *object, + GCancellable *cancellable); + +/** + * GSocketSourceFunc: + * @socket: the #GSocket + * @condition: the current condition at the source fired. + * @user_data: data passed in by the user. + * + * This is the function type of the callback used for the #GSource + * returned by g_socket_create_source(). + * + * Returns: it should return %FALSE if the source should be removed. + * + * Since: 2.22 + */ +typedef gboolean (*GSocketSourceFunc) (GSocket *socket, + GIOCondition condition, + gpointer user_data); + +/** + * GDatagramBasedSourceFunc: + * @datagram_based: the #GDatagramBased + * @condition: the current condition at the source fired + * @user_data: data passed in by the user + * + * This is the function type of the callback used for the #GSource + * returned by g_datagram_based_create_source(). + * + * Returns: %G_SOURCE_REMOVE if the source should be removed, + * %G_SOURCE_CONTINUE otherwise + * + * Since: 2.48 + */ +typedef gboolean (*GDatagramBasedSourceFunc) (GDatagramBased *datagram_based, + GIOCondition condition, + gpointer user_data); + +/** + * GInputVector: + * @buffer: Pointer to a buffer where data will be written. + * @size: the available size in @buffer. + * + * Structure used for scatter/gather data input. + * You generally pass in an array of #GInputVectors + * and the operation will store the read data starting in the + * first buffer, switching to the next as needed. + * + * Since: 2.22 + */ +typedef struct _GInputVector GInputVector; + +struct _GInputVector { + gpointer buffer; + gsize size; +}; + +/** + * GInputMessage: + * @address: (optional) (out) (transfer full): return location + * for a #GSocketAddress, or %NULL + * @vectors: (array length=num_vectors) (out): pointer to an + * array of input vectors + * @num_vectors: the number of input vectors pointed to by @vectors + * @bytes_received: (out): will be set to the number of bytes that have been + * received + * @flags: (out): collection of #GSocketMsgFlags for the received message, + * outputted by the call + * @control_messages: (array length=num_control_messages) (optional) + * (out) (transfer full): return location for a + * caller-allocated array of #GSocketControlMessages, or %NULL + * @num_control_messages: (out) (optional): return location for the number of + * elements in @control_messages + * + * Structure used for scatter/gather data input when receiving multiple + * messages or packets in one go. You generally pass in an array of empty + * #GInputVectors and the operation will use all the buffers as if they + * were one buffer, and will set @bytes_received to the total number of bytes + * received across all #GInputVectors. + * + * This structure closely mirrors `struct mmsghdr` and `struct msghdr` from + * the POSIX sockets API (see `man 2 recvmmsg`). + * + * If @address is non-%NULL then it is set to the source address the message + * was received from, and the caller must free it afterwards. + * + * If @control_messages is non-%NULL then it is set to an array of control + * messages received with the message (if any), and the caller must free it + * afterwards. @num_control_messages is set to the number of elements in + * this array, which may be zero. + * + * Flags relevant to this message will be returned in @flags. For example, + * `MSG_EOR` or `MSG_TRUNC`. + * + * Since: 2.48 + */ +typedef struct _GInputMessage GInputMessage; + +struct _GInputMessage { + GSocketAddress **address; + + GInputVector *vectors; + guint num_vectors; + + gsize bytes_received; + gint flags; + + GSocketControlMessage ***control_messages; + guint *num_control_messages; +}; + +/** + * GOutputVector: + * @buffer: Pointer to a buffer of data to read. + * @size: the size of @buffer. + * + * Structure used for scatter/gather data output. + * You generally pass in an array of #GOutputVectors + * and the operation will use all the buffers as if they were + * one buffer. + * + * Since: 2.22 + */ +typedef struct _GOutputVector GOutputVector; + +struct _GOutputVector { + gconstpointer buffer; + gsize size; +}; + +/** + * GOutputMessage: + * @address: (nullable): a #GSocketAddress, or %NULL + * @vectors: pointer to an array of output vectors + * @num_vectors: the number of output vectors pointed to by @vectors. + * @bytes_sent: initialize to 0. Will be set to the number of bytes + * that have been sent + * @control_messages: (array length=num_control_messages) (nullable): a pointer + * to an array of #GSocketControlMessages, or %NULL. + * @num_control_messages: number of elements in @control_messages. + * + * Structure used for scatter/gather data output when sending multiple + * messages or packets in one go. You generally pass in an array of + * #GOutputVectors and the operation will use all the buffers as if they + * were one buffer. + * + * If @address is %NULL then the message is sent to the default receiver + * (as previously set by g_socket_connect()). + * + * Since: 2.44 + */ +typedef struct _GOutputMessage GOutputMessage; + +struct _GOutputMessage { + GSocketAddress *address; + + GOutputVector *vectors; + guint num_vectors; + + guint bytes_sent; + + GSocketControlMessage **control_messages; + guint num_control_messages; +}; + +typedef struct _GCredentials GCredentials; +typedef struct _GUnixCredentialsMessage GUnixCredentialsMessage; +typedef struct _GUnixFDList GUnixFDList; +typedef struct _GDBusMessage GDBusMessage; +typedef struct _GDBusConnection GDBusConnection; +typedef struct _GDBusProxy GDBusProxy; +typedef struct _GDBusMethodInvocation GDBusMethodInvocation; +typedef struct _GDBusServer GDBusServer; +typedef struct _GDBusAuthObserver GDBusAuthObserver; +typedef struct _GDBusErrorEntry GDBusErrorEntry; +typedef struct _GDBusInterfaceVTable GDBusInterfaceVTable; +typedef struct _GDBusSubtreeVTable GDBusSubtreeVTable; +typedef struct _GDBusAnnotationInfo GDBusAnnotationInfo; +typedef struct _GDBusArgInfo GDBusArgInfo; +typedef struct _GDBusMethodInfo GDBusMethodInfo; +typedef struct _GDBusSignalInfo GDBusSignalInfo; +typedef struct _GDBusPropertyInfo GDBusPropertyInfo; +typedef struct _GDBusInterfaceInfo GDBusInterfaceInfo; +typedef struct _GDBusNodeInfo GDBusNodeInfo; + +/** + * GCancellableSourceFunc: + * @cancellable: the #GCancellable + * @user_data: data passed in by the user. + * + * This is the function type of the callback used for the #GSource + * returned by g_cancellable_source_new(). + * + * Returns: it should return %FALSE if the source should be removed. + * + * Since: 2.28 + */ +typedef gboolean (*GCancellableSourceFunc) (GCancellable *cancellable, + gpointer user_data); + +/** + * GPollableSourceFunc: + * @pollable_stream: the #GPollableInputStream or #GPollableOutputStream + * @user_data: data passed in by the user. + * + * This is the function type of the callback used for the #GSource + * returned by g_pollable_input_stream_create_source() and + * g_pollable_output_stream_create_source(). + * + * Returns: it should return %FALSE if the source should be removed. + * + * Since: 2.28 + */ +typedef gboolean (*GPollableSourceFunc) (GObject *pollable_stream, + gpointer user_data); + +typedef struct _GDBusInterface GDBusInterface; /* Dummy typedef */ +typedef struct _GDBusInterfaceSkeleton GDBusInterfaceSkeleton; +typedef struct _GDBusObject GDBusObject; /* Dummy typedef */ +typedef struct _GDBusObjectSkeleton GDBusObjectSkeleton; +typedef struct _GDBusObjectProxy GDBusObjectProxy; +typedef struct _GDBusObjectManager GDBusObjectManager; /* Dummy typedef */ +typedef struct _GDBusObjectManagerClient GDBusObjectManagerClient; +typedef struct _GDBusObjectManagerServer GDBusObjectManagerServer; + +/** + * GDBusProxyTypeFunc: + * @manager: A #GDBusObjectManagerClient. + * @object_path: The object path of the remote object. + * @interface_name: (nullable): The interface name of the remote object or %NULL if a #GDBusObjectProxy #GType is requested. + * @user_data: User data. + * + * Function signature for a function used to determine the #GType to + * use for an interface proxy (if @interface_name is not %NULL) or + * object proxy (if @interface_name is %NULL). + * + * This function is called in the + * [thread-default main loop][g-main-context-push-thread-default] + * that @manager was constructed in. + * + * Returns: A #GType to use for the remote object. The returned type + * must be a #GDBusProxy or #GDBusObjectProxy -derived + * type. + * + * Since: 2.30 + */ +typedef GType (*GDBusProxyTypeFunc) (GDBusObjectManagerClient *manager, + const gchar *object_path, + const gchar *interface_name, + gpointer user_data); + +typedef struct _GTestDBus GTestDBus; + +/** + * GSubprocess: + * + * A child process. + * + * Since: 2.40 + */ +typedef struct _GSubprocess GSubprocess; +/** + * GSubprocessLauncher: + * + * Options for launching a child process. + * + * Since: 2.40 + */ +typedef struct _GSubprocessLauncher GSubprocessLauncher; + +G_END_DECLS + +#endif /* __GIO_TYPES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/glistmodel.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/glistmodel.h new file mode 100644 index 0000000..f2e0618 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/glistmodel.h @@ -0,0 +1,74 @@ +/* + * Copyright 2015 Lars Uebernickel + * Copyright 2015 Ryan Lortie + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: + * Lars Uebernickel + * Ryan Lortie + */ + +#ifndef __G_LIST_MODEL_H__ +#define __G_LIST_MODEL_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_LIST_MODEL g_list_model_get_type () +GLIB_AVAILABLE_IN_2_44 +G_DECLARE_INTERFACE(GListModel, g_list_model, G, LIST_MODEL, GObject) + +struct _GListModelInterface +{ + GTypeInterface g_iface; + + GType (* get_item_type) (GListModel *list); + + guint (* get_n_items) (GListModel *list); + + gpointer (* get_item) (GListModel *list, + guint position); +}; + +GLIB_AVAILABLE_IN_2_44 +GType g_list_model_get_item_type (GListModel *list); + +GLIB_AVAILABLE_IN_2_44 +guint g_list_model_get_n_items (GListModel *list); + +GLIB_AVAILABLE_IN_2_44 +gpointer g_list_model_get_item (GListModel *list, + guint position); + +GLIB_AVAILABLE_IN_2_44 +GObject * g_list_model_get_object (GListModel *list, + guint position); + +GLIB_AVAILABLE_IN_2_44 +void g_list_model_items_changed (GListModel *list, + guint position, + guint removed, + guint added); + +G_END_DECLS + +#endif /* __G_LIST_MODEL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gliststore.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gliststore.h new file mode 100644 index 0000000..7583632 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gliststore.h @@ -0,0 +1,97 @@ +/* + * Copyright 2015 Lars Uebernickel + * Copyright 2015 Ryan Lortie + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: + * Lars Uebernickel + * Ryan Lortie + */ + +#ifndef __G_LIST_STORE_H__ +#define __G_LIST_STORE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_LIST_STORE (g_list_store_get_type ()) +GLIB_AVAILABLE_IN_2_44 +G_DECLARE_FINAL_TYPE(GListStore, g_list_store, G, LIST_STORE, GObject) + +GLIB_AVAILABLE_IN_2_44 +GListStore * g_list_store_new (GType item_type); + +GLIB_AVAILABLE_IN_2_44 +void g_list_store_insert (GListStore *store, + guint position, + gpointer item); + +GLIB_AVAILABLE_IN_2_44 +guint g_list_store_insert_sorted (GListStore *store, + gpointer item, + GCompareDataFunc compare_func, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_46 +void g_list_store_sort (GListStore *store, + GCompareDataFunc compare_func, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_44 +void g_list_store_append (GListStore *store, + gpointer item); + +GLIB_AVAILABLE_IN_2_44 +void g_list_store_remove (GListStore *store, + guint position); + +GLIB_AVAILABLE_IN_2_44 +void g_list_store_remove_all (GListStore *store); + +GLIB_AVAILABLE_IN_2_44 +void g_list_store_splice (GListStore *store, + guint position, + guint n_removals, + gpointer *additions, + guint n_additions); + +GLIB_AVAILABLE_IN_2_64 +gboolean g_list_store_find (GListStore *store, + gpointer item, + guint *position); + +GLIB_AVAILABLE_IN_2_64 +gboolean g_list_store_find_with_equal_func (GListStore *store, + gpointer item, + GEqualFunc equal_func, + guint *position); + +GLIB_AVAILABLE_IN_2_74 +gboolean g_list_store_find_with_equal_func_full (GListStore *store, + gpointer item, + GEqualFuncFull equal_func, + gpointer user_data, + guint *position); + +G_END_DECLS + +#endif /* __G_LIST_STORE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gloadableicon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gloadableicon.h new file mode 100644 index 0000000..c336cf7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gloadableicon.h @@ -0,0 +1,101 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_LOADABLE_ICON_H__ +#define __G_LOADABLE_ICON_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_LOADABLE_ICON (g_loadable_icon_get_type ()) +#define G_LOADABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_LOADABLE_ICON, GLoadableIcon)) +#define G_IS_LOADABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_LOADABLE_ICON)) +#define G_LOADABLE_ICON_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_LOADABLE_ICON, GLoadableIconIface)) + +/** + * GLoadableIcon: + * + * Generic type for all kinds of icons that can be loaded + * as a stream. + **/ +typedef struct _GLoadableIconIface GLoadableIconIface; + +/** + * GLoadableIconIface: + * @g_iface: The parent interface. + * @load: Loads an icon. + * @load_async: Loads an icon asynchronously. + * @load_finish: Finishes an asynchronous icon load. + * + * Interface for icons that can be loaded as a stream. + **/ +struct _GLoadableIconIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + GInputStream * (* load) (GLoadableIcon *icon, + int size, + char **type, + GCancellable *cancellable, + GError **error); + void (* load_async) (GLoadableIcon *icon, + int size, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GInputStream * (* load_finish) (GLoadableIcon *icon, + GAsyncResult *res, + char **type, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_loadable_icon_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GInputStream *g_loadable_icon_load (GLoadableIcon *icon, + int size, + char **type, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_loadable_icon_load_async (GLoadableIcon *icon, + int size, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GInputStream *g_loadable_icon_load_finish (GLoadableIcon *icon, + GAsyncResult *res, + char **type, + GError **error); + +G_END_DECLS + +#endif /* __G_LOADABLE_ICON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemoryinputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemoryinputstream.h new file mode 100644 index 0000000..f8673da --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemoryinputstream.h @@ -0,0 +1,92 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Christian Kellner + */ + +#ifndef __G_MEMORY_INPUT_STREAM_H__ +#define __G_MEMORY_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_MEMORY_INPUT_STREAM (g_memory_input_stream_get_type ()) +#define G_MEMORY_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStream)) +#define G_MEMORY_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStreamClass)) +#define G_IS_MEMORY_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MEMORY_INPUT_STREAM)) +#define G_IS_MEMORY_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_MEMORY_INPUT_STREAM)) +#define G_MEMORY_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStreamClass)) + +/** + * GMemoryInputStream: + * + * Implements #GInputStream for arbitrary memory chunks. + **/ +typedef struct _GMemoryInputStreamClass GMemoryInputStreamClass; +typedef struct _GMemoryInputStreamPrivate GMemoryInputStreamPrivate; + +struct _GMemoryInputStream +{ + GInputStream parent_instance; + + /*< private >*/ + GMemoryInputStreamPrivate *priv; +}; + +struct _GMemoryInputStreamClass +{ + GInputStreamClass parent_class; + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_memory_input_stream_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GInputStream * g_memory_input_stream_new (void); +GLIB_AVAILABLE_IN_ALL +GInputStream * g_memory_input_stream_new_from_data (const void *data, + gssize len, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_2_34 +GInputStream * g_memory_input_stream_new_from_bytes (GBytes *bytes); + +GLIB_AVAILABLE_IN_ALL +void g_memory_input_stream_add_data (GMemoryInputStream *stream, + const void *data, + gssize len, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_2_34 +void g_memory_input_stream_add_bytes (GMemoryInputStream *stream, + GBytes *bytes); + +G_END_DECLS + +#endif /* __G_MEMORY_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemorymonitor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemorymonitor.h new file mode 100644 index 0000000..9c547d8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemorymonitor.h @@ -0,0 +1,64 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2019 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_MEMORY_MONITOR_H__ +#define __G_MEMORY_MONITOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_MEMORY_MONITOR_EXTENSION_POINT_NAME: + * + * Extension point for memory usage monitoring functionality. + * See [Extending GIO][extending-gio]. + * + * Since: 2.64 + */ +#define G_MEMORY_MONITOR_EXTENSION_POINT_NAME "gio-memory-monitor" + +#define G_TYPE_MEMORY_MONITOR (g_memory_monitor_get_type ()) +GLIB_AVAILABLE_IN_2_64 +G_DECLARE_INTERFACE(GMemoryMonitor, g_memory_monitor, g, memory_monitor, GObject) + +#define G_MEMORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_MONITOR, GMemoryMonitor)) +#define G_IS_MEMORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MEMORY_MONITOR)) +#define G_MEMORY_MONITOR_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_MEMORY_MONITOR, GMemoryMonitorInterface)) + +struct _GMemoryMonitorInterface { + /*< private >*/ + GTypeInterface g_iface; + + /*< public >*/ + void (*low_memory_warning) (GMemoryMonitor *monitor, + GMemoryMonitorWarningLevel level); +}; + +GLIB_AVAILABLE_IN_2_64 +GMemoryMonitor *g_memory_monitor_dup_default (void); + +G_END_DECLS + +#endif /* __G_MEMORY_MONITOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemoryoutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemoryoutputstream.h new file mode 100644 index 0000000..5b13c3a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmemoryoutputstream.h @@ -0,0 +1,109 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Christian Kellner + */ + +#ifndef __G_MEMORY_OUTPUT_STREAM_H__ +#define __G_MEMORY_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_MEMORY_OUTPUT_STREAM (g_memory_output_stream_get_type ()) +#define G_MEMORY_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_OUTPUT_STREAM, GMemoryOutputStream)) +#define G_MEMORY_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_MEMORY_OUTPUT_STREAM, GMemoryOutputStreamClass)) +#define G_IS_MEMORY_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MEMORY_OUTPUT_STREAM)) +#define G_IS_MEMORY_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_MEMORY_OUTPUT_STREAM)) +#define G_MEMORY_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_MEMORY_OUTPUT_STREAM, GMemoryOutputStreamClass)) + +/** + * GMemoryOutputStream: + * + * Implements #GOutputStream for arbitrary memory chunks. + **/ +typedef struct _GMemoryOutputStreamClass GMemoryOutputStreamClass; +typedef struct _GMemoryOutputStreamPrivate GMemoryOutputStreamPrivate; + +struct _GMemoryOutputStream +{ + GOutputStream parent_instance; + + /*< private >*/ + GMemoryOutputStreamPrivate *priv; +}; + +struct _GMemoryOutputStreamClass +{ + GOutputStreamClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +/** + * GReallocFunc: + * @data: memory block to reallocate + * @size: size to reallocate @data to + * + * Changes the size of the memory block pointed to by @data to + * @size bytes. + * + * The function should have the same semantics as realloc(). + * + * Returns: a pointer to the reallocated memory + */ +typedef gpointer (* GReallocFunc) (gpointer data, + gsize size); + +GLIB_AVAILABLE_IN_ALL +GType g_memory_output_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GOutputStream *g_memory_output_stream_new (gpointer data, + gsize size, + GReallocFunc realloc_function, + GDestroyNotify destroy_function); +GLIB_AVAILABLE_IN_2_36 +GOutputStream *g_memory_output_stream_new_resizable (void); +GLIB_AVAILABLE_IN_ALL +gpointer g_memory_output_stream_get_data (GMemoryOutputStream *ostream); +GLIB_AVAILABLE_IN_ALL +gsize g_memory_output_stream_get_size (GMemoryOutputStream *ostream); +GLIB_AVAILABLE_IN_ALL +gsize g_memory_output_stream_get_data_size (GMemoryOutputStream *ostream); +GLIB_AVAILABLE_IN_ALL +gpointer g_memory_output_stream_steal_data (GMemoryOutputStream *ostream); + +GLIB_AVAILABLE_IN_2_34 +GBytes * g_memory_output_stream_steal_as_bytes (GMemoryOutputStream *ostream); + +G_END_DECLS + +#endif /* __G_MEMORY_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenu.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenu.h new file mode 100644 index 0000000..f1ff261 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenu.h @@ -0,0 +1,184 @@ +/* + * Copyright © 2011 Canonical Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_MENU_H__ +#define __G_MENU_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_MENU (g_menu_get_type ()) +#define G_MENU(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_MENU, GMenu)) +#define G_IS_MENU(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_MENU)) + +#define G_TYPE_MENU_ITEM (g_menu_item_get_type ()) +#define G_MENU_ITEM(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_MENU_ITEM, GMenuItem)) +#define G_IS_MENU_ITEM(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_MENU_ITEM)) + +typedef struct _GMenuItem GMenuItem; +typedef struct _GMenu GMenu; + +GLIB_AVAILABLE_IN_2_32 +GType g_menu_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_32 +GMenu * g_menu_new (void); + +GLIB_AVAILABLE_IN_2_32 +void g_menu_freeze (GMenu *menu); + +GLIB_AVAILABLE_IN_2_32 +void g_menu_insert_item (GMenu *menu, + gint position, + GMenuItem *item); +GLIB_AVAILABLE_IN_2_32 +void g_menu_prepend_item (GMenu *menu, + GMenuItem *item); +GLIB_AVAILABLE_IN_2_32 +void g_menu_append_item (GMenu *menu, + GMenuItem *item); +GLIB_AVAILABLE_IN_2_32 +void g_menu_remove (GMenu *menu, + gint position); + +GLIB_AVAILABLE_IN_2_38 +void g_menu_remove_all (GMenu *menu); + +GLIB_AVAILABLE_IN_2_32 +void g_menu_insert (GMenu *menu, + gint position, + const gchar *label, + const gchar *detailed_action); +GLIB_AVAILABLE_IN_2_32 +void g_menu_prepend (GMenu *menu, + const gchar *label, + const gchar *detailed_action); +GLIB_AVAILABLE_IN_2_32 +void g_menu_append (GMenu *menu, + const gchar *label, + const gchar *detailed_action); + +GLIB_AVAILABLE_IN_2_32 +void g_menu_insert_section (GMenu *menu, + gint position, + const gchar *label, + GMenuModel *section); +GLIB_AVAILABLE_IN_2_32 +void g_menu_prepend_section (GMenu *menu, + const gchar *label, + GMenuModel *section); +GLIB_AVAILABLE_IN_2_32 +void g_menu_append_section (GMenu *menu, + const gchar *label, + GMenuModel *section); + +GLIB_AVAILABLE_IN_2_32 +void g_menu_insert_submenu (GMenu *menu, + gint position, + const gchar *label, + GMenuModel *submenu); +GLIB_AVAILABLE_IN_2_32 +void g_menu_prepend_submenu (GMenu *menu, + const gchar *label, + GMenuModel *submenu); +GLIB_AVAILABLE_IN_2_32 +void g_menu_append_submenu (GMenu *menu, + const gchar *label, + GMenuModel *submenu); + + +GLIB_AVAILABLE_IN_2_32 +GType g_menu_item_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_32 +GMenuItem * g_menu_item_new (const gchar *label, + const gchar *detailed_action); + +GLIB_AVAILABLE_IN_2_34 +GMenuItem * g_menu_item_new_from_model (GMenuModel *model, + gint item_index); + +GLIB_AVAILABLE_IN_2_32 +GMenuItem * g_menu_item_new_submenu (const gchar *label, + GMenuModel *submenu); + +GLIB_AVAILABLE_IN_2_32 +GMenuItem * g_menu_item_new_section (const gchar *label, + GMenuModel *section); + +GLIB_AVAILABLE_IN_2_34 +GVariant * g_menu_item_get_attribute_value (GMenuItem *menu_item, + const gchar *attribute, + const GVariantType *expected_type); +GLIB_AVAILABLE_IN_2_34 +gboolean g_menu_item_get_attribute (GMenuItem *menu_item, + const gchar *attribute, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_2_34 +GMenuModel *g_menu_item_get_link (GMenuItem *menu_item, + const gchar *link); + +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_attribute_value (GMenuItem *menu_item, + const gchar *attribute, + GVariant *value); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_attribute (GMenuItem *menu_item, + const gchar *attribute, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_link (GMenuItem *menu_item, + const gchar *link, + GMenuModel *model); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_label (GMenuItem *menu_item, + const gchar *label); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_submenu (GMenuItem *menu_item, + GMenuModel *submenu); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_section (GMenuItem *menu_item, + GMenuModel *section); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_action_and_target_value (GMenuItem *menu_item, + const gchar *action, + GVariant *target_value); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_action_and_target (GMenuItem *menu_item, + const gchar *action, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_2_32 +void g_menu_item_set_detailed_action (GMenuItem *menu_item, + const gchar *detailed_action); + +GLIB_AVAILABLE_IN_2_38 +void g_menu_item_set_icon (GMenuItem *menu_item, + GIcon *icon); + +G_END_DECLS + +#endif /* __G_MENU_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenuexporter.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenuexporter.h new file mode 100644 index 0000000..f399166 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenuexporter.h @@ -0,0 +1,42 @@ +/* + * Copyright © 2011 Canonical Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_MENU_EXPORTER_H__ +#define __G_MENU_EXPORTER_H__ + +#include +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_32 +guint g_dbus_connection_export_menu_model (GDBusConnection *connection, + const gchar *object_path, + GMenuModel *menu, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +void g_dbus_connection_unexport_menu_model (GDBusConnection *connection, + guint export_id); + +G_END_DECLS + +#endif /* __G_MENU_EXPORTER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenumodel.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenumodel.h new file mode 100644 index 0000000..1fcc19f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmenumodel.h @@ -0,0 +1,307 @@ +/* + * Copyright © 2011 Canonical Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_MENU_MODEL_H__ +#define __G_MENU_MODEL_H__ + +#include + +#include + +G_BEGIN_DECLS + +/** + * G_MENU_ATTRIBUTE_ACTION: + * + * The menu item attribute which holds the action name of the item. Action + * names are namespaced with an identifier for the action group in which the + * action resides. For example, "win." for window-specific actions and "app." + * for application-wide actions. + * + * See also g_menu_model_get_item_attribute() and g_menu_item_set_attribute(). + * + * Since: 2.32 + **/ +#define G_MENU_ATTRIBUTE_ACTION "action" + +/** + * G_MENU_ATTRIBUTE_ACTION_NAMESPACE: + * + * The menu item attribute that holds the namespace for all action names in + * menus that are linked from this item. + * + * Since: 2.36 + **/ +#define G_MENU_ATTRIBUTE_ACTION_NAMESPACE "action-namespace" + +/** + * G_MENU_ATTRIBUTE_TARGET: + * + * The menu item attribute which holds the target with which the item's action + * will be activated. + * + * See also g_menu_item_set_action_and_target() + * + * Since: 2.32 + **/ +#define G_MENU_ATTRIBUTE_TARGET "target" + +/** + * G_MENU_ATTRIBUTE_LABEL: + * + * The menu item attribute which holds the label of the item. + * + * Since: 2.32 + **/ +#define G_MENU_ATTRIBUTE_LABEL "label" + +/** + * G_MENU_ATTRIBUTE_ICON: + * + * The menu item attribute which holds the icon of the item. + * + * The icon is stored in the format returned by g_icon_serialize(). + * + * This attribute is intended only to represent 'noun' icons such as + * favicons for a webpage, or application icons. It should not be used + * for 'verbs' (ie: stock icons). + * + * Since: 2.38 + **/ +#define G_MENU_ATTRIBUTE_ICON "icon" + +/** + * G_MENU_LINK_SUBMENU: + * + * The name of the link that associates a menu item with a submenu. + * + * See also g_menu_item_set_link(). + * + * Since: 2.32 + **/ +#define G_MENU_LINK_SUBMENU "submenu" + +/** + * G_MENU_LINK_SECTION: + * + * The name of the link that associates a menu item with a section. The linked + * menu will usually be shown in place of the menu item, using the item's label + * as a header. + * + * See also g_menu_item_set_link(). + * + * Since: 2.32 + **/ +#define G_MENU_LINK_SECTION "section" + +#define G_TYPE_MENU_MODEL (g_menu_model_get_type ()) +#define G_MENU_MODEL(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_MENU_MODEL, GMenuModel)) +#define G_MENU_MODEL_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_MENU_MODEL, GMenuModelClass)) +#define G_IS_MENU_MODEL(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_MENU_MODEL)) +#define G_IS_MENU_MODEL_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_MENU_MODEL)) +#define G_MENU_MODEL_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_MENU_MODEL, GMenuModelClass)) + +typedef struct _GMenuModelPrivate GMenuModelPrivate; +typedef struct _GMenuModelClass GMenuModelClass; + +typedef struct _GMenuAttributeIterPrivate GMenuAttributeIterPrivate; +typedef struct _GMenuAttributeIterClass GMenuAttributeIterClass; +typedef struct _GMenuAttributeIter GMenuAttributeIter; + +typedef struct _GMenuLinkIterPrivate GMenuLinkIterPrivate; +typedef struct _GMenuLinkIterClass GMenuLinkIterClass; +typedef struct _GMenuLinkIter GMenuLinkIter; + +struct _GMenuModel +{ + GObject parent_instance; + GMenuModelPrivate *priv; +}; + +/** + * GMenuModelClass::get_item_attributes: + * @model: the #GMenuModel to query + * @item_index: The #GMenuItem to query + * @attributes: (out) (element-type utf8 GLib.Variant): Attributes on the item + * + * Gets all the attributes associated with the item in the menu model. + */ +/** + * GMenuModelClass::get_item_links: + * @model: the #GMenuModel to query + * @item_index: The #GMenuItem to query + * @links: (out) (element-type utf8 Gio.MenuModel): Links from the item + * + * Gets all the links associated with the item in the menu model. + */ +struct _GMenuModelClass +{ + GObjectClass parent_class; + + gboolean (*is_mutable) (GMenuModel *model); + gint (*get_n_items) (GMenuModel *model); + void (*get_item_attributes) (GMenuModel *model, + gint item_index, + GHashTable **attributes); + GMenuAttributeIter * (*iterate_item_attributes) (GMenuModel *model, + gint item_index); + GVariant * (*get_item_attribute_value) (GMenuModel *model, + gint item_index, + const gchar *attribute, + const GVariantType *expected_type); + void (*get_item_links) (GMenuModel *model, + gint item_index, + GHashTable **links); + GMenuLinkIter * (*iterate_item_links) (GMenuModel *model, + gint item_index); + GMenuModel * (*get_item_link) (GMenuModel *model, + gint item_index, + const gchar *link); +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_menu_model_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +gboolean g_menu_model_is_mutable (GMenuModel *model); +GLIB_AVAILABLE_IN_2_32 +gint g_menu_model_get_n_items (GMenuModel *model); + +GLIB_AVAILABLE_IN_2_32 +GMenuAttributeIter * g_menu_model_iterate_item_attributes (GMenuModel *model, + gint item_index); +GLIB_AVAILABLE_IN_2_32 +GVariant * g_menu_model_get_item_attribute_value (GMenuModel *model, + gint item_index, + const gchar *attribute, + const GVariantType *expected_type); +GLIB_AVAILABLE_IN_2_32 +gboolean g_menu_model_get_item_attribute (GMenuModel *model, + gint item_index, + const gchar *attribute, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_2_32 +GMenuLinkIter * g_menu_model_iterate_item_links (GMenuModel *model, + gint item_index); +GLIB_AVAILABLE_IN_2_32 +GMenuModel * g_menu_model_get_item_link (GMenuModel *model, + gint item_index, + const gchar *link); + +GLIB_AVAILABLE_IN_2_32 +void g_menu_model_items_changed (GMenuModel *model, + gint position, + gint removed, + gint added); + + +#define G_TYPE_MENU_ATTRIBUTE_ITER (g_menu_attribute_iter_get_type ()) +#define G_MENU_ATTRIBUTE_ITER(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_MENU_ATTRIBUTE_ITER, GMenuAttributeIter)) +#define G_MENU_ATTRIBUTE_ITER_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_MENU_ATTRIBUTE_ITER, GMenuAttributeIterClass)) +#define G_IS_MENU_ATTRIBUTE_ITER(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_MENU_ATTRIBUTE_ITER)) +#define G_IS_MENU_ATTRIBUTE_ITER_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_MENU_ATTRIBUTE_ITER)) +#define G_MENU_ATTRIBUTE_ITER_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_MENU_ATTRIBUTE_ITER, GMenuAttributeIterClass)) + +struct _GMenuAttributeIter +{ + GObject parent_instance; + GMenuAttributeIterPrivate *priv; +}; + +struct _GMenuAttributeIterClass +{ + GObjectClass parent_class; + + gboolean (*get_next) (GMenuAttributeIter *iter, + const gchar **out_name, + GVariant **value); +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_menu_attribute_iter_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +gboolean g_menu_attribute_iter_get_next (GMenuAttributeIter *iter, + const gchar **out_name, + GVariant **value); +GLIB_AVAILABLE_IN_2_32 +gboolean g_menu_attribute_iter_next (GMenuAttributeIter *iter); +GLIB_AVAILABLE_IN_2_32 +const gchar * g_menu_attribute_iter_get_name (GMenuAttributeIter *iter); +GLIB_AVAILABLE_IN_2_32 +GVariant * g_menu_attribute_iter_get_value (GMenuAttributeIter *iter); + + +#define G_TYPE_MENU_LINK_ITER (g_menu_link_iter_get_type ()) +#define G_MENU_LINK_ITER(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_MENU_LINK_ITER, GMenuLinkIter)) +#define G_MENU_LINK_ITER_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_MENU_LINK_ITER, GMenuLinkIterClass)) +#define G_IS_MENU_LINK_ITER(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_MENU_LINK_ITER)) +#define G_IS_MENU_LINK_ITER_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_MENU_LINK_ITER)) +#define G_MENU_LINK_ITER_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_MENU_LINK_ITER, GMenuLinkIterClass)) + +struct _GMenuLinkIter +{ + GObject parent_instance; + GMenuLinkIterPrivate *priv; +}; + +struct _GMenuLinkIterClass +{ + GObjectClass parent_class; + + gboolean (*get_next) (GMenuLinkIter *iter, + const gchar **out_link, + GMenuModel **value); +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_menu_link_iter_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +gboolean g_menu_link_iter_get_next (GMenuLinkIter *iter, + const gchar **out_link, + GMenuModel **value); +GLIB_AVAILABLE_IN_2_32 +gboolean g_menu_link_iter_next (GMenuLinkIter *iter); +GLIB_AVAILABLE_IN_2_32 +const gchar * g_menu_link_iter_get_name (GMenuLinkIter *iter); +GLIB_AVAILABLE_IN_2_32 +GMenuModel * g_menu_link_iter_get_value (GMenuLinkIter *iter); + +G_END_DECLS + +#endif /* __G_MENU_MODEL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmount.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmount.h new file mode 100644 index 0000000..a112bc5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmount.h @@ -0,0 +1,278 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + * David Zeuthen + */ + +#ifndef __G_MOUNT_H__ +#define __G_MOUNT_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_MOUNT (g_mount_get_type ()) +#define G_MOUNT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_MOUNT, GMount)) +#define G_IS_MOUNT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_MOUNT)) +#define G_MOUNT_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_MOUNT, GMountIface)) + +typedef struct _GMountIface GMountIface; + +/** + * GMountIface: + * @g_iface: The parent interface. + * @changed: Changed signal that is emitted when the mount's state has changed. + * @unmounted: The unmounted signal that is emitted when the #GMount have been unmounted. If the recipient is holding references to the object they should release them so the object can be finalized. + * @pre_unmount: The ::pre-unmount signal that is emitted when the #GMount will soon be emitted. If the recipient is somehow holding the mount open by keeping an open file on it it should close the file. + * @get_root: Gets a #GFile to the root directory of the #GMount. + * @get_name: Gets a string containing the name of the #GMount. + * @get_icon: Gets a #GIcon for the #GMount. + * @get_uuid: Gets the UUID for the #GMount. The reference is typically based on the file system UUID for the mount in question and should be considered an opaque string. Returns %NULL if there is no UUID available. + * @get_volume: Gets a #GVolume the mount is located on. Returns %NULL if the #GMount is not associated with a #GVolume. + * @get_drive: Gets a #GDrive the volume of the mount is located on. Returns %NULL if the #GMount is not associated with a #GDrive or a #GVolume. This is convenience method for getting the #GVolume and using that to get the #GDrive. + * @can_unmount: Checks if a #GMount can be unmounted. + * @can_eject: Checks if a #GMount can be ejected. + * @unmount: Starts unmounting a #GMount. + * @unmount_finish: Finishes an unmounting operation. + * @eject: Starts ejecting a #GMount. + * @eject_finish: Finishes an eject operation. + * @remount: Starts remounting a #GMount. + * @remount_finish: Finishes a remounting operation. + * @guess_content_type: Starts guessing the type of the content of a #GMount. + * See g_mount_guess_content_type() for more information on content + * type guessing. This operation was added in 2.18. + * @guess_content_type_finish: Finishes a content type guessing operation. Added in 2.18. + * @guess_content_type_sync: Synchronous variant of @guess_content_type. Added in 2.18 + * @unmount_with_operation: Starts unmounting a #GMount using a #GMountOperation. Since 2.22. + * @unmount_with_operation_finish: Finishes an unmounting operation using a #GMountOperation. Since 2.22. + * @eject_with_operation: Starts ejecting a #GMount using a #GMountOperation. Since 2.22. + * @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22. + * @get_default_location: Gets a #GFile indication a start location that can be use as the entry point for this mount. Since 2.24. + * @get_sort_key: Gets a key used for sorting #GMount instance or %NULL if no such key exists. Since 2.32. + * @get_symbolic_icon: Gets a symbolic #GIcon for the #GMount. Since 2.34. + * + * Interface for implementing operations for mounts. + **/ +struct _GMountIface +{ + GTypeInterface g_iface; + + /* signals */ + + void (* changed) (GMount *mount); + void (* unmounted) (GMount *mount); + + /* Virtual Table */ + + GFile * (* get_root) (GMount *mount); + char * (* get_name) (GMount *mount); + GIcon * (* get_icon) (GMount *mount); + char * (* get_uuid) (GMount *mount); + GVolume * (* get_volume) (GMount *mount); + GDrive * (* get_drive) (GMount *mount); + gboolean (* can_unmount) (GMount *mount); + gboolean (* can_eject) (GMount *mount); + + void (* unmount) (GMount *mount, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* unmount_finish) (GMount *mount, + GAsyncResult *result, + GError **error); + + void (* eject) (GMount *mount, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_finish) (GMount *mount, + GAsyncResult *result, + GError **error); + + void (* remount) (GMount *mount, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* remount_finish) (GMount *mount, + GAsyncResult *result, + GError **error); + + void (* guess_content_type) (GMount *mount, + gboolean force_rescan, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gchar ** (* guess_content_type_finish) (GMount *mount, + GAsyncResult *result, + GError **error); + gchar ** (* guess_content_type_sync) (GMount *mount, + gboolean force_rescan, + GCancellable *cancellable, + GError **error); + + /* Signal, not VFunc */ + void (* pre_unmount) (GMount *mount); + + void (* unmount_with_operation) (GMount *mount, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* unmount_with_operation_finish) (GMount *mount, + GAsyncResult *result, + GError **error); + + void (* eject_with_operation) (GMount *mount, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_with_operation_finish) (GMount *mount, + GAsyncResult *result, + GError **error); + GFile * (* get_default_location) (GMount *mount); + + const gchar * (* get_sort_key) (GMount *mount); + GIcon * (* get_symbolic_icon) (GMount *mount); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_mount_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GFile * g_mount_get_root (GMount *mount); +GLIB_AVAILABLE_IN_ALL +GFile * g_mount_get_default_location (GMount *mount); +GLIB_AVAILABLE_IN_ALL +char * g_mount_get_name (GMount *mount); +GLIB_AVAILABLE_IN_ALL +GIcon * g_mount_get_icon (GMount *mount); +GLIB_AVAILABLE_IN_ALL +GIcon * g_mount_get_symbolic_icon (GMount *mount); +GLIB_AVAILABLE_IN_ALL +char * g_mount_get_uuid (GMount *mount); +GLIB_AVAILABLE_IN_ALL +GVolume * g_mount_get_volume (GMount *mount); +GLIB_AVAILABLE_IN_ALL +GDrive * g_mount_get_drive (GMount *mount); +GLIB_AVAILABLE_IN_ALL +gboolean g_mount_can_unmount (GMount *mount); +GLIB_AVAILABLE_IN_ALL +gboolean g_mount_can_eject (GMount *mount); + +GLIB_DEPRECATED_FOR(g_mount_unmount_with_operation) +void g_mount_unmount (GMount *mount, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_DEPRECATED_FOR(g_mount_unmount_with_operation_finish) +gboolean g_mount_unmount_finish (GMount *mount, + GAsyncResult *result, + GError **error); + +GLIB_DEPRECATED_FOR(g_mount_eject_with_operation) +void g_mount_eject (GMount *mount, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_DEPRECATED_FOR(g_mount_eject_with_operation_finish) +gboolean g_mount_eject_finish (GMount *mount, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_mount_remount (GMount *mount, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_mount_remount_finish (GMount *mount, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_mount_guess_content_type (GMount *mount, + gboolean force_rescan, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gchar ** g_mount_guess_content_type_finish (GMount *mount, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar ** g_mount_guess_content_type_sync (GMount *mount, + gboolean force_rescan, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_mount_is_shadowed (GMount *mount); +GLIB_AVAILABLE_IN_ALL +void g_mount_shadow (GMount *mount); +GLIB_AVAILABLE_IN_ALL +void g_mount_unshadow (GMount *mount); + +GLIB_AVAILABLE_IN_ALL +void g_mount_unmount_with_operation (GMount *mount, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_mount_unmount_with_operation_finish (GMount *mount, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_mount_eject_with_operation (GMount *mount, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_mount_eject_with_operation_finish (GMount *mount, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_mount_get_sort_key (GMount *mount); + +G_END_DECLS + +#endif /* __G_MOUNT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmountoperation.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmountoperation.h new file mode 100644 index 0000000..1f2d009 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gmountoperation.h @@ -0,0 +1,179 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_MOUNT_OPERATION_H__ +#define __G_MOUNT_OPERATION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_MOUNT_OPERATION (g_mount_operation_get_type ()) +#define G_MOUNT_OPERATION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MOUNT_OPERATION, GMountOperation)) +#define G_MOUNT_OPERATION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_MOUNT_OPERATION, GMountOperationClass)) +#define G_IS_MOUNT_OPERATION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MOUNT_OPERATION)) +#define G_IS_MOUNT_OPERATION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_MOUNT_OPERATION)) +#define G_MOUNT_OPERATION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_MOUNT_OPERATION, GMountOperationClass)) + +/** + * GMountOperation: + * + * Class for providing authentication methods for mounting operations, + * such as mounting a file locally, or authenticating with a server. + **/ +typedef struct _GMountOperationClass GMountOperationClass; +typedef struct _GMountOperationPrivate GMountOperationPrivate; + +struct _GMountOperation +{ + GObject parent_instance; + + GMountOperationPrivate *priv; +}; + +struct _GMountOperationClass +{ + GObjectClass parent_class; + + /* signals: */ + + void (* ask_password) (GMountOperation *op, + const char *message, + const char *default_user, + const char *default_domain, + GAskPasswordFlags flags); + + /** + * GMountOperationClass::ask_question: + * @op: a #GMountOperation + * @message: string containing a message to display to the user + * @choices: (array zero-terminated=1) (element-type utf8): an array of + * strings for each possible choice + * + * Virtual implementation of #GMountOperation::ask-question. + */ + void (* ask_question) (GMountOperation *op, + const char *message, + const char *choices[]); + + void (* reply) (GMountOperation *op, + GMountOperationResult result); + + void (* aborted) (GMountOperation *op); + + /** + * GMountOperationClass::show_processes: + * @op: a #GMountOperation + * @message: string containing a message to display to the user + * @processes: (element-type GPid): an array of #GPid for processes blocking + * the operation + * @choices: (array zero-terminated=1) (element-type utf8): an array of + * strings for each possible choice + * + * Virtual implementation of #GMountOperation::show-processes. + * + * Since: 2.22 + */ + void (* show_processes) (GMountOperation *op, + const gchar *message, + GArray *processes, + const gchar *choices[]); + + void (* show_unmount_progress) (GMountOperation *op, + const gchar *message, + gint64 time_left, + gint64 bytes_left); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); + void (*_g_reserved7) (void); + void (*_g_reserved8) (void); + void (*_g_reserved9) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_mount_operation_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GMountOperation * g_mount_operation_new (void); + +GLIB_AVAILABLE_IN_ALL +const char * g_mount_operation_get_username (GMountOperation *op); +GLIB_AVAILABLE_IN_ALL +void g_mount_operation_set_username (GMountOperation *op, + const char *username); +GLIB_AVAILABLE_IN_ALL +const char * g_mount_operation_get_password (GMountOperation *op); +GLIB_AVAILABLE_IN_ALL +void g_mount_operation_set_password (GMountOperation *op, + const char *password); +GLIB_AVAILABLE_IN_ALL +gboolean g_mount_operation_get_anonymous (GMountOperation *op); +GLIB_AVAILABLE_IN_ALL +void g_mount_operation_set_anonymous (GMountOperation *op, + gboolean anonymous); +GLIB_AVAILABLE_IN_ALL +const char * g_mount_operation_get_domain (GMountOperation *op); +GLIB_AVAILABLE_IN_ALL +void g_mount_operation_set_domain (GMountOperation *op, + const char *domain); +GLIB_AVAILABLE_IN_ALL +GPasswordSave g_mount_operation_get_password_save (GMountOperation *op); +GLIB_AVAILABLE_IN_ALL +void g_mount_operation_set_password_save (GMountOperation *op, + GPasswordSave save); +GLIB_AVAILABLE_IN_ALL +int g_mount_operation_get_choice (GMountOperation *op); +GLIB_AVAILABLE_IN_ALL +void g_mount_operation_set_choice (GMountOperation *op, + int choice); +GLIB_AVAILABLE_IN_ALL +void g_mount_operation_reply (GMountOperation *op, + GMountOperationResult result); +GLIB_AVAILABLE_IN_2_58 +gboolean g_mount_operation_get_is_tcrypt_hidden_volume (GMountOperation *op); +GLIB_AVAILABLE_IN_2_58 +void g_mount_operation_set_is_tcrypt_hidden_volume (GMountOperation *op, + gboolean hidden_volume); +GLIB_AVAILABLE_IN_2_58 +gboolean g_mount_operation_get_is_tcrypt_system_volume (GMountOperation *op); +GLIB_AVAILABLE_IN_2_58 +void g_mount_operation_set_is_tcrypt_system_volume (GMountOperation *op, + gboolean system_volume); +GLIB_AVAILABLE_IN_2_58 +guint g_mount_operation_get_pim (GMountOperation *op); +GLIB_AVAILABLE_IN_2_58 +void g_mount_operation_set_pim (GMountOperation *op, + guint pim); + +G_END_DECLS + +#endif /* __G_MOUNT_OPERATION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnativesocketaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnativesocketaddress.h new file mode 100644 index 0000000..01c8391 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnativesocketaddress.h @@ -0,0 +1,67 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + */ + +#ifndef __G_NATIVE_SOCKET_ADDRESS_H__ +#define __G_NATIVE_SOCKET_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_NATIVE_SOCKET_ADDRESS (g_native_socket_address_get_type ()) +#define G_NATIVE_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NATIVE_SOCKET_ADDRESS, GNativeSocketAddress)) +#define G_NATIVE_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NATIVE_SOCKET_ADDRESS, GNativeSocketAddressClass)) +#define G_IS_NATIVE_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NATIVE_SOCKET_ADDRESS)) +#define G_IS_NATIVE_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NATIVE_SOCKET_ADDRESS)) +#define G_NATIVE_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_NATIVE_SOCKET_ADDRESS, GNativeSocketAddressClass)) + +typedef struct _GNativeSocketAddressClass GNativeSocketAddressClass; +typedef struct _GNativeSocketAddressPrivate GNativeSocketAddressPrivate; + +struct _GNativeSocketAddress +{ + GSocketAddress parent_instance; + + /*< private >*/ + GNativeSocketAddressPrivate *priv; +}; + +struct _GNativeSocketAddressClass +{ + GSocketAddressClass parent_class; +}; + +GLIB_AVAILABLE_IN_2_46 +GType g_native_socket_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_46 +GSocketAddress *g_native_socket_address_new (gpointer native, + gsize len); + +G_END_DECLS + +#endif /* __G_NATIVE_SOCKET_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnativevolumemonitor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnativevolumemonitor.h new file mode 100644 index 0000000..ef1f8d7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnativevolumemonitor.h @@ -0,0 +1,63 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_NATIVE_VOLUME_MONITOR_H__ +#define __G_NATIVE_VOLUME_MONITOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_NATIVE_VOLUME_MONITOR (g_native_volume_monitor_get_type ()) +#define G_NATIVE_VOLUME_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NATIVE_VOLUME_MONITOR, GNativeVolumeMonitor)) +#define G_NATIVE_VOLUME_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NATIVE_VOLUME_MONITOR, GNativeVolumeMonitorClass)) +#define G_IS_NATIVE_VOLUME_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NATIVE_VOLUME_MONITOR)) +#define G_IS_NATIVE_VOLUME_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NATIVE_VOLUME_MONITOR)) + +#define G_NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME "gio-native-volume-monitor" + +typedef struct _GNativeVolumeMonitor GNativeVolumeMonitor; +typedef struct _GNativeVolumeMonitorClass GNativeVolumeMonitorClass; + +struct _GNativeVolumeMonitor +{ + GVolumeMonitor parent_instance; +}; + +struct _GNativeVolumeMonitorClass +{ + GVolumeMonitorClass parent_class; + + GMount * (* get_mount_for_mount_path) (const char *mount_path, + GCancellable *cancellable); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_native_volume_monitor_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __G_NATIVE_VOLUME_MONITOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkaddress.h new file mode 100644 index 0000000..c867a31 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkaddress.h @@ -0,0 +1,82 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_NETWORK_ADDRESS_H__ +#define __G_NETWORK_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_NETWORK_ADDRESS (g_network_address_get_type ()) +#define G_NETWORK_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NETWORK_ADDRESS, GNetworkAddress)) +#define G_NETWORK_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NETWORK_ADDRESS, GNetworkAddressClass)) +#define G_IS_NETWORK_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NETWORK_ADDRESS)) +#define G_IS_NETWORK_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NETWORK_ADDRESS)) +#define G_NETWORK_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_NETWORK_ADDRESS, GNetworkAddressClass)) + +typedef struct _GNetworkAddressClass GNetworkAddressClass; +typedef struct _GNetworkAddressPrivate GNetworkAddressPrivate; + +struct _GNetworkAddress +{ + GObject parent_instance; + + /*< private >*/ + GNetworkAddressPrivate *priv; +}; + +struct _GNetworkAddressClass +{ + GObjectClass parent_class; + +}; + +GLIB_AVAILABLE_IN_ALL +GType g_network_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketConnectable *g_network_address_new (const gchar *hostname, + guint16 port); +GLIB_AVAILABLE_IN_2_44 +GSocketConnectable *g_network_address_new_loopback (guint16 port); +GLIB_AVAILABLE_IN_ALL +GSocketConnectable *g_network_address_parse (const gchar *host_and_port, + guint16 default_port, + GError **error); +GLIB_AVAILABLE_IN_ALL +GSocketConnectable *g_network_address_parse_uri (const gchar *uri, + guint16 default_port, + GError **error); +GLIB_AVAILABLE_IN_ALL +const gchar *g_network_address_get_hostname (GNetworkAddress *addr); +GLIB_AVAILABLE_IN_ALL +guint16 g_network_address_get_port (GNetworkAddress *addr); +GLIB_AVAILABLE_IN_ALL +const gchar *g_network_address_get_scheme (GNetworkAddress *addr); + + +G_END_DECLS + +#endif /* __G_NETWORK_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworking.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworking.h new file mode 100644 index 0000000..a7d488e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworking.h @@ -0,0 +1,80 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008-2011 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_NETWORKING_H__ +#define __G_NETWORKING_H__ + +#include + +#ifdef G_OS_WIN32 +#include +#include +#include +#include +#include +#include +#undef interface + +#else /* !G_OS_WIN32 */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +#ifndef T_SRV +#define T_SRV 33 +#endif + +#ifndef _PATH_RESCONF +#define _PATH_RESCONF "/etc/resolv.conf" +#endif + +#ifndef CMSG_LEN +/* CMSG_LEN and CMSG_SPACE are defined by RFC 2292, but missing on + * some older platforms. + */ +#define CMSG_LEN(len) ((size_t)CMSG_DATA((struct cmsghdr *)NULL) + (len)) + +/* CMSG_SPACE must add at least as much padding as CMSG_NXTHDR() + * adds. We overestimate here. + */ +#define GLIB_ALIGN_TO_SIZEOF(len, obj) (((len) + sizeof (obj) - 1) & ~(sizeof (obj) - 1)) +#define CMSG_SPACE(len) GLIB_ALIGN_TO_SIZEOF (CMSG_LEN (len), struct cmsghdr) +#endif +#endif + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_36 +void g_networking_init (void); + +G_END_DECLS + +#endif /* __G_NETWORKING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkmonitor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkmonitor.h new file mode 100644 index 0000000..e4d561d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkmonitor.h @@ -0,0 +1,101 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2011 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_NETWORK_MONITOR_H__ +#define __G_NETWORK_MONITOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_NETWORK_MONITOR_EXTENSION_POINT_NAME: + * + * Extension point for network status monitoring functionality. + * See [Extending GIO][extending-gio]. + * + * Since: 2.30 + */ +#define G_NETWORK_MONITOR_EXTENSION_POINT_NAME "gio-network-monitor" + +#define G_TYPE_NETWORK_MONITOR (g_network_monitor_get_type ()) +#define G_NETWORK_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NETWORK_MONITOR, GNetworkMonitor)) +#define G_IS_NETWORK_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NETWORK_MONITOR)) +#define G_NETWORK_MONITOR_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_NETWORK_MONITOR, GNetworkMonitorInterface)) + +typedef struct _GNetworkMonitorInterface GNetworkMonitorInterface; + +struct _GNetworkMonitorInterface { + GTypeInterface g_iface; + + void (*network_changed) (GNetworkMonitor *monitor, + gboolean network_available); + + gboolean (*can_reach) (GNetworkMonitor *monitor, + GSocketConnectable *connectable, + GCancellable *cancellable, + GError **error); + void (*can_reach_async) (GNetworkMonitor *monitor, + GSocketConnectable *connectable, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*can_reach_finish) (GNetworkMonitor *monitor, + GAsyncResult *result, + GError **error); +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_network_monitor_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_32 +GNetworkMonitor *g_network_monitor_get_default (void); + +GLIB_AVAILABLE_IN_2_32 +gboolean g_network_monitor_get_network_available (GNetworkMonitor *monitor); + +GLIB_AVAILABLE_IN_2_46 +gboolean g_network_monitor_get_network_metered (GNetworkMonitor *monitor); + +GLIB_AVAILABLE_IN_2_44 +GNetworkConnectivity g_network_monitor_get_connectivity (GNetworkMonitor *monitor); + +GLIB_AVAILABLE_IN_2_32 +gboolean g_network_monitor_can_reach (GNetworkMonitor *monitor, + GSocketConnectable *connectable, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_32 +void g_network_monitor_can_reach_async (GNetworkMonitor *monitor, + GSocketConnectable *connectable, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_32 +gboolean g_network_monitor_can_reach_finish (GNetworkMonitor *monitor, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#endif /* __G_NETWORK_MONITOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkservice.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkservice.h new file mode 100644 index 0000000..e782dbe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnetworkservice.h @@ -0,0 +1,77 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_NETWORK_SERVICE_H__ +#define __G_NETWORK_SERVICE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_NETWORK_SERVICE (g_network_service_get_type ()) +#define G_NETWORK_SERVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NETWORK_SERVICE, GNetworkService)) +#define G_NETWORK_SERVICE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NETWORK_SERVICE, GNetworkServiceClass)) +#define G_IS_NETWORK_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NETWORK_SERVICE)) +#define G_IS_NETWORK_SERVICE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NETWORK_SERVICE)) +#define G_NETWORK_SERVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_NETWORK_SERVICE, GNetworkServiceClass)) + +typedef struct _GNetworkServiceClass GNetworkServiceClass; +typedef struct _GNetworkServicePrivate GNetworkServicePrivate; + +struct _GNetworkService +{ + GObject parent_instance; + + /*< private >*/ + GNetworkServicePrivate *priv; +}; + +struct _GNetworkServiceClass +{ + GObjectClass parent_class; + +}; + +GLIB_AVAILABLE_IN_ALL +GType g_network_service_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketConnectable *g_network_service_new (const gchar *service, + const gchar *protocol, + const gchar *domain); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_network_service_get_service (GNetworkService *srv); +GLIB_AVAILABLE_IN_ALL +const gchar *g_network_service_get_protocol (GNetworkService *srv); +GLIB_AVAILABLE_IN_ALL +const gchar *g_network_service_get_domain (GNetworkService *srv); +GLIB_AVAILABLE_IN_ALL +const gchar *g_network_service_get_scheme (GNetworkService *srv); +GLIB_AVAILABLE_IN_ALL +void g_network_service_set_scheme (GNetworkService *srv, const gchar *scheme); + +G_END_DECLS + +#endif /* __G_NETWORK_SERVICE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnotification.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnotification.h new file mode 100644 index 0000000..c38383c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gnotification.h @@ -0,0 +1,103 @@ +/* + * Copyright © 2013 Lars Uebernickel + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Lars Uebernickel + */ + +#ifndef __G_NOTIFICATION_H__ +#define __G_NOTIFICATION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_NOTIFICATION (g_notification_get_type ()) +#define G_NOTIFICATION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NOTIFICATION, GNotification)) +#define G_IS_NOTIFICATION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NOTIFICATION)) + +GLIB_AVAILABLE_IN_2_40 +GType g_notification_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_40 +GNotification * g_notification_new (const gchar *title); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_set_title (GNotification *notification, + const gchar *title); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_set_body (GNotification *notification, + const gchar *body); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_set_icon (GNotification *notification, + GIcon *icon); + +GLIB_DEPRECATED_IN_2_42_FOR(g_notification_set_priority) +void g_notification_set_urgent (GNotification *notification, + gboolean urgent); + +GLIB_AVAILABLE_IN_2_42 +void g_notification_set_priority (GNotification *notification, + GNotificationPriority priority); + +GLIB_AVAILABLE_IN_2_70 +void g_notification_set_category (GNotification *notification, + const gchar *category); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_add_button (GNotification *notification, + const gchar *label, + const gchar *detailed_action); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_add_button_with_target (GNotification *notification, + const gchar *label, + const gchar *action, + const gchar *target_format, + ...); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_add_button_with_target_value (GNotification *notification, + const gchar *label, + const gchar *action, + GVariant *target); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_set_default_action (GNotification *notification, + const gchar *detailed_action); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_set_default_action_and_target (GNotification *notification, + const gchar *action, + const gchar *target_format, + ...); + +GLIB_AVAILABLE_IN_2_40 +void g_notification_set_default_action_and_target_value (GNotification *notification, + const gchar *action, + GVariant *target); + +G_END_DECLS + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/goutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/goutputstream.h new file mode 100644 index 0000000..e32499d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/goutputstream.h @@ -0,0 +1,334 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_OUTPUT_STREAM_H__ +#define __G_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_OUTPUT_STREAM (g_output_stream_get_type ()) +#define G_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_OUTPUT_STREAM, GOutputStream)) +#define G_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_OUTPUT_STREAM, GOutputStreamClass)) +#define G_IS_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_OUTPUT_STREAM)) +#define G_IS_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_OUTPUT_STREAM)) +#define G_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_OUTPUT_STREAM, GOutputStreamClass)) + +/** + * GOutputStream: + * + * Base class for writing output. + * + * All classes derived from GOutputStream should implement synchronous + * writing, splicing, flushing and closing streams, but may implement + * asynchronous versions. + **/ +typedef struct _GOutputStreamClass GOutputStreamClass; +typedef struct _GOutputStreamPrivate GOutputStreamPrivate; + +struct _GOutputStream +{ + GObject parent_instance; + + /*< private >*/ + GOutputStreamPrivate *priv; +}; + + +struct _GOutputStreamClass +{ + GObjectClass parent_class; + + /* Sync ops: */ + + gssize (* write_fn) (GOutputStream *stream, + const void *buffer, + gsize count, + GCancellable *cancellable, + GError **error); + gssize (* splice) (GOutputStream *stream, + GInputStream *source, + GOutputStreamSpliceFlags flags, + GCancellable *cancellable, + GError **error); + gboolean (* flush) (GOutputStream *stream, + GCancellable *cancellable, + GError **error); + gboolean (* close_fn) (GOutputStream *stream, + GCancellable *cancellable, + GError **error); + + /* Async ops: (optional in derived classes) */ + + void (* write_async) (GOutputStream *stream, + const void *buffer, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gssize (* write_finish) (GOutputStream *stream, + GAsyncResult *result, + GError **error); + void (* splice_async) (GOutputStream *stream, + GInputStream *source, + GOutputStreamSpliceFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gssize (* splice_finish) (GOutputStream *stream, + GAsyncResult *result, + GError **error); + void (* flush_async) (GOutputStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* flush_finish) (GOutputStream *stream, + GAsyncResult *result, + GError **error); + void (* close_async) (GOutputStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* close_finish) (GOutputStream *stream, + GAsyncResult *result, + GError **error); + + gboolean (* writev_fn) (GOutputStream *stream, + const GOutputVector *vectors, + gsize n_vectors, + gsize *bytes_written, + GCancellable *cancellable, + GError **error); + + void (* writev_async) (GOutputStream *stream, + const GOutputVector *vectors, + gsize n_vectors, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + gboolean (* writev_finish) (GOutputStream *stream, + GAsyncResult *result, + gsize *bytes_written, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); + void (*_g_reserved7) (void); + void (*_g_reserved8) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_output_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gssize g_output_stream_write (GOutputStream *stream, + const void *buffer, + gsize count, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_write_all (GOutputStream *stream, + const void *buffer, + gsize count, + gsize *bytes_written, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_60 +gboolean g_output_stream_writev (GOutputStream *stream, + const GOutputVector *vectors, + gsize n_vectors, + gsize *bytes_written, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_60 +gboolean g_output_stream_writev_all (GOutputStream *stream, + GOutputVector *vectors, + gsize n_vectors, + gsize *bytes_written, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_output_stream_printf (GOutputStream *stream, + gsize *bytes_written, + GCancellable *cancellable, + GError **error, + const gchar *format, + ...) G_GNUC_PRINTF (5, 6); +GLIB_AVAILABLE_IN_2_40 +gboolean g_output_stream_vprintf (GOutputStream *stream, + gsize *bytes_written, + GCancellable *cancellable, + GError **error, + const gchar *format, + va_list args) G_GNUC_PRINTF (5, 0); +GLIB_AVAILABLE_IN_2_34 +gssize g_output_stream_write_bytes (GOutputStream *stream, + GBytes *bytes, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_output_stream_splice (GOutputStream *stream, + GInputStream *source, + GOutputStreamSpliceFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_flush (GOutputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_close (GOutputStream *stream, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_output_stream_write_async (GOutputStream *stream, + const void *buffer, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gssize g_output_stream_write_finish (GOutputStream *stream, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_44 +void g_output_stream_write_all_async (GOutputStream *stream, + const void *buffer, + gsize count, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_44 +gboolean g_output_stream_write_all_finish (GOutputStream *stream, + GAsyncResult *result, + gsize *bytes_written, + GError **error); + +GLIB_AVAILABLE_IN_2_60 +void g_output_stream_writev_async (GOutputStream *stream, + const GOutputVector *vectors, + gsize n_vectors, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_60 +gboolean g_output_stream_writev_finish (GOutputStream *stream, + GAsyncResult *result, + gsize *bytes_written, + GError **error); + +GLIB_AVAILABLE_IN_2_60 +void g_output_stream_writev_all_async (GOutputStream *stream, + GOutputVector *vectors, + gsize n_vectors, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_60 +gboolean g_output_stream_writev_all_finish (GOutputStream *stream, + GAsyncResult *result, + gsize *bytes_written, + GError **error); + +GLIB_AVAILABLE_IN_2_34 +void g_output_stream_write_bytes_async (GOutputStream *stream, + GBytes *bytes, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_34 +gssize g_output_stream_write_bytes_finish (GOutputStream *stream, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_output_stream_splice_async (GOutputStream *stream, + GInputStream *source, + GOutputStreamSpliceFlags flags, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gssize g_output_stream_splice_finish (GOutputStream *stream, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_output_stream_flush_async (GOutputStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_flush_finish (GOutputStream *stream, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_output_stream_close_async (GOutputStream *stream, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_close_finish (GOutputStream *stream, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_is_closed (GOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_is_closing (GOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_has_pending (GOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +gboolean g_output_stream_set_pending (GOutputStream *stream, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_output_stream_clear_pending (GOutputStream *stream); + + +G_END_DECLS + +#endif /* __G_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpermission.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpermission.h new file mode 100644 index 0000000..1b67cf2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpermission.h @@ -0,0 +1,129 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_PERMISSION_H__ +#define __G_PERMISSION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_PERMISSION (g_permission_get_type ()) +#define G_PERMISSION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_PERMISSION, GPermission)) +#define G_PERMISSION_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_PERMISSION, GPermissionClass)) +#define G_IS_PERMISSION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_PERMISSION)) +#define G_IS_PERMISSION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_PERMISSION)) +#define G_PERMISSION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_PERMISSION, GPermissionClass)) + +typedef struct _GPermissionPrivate GPermissionPrivate; +typedef struct _GPermissionClass GPermissionClass; + +struct _GPermission +{ + GObject parent_instance; + + /*< private >*/ + GPermissionPrivate *priv; +}; + +struct _GPermissionClass { + GObjectClass parent_class; + + gboolean (*acquire) (GPermission *permission, + GCancellable *cancellable, + GError **error); + void (*acquire_async) (GPermission *permission, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*acquire_finish) (GPermission *permission, + GAsyncResult *result, + GError **error); + + gboolean (*release) (GPermission *permission, + GCancellable *cancellable, + GError **error); + void (*release_async) (GPermission *permission, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*release_finish) (GPermission *permission, + GAsyncResult *result, + GError **error); + + gpointer reserved[16]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_permission_get_type (void); +GLIB_AVAILABLE_IN_ALL +gboolean g_permission_acquire (GPermission *permission, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_permission_acquire_async (GPermission *permission, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_permission_acquire_finish (GPermission *permission, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_permission_release (GPermission *permission, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_permission_release_async (GPermission *permission, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_permission_release_finish (GPermission *permission, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_permission_get_allowed (GPermission *permission); +GLIB_AVAILABLE_IN_ALL +gboolean g_permission_get_can_acquire (GPermission *permission); +GLIB_AVAILABLE_IN_ALL +gboolean g_permission_get_can_release (GPermission *permission); + +GLIB_AVAILABLE_IN_ALL +void g_permission_impl_update (GPermission *permission, + gboolean allowed, + gboolean can_acquire, + gboolean can_release); + +G_END_DECLS + +#endif /* __G_PERMISSION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableinputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableinputstream.h new file mode 100644 index 0000000..8ce59eb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableinputstream.h @@ -0,0 +1,106 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_POLLABLE_INPUT_STREAM_H__ +#define __G_POLLABLE_INPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_POLLABLE_INPUT_STREAM (g_pollable_input_stream_get_type ()) +#define G_POLLABLE_INPUT_STREAM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_POLLABLE_INPUT_STREAM, GPollableInputStream)) +#define G_IS_POLLABLE_INPUT_STREAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_POLLABLE_INPUT_STREAM)) +#define G_POLLABLE_INPUT_STREAM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_POLLABLE_INPUT_STREAM, GPollableInputStreamInterface)) + +/** + * GPollableInputStream: + * + * An interface for a #GInputStream that can be polled for readability. + * + * Since: 2.28 + */ +typedef struct _GPollableInputStreamInterface GPollableInputStreamInterface; + +/** + * GPollableInputStreamInterface: + * @g_iface: The parent interface. + * @can_poll: Checks if the #GPollableInputStream instance is actually pollable + * @is_readable: Checks if the stream is readable + * @create_source: Creates a #GSource to poll the stream + * @read_nonblocking: Does a non-blocking read or returns + * %G_IO_ERROR_WOULD_BLOCK + * + * The interface for pollable input streams. + * + * The default implementation of @can_poll always returns %TRUE. + * + * The default implementation of @read_nonblocking calls + * g_pollable_input_stream_is_readable(), and then calls + * g_input_stream_read() if it returns %TRUE. This means you only need + * to override it if it is possible that your @is_readable + * implementation may return %TRUE when the stream is not actually + * readable. + * + * Since: 2.28 + */ +struct _GPollableInputStreamInterface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + gboolean (*can_poll) (GPollableInputStream *stream); + + gboolean (*is_readable) (GPollableInputStream *stream); + GSource * (*create_source) (GPollableInputStream *stream, + GCancellable *cancellable); + gssize (*read_nonblocking) (GPollableInputStream *stream, + void *buffer, + gsize count, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_pollable_input_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_pollable_input_stream_can_poll (GPollableInputStream *stream); + +GLIB_AVAILABLE_IN_ALL +gboolean g_pollable_input_stream_is_readable (GPollableInputStream *stream); +GLIB_AVAILABLE_IN_ALL +GSource *g_pollable_input_stream_create_source (GPollableInputStream *stream, + GCancellable *cancellable); + +GLIB_AVAILABLE_IN_ALL +gssize g_pollable_input_stream_read_nonblocking (GPollableInputStream *stream, + void *buffer, + gsize count, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + + +#endif /* __G_POLLABLE_INPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableoutputstream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableoutputstream.h new file mode 100644 index 0000000..a35c2de --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableoutputstream.h @@ -0,0 +1,127 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_POLLABLE_OUTPUT_STREAM_H__ +#define __G_POLLABLE_OUTPUT_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_POLLABLE_OUTPUT_STREAM (g_pollable_output_stream_get_type ()) +#define G_POLLABLE_OUTPUT_STREAM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_POLLABLE_OUTPUT_STREAM, GPollableOutputStream)) +#define G_IS_POLLABLE_OUTPUT_STREAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_POLLABLE_OUTPUT_STREAM)) +#define G_POLLABLE_OUTPUT_STREAM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_POLLABLE_OUTPUT_STREAM, GPollableOutputStreamInterface)) + +/** + * GPollableOutputStream: + * + * An interface for a #GOutputStream that can be polled for writeability. + * + * Since: 2.28 + */ +typedef struct _GPollableOutputStreamInterface GPollableOutputStreamInterface; + +/** + * GPollableOutputStreamInterface: + * @g_iface: The parent interface. + * @can_poll: Checks if the #GPollableOutputStream instance is actually pollable + * @is_writable: Checks if the stream is writable + * @create_source: Creates a #GSource to poll the stream + * @write_nonblocking: Does a non-blocking write or returns + * %G_IO_ERROR_WOULD_BLOCK + * @writev_nonblocking: Does a vectored non-blocking write, or returns + * %G_POLLABLE_RETURN_WOULD_BLOCK + * + * The interface for pollable output streams. + * + * The default implementation of @can_poll always returns %TRUE. + * + * The default implementation of @write_nonblocking calls + * g_pollable_output_stream_is_writable(), and then calls + * g_output_stream_write() if it returns %TRUE. This means you only + * need to override it if it is possible that your @is_writable + * implementation may return %TRUE when the stream is not actually + * writable. + * + * The default implementation of @writev_nonblocking calls + * g_pollable_output_stream_write_nonblocking() for each vector, and converts + * its return value and error (if set) to a #GPollableReturn. You should + * override this where possible to avoid having to allocate a #GError to return + * %G_IO_ERROR_WOULD_BLOCK. + * + * Since: 2.28 + */ +struct _GPollableOutputStreamInterface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + gboolean (*can_poll) (GPollableOutputStream *stream); + + gboolean (*is_writable) (GPollableOutputStream *stream); + GSource * (*create_source) (GPollableOutputStream *stream, + GCancellable *cancellable); + gssize (*write_nonblocking) (GPollableOutputStream *stream, + const void *buffer, + gsize count, + GError **error); + GPollableReturn (*writev_nonblocking) (GPollableOutputStream *stream, + const GOutputVector *vectors, + gsize n_vectors, + gsize *bytes_written, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_pollable_output_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_pollable_output_stream_can_poll (GPollableOutputStream *stream); + +GLIB_AVAILABLE_IN_ALL +gboolean g_pollable_output_stream_is_writable (GPollableOutputStream *stream); +GLIB_AVAILABLE_IN_ALL +GSource *g_pollable_output_stream_create_source (GPollableOutputStream *stream, + GCancellable *cancellable); + +GLIB_AVAILABLE_IN_ALL +gssize g_pollable_output_stream_write_nonblocking (GPollableOutputStream *stream, + const void *buffer, + gsize count, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_60 +GPollableReturn g_pollable_output_stream_writev_nonblocking (GPollableOutputStream *stream, + const GOutputVector *vectors, + gsize n_vectors, + gsize *bytes_written, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + + +#endif /* __G_POLLABLE_OUTPUT_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableutils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableutils.h new file mode 100644 index 0000000..2527fd1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpollableutils.h @@ -0,0 +1,66 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2012 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_POLLABLE_UTILS_H__ +#define __G_POLLABLE_UTILS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +GSource *g_pollable_source_new (GObject *pollable_stream); + +GLIB_AVAILABLE_IN_2_34 +GSource *g_pollable_source_new_full (gpointer pollable_stream, + GSource *child_source, + GCancellable *cancellable); + +GLIB_AVAILABLE_IN_2_34 +gssize g_pollable_stream_read (GInputStream *stream, + void *buffer, + gsize count, + gboolean blocking, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_34 +gssize g_pollable_stream_write (GOutputStream *stream, + const void *buffer, + gsize count, + gboolean blocking, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_34 +gboolean g_pollable_stream_write_all (GOutputStream *stream, + const void *buffer, + gsize count, + gboolean blocking, + gsize *bytes_written, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + +#endif /* _G_POLLABLE_UTILS_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpowerprofilemonitor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpowerprofilemonitor.h new file mode 100644 index 0000000..7ac3c57 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpowerprofilemonitor.h @@ -0,0 +1,65 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2019 Red Hat, Inc. + * Copyright 2021 Igalia S.L. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_POWER_PROFILE_MONITOR_H__ +#define __G_POWER_PROFILE_MONITOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_POWER_PROFILE_MONITOR_EXTENSION_POINT_NAME: + * + * Extension point for power profile usage monitoring functionality. + * See [Extending GIO][extending-gio]. + * + * Since: 2.70 + */ +#define G_POWER_PROFILE_MONITOR_EXTENSION_POINT_NAME "gio-power-profile-monitor" + +#define G_TYPE_POWER_PROFILE_MONITOR (g_power_profile_monitor_get_type ()) +GLIB_AVAILABLE_IN_2_70 +G_DECLARE_INTERFACE (GPowerProfileMonitor, g_power_profile_monitor, g, power_profile_monitor, GObject) + +#define G_POWER_PROFILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_POWER_PROFILE_MONITOR, GPowerProfileMonitor)) +#define G_IS_POWER_PROFILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_POWER_PROFILE_MONITOR)) +#define G_POWER_PROFILE_MONITOR_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_POWER_PROFILE_MONITOR, GPowerProfileMonitorInterface)) + +struct _GPowerProfileMonitorInterface +{ + /*< private >*/ + GTypeInterface g_iface; +}; + +GLIB_AVAILABLE_IN_2_70 +GPowerProfileMonitor *g_power_profile_monitor_dup_default (void); + +GLIB_AVAILABLE_IN_2_70 +gboolean g_power_profile_monitor_get_power_saver_enabled (GPowerProfileMonitor *monitor); + +G_END_DECLS + +#endif /* __G_POWER_PROFILE_MONITOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpropertyaction.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpropertyaction.h new file mode 100644 index 0000000..67aa0b0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gpropertyaction.h @@ -0,0 +1,49 @@ +/* + * Copyright © 2013 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_PROPERTY_ACTION_H__ +#define __G_PROPERTY_ACTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_PROPERTY_ACTION (g_property_action_get_type ()) +#define G_PROPERTY_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_PROPERTY_ACTION, GPropertyAction)) +#define G_IS_PROPERTY_ACTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_PROPERTY_ACTION)) + +GLIB_AVAILABLE_IN_2_38 +GType g_property_action_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_38 +GPropertyAction * g_property_action_new (const gchar *name, + gpointer object, + const gchar *property_name); + +G_END_DECLS + +#endif /* __G_PROPERTY_ACTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxy.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxy.h new file mode 100644 index 0000000..e31f251 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxy.h @@ -0,0 +1,130 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ + +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Collabora Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Nicolas Dufresne + */ + +#ifndef __G_PROXY_H__ +#define __G_PROXY_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_PROXY (g_proxy_get_type ()) +#define G_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY, GProxy)) +#define G_IS_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY)) +#define G_PROXY_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_PROXY, GProxyInterface)) + +/** + * G_PROXY_EXTENSION_POINT_NAME: + * + * Extension point for proxy functionality. + * See [Extending GIO][extending-gio]. + * + * Since: 2.26 + */ +#define G_PROXY_EXTENSION_POINT_NAME "gio-proxy" + +/** + * GProxy: + * + * Interface that handles proxy connection and payload. + * + * Since: 2.26 + */ +typedef struct _GProxyInterface GProxyInterface; + +/** + * GProxyInterface: + * @g_iface: The parent interface. + * @connect: Connect to proxy server and wrap (if required) the #connection + * to handle payload. + * @connect_async: Same as connect() but asynchronous. + * @connect_finish: Returns the result of connect_async() + * @supports_hostname: Returns whether the proxy supports hostname lookups. + * + * Provides an interface for handling proxy connection and payload. + * + * Since: 2.26 + */ +struct _GProxyInterface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + GIOStream * (* connect) (GProxy *proxy, + GIOStream *connection, + GProxyAddress *proxy_address, + GCancellable *cancellable, + GError **error); + + void (* connect_async) (GProxy *proxy, + GIOStream *connection, + GProxyAddress *proxy_address, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GIOStream * (* connect_finish) (GProxy *proxy, + GAsyncResult *result, + GError **error); + + gboolean (* supports_hostname) (GProxy *proxy); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_proxy_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GProxy *g_proxy_get_default_for_protocol (const gchar *protocol); + +GLIB_AVAILABLE_IN_ALL +GIOStream *g_proxy_connect (GProxy *proxy, + GIOStream *connection, + GProxyAddress *proxy_address, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_proxy_connect_async (GProxy *proxy, + GIOStream *connection, + GProxyAddress *proxy_address, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GIOStream *g_proxy_connect_finish (GProxy *proxy, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_proxy_supports_hostname (GProxy *proxy); + +G_END_DECLS + +#endif /* __G_PROXY_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyaddress.h new file mode 100644 index 0000000..0a43255 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyaddress.h @@ -0,0 +1,88 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Nicolas Dufresne + */ + +#ifndef __G_PROXY_ADDRESS_H__ +#define __G_PROXY_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_PROXY_ADDRESS (g_proxy_address_get_type ()) +#define G_PROXY_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY_ADDRESS, GProxyAddress)) +#define G_PROXY_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_PROXY_ADDRESS, GProxyAddressClass)) +#define G_IS_PROXY_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY_ADDRESS)) +#define G_IS_PROXY_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_PROXY_ADDRESS)) +#define G_PROXY_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_PROXY_ADDRESS, GProxyAddressClass)) + +typedef struct _GProxyAddressClass GProxyAddressClass; +typedef struct _GProxyAddressPrivate GProxyAddressPrivate; + +struct _GProxyAddress +{ + GInetSocketAddress parent_instance; + + /*< private >*/ + GProxyAddressPrivate *priv; +}; + +struct _GProxyAddressClass +{ + GInetSocketAddressClass parent_class; +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_proxy_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_proxy_address_new (GInetAddress *inetaddr, + guint16 port, + const gchar *protocol, + const gchar *dest_hostname, + guint16 dest_port, + const gchar *username, + const gchar *password); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_proxy_address_get_protocol (GProxyAddress *proxy); +GLIB_AVAILABLE_IN_2_34 +const gchar *g_proxy_address_get_destination_protocol (GProxyAddress *proxy); +GLIB_AVAILABLE_IN_ALL +const gchar *g_proxy_address_get_destination_hostname (GProxyAddress *proxy); +GLIB_AVAILABLE_IN_ALL +guint16 g_proxy_address_get_destination_port (GProxyAddress *proxy); +GLIB_AVAILABLE_IN_ALL +const gchar *g_proxy_address_get_username (GProxyAddress *proxy); +GLIB_AVAILABLE_IN_ALL +const gchar *g_proxy_address_get_password (GProxyAddress *proxy); + +GLIB_AVAILABLE_IN_2_34 +const gchar *g_proxy_address_get_uri (GProxyAddress *proxy); + +G_END_DECLS + +#endif /* __G_PROXY_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyaddressenumerator.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyaddressenumerator.h new file mode 100644 index 0000000..3bb6d43 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyaddressenumerator.h @@ -0,0 +1,83 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Nicolas Dufresne + */ + +#ifndef __G_PROXY_ADDRESS_ENUMERATOR_H__ +#define __G_PROXY_ADDRESS_ENUMERATOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_PROXY_ADDRESS_ENUMERATOR (g_proxy_address_enumerator_get_type ()) +#define G_PROXY_ADDRESS_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY_ADDRESS_ENUMERATOR, GProxyAddressEnumerator)) +#define G_PROXY_ADDRESS_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_PROXY_ADDRESS_ENUMERATOR, GProxyAddressEnumeratorClass)) +#define G_IS_PROXY_ADDRESS_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY_ADDRESS_ENUMERATOR)) +#define G_IS_PROXY_ADDRESS_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_PROXY_ADDRESS_ENUMERATOR)) +#define G_PROXY_ADDRESS_ENUMERATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_PROXY_ADDRESS_ENUMERATOR, GProxyAddressEnumeratorClass)) + +/** + * GProxyAddressEnumerator: + * + * A subclass of #GSocketAddressEnumerator that takes another address + * enumerator and wraps each of its results in a #GProxyAddress as + * directed by the default #GProxyResolver. + */ + +typedef struct _GProxyAddressEnumeratorClass GProxyAddressEnumeratorClass; +typedef struct _GProxyAddressEnumeratorPrivate GProxyAddressEnumeratorPrivate; + +struct _GProxyAddressEnumerator +{ + /*< private >*/ + GSocketAddressEnumerator parent_instance; + GProxyAddressEnumeratorPrivate *priv; +}; + +/** + * GProxyAddressEnumeratorClass: + * + * Class structure for #GProxyAddressEnumerator. + */ +struct _GProxyAddressEnumeratorClass +{ + /*< private >*/ + GSocketAddressEnumeratorClass parent_class; + + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); + void (*_g_reserved7) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_proxy_address_enumerator_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __G_PROXY_ADDRESS_ENUMERATOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyresolver.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyresolver.h new file mode 100644 index 0000000..ee7852b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gproxyresolver.h @@ -0,0 +1,97 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Nicolas Dufresne + */ + +#ifndef __G_PROXY_RESOLVER_H__ +#define __G_PROXY_RESOLVER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_PROXY_RESOLVER (g_proxy_resolver_get_type ()) +#define G_PROXY_RESOLVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY_RESOLVER, GProxyResolver)) +#define G_IS_PROXY_RESOLVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY_RESOLVER)) +#define G_PROXY_RESOLVER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_PROXY_RESOLVER, GProxyResolverInterface)) + +/** + * G_PROXY_RESOLVER_EXTENSION_POINT_NAME: + * + * Extension point for proxy resolving functionality. + * See [Extending GIO][extending-gio]. + */ +#define G_PROXY_RESOLVER_EXTENSION_POINT_NAME "gio-proxy-resolver" + +typedef struct _GProxyResolverInterface GProxyResolverInterface; + +struct _GProxyResolverInterface { + GTypeInterface g_iface; + + /* Virtual Table */ + gboolean (* is_supported) (GProxyResolver *resolver); + + gchar ** (* lookup) (GProxyResolver *resolver, + const gchar *uri, + GCancellable *cancellable, + GError **error); + + void (* lookup_async) (GProxyResolver *resolver, + const gchar *uri, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + gchar ** (* lookup_finish) (GProxyResolver *resolver, + GAsyncResult *result, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_proxy_resolver_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GProxyResolver *g_proxy_resolver_get_default (void); + +GLIB_AVAILABLE_IN_ALL +gboolean g_proxy_resolver_is_supported (GProxyResolver *resolver); +GLIB_AVAILABLE_IN_ALL +gchar **g_proxy_resolver_lookup (GProxyResolver *resolver, + const gchar *uri, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_proxy_resolver_lookup_async (GProxyResolver *resolver, + const gchar *uri, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gchar **g_proxy_resolver_lookup_finish (GProxyResolver *resolver, + GAsyncResult *result, + GError **error); + + +G_END_DECLS + +#endif /* __G_PROXY_RESOLVER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gremoteactiongroup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gremoteactiongroup.h new file mode 100644 index 0000000..aa72c3e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gremoteactiongroup.h @@ -0,0 +1,77 @@ +/* + * Copyright © 2011 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_REMOTE_ACTION_GROUP_H__ +#define __G_REMOTE_ACTION_GROUP_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +#define G_TYPE_REMOTE_ACTION_GROUP (g_remote_action_group_get_type ()) +#define G_REMOTE_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_REMOTE_ACTION_GROUP, GRemoteActionGroup)) +#define G_IS_REMOTE_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_REMOTE_ACTION_GROUP)) +#define G_REMOTE_ACTION_GROUP_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ + G_TYPE_REMOTE_ACTION_GROUP, \ + GRemoteActionGroupInterface)) + +typedef struct _GRemoteActionGroupInterface GRemoteActionGroupInterface; + +struct _GRemoteActionGroupInterface +{ + GTypeInterface g_iface; + + void (* activate_action_full) (GRemoteActionGroup *remote, + const gchar *action_name, + GVariant *parameter, + GVariant *platform_data); + + void (* change_action_state_full) (GRemoteActionGroup *remote, + const gchar *action_name, + GVariant *value, + GVariant *platform_data); +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_remote_action_group_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +void g_remote_action_group_activate_action_full (GRemoteActionGroup *remote, + const gchar *action_name, + GVariant *parameter, + GVariant *platform_data); + +GLIB_AVAILABLE_IN_2_32 +void g_remote_action_group_change_action_state_full (GRemoteActionGroup *remote, + const gchar *action_name, + GVariant *value, + GVariant *platform_data); + +G_END_DECLS + +#endif /* __G_REMOTE_ACTION_GROUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gresolver.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gresolver.h new file mode 100644 index 0000000..e5f4661 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gresolver.h @@ -0,0 +1,294 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Red Hat, Inc. + * Copyright (C) 2018 Igalia S.L. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_RESOLVER_H__ +#define __G_RESOLVER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_RESOLVER (g_resolver_get_type ()) +#define G_RESOLVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_RESOLVER, GResolver)) +#define G_RESOLVER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_RESOLVER, GResolverClass)) +#define G_IS_RESOLVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_RESOLVER)) +#define G_IS_RESOLVER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_RESOLVER)) +#define G_RESOLVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_RESOLVER, GResolverClass)) + +typedef struct _GResolverPrivate GResolverPrivate; +typedef struct _GResolverClass GResolverClass; + +struct _GResolver { + GObject parent_instance; + + GResolverPrivate *priv; +}; + +/** + * GResolverNameLookupFlags: + * @G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT: default behavior (same as g_resolver_lookup_by_name()) + * @G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY: only resolve ipv4 addresses + * @G_RESOLVER_NAME_LOOKUP_FLAGS_IPV6_ONLY: only resolve ipv6 addresses + * + * Flags to modify lookup behavior. + * + * Since: 2.60 + */ +typedef enum { + G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT = 0, + G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY = 1 << 0, + G_RESOLVER_NAME_LOOKUP_FLAGS_IPV6_ONLY = 1 << 1, +} GResolverNameLookupFlags; + +struct _GResolverClass { + GObjectClass parent_class; + + /* Signals */ + void ( *reload) (GResolver *resolver); + + /* Virtual methods */ + GList * ( *lookup_by_name) (GResolver *resolver, + const gchar *hostname, + GCancellable *cancellable, + GError **error); + void ( *lookup_by_name_async) (GResolver *resolver, + const gchar *hostname, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GList * ( *lookup_by_name_finish) (GResolver *resolver, + GAsyncResult *result, + GError **error); + + gchar * ( *lookup_by_address) (GResolver *resolver, + GInetAddress *address, + GCancellable *cancellable, + GError **error); + void ( *lookup_by_address_async) (GResolver *resolver, + GInetAddress *address, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gchar * ( *lookup_by_address_finish) (GResolver *resolver, + GAsyncResult *result, + GError **error); + + GList * ( *lookup_service) (GResolver *resolver, + const gchar *rrname, + GCancellable *cancellable, + GError **error); + void ( *lookup_service_async) (GResolver *resolver, + const gchar *rrname, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GList * ( *lookup_service_finish) (GResolver *resolver, + GAsyncResult *result, + GError **error); + + GList * ( *lookup_records) (GResolver *resolver, + const gchar *rrname, + GResolverRecordType record_type, + GCancellable *cancellable, + GError **error); + + void ( *lookup_records_async) (GResolver *resolver, + const gchar *rrname, + GResolverRecordType record_type, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GList * ( *lookup_records_finish) (GResolver *resolver, + GAsyncResult *result, + GError **error); + /** + * GResolverClass::lookup_by_name_with_flags_async: + * @resolver: a #GResolver + * @hostname: the hostname to resolve + * @flags: extra #GResolverNameLookupFlags to modify the lookup + * @cancellable: (nullable): a #GCancellable + * @callback: (scope async): a #GAsyncReadyCallback to call when completed + * @user_data: (closure): data to pass to @callback + * + * Asynchronous version of GResolverClass::lookup_by_name_with_flags + * + * GResolverClass::lookup_by_name_with_flags_finish will be called to get + * the result. + * + * Since: 2.60 + */ + void ( *lookup_by_name_with_flags_async) (GResolver *resolver, + const gchar *hostname, + GResolverNameLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + /** + * GResolverClass::lookup_by_name_with_flags_finish: + * @resolver: a #GResolver + * @result: a #GAsyncResult + * @error: (nullable): a pointer to a %NULL #GError + * + * Gets the result from GResolverClass::lookup_by_name_with_flags_async + * + * Returns: (element-type GInetAddress) (transfer full): List of #GInetAddress. + * Since: 2.60 + */ + GList * ( *lookup_by_name_with_flags_finish) (GResolver *resolver, + GAsyncResult *result, + GError **error); + /** + * GResolverClass::lookup_by_name_with_flags: + * @resolver: a #GResolver + * @hostname: the hostname to resolve + * @flags: extra #GResolverNameLookupFlags to modify the lookup + * @cancellable: (nullable): a #GCancellable + * @error: (nullable): a pointer to a %NULL #GError + * + * This is identical to GResolverClass::lookup_by_name except it takes + * @flags which modifies the behavior of the lookup. See #GResolverNameLookupFlags + * for more details. + * + * Returns: (element-type GInetAddress) (transfer full): List of #GInetAddress. + * Since: 2.60 + */ + GList * ( *lookup_by_name_with_flags) (GResolver *resolver, + const gchar *hostname, + GResolverNameLookupFlags flags, + GCancellable *cancellable, + GError **error); + +}; + +GLIB_AVAILABLE_IN_ALL +GType g_resolver_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GResolver *g_resolver_get_default (void); +GLIB_AVAILABLE_IN_ALL +void g_resolver_set_default (GResolver *resolver); +GLIB_AVAILABLE_IN_ALL +GList *g_resolver_lookup_by_name (GResolver *resolver, + const gchar *hostname, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_resolver_lookup_by_name_async (GResolver *resolver, + const gchar *hostname, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GList *g_resolver_lookup_by_name_finish (GResolver *resolver, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_2_60 +void g_resolver_lookup_by_name_with_flags_async (GResolver *resolver, + const gchar *hostname, + GResolverNameLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_60 +GList *g_resolver_lookup_by_name_with_flags_finish (GResolver *resolver, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_2_60 +GList *g_resolver_lookup_by_name_with_flags (GResolver *resolver, + const gchar *hostname, + GResolverNameLookupFlags flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_resolver_free_addresses (GList *addresses); +GLIB_AVAILABLE_IN_ALL +gchar *g_resolver_lookup_by_address (GResolver *resolver, + GInetAddress *address, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_resolver_lookup_by_address_async (GResolver *resolver, + GInetAddress *address, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gchar *g_resolver_lookup_by_address_finish (GResolver *resolver, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +GList *g_resolver_lookup_service (GResolver *resolver, + const gchar *service, + const gchar *protocol, + const gchar *domain, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_resolver_lookup_service_async (GResolver *resolver, + const gchar *service, + const gchar *protocol, + const gchar *domain, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GList *g_resolver_lookup_service_finish (GResolver *resolver, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_2_34 +GList *g_resolver_lookup_records (GResolver *resolver, + const gchar *rrname, + GResolverRecordType record_type, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_34 +void g_resolver_lookup_records_async (GResolver *resolver, + const gchar *rrname, + GResolverRecordType record_type, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_34 +GList *g_resolver_lookup_records_finish (GResolver *resolver, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_resolver_free_targets (GList *targets); + + +/** + * G_RESOLVER_ERROR: + * + * Error domain for #GResolver. Errors in this domain will be from the + * #GResolverError enumeration. See #GError for more information on + * error domains. + */ +#define G_RESOLVER_ERROR (g_resolver_error_quark ()) +GLIB_AVAILABLE_IN_ALL +GQuark g_resolver_error_quark (void); + +G_END_DECLS + +#endif /* __G_RESOLVER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gresource.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gresource.h new file mode 100644 index 0000000..fe1610a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gresource.h @@ -0,0 +1,132 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_RESOURCE_H__ +#define __G_RESOURCE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_TYPE_RESOURCE: + * + * The #GType for #GResource. + */ +#define G_TYPE_RESOURCE (g_resource_get_type ()) + + +/** + * G_RESOURCE_ERROR: + * + * Error domain for #GResource. Errors in this domain will be from the + * #GResourceError enumeration. See #GError for more information on + * error domains. + */ +#define G_RESOURCE_ERROR (g_resource_error_quark ()) +GLIB_AVAILABLE_IN_2_32 +GQuark g_resource_error_quark (void); + +typedef struct _GStaticResource GStaticResource; + +struct _GStaticResource { + /*< private >*/ + const guint8 *data; + gsize data_len; + GResource *resource; + GStaticResource *next; + gpointer padding; +}; + +GLIB_AVAILABLE_IN_2_32 +GType g_resource_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_32 +GResource * g_resource_new_from_data (GBytes *data, + GError **error); +GLIB_AVAILABLE_IN_2_32 +GResource * g_resource_ref (GResource *resource); +GLIB_AVAILABLE_IN_2_32 +void g_resource_unref (GResource *resource); +GLIB_AVAILABLE_IN_2_32 +GResource * g_resource_load (const gchar *filename, + GError **error); +GLIB_AVAILABLE_IN_2_32 +GInputStream *g_resource_open_stream (GResource *resource, + const char *path, + GResourceLookupFlags lookup_flags, + GError **error); +GLIB_AVAILABLE_IN_2_32 +GBytes * g_resource_lookup_data (GResource *resource, + const char *path, + GResourceLookupFlags lookup_flags, + GError **error); +GLIB_AVAILABLE_IN_2_32 +char ** g_resource_enumerate_children (GResource *resource, + const char *path, + GResourceLookupFlags lookup_flags, + GError **error); +GLIB_AVAILABLE_IN_2_32 +gboolean g_resource_get_info (GResource *resource, + const char *path, + GResourceLookupFlags lookup_flags, + gsize *size, + guint32 *flags, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +void g_resources_register (GResource *resource); +GLIB_AVAILABLE_IN_2_32 +void g_resources_unregister (GResource *resource); +GLIB_AVAILABLE_IN_2_32 +GInputStream *g_resources_open_stream (const char *path, + GResourceLookupFlags lookup_flags, + GError **error); +GLIB_AVAILABLE_IN_2_32 +GBytes * g_resources_lookup_data (const char *path, + GResourceLookupFlags lookup_flags, + GError **error); +GLIB_AVAILABLE_IN_2_32 +char ** g_resources_enumerate_children (const char *path, + GResourceLookupFlags lookup_flags, + GError **error); +GLIB_AVAILABLE_IN_2_32 +gboolean g_resources_get_info (const char *path, + GResourceLookupFlags lookup_flags, + gsize *size, + guint32 *flags, + GError **error); + + +GLIB_AVAILABLE_IN_2_32 +void g_static_resource_init (GStaticResource *static_resource); +GLIB_AVAILABLE_IN_2_32 +void g_static_resource_fini (GStaticResource *static_resource); +GLIB_AVAILABLE_IN_2_32 +GResource *g_static_resource_get_resource (GStaticResource *static_resource); + +G_END_DECLS + +#endif /* __G_RESOURCE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gseekable.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gseekable.h new file mode 100644 index 0000000..efc2d49 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gseekable.h @@ -0,0 +1,105 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_SEEKABLE_H__ +#define __G_SEEKABLE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SEEKABLE (g_seekable_get_type ()) +#define G_SEEKABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable)) +#define G_IS_SEEKABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE)) +#define G_SEEKABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface)) + +/** + * GSeekable: + * + * Seek object for streaming operations. + **/ +typedef struct _GSeekableIface GSeekableIface; + +/** + * GSeekableIface: + * @g_iface: The parent interface. + * @tell: Tells the current location within a stream. + * @can_seek: Checks if seeking is supported by the stream. + * @seek: Seeks to a location within a stream. + * @can_truncate: Checks if truncation is supported by the stream. + * @truncate_fn: Truncates a stream. + * + * Provides an interface for implementing seekable functionality on I/O Streams. + **/ +struct _GSeekableIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + goffset (* tell) (GSeekable *seekable); + + gboolean (* can_seek) (GSeekable *seekable); + gboolean (* seek) (GSeekable *seekable, + goffset offset, + GSeekType type, + GCancellable *cancellable, + GError **error); + + gboolean (* can_truncate) (GSeekable *seekable); + gboolean (* truncate_fn) (GSeekable *seekable, + goffset offset, + GCancellable *cancellable, + GError **error); + + /* TODO: Async seek/truncate */ +}; + +GLIB_AVAILABLE_IN_ALL +GType g_seekable_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +goffset g_seekable_tell (GSeekable *seekable); +GLIB_AVAILABLE_IN_ALL +gboolean g_seekable_can_seek (GSeekable *seekable); +GLIB_AVAILABLE_IN_ALL +gboolean g_seekable_seek (GSeekable *seekable, + goffset offset, + GSeekType type, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_seekable_can_truncate (GSeekable *seekable); +GLIB_AVAILABLE_IN_ALL +gboolean g_seekable_truncate (GSeekable *seekable, + goffset offset, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + + +#endif /* __G_SEEKABLE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettings.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettings.h new file mode 100644 index 0000000..e238618 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettings.h @@ -0,0 +1,347 @@ +/* + * Copyright © 2009, 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_SETTINGS_H__ +#define __G_SETTINGS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_SETTINGS (g_settings_get_type ()) +#define G_SETTINGS(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SETTINGS, GSettings)) +#define G_SETTINGS_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SETTINGS, GSettingsClass)) +#define G_IS_SETTINGS(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_SETTINGS)) +#define G_IS_SETTINGS_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_SETTINGS)) +#define G_SETTINGS_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SETTINGS, GSettingsClass)) + +typedef struct _GSettingsPrivate GSettingsPrivate; +typedef struct _GSettingsClass GSettingsClass; + +struct _GSettingsClass +{ + GObjectClass parent_class; + + /* Signals */ + void (*writable_changed) (GSettings *settings, + const gchar *key); + void (*changed) (GSettings *settings, + const gchar *key); + gboolean (*writable_change_event) (GSettings *settings, + GQuark key); + gboolean (*change_event) (GSettings *settings, + const GQuark *keys, + gint n_keys); + + gpointer padding[20]; +}; + +struct _GSettings +{ + GObject parent_instance; + GSettingsPrivate *priv; +}; + + +GLIB_AVAILABLE_IN_ALL +GType g_settings_get_type (void); + +GLIB_DEPRECATED_IN_2_40_FOR(g_settings_schema_source_list_schemas) +const gchar * const * g_settings_list_schemas (void); +GLIB_DEPRECATED_IN_2_40_FOR(g_settings_schema_source_list_schemas) +const gchar * const * g_settings_list_relocatable_schemas (void); +GLIB_AVAILABLE_IN_ALL +GSettings * g_settings_new (const gchar *schema_id); +GLIB_AVAILABLE_IN_ALL +GSettings * g_settings_new_with_path (const gchar *schema_id, + const gchar *path); +GLIB_AVAILABLE_IN_ALL +GSettings * g_settings_new_with_backend (const gchar *schema_id, + GSettingsBackend *backend); +GLIB_AVAILABLE_IN_ALL +GSettings * g_settings_new_with_backend_and_path (const gchar *schema_id, + GSettingsBackend *backend, + const gchar *path); +GLIB_AVAILABLE_IN_2_32 +GSettings * g_settings_new_full (GSettingsSchema *schema, + GSettingsBackend *backend, + const gchar *path); +GLIB_AVAILABLE_IN_ALL +gchar ** g_settings_list_children (GSettings *settings); +GLIB_DEPRECATED_IN_2_46_FOR(g_settings_schema_list_keys) +gchar ** g_settings_list_keys (GSettings *settings); +GLIB_DEPRECATED_IN_2_40_FOR(g_settings_schema_key_get_range) +GVariant * g_settings_get_range (GSettings *settings, + const gchar *key); +GLIB_DEPRECATED_IN_2_40_FOR(g_settings_schema_key_range_check) +gboolean g_settings_range_check (GSettings *settings, + const gchar *key, + GVariant *value); + +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_value (GSettings *settings, + const gchar *key, + GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_settings_get_value (GSettings *settings, + const gchar *key); + +GLIB_AVAILABLE_IN_2_40 +GVariant * g_settings_get_user_value (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_2_40 +GVariant * g_settings_get_default_value (GSettings *settings, + const gchar *key); + +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set (GSettings *settings, + const gchar *key, + const gchar *format, + ...); +GLIB_AVAILABLE_IN_ALL +void g_settings_get (GSettings *settings, + const gchar *key, + const gchar *format, + ...); +GLIB_AVAILABLE_IN_ALL +void g_settings_reset (GSettings *settings, + const gchar *key); + +GLIB_AVAILABLE_IN_ALL +gint g_settings_get_int (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_int (GSettings *settings, + const gchar *key, + gint value); +GLIB_AVAILABLE_IN_2_50 +gint64 g_settings_get_int64 (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_2_50 +gboolean g_settings_set_int64 (GSettings *settings, + const gchar *key, + gint64 value); +GLIB_AVAILABLE_IN_2_32 +guint g_settings_get_uint (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_2_32 +gboolean g_settings_set_uint (GSettings *settings, + const gchar *key, + guint value); +GLIB_AVAILABLE_IN_2_50 +guint64 g_settings_get_uint64 (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_2_50 +gboolean g_settings_set_uint64 (GSettings *settings, + const gchar *key, + guint64 value); +GLIB_AVAILABLE_IN_ALL +gchar * g_settings_get_string (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_string (GSettings *settings, + const gchar *key, + const gchar *value); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_get_boolean (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_boolean (GSettings *settings, + const gchar *key, + gboolean value); +GLIB_AVAILABLE_IN_ALL +gdouble g_settings_get_double (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_double (GSettings *settings, + const gchar *key, + gdouble value); +GLIB_AVAILABLE_IN_ALL +gchar ** g_settings_get_strv (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_strv (GSettings *settings, + const gchar *key, + const gchar *const *value); +GLIB_AVAILABLE_IN_ALL +gint g_settings_get_enum (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_enum (GSettings *settings, + const gchar *key, + gint value); +GLIB_AVAILABLE_IN_ALL +guint g_settings_get_flags (GSettings *settings, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_set_flags (GSettings *settings, + const gchar *key, + guint value); +GLIB_AVAILABLE_IN_ALL +GSettings * g_settings_get_child (GSettings *settings, + const gchar *name); + +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_is_writable (GSettings *settings, + const gchar *name); + +GLIB_AVAILABLE_IN_ALL +void g_settings_delay (GSettings *settings); +GLIB_AVAILABLE_IN_ALL +void g_settings_apply (GSettings *settings); +GLIB_AVAILABLE_IN_ALL +void g_settings_revert (GSettings *settings); +GLIB_AVAILABLE_IN_ALL +gboolean g_settings_get_has_unapplied (GSettings *settings); +GLIB_AVAILABLE_IN_ALL +void g_settings_sync (void); + +/** + * GSettingsBindSetMapping: + * @value: a #GValue containing the property value to map + * @expected_type: the #GVariantType to create + * @user_data: user data that was specified when the binding was created + * + * The type for the function that is used to convert an object property + * value to a #GVariant for storing it in #GSettings. + * + * Returns: a new #GVariant holding the data from @value, + * or %NULL in case of an error + */ +typedef GVariant * (*GSettingsBindSetMapping) (const GValue *value, + const GVariantType *expected_type, + gpointer user_data); + +/** + * GSettingsBindGetMapping: + * @value: return location for the property value + * @variant: the #GVariant + * @user_data: user data that was specified when the binding was created + * + * The type for the function that is used to convert from #GSettings to + * an object property. The @value is already initialized to hold values + * of the appropriate type. + * + * Returns: %TRUE if the conversion succeeded, %FALSE in case of an error + */ +typedef gboolean (*GSettingsBindGetMapping) (GValue *value, + GVariant *variant, + gpointer user_data); + +/** + * GSettingsGetMapping: + * @value: the #GVariant to map, or %NULL + * @result: (out): the result of the mapping + * @user_data: (closure): the user data that was passed to + * g_settings_get_mapped() + * + * The type of the function that is used to convert from a value stored + * in a #GSettings to a value that is useful to the application. + * + * If the value is successfully mapped, the result should be stored at + * @result and %TRUE returned. If mapping fails (for example, if @value + * is not in the right format) then %FALSE should be returned. + * + * If @value is %NULL then it means that the mapping function is being + * given a "last chance" to successfully return a valid value. %TRUE + * must be returned in this case. + * + * Returns: %TRUE if the conversion succeeded, %FALSE in case of an error + **/ +typedef gboolean (*GSettingsGetMapping) (GVariant *value, + gpointer *result, + gpointer user_data); + +/** + * GSettingsBindFlags: + * @G_SETTINGS_BIND_DEFAULT: Equivalent to `G_SETTINGS_BIND_GET|G_SETTINGS_BIND_SET` + * @G_SETTINGS_BIND_GET: Update the #GObject property when the setting changes. + * It is an error to use this flag if the property is not writable. + * @G_SETTINGS_BIND_SET: Update the setting when the #GObject property changes. + * It is an error to use this flag if the property is not readable. + * @G_SETTINGS_BIND_NO_SENSITIVITY: Do not try to bind a "sensitivity" property to the writability of the setting + * @G_SETTINGS_BIND_GET_NO_CHANGES: When set in addition to %G_SETTINGS_BIND_GET, set the #GObject property + * value initially from the setting, but do not listen for changes of the setting + * @G_SETTINGS_BIND_INVERT_BOOLEAN: When passed to g_settings_bind(), uses a pair of mapping functions that invert + * the boolean value when mapping between the setting and the property. The setting and property must both + * be booleans. You cannot pass this flag to g_settings_bind_with_mapping(). + * + * Flags used when creating a binding. These flags determine in which + * direction the binding works. The default is to synchronize in both + * directions. + */ +typedef enum +{ + G_SETTINGS_BIND_DEFAULT, + G_SETTINGS_BIND_GET = (1<<0), + G_SETTINGS_BIND_SET = (1<<1), + G_SETTINGS_BIND_NO_SENSITIVITY = (1<<2), + G_SETTINGS_BIND_GET_NO_CHANGES = (1<<3), + G_SETTINGS_BIND_INVERT_BOOLEAN = (1<<4) +} GSettingsBindFlags; + +GLIB_AVAILABLE_IN_ALL +void g_settings_bind (GSettings *settings, + const gchar *key, + gpointer object, + const gchar *property, + GSettingsBindFlags flags); +GLIB_AVAILABLE_IN_ALL +void g_settings_bind_with_mapping (GSettings *settings, + const gchar *key, + gpointer object, + const gchar *property, + GSettingsBindFlags flags, + GSettingsBindGetMapping get_mapping, + GSettingsBindSetMapping set_mapping, + gpointer user_data, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_ALL +void g_settings_bind_writable (GSettings *settings, + const gchar *key, + gpointer object, + const gchar *property, + gboolean inverted); +GLIB_AVAILABLE_IN_ALL +void g_settings_unbind (gpointer object, + const gchar *property); + +GLIB_AVAILABLE_IN_2_32 +GAction * g_settings_create_action (GSettings *settings, + const gchar *key); + +GLIB_AVAILABLE_IN_ALL +gpointer g_settings_get_mapped (GSettings *settings, + const gchar *key, + GSettingsGetMapping mapping, + gpointer user_data); + +G_END_DECLS + +#endif /* __G_SETTINGS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettingsbackend.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettingsbackend.h new file mode 100644 index 0000000..d73211c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettingsbackend.h @@ -0,0 +1,176 @@ +/* + * Copyright © 2009, 2010 Codethink Limited + * Copyright © 2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Authors: Ryan Lortie + * Matthias Clasen + */ + +#ifndef __G_SETTINGS_BACKEND_H__ +#define __G_SETTINGS_BACKEND_H__ + +#if !defined (G_SETTINGS_ENABLE_BACKEND) && !defined (GIO_COMPILATION) +#error "You must define G_SETTINGS_ENABLE_BACKEND before including ." +#endif + +#define __GIO_GIO_H_INSIDE__ +#include +#undef __GIO_GIO_H_INSIDE__ + +G_BEGIN_DECLS + +#define G_TYPE_SETTINGS_BACKEND (g_settings_backend_get_type ()) +#define G_SETTINGS_BACKEND(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SETTINGS_BACKEND, GSettingsBackend)) +#define G_SETTINGS_BACKEND_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SETTINGS_BACKEND, GSettingsBackendClass)) +#define G_IS_SETTINGS_BACKEND(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SETTINGS_BACKEND)) +#define G_IS_SETTINGS_BACKEND_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SETTINGS_BACKEND)) +#define G_SETTINGS_BACKEND_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SETTINGS_BACKEND, GSettingsBackendClass)) + +/** + * G_SETTINGS_BACKEND_EXTENSION_POINT_NAME: + * + * Extension point for #GSettingsBackend functionality. + **/ +#define G_SETTINGS_BACKEND_EXTENSION_POINT_NAME "gsettings-backend" + +/** + * GSettingsBackend: + * + * An implementation of a settings storage repository. + **/ +typedef struct _GSettingsBackendPrivate GSettingsBackendPrivate; +typedef struct _GSettingsBackendClass GSettingsBackendClass; + +/** + * GSettingsBackendClass: + * @read: virtual method to read a key's value + * @get_writable: virtual method to get if a key is writable + * @write: virtual method to change key's value + * @write_tree: virtual method to change a tree of keys + * @reset: virtual method to reset state + * @subscribe: virtual method to subscribe to key changes + * @unsubscribe: virtual method to unsubscribe to key changes + * @sync: virtual method to sync state + * @get_permission: virtual method to get permission of a key + * @read_user_value: virtual method to read user's key value + * + * Class structure for #GSettingsBackend. + */ +struct _GSettingsBackendClass +{ + GObjectClass parent_class; + + GVariant * (*read) (GSettingsBackend *backend, + const gchar *key, + const GVariantType *expected_type, + gboolean default_value); + + gboolean (*get_writable) (GSettingsBackend *backend, + const gchar *key); + + gboolean (*write) (GSettingsBackend *backend, + const gchar *key, + GVariant *value, + gpointer origin_tag); + gboolean (*write_tree) (GSettingsBackend *backend, + GTree *tree, + gpointer origin_tag); + void (*reset) (GSettingsBackend *backend, + const gchar *key, + gpointer origin_tag); + + void (*subscribe) (GSettingsBackend *backend, + const gchar *name); + void (*unsubscribe) (GSettingsBackend *backend, + const gchar *name); + void (*sync) (GSettingsBackend *backend); + + GPermission * (*get_permission) (GSettingsBackend *backend, + const gchar *path); + + GVariant * (*read_user_value) (GSettingsBackend *backend, + const gchar *key, + const GVariantType *expected_type); + + /*< private >*/ + gpointer padding[23]; +}; + +struct _GSettingsBackend +{ + GObject parent_instance; + + /*< private >*/ + GSettingsBackendPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_settings_backend_get_type (void); + +GLIB_AVAILABLE_IN_ALL +void g_settings_backend_changed (GSettingsBackend *backend, + const gchar *key, + gpointer origin_tag); +GLIB_AVAILABLE_IN_ALL +void g_settings_backend_path_changed (GSettingsBackend *backend, + const gchar *path, + gpointer origin_tag); +GLIB_AVAILABLE_IN_ALL +void g_settings_backend_flatten_tree (GTree *tree, + gchar **path, + const gchar ***keys, + GVariant ***values); +GLIB_AVAILABLE_IN_ALL +void g_settings_backend_keys_changed (GSettingsBackend *backend, + const gchar *path, + gchar const * const *items, + gpointer origin_tag); + +GLIB_AVAILABLE_IN_ALL +void g_settings_backend_path_writable_changed (GSettingsBackend *backend, + const gchar *path); +GLIB_AVAILABLE_IN_ALL +void g_settings_backend_writable_changed (GSettingsBackend *backend, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +void g_settings_backend_changed_tree (GSettingsBackend *backend, + GTree *tree, + gpointer origin_tag); + +GLIB_AVAILABLE_IN_ALL +GSettingsBackend * g_settings_backend_get_default (void); + +GLIB_AVAILABLE_IN_ALL +GSettingsBackend * g_keyfile_settings_backend_new (const gchar *filename, + const gchar *root_path, + const gchar *root_group); + +GLIB_AVAILABLE_IN_ALL +GSettingsBackend * g_null_settings_backend_new (void); + +GLIB_AVAILABLE_IN_ALL +GSettingsBackend * g_memory_settings_backend_new (void); + +G_END_DECLS + +#endif /* __G_SETTINGS_BACKEND_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettingsschema.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettingsschema.h new file mode 100644 index 0000000..ff2da29 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsettingsschema.h @@ -0,0 +1,114 @@ +/* + * Copyright © 2010 Codethink Limited + * Copyright © 2011 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_SETTINGS_SCHEMA_H__ +#define __G_SETTINGS_SCHEMA_H__ + +#include + +G_BEGIN_DECLS + +typedef struct _GSettingsSchemaSource GSettingsSchemaSource; +typedef struct _GSettingsSchema GSettingsSchema; +typedef struct _GSettingsSchemaKey GSettingsSchemaKey; + +#define G_TYPE_SETTINGS_SCHEMA_SOURCE (g_settings_schema_source_get_type ()) +GLIB_AVAILABLE_IN_2_32 +GType g_settings_schema_source_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +GSettingsSchemaSource * g_settings_schema_source_get_default (void); +GLIB_AVAILABLE_IN_2_32 +GSettingsSchemaSource * g_settings_schema_source_ref (GSettingsSchemaSource *source); +GLIB_AVAILABLE_IN_2_32 +void g_settings_schema_source_unref (GSettingsSchemaSource *source); + +GLIB_AVAILABLE_IN_2_32 +GSettingsSchemaSource * g_settings_schema_source_new_from_directory (const gchar *directory, + GSettingsSchemaSource *parent, + gboolean trusted, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +GSettingsSchema * g_settings_schema_source_lookup (GSettingsSchemaSource *source, + const gchar *schema_id, + gboolean recursive); + +GLIB_AVAILABLE_IN_2_40 +void g_settings_schema_source_list_schemas (GSettingsSchemaSource *source, + gboolean recursive, + gchar ***non_relocatable, + gchar ***relocatable); + +#define G_TYPE_SETTINGS_SCHEMA (g_settings_schema_get_type ()) +GLIB_AVAILABLE_IN_2_32 +GType g_settings_schema_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +GSettingsSchema * g_settings_schema_ref (GSettingsSchema *schema); +GLIB_AVAILABLE_IN_2_32 +void g_settings_schema_unref (GSettingsSchema *schema); + +GLIB_AVAILABLE_IN_2_32 +const gchar * g_settings_schema_get_id (GSettingsSchema *schema); +GLIB_AVAILABLE_IN_2_32 +const gchar * g_settings_schema_get_path (GSettingsSchema *schema); +GLIB_AVAILABLE_IN_2_40 +GSettingsSchemaKey * g_settings_schema_get_key (GSettingsSchema *schema, + const gchar *name); +GLIB_AVAILABLE_IN_2_40 +gboolean g_settings_schema_has_key (GSettingsSchema *schema, + const gchar *name); +GLIB_AVAILABLE_IN_2_46 +gchar** g_settings_schema_list_keys (GSettingsSchema *schema); + + +GLIB_AVAILABLE_IN_2_44 +gchar ** g_settings_schema_list_children (GSettingsSchema *schema); + +#define G_TYPE_SETTINGS_SCHEMA_KEY (g_settings_schema_key_get_type ()) +GLIB_AVAILABLE_IN_2_40 +GType g_settings_schema_key_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_40 +GSettingsSchemaKey * g_settings_schema_key_ref (GSettingsSchemaKey *key); +GLIB_AVAILABLE_IN_2_40 +void g_settings_schema_key_unref (GSettingsSchemaKey *key); + +GLIB_AVAILABLE_IN_2_40 +const GVariantType * g_settings_schema_key_get_value_type (GSettingsSchemaKey *key); +GLIB_AVAILABLE_IN_2_40 +GVariant * g_settings_schema_key_get_default_value (GSettingsSchemaKey *key); +GLIB_AVAILABLE_IN_2_40 +GVariant * g_settings_schema_key_get_range (GSettingsSchemaKey *key); +GLIB_AVAILABLE_IN_2_40 +gboolean g_settings_schema_key_range_check (GSettingsSchemaKey *key, + GVariant *value); + +GLIB_AVAILABLE_IN_2_44 +const gchar * g_settings_schema_key_get_name (GSettingsSchemaKey *key); +GLIB_AVAILABLE_IN_2_40 +const gchar * g_settings_schema_key_get_summary (GSettingsSchemaKey *key); +GLIB_AVAILABLE_IN_2_40 +const gchar * g_settings_schema_key_get_description (GSettingsSchemaKey *key); + +G_END_DECLS + +#endif /* __G_SETTINGS_SCHEMA_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleaction.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleaction.h new file mode 100644 index 0000000..ff6111e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleaction.h @@ -0,0 +1,65 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_SIMPLE_ACTION_H__ +#define __G_SIMPLE_ACTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SIMPLE_ACTION (g_simple_action_get_type ()) +#define G_SIMPLE_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SIMPLE_ACTION, GSimpleAction)) +#define G_IS_SIMPLE_ACTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SIMPLE_ACTION)) + +GLIB_AVAILABLE_IN_ALL +GType g_simple_action_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSimpleAction * g_simple_action_new (const gchar *name, + const GVariantType *parameter_type); + +GLIB_AVAILABLE_IN_ALL +GSimpleAction * g_simple_action_new_stateful (const gchar *name, + const GVariantType *parameter_type, + GVariant *state); + +GLIB_AVAILABLE_IN_ALL +void g_simple_action_set_enabled (GSimpleAction *simple, + gboolean enabled); + +GLIB_AVAILABLE_IN_2_30 +void g_simple_action_set_state (GSimpleAction *simple, + GVariant *value); + +GLIB_AVAILABLE_IN_2_44 +void g_simple_action_set_state_hint (GSimpleAction *simple, + GVariant *state_hint); + +G_END_DECLS + +#endif /* __G_SIMPLE_ACTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleactiongroup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleactiongroup.h new file mode 100644 index 0000000..770e61e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleactiongroup.h @@ -0,0 +1,99 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_SIMPLE_ACTION_GROUP_H__ +#define __G_SIMPLE_ACTION_GROUP_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include "gactiongroup.h" +#include "gactionmap.h" + +G_BEGIN_DECLS + +#define G_TYPE_SIMPLE_ACTION_GROUP (g_simple_action_group_get_type ()) +#define G_SIMPLE_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SIMPLE_ACTION_GROUP, GSimpleActionGroup)) +#define G_SIMPLE_ACTION_GROUP_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SIMPLE_ACTION_GROUP, GSimpleActionGroupClass)) +#define G_IS_SIMPLE_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SIMPLE_ACTION_GROUP)) +#define G_IS_SIMPLE_ACTION_GROUP_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SIMPLE_ACTION_GROUP)) +#define G_SIMPLE_ACTION_GROUP_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SIMPLE_ACTION_GROUP, GSimpleActionGroupClass)) + +typedef struct _GSimpleActionGroupPrivate GSimpleActionGroupPrivate; +typedef struct _GSimpleActionGroupClass GSimpleActionGroupClass; + +/** + * GSimpleActionGroup: + * + * The #GSimpleActionGroup structure contains private data and should only be accessed using the provided API. + * + * Since: 2.28 + */ +struct _GSimpleActionGroup +{ + /*< private >*/ + GObject parent_instance; + + GSimpleActionGroupPrivate *priv; +}; + +struct _GSimpleActionGroupClass +{ + /*< private >*/ + GObjectClass parent_class; + + /*< private >*/ + gpointer padding[12]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_simple_action_group_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSimpleActionGroup * g_simple_action_group_new (void); + +GLIB_DEPRECATED_IN_2_38_FOR (g_action_map_lookup_action) +GAction * g_simple_action_group_lookup (GSimpleActionGroup *simple, + const gchar *action_name); + +GLIB_DEPRECATED_IN_2_38_FOR (g_action_map_add_action) +void g_simple_action_group_insert (GSimpleActionGroup *simple, + GAction *action); + +GLIB_DEPRECATED_IN_2_38_FOR (g_action_map_remove_action) +void g_simple_action_group_remove (GSimpleActionGroup *simple, + const gchar *action_name); + +GLIB_DEPRECATED_IN_2_38_FOR (g_action_map_add_action_entries) +void g_simple_action_group_add_entries (GSimpleActionGroup *simple, + const GActionEntry *entries, + gint n_entries, + gpointer user_data); + +G_END_DECLS + +#endif /* __G_SIMPLE_ACTION_GROUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleasyncresult.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleasyncresult.h new file mode 100644 index 0000000..a9de564 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleasyncresult.h @@ -0,0 +1,164 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_SIMPLE_ASYNC_RESULT_H__ +#define __G_SIMPLE_ASYNC_RESULT_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SIMPLE_ASYNC_RESULT (g_simple_async_result_get_type ()) +#define G_SIMPLE_ASYNC_RESULT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SIMPLE_ASYNC_RESULT, GSimpleAsyncResult)) +#define G_SIMPLE_ASYNC_RESULT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SIMPLE_ASYNC_RESULT, GSimpleAsyncResultClass)) +#define G_IS_SIMPLE_ASYNC_RESULT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SIMPLE_ASYNC_RESULT)) +#define G_IS_SIMPLE_ASYNC_RESULT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SIMPLE_ASYNC_RESULT)) +#define G_SIMPLE_ASYNC_RESULT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SIMPLE_ASYNC_RESULT, GSimpleAsyncResultClass)) + +/** + * GSimpleAsyncResult: + * + * A simple implementation of #GAsyncResult. + **/ +typedef struct _GSimpleAsyncResultClass GSimpleAsyncResultClass; + + +GLIB_AVAILABLE_IN_ALL +GType g_simple_async_result_get_type (void) G_GNUC_CONST; + +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) +GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object, + GAsyncReadyCallback callback, + gpointer user_data, + gpointer source_tag); +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) +GSimpleAsyncResult *g_simple_async_result_new_error (GObject *source_object, + GAsyncReadyCallback callback, + gpointer user_data, + GQuark domain, + gint code, + const char *format, + ...) G_GNUC_PRINTF (6, 7); +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) +GSimpleAsyncResult *g_simple_async_result_new_from_error (GObject *source_object, + GAsyncReadyCallback callback, + gpointer user_data, + const GError *error); +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) +GSimpleAsyncResult *g_simple_async_result_new_take_error (GObject *source_object, + GAsyncReadyCallback callback, + gpointer user_data, + GError *error); + +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple, + gpointer op_res, + GDestroyNotify destroy_op_res); +GLIB_DEPRECATED_IN_2_46 +gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple); + +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_set_op_res_gssize (GSimpleAsyncResult *simple, + gssize op_res); +GLIB_DEPRECATED_IN_2_46 +gssize g_simple_async_result_get_op_res_gssize (GSimpleAsyncResult *simple); + +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple, + gboolean op_res); +GLIB_DEPRECATED_IN_2_46 +gboolean g_simple_async_result_get_op_res_gboolean (GSimpleAsyncResult *simple); + + + +GLIB_AVAILABLE_IN_2_32 /* Also deprecated, but can't mark something both AVAILABLE and DEPRECATED */ +void g_simple_async_result_set_check_cancellable (GSimpleAsyncResult *simple, + GCancellable *check_cancellable); +GLIB_DEPRECATED_IN_2_46 +gpointer g_simple_async_result_get_source_tag (GSimpleAsyncResult *simple); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_set_handle_cancellation (GSimpleAsyncResult *simple, + gboolean handle_cancellation); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_complete (GSimpleAsyncResult *simple); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_run_in_thread (GSimpleAsyncResult *simple, + GSimpleAsyncThreadFunc func, + int io_priority, + GCancellable *cancellable); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_set_from_error (GSimpleAsyncResult *simple, + const GError *error); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_take_error (GSimpleAsyncResult *simple, + GError *error); +GLIB_DEPRECATED_IN_2_46 +gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple, + GError **dest); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_set_error (GSimpleAsyncResult *simple, + GQuark domain, + gint code, + const char *format, + ...) G_GNUC_PRINTF (4, 5); +GLIB_DEPRECATED_IN_2_46 +void g_simple_async_result_set_error_va (GSimpleAsyncResult *simple, + GQuark domain, + gint code, + const char *format, + va_list args) + G_GNUC_PRINTF(4, 0); +GLIB_DEPRECATED_IN_2_46 +gboolean g_simple_async_result_is_valid (GAsyncResult *result, + GObject *source, + gpointer source_tag); + +GLIB_DEPRECATED_IN_2_46_FOR(g_task_report_error) +void g_simple_async_report_error_in_idle (GObject *object, + GAsyncReadyCallback callback, + gpointer user_data, + GQuark domain, + gint code, + const char *format, + ...) G_GNUC_PRINTF(6, 7); +GLIB_DEPRECATED_IN_2_46_FOR(g_task_report_error) +void g_simple_async_report_gerror_in_idle (GObject *object, + GAsyncReadyCallback callback, + gpointer user_data, + const GError *error); +GLIB_DEPRECATED_IN_2_46_FOR(g_task_report_error) +void g_simple_async_report_take_gerror_in_idle (GObject *object, + GAsyncReadyCallback callback, + gpointer user_data, + GError *error); + +G_END_DECLS + + + +#endif /* __G_SIMPLE_ASYNC_RESULT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleiostream.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleiostream.h new file mode 100644 index 0000000..0f3334e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleiostream.h @@ -0,0 +1,47 @@ +/* + * Copyright © 2014 NICE s.r.l. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ignacio Casal Quinteiro + */ + +#ifndef __G_SIMPLE_IO_STREAM_H__ +#define __G_SIMPLE_IO_STREAM_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_SIMPLE_IO_STREAM (g_simple_io_stream_get_type ()) +#define G_SIMPLE_IO_STREAM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SIMPLE_IO_STREAM, GSimpleIOStream)) +#define G_IS_SIMPLE_IO_STREAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SIMPLE_IO_STREAM)) + +GLIB_AVAILABLE_IN_2_44 +GType g_simple_io_stream_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_44 +GIOStream *g_simple_io_stream_new (GInputStream *input_stream, + GOutputStream *output_stream); + +G_END_DECLS + +#endif /* __G_SIMPLE_IO_STREAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimplepermission.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimplepermission.h new file mode 100644 index 0000000..d6abf9e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimplepermission.h @@ -0,0 +1,47 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_SIMPLE_PERMISSION_H__ +#define __G_SIMPLE_PERMISSION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SIMPLE_PERMISSION (g_simple_permission_get_type ()) +#define G_SIMPLE_PERMISSION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SIMPLE_PERMISSION, \ + GSimplePermission)) +#define G_IS_SIMPLE_PERMISSION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SIMPLE_PERMISSION)) + +GLIB_AVAILABLE_IN_ALL +GType g_simple_permission_get_type (void); +GLIB_AVAILABLE_IN_ALL +GPermission * g_simple_permission_new (gboolean allowed); + +G_END_DECLS + +#endif /* __G_SIMPLE_PERMISSION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleproxyresolver.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleproxyresolver.h new file mode 100644 index 0000000..f9e7a13 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsimpleproxyresolver.h @@ -0,0 +1,91 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2010, 2013 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_SIMPLE_PROXY_RESOLVER_H__ +#define __G_SIMPLE_PROXY_RESOLVER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SIMPLE_PROXY_RESOLVER (g_simple_proxy_resolver_get_type ()) +#define G_SIMPLE_PROXY_RESOLVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SIMPLE_PROXY_RESOLVER, GSimpleProxyResolver)) +#define G_SIMPLE_PROXY_RESOLVER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SIMPLE_PROXY_RESOLVER, GSimpleProxyResolverClass)) +#define G_IS_SIMPLE_PROXY_RESOLVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SIMPLE_PROXY_RESOLVER)) +#define G_IS_SIMPLE_PROXY_RESOLVER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SIMPLE_PROXY_RESOLVER)) +#define G_SIMPLE_PROXY_RESOLVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SIMPLE_PROXY_RESOLVER, GSimpleProxyResolverClass)) + +/** + * GSimpleProxyResolver: + * + * A #GProxyResolver implementation for using a fixed set of proxies. + **/ +typedef struct _GSimpleProxyResolver GSimpleProxyResolver; +typedef struct _GSimpleProxyResolverPrivate GSimpleProxyResolverPrivate; +typedef struct _GSimpleProxyResolverClass GSimpleProxyResolverClass; + +struct _GSimpleProxyResolver +{ + GObject parent_instance; + + /*< private >*/ + GSimpleProxyResolverPrivate *priv; +}; + +struct _GSimpleProxyResolverClass +{ + GObjectClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +GLIB_AVAILABLE_IN_2_36 +GType g_simple_proxy_resolver_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_36 +GProxyResolver *g_simple_proxy_resolver_new (const gchar *default_proxy, + gchar **ignore_hosts); + +GLIB_AVAILABLE_IN_2_36 +void g_simple_proxy_resolver_set_default_proxy (GSimpleProxyResolver *resolver, + const gchar *default_proxy); + +GLIB_AVAILABLE_IN_2_36 +void g_simple_proxy_resolver_set_ignore_hosts (GSimpleProxyResolver *resolver, + gchar **ignore_hosts); + +GLIB_AVAILABLE_IN_2_36 +void g_simple_proxy_resolver_set_uri_proxy (GSimpleProxyResolver *resolver, + const gchar *uri_scheme, + const gchar *proxy); + +G_END_DECLS + +#endif /* __G_SIMPLE_PROXY_RESOLVER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocket.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocket.h new file mode 100644 index 0000000..95674d6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocket.h @@ -0,0 +1,330 @@ +/* + * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima + * Copyright © 2009 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + * Ryan Lortie + */ + +#ifndef __G_SOCKET_H__ +#define __G_SOCKET_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET (g_socket_get_type ()) +#define G_SOCKET(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SOCKET, GSocket)) +#define G_SOCKET_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SOCKET, GSocketClass)) +#define G_IS_SOCKET(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SOCKET)) +#define G_IS_SOCKET_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SOCKET)) +#define G_SOCKET_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SOCKET, GSocketClass)) + +typedef struct _GSocketPrivate GSocketPrivate; +typedef struct _GSocketClass GSocketClass; + +struct _GSocketClass +{ + GObjectClass parent_class; + + /*< private >*/ + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); + void (*_g_reserved7) (void); + void (*_g_reserved8) (void); + void (*_g_reserved9) (void); + void (*_g_reserved10) (void); +}; + +struct _GSocket +{ + GObject parent_instance; + GSocketPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GSocket * g_socket_new (GSocketFamily family, + GSocketType type, + GSocketProtocol protocol, + GError **error); +GLIB_AVAILABLE_IN_ALL +GSocket * g_socket_new_from_fd (gint fd, + GError **error); +GLIB_AVAILABLE_IN_ALL +int g_socket_get_fd (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +GSocketFamily g_socket_get_family (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +GSocketType g_socket_get_socket_type (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +GSocketProtocol g_socket_get_protocol (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +GSocketAddress * g_socket_get_local_address (GSocket *socket, + GError **error); +GLIB_AVAILABLE_IN_ALL +GSocketAddress * g_socket_get_remote_address (GSocket *socket, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_socket_set_blocking (GSocket *socket, + gboolean blocking); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_get_blocking (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +void g_socket_set_keepalive (GSocket *socket, + gboolean keepalive); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_get_keepalive (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +gint g_socket_get_listen_backlog (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +void g_socket_set_listen_backlog (GSocket *socket, + gint backlog); +GLIB_AVAILABLE_IN_ALL +guint g_socket_get_timeout (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +void g_socket_set_timeout (GSocket *socket, + guint timeout); + +GLIB_AVAILABLE_IN_2_32 +guint g_socket_get_ttl (GSocket *socket); +GLIB_AVAILABLE_IN_2_32 +void g_socket_set_ttl (GSocket *socket, + guint ttl); + +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_get_broadcast (GSocket *socket); +GLIB_AVAILABLE_IN_2_32 +void g_socket_set_broadcast (GSocket *socket, + gboolean broadcast); + +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_get_multicast_loopback (GSocket *socket); +GLIB_AVAILABLE_IN_2_32 +void g_socket_set_multicast_loopback (GSocket *socket, + gboolean loopback); +GLIB_AVAILABLE_IN_2_32 +guint g_socket_get_multicast_ttl (GSocket *socket); +GLIB_AVAILABLE_IN_2_32 +void g_socket_set_multicast_ttl (GSocket *socket, + guint ttl); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_is_connected (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_bind (GSocket *socket, + GSocketAddress *address, + gboolean allow_reuse, + GError **error); +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_join_multicast_group (GSocket *socket, + GInetAddress *group, + gboolean source_specific, + const gchar *iface, + GError **error); +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_leave_multicast_group (GSocket *socket, + GInetAddress *group, + gboolean source_specific, + const gchar *iface, + GError **error); +GLIB_AVAILABLE_IN_2_56 +gboolean g_socket_join_multicast_group_ssm (GSocket *socket, + GInetAddress *group, + GInetAddress *source_specific, + const gchar *iface, + GError **error); +GLIB_AVAILABLE_IN_2_56 +gboolean g_socket_leave_multicast_group_ssm (GSocket *socket, + GInetAddress *group, + GInetAddress *source_specific, + const gchar *iface, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_connect (GSocket *socket, + GSocketAddress *address, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_check_connect_result (GSocket *socket, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gssize g_socket_get_available_bytes (GSocket *socket); + +GLIB_AVAILABLE_IN_ALL +GIOCondition g_socket_condition_check (GSocket *socket, + GIOCondition condition); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_condition_wait (GSocket *socket, + GIOCondition condition, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_condition_timed_wait (GSocket *socket, + GIOCondition condition, + gint64 timeout_us, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GSocket * g_socket_accept (GSocket *socket, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_listen (GSocket *socket, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_socket_receive (GSocket *socket, + gchar *buffer, + gsize size, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_socket_receive_from (GSocket *socket, + GSocketAddress **address, + gchar *buffer, + gsize size, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_socket_send (GSocket *socket, + const gchar *buffer, + gsize size, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_socket_send_to (GSocket *socket, + GSocketAddress *address, + const gchar *buffer, + gsize size, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_socket_receive_message (GSocket *socket, + GSocketAddress **address, + GInputVector *vectors, + gint num_vectors, + GSocketControlMessage ***messages, + gint *num_messages, + gint *flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_socket_send_message (GSocket *socket, + GSocketAddress *address, + GOutputVector *vectors, + gint num_vectors, + GSocketControlMessage **messages, + gint num_messages, + gint flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +gint g_socket_receive_messages (GSocket *socket, + GInputMessage *messages, + guint num_messages, + gint flags, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_44 +gint g_socket_send_messages (GSocket *socket, + GOutputMessage *messages, + guint num_messages, + gint flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_close (GSocket *socket, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_shutdown (GSocket *socket, + gboolean shutdown_read, + gboolean shutdown_write, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_is_closed (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +GSource * g_socket_create_source (GSocket *socket, + GIOCondition condition, + GCancellable *cancellable); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_speaks_ipv4 (GSocket *socket); +GLIB_AVAILABLE_IN_ALL +GCredentials *g_socket_get_credentials (GSocket *socket, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gssize g_socket_receive_with_blocking (GSocket *socket, + gchar *buffer, + gsize size, + gboolean blocking, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gssize g_socket_send_with_blocking (GSocket *socket, + const gchar *buffer, + gsize size, + gboolean blocking, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_60 +GPollableReturn g_socket_send_message_with_timeout (GSocket *socket, + GSocketAddress *address, + const GOutputVector *vectors, + gint num_vectors, + GSocketControlMessage **messages, + gint num_messages, + gint flags, + gint64 timeout_us, + gsize *bytes_written, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_36 +gboolean g_socket_get_option (GSocket *socket, + gint level, + gint optname, + gint *value, + GError **error); +GLIB_AVAILABLE_IN_2_36 +gboolean g_socket_set_option (GSocket *socket, + gint level, + gint optname, + gint value, + GError **error); + +G_END_DECLS + +#endif /* __G_SOCKET_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketaddress.h new file mode 100644 index 0000000..5c2079b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketaddress.h @@ -0,0 +1,84 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + */ + +#ifndef __G_SOCKET_ADDRESS_H__ +#define __G_SOCKET_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_ADDRESS (g_socket_address_get_type ()) +#define G_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SOCKET_ADDRESS, GSocketAddress)) +#define G_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SOCKET_ADDRESS, GSocketAddressClass)) +#define G_IS_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SOCKET_ADDRESS)) +#define G_IS_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SOCKET_ADDRESS)) +#define G_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SOCKET_ADDRESS, GSocketAddressClass)) + +typedef struct _GSocketAddressClass GSocketAddressClass; + +struct _GSocketAddress +{ + GObject parent_instance; +}; + +struct _GSocketAddressClass +{ + GObjectClass parent_class; + + GSocketFamily (*get_family) (GSocketAddress *address); + + gssize (*get_native_size) (GSocketAddress *address); + + gboolean (*to_native) (GSocketAddress *address, + gpointer dest, + gsize destlen, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketFamily g_socket_address_get_family (GSocketAddress *address); + +GLIB_AVAILABLE_IN_ALL +GSocketAddress * g_socket_address_new_from_native (gpointer native, + gsize len); + +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_address_to_native (GSocketAddress *address, + gpointer dest, + gsize destlen, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gssize g_socket_address_get_native_size (GSocketAddress *address); + +G_END_DECLS + +#endif /* __G_SOCKET_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketaddressenumerator.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketaddressenumerator.h new file mode 100644 index 0000000..4806724 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketaddressenumerator.h @@ -0,0 +1,103 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_SOCKET_ADDRESS_ENUMERATOR_H__ +#define __G_SOCKET_ADDRESS_ENUMERATOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_ADDRESS_ENUMERATOR (g_socket_address_enumerator_get_type ()) +#define G_SOCKET_ADDRESS_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SOCKET_ADDRESS_ENUMERATOR, GSocketAddressEnumerator)) +#define G_SOCKET_ADDRESS_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SOCKET_ADDRESS_ENUMERATOR, GSocketAddressEnumeratorClass)) +#define G_IS_SOCKET_ADDRESS_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SOCKET_ADDRESS_ENUMERATOR)) +#define G_IS_SOCKET_ADDRESS_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SOCKET_ADDRESS_ENUMERATOR)) +#define G_SOCKET_ADDRESS_ENUMERATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SOCKET_ADDRESS_ENUMERATOR, GSocketAddressEnumeratorClass)) + +/** + * GSocketAddressEnumerator: + * + * Enumerator type for objects that contain or generate + * #GSocketAddress instances. + */ +typedef struct _GSocketAddressEnumeratorClass GSocketAddressEnumeratorClass; + +struct _GSocketAddressEnumerator +{ + /*< private >*/ + GObject parent_instance; +}; + +/** + * GSocketAddressEnumeratorClass: + * @next: Virtual method for g_socket_address_enumerator_next(). + * @next_async: Virtual method for g_socket_address_enumerator_next_async(). + * @next_finish: Virtual method for g_socket_address_enumerator_next_finish(). + * + * Class structure for #GSocketAddressEnumerator. + */ +struct _GSocketAddressEnumeratorClass +{ + /*< private >*/ + GObjectClass parent_class; + + /*< public >*/ + /* Virtual Table */ + + GSocketAddress * (* next) (GSocketAddressEnumerator *enumerator, + GCancellable *cancellable, + GError **error); + + void (* next_async) (GSocketAddressEnumerator *enumerator, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + GSocketAddress * (* next_finish) (GSocketAddressEnumerator *enumerator, + GAsyncResult *result, + GError **error); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_address_enumerator_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_socket_address_enumerator_next (GSocketAddressEnumerator *enumerator, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_socket_address_enumerator_next_async (GSocketAddressEnumerator *enumerator, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_socket_address_enumerator_next_finish (GSocketAddressEnumerator *enumerator, + GAsyncResult *result, + GError **error); + +G_END_DECLS + + +#endif /* __G_SOCKET_ADDRESS_ENUMERATOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketclient.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketclient.h new file mode 100644 index 0000000..42dc0cc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketclient.h @@ -0,0 +1,199 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2008, 2009 Codethink Limited + * Copyright © 2009 Red Hat, Inc + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + * Alexander Larsson + */ + +#ifndef __G_SOCKET_CLIENT_H__ +#define __G_SOCKET_CLIENT_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_CLIENT (g_socket_client_get_type ()) +#define G_SOCKET_CLIENT(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SOCKET_CLIENT, GSocketClient)) +#define G_SOCKET_CLIENT_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SOCKET_CLIENT, GSocketClientClass)) +#define G_IS_SOCKET_CLIENT(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SOCKET_CLIENT)) +#define G_IS_SOCKET_CLIENT_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SOCKET_CLIENT)) +#define G_SOCKET_CLIENT_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SOCKET_CLIENT, GSocketClientClass)) + +typedef struct _GSocketClientPrivate GSocketClientPrivate; +typedef struct _GSocketClientClass GSocketClientClass; + +struct _GSocketClientClass +{ + GObjectClass parent_class; + + void (* event) (GSocketClient *client, + GSocketClientEvent event, + GSocketConnectable *connectable, + GIOStream *connection); + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); +}; + +struct _GSocketClient +{ + GObject parent_instance; + GSocketClientPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_client_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketClient *g_socket_client_new (void); + +GLIB_AVAILABLE_IN_ALL +GSocketFamily g_socket_client_get_family (GSocketClient *client); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_set_family (GSocketClient *client, + GSocketFamily family); +GLIB_AVAILABLE_IN_ALL +GSocketType g_socket_client_get_socket_type (GSocketClient *client); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_set_socket_type (GSocketClient *client, + GSocketType type); +GLIB_AVAILABLE_IN_ALL +GSocketProtocol g_socket_client_get_protocol (GSocketClient *client); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_set_protocol (GSocketClient *client, + GSocketProtocol protocol); +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_socket_client_get_local_address (GSocketClient *client); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_set_local_address (GSocketClient *client, + GSocketAddress *address); +GLIB_AVAILABLE_IN_ALL +guint g_socket_client_get_timeout (GSocketClient *client); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_set_timeout (GSocketClient *client, + guint timeout); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_client_get_enable_proxy (GSocketClient *client); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_set_enable_proxy (GSocketClient *client, + gboolean enable); + +GLIB_AVAILABLE_IN_2_28 +gboolean g_socket_client_get_tls (GSocketClient *client); +GLIB_AVAILABLE_IN_2_28 +void g_socket_client_set_tls (GSocketClient *client, + gboolean tls); +GLIB_DEPRECATED_IN_2_72 +GTlsCertificateFlags g_socket_client_get_tls_validation_flags (GSocketClient *client); +GLIB_DEPRECATED_IN_2_72 +void g_socket_client_set_tls_validation_flags (GSocketClient *client, + GTlsCertificateFlags flags); +GLIB_AVAILABLE_IN_2_36 +GProxyResolver *g_socket_client_get_proxy_resolver (GSocketClient *client); +GLIB_AVAILABLE_IN_2_36 +void g_socket_client_set_proxy_resolver (GSocketClient *client, + GProxyResolver *proxy_resolver); + +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_client_connect (GSocketClient *client, + GSocketConnectable *connectable, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_client_connect_to_host (GSocketClient *client, + const gchar *host_and_port, + guint16 default_port, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_client_connect_to_service (GSocketClient *client, + const gchar *domain, + const gchar *service, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_26 +GSocketConnection * g_socket_client_connect_to_uri (GSocketClient *client, + const gchar *uri, + guint16 default_port, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_connect_async (GSocketClient *client, + GSocketConnectable *connectable, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_client_connect_finish (GSocketClient *client, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_connect_to_host_async (GSocketClient *client, + const gchar *host_and_port, + guint16 default_port, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_client_connect_to_host_finish (GSocketClient *client, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_socket_client_connect_to_service_async (GSocketClient *client, + const gchar *domain, + const gchar *service, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_client_connect_to_service_finish (GSocketClient *client, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_connect_to_uri_async (GSocketClient *client, + const gchar *uri, + guint16 default_port, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_client_connect_to_uri_finish (GSocketClient *client, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_socket_client_add_application_proxy (GSocketClient *client, + const gchar *protocol); + +G_END_DECLS + +#endif /* __G_SOCKET_CLIENT_H___ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketconnectable.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketconnectable.h new file mode 100644 index 0000000..622b6d4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketconnectable.h @@ -0,0 +1,83 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_SOCKET_CONNECTABLE_H__ +#define __G_SOCKET_CONNECTABLE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_CONNECTABLE (g_socket_connectable_get_type ()) +#define G_SOCKET_CONNECTABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SOCKET_CONNECTABLE, GSocketConnectable)) +#define G_IS_SOCKET_CONNECTABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SOCKET_CONNECTABLE)) +#define G_SOCKET_CONNECTABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SOCKET_CONNECTABLE, GSocketConnectableIface)) + +/** + * GSocketConnectable: + * + * Interface for objects that contain or generate a #GSocketAddress. + */ +typedef struct _GSocketConnectableIface GSocketConnectableIface; + +/** + * GSocketConnectableIface: + * @g_iface: The parent interface. + * @enumerate: Creates a #GSocketAddressEnumerator + * @proxy_enumerate: Creates a #GProxyAddressEnumerator + * @to_string: Format the connectable’s address as a string for debugging. + * Implementing this is optional. (Since: 2.48) + * + * Provides an interface for returning a #GSocketAddressEnumerator + * and #GProxyAddressEnumerator + */ +struct _GSocketConnectableIface +{ + GTypeInterface g_iface; + + /* Virtual Table */ + + GSocketAddressEnumerator * (* enumerate) (GSocketConnectable *connectable); + + GSocketAddressEnumerator * (* proxy_enumerate) (GSocketConnectable *connectable); + + gchar * (* to_string) (GSocketConnectable *connectable); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_connectable_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketAddressEnumerator *g_socket_connectable_enumerate (GSocketConnectable *connectable); + +GLIB_AVAILABLE_IN_ALL +GSocketAddressEnumerator *g_socket_connectable_proxy_enumerate (GSocketConnectable *connectable); + +GLIB_AVAILABLE_IN_2_48 +gchar *g_socket_connectable_to_string (GSocketConnectable *connectable); + +G_END_DECLS + + +#endif /* __G_SOCKET_CONNECTABLE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketconnection.h new file mode 100644 index 0000000..508b67c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketconnection.h @@ -0,0 +1,117 @@ +/* GIO - GLib Input, Output and Streaming Library + * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima + * Copyright © 2009 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + * Ryan Lortie + * Alexander Larsson + */ + +#ifndef __G_SOCKET_CONNECTION_H__ +#define __G_SOCKET_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_CONNECTION (g_socket_connection_get_type ()) +#define G_SOCKET_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SOCKET_CONNECTION, GSocketConnection)) +#define G_SOCKET_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SOCKET_CONNECTION, GSocketConnectionClass)) +#define G_IS_SOCKET_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SOCKET_CONNECTION)) +#define G_IS_SOCKET_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SOCKET_CONNECTION)) +#define G_SOCKET_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SOCKET_CONNECTION, GSocketConnectionClass)) + +typedef struct _GSocketConnectionPrivate GSocketConnectionPrivate; +typedef struct _GSocketConnectionClass GSocketConnectionClass; + +struct _GSocketConnectionClass +{ + GIOStreamClass parent_class; + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); +}; + +struct _GSocketConnection +{ + GIOStream parent_instance; + GSocketConnectionPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_connection_is_connected (GSocketConnection *connection); +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_connection_connect (GSocketConnection *connection, + GSocketAddress *address, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_32 +void g_socket_connection_connect_async (GSocketConnection *connection, + GSocketAddress *address, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_32 +gboolean g_socket_connection_connect_finish (GSocketConnection *connection, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GSocket *g_socket_connection_get_socket (GSocketConnection *connection); +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_socket_connection_get_local_address (GSocketConnection *connection, + GError **error); +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_socket_connection_get_remote_address (GSocketConnection *connection, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_socket_connection_factory_register_type (GType g_type, + GSocketFamily family, + GSocketType type, + gint protocol); +GLIB_AVAILABLE_IN_ALL +GType g_socket_connection_factory_lookup_type (GSocketFamily family, + GSocketType type, + gint protocol_id); +GLIB_AVAILABLE_IN_ALL +GSocketConnection *g_socket_connection_factory_create_connection (GSocket *socket); + +G_END_DECLS + +#endif /* __G_SOCKET_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketcontrolmessage.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketcontrolmessage.h new file mode 100644 index 0000000..a80b1cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketcontrolmessage.h @@ -0,0 +1,113 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2009 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_SOCKET_CONTROL_MESSAGE_H__ +#define __G_SOCKET_CONTROL_MESSAGE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_CONTROL_MESSAGE (g_socket_control_message_get_type ()) +#define G_SOCKET_CONTROL_MESSAGE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SOCKET_CONTROL_MESSAGE, \ + GSocketControlMessage)) +#define G_SOCKET_CONTROL_MESSAGE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SOCKET_CONTROL_MESSAGE, \ + GSocketControlMessageClass)) +#define G_IS_SOCKET_CONTROL_MESSAGE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SOCKET_CONTROL_MESSAGE)) +#define G_IS_SOCKET_CONTROL_MESSAGE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SOCKET_CONTROL_MESSAGE)) +#define G_SOCKET_CONTROL_MESSAGE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SOCKET_CONTROL_MESSAGE, \ + GSocketControlMessageClass)) + +typedef struct _GSocketControlMessagePrivate GSocketControlMessagePrivate; +typedef struct _GSocketControlMessageClass GSocketControlMessageClass; + +/** + * GSocketControlMessageClass: + * @get_size: gets the size of the message. + * @get_level: gets the protocol of the message. + * @get_type: gets the protocol specific type of the message. + * @serialize: Writes out the message data. + * @deserialize: Tries to deserialize a message. + * + * Class structure for #GSocketControlMessage. + **/ + +struct _GSocketControlMessageClass +{ + GObjectClass parent_class; + + gsize (* get_size) (GSocketControlMessage *message); + int (* get_level) (GSocketControlMessage *message); + int (* get_type) (GSocketControlMessage *message); + void (* serialize) (GSocketControlMessage *message, + gpointer data); + GSocketControlMessage *(* deserialize) (int level, + int type, + gsize size, + gpointer data); + + /*< private >*/ + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +struct _GSocketControlMessage +{ + GObject parent_instance; + GSocketControlMessagePrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_control_message_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gsize g_socket_control_message_get_size (GSocketControlMessage *message); +GLIB_AVAILABLE_IN_ALL +int g_socket_control_message_get_level (GSocketControlMessage *message); +GLIB_AVAILABLE_IN_ALL +int g_socket_control_message_get_msg_type (GSocketControlMessage *message); +GLIB_AVAILABLE_IN_ALL +void g_socket_control_message_serialize (GSocketControlMessage *message, + gpointer data); +GLIB_AVAILABLE_IN_ALL +GSocketControlMessage *g_socket_control_message_deserialize (int level, + int type, + gsize size, + gpointer data); + + +G_END_DECLS + +#endif /* __G_SOCKET_CONTROL_MESSAGE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketlistener.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketlistener.h new file mode 100644 index 0000000..9c90d8d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketlistener.h @@ -0,0 +1,157 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima + * Copyright © 2009 Codethink Limited + * Copyright © 2009 Red Hat, Inc + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + * Ryan Lortie + * Alexander Larsson + */ + +#ifndef __G_SOCKET_LISTENER_H__ +#define __G_SOCKET_LISTENER_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_LISTENER (g_socket_listener_get_type ()) +#define G_SOCKET_LISTENER(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SOCKET_LISTENER, GSocketListener)) +#define G_SOCKET_LISTENER_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SOCKET_LISTENER, GSocketListenerClass)) +#define G_IS_SOCKET_LISTENER(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SOCKET_LISTENER)) +#define G_IS_SOCKET_LISTENER_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SOCKET_LISTENER)) +#define G_SOCKET_LISTENER_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SOCKET_LISTENER, GSocketListenerClass)) + +typedef struct _GSocketListenerPrivate GSocketListenerPrivate; +typedef struct _GSocketListenerClass GSocketListenerClass; + +/** + * GSocketListenerClass: + * @changed: virtual method called when the set of socket listened to changes + * + * Class structure for #GSocketListener. + **/ +struct _GSocketListenerClass +{ + GObjectClass parent_class; + + void (* changed) (GSocketListener *listener); + + void (* event) (GSocketListener *listener, + GSocketListenerEvent event, + GSocket *socket); + + /* Padding for future expansion */ + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); +}; + +struct _GSocketListener +{ + GObject parent_instance; + GSocketListenerPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_listener_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketListener * g_socket_listener_new (void); + +GLIB_AVAILABLE_IN_ALL +void g_socket_listener_set_backlog (GSocketListener *listener, + int listen_backlog); + +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_listener_add_socket (GSocketListener *listener, + GSocket *socket, + GObject *source_object, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_listener_add_address (GSocketListener *listener, + GSocketAddress *address, + GSocketType type, + GSocketProtocol protocol, + GObject *source_object, + GSocketAddress **effective_address, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_listener_add_inet_port (GSocketListener *listener, + guint16 port, + GObject *source_object, + GError **error); +GLIB_AVAILABLE_IN_ALL +guint16 g_socket_listener_add_any_inet_port (GSocketListener *listener, + GObject *source_object, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GSocket * g_socket_listener_accept_socket (GSocketListener *listener, + GObject **source_object, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_socket_listener_accept_socket_async (GSocketListener *listener, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSocket * g_socket_listener_accept_socket_finish (GSocketListener *listener, + GAsyncResult *result, + GObject **source_object, + GError **error); + + +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_listener_accept (GSocketListener *listener, + GObject **source_object, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_socket_listener_accept_async (GSocketListener *listener, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GSocketConnection * g_socket_listener_accept_finish (GSocketListener *listener, + GAsyncResult *result, + GObject **source_object, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_socket_listener_close (GSocketListener *listener); + +G_END_DECLS + +#endif /* __G_SOCKET_LISTENER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketservice.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketservice.h new file mode 100644 index 0000000..8ff5325 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsocketservice.h @@ -0,0 +1,95 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2009 Codethink Limited + * Copyright © 2009 Red Hat, Inc + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + * Alexander Larsson + */ + +#ifndef __G_SOCKET_SERVICE_H__ +#define __G_SOCKET_SERVICE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SOCKET_SERVICE (g_socket_service_get_type ()) +#define G_SOCKET_SERVICE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_SOCKET_SERVICE, GSocketService)) +#define G_SOCKET_SERVICE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_SOCKET_SERVICE, GSocketServiceClass)) +#define G_IS_SOCKET_SERVICE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_SOCKET_SERVICE)) +#define G_IS_SOCKET_SERVICE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_SOCKET_SERVICE)) +#define G_SOCKET_SERVICE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_SOCKET_SERVICE, GSocketServiceClass)) + +typedef struct _GSocketServicePrivate GSocketServicePrivate; +typedef struct _GSocketServiceClass GSocketServiceClass; + +/** + * GSocketServiceClass: + * @incoming: signal emitted when new connections are accepted + * + * Class structure for #GSocketService. + */ +struct _GSocketServiceClass +{ + GSocketListenerClass parent_class; + + gboolean (* incoming) (GSocketService *service, + GSocketConnection *connection, + GObject *source_object); + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); +}; + +struct _GSocketService +{ + GSocketListener parent_instance; + GSocketServicePrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_socket_service_get_type (void); + +GLIB_AVAILABLE_IN_ALL +GSocketService *g_socket_service_new (void); +GLIB_AVAILABLE_IN_ALL +void g_socket_service_start (GSocketService *service); +GLIB_AVAILABLE_IN_ALL +void g_socket_service_stop (GSocketService *service); +GLIB_AVAILABLE_IN_ALL +gboolean g_socket_service_is_active (GSocketService *service); + + +G_END_DECLS + +#endif /* __G_SOCKET_SERVICE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsrvtarget.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsrvtarget.h new file mode 100644 index 0000000..027a072 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsrvtarget.h @@ -0,0 +1,60 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_SRV_TARGET_H__ +#define __G_SRV_TARGET_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +GType g_srv_target_get_type (void) G_GNUC_CONST; +#define G_TYPE_SRV_TARGET (g_srv_target_get_type ()) + +GLIB_AVAILABLE_IN_ALL +GSrvTarget *g_srv_target_new (const gchar *hostname, + guint16 port, + guint16 priority, + guint16 weight); +GLIB_AVAILABLE_IN_ALL +GSrvTarget *g_srv_target_copy (GSrvTarget *target); +GLIB_AVAILABLE_IN_ALL +void g_srv_target_free (GSrvTarget *target); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_srv_target_get_hostname (GSrvTarget *target); +GLIB_AVAILABLE_IN_ALL +guint16 g_srv_target_get_port (GSrvTarget *target); +GLIB_AVAILABLE_IN_ALL +guint16 g_srv_target_get_priority (GSrvTarget *target); +GLIB_AVAILABLE_IN_ALL +guint16 g_srv_target_get_weight (GSrvTarget *target); + +GLIB_AVAILABLE_IN_ALL +GList *g_srv_target_list_sort (GList *targets); + +G_END_DECLS + +#endif /* __G_SRV_TARGET_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsubprocess.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsubprocess.h new file mode 100644 index 0000000..5b483c0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsubprocess.h @@ -0,0 +1,169 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2012 Colin Walters + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Colin Walters + */ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __G_SUBPROCESS_H__ +#define __G_SUBPROCESS_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SUBPROCESS (g_subprocess_get_type ()) +#define G_SUBPROCESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SUBPROCESS, GSubprocess)) +#define G_IS_SUBPROCESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SUBPROCESS)) + +GLIB_AVAILABLE_IN_2_40 +GType g_subprocess_get_type (void) G_GNUC_CONST; + +/**** Core API ****/ + +GLIB_AVAILABLE_IN_2_40 +GSubprocess * g_subprocess_new (GSubprocessFlags flags, + GError **error, + const gchar *argv0, + ...) G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_2_40 +GSubprocess * g_subprocess_newv (const gchar * const *argv, + GSubprocessFlags flags, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +GOutputStream * g_subprocess_get_stdin_pipe (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +GInputStream * g_subprocess_get_stdout_pipe (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +GInputStream * g_subprocess_get_stderr_pipe (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +const gchar * g_subprocess_get_identifier (GSubprocess *subprocess); + +#ifdef G_OS_UNIX +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_send_signal (GSubprocess *subprocess, + gint signal_num); +#endif + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_force_exit (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_wait (GSubprocess *subprocess, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_wait_async (GSubprocess *subprocess, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_wait_finish (GSubprocess *subprocess, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_wait_check (GSubprocess *subprocess, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_wait_check_async (GSubprocess *subprocess, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_wait_check_finish (GSubprocess *subprocess, + GAsyncResult *result, + GError **error); + + +GLIB_AVAILABLE_IN_2_40 +gint g_subprocess_get_status (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_get_successful (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_get_if_exited (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +gint g_subprocess_get_exit_status (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_get_if_signaled (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +gint g_subprocess_get_term_sig (GSubprocess *subprocess); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_communicate (GSubprocess *subprocess, + GBytes *stdin_buf, + GCancellable *cancellable, + GBytes **stdout_buf, + GBytes **stderr_buf, + GError **error); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_communicate_async (GSubprocess *subprocess, + GBytes *stdin_buf, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_communicate_finish (GSubprocess *subprocess, + GAsyncResult *result, + GBytes **stdout_buf, + GBytes **stderr_buf, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_communicate_utf8 (GSubprocess *subprocess, + const char *stdin_buf, + GCancellable *cancellable, + char **stdout_buf, + char **stderr_buf, + GError **error); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_communicate_utf8_async (GSubprocess *subprocess, + const char *stdin_buf, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_subprocess_communicate_utf8_finish (GSubprocess *subprocess, + GAsyncResult *result, + char **stdout_buf, + char **stderr_buf, + GError **error); + +G_END_DECLS + +#endif /* __G_SUBPROCESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsubprocesslauncher.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsubprocesslauncher.h new file mode 100644 index 0000000..5719d79 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gsubprocesslauncher.h @@ -0,0 +1,121 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2012,2013 Colin Walters + * Copyright © 2012,2013 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Ryan Lortie + * Author: Colin Walters + */ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __G_SUBPROCESS_LAUNCHER_H__ +#define __G_SUBPROCESS_LAUNCHER_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_SUBPROCESS_LAUNCHER (g_subprocess_launcher_get_type ()) +#define G_SUBPROCESS_LAUNCHER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SUBPROCESS_LAUNCHER, GSubprocessLauncher)) +#define G_IS_SUBPROCESS_LAUNCHER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SUBPROCESS_LAUNCHER)) + +GLIB_AVAILABLE_IN_2_40 +GType g_subprocess_launcher_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_40 +GSubprocessLauncher * g_subprocess_launcher_new (GSubprocessFlags flags); + +GLIB_AVAILABLE_IN_2_40 +GSubprocess * g_subprocess_launcher_spawn (GSubprocessLauncher *self, + GError **error, + const gchar *argv0, + ...) G_GNUC_NULL_TERMINATED; + +GLIB_AVAILABLE_IN_2_40 +GSubprocess * g_subprocess_launcher_spawnv (GSubprocessLauncher *self, + const gchar * const *argv, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_set_environ (GSubprocessLauncher *self, + gchar **env); + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_setenv (GSubprocessLauncher *self, + const gchar *variable, + const gchar *value, + gboolean overwrite); + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_unsetenv (GSubprocessLauncher *self, + const gchar *variable); + +GLIB_AVAILABLE_IN_2_40 +const gchar * g_subprocess_launcher_getenv (GSubprocessLauncher *self, + const gchar *variable); + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_set_cwd (GSubprocessLauncher *self, + const gchar *cwd); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_set_flags (GSubprocessLauncher *self, + GSubprocessFlags flags); + +/* Extended I/O control, only available on UNIX */ +#ifdef G_OS_UNIX +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_set_stdin_file_path (GSubprocessLauncher *self, + const gchar *path); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_take_stdin_fd (GSubprocessLauncher *self, + gint fd); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_set_stdout_file_path (GSubprocessLauncher *self, + const gchar *path); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_take_stdout_fd (GSubprocessLauncher *self, + gint fd); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_set_stderr_file_path (GSubprocessLauncher *self, + const gchar *path); +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_take_stderr_fd (GSubprocessLauncher *self, + gint fd); + +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_take_fd (GSubprocessLauncher *self, + gint source_fd, + gint target_fd); + +GLIB_AVAILABLE_IN_2_68 +void g_subprocess_launcher_close (GSubprocessLauncher *self); + +/* Child setup, only available on UNIX */ +GLIB_AVAILABLE_IN_2_40 +void g_subprocess_launcher_set_child_setup (GSubprocessLauncher *self, + GSpawnChildSetupFunc child_setup, + gpointer user_data, + GDestroyNotify destroy_notify); +#endif + +G_END_DECLS + +#endif /* __G_SUBPROCESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtask.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtask.h new file mode 100644 index 0000000..235e662 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtask.h @@ -0,0 +1,184 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2011 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_TASK_H__ +#define __G_TASK_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TASK (g_task_get_type ()) +#define G_TASK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_TASK, GTask)) +#define G_TASK_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_TASK, GTaskClass)) +#define G_IS_TASK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_TASK)) +#define G_IS_TASK_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_TASK)) +#define G_TASK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_TASK, GTaskClass)) + +typedef struct _GTaskClass GTaskClass; + +GLIB_AVAILABLE_IN_2_36 +GType g_task_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_36 +GTask *g_task_new (gpointer source_object, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer callback_data); + +GLIB_AVAILABLE_IN_2_36 +void g_task_report_error (gpointer source_object, + GAsyncReadyCallback callback, + gpointer callback_data, + gpointer source_tag, + GError *error); +GLIB_AVAILABLE_IN_2_36 +void g_task_report_new_error (gpointer source_object, + GAsyncReadyCallback callback, + gpointer callback_data, + gpointer source_tag, + GQuark domain, + gint code, + const char *format, + ...) G_GNUC_PRINTF(7, 8); + +GLIB_AVAILABLE_IN_2_36 +void g_task_set_task_data (GTask *task, + gpointer task_data, + GDestroyNotify task_data_destroy); +GLIB_AVAILABLE_IN_2_36 +void g_task_set_priority (GTask *task, + gint priority); +GLIB_AVAILABLE_IN_2_36 +void g_task_set_check_cancellable (GTask *task, + gboolean check_cancellable); +GLIB_AVAILABLE_IN_2_36 +void g_task_set_source_tag (GTask *task, + gpointer source_tag); +GLIB_AVAILABLE_IN_2_60 +void g_task_set_name (GTask *task, + const gchar *name); + +/* Macro wrapper to set the task name when setting the source tag. */ +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_60 +#define g_task_set_source_tag(task, tag) G_STMT_START { \ + GTask *_task = (task); \ + (g_task_set_source_tag) (_task, tag); \ + if (g_task_get_name (_task) == NULL) \ + g_task_set_name (_task, G_STRINGIFY (tag)); \ +} G_STMT_END +#endif + +GLIB_AVAILABLE_IN_2_36 +gpointer g_task_get_source_object (GTask *task); +GLIB_AVAILABLE_IN_2_36 +gpointer g_task_get_task_data (GTask *task); +GLIB_AVAILABLE_IN_2_36 +gint g_task_get_priority (GTask *task); +GLIB_AVAILABLE_IN_2_36 +GMainContext *g_task_get_context (GTask *task); +GLIB_AVAILABLE_IN_2_36 +GCancellable *g_task_get_cancellable (GTask *task); +GLIB_AVAILABLE_IN_2_36 +gboolean g_task_get_check_cancellable (GTask *task); +GLIB_AVAILABLE_IN_2_36 +gpointer g_task_get_source_tag (GTask *task); +GLIB_AVAILABLE_IN_2_60 +const gchar *g_task_get_name (GTask *task); + +GLIB_AVAILABLE_IN_2_36 +gboolean g_task_is_valid (gpointer result, + gpointer source_object); + + +typedef void (*GTaskThreadFunc) (GTask *task, + gpointer source_object, + gpointer task_data, + GCancellable *cancellable); +GLIB_AVAILABLE_IN_2_36 +void g_task_run_in_thread (GTask *task, + GTaskThreadFunc task_func); +GLIB_AVAILABLE_IN_2_36 +void g_task_run_in_thread_sync (GTask *task, + GTaskThreadFunc task_func); +GLIB_AVAILABLE_IN_2_36 +gboolean g_task_set_return_on_cancel (GTask *task, + gboolean return_on_cancel); +GLIB_AVAILABLE_IN_2_36 +gboolean g_task_get_return_on_cancel (GTask *task); + +GLIB_AVAILABLE_IN_2_36 +void g_task_attach_source (GTask *task, + GSource *source, + GSourceFunc callback); + + +GLIB_AVAILABLE_IN_2_36 +void g_task_return_pointer (GTask *task, + gpointer result, + GDestroyNotify result_destroy); +GLIB_AVAILABLE_IN_2_36 +void g_task_return_boolean (GTask *task, + gboolean result); +GLIB_AVAILABLE_IN_2_36 +void g_task_return_int (GTask *task, + gssize result); + +GLIB_AVAILABLE_IN_2_36 +void g_task_return_error (GTask *task, + GError *error); +GLIB_AVAILABLE_IN_2_36 +void g_task_return_new_error (GTask *task, + GQuark domain, + gint code, + const char *format, + ...) G_GNUC_PRINTF (4, 5); +GLIB_AVAILABLE_IN_2_64 +void g_task_return_value (GTask *task, + GValue *result); + +GLIB_AVAILABLE_IN_2_36 +gboolean g_task_return_error_if_cancelled (GTask *task); + +GLIB_AVAILABLE_IN_2_36 +gpointer g_task_propagate_pointer (GTask *task, + GError **error); +GLIB_AVAILABLE_IN_2_36 +gboolean g_task_propagate_boolean (GTask *task, + GError **error); +GLIB_AVAILABLE_IN_2_36 +gssize g_task_propagate_int (GTask *task, + GError **error); +GLIB_AVAILABLE_IN_2_64 +gboolean g_task_propagate_value (GTask *task, + GValue *value, + GError **error); +GLIB_AVAILABLE_IN_2_36 +gboolean g_task_had_error (GTask *task); +GLIB_AVAILABLE_IN_2_44 +gboolean g_task_get_completed (GTask *task); + +G_END_DECLS + +#endif /* __G_TASK_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtcpconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtcpconnection.h new file mode 100644 index 0000000..29f6bc0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtcpconnection.h @@ -0,0 +1,71 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2008, 2009 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_TCP_CONNECTION_H__ +#define __G_TCP_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TCP_CONNECTION (g_tcp_connection_get_type ()) +#define G_TCP_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_TCP_CONNECTION, GTcpConnection)) +#define G_TCP_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_TCP_CONNECTION, GTcpConnectionClass)) +#define G_IS_TCP_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_TCP_CONNECTION)) +#define G_IS_TCP_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_TCP_CONNECTION)) +#define G_TCP_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_TCP_CONNECTION, GTcpConnectionClass)) + +typedef struct _GTcpConnectionPrivate GTcpConnectionPrivate; +typedef struct _GTcpConnectionClass GTcpConnectionClass; + +struct _GTcpConnectionClass +{ + GSocketConnectionClass parent_class; +}; + +struct _GTcpConnection +{ + GSocketConnection parent_instance; + GTcpConnectionPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tcp_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +void g_tcp_connection_set_graceful_disconnect (GTcpConnection *connection, + gboolean graceful_disconnect); +GLIB_AVAILABLE_IN_ALL +gboolean g_tcp_connection_get_graceful_disconnect (GTcpConnection *connection); + +G_END_DECLS + +#endif /* __G_TCP_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtcpwrapperconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtcpwrapperconnection.h new file mode 100644 index 0000000..dff4fe7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtcpwrapperconnection.h @@ -0,0 +1,71 @@ +/* GIO - GLib Input, Output and Streaming Library + * Copyright © 2010 Collabora Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Nicolas Dufresne + * + */ + +#ifndef __G_TCP_WRAPPER_CONNECTION_H__ +#define __G_TCP_WRAPPER_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TCP_WRAPPER_CONNECTION (g_tcp_wrapper_connection_get_type ()) +#define G_TCP_WRAPPER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_TCP_WRAPPER_CONNECTION, GTcpWrapperConnection)) +#define G_TCP_WRAPPER_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_TCP_WRAPPER_CONNECTION, GTcpWrapperConnectionClass)) +#define G_IS_TCP_WRAPPER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_TCP_WRAPPER_CONNECTION)) +#define G_IS_TCP_WRAPPER_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_TCP_WRAPPER_CONNECTION)) +#define G_TCP_WRAPPER_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_TCP_WRAPPER_CONNECTION, GTcpWrapperConnectionClass)) + +typedef struct _GTcpWrapperConnectionPrivate GTcpWrapperConnectionPrivate; +typedef struct _GTcpWrapperConnectionClass GTcpWrapperConnectionClass; + +struct _GTcpWrapperConnectionClass +{ + GTcpConnectionClass parent_class; +}; + +struct _GTcpWrapperConnection +{ + GTcpConnection parent_instance; + GTcpWrapperConnectionPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tcp_wrapper_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketConnection *g_tcp_wrapper_connection_new (GIOStream *base_io_stream, + GSocket *socket); +GLIB_AVAILABLE_IN_ALL +GIOStream *g_tcp_wrapper_connection_get_base_io_stream (GTcpWrapperConnection *conn); + +G_END_DECLS + +#endif /* __G_TCP_WRAPPER_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtestdbus.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtestdbus.h new file mode 100644 index 0000000..ccaaa62 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtestdbus.h @@ -0,0 +1,74 @@ +/* GIO testing utilities + * + * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2012 Collabora Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: David Zeuthen + * Xavier Claessens + */ + +#ifndef __G_TEST_DBUS_H__ +#define __G_TEST_DBUS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TEST_DBUS \ + (g_test_dbus_get_type ()) +#define G_TEST_DBUS(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_TEST_DBUS, \ + GTestDBus)) +#define G_IS_TEST_DBUS(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_TEST_DBUS)) + +GLIB_AVAILABLE_IN_2_34 +GType g_test_dbus_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_34 +GTestDBus * g_test_dbus_new (GTestDBusFlags flags); + +GLIB_AVAILABLE_IN_2_34 +GTestDBusFlags g_test_dbus_get_flags (GTestDBus *self); + +GLIB_AVAILABLE_IN_2_34 +const gchar * g_test_dbus_get_bus_address (GTestDBus *self); + +GLIB_AVAILABLE_IN_2_34 +void g_test_dbus_add_service_dir (GTestDBus *self, + const gchar *path); + +GLIB_AVAILABLE_IN_2_34 +void g_test_dbus_up (GTestDBus *self); + +GLIB_AVAILABLE_IN_2_34 +void g_test_dbus_stop (GTestDBus *self); + +GLIB_AVAILABLE_IN_2_34 +void g_test_dbus_down (GTestDBus *self); + +GLIB_AVAILABLE_IN_2_34 +void g_test_dbus_unset (void); + +G_END_DECLS + +#endif /* __G_TEST_DBUS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gthemedicon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gthemedicon.h new file mode 100644 index 0000000..f530639 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gthemedicon.h @@ -0,0 +1,70 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_THEMED_ICON_H__ +#define __G_THEMED_ICON_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_THEMED_ICON (g_themed_icon_get_type ()) +#define G_THEMED_ICON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_THEMED_ICON, GThemedIcon)) +#define G_THEMED_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_THEMED_ICON, GThemedIconClass)) +#define G_IS_THEMED_ICON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_THEMED_ICON)) +#define G_IS_THEMED_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_THEMED_ICON)) +#define G_THEMED_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_THEMED_ICON, GThemedIconClass)) + +/** + * GThemedIcon: + * + * An implementation of #GIcon for themed icons. + **/ +typedef struct _GThemedIconClass GThemedIconClass; + +GLIB_AVAILABLE_IN_ALL +GType g_themed_icon_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GIcon *g_themed_icon_new (const char *iconname); +GLIB_AVAILABLE_IN_ALL +GIcon *g_themed_icon_new_with_default_fallbacks (const char *iconname); +GLIB_AVAILABLE_IN_ALL +GIcon *g_themed_icon_new_from_names (char **iconnames, + int len); +GLIB_AVAILABLE_IN_ALL +void g_themed_icon_prepend_name (GThemedIcon *icon, + const char *iconname); +GLIB_AVAILABLE_IN_ALL +void g_themed_icon_append_name (GThemedIcon *icon, + const char *iconname); + +GLIB_AVAILABLE_IN_ALL +const gchar* const * g_themed_icon_get_names (GThemedIcon *icon); + +G_END_DECLS + +#endif /* __G_THEMED_ICON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gthreadedsocketservice.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gthreadedsocketservice.h new file mode 100644 index 0000000..40ce619 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gthreadedsocketservice.h @@ -0,0 +1,83 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2009 Codethink Limited + * Copyright © 2009 Red Hat, Inc + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + * Alexander Larsson + */ + +#ifndef __G_THREADED_SOCKET_SERVICE_H__ +#define __G_THREADED_SOCKET_SERVICE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_THREADED_SOCKET_SERVICE (g_threaded_socket_service_get_type ()) +#define G_THREADED_SOCKET_SERVICE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_THREADED_SOCKET_SERVICE, \ + GThreadedSocketService)) +#define G_THREADED_SOCKET_SERVICE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_THREADED_SOCKET_SERVICE, \ + GThreadedSocketServiceClass)) +#define G_IS_THREADED_SOCKET_SERVICE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_THREADED_SOCKET_SERVICE)) +#define G_IS_THREADED_SOCKET_SERVICE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_THREADED_SOCKET_SERVICE)) +#define G_THREADED_SOCKET_SERVICE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_THREADED_SOCKET_SERVICE, \ + GThreadedSocketServiceClass)) + +typedef struct _GThreadedSocketServicePrivate GThreadedSocketServicePrivate; +typedef struct _GThreadedSocketServiceClass GThreadedSocketServiceClass; + +struct _GThreadedSocketServiceClass +{ + GSocketServiceClass parent_class; + + gboolean (* run) (GThreadedSocketService *service, + GSocketConnection *connection, + GObject *source_object); + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +struct _GThreadedSocketService +{ + GSocketService parent_instance; + GThreadedSocketServicePrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_threaded_socket_service_get_type (void); +GLIB_AVAILABLE_IN_ALL +GSocketService * g_threaded_socket_service_new (int max_threads); + +G_END_DECLS + +#endif /* __G_THREADED_SOCKET_SERVICE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsbackend.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsbackend.h new file mode 100644 index 0000000..21c931f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsbackend.h @@ -0,0 +1,115 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * Copyright © 2015 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_TLS_BACKEND_H__ +#define __G_TLS_BACKEND_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_TLS_BACKEND_EXTENSION_POINT_NAME: + * + * Extension point for TLS functionality via #GTlsBackend. + * See [Extending GIO][extending-gio]. + */ +#define G_TLS_BACKEND_EXTENSION_POINT_NAME "gio-tls-backend" + +#define G_TYPE_TLS_BACKEND (g_tls_backend_get_type ()) +#define G_TLS_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_TLS_BACKEND, GTlsBackend)) +#define G_IS_TLS_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_TLS_BACKEND)) +#define G_TLS_BACKEND_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_TLS_BACKEND, GTlsBackendInterface)) + +typedef struct _GTlsBackend GTlsBackend; +typedef struct _GTlsBackendInterface GTlsBackendInterface; + +/** + * GTlsBackendInterface: + * @g_iface: The parent interface. + * @supports_tls: returns whether the backend supports TLS. + * @supports_dtls: returns whether the backend supports DTLS + * @get_default_database: returns a default #GTlsDatabase instance. + * @get_certificate_type: returns the #GTlsCertificate implementation type + * @get_client_connection_type: returns the #GTlsClientConnection implementation type + * @get_server_connection_type: returns the #GTlsServerConnection implementation type + * @get_file_database_type: returns the #GTlsFileDatabase implementation type. + * @get_dtls_client_connection_type: returns the #GDtlsClientConnection implementation type + * @get_dtls_server_connection_type: returns the #GDtlsServerConnection implementation type + * + * Provides an interface for describing TLS-related types. + * + * Since: 2.28 + */ +struct _GTlsBackendInterface +{ + GTypeInterface g_iface; + + /* methods */ + gboolean ( *supports_tls) (GTlsBackend *backend); + GType ( *get_certificate_type) (void); + GType ( *get_client_connection_type) (void); + GType ( *get_server_connection_type) (void); + GType ( *get_file_database_type) (void); + GTlsDatabase * ( *get_default_database) (GTlsBackend *backend); + gboolean ( *supports_dtls) (GTlsBackend *backend); + GType ( *get_dtls_client_connection_type) (void); + GType ( *get_dtls_server_connection_type) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_backend_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GTlsBackend * g_tls_backend_get_default (void); + +GLIB_AVAILABLE_IN_ALL +GTlsDatabase * g_tls_backend_get_default_database (GTlsBackend *backend); +GLIB_AVAILABLE_IN_2_60 +void g_tls_backend_set_default_database (GTlsBackend *backend, + GTlsDatabase *database); + +GLIB_AVAILABLE_IN_ALL +gboolean g_tls_backend_supports_tls (GTlsBackend *backend); +GLIB_AVAILABLE_IN_2_48 +gboolean g_tls_backend_supports_dtls (GTlsBackend *backend); + +GLIB_AVAILABLE_IN_ALL +GType g_tls_backend_get_certificate_type (GTlsBackend *backend); +GLIB_AVAILABLE_IN_ALL +GType g_tls_backend_get_client_connection_type (GTlsBackend *backend); +GLIB_AVAILABLE_IN_ALL +GType g_tls_backend_get_server_connection_type (GTlsBackend *backend); +GLIB_AVAILABLE_IN_ALL +GType g_tls_backend_get_file_database_type (GTlsBackend *backend); + +GLIB_AVAILABLE_IN_2_48 +GType g_tls_backend_get_dtls_client_connection_type (GTlsBackend *backend); +GLIB_AVAILABLE_IN_2_48 +GType g_tls_backend_get_dtls_server_connection_type (GTlsBackend *backend); + +G_END_DECLS + +#endif /* __G_TLS_BACKEND_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlscertificate.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlscertificate.h new file mode 100644 index 0000000..6fd6fda --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlscertificate.h @@ -0,0 +1,125 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_TLS_CERTIFICATE_H__ +#define __G_TLS_CERTIFICATE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TLS_CERTIFICATE (g_tls_certificate_get_type ()) +#define G_TLS_CERTIFICATE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_CERTIFICATE, GTlsCertificate)) +#define G_TLS_CERTIFICATE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TLS_CERTIFICATE, GTlsCertificateClass)) +#define G_IS_TLS_CERTIFICATE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_CERTIFICATE)) +#define G_IS_TLS_CERTIFICATE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TLS_CERTIFICATE)) +#define G_TLS_CERTIFICATE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), G_TYPE_TLS_CERTIFICATE, GTlsCertificateClass)) + +typedef struct _GTlsCertificateClass GTlsCertificateClass; +typedef struct _GTlsCertificatePrivate GTlsCertificatePrivate; + +struct _GTlsCertificate { + GObject parent_instance; + + GTlsCertificatePrivate *priv; +}; + +struct _GTlsCertificateClass +{ + GObjectClass parent_class; + + GTlsCertificateFlags (* verify) (GTlsCertificate *cert, + GSocketConnectable *identity, + GTlsCertificate *trusted_ca); + + /*< private >*/ + /* Padding for future expansion */ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_certificate_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GTlsCertificate *g_tls_certificate_new_from_pem (const gchar *data, + gssize length, + GError **error); +GLIB_AVAILABLE_IN_2_72 +GTlsCertificate *g_tls_certificate_new_from_pkcs12 (const guint8 *data, + gsize length, + const gchar *password, + GError **error); +GLIB_AVAILABLE_IN_2_72 +GTlsCertificate *g_tls_certificate_new_from_file_with_password (const gchar *file, + const gchar *password, + GError **error); +GLIB_AVAILABLE_IN_ALL +GTlsCertificate *g_tls_certificate_new_from_file (const gchar *file, + GError **error); +GLIB_AVAILABLE_IN_ALL +GTlsCertificate *g_tls_certificate_new_from_files (const gchar *cert_file, + const gchar *key_file, + GError **error); +GLIB_AVAILABLE_IN_2_68 +GTlsCertificate *g_tls_certificate_new_from_pkcs11_uris (const gchar *pkcs11_uri, + const gchar *private_key_pkcs11_uri, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GList *g_tls_certificate_list_new_from_file (const gchar *file, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificate *g_tls_certificate_get_issuer (GTlsCertificate *cert); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificateFlags g_tls_certificate_verify (GTlsCertificate *cert, + GSocketConnectable *identity, + GTlsCertificate *trusted_ca); + +GLIB_AVAILABLE_IN_2_34 +gboolean g_tls_certificate_is_same (GTlsCertificate *cert_one, + GTlsCertificate *cert_two); + +GLIB_AVAILABLE_IN_2_70 +GDateTime *g_tls_certificate_get_not_valid_before (GTlsCertificate *cert); + +GLIB_AVAILABLE_IN_2_70 +GDateTime *g_tls_certificate_get_not_valid_after (GTlsCertificate *cert); + +GLIB_AVAILABLE_IN_2_70 +gchar *g_tls_certificate_get_subject_name (GTlsCertificate *cert); + +GLIB_AVAILABLE_IN_2_70 +gchar *g_tls_certificate_get_issuer_name (GTlsCertificate *cert); + +GLIB_AVAILABLE_IN_2_70 +GPtrArray *g_tls_certificate_get_dns_names (GTlsCertificate *cert); + +GLIB_AVAILABLE_IN_2_70 +GPtrArray *g_tls_certificate_get_ip_addresses (GTlsCertificate *cert); + +G_END_DECLS + +#endif /* __G_TLS_CERTIFICATE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsclientconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsclientconnection.h new file mode 100644 index 0000000..e75e0cc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsclientconnection.h @@ -0,0 +1,88 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_TLS_CLIENT_CONNECTION_H__ +#define __G_TLS_CLIENT_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TLS_CLIENT_CONNECTION (g_tls_client_connection_get_type ()) +#define G_TLS_CLIENT_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_CLIENT_CONNECTION, GTlsClientConnection)) +#define G_IS_TLS_CLIENT_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_CLIENT_CONNECTION)) +#define G_TLS_CLIENT_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TLS_CLIENT_CONNECTION, GTlsClientConnectionInterface)) + +typedef struct _GTlsClientConnectionInterface GTlsClientConnectionInterface; + +/** + * GTlsClientConnectionInterface: + * @g_iface: The parent interface. + * @copy_session_state: Copies session state from one #GTlsClientConnection to another. + * + * vtable for a #GTlsClientConnection implementation. + * + * Since: 2.26 + */ +struct _GTlsClientConnectionInterface +{ + GTypeInterface g_iface; + + void ( *copy_session_state ) (GTlsClientConnection *conn, + GTlsClientConnection *source); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_client_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GIOStream * g_tls_client_connection_new (GIOStream *base_io_stream, + GSocketConnectable *server_identity, + GError **error); + +GLIB_DEPRECATED_IN_2_72 +GTlsCertificateFlags g_tls_client_connection_get_validation_flags (GTlsClientConnection *conn); +GLIB_DEPRECATED_IN_2_72 +void g_tls_client_connection_set_validation_flags (GTlsClientConnection *conn, + GTlsCertificateFlags flags); +GLIB_AVAILABLE_IN_ALL +GSocketConnectable *g_tls_client_connection_get_server_identity (GTlsClientConnection *conn); +GLIB_AVAILABLE_IN_ALL +void g_tls_client_connection_set_server_identity (GTlsClientConnection *conn, + GSocketConnectable *identity); +GLIB_DEPRECATED_IN_2_56 +gboolean g_tls_client_connection_get_use_ssl3 (GTlsClientConnection *conn); +GLIB_DEPRECATED_IN_2_56 +void g_tls_client_connection_set_use_ssl3 (GTlsClientConnection *conn, + gboolean use_ssl3); +GLIB_AVAILABLE_IN_ALL +GList * g_tls_client_connection_get_accepted_cas (GTlsClientConnection *conn); + +GLIB_AVAILABLE_IN_2_46 +void g_tls_client_connection_copy_session_state (GTlsClientConnection *conn, + GTlsClientConnection *source); + +G_END_DECLS + +#endif /* __G_TLS_CLIENT_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsconnection.h new file mode 100644 index 0000000..ac0ce73 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsconnection.h @@ -0,0 +1,214 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_TLS_CONNECTION_H__ +#define __G_TLS_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TLS_CONNECTION (g_tls_connection_get_type ()) +#define G_TLS_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_CONNECTION, GTlsConnection)) +#define G_TLS_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TLS_CONNECTION, GTlsConnectionClass)) +#define G_IS_TLS_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_CONNECTION)) +#define G_IS_TLS_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TLS_CONNECTION)) +#define G_TLS_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), G_TYPE_TLS_CONNECTION, GTlsConnectionClass)) + +typedef struct _GTlsConnectionClass GTlsConnectionClass; +typedef struct _GTlsConnectionPrivate GTlsConnectionPrivate; + +struct _GTlsConnection { + GIOStream parent_instance; + + GTlsConnectionPrivate *priv; +}; + +/** + * GTlsConnectionClass: + * @parent_class: The parent class. + * @accept_certificate: Check whether to accept a certificate. + * @handshake: Perform a handshake operation. + * @handshake_async: Start an asynchronous handshake operation. + * @handshake_finish: Finish an asynchronous handshake operation. + * @get_binding_data: Retrieve TLS channel binding data (Since: 2.66) + * @get_negotiated_protocol: Get ALPN-negotiated protocol (Since: 2.70) + * + * The class structure for the #GTlsConnection type. + * + * Since: 2.28 + */ +struct _GTlsConnectionClass +{ + GIOStreamClass parent_class; + + /* signals */ + gboolean ( *accept_certificate) (GTlsConnection *connection, + GTlsCertificate *peer_cert, + GTlsCertificateFlags errors); + + /* methods */ + gboolean ( *handshake ) (GTlsConnection *conn, + GCancellable *cancellable, + GError **error); + + void ( *handshake_async ) (GTlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean ( *handshake_finish ) (GTlsConnection *conn, + GAsyncResult *result, + GError **error); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + gboolean ( *get_binding_data) (GTlsConnection *conn, + GTlsChannelBindingType type, + GByteArray *data, + GError **error); +G_GNUC_END_IGNORE_DEPRECATIONS + + const gchar *(*get_negotiated_protocol) (GTlsConnection *conn); + + /*< private >*/ + /* Padding for future expansion */ + gpointer padding[6]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_connection_get_type (void) G_GNUC_CONST; + +GLIB_DEPRECATED +void g_tls_connection_set_use_system_certdb (GTlsConnection *conn, + gboolean use_system_certdb); +GLIB_DEPRECATED +gboolean g_tls_connection_get_use_system_certdb (GTlsConnection *conn); + +GLIB_AVAILABLE_IN_ALL +void g_tls_connection_set_database (GTlsConnection *conn, + GTlsDatabase *database); +GLIB_AVAILABLE_IN_ALL +GTlsDatabase * g_tls_connection_get_database (GTlsConnection *conn); + +GLIB_AVAILABLE_IN_ALL +void g_tls_connection_set_certificate (GTlsConnection *conn, + GTlsCertificate *certificate); +GLIB_AVAILABLE_IN_ALL +GTlsCertificate *g_tls_connection_get_certificate (GTlsConnection *conn); + +GLIB_AVAILABLE_IN_ALL +void g_tls_connection_set_interaction (GTlsConnection *conn, + GTlsInteraction *interaction); +GLIB_AVAILABLE_IN_ALL +GTlsInteraction * g_tls_connection_get_interaction (GTlsConnection *conn); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificate *g_tls_connection_get_peer_certificate (GTlsConnection *conn); +GLIB_AVAILABLE_IN_ALL +GTlsCertificateFlags g_tls_connection_get_peer_certificate_errors (GTlsConnection *conn); + +GLIB_AVAILABLE_IN_ALL +void g_tls_connection_set_require_close_notify (GTlsConnection *conn, + gboolean require_close_notify); +GLIB_AVAILABLE_IN_ALL +gboolean g_tls_connection_get_require_close_notify (GTlsConnection *conn); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_60 +void g_tls_connection_set_rehandshake_mode (GTlsConnection *conn, + GTlsRehandshakeMode mode); +GLIB_DEPRECATED_IN_2_60 +GTlsRehandshakeMode g_tls_connection_get_rehandshake_mode (GTlsConnection *conn); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_2_60 +void g_tls_connection_set_advertised_protocols (GTlsConnection *conn, + const gchar * const *protocols); + +GLIB_AVAILABLE_IN_2_60 +const gchar * g_tls_connection_get_negotiated_protocol (GTlsConnection *conn); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_2_66 +gboolean g_tls_connection_get_channel_binding_data (GTlsConnection *conn, + GTlsChannelBindingType type, + GByteArray *data, + GError **error); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +gboolean g_tls_connection_handshake (GTlsConnection *conn, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_tls_connection_handshake_async (GTlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_tls_connection_handshake_finish (GTlsConnection *conn, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_70 +GTlsProtocolVersion g_tls_connection_get_protocol_version (GTlsConnection *conn); + +GLIB_AVAILABLE_IN_2_70 +gchar * g_tls_connection_get_ciphersuite_name (GTlsConnection *conn); + +/** + * G_TLS_ERROR: + * + * Error domain for TLS. Errors in this domain will be from the + * #GTlsError enumeration. See #GError for more information on error + * domains. + */ +#define G_TLS_ERROR (g_tls_error_quark ()) +GLIB_AVAILABLE_IN_ALL +GQuark g_tls_error_quark (void); + +/** + * G_TLS_CHANNEL_BINDING_ERROR: + * + * Error domain for TLS channel binding. Errors in this domain will be from the + * #GTlsChannelBindingError enumeration. See #GError for more information on error + * domains. + * + * Since: 2.66 + */ +#define G_TLS_CHANNEL_BINDING_ERROR (g_tls_channel_binding_error_quark ()) +GLIB_AVAILABLE_IN_2_66 +GQuark g_tls_channel_binding_error_quark (void); + +/*< protected >*/ +GLIB_AVAILABLE_IN_ALL +gboolean g_tls_connection_emit_accept_certificate (GTlsConnection *conn, + GTlsCertificate *peer_cert, + GTlsCertificateFlags errors); + +G_END_DECLS + +#endif /* __G_TLS_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsdatabase.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsdatabase.h new file mode 100644 index 0000000..9767eca --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsdatabase.h @@ -0,0 +1,249 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Stef Walter + */ + +#ifndef __G_TLS_DATABASE_H__ +#define __G_TLS_DATABASE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER "1.3.6.1.5.5.7.3.1" +#define G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT "1.3.6.1.5.5.7.3.2" + +#define G_TYPE_TLS_DATABASE (g_tls_database_get_type ()) +#define G_TLS_DATABASE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_DATABASE, GTlsDatabase)) +#define G_TLS_DATABASE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TLS_DATABASE, GTlsDatabaseClass)) +#define G_IS_TLS_DATABASE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_DATABASE)) +#define G_IS_TLS_DATABASE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TLS_DATABASE)) +#define G_TLS_DATABASE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), G_TYPE_TLS_DATABASE, GTlsDatabaseClass)) + +typedef struct _GTlsDatabaseClass GTlsDatabaseClass; +typedef struct _GTlsDatabasePrivate GTlsDatabasePrivate; + +struct _GTlsDatabase +{ + GObject parent_instance; + + GTlsDatabasePrivate *priv; +}; + +struct _GTlsDatabaseClass +{ + GObjectClass parent_class; + + /* virtual methods */ + + GTlsCertificateFlags (*verify_chain) (GTlsDatabase *self, + GTlsCertificate *chain, + const gchar *purpose, + GSocketConnectable *identity, + GTlsInteraction *interaction, + GTlsDatabaseVerifyFlags flags, + GCancellable *cancellable, + GError **error); + + void (*verify_chain_async) (GTlsDatabase *self, + GTlsCertificate *chain, + const gchar *purpose, + GSocketConnectable *identity, + GTlsInteraction *interaction, + GTlsDatabaseVerifyFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GTlsCertificateFlags (*verify_chain_finish) (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + + gchar* (*create_certificate_handle) (GTlsDatabase *self, + GTlsCertificate *certificate); + + GTlsCertificate* (*lookup_certificate_for_handle) (GTlsDatabase *self, + const gchar *handle, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GError **error); + + void (*lookup_certificate_for_handle_async) (GTlsDatabase *self, + const gchar *handle, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GTlsCertificate* (*lookup_certificate_for_handle_finish) (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + + GTlsCertificate* (*lookup_certificate_issuer) (GTlsDatabase *self, + GTlsCertificate *certificate, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GError **error); + + void (*lookup_certificate_issuer_async) (GTlsDatabase *self, + GTlsCertificate *certificate, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GTlsCertificate* (*lookup_certificate_issuer_finish) (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + + GList* (*lookup_certificates_issued_by) (GTlsDatabase *self, + GByteArray *issuer_raw_dn, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GError **error); + + void (*lookup_certificates_issued_by_async) (GTlsDatabase *self, + GByteArray *issuer_raw_dn, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GList* (*lookup_certificates_issued_by_finish) (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + gpointer padding[16]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_database_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GTlsCertificateFlags g_tls_database_verify_chain (GTlsDatabase *self, + GTlsCertificate *chain, + const gchar *purpose, + GSocketConnectable *identity, + GTlsInteraction *interaction, + GTlsDatabaseVerifyFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_tls_database_verify_chain_async (GTlsDatabase *self, + GTlsCertificate *chain, + const gchar *purpose, + GSocketConnectable *identity, + GTlsInteraction *interaction, + GTlsDatabaseVerifyFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificateFlags g_tls_database_verify_chain_finish (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gchar* g_tls_database_create_certificate_handle (GTlsDatabase *self, + GTlsCertificate *certificate); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificate* g_tls_database_lookup_certificate_for_handle (GTlsDatabase *self, + const gchar *handle, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_tls_database_lookup_certificate_for_handle_async (GTlsDatabase *self, + const gchar *handle, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificate* g_tls_database_lookup_certificate_for_handle_finish (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificate* g_tls_database_lookup_certificate_issuer (GTlsDatabase *self, + GTlsCertificate *certificate, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_tls_database_lookup_certificate_issuer_async (GTlsDatabase *self, + GTlsCertificate *certificate, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GTlsCertificate* g_tls_database_lookup_certificate_issuer_finish (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GList* g_tls_database_lookup_certificates_issued_by (GTlsDatabase *self, + GByteArray *issuer_raw_dn, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_tls_database_lookup_certificates_issued_by_async (GTlsDatabase *self, + GByteArray *issuer_raw_dn, + GTlsInteraction *interaction, + GTlsDatabaseLookupFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GList* g_tls_database_lookup_certificates_issued_by_finish (GTlsDatabase *self, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#endif /* __G_TLS_DATABASE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsfiledatabase.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsfiledatabase.h new file mode 100644 index 0000000..1eb3dee --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsfiledatabase.h @@ -0,0 +1,60 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * See the included COPYING file for more information. + * + * Author: Stef Walter + */ + +#ifndef __G_TLS_FILE_DATABASE_H__ +#define __G_TLS_FILE_DATABASE_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TLS_FILE_DATABASE (g_tls_file_database_get_type ()) +#define G_TLS_FILE_DATABASE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_FILE_DATABASE, GTlsFileDatabase)) +#define G_IS_TLS_FILE_DATABASE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_FILE_DATABASE)) +#define G_TLS_FILE_DATABASE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TLS_FILE_DATABASE, GTlsFileDatabaseInterface)) + +typedef struct _GTlsFileDatabaseInterface GTlsFileDatabaseInterface; + +/** + * GTlsFileDatabaseInterface: + * @g_iface: The parent interface. + * + * Provides an interface for #GTlsFileDatabase implementations. + * + */ +struct _GTlsFileDatabaseInterface +{ + GTypeInterface g_iface; + + /*< private >*/ + /* Padding for future expansion */ + gpointer padding[8]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_file_database_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GTlsDatabase* g_tls_file_database_new (const gchar *anchors, + GError **error); + +G_END_DECLS + +#endif /* __G_TLS_FILE_DATABASE_H___ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsinteraction.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsinteraction.h new file mode 100644 index 0000000..217d8cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsinteraction.h @@ -0,0 +1,150 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2011 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Stef Walter + */ + +#ifndef __G_TLS_INTERACTION_H__ +#define __G_TLS_INTERACTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TLS_INTERACTION (g_tls_interaction_get_type ()) +#define G_TLS_INTERACTION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_TLS_INTERACTION, GTlsInteraction)) +#define G_TLS_INTERACTION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_TLS_INTERACTION, GTlsInteractionClass)) +#define G_IS_TLS_INTERACTION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_TLS_INTERACTION)) +#define G_IS_TLS_INTERACTION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_TLS_INTERACTION)) +#define G_TLS_INTERACTION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_TLS_INTERACTION, GTlsInteractionClass)) + +typedef struct _GTlsInteractionClass GTlsInteractionClass; +typedef struct _GTlsInteractionPrivate GTlsInteractionPrivate; + +struct _GTlsInteraction +{ + /*< private >*/ + GObject parent_instance; + GTlsInteractionPrivate *priv; +}; + +struct _GTlsInteractionClass +{ + /*< private >*/ + GObjectClass parent_class; + + /*< public >*/ + GTlsInteractionResult (* ask_password) (GTlsInteraction *interaction, + GTlsPassword *password, + GCancellable *cancellable, + GError **error); + + void (* ask_password_async) (GTlsInteraction *interaction, + GTlsPassword *password, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GTlsInteractionResult (* ask_password_finish) (GTlsInteraction *interaction, + GAsyncResult *result, + GError **error); + + GTlsInteractionResult (* request_certificate) (GTlsInteraction *interaction, + GTlsConnection *connection, + GTlsCertificateRequestFlags flags, + GCancellable *cancellable, + GError **error); + + void (* request_certificate_async) (GTlsInteraction *interaction, + GTlsConnection *connection, + GTlsCertificateRequestFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + + GTlsInteractionResult (* request_certificate_finish) (GTlsInteraction *interaction, + GAsyncResult *result, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + gpointer padding[21]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_interaction_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GTlsInteractionResult g_tls_interaction_invoke_ask_password (GTlsInteraction *interaction, + GTlsPassword *password, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +GTlsInteractionResult g_tls_interaction_ask_password (GTlsInteraction *interaction, + GTlsPassword *password, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_tls_interaction_ask_password_async (GTlsInteraction *interaction, + GTlsPassword *password, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GTlsInteractionResult g_tls_interaction_ask_password_finish (GTlsInteraction *interaction, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +GTlsInteractionResult g_tls_interaction_invoke_request_certificate (GTlsInteraction *interaction, + GTlsConnection *connection, + GTlsCertificateRequestFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +GTlsInteractionResult g_tls_interaction_request_certificate (GTlsInteraction *interaction, + GTlsConnection *connection, + GTlsCertificateRequestFlags flags, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_40 +void g_tls_interaction_request_certificate_async (GTlsInteraction *interaction, + GTlsConnection *connection, + GTlsCertificateRequestFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_40 +GTlsInteractionResult g_tls_interaction_request_certificate_finish (GTlsInteraction *interaction, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#endif /* __G_TLS_INTERACTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlspassword.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlspassword.h new file mode 100644 index 0000000..3eaad12 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlspassword.h @@ -0,0 +1,121 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2011 Collabora, Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Stef Walter + */ + +#ifndef __G_TLS_PASSWORD_H__ +#define __G_TLS_PASSWORD_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TLS_PASSWORD (g_tls_password_get_type ()) +#define G_TLS_PASSWORD(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_TLS_PASSWORD, GTlsPassword)) +#define G_TLS_PASSWORD_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_TLS_PASSWORD, GTlsPasswordClass)) +#define G_IS_TLS_PASSWORD(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_TLS_PASSWORD)) +#define G_IS_TLS_PASSWORD_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_TLS_PASSWORD)) +#define G_TLS_PASSWORD_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_TLS_PASSWORD, GTlsPasswordClass)) + +typedef struct _GTlsPasswordClass GTlsPasswordClass; +typedef struct _GTlsPasswordPrivate GTlsPasswordPrivate; + +struct _GTlsPassword +{ + GObject parent_instance; + + GTlsPasswordPrivate *priv; +}; + +/** + * GTlsPasswordClass: + * @get_value: virtual method for g_tls_password_get_value() + * @set_value: virtual method for g_tls_password_set_value() + * @get_default_warning: virtual method for g_tls_password_get_warning() if no + * value has been set using g_tls_password_set_warning() + * + * Class structure for #GTlsPassword. + */ +struct _GTlsPasswordClass +{ + GObjectClass parent_class; + + /* methods */ + + const guchar * ( *get_value) (GTlsPassword *password, + gsize *length); + + void ( *set_value) (GTlsPassword *password, + guchar *value, + gssize length, + GDestroyNotify destroy); + + const gchar* ( *get_default_warning) (GTlsPassword *password); + + /*< private >*/ + /* Padding for future expansion */ + gpointer padding[4]; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_password_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GTlsPassword * g_tls_password_new (GTlsPasswordFlags flags, + const gchar *description); + +GLIB_AVAILABLE_IN_ALL +const guchar * g_tls_password_get_value (GTlsPassword *password, + gsize *length); +GLIB_AVAILABLE_IN_ALL +void g_tls_password_set_value (GTlsPassword *password, + const guchar *value, + gssize length); +GLIB_AVAILABLE_IN_ALL +void g_tls_password_set_value_full (GTlsPassword *password, + guchar *value, + gssize length, + GDestroyNotify destroy); + +GLIB_AVAILABLE_IN_ALL +GTlsPasswordFlags g_tls_password_get_flags (GTlsPassword *password); +GLIB_AVAILABLE_IN_ALL +void g_tls_password_set_flags (GTlsPassword *password, + GTlsPasswordFlags flags); + +GLIB_AVAILABLE_IN_ALL +const gchar* g_tls_password_get_description (GTlsPassword *password); +GLIB_AVAILABLE_IN_ALL +void g_tls_password_set_description (GTlsPassword *password, + const gchar *description); + +GLIB_AVAILABLE_IN_ALL +const gchar * g_tls_password_get_warning (GTlsPassword *password); +GLIB_AVAILABLE_IN_ALL +void g_tls_password_set_warning (GTlsPassword *password, + const gchar *warning); + +G_END_DECLS + +#endif /* __G_TLS_PASSWORD_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsserverconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsserverconnection.h new file mode 100644 index 0000000..d2c8345 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gtlsserverconnection.h @@ -0,0 +1,71 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_TLS_SERVER_CONNECTION_H__ +#define __G_TLS_SERVER_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_TLS_SERVER_CONNECTION (g_tls_server_connection_get_type ()) +#define G_TLS_SERVER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_SERVER_CONNECTION, GTlsServerConnection)) +#define G_IS_TLS_SERVER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_SERVER_CONNECTION)) +#define G_TLS_SERVER_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TLS_SERVER_CONNECTION, GTlsServerConnectionInterface)) + +/** + * GTlsServerConnection: + * + * TLS server-side connection. This is the server-side implementation + * of a #GTlsConnection. + * + * Since: 2.28 + */ +typedef struct _GTlsServerConnectionInterface GTlsServerConnectionInterface; + +/** + * GTlsServerConnectionInterface: + * @g_iface: The parent interface. + * + * vtable for a #GTlsServerConnection implementation. + * + * Since: 2.26 + */ +struct _GTlsServerConnectionInterface +{ + GTypeInterface g_iface; + +}; + +GLIB_AVAILABLE_IN_ALL +GType g_tls_server_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GIOStream * g_tls_server_connection_new (GIOStream *base_io_stream, + GTlsCertificate *certificate, + GError **error); + +G_END_DECLS + +#endif /* __G_TLS_SERVER_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixconnection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixconnection.h new file mode 100644 index 0000000..d5c41cb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixconnection.h @@ -0,0 +1,102 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2009 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_UNIX_CONNECTION_H__ +#define __G_UNIX_CONNECTION_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_UNIX_CONNECTION (g_unix_connection_get_type ()) +#define G_UNIX_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_UNIX_CONNECTION, GUnixConnection)) +#define G_UNIX_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_UNIX_CONNECTION, GUnixConnectionClass)) +#define G_IS_UNIX_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_UNIX_CONNECTION)) +#define G_IS_UNIX_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_UNIX_CONNECTION)) +#define G_UNIX_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_UNIX_CONNECTION, GUnixConnectionClass)) + +typedef struct _GUnixConnection GUnixConnection; +typedef struct _GUnixConnectionPrivate GUnixConnectionPrivate; +typedef struct _GUnixConnectionClass GUnixConnectionClass; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUnixConnection, g_object_unref) + +struct _GUnixConnectionClass +{ + GSocketConnectionClass parent_class; +}; + +struct _GUnixConnection +{ + GSocketConnection parent_instance; + GUnixConnectionPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_unix_connection_get_type (void); + +GLIB_AVAILABLE_IN_ALL +gboolean g_unix_connection_send_fd (GUnixConnection *connection, + gint fd, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gint g_unix_connection_receive_fd (GUnixConnection *connection, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_unix_connection_send_credentials (GUnixConnection *connection, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_32 +void g_unix_connection_send_credentials_async (GUnixConnection *connection, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_32 +gboolean g_unix_connection_send_credentials_finish (GUnixConnection *connection, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +GCredentials *g_unix_connection_receive_credentials (GUnixConnection *connection, + GCancellable *cancellable, + GError **error); +GLIB_AVAILABLE_IN_2_32 +void g_unix_connection_receive_credentials_async (GUnixConnection *connection, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GCredentials *g_unix_connection_receive_credentials_finish (GUnixConnection *connection, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#endif /* __G_UNIX_CONNECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixcredentialsmessage.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixcredentialsmessage.h new file mode 100644 index 0000000..ad70f74 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixcredentialsmessage.h @@ -0,0 +1,89 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2010 Red Hat, Inc. + * Copyright (C) 2009 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: David Zeuthen + */ + +#ifndef __G_UNIX_CREDENTIALS_MESSAGE_H__ +#define __G_UNIX_CREDENTIALS_MESSAGE_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_UNIX_CREDENTIALS_MESSAGE (g_unix_credentials_message_get_type ()) +#define G_UNIX_CREDENTIALS_MESSAGE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_UNIX_CREDENTIALS_MESSAGE, GUnixCredentialsMessage)) +#define G_UNIX_CREDENTIALS_MESSAGE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), G_TYPE_UNIX_CREDENTIALS_MESSAGE, GUnixCredentialsMessageClass)) +#define G_IS_UNIX_CREDENTIALS_MESSAGE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_UNIX_CREDENTIALS_MESSAGE)) +#define G_IS_UNIX_CREDENTIALS_MESSAGE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), G_TYPE_UNIX_CREDENTIALS_MESSAGE)) +#define G_UNIX_CREDENTIALS_MESSAGE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_UNIX_CREDENTIALS_MESSAGE, GUnixCredentialsMessageClass)) + +typedef struct _GUnixCredentialsMessagePrivate GUnixCredentialsMessagePrivate; +typedef struct _GUnixCredentialsMessageClass GUnixCredentialsMessageClass; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUnixCredentialsMessage, g_object_unref) + +/** + * GUnixCredentialsMessageClass: + * + * Class structure for #GUnixCredentialsMessage. + * + * Since: 2.26 + */ +struct _GUnixCredentialsMessageClass +{ + GSocketControlMessageClass parent_class; + + /*< private >*/ + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); +}; + +/** + * GUnixCredentialsMessage: + * + * The #GUnixCredentialsMessage structure contains only private data + * and should only be accessed using the provided API. + * + * Since: 2.26 + */ +struct _GUnixCredentialsMessage +{ + GSocketControlMessage parent_instance; + GUnixCredentialsMessagePrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_unix_credentials_message_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GSocketControlMessage *g_unix_credentials_message_new (void); +GLIB_AVAILABLE_IN_ALL +GSocketControlMessage *g_unix_credentials_message_new_with_credentials (GCredentials *credentials); +GLIB_AVAILABLE_IN_ALL +GCredentials *g_unix_credentials_message_get_credentials (GUnixCredentialsMessage *message); + +GLIB_AVAILABLE_IN_ALL +gboolean g_unix_credentials_message_is_supported (void); + +G_END_DECLS + +#endif /* __G_UNIX_CREDENTIALS_MESSAGE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixfdlist.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixfdlist.h new file mode 100644 index 0000000..1e625b0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixfdlist.h @@ -0,0 +1,97 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2009 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Lortie + */ + +#ifndef __G_UNIX_FD_LIST_H__ +#define __G_UNIX_FD_LIST_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_UNIX_FD_LIST (g_unix_fd_list_get_type ()) +#define G_UNIX_FD_LIST(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_UNIX_FD_LIST, GUnixFDList)) +#define G_UNIX_FD_LIST_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ + G_TYPE_UNIX_FD_LIST, GUnixFDListClass)) +#define G_IS_UNIX_FD_LIST(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_UNIX_FD_LIST)) +#define G_IS_UNIX_FD_LIST_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ + G_TYPE_UNIX_FD_LIST)) +#define G_UNIX_FD_LIST_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ + G_TYPE_UNIX_FD_LIST, GUnixFDListClass)) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUnixFDList, g_object_unref) + +typedef struct _GUnixFDListPrivate GUnixFDListPrivate; +typedef struct _GUnixFDListClass GUnixFDListClass; + +struct _GUnixFDListClass +{ + GObjectClass parent_class; + + /*< private >*/ + + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); +}; + +struct _GUnixFDList +{ + GObject parent_instance; + GUnixFDListPrivate *priv; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_unix_fd_list_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GUnixFDList * g_unix_fd_list_new (void); +GLIB_AVAILABLE_IN_ALL +GUnixFDList * g_unix_fd_list_new_from_array (const gint *fds, + gint n_fds); + +GLIB_AVAILABLE_IN_ALL +gint g_unix_fd_list_append (GUnixFDList *list, + gint fd, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gint g_unix_fd_list_get_length (GUnixFDList *list); + +GLIB_AVAILABLE_IN_ALL +gint g_unix_fd_list_get (GUnixFDList *list, + gint index_, + GError **error); + +GLIB_AVAILABLE_IN_ALL +const gint * g_unix_fd_list_peek_fds (GUnixFDList *list, + gint *length); + +GLIB_AVAILABLE_IN_ALL +gint * g_unix_fd_list_steal_fds (GUnixFDList *list, + gint *length); + +G_END_DECLS + +#endif /* __G_UNIX_FD_LIST_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixsocketaddress.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixsocketaddress.h new file mode 100644 index 0000000..1a24e57 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gunixsocketaddress.h @@ -0,0 +1,83 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + */ + +#ifndef __G_UNIX_SOCKET_ADDRESS_H__ +#define __G_UNIX_SOCKET_ADDRESS_H__ + +#include + +G_BEGIN_DECLS + +#define G_TYPE_UNIX_SOCKET_ADDRESS (g_unix_socket_address_get_type ()) +#define G_UNIX_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_UNIX_SOCKET_ADDRESS, GUnixSocketAddress)) +#define G_UNIX_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_UNIX_SOCKET_ADDRESS, GUnixSocketAddressClass)) +#define G_IS_UNIX_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_UNIX_SOCKET_ADDRESS)) +#define G_IS_UNIX_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_UNIX_SOCKET_ADDRESS)) +#define G_UNIX_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_UNIX_SOCKET_ADDRESS, GUnixSocketAddressClass)) + +typedef struct _GUnixSocketAddress GUnixSocketAddress; +typedef struct _GUnixSocketAddressClass GUnixSocketAddressClass; +typedef struct _GUnixSocketAddressPrivate GUnixSocketAddressPrivate; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUnixSocketAddress, g_object_unref) + +struct _GUnixSocketAddress +{ + GSocketAddress parent_instance; + + /*< private >*/ + GUnixSocketAddressPrivate *priv; +}; + +struct _GUnixSocketAddressClass +{ + GSocketAddressClass parent_class; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_unix_socket_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_unix_socket_address_new (const gchar *path); +GLIB_DEPRECATED_FOR(g_unix_socket_address_new_with_type) +GSocketAddress *g_unix_socket_address_new_abstract (const gchar *path, + gint path_len); +GLIB_AVAILABLE_IN_ALL +GSocketAddress *g_unix_socket_address_new_with_type (const gchar *path, + gint path_len, + GUnixSocketAddressType type); +GLIB_AVAILABLE_IN_ALL +const char * g_unix_socket_address_get_path (GUnixSocketAddress *address); +GLIB_AVAILABLE_IN_ALL +gsize g_unix_socket_address_get_path_len (GUnixSocketAddress *address); +GLIB_AVAILABLE_IN_ALL +GUnixSocketAddressType g_unix_socket_address_get_address_type (GUnixSocketAddress *address); +GLIB_DEPRECATED +gboolean g_unix_socket_address_get_is_abstract (GUnixSocketAddress *address); + +GLIB_AVAILABLE_IN_ALL +gboolean g_unix_socket_address_abstract_names_supported (void); + +G_END_DECLS + +#endif /* __G_UNIX_SOCKET_ADDRESS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvfs.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvfs.h new file mode 100644 index 0000000..a1eb51f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvfs.h @@ -0,0 +1,170 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_VFS_H__ +#define __G_VFS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_VFS (g_vfs_get_type ()) +#define G_VFS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_VFS, GVfs)) +#define G_VFS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_VFS, GVfsClass)) +#define G_VFS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_VFS, GVfsClass)) +#define G_IS_VFS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_VFS)) +#define G_IS_VFS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_VFS)) + +/** + * GVfsFileLookupFunc: + * @vfs: a #GVfs + * @identifier: the identifier to look up a #GFile for. This can either + * be an URI or a parse name as returned by g_file_get_parse_name() + * @user_data: user data passed to the function + * + * This function type is used by g_vfs_register_uri_scheme() to make it + * possible for a client to associate an URI scheme to a different #GFile + * implementation. + * + * The client should return a reference to the new file that has been + * created for @uri, or %NULL to continue with the default implementation. + * + * Returns: (transfer full): a #GFile for @identifier. + * + * Since: 2.50 + */ +typedef GFile * (* GVfsFileLookupFunc) (GVfs *vfs, + const char *identifier, + gpointer user_data); + +/** + * G_VFS_EXTENSION_POINT_NAME: + * + * Extension point for #GVfs functionality. + * See [Extending GIO][extending-gio]. + */ +#define G_VFS_EXTENSION_POINT_NAME "gio-vfs" + +/** + * GVfs: + * + * Virtual File System object. + **/ +typedef struct _GVfsClass GVfsClass; + +struct _GVfs +{ + GObject parent_instance; +}; + +struct _GVfsClass +{ + GObjectClass parent_class; + + /* Virtual Table */ + + gboolean (* is_active) (GVfs *vfs); + GFile * (* get_file_for_path) (GVfs *vfs, + const char *path); + GFile * (* get_file_for_uri) (GVfs *vfs, + const char *uri); + const gchar * const * (* get_supported_uri_schemes) (GVfs *vfs); + GFile * (* parse_name) (GVfs *vfs, + const char *parse_name); + + /*< private >*/ + void (* local_file_add_info) (GVfs *vfs, + const char *filename, + guint64 device, + GFileAttributeMatcher *attribute_matcher, + GFileInfo *info, + GCancellable *cancellable, + gpointer *extra_data, + GDestroyNotify *free_extra_data); + void (* add_writable_namespaces) (GVfs *vfs, + GFileAttributeInfoList *list); + gboolean (* local_file_set_attributes) (GVfs *vfs, + const char *filename, + GFileInfo *info, + GFileQueryInfoFlags flags, + GCancellable *cancellable, + GError **error); + void (* local_file_removed) (GVfs *vfs, + const char *filename); + void (* local_file_moved) (GVfs *vfs, + const char *source, + const char *dest); + GIcon * (* deserialize_icon) (GVfs *vfs, + GVariant *value); + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_vfs_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_vfs_is_active (GVfs *vfs); +GLIB_AVAILABLE_IN_ALL +GFile * g_vfs_get_file_for_path (GVfs *vfs, + const char *path); +GLIB_AVAILABLE_IN_ALL +GFile * g_vfs_get_file_for_uri (GVfs *vfs, + const char *uri); +GLIB_AVAILABLE_IN_ALL +const gchar* const * g_vfs_get_supported_uri_schemes (GVfs *vfs); + +GLIB_AVAILABLE_IN_ALL +GFile * g_vfs_parse_name (GVfs *vfs, + const char *parse_name); + +GLIB_AVAILABLE_IN_ALL +GVfs * g_vfs_get_default (void); +GLIB_AVAILABLE_IN_ALL +GVfs * g_vfs_get_local (void); + +GLIB_AVAILABLE_IN_2_50 +gboolean g_vfs_register_uri_scheme (GVfs *vfs, + const char *scheme, + GVfsFileLookupFunc uri_func, + gpointer uri_data, + GDestroyNotify uri_destroy, + GVfsFileLookupFunc parse_name_func, + gpointer parse_name_data, + GDestroyNotify parse_name_destroy); +GLIB_AVAILABLE_IN_2_50 +gboolean g_vfs_unregister_uri_scheme (GVfs *vfs, + const char *scheme); + + +G_END_DECLS + +#endif /* __G_VFS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvolume.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvolume.h new file mode 100644 index 0000000..5c71cdb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvolume.h @@ -0,0 +1,255 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + * David Zeuthen + */ + +#ifndef __G_VOLUME_H__ +#define __G_VOLUME_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_VOLUME_IDENTIFIER_KIND_HAL_UDI: + * + * The string used to obtain a Hal UDI with g_volume_get_identifier(). + * + * Deprecated: 2.58: Do not use, HAL is deprecated. + */ +#define G_VOLUME_IDENTIFIER_KIND_HAL_UDI "hal-udi" GLIB_DEPRECATED_MACRO_IN_2_58 + +/** + * G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE: + * + * The string used to obtain a Unix device path with g_volume_get_identifier(). + */ +#define G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE "unix-device" + +/** + * G_VOLUME_IDENTIFIER_KIND_LABEL: + * + * The string used to obtain a filesystem label with g_volume_get_identifier(). + */ +#define G_VOLUME_IDENTIFIER_KIND_LABEL "label" + +/** + * G_VOLUME_IDENTIFIER_KIND_UUID: + * + * The string used to obtain a UUID with g_volume_get_identifier(). + */ +#define G_VOLUME_IDENTIFIER_KIND_UUID "uuid" + +/** + * G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT: + * + * The string used to obtain a NFS mount with g_volume_get_identifier(). + */ +#define G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT "nfs-mount" + +/** + * G_VOLUME_IDENTIFIER_KIND_CLASS: + * + * The string used to obtain the volume class with g_volume_get_identifier(). + * + * Known volume classes include `device`, `network`, and `loop`. Other + * classes may be added in the future. + * + * This is intended to be used by applications to classify #GVolume + * instances into different sections - for example a file manager or + * file chooser can use this information to show `network` volumes under + * a "Network" heading and `device` volumes under a "Devices" heading. + */ +#define G_VOLUME_IDENTIFIER_KIND_CLASS "class" + + +#define G_TYPE_VOLUME (g_volume_get_type ()) +#define G_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_VOLUME, GVolume)) +#define G_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_VOLUME)) +#define G_VOLUME_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_VOLUME, GVolumeIface)) + +/** + * GVolumeIface: + * @g_iface: The parent interface. + * @changed: Changed signal that is emitted when the volume's state has changed. + * @removed: The removed signal that is emitted when the #GVolume have been removed. If the recipient is holding references to the object they should release them so the object can be finalized. + * @get_name: Gets a string containing the name of the #GVolume. + * @get_icon: Gets a #GIcon for the #GVolume. + * @get_uuid: Gets the UUID for the #GVolume. The reference is typically based on the file system UUID for the mount in question and should be considered an opaque string. Returns %NULL if there is no UUID available. + * @get_drive: Gets a #GDrive the volume is located on. Returns %NULL if the #GVolume is not associated with a #GDrive. + * @get_mount: Gets a #GMount representing the mounted volume. Returns %NULL if the #GVolume is not mounted. + * @can_mount: Returns %TRUE if the #GVolume can be mounted. + * @can_eject: Checks if a #GVolume can be ejected. + * @mount_fn: Mounts a given #GVolume. + * #GVolume implementations must emit the #GMountOperation::aborted + * signal before completing a mount operation that is aborted while + * awaiting input from the user through a #GMountOperation instance. + * @mount_finish: Finishes a mount operation. + * @eject: Ejects a given #GVolume. + * @eject_finish: Finishes an eject operation. + * @get_identifier: Returns the [identifier][volume-identifier] of the given kind, or %NULL if + * the #GVolume doesn't have one. + * @enumerate_identifiers: Returns an array strings listing the kinds + * of [identifiers][volume-identifier] which the #GVolume has. + * @should_automount: Returns %TRUE if the #GVolume should be automatically mounted. + * @get_activation_root: Returns the activation root for the #GVolume if it is known in advance or %NULL if + * it is not known. + * @eject_with_operation: Starts ejecting a #GVolume using a #GMountOperation. Since 2.22. + * @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22. + * @get_sort_key: Gets a key used for sorting #GVolume instance or %NULL if no such key exists. Since 2.32. + * @get_symbolic_icon: Gets a symbolic #GIcon for the #GVolume. Since 2.34. + * + * Interface for implementing operations for mountable volumes. + **/ +typedef struct _GVolumeIface GVolumeIface; + +struct _GVolumeIface +{ + GTypeInterface g_iface; + + /* signals */ + + void (* changed) (GVolume *volume); + void (* removed) (GVolume *volume); + + /* Virtual Table */ + + char * (* get_name) (GVolume *volume); + GIcon * (* get_icon) (GVolume *volume); + char * (* get_uuid) (GVolume *volume); + GDrive * (* get_drive) (GVolume *volume); + GMount * (* get_mount) (GVolume *volume); + gboolean (* can_mount) (GVolume *volume); + gboolean (* can_eject) (GVolume *volume); + void (* mount_fn) (GVolume *volume, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* mount_finish) (GVolume *volume, + GAsyncResult *result, + GError **error); + void (* eject) (GVolume *volume, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_finish) (GVolume *volume, + GAsyncResult *result, + GError **error); + + char * (* get_identifier) (GVolume *volume, + const char *kind); + char ** (* enumerate_identifiers) (GVolume *volume); + + gboolean (* should_automount) (GVolume *volume); + + GFile * (* get_activation_root) (GVolume *volume); + + void (* eject_with_operation) (GVolume *volume, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* eject_with_operation_finish) (GVolume *volume, + GAsyncResult *result, + GError **error); + + const gchar * (* get_sort_key) (GVolume *volume); + GIcon * (* get_symbolic_icon) (GVolume *volume); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_volume_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +char * g_volume_get_name (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +GIcon * g_volume_get_icon (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +GIcon * g_volume_get_symbolic_icon (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +char * g_volume_get_uuid (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +GDrive * g_volume_get_drive (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +GMount * g_volume_get_mount (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +gboolean g_volume_can_mount (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +gboolean g_volume_can_eject (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +gboolean g_volume_should_automount (GVolume *volume); +GLIB_AVAILABLE_IN_ALL +void g_volume_mount (GVolume *volume, + GMountMountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_volume_mount_finish (GVolume *volume, + GAsyncResult *result, + GError **error); +GLIB_DEPRECATED_FOR(g_volume_eject_with_operation) +void g_volume_eject (GVolume *volume, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GLIB_DEPRECATED_FOR(g_volume_eject_with_operation_finish) +gboolean g_volume_eject_finish (GVolume *volume, + GAsyncResult *result, + GError **error); +GLIB_AVAILABLE_IN_ALL +char * g_volume_get_identifier (GVolume *volume, + const char *kind); +GLIB_AVAILABLE_IN_ALL +char ** g_volume_enumerate_identifiers (GVolume *volume); + +GLIB_AVAILABLE_IN_ALL +GFile * g_volume_get_activation_root (GVolume *volume); + +GLIB_AVAILABLE_IN_ALL +void g_volume_eject_with_operation (GVolume *volume, + GMountUnmountFlags flags, + GMountOperation *mount_operation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_volume_eject_with_operation_finish (GVolume *volume, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_32 +const gchar *g_volume_get_sort_key (GVolume *volume); + +G_END_DECLS + +#endif /* __G_VOLUME_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvolumemonitor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvolumemonitor.h new file mode 100644 index 0000000..88294da --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gvolumemonitor.h @@ -0,0 +1,156 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ + +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + * David Zeuthen + */ + +#ifndef __G_VOLUME_MONITOR_H__ +#define __G_VOLUME_MONITOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_VOLUME_MONITOR (g_volume_monitor_get_type ()) +#define G_VOLUME_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_VOLUME_MONITOR, GVolumeMonitor)) +#define G_VOLUME_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_VOLUME_MONITOR, GVolumeMonitorClass)) +#define G_VOLUME_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_VOLUME_MONITOR, GVolumeMonitorClass)) +#define G_IS_VOLUME_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_VOLUME_MONITOR)) +#define G_IS_VOLUME_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_VOLUME_MONITOR)) + +/** + * G_VOLUME_MONITOR_EXTENSION_POINT_NAME: + * + * Extension point for volume monitor functionality. + * See [Extending GIO][extending-gio]. + */ +#define G_VOLUME_MONITOR_EXTENSION_POINT_NAME "gio-volume-monitor" + +/** + * GVolumeMonitor: + * + * A Volume Monitor that watches for volume events. + **/ +typedef struct _GVolumeMonitorClass GVolumeMonitorClass; + +struct _GVolumeMonitor +{ + GObject parent_instance; + + /*< private >*/ + gpointer priv; +}; + +struct _GVolumeMonitorClass +{ + GObjectClass parent_class; + + /*< public >*/ + /* signals */ + void (* volume_added) (GVolumeMonitor *volume_monitor, + GVolume *volume); + void (* volume_removed) (GVolumeMonitor *volume_monitor, + GVolume *volume); + void (* volume_changed) (GVolumeMonitor *volume_monitor, + GVolume *volume); + + void (* mount_added) (GVolumeMonitor *volume_monitor, + GMount *mount); + void (* mount_removed) (GVolumeMonitor *volume_monitor, + GMount *mount); + void (* mount_pre_unmount) (GVolumeMonitor *volume_monitor, + GMount *mount); + void (* mount_changed) (GVolumeMonitor *volume_monitor, + GMount *mount); + + void (* drive_connected) (GVolumeMonitor *volume_monitor, + GDrive *drive); + void (* drive_disconnected) (GVolumeMonitor *volume_monitor, + GDrive *drive); + void (* drive_changed) (GVolumeMonitor *volume_monitor, + GDrive *drive); + + /* Vtable */ + + gboolean (* is_supported) (void); + + GList * (* get_connected_drives) (GVolumeMonitor *volume_monitor); + GList * (* get_volumes) (GVolumeMonitor *volume_monitor); + GList * (* get_mounts) (GVolumeMonitor *volume_monitor); + + GVolume * (* get_volume_for_uuid) (GVolumeMonitor *volume_monitor, + const char *uuid); + + GMount * (* get_mount_for_uuid) (GVolumeMonitor *volume_monitor, + const char *uuid); + + + /* These arguments are unfortunately backwards by mistake (bug #520169). Deprecated in 2.20. */ + GVolume * (* adopt_orphan_mount) (GMount *mount, + GVolumeMonitor *volume_monitor); + + /* signal added in 2.17 */ + void (* drive_eject_button) (GVolumeMonitor *volume_monitor, + GDrive *drive); + + /* signal added in 2.21 */ + void (* drive_stop_button) (GVolumeMonitor *volume_monitor, + GDrive *drive); + + /*< private >*/ + /* Padding for future expansion */ + void (*_g_reserved1) (void); + void (*_g_reserved2) (void); + void (*_g_reserved3) (void); + void (*_g_reserved4) (void); + void (*_g_reserved5) (void); + void (*_g_reserved6) (void); +}; + +GLIB_AVAILABLE_IN_ALL +GType g_volume_monitor_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GVolumeMonitor *g_volume_monitor_get (void); +GLIB_AVAILABLE_IN_ALL +GList * g_volume_monitor_get_connected_drives (GVolumeMonitor *volume_monitor); +GLIB_AVAILABLE_IN_ALL +GList * g_volume_monitor_get_volumes (GVolumeMonitor *volume_monitor); +GLIB_AVAILABLE_IN_ALL +GList * g_volume_monitor_get_mounts (GVolumeMonitor *volume_monitor); +GLIB_AVAILABLE_IN_ALL +GVolume * g_volume_monitor_get_volume_for_uuid (GVolumeMonitor *volume_monitor, + const char *uuid); +GLIB_AVAILABLE_IN_ALL +GMount * g_volume_monitor_get_mount_for_uuid (GVolumeMonitor *volume_monitor, + const char *uuid); + +GLIB_DEPRECATED +GVolume * g_volume_monitor_adopt_orphan_mount (GMount *mount); + +G_END_DECLS + +#endif /* __G_VOLUME_MONITOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gzlibcompressor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gzlibcompressor.h new file mode 100644 index 0000000..1a9380e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gzlibcompressor.h @@ -0,0 +1,64 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_ZLIB_COMPRESSOR_H__ +#define __G_ZLIB_COMPRESSOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_ZLIB_COMPRESSOR (g_zlib_compressor_get_type ()) +#define G_ZLIB_COMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_ZLIB_COMPRESSOR, GZlibCompressor)) +#define G_ZLIB_COMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_ZLIB_COMPRESSOR, GZlibCompressorClass)) +#define G_IS_ZLIB_COMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_ZLIB_COMPRESSOR)) +#define G_IS_ZLIB_COMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_ZLIB_COMPRESSOR)) +#define G_ZLIB_COMPRESSOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_ZLIB_COMPRESSOR, GZlibCompressorClass)) + +typedef struct _GZlibCompressorClass GZlibCompressorClass; + +struct _GZlibCompressorClass +{ + GObjectClass parent_class; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_zlib_compressor_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GZlibCompressor *g_zlib_compressor_new (GZlibCompressorFormat format, + int level); + +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_zlib_compressor_get_file_info (GZlibCompressor *compressor); +GLIB_AVAILABLE_IN_ALL +void g_zlib_compressor_set_file_info (GZlibCompressor *compressor, + GFileInfo *file_info); + +G_END_DECLS + +#endif /* __G_ZLIB_COMPRESSOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gzlibdecompressor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gzlibdecompressor.h new file mode 100644 index 0000000..4641317 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gio/gzlibdecompressor.h @@ -0,0 +1,60 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Alexander Larsson + */ + +#ifndef __G_ZLIB_DECOMPRESSOR_H__ +#define __G_ZLIB_DECOMPRESSOR_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_ZLIB_DECOMPRESSOR (g_zlib_decompressor_get_type ()) +#define G_ZLIB_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_ZLIB_DECOMPRESSOR, GZlibDecompressor)) +#define G_ZLIB_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_ZLIB_DECOMPRESSOR, GZlibDecompressorClass)) +#define G_IS_ZLIB_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_ZLIB_DECOMPRESSOR)) +#define G_IS_ZLIB_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_ZLIB_DECOMPRESSOR)) +#define G_ZLIB_DECOMPRESSOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_ZLIB_DECOMPRESSOR, GZlibDecompressorClass)) + +typedef struct _GZlibDecompressorClass GZlibDecompressorClass; + +struct _GZlibDecompressorClass +{ + GObjectClass parent_class; +}; + +GLIB_AVAILABLE_IN_ALL +GType g_zlib_decompressor_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GZlibDecompressor *g_zlib_decompressor_new (GZlibCompressorFormat format); + +GLIB_AVAILABLE_IN_ALL +GFileInfo *g_zlib_decompressor_get_file_info (GZlibDecompressor *decompressor); + +G_END_DECLS + +#endif /* __G_ZLIB_DECOMPRESSOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib-object.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib-object.h new file mode 100644 index 0000000..b00392d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib-object.h @@ -0,0 +1,46 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1998, 1999, 2000 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __GLIB_GOBJECT_H__ +#define __GLIB_GOBJECT_H__ + +#define __GLIB_GOBJECT_H_INSIDE__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#undef __GLIB_GOBJECT_H_INSIDE__ + +#endif /* __GLIB_GOBJECT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib-unix.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib-unix.h new file mode 100644 index 0000000..7cf4f0d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib-unix.h @@ -0,0 +1,125 @@ +/* glib-unix.h - Unix specific integration + * Copyright (C) 2011 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_UNIX_H__ +#define __G_UNIX_H__ + +/* We need to include the UNIX headers needed to use the APIs below, + * but we also take this opportunity to include a wide selection of + * other UNIX headers. If one of the headers below is broken on some + * system, work around it here (or better, fix the system or tell + * people to use a better one). + */ +#include +#include +#include +#include +#include + +#include + +#ifndef G_OS_UNIX +#error "This header may only be used on UNIX" +#endif + +G_BEGIN_DECLS + +/** + * G_UNIX_ERROR: + * + * Error domain for API in the g_unix_ namespace. Note that there is no + * exported enumeration mapping %errno. Instead, all functions ensure that + * %errno is relevant. The code for all %G_UNIX_ERROR is always 0, and the + * error message is always generated via g_strerror(). + * + * It is expected that most code will not look at %errno from these APIs. + * Important cases where one would want to differentiate between errors are + * already covered by existing cross-platform GLib API, such as e.g. #GFile + * wrapping `ENOENT`. However, it is provided for completeness, at least. + */ +#define G_UNIX_ERROR (g_unix_error_quark()) + +GLIB_AVAILABLE_IN_2_30 +GQuark g_unix_error_quark (void); + +GLIB_AVAILABLE_IN_2_30 +gboolean g_unix_open_pipe (gint *fds, + gint flags, + GError **error); + +GLIB_AVAILABLE_IN_2_30 +gboolean g_unix_set_fd_nonblocking (gint fd, + gboolean nonblock, + GError **error); + +GLIB_AVAILABLE_IN_2_30 +GSource *g_unix_signal_source_new (gint signum); + +GLIB_AVAILABLE_IN_2_30 +guint g_unix_signal_add_full (gint priority, + gint signum, + GSourceFunc handler, + gpointer user_data, + GDestroyNotify notify); + +GLIB_AVAILABLE_IN_2_30 +guint g_unix_signal_add (gint signum, + GSourceFunc handler, + gpointer user_data); + +/** + * GUnixFDSourceFunc: + * @fd: the fd that triggered the event + * @condition: the IO conditions reported on @fd + * @user_data: user data passed to g_unix_fd_add() + * + * The type of functions to be called when a UNIX fd watch source + * triggers. + * + * Returns: %FALSE if the source should be removed + **/ +typedef gboolean (*GUnixFDSourceFunc) (gint fd, + GIOCondition condition, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_36 +GSource *g_unix_fd_source_new (gint fd, + GIOCondition condition); + +GLIB_AVAILABLE_IN_2_36 +guint g_unix_fd_add_full (gint priority, + gint fd, + GIOCondition condition, + GUnixFDSourceFunc function, + gpointer user_data, + GDestroyNotify notify); + +GLIB_AVAILABLE_IN_2_36 +guint g_unix_fd_add (gint fd, + GIOCondition condition, + GUnixFDSourceFunc function, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_64 +struct passwd *g_unix_get_passwd_entry (const gchar *user_name, + GError **error); + +G_END_DECLS + +#endif /* __G_UNIX_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib.h new file mode 100644 index 0000000..d83b225 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib.h @@ -0,0 +1,120 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_LIB_H__ +#define __G_LIB_H__ + +#define __GLIB_H_INSIDE__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef G_PLATFORM_WIN32 +#include +#endif + +#include +#include +#include +#include +#include +#include + +#include +#include + +#undef __GLIB_H_INSIDE__ + +#endif /* __G_LIB_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gallocator.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gallocator.h new file mode 100644 index 0000000..005e92b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gallocator.h @@ -0,0 +1,88 @@ +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_ALLOCATOR_H__ +#define __G_ALLOCATOR_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GAllocator GAllocator; +typedef struct _GMemChunk GMemChunk; + +#define G_ALLOC_ONLY 1 +#define G_ALLOC_AND_FREE 2 +#define G_ALLOCATOR_LIST 1 +#define G_ALLOCATOR_SLIST 2 +#define G_ALLOCATOR_NODE 3 + +#define g_chunk_new(type, chunk) ((type *) g_mem_chunk_alloc (chunk)) +#define g_chunk_new0(type, chunk) ((type *) g_mem_chunk_alloc0 (chunk)) +#define g_chunk_free(mem, mem_chunk) (g_mem_chunk_free (mem_chunk, mem)) +#define g_mem_chunk_create(type, x, y) (g_mem_chunk_new (NULL, sizeof (type), 0, 0)) + + +GLIB_DEPRECATED +GMemChunk * g_mem_chunk_new (const gchar *name, + gint atom_size, + gsize area_size, + gint type); +GLIB_DEPRECATED +void g_mem_chunk_destroy (GMemChunk *mem_chunk); +GLIB_DEPRECATED +gpointer g_mem_chunk_alloc (GMemChunk *mem_chunk); +GLIB_DEPRECATED +gpointer g_mem_chunk_alloc0 (GMemChunk *mem_chunk); +GLIB_DEPRECATED +void g_mem_chunk_free (GMemChunk *mem_chunk, + gpointer mem); +GLIB_DEPRECATED +void g_mem_chunk_clean (GMemChunk *mem_chunk); +GLIB_DEPRECATED +void g_mem_chunk_reset (GMemChunk *mem_chunk); +GLIB_DEPRECATED +void g_mem_chunk_print (GMemChunk *mem_chunk); +GLIB_DEPRECATED +void g_mem_chunk_info (void); +GLIB_DEPRECATED +void g_blow_chunks (void); + + +GLIB_DEPRECATED +GAllocator * g_allocator_new (const gchar *name, + guint n_preallocs); +GLIB_DEPRECATED +void g_allocator_free (GAllocator *allocator); +GLIB_DEPRECATED +void g_list_push_allocator (GAllocator *allocator); +GLIB_DEPRECATED +void g_list_pop_allocator (void); +GLIB_DEPRECATED +void g_slist_push_allocator (GAllocator *allocator); +GLIB_DEPRECATED +void g_slist_pop_allocator (void); +GLIB_DEPRECATED +void g_node_push_allocator (GAllocator *allocator); +GLIB_DEPRECATED +void g_node_pop_allocator (void); + +G_END_DECLS + +#endif /* __G_ALLOCATOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gcache.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gcache.h new file mode 100644 index 0000000..201f7cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gcache.h @@ -0,0 +1,77 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_CACHE_H__ +#define __G_CACHE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GCache GCache GLIB_DEPRECATED_TYPE_IN_2_26_FOR(GHashTable); + +typedef gpointer (*GCacheNewFunc) (gpointer key) GLIB_DEPRECATED_TYPE_IN_2_26; +typedef gpointer (*GCacheDupFunc) (gpointer value) GLIB_DEPRECATED_TYPE_IN_2_26; +typedef void (*GCacheDestroyFunc) (gpointer value) GLIB_DEPRECATED_TYPE_IN_2_26; + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +/* Caches + */ +GLIB_DEPRECATED +GCache* g_cache_new (GCacheNewFunc value_new_func, + GCacheDestroyFunc value_destroy_func, + GCacheDupFunc key_dup_func, + GCacheDestroyFunc key_destroy_func, + GHashFunc hash_key_func, + GHashFunc hash_value_func, + GEqualFunc key_equal_func); +GLIB_DEPRECATED +void g_cache_destroy (GCache *cache); +GLIB_DEPRECATED +gpointer g_cache_insert (GCache *cache, + gpointer key); +GLIB_DEPRECATED +void g_cache_remove (GCache *cache, + gconstpointer value); +GLIB_DEPRECATED +void g_cache_key_foreach (GCache *cache, + GHFunc func, + gpointer user_data); +GLIB_DEPRECATED +void g_cache_value_foreach (GCache *cache, + GHFunc func, + gpointer user_data); + +G_GNUC_END_IGNORE_DEPRECATIONS + +G_END_DECLS + +#endif /* __G_CACHE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gcompletion.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gcompletion.h new file mode 100644 index 0000000..2be87d2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gcompletion.h @@ -0,0 +1,85 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_COMPLETION_H__ +#define __G_COMPLETION_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GCompletion GCompletion; + +typedef gchar* (*GCompletionFunc) (gpointer); + +/* GCompletion + */ + +typedef gint (*GCompletionStrncmpFunc) (const gchar *s1, + const gchar *s2, + gsize n); + +struct _GCompletion +{ + GList* items; + GCompletionFunc func; + + gchar* prefix; + GList* cache; + GCompletionStrncmpFunc strncmp_func; +}; + +GLIB_DEPRECATED_IN_2_26 +GCompletion* g_completion_new (GCompletionFunc func); +GLIB_DEPRECATED_IN_2_26 +void g_completion_add_items (GCompletion* cmp, + GList* items); +GLIB_DEPRECATED_IN_2_26 +void g_completion_remove_items (GCompletion* cmp, + GList* items); +GLIB_DEPRECATED_IN_2_26 +void g_completion_clear_items (GCompletion* cmp); +GLIB_DEPRECATED_IN_2_26 +GList* g_completion_complete (GCompletion* cmp, + const gchar* prefix, + gchar** new_prefix); +GLIB_DEPRECATED_IN_2_26 +GList* g_completion_complete_utf8 (GCompletion *cmp, + const gchar* prefix, + gchar** new_prefix); +GLIB_DEPRECATED_IN_2_26 +void g_completion_set_compare (GCompletion *cmp, + GCompletionStrncmpFunc strncmp_func); +GLIB_DEPRECATED_IN_2_26 +void g_completion_free (GCompletion* cmp); + +G_END_DECLS + +#endif /* __G_COMPLETION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gmain.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gmain.h new file mode 100644 index 0000000..ed01f8e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gmain.h @@ -0,0 +1,137 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_DEPRECATED_MAIN_H__ +#define __G_DEPRECATED_MAIN_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* ============== Compat main loop stuff ================== */ + +/** + * g_main_new: + * @is_running: set to %TRUE to indicate that the loop is running. This + * is not very important since calling g_main_run() will set this + * to %TRUE anyway. + * + * Creates a new #GMainLoop for th default main context. + * + * Returns: a new #GMainLoop + * + * Deprecated: 2.2: Use g_main_loop_new() instead + */ +#define g_main_new(is_running) g_main_loop_new (NULL, is_running) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_new) + +/** + * g_main_run: + * @loop: a #GMainLoop + * + * Runs a main loop until it stops running. + * + * Deprecated: 2.2: Use g_main_loop_run() instead + */ +#define g_main_run(loop) g_main_loop_run(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_run) + +/** + * g_main_quit: + * @loop: a #GMainLoop + * + * Stops the #GMainLoop. + * If g_main_run() was called to run the #GMainLoop, it will now return. + * + * Deprecated: 2.2: Use g_main_loop_quit() instead + */ +#define g_main_quit(loop) g_main_loop_quit(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_quit) + +/** + * g_main_destroy: + * @loop: a #GMainLoop + * + * Frees the memory allocated for the #GMainLoop. + * + * Deprecated: 2.2: Use g_main_loop_unref() instead + */ +#define g_main_destroy(loop) g_main_loop_unref(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_unref) + +/** + * g_main_is_running: + * @loop: a #GMainLoop + * + * Checks if the main loop is running. + * + * Returns: %TRUE if the main loop is running + * + * Deprecated: 2.2: Use g_main_loop_is_running() instead + */ +#define g_main_is_running(loop) g_main_loop_is_running(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_is_running) + +/** + * g_main_iteration: + * @may_block: set to %TRUE if it should block (i.e. wait) until an event + * source becomes ready. It will return after an event source has been + * processed. If set to %FALSE it will return immediately if no event + * source is ready to be processed. + * + * Runs a single iteration for the default #GMainContext. + * + * Returns: %TRUE if more events are pending. + * + * Deprecated: 2.2: Use g_main_context_iteration() instead. + */ +#define g_main_iteration(may_block) g_main_context_iteration (NULL, may_block) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_context_iteration) + +/** + * g_main_pending: + * + * Checks if any events are pending for the default #GMainContext + * (i.e. ready to be processed). + * + * Returns: %TRUE if any events are pending. + * + * Deprecated: 2.2: Use g_main_context_pending() instead. + */ +#define g_main_pending() g_main_context_pending (NULL) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_context_pending) + +/** + * g_main_set_poll_func: + * @func: the function to call to poll all file descriptors + * + * Sets the function to use for the handle polling of file descriptors + * for the default main context. + * + * Deprecated: 2.2: Use g_main_context_set_poll_func() again + */ +#define g_main_set_poll_func(func) g_main_context_set_poll_func (NULL, func) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_context_set_poll_func) + +G_END_DECLS + +#endif /* __G_DEPRECATED_MAIN_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/grel.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/grel.h new file mode 100644 index 0000000..071e609 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/grel.h @@ -0,0 +1,107 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_REL_H__ +#define __G_REL_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GRelation GRelation; +typedef struct _GTuples GTuples; + +struct _GTuples +{ + guint len; +}; + +/* GRelation + * + * Indexed Relations. Imagine a really simple table in a + * database. Relations are not ordered. This data type is meant for + * maintaining a N-way mapping. + * + * g_relation_new() creates a relation with FIELDS fields + * + * g_relation_destroy() frees all resources + * g_tuples_destroy() frees the result of g_relation_select() + * + * g_relation_index() indexes relation FIELD with the provided + * equality and hash functions. this must be done before any + * calls to insert are made. + * + * g_relation_insert() inserts a new tuple. you are expected to + * provide the right number of fields. + * + * g_relation_delete() deletes all relations with KEY in FIELD + * g_relation_select() returns ... + * g_relation_count() counts ... + */ + +GLIB_DEPRECATED_IN_2_26 +GRelation* g_relation_new (gint fields); +GLIB_DEPRECATED_IN_2_26 +void g_relation_destroy (GRelation *relation); +GLIB_DEPRECATED_IN_2_26 +void g_relation_index (GRelation *relation, + gint field, + GHashFunc hash_func, + GEqualFunc key_equal_func); +GLIB_DEPRECATED_IN_2_26 +void g_relation_insert (GRelation *relation, + ...); +GLIB_DEPRECATED_IN_2_26 +gint g_relation_delete (GRelation *relation, + gconstpointer key, + gint field); +GLIB_DEPRECATED_IN_2_26 +GTuples* g_relation_select (GRelation *relation, + gconstpointer key, + gint field); +GLIB_DEPRECATED_IN_2_26 +gint g_relation_count (GRelation *relation, + gconstpointer key, + gint field); +GLIB_DEPRECATED_IN_2_26 +gboolean g_relation_exists (GRelation *relation, + ...); +GLIB_DEPRECATED_IN_2_26 +void g_relation_print (GRelation *relation); +GLIB_DEPRECATED_IN_2_26 +void g_tuples_destroy (GTuples *tuples); +GLIB_DEPRECATED_IN_2_26 +gpointer g_tuples_index (GTuples *tuples, + gint index_, + gint field); + +G_END_DECLS + +#endif /* __G_REL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gthread.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gthread.h new file mode 100644 index 0000000..a366136 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/deprecated/gthread.h @@ -0,0 +1,295 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_DEPRECATED_THREAD_H__ +#define __G_DEPRECATED_THREAD_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +typedef enum +{ + G_THREAD_PRIORITY_LOW, + G_THREAD_PRIORITY_NORMAL, + G_THREAD_PRIORITY_HIGH, + G_THREAD_PRIORITY_URGENT +} GThreadPriority GLIB_DEPRECATED_TYPE_IN_2_32; + +struct _GThread +{ + /*< private >*/ + GThreadFunc func; + gpointer data; + gboolean joinable; + GThreadPriority priority; +}; + +typedef struct _GThreadFunctions GThreadFunctions GLIB_DEPRECATED_TYPE_IN_2_32; +struct _GThreadFunctions +{ + GMutex* (*mutex_new) (void); + void (*mutex_lock) (GMutex *mutex); + gboolean (*mutex_trylock) (GMutex *mutex); + void (*mutex_unlock) (GMutex *mutex); + void (*mutex_free) (GMutex *mutex); + GCond* (*cond_new) (void); + void (*cond_signal) (GCond *cond); + void (*cond_broadcast) (GCond *cond); + void (*cond_wait) (GCond *cond, + GMutex *mutex); + gboolean (*cond_timed_wait) (GCond *cond, + GMutex *mutex, + GTimeVal *end_time); + void (*cond_free) (GCond *cond); + GPrivate* (*private_new) (GDestroyNotify destructor); + gpointer (*private_get) (GPrivate *private_key); + void (*private_set) (GPrivate *private_key, + gpointer data); + void (*thread_create) (GThreadFunc func, + gpointer data, + gulong stack_size, + gboolean joinable, + gboolean bound, + GThreadPriority priority, + gpointer thread, + GError **error); + void (*thread_yield) (void); + void (*thread_join) (gpointer thread); + void (*thread_exit) (void); + void (*thread_set_priority)(gpointer thread, + GThreadPriority priority); + void (*thread_self) (gpointer thread); + gboolean (*thread_equal) (gpointer thread1, + gpointer thread2); +} GLIB_DEPRECATED_TYPE_IN_2_32; + +GLIB_VAR GThreadFunctions g_thread_functions_for_glib_use; +GLIB_VAR gboolean g_thread_use_default_impl; + +GLIB_VAR guint64 (*g_thread_gettime) (void); + +GLIB_DEPRECATED_IN_2_32_FOR(g_thread_new) +GThread *g_thread_create (GThreadFunc func, + gpointer data, + gboolean joinable, + GError **error); + +GLIB_DEPRECATED_IN_2_32_FOR(g_thread_new) +GThread *g_thread_create_full (GThreadFunc func, + gpointer data, + gulong stack_size, + gboolean joinable, + gboolean bound, + GThreadPriority priority, + GError **error); + +GLIB_DEPRECATED_IN_2_32 +void g_thread_set_priority (GThread *thread, + GThreadPriority priority); + +GLIB_DEPRECATED_IN_2_32 +void g_thread_foreach (GFunc thread_func, + gpointer user_data); + +#ifndef G_OS_WIN32 +#include +#include +#endif + +#define g_static_mutex_get_mutex g_static_mutex_get_mutex_impl GLIB_DEPRECATED_MACRO_IN_2_32 +#ifndef G_OS_WIN32 +#define G_STATIC_MUTEX_INIT { NULL, PTHREAD_MUTEX_INITIALIZER } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_init) +#else +#define G_STATIC_MUTEX_INIT { NULL } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_init) +#endif +typedef struct +{ + GMutex *mutex; +#ifndef G_OS_WIN32 + /* only for ABI compatibility reasons */ + pthread_mutex_t unused; +#endif +} GStaticMutex GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GMutex); + +#define g_static_mutex_lock(mutex) \ + g_mutex_lock (g_static_mutex_get_mutex (mutex)) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_lock) +#define g_static_mutex_trylock(mutex) \ + g_mutex_trylock (g_static_mutex_get_mutex (mutex)) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_trylock) +#define g_static_mutex_unlock(mutex) \ + g_mutex_unlock (g_static_mutex_get_mutex (mutex)) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_unlock) + +GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_init) +void g_static_mutex_init (GStaticMutex *mutex); +GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_clear) +void g_static_mutex_free (GStaticMutex *mutex); +GLIB_DEPRECATED_IN_2_32_FOR(GMutex) +GMutex *g_static_mutex_get_mutex_impl (GStaticMutex *mutex); + +typedef struct _GStaticRecMutex GStaticRecMutex GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRecMutex); +struct _GStaticRecMutex +{ + /*< private >*/ + GStaticMutex mutex; + guint depth; + + /* ABI compat only */ + union { +#ifdef G_OS_WIN32 + void *owner; +#else + pthread_t owner; +#endif + gdouble dummy; + } unused; +} GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRecMutex); + +#define G_STATIC_REC_MUTEX_INIT { G_STATIC_MUTEX_INIT, 0, { 0 } } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_rec_mutex_init) +GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_init) +void g_static_rec_mutex_init (GStaticRecMutex *mutex); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_lock) +void g_static_rec_mutex_lock (GStaticRecMutex *mutex); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_try_lock) +gboolean g_static_rec_mutex_trylock (GStaticRecMutex *mutex); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_unlock) +void g_static_rec_mutex_unlock (GStaticRecMutex *mutex); + +GLIB_DEPRECATED_IN_2_32 +void g_static_rec_mutex_lock_full (GStaticRecMutex *mutex, + guint depth); + +GLIB_DEPRECATED_IN_2_32 +guint g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_free) +void g_static_rec_mutex_free (GStaticRecMutex *mutex); + +typedef struct _GStaticRWLock GStaticRWLock GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRWLock); +struct _GStaticRWLock +{ + /*< private >*/ + GStaticMutex mutex; + GCond *read_cond; + GCond *write_cond; + guint read_counter; + gboolean have_writer; + guint want_to_read; + guint want_to_write; +} GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRWLock); + +#define G_STATIC_RW_LOCK_INIT { G_STATIC_MUTEX_INIT, NULL, NULL, 0, FALSE, 0, 0 } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_rw_lock_init) + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_init) +void g_static_rw_lock_init (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_lock) +void g_static_rw_lock_reader_lock (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_trylock) +gboolean g_static_rw_lock_reader_trylock (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_unlock) +void g_static_rw_lock_reader_unlock (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_lock) +void g_static_rw_lock_writer_lock (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_trylock) +gboolean g_static_rw_lock_writer_trylock (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_unlock) +void g_static_rw_lock_writer_unlock (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_free) +void g_static_rw_lock_free (GStaticRWLock *lock); + +GLIB_DEPRECATED_IN_2_32 +GPrivate * g_private_new (GDestroyNotify notify); + +typedef struct _GStaticPrivate GStaticPrivate GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GPrivate); +struct _GStaticPrivate +{ + /*< private >*/ + guint index; +} GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GPrivate); + +#define G_STATIC_PRIVATE_INIT { 0 } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(G_PRIVATE_INIT) +GLIB_DEPRECATED_IN_2_32 +void g_static_private_init (GStaticPrivate *private_key); + +GLIB_DEPRECATED_IN_2_32_FOR(g_private_get) +gpointer g_static_private_get (GStaticPrivate *private_key); + +GLIB_DEPRECATED_IN_2_32_FOR(g_private_set) +void g_static_private_set (GStaticPrivate *private_key, + gpointer data, + GDestroyNotify notify); + +GLIB_DEPRECATED_IN_2_32 +void g_static_private_free (GStaticPrivate *private_key); + +GLIB_DEPRECATED_IN_2_32 +gboolean g_once_init_enter_impl (volatile gsize *location); + +GLIB_DEPRECATED_IN_2_32 +void g_thread_init (gpointer vtable); +GLIB_DEPRECATED_IN_2_32 +void g_thread_init_with_errorcheck_mutexes (gpointer vtable); + +GLIB_DEPRECATED_IN_2_32 +gboolean g_thread_get_initialized (void); + +GLIB_VAR gboolean g_threads_got_initialized; + +#define g_thread_supported() (1) GLIB_DEPRECATED_MACRO_IN_2_32 + +GLIB_DEPRECATED_IN_2_32 +GMutex * g_mutex_new (void); +GLIB_DEPRECATED_IN_2_32 +void g_mutex_free (GMutex *mutex); +GLIB_DEPRECATED_IN_2_32 +GCond * g_cond_new (void); +GLIB_DEPRECATED_IN_2_32 +void g_cond_free (GCond *cond); +GLIB_DEPRECATED_IN_2_32 +gboolean g_cond_timed_wait (GCond *cond, + GMutex *mutex, + GTimeVal *timeval); + +G_GNUC_END_IGNORE_DEPRECATIONS + +G_END_DECLS + +#endif /* __G_DEPRECATED_THREAD_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/galloca.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/galloca.h new file mode 100644 index 0000000..db01fe5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/galloca.h @@ -0,0 +1,147 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_ALLOCA_H__ +#define __G_ALLOCA_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +#if defined(__BIONIC__) && defined (GLIB_HAVE_ALLOCA_H) +# include +#elif defined(__GNUC__) +/* GCC does the right thing */ +# undef alloca +# define alloca(size) __builtin_alloca (size) +#elif defined (GLIB_HAVE_ALLOCA_H) +/* a native and working alloca.h is there */ +# include +#else /* !__GNUC__ && !GLIB_HAVE_ALLOCA_H */ +# if defined(_MSC_VER) || defined(__DMC__) +# include +# define alloca _alloca +# else /* !_MSC_VER && !__DMC__ */ +# ifdef _AIX +# pragma alloca +# else /* !_AIX */ +# ifndef alloca /* predefined by HP cc +Olibcalls */ +G_BEGIN_DECLS +char *alloca (); +G_END_DECLS +# endif /* !alloca */ +# endif /* !_AIX */ +# endif /* !_MSC_VER && !__DMC__ */ +#endif /* !__GNUC__ && !GLIB_HAVE_ALLOCA_H */ + +/** + * g_alloca: + * @size: number of bytes to allocate. + * + * Allocates @size bytes on the stack; these bytes will be freed when the current + * stack frame is cleaned up. This macro essentially just wraps the alloca() + * function present on most UNIX variants. + * Thus it provides the same advantages and pitfalls as alloca(): + * + * - alloca() is very fast, as on most systems it's implemented by just adjusting + * the stack pointer register. + * + * - It doesn't cause any memory fragmentation, within its scope, separate alloca() + * blocks just build up and are released together at function end. + * + * - Allocation sizes have to fit into the current stack frame. For instance in a + * threaded environment on Linux, the per-thread stack size is limited to 2 Megabytes, + * so be sparse with alloca() uses. + * + * - Allocation failure due to insufficient stack space is not indicated with a %NULL + * return like e.g. with malloc(). Instead, most systems probably handle it the same + * way as out of stack space situations from infinite function recursion, i.e. + * with a segmentation fault. + * + * - Allowing @size to be specified by an untrusted party would allow for them + * to trigger a segmentation fault by specifying a large size, leading to a + * denial of service vulnerability. @size must always be entirely under the + * control of the program. + * + * - Special care has to be taken when mixing alloca() with GNU C variable sized arrays. + * Stack space allocated with alloca() in the same scope as a variable sized array + * will be freed together with the variable sized array upon exit of that scope, and + * not upon exit of the enclosing function scope. + * + * Returns: space for @size bytes, allocated on the stack + */ +#define g_alloca(size) alloca (size) + +/** + * g_alloca0: + * @size: number of bytes to allocate. + * + * Wraps g_alloca() and initializes allocated memory to zeroes. + * If @size is `0` it returns %NULL. + * + * Note that the @size argument will be evaluated multiple times. + * + * Returns: (nullable) (transfer full): space for @size bytes, allocated on the stack + * + * Since: 2.72 + */ +#define g_alloca0(size) ((size) == 0 ? NULL : memset (g_alloca (size), 0, (size))) + +/** + * g_newa: + * @struct_type: Type of memory chunks to be allocated + * @n_structs: Number of chunks to be allocated + * + * Wraps g_alloca() in a more typesafe manner. + * + * As mentioned in the documentation for g_alloca(), @n_structs must always be + * entirely under the control of the program, or you may introduce a denial of + * service vulnerability. In addition, the multiplication of @struct_type by + * @n_structs is not checked, so an overflow may lead to a remote code execution + * vulnerability. + * + * Returns: Pointer to stack space for @n_structs chunks of type @struct_type + */ +#define g_newa(struct_type, n_structs) ((struct_type*) g_alloca (sizeof (struct_type) * (gsize) (n_structs))) + +/** + * g_newa0: + * @struct_type: the type of the elements to allocate. + * @n_structs: the number of elements to allocate. + * + * Wraps g_alloca0() in a more typesafe manner. + * + * Returns: (nullable) (transfer full): Pointer to stack space for @n_structs + * chunks of type @struct_type + * + * Since: 2.72 + */ +#define g_newa0(struct_type, n_structs) ((struct_type*) g_alloca0 (sizeof (struct_type) * (gsize) (n_structs))) + +#endif /* __G_ALLOCA_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/garray.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/garray.h new file mode 100644 index 0000000..2300e5f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/garray.h @@ -0,0 +1,289 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_ARRAY_H__ +#define __G_ARRAY_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GBytes GBytes; +typedef struct _GArray GArray; +typedef struct _GByteArray GByteArray; +typedef struct _GPtrArray GPtrArray; + +struct _GArray +{ + gchar *data; + guint len; +}; + +struct _GByteArray +{ + guint8 *data; + guint len; +}; + +struct _GPtrArray +{ + gpointer *pdata; + guint len; +}; + +/* Resizable arrays. remove fills any cleared spot and shortens the + * array, while preserving the order. remove_fast will distort the + * order by moving the last element to the position of the removed. + */ + +#define g_array_append_val(a,v) g_array_append_vals (a, &(v), 1) +#define g_array_prepend_val(a,v) g_array_prepend_vals (a, &(v), 1) +#define g_array_insert_val(a,i,v) g_array_insert_vals (a, i, &(v), 1) +#define g_array_index(a,t,i) (((t*) (void *) (a)->data) [(i)]) + +GLIB_AVAILABLE_IN_ALL +GArray* g_array_new (gboolean zero_terminated, + gboolean clear_, + guint element_size); +GLIB_AVAILABLE_IN_2_64 +gpointer g_array_steal (GArray *array, + gsize *len); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_sized_new (gboolean zero_terminated, + gboolean clear_, + guint element_size, + guint reserved_size); +GLIB_AVAILABLE_IN_2_62 +GArray* g_array_copy (GArray *array); +GLIB_AVAILABLE_IN_ALL +gchar* g_array_free (GArray *array, + gboolean free_segment); +GLIB_AVAILABLE_IN_ALL +GArray *g_array_ref (GArray *array); +GLIB_AVAILABLE_IN_ALL +void g_array_unref (GArray *array); +GLIB_AVAILABLE_IN_ALL +guint g_array_get_element_size (GArray *array); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_append_vals (GArray *array, + gconstpointer data, + guint len); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_prepend_vals (GArray *array, + gconstpointer data, + guint len); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_insert_vals (GArray *array, + guint index_, + gconstpointer data, + guint len); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_set_size (GArray *array, + guint length); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_remove_index (GArray *array, + guint index_); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_remove_index_fast (GArray *array, + guint index_); +GLIB_AVAILABLE_IN_ALL +GArray* g_array_remove_range (GArray *array, + guint index_, + guint length); +GLIB_AVAILABLE_IN_ALL +void g_array_sort (GArray *array, + GCompareFunc compare_func); +GLIB_AVAILABLE_IN_ALL +void g_array_sort_with_data (GArray *array, + GCompareDataFunc compare_func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_62 +gboolean g_array_binary_search (GArray *array, + gconstpointer target, + GCompareFunc compare_func, + guint *out_match_index); +GLIB_AVAILABLE_IN_ALL +void g_array_set_clear_func (GArray *array, + GDestroyNotify clear_func); + +/* Resizable pointer array. This interface is much less complicated + * than the above. Add appends a pointer. Remove fills any cleared + * spot and shortens the array. remove_fast will again distort order. + */ +#define g_ptr_array_index(array,index_) ((array)->pdata)[index_] +GLIB_AVAILABLE_IN_ALL +GPtrArray* g_ptr_array_new (void); +GLIB_AVAILABLE_IN_ALL +GPtrArray* g_ptr_array_new_with_free_func (GDestroyNotify element_free_func); +GLIB_AVAILABLE_IN_2_64 +gpointer* g_ptr_array_steal (GPtrArray *array, + gsize *len); +GLIB_AVAILABLE_IN_2_62 +GPtrArray *g_ptr_array_copy (GPtrArray *array, + GCopyFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GPtrArray* g_ptr_array_sized_new (guint reserved_size); +GLIB_AVAILABLE_IN_ALL +GPtrArray* g_ptr_array_new_full (guint reserved_size, + GDestroyNotify element_free_func); +GLIB_AVAILABLE_IN_2_74 +GPtrArray* g_ptr_array_new_null_terminated (guint reserved_size, + GDestroyNotify element_free_func, + gboolean null_terminated); +GLIB_AVAILABLE_IN_ALL +gpointer* g_ptr_array_free (GPtrArray *array, + gboolean free_seg); +GLIB_AVAILABLE_IN_ALL +GPtrArray* g_ptr_array_ref (GPtrArray *array); +GLIB_AVAILABLE_IN_ALL +void g_ptr_array_unref (GPtrArray *array); +GLIB_AVAILABLE_IN_ALL +void g_ptr_array_set_free_func (GPtrArray *array, + GDestroyNotify element_free_func); +GLIB_AVAILABLE_IN_ALL +void g_ptr_array_set_size (GPtrArray *array, + gint length); +GLIB_AVAILABLE_IN_ALL +gpointer g_ptr_array_remove_index (GPtrArray *array, + guint index_); +GLIB_AVAILABLE_IN_ALL +gpointer g_ptr_array_remove_index_fast (GPtrArray *array, + guint index_); +GLIB_AVAILABLE_IN_2_58 +gpointer g_ptr_array_steal_index (GPtrArray *array, + guint index_); +GLIB_AVAILABLE_IN_2_58 +gpointer g_ptr_array_steal_index_fast (GPtrArray *array, + guint index_); +GLIB_AVAILABLE_IN_ALL +gboolean g_ptr_array_remove (GPtrArray *array, + gpointer data); +GLIB_AVAILABLE_IN_ALL +gboolean g_ptr_array_remove_fast (GPtrArray *array, + gpointer data); +GLIB_AVAILABLE_IN_ALL +GPtrArray *g_ptr_array_remove_range (GPtrArray *array, + guint index_, + guint length); +GLIB_AVAILABLE_IN_ALL +void g_ptr_array_add (GPtrArray *array, + gpointer data); +GLIB_AVAILABLE_IN_2_62 +void g_ptr_array_extend (GPtrArray *array_to_extend, + GPtrArray *array, + GCopyFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_62 +void g_ptr_array_extend_and_steal (GPtrArray *array_to_extend, + GPtrArray *array); +GLIB_AVAILABLE_IN_2_40 +void g_ptr_array_insert (GPtrArray *array, + gint index_, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_ptr_array_sort (GPtrArray *array, + GCompareFunc compare_func); +GLIB_AVAILABLE_IN_ALL +void g_ptr_array_sort_with_data (GPtrArray *array, + GCompareDataFunc compare_func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +void g_ptr_array_foreach (GPtrArray *array, + GFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_54 +gboolean g_ptr_array_find (GPtrArray *haystack, + gconstpointer needle, + guint *index_); +GLIB_AVAILABLE_IN_2_54 +gboolean g_ptr_array_find_with_equal_func (GPtrArray *haystack, + gconstpointer needle, + GEqualFunc equal_func, + guint *index_); + +GLIB_AVAILABLE_IN_2_74 +gboolean g_ptr_array_is_null_terminated (GPtrArray *array); + +/* Byte arrays, an array of guint8. Implemented as a GArray, + * but type-safe. + */ + +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_new (void); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_new_take (guint8 *data, + gsize len); +GLIB_AVAILABLE_IN_2_64 +guint8* g_byte_array_steal (GByteArray *array, + gsize *len); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_sized_new (guint reserved_size); +GLIB_AVAILABLE_IN_ALL +guint8* g_byte_array_free (GByteArray *array, + gboolean free_segment); +GLIB_AVAILABLE_IN_ALL +GBytes* g_byte_array_free_to_bytes (GByteArray *array); +GLIB_AVAILABLE_IN_ALL +GByteArray *g_byte_array_ref (GByteArray *array); +GLIB_AVAILABLE_IN_ALL +void g_byte_array_unref (GByteArray *array); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_append (GByteArray *array, + const guint8 *data, + guint len); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_prepend (GByteArray *array, + const guint8 *data, + guint len); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_set_size (GByteArray *array, + guint length); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_remove_index (GByteArray *array, + guint index_); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_remove_index_fast (GByteArray *array, + guint index_); +GLIB_AVAILABLE_IN_ALL +GByteArray* g_byte_array_remove_range (GByteArray *array, + guint index_, + guint length); +GLIB_AVAILABLE_IN_ALL +void g_byte_array_sort (GByteArray *array, + GCompareFunc compare_func); +GLIB_AVAILABLE_IN_ALL +void g_byte_array_sort_with_data (GByteArray *array, + GCompareDataFunc compare_func, + gpointer user_data); + +G_END_DECLS + +#endif /* __G_ARRAY_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gasyncqueue.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gasyncqueue.h new file mode 100644 index 0000000..b1de117 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gasyncqueue.h @@ -0,0 +1,126 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_ASYNCQUEUE_H__ +#define __G_ASYNCQUEUE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GAsyncQueue GAsyncQueue; + +GLIB_AVAILABLE_IN_ALL +GAsyncQueue *g_async_queue_new (void); +GLIB_AVAILABLE_IN_ALL +GAsyncQueue *g_async_queue_new_full (GDestroyNotify item_free_func); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_lock (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_unlock (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +GAsyncQueue *g_async_queue_ref (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_unref (GAsyncQueue *queue); + +GLIB_DEPRECATED_FOR(g_async_queue_ref) +void g_async_queue_ref_unlocked (GAsyncQueue *queue); + +GLIB_DEPRECATED_FOR(g_async_queue_unref) +void g_async_queue_unref_and_unlock (GAsyncQueue *queue); + +GLIB_AVAILABLE_IN_ALL +void g_async_queue_push (GAsyncQueue *queue, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_push_unlocked (GAsyncQueue *queue, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_push_sorted (GAsyncQueue *queue, + gpointer data, + GCompareDataFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_push_sorted_unlocked (GAsyncQueue *queue, + gpointer data, + GCompareDataFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gpointer g_async_queue_pop (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_async_queue_pop_unlocked (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_async_queue_try_pop (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_async_queue_try_pop_unlocked (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_async_queue_timeout_pop (GAsyncQueue *queue, + guint64 timeout); +GLIB_AVAILABLE_IN_ALL +gpointer g_async_queue_timeout_pop_unlocked (GAsyncQueue *queue, + guint64 timeout); +GLIB_AVAILABLE_IN_ALL +gint g_async_queue_length (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +gint g_async_queue_length_unlocked (GAsyncQueue *queue); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_sort (GAsyncQueue *queue, + GCompareDataFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +void g_async_queue_sort_unlocked (GAsyncQueue *queue, + GCompareDataFunc func, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_46 +gboolean g_async_queue_remove (GAsyncQueue *queue, + gpointer item); +GLIB_AVAILABLE_IN_2_46 +gboolean g_async_queue_remove_unlocked (GAsyncQueue *queue, + gpointer item); +GLIB_AVAILABLE_IN_2_46 +void g_async_queue_push_front (GAsyncQueue *queue, + gpointer item); +GLIB_AVAILABLE_IN_2_46 +void g_async_queue_push_front_unlocked (GAsyncQueue *queue, + gpointer item); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_FOR(g_async_queue_timeout_pop) +gpointer g_async_queue_timed_pop (GAsyncQueue *queue, + GTimeVal *end_time); +GLIB_DEPRECATED_FOR(g_async_queue_timeout_pop_unlocked) +gpointer g_async_queue_timed_pop_unlocked (GAsyncQueue *queue, + GTimeVal *end_time); +G_GNUC_END_IGNORE_DEPRECATIONS + +G_END_DECLS + +#endif /* __G_ASYNCQUEUE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gatomic.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gatomic.h new file mode 100644 index 0000000..e1b5d23 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gatomic.h @@ -0,0 +1,586 @@ +/* + * Copyright © 2011 Ryan Lortie + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_ATOMIC_H__ +#define __G_ATOMIC_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +gint g_atomic_int_get (const volatile gint *atomic); +GLIB_AVAILABLE_IN_ALL +void g_atomic_int_set (volatile gint *atomic, + gint newval); +GLIB_AVAILABLE_IN_ALL +void g_atomic_int_inc (volatile gint *atomic); +GLIB_AVAILABLE_IN_ALL +gboolean g_atomic_int_dec_and_test (volatile gint *atomic); +GLIB_AVAILABLE_IN_ALL +gboolean g_atomic_int_compare_and_exchange (volatile gint *atomic, + gint oldval, + gint newval); +GLIB_AVAILABLE_IN_2_74 +gboolean g_atomic_int_compare_and_exchange_full (gint *atomic, + gint oldval, + gint newval, + gint *preval); +GLIB_AVAILABLE_IN_2_74 +gint g_atomic_int_exchange (gint *atomic, + gint newval); +GLIB_AVAILABLE_IN_ALL +gint g_atomic_int_add (volatile gint *atomic, + gint val); +GLIB_AVAILABLE_IN_2_30 +guint g_atomic_int_and (volatile guint *atomic, + guint val); +GLIB_AVAILABLE_IN_2_30 +guint g_atomic_int_or (volatile guint *atomic, + guint val); +GLIB_AVAILABLE_IN_ALL +guint g_atomic_int_xor (volatile guint *atomic, + guint val); + +GLIB_AVAILABLE_IN_ALL +gpointer g_atomic_pointer_get (const volatile void *atomic); +GLIB_AVAILABLE_IN_ALL +void g_atomic_pointer_set (volatile void *atomic, + gpointer newval); +GLIB_AVAILABLE_IN_ALL +gboolean g_atomic_pointer_compare_and_exchange (volatile void *atomic, + gpointer oldval, + gpointer newval); +GLIB_AVAILABLE_IN_2_74 +gboolean g_atomic_pointer_compare_and_exchange_full (void *atomic, + gpointer oldval, + gpointer newval, + void *preval); +GLIB_AVAILABLE_IN_2_74 +gpointer g_atomic_pointer_exchange (void *atomic, + gpointer newval); +GLIB_AVAILABLE_IN_ALL +gssize g_atomic_pointer_add (volatile void *atomic, + gssize val); +GLIB_AVAILABLE_IN_2_30 +gsize g_atomic_pointer_and (volatile void *atomic, + gsize val); +GLIB_AVAILABLE_IN_2_30 +gsize g_atomic_pointer_or (volatile void *atomic, + gsize val); +GLIB_AVAILABLE_IN_ALL +gsize g_atomic_pointer_xor (volatile void *atomic, + gsize val); + +GLIB_DEPRECATED_IN_2_30_FOR(g_atomic_int_add) +gint g_atomic_int_exchange_and_add (volatile gint *atomic, + gint val); + +G_END_DECLS + +#if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + +/* We prefer the new C11-style atomic extension of GCC if available */ +#if defined(__ATOMIC_SEQ_CST) + +#define g_atomic_int_get(atomic) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + gint gaig_temp; \ + (void) (0 ? *(atomic) ^ *(atomic) : 1); \ + __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST); \ + (gint) gaig_temp; \ + })) +#define g_atomic_int_set(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + gint gais_temp = (gint) (newval); \ + (void) (0 ? *(atomic) ^ (newval) : 1); \ + __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST); \ + })) + +#if defined(glib_typeof) +#define g_atomic_pointer_get(atomic) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + glib_typeof (*(atomic)) gapg_temp_newval; \ + glib_typeof ((atomic)) gapg_temp_atomic = (atomic); \ + __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \ + gapg_temp_newval; \ + })) +#define g_atomic_pointer_set(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + glib_typeof ((atomic)) gaps_temp_atomic = (atomic); \ + glib_typeof (*(atomic)) gaps_temp_newval = (newval); \ + (void) (0 ? (gpointer) * (atomic) : NULL); \ + __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \ + })) +#else /* if !(defined(glib_typeof) */ +#define g_atomic_pointer_get(atomic) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + gpointer gapg_temp_newval; \ + gpointer *gapg_temp_atomic = (gpointer *)(atomic); \ + __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \ + gapg_temp_newval; \ + })) +#define g_atomic_pointer_set(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + gpointer *gaps_temp_atomic = (gpointer *)(atomic); \ + gpointer gaps_temp_newval = (gpointer)(newval); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \ + })) +#endif /* if defined(glib_typeof) */ + +#define g_atomic_int_inc(atomic) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ *(atomic) : 1); \ + (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_int_dec_and_test(atomic) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ *(atomic) : 1); \ + __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1; \ + })) +#if defined(glib_typeof) && defined(__cplusplus) +/* See comments below about equivalent g_atomic_pointer_compare_and_exchange() + * shenanigans for type-safety when compiling in C++ mode. */ +#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \ + (G_GNUC_EXTENSION ({ \ + glib_typeof (*(atomic)) gaicae_oldval = (oldval); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1); \ + __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \ + })) +#else /* if !(defined(glib_typeof) && defined(__cplusplus)) */ +#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \ + (G_GNUC_EXTENSION ({ \ + gint gaicae_oldval = (oldval); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1); \ + __atomic_compare_exchange_n ((atomic), (void *) (&(gaicae_oldval)), (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \ + })) +#endif /* defined(glib_typeof) */ +#define g_atomic_int_compare_and_exchange_full(atomic, oldval, newval, preval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + G_STATIC_ASSERT (sizeof *(preval) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) ^ (oldval) ^ *(preval) : 1); \ + *(preval) = (oldval); \ + __atomic_compare_exchange_n ((atomic), (preval), (newval), FALSE, \ + __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) \ + ? TRUE : FALSE; \ + })) +#define g_atomic_int_exchange(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) : 1); \ + (gint) __atomic_exchange_n ((atomic), (newval), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_int_add(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_int_and(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (guint) __atomic_fetch_and ((atomic), (val), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_int_or(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (guint) __atomic_fetch_or ((atomic), (val), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_int_xor(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (guint) __atomic_fetch_xor ((atomic), (val), __ATOMIC_SEQ_CST); \ + })) + +#if defined(glib_typeof) && defined(__cplusplus) +/* This is typesafe because we check we can assign oldval to the type of + * (*atomic). Unfortunately it can only be done in C++ because gcc/clang warn + * when atomic is volatile and not oldval, or when atomic is gsize* and oldval + * is NULL. Note that clang++ force us to be typesafe because it is an error if the 2nd + * argument of __atomic_compare_exchange_n() has a different type than the + * first. + * https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1919 + * https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1715#note_1024120. */ +#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer)); \ + glib_typeof (*(atomic)) gapcae_oldval = (oldval); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \ + })) +#else /* if !(defined(glib_typeof) && defined(__cplusplus) */ +#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer)); \ + gpointer gapcae_oldval = (gpointer)(oldval); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + __atomic_compare_exchange_n ((atomic), (void *) (&(gapcae_oldval)), (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \ + })) +#endif /* defined(glib_typeof) */ +#define g_atomic_pointer_compare_and_exchange_full(atomic, oldval, newval, preval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(preval) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (gpointer) *(preval) : NULL); \ + *(preval) = (oldval); \ + __atomic_compare_exchange_n ((atomic), (preval), (newval), FALSE, \ + __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? \ + TRUE : FALSE; \ + })) +#define g_atomic_pointer_exchange(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (gpointer) __atomic_exchange_n ((atomic), (newval), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_pointer_add(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gssize) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_pointer_and(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + gsize *gapa_atomic = (gsize *) (atomic); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gsize) __atomic_fetch_and (gapa_atomic, (val), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_pointer_or(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + gsize *gapo_atomic = (gsize *) (atomic); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gsize) __atomic_fetch_or (gapo_atomic, (val), __ATOMIC_SEQ_CST); \ + })) +#define g_atomic_pointer_xor(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + gsize *gapx_atomic = (gsize *) (atomic); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gsize) __atomic_fetch_xor (gapx_atomic, (val), __ATOMIC_SEQ_CST); \ + })) + +#else /* defined(__ATOMIC_SEQ_CST) */ + +/* We want to achieve __ATOMIC_SEQ_CST semantics here. See + * https://en.cppreference.com/w/c/atomic/memory_order#Constants. For load + * operations, that means performing an *acquire*: + * > A load operation with this memory order performs the acquire operation on + * > the affected memory location: no reads or writes in the current thread can + * > be reordered before this load. All writes in other threads that release + * > the same atomic variable are visible in the current thread. + * + * “no reads or writes in the current thread can be reordered before this load” + * is implemented using a compiler barrier (a no-op `__asm__` section) to + * prevent instruction reordering. Writes in other threads are synchronised + * using `__sync_synchronize()`. It’s unclear from the GCC documentation whether + * `__sync_synchronize()` acts as a compiler barrier, hence our explicit use of + * one. + * + * For store operations, `__ATOMIC_SEQ_CST` means performing a *release*: + * > A store operation with this memory order performs the release operation: + * > no reads or writes in the current thread can be reordered after this store. + * > All writes in the current thread are visible in other threads that acquire + * > the same atomic variable (see Release-Acquire ordering below) and writes + * > that carry a dependency into the atomic variable become visible in other + * > threads that consume the same atomic (see Release-Consume ordering below). + * + * “no reads or writes in the current thread can be reordered after this store” + * is implemented using a compiler barrier to prevent instruction reordering. + * “All writes in the current thread are visible in other threads” is implemented + * using `__sync_synchronize()`; similarly for “writes that carry a dependency”. + */ +#define g_atomic_int_get(atomic) \ + (G_GNUC_EXTENSION ({ \ + gint gaig_result; \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ *(atomic) : 1); \ + gaig_result = (gint) *(atomic); \ + __sync_synchronize (); \ + __asm__ __volatile__ ("" : : : "memory"); \ + gaig_result; \ + })) +#define g_atomic_int_set(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) : 1); \ + __sync_synchronize (); \ + __asm__ __volatile__ ("" : : : "memory"); \ + *(atomic) = (newval); \ + })) +#define g_atomic_pointer_get(atomic) \ + (G_GNUC_EXTENSION ({ \ + gpointer gapg_result; \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + gapg_result = (gpointer) *(atomic); \ + __sync_synchronize (); \ + __asm__ __volatile__ ("" : : : "memory"); \ + gapg_result; \ + })) +#if defined(glib_typeof) +#define g_atomic_pointer_set(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + __sync_synchronize (); \ + __asm__ __volatile__ ("" : : : "memory"); \ + *(atomic) = (glib_typeof (*(atomic))) (gsize) (newval); \ + })) +#else /* if !(defined(glib_typeof) */ +#define g_atomic_pointer_set(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + __sync_synchronize (); \ + __asm__ __volatile__ ("" : : : "memory"); \ + *(atomic) = (gpointer) (gsize) (newval); \ + })) +#endif /* if defined(glib_typeof) */ + +#define g_atomic_int_inc(atomic) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ *(atomic) : 1); \ + (void) __sync_fetch_and_add ((atomic), 1); \ + })) +#define g_atomic_int_dec_and_test(atomic) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ *(atomic) : 1); \ + __sync_fetch_and_sub ((atomic), 1) == 1; \ + })) +#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1); \ + __sync_bool_compare_and_swap ((atomic), (oldval), (newval)) ? TRUE : FALSE; \ + })) +#define g_atomic_int_compare_and_exchange_full(atomic, oldval, newval, preval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + G_STATIC_ASSERT (sizeof *(preval) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) ^ (oldval) ^ *(preval) : 1); \ + *(preval) = __sync_val_compare_and_swap ((atomic), (oldval), (newval)); \ + (*(preval) == (oldval)) ? TRUE : FALSE; \ + })) +#if defined(_GLIB_GCC_HAVE_SYNC_SWAP) +#define g_atomic_int_exchange(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) : 1); \ + (gint) __sync_swap ((atomic), (newval)); \ + })) +#else /* defined(_GLIB_GCC_HAVE_SYNC_SWAP) */ + #define g_atomic_int_exchange(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + gint oldval; \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (newval) : 1); \ + do \ + { \ + oldval = *atomic; \ + } while (!__sync_bool_compare_and_swap (atomic, oldval, newval)); \ + oldval; \ + })) +#endif /* defined(_GLIB_GCC_HAVE_SYNC_SWAP) */ +#define g_atomic_int_add(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (gint) __sync_fetch_and_add ((atomic), (val)); \ + })) +#define g_atomic_int_and(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (guint) __sync_fetch_and_and ((atomic), (val)); \ + })) +#define g_atomic_int_or(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (guint) __sync_fetch_and_or ((atomic), (val)); \ + })) +#define g_atomic_int_xor(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ + (void) (0 ? *(atomic) ^ (val) : 1); \ + (guint) __sync_fetch_and_xor ((atomic), (val)); \ + })) + +#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + __sync_bool_compare_and_swap ((atomic), (oldval), (newval)) ? TRUE : FALSE; \ + })) +#define g_atomic_pointer_compare_and_exchange_full(atomic, oldval, newval, preval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(preval) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (gpointer) *(preval) : NULL); \ + *(preval) = __sync_val_compare_and_swap ((atomic), (oldval), (newval)); \ + (*(preval) == (oldval)) ? TRUE : FALSE; \ + })) +#if defined(_GLIB_GCC_HAVE_SYNC_SWAP) +#define g_atomic_pointer_exchange(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (gpointer) __sync_swap ((atomic), (newval)); \ + })) +#else +#define g_atomic_pointer_exchange(atomic, newval) \ + (G_GNUC_EXTENSION ({ \ + gpointer oldval; \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + do \ + { \ + oldval = (gpointer) *atomic; \ + } while (!__sync_bool_compare_and_swap (atomic, oldval, newval)); \ + oldval; \ + })) +#endif /* defined(_GLIB_GCC_HAVE_SYNC_SWAP) */ +#define g_atomic_pointer_add(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gssize) __sync_fetch_and_add ((atomic), (val)); \ + })) +#define g_atomic_pointer_and(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gsize) __sync_fetch_and_and ((atomic), (val)); \ + })) +#define g_atomic_pointer_or(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gsize) __sync_fetch_and_or ((atomic), (val)); \ + })) +#define g_atomic_pointer_xor(atomic, val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ + (void) (0 ? (val) ^ (val) : 1); \ + (gsize) __sync_fetch_and_xor ((atomic), (val)); \ + })) + +#endif /* !defined(__ATOMIC_SEQ_CST) */ + +#else /* defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) */ + +#define g_atomic_int_get(atomic) \ + (g_atomic_int_get ((gint *) (atomic))) +#define g_atomic_int_set(atomic, newval) \ + (g_atomic_int_set ((gint *) (atomic), (gint) (newval))) +#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \ + (g_atomic_int_compare_and_exchange ((gint *) (atomic), (oldval), (newval))) +#define g_atomic_int_compare_and_exchange_full(atomic, oldval, newval, preval) \ + (g_atomic_int_compare_and_exchange_full ((gint *) (atomic), (oldval), (newval), (gint *) (preval))) +#define g_atomic_int_exchange(atomic, newval) \ + (g_atomic_int_exchange ((gint *) (atomic), (newval))) +#define g_atomic_int_add(atomic, val) \ + (g_atomic_int_add ((gint *) (atomic), (val))) +#define g_atomic_int_and(atomic, val) \ + (g_atomic_int_and ((guint *) (atomic), (val))) +#define g_atomic_int_or(atomic, val) \ + (g_atomic_int_or ((guint *) (atomic), (val))) +#define g_atomic_int_xor(atomic, val) \ + (g_atomic_int_xor ((guint *) (atomic), (val))) +#define g_atomic_int_inc(atomic) \ + (g_atomic_int_inc ((gint *) (atomic))) +#define g_atomic_int_dec_and_test(atomic) \ + (g_atomic_int_dec_and_test ((gint *) (atomic))) + +#if defined(glib_typeof) + /* The (void *) cast in the middle *looks* redundant, because + * g_atomic_pointer_get returns void * already, but it's to silence + * -Werror=bad-function-cast when we're doing something like: + * guintptr a, b; ...; a = g_atomic_pointer_get (&b); + * which would otherwise be assigning the void * result of + * g_atomic_pointer_get directly to the pointer-sized but + * non-pointer-typed result. */ +#define g_atomic_pointer_get(atomic) \ + (glib_typeof (*(atomic))) (void *) ((g_atomic_pointer_get) ((void *) atomic)) +#else /* !(defined(glib_typeof) */ +#define g_atomic_pointer_get(atomic) \ + (g_atomic_pointer_get (atomic)) +#endif + +#define g_atomic_pointer_set(atomic, newval) \ + (g_atomic_pointer_set ((atomic), (gpointer) (newval))) + +#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \ + (g_atomic_pointer_compare_and_exchange ((atomic), (gpointer) (oldval), (gpointer) (newval))) +#define g_atomic_pointer_compare_and_exchange_full(atomic, oldval, newval, prevval) \ + (g_atomic_pointer_compare_and_exchange_full ((atomic), (gpointer) (oldval), (gpointer) (newval), (prevval))) +#define g_atomic_pointer_exchange(atomic, newval) \ + (g_atomic_pointer_exchange ((atomic), (gpointer) (newval))) +#define g_atomic_pointer_add(atomic, val) \ + (g_atomic_pointer_add ((atomic), (gssize) (val))) +#define g_atomic_pointer_and(atomic, val) \ + (g_atomic_pointer_and ((atomic), (gsize) (val))) +#define g_atomic_pointer_or(atomic, val) \ + (g_atomic_pointer_or ((atomic), (gsize) (val))) +#define g_atomic_pointer_xor(atomic, val) \ + (g_atomic_pointer_xor ((atomic), (gsize) (val))) + +#endif /* defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) */ + +#endif /* __G_ATOMIC_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbacktrace.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbacktrace.h new file mode 100644 index 0000000..11293b3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbacktrace.h @@ -0,0 +1,74 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_BACKTRACE_H__ +#define __G_BACKTRACE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#ifdef __sun__ +#include +#endif +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +void g_on_error_query (const gchar *prg_name); +GLIB_AVAILABLE_IN_ALL +void g_on_error_stack_trace (const gchar *prg_name); + +/** + * G_BREAKPOINT: + * + * Inserts a breakpoint instruction into the code. + * + * On architectures which support it, this is implemented as a soft interrupt + * and on other architectures it raises a `SIGTRAP` signal. + * + * `SIGTRAP` is used rather than abort() to allow breakpoints to be skipped past + * in a debugger if they are not the desired target of debugging. + */ +#if (defined (__i386__) || defined (__x86_64__)) && defined (__GNUC__) && __GNUC__ >= 2 +# define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("int $03"); }G_STMT_END +#elif (defined (_MSC_VER) || defined (__DMC__)) && defined (_M_IX86) +# define G_BREAKPOINT() G_STMT_START{ __asm int 3h }G_STMT_END +#elif defined (_MSC_VER) +# define G_BREAKPOINT() G_STMT_START{ __debugbreak(); }G_STMT_END +#elif defined (__alpha__) && !defined(__osf__) && defined (__GNUC__) && __GNUC__ >= 2 +# define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END +#elif defined (__APPLE__) || (defined(_WIN32) && (defined(__clang__) || defined(__GNUC__))) +# define G_BREAKPOINT() G_STMT_START{ __builtin_trap(); }G_STMT_END +#else /* !__i386__ && !__alpha__ */ +# define G_BREAKPOINT() G_STMT_START{ raise (SIGTRAP); }G_STMT_END +#endif /* __i386__ */ + +G_END_DECLS + +#endif /* __G_BACKTRACE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbase64.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbase64.h new file mode 100644 index 0000000..4cb9ef2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbase64.h @@ -0,0 +1,63 @@ +/* gbase64.h - Base64 coding functions + * + * Copyright (C) 2005 Alexander Larsson + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_BASE64_H__ +#define __G_BASE64_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +gsize g_base64_encode_step (const guchar *in, + gsize len, + gboolean break_lines, + gchar *out, + gint *state, + gint *save); +GLIB_AVAILABLE_IN_ALL +gsize g_base64_encode_close (gboolean break_lines, + gchar *out, + gint *state, + gint *save); +GLIB_AVAILABLE_IN_ALL +gchar* g_base64_encode (const guchar *data, + gsize len) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gsize g_base64_decode_step (const gchar *in, + gsize len, + guchar *out, + gint *state, + guint *save); +GLIB_AVAILABLE_IN_ALL +guchar *g_base64_decode (const gchar *text, + gsize *out_len) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +guchar *g_base64_decode_inplace (gchar *text, + gsize *out_len); + + +G_END_DECLS + +#endif /* __G_BASE64_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbitlock.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbitlock.h new file mode 100644 index 0000000..bef2c09 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbitlock.h @@ -0,0 +1,78 @@ +/* + * Copyright © 2008 Ryan Lortie + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_BITLOCK_H__ +#define __G_BITLOCK_H__ + +#include + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +void g_bit_lock (volatile gint *address, + gint lock_bit); +GLIB_AVAILABLE_IN_ALL +gboolean g_bit_trylock (volatile gint *address, + gint lock_bit); +GLIB_AVAILABLE_IN_ALL +void g_bit_unlock (volatile gint *address, + gint lock_bit); + +GLIB_AVAILABLE_IN_ALL +void g_pointer_bit_lock (volatile void *address, + gint lock_bit); +GLIB_AVAILABLE_IN_ALL +gboolean g_pointer_bit_trylock (volatile void *address, + gint lock_bit); +GLIB_AVAILABLE_IN_ALL +void g_pointer_bit_unlock (volatile void *address, + gint lock_bit); + +#ifdef __GNUC__ + +#define g_pointer_bit_lock(address, lock_bit) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \ + g_pointer_bit_lock ((address), (lock_bit)); \ + })) + +#define g_pointer_bit_trylock(address, lock_bit) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \ + g_pointer_bit_trylock ((address), (lock_bit)); \ + })) + +#define g_pointer_bit_unlock(address, lock_bit) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \ + g_pointer_bit_unlock ((address), (lock_bit)); \ + })) + +#endif + +G_END_DECLS + +#endif /* __G_BITLOCK_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbookmarkfile.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbookmarkfile.h new file mode 100644 index 0000000..e401862 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbookmarkfile.h @@ -0,0 +1,297 @@ +/* gbookmarkfile.h: parsing and building desktop bookmarks + * + * Copyright (C) 2005-2006 Emmanuele Bassi + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_BOOKMARK_FILE_H__ +#define __G_BOOKMARK_FILE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +/** + * G_BOOKMARK_FILE_ERROR: + * + * Error domain for bookmark file parsing. + * + * Errors in this domain will be from the #GBookmarkFileError + * enumeration. See #GError for information on error domains. + */ +#define G_BOOKMARK_FILE_ERROR (g_bookmark_file_error_quark ()) + + +/** + * GBookmarkFileError: + * @G_BOOKMARK_FILE_ERROR_INVALID_URI: URI was ill-formed + * @G_BOOKMARK_FILE_ERROR_INVALID_VALUE: a requested field was not found + * @G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED: a requested application did + * not register a bookmark + * @G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND: a requested URI was not found + * @G_BOOKMARK_FILE_ERROR_READ: document was ill formed + * @G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING: the text being parsed was + * in an unknown encoding + * @G_BOOKMARK_FILE_ERROR_WRITE: an error occurred while writing + * @G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND: requested file was not found + * + * Error codes returned by bookmark file parsing. + */ +typedef enum +{ + G_BOOKMARK_FILE_ERROR_INVALID_URI, + G_BOOKMARK_FILE_ERROR_INVALID_VALUE, + G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED, + G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND, + G_BOOKMARK_FILE_ERROR_READ, + G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING, + G_BOOKMARK_FILE_ERROR_WRITE, + G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND +} GBookmarkFileError; + +GLIB_AVAILABLE_IN_ALL +GQuark g_bookmark_file_error_quark (void); + +/** + * GBookmarkFile: + * + * An opaque data structure representing a set of bookmarks. + */ +typedef struct _GBookmarkFile GBookmarkFile; + +GLIB_AVAILABLE_IN_ALL +GBookmarkFile *g_bookmark_file_new (void); +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_free (GBookmarkFile *bookmark); + +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_load_from_file (GBookmarkFile *bookmark, + const gchar *filename, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_load_from_data (GBookmarkFile *bookmark, + const gchar *data, + gsize length, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_load_from_data_dirs (GBookmarkFile *bookmark, + const gchar *file, + gchar **full_path, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar * g_bookmark_file_to_data (GBookmarkFile *bookmark, + gsize *length, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_to_file (GBookmarkFile *bookmark, + const gchar *filename, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_set_title (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *title); +GLIB_AVAILABLE_IN_ALL +gchar * g_bookmark_file_get_title (GBookmarkFile *bookmark, + const gchar *uri, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_set_description (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *description); +GLIB_AVAILABLE_IN_ALL +gchar * g_bookmark_file_get_description (GBookmarkFile *bookmark, + const gchar *uri, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_set_mime_type (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *mime_type); +GLIB_AVAILABLE_IN_ALL +gchar * g_bookmark_file_get_mime_type (GBookmarkFile *bookmark, + const gchar *uri, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_set_groups (GBookmarkFile *bookmark, + const gchar *uri, + const gchar **groups, + gsize length); +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_add_group (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *group); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_has_group (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *group, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar ** g_bookmark_file_get_groups (GBookmarkFile *bookmark, + const gchar *uri, + gsize *length, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_add_application (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *name, + const gchar *exec); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_has_application (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *name, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar ** g_bookmark_file_get_applications (GBookmarkFile *bookmark, + const gchar *uri, + gsize *length, + GError **error); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_set_application_info) +gboolean g_bookmark_file_set_app_info (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *name, + const gchar *exec, + gint count, + time_t stamp, + GError **error); +GLIB_AVAILABLE_IN_2_66 +gboolean g_bookmark_file_set_application_info (GBookmarkFile *bookmark, + const char *uri, + const char *name, + const char *exec, + int count, + GDateTime *stamp, + GError **error); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_get_application_info) +gboolean g_bookmark_file_get_app_info (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *name, + gchar **exec, + guint *count, + time_t *stamp, + GError **error); +GLIB_AVAILABLE_IN_2_66 +gboolean g_bookmark_file_get_application_info (GBookmarkFile *bookmark, + const char *uri, + const char *name, + char **exec, + unsigned int *count, + GDateTime **stamp, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_set_is_private (GBookmarkFile *bookmark, + const gchar *uri, + gboolean is_private); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_get_is_private (GBookmarkFile *bookmark, + const gchar *uri, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_bookmark_file_set_icon (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *href, + const gchar *mime_type); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_get_icon (GBookmarkFile *bookmark, + const gchar *uri, + gchar **href, + gchar **mime_type, + GError **error); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_set_added_date_time) +void g_bookmark_file_set_added (GBookmarkFile *bookmark, + const gchar *uri, + time_t added); +GLIB_AVAILABLE_IN_2_66 +void g_bookmark_file_set_added_date_time (GBookmarkFile *bookmark, + const char *uri, + GDateTime *added); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_get_added_date_time) +time_t g_bookmark_file_get_added (GBookmarkFile *bookmark, + const gchar *uri, + GError **error); +GLIB_AVAILABLE_IN_2_66 +GDateTime *g_bookmark_file_get_added_date_time (GBookmarkFile *bookmark, + const char *uri, + GError **error); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_set_modified_date_time) +void g_bookmark_file_set_modified (GBookmarkFile *bookmark, + const gchar *uri, + time_t modified); +GLIB_AVAILABLE_IN_2_66 +void g_bookmark_file_set_modified_date_time (GBookmarkFile *bookmark, + const char *uri, + GDateTime *modified); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_get_modified_date_time) +time_t g_bookmark_file_get_modified (GBookmarkFile *bookmark, + const gchar *uri, + GError **error); +GLIB_AVAILABLE_IN_2_66 +GDateTime *g_bookmark_file_get_modified_date_time (GBookmarkFile *bookmark, + const char *uri, + GError **error); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_set_visited_date_time) +void g_bookmark_file_set_visited (GBookmarkFile *bookmark, + const gchar *uri, + time_t visited); +GLIB_AVAILABLE_IN_2_66 +void g_bookmark_file_set_visited_date_time (GBookmarkFile *bookmark, + const char *uri, + GDateTime *visited); +GLIB_DEPRECATED_IN_2_66_FOR(g_bookmark_file_get_visited_date_time) +time_t g_bookmark_file_get_visited (GBookmarkFile *bookmark, + const gchar *uri, + GError **error); +GLIB_AVAILABLE_IN_2_66 +GDateTime *g_bookmark_file_get_visited_date_time (GBookmarkFile *bookmark, + const char *uri, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_has_item (GBookmarkFile *bookmark, + const gchar *uri); +GLIB_AVAILABLE_IN_ALL +gint g_bookmark_file_get_size (GBookmarkFile *bookmark); +GLIB_AVAILABLE_IN_ALL +gchar ** g_bookmark_file_get_uris (GBookmarkFile *bookmark, + gsize *length); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_remove_group (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *group, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_remove_application (GBookmarkFile *bookmark, + const gchar *uri, + const gchar *name, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_remove_item (GBookmarkFile *bookmark, + const gchar *uri, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_bookmark_file_move_item (GBookmarkFile *bookmark, + const gchar *old_uri, + const gchar *new_uri, + GError **error); + +G_END_DECLS + +#endif /* __G_BOOKMARK_FILE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbytes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbytes.h new file mode 100644 index 0000000..d934989 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gbytes.h @@ -0,0 +1,99 @@ +/* + * Copyright © 2009, 2010 Codethink Limited + * Copyright © 2011 Collabora Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + * Stef Walter + */ + +#ifndef __G_BYTES_H__ +#define __G_BYTES_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +GBytes * g_bytes_new (gconstpointer data, + gsize size); + +GLIB_AVAILABLE_IN_ALL +GBytes * g_bytes_new_take (gpointer data, + gsize size); + +GLIB_AVAILABLE_IN_ALL +GBytes * g_bytes_new_static (gconstpointer data, + gsize size); + +GLIB_AVAILABLE_IN_ALL +GBytes * g_bytes_new_with_free_func (gconstpointer data, + gsize size, + GDestroyNotify free_func, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +GBytes * g_bytes_new_from_bytes (GBytes *bytes, + gsize offset, + gsize length); + +GLIB_AVAILABLE_IN_ALL +gconstpointer g_bytes_get_data (GBytes *bytes, + gsize *size); + +GLIB_AVAILABLE_IN_ALL +gsize g_bytes_get_size (GBytes *bytes); + +GLIB_AVAILABLE_IN_ALL +GBytes * g_bytes_ref (GBytes *bytes); + +GLIB_AVAILABLE_IN_ALL +void g_bytes_unref (GBytes *bytes); + +GLIB_AVAILABLE_IN_ALL +gpointer g_bytes_unref_to_data (GBytes *bytes, + gsize *size); + +GLIB_AVAILABLE_IN_ALL +GByteArray * g_bytes_unref_to_array (GBytes *bytes); + +GLIB_AVAILABLE_IN_ALL +guint g_bytes_hash (gconstpointer bytes); + +GLIB_AVAILABLE_IN_ALL +gboolean g_bytes_equal (gconstpointer bytes1, + gconstpointer bytes2); + +GLIB_AVAILABLE_IN_ALL +gint g_bytes_compare (gconstpointer bytes1, + gconstpointer bytes2); + +GLIB_AVAILABLE_IN_2_70 +gconstpointer g_bytes_get_region (GBytes *bytes, + gsize element_size, + gsize offset, + gsize n_elements); + + +G_END_DECLS + +#endif /* __G_BYTES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gcharset.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gcharset.h new file mode 100644 index 0000000..144ec7a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gcharset.h @@ -0,0 +1,49 @@ +/* gcharset.h - Charset functions + * + * Copyright (C) 2011 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_CHARSET_H__ +#define __G_CHARSET_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +gboolean g_get_charset (const char **charset); +GLIB_AVAILABLE_IN_ALL +gchar * g_get_codeset (void); +GLIB_AVAILABLE_IN_2_62 +gboolean g_get_console_charset (const char **charset); + +GLIB_AVAILABLE_IN_ALL +const gchar * const * g_get_language_names (void); +GLIB_AVAILABLE_IN_2_58 +const gchar * const * g_get_language_names_with_category + (const gchar *category_name); +GLIB_AVAILABLE_IN_ALL +gchar ** g_get_locale_variants (const gchar *locale); + +G_END_DECLS + +#endif /* __G_CHARSET_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gchecksum.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gchecksum.h new file mode 100644 index 0000000..e5c54e7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gchecksum.h @@ -0,0 +1,106 @@ +/* gchecksum.h - data hashing functions + * + * Copyright (C) 2007 Emmanuele Bassi + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_CHECKSUM_H__ +#define __G_CHECKSUM_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/** + * GChecksumType: + * @G_CHECKSUM_MD5: Use the MD5 hashing algorithm + * @G_CHECKSUM_SHA1: Use the SHA-1 hashing algorithm + * @G_CHECKSUM_SHA256: Use the SHA-256 hashing algorithm + * @G_CHECKSUM_SHA384: Use the SHA-384 hashing algorithm (Since: 2.51) + * @G_CHECKSUM_SHA512: Use the SHA-512 hashing algorithm (Since: 2.36) + * + * The hashing algorithm to be used by #GChecksum when performing the + * digest of some data. + * + * Note that the #GChecksumType enumeration may be extended at a later + * date to include new hashing algorithm types. + * + * Since: 2.16 + */ +typedef enum { + G_CHECKSUM_MD5, + G_CHECKSUM_SHA1, + G_CHECKSUM_SHA256, + G_CHECKSUM_SHA512, + G_CHECKSUM_SHA384 +} GChecksumType; + +/** + * GChecksum: + * + * An opaque structure representing a checksumming operation. + * + * To create a new GChecksum, use g_checksum_new(). To free + * a GChecksum, use g_checksum_free(). + * + * Since: 2.16 + */ +typedef struct _GChecksum GChecksum; + +GLIB_AVAILABLE_IN_ALL +gssize g_checksum_type_get_length (GChecksumType checksum_type); + +GLIB_AVAILABLE_IN_ALL +GChecksum * g_checksum_new (GChecksumType checksum_type); +GLIB_AVAILABLE_IN_ALL +void g_checksum_reset (GChecksum *checksum); +GLIB_AVAILABLE_IN_ALL +GChecksum * g_checksum_copy (const GChecksum *checksum); +GLIB_AVAILABLE_IN_ALL +void g_checksum_free (GChecksum *checksum); +GLIB_AVAILABLE_IN_ALL +void g_checksum_update (GChecksum *checksum, + const guchar *data, + gssize length); +GLIB_AVAILABLE_IN_ALL +const gchar * g_checksum_get_string (GChecksum *checksum); +GLIB_AVAILABLE_IN_ALL +void g_checksum_get_digest (GChecksum *checksum, + guint8 *buffer, + gsize *digest_len); + +GLIB_AVAILABLE_IN_ALL +gchar *g_compute_checksum_for_data (GChecksumType checksum_type, + const guchar *data, + gsize length); +GLIB_AVAILABLE_IN_ALL +gchar *g_compute_checksum_for_string (GChecksumType checksum_type, + const gchar *str, + gssize length); + +GLIB_AVAILABLE_IN_2_34 +gchar *g_compute_checksum_for_bytes (GChecksumType checksum_type, + GBytes *data); + +G_END_DECLS + +#endif /* __G_CHECKSUM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gconvert.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gconvert.h new file mode 100644 index 0000000..81b41c0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gconvert.h @@ -0,0 +1,179 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_CONVERT_H__ +#define __G_CONVERT_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GConvertError: + * @G_CONVERT_ERROR_NO_CONVERSION: Conversion between the requested character + * sets is not supported. + * @G_CONVERT_ERROR_ILLEGAL_SEQUENCE: Invalid byte sequence in conversion input; + * or the character sequence could not be represented in the target + * character set. + * @G_CONVERT_ERROR_FAILED: Conversion failed for some reason. + * @G_CONVERT_ERROR_PARTIAL_INPUT: Partial character sequence at end of input. + * @G_CONVERT_ERROR_BAD_URI: URI is invalid. + * @G_CONVERT_ERROR_NOT_ABSOLUTE_PATH: Pathname is not an absolute path. + * @G_CONVERT_ERROR_NO_MEMORY: No memory available. Since: 2.40 + * @G_CONVERT_ERROR_EMBEDDED_NUL: An embedded NUL character is present in + * conversion output where a NUL-terminated string is expected. + * Since: 2.56 + * + * Error codes returned by character set conversion routines. + */ +typedef enum +{ + G_CONVERT_ERROR_NO_CONVERSION, + G_CONVERT_ERROR_ILLEGAL_SEQUENCE, + G_CONVERT_ERROR_FAILED, + G_CONVERT_ERROR_PARTIAL_INPUT, + G_CONVERT_ERROR_BAD_URI, + G_CONVERT_ERROR_NOT_ABSOLUTE_PATH, + G_CONVERT_ERROR_NO_MEMORY, + G_CONVERT_ERROR_EMBEDDED_NUL +} GConvertError; + +/** + * G_CONVERT_ERROR: + * + * Error domain for character set conversions. Errors in this domain will + * be from the #GConvertError enumeration. See #GError for information on + * error domains. + */ +#define G_CONVERT_ERROR g_convert_error_quark() +GLIB_AVAILABLE_IN_ALL +GQuark g_convert_error_quark (void); + +/** + * GIConv: (skip) + * + * The GIConv struct wraps an iconv() conversion descriptor. It contains + * private data and should only be accessed using the following functions. + */ +typedef struct _GIConv *GIConv; + +GLIB_AVAILABLE_IN_ALL +GIConv g_iconv_open (const gchar *to_codeset, + const gchar *from_codeset); +GLIB_AVAILABLE_IN_ALL +gsize g_iconv (GIConv converter, + gchar **inbuf, + gsize *inbytes_left, + gchar **outbuf, + gsize *outbytes_left); +GLIB_AVAILABLE_IN_ALL +gint g_iconv_close (GIConv converter); + + +GLIB_AVAILABLE_IN_ALL +gchar* g_convert (const gchar *str, + gssize len, + const gchar *to_codeset, + const gchar *from_codeset, + gsize *bytes_read, + gsize *bytes_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_convert_with_iconv (const gchar *str, + gssize len, + GIConv converter, + gsize *bytes_read, + gsize *bytes_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_convert_with_fallback (const gchar *str, + gssize len, + const gchar *to_codeset, + const gchar *from_codeset, + const gchar *fallback, + gsize *bytes_read, + gsize *bytes_written, + GError **error) G_GNUC_MALLOC; + + +/* Convert between libc's idea of strings and UTF-8. + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_locale_to_utf8 (const gchar *opsysstring, + gssize len, + gsize *bytes_read, + gsize *bytes_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_locale_from_utf8 (const gchar *utf8string, + gssize len, + gsize *bytes_read, + gsize *bytes_written, + GError **error) G_GNUC_MALLOC; + +/* Convert between the operating system (or C runtime) + * representation of file names and UTF-8. + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_filename_to_utf8 (const gchar *opsysstring, + gssize len, + gsize *bytes_read, + gsize *bytes_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_filename_from_utf8 (const gchar *utf8string, + gssize len, + gsize *bytes_read, + gsize *bytes_written, + GError **error) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gchar *g_filename_from_uri (const gchar *uri, + gchar **hostname, + GError **error) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gchar *g_filename_to_uri (const gchar *filename, + const gchar *hostname, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar *g_filename_display_name (const gchar *filename) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gboolean g_get_filename_charsets (const gchar ***filename_charsets); + +GLIB_AVAILABLE_IN_ALL +gchar *g_filename_display_basename (const gchar *filename) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gchar **g_uri_list_extract_uris (const gchar *uri_list); + +G_END_DECLS + +#endif /* __G_CONVERT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdataset.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdataset.h new file mode 100644 index 0000000..a0d44b0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdataset.h @@ -0,0 +1,156 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_DATASET_H__ +#define __G_DATASET_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GData GData; + +typedef void (*GDataForeachFunc) (GQuark key_id, + gpointer data, + gpointer user_data); + +/* Keyed Data List + */ +GLIB_AVAILABLE_IN_ALL +void g_datalist_init (GData **datalist); +GLIB_AVAILABLE_IN_ALL +void g_datalist_clear (GData **datalist); +GLIB_AVAILABLE_IN_ALL +gpointer g_datalist_id_get_data (GData **datalist, + GQuark key_id); +GLIB_AVAILABLE_IN_ALL +void g_datalist_id_set_data_full (GData **datalist, + GQuark key_id, + gpointer data, + GDestroyNotify destroy_func); +GLIB_AVAILABLE_IN_2_74 +void g_datalist_id_remove_multiple (GData **datalist, + GQuark *keys, + gsize n_keys); + +typedef gpointer (*GDuplicateFunc) (gpointer data, gpointer user_data); + +GLIB_AVAILABLE_IN_2_34 +gpointer g_datalist_id_dup_data (GData **datalist, + GQuark key_id, + GDuplicateFunc dup_func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_34 +gboolean g_datalist_id_replace_data (GData **datalist, + GQuark key_id, + gpointer oldval, + gpointer newval, + GDestroyNotify destroy, + GDestroyNotify *old_destroy); + +GLIB_AVAILABLE_IN_ALL +gpointer g_datalist_id_remove_no_notify (GData **datalist, + GQuark key_id); +GLIB_AVAILABLE_IN_ALL +void g_datalist_foreach (GData **datalist, + GDataForeachFunc func, + gpointer user_data); + +/** + * G_DATALIST_FLAGS_MASK: + * + * A bitmask that restricts the possible flags passed to + * g_datalist_set_flags(). Passing a flags value where + * flags & ~G_DATALIST_FLAGS_MASK != 0 is an error. + */ +#define G_DATALIST_FLAGS_MASK 0x3 + +GLIB_AVAILABLE_IN_ALL +void g_datalist_set_flags (GData **datalist, + guint flags); +GLIB_AVAILABLE_IN_ALL +void g_datalist_unset_flags (GData **datalist, + guint flags); +GLIB_AVAILABLE_IN_ALL +guint g_datalist_get_flags (GData **datalist); + +#define g_datalist_id_set_data(dl, q, d) \ + g_datalist_id_set_data_full ((dl), (q), (d), NULL) +#define g_datalist_id_remove_data(dl, q) \ + g_datalist_id_set_data ((dl), (q), NULL) +#define g_datalist_set_data_full(dl, k, d, f) \ + g_datalist_id_set_data_full ((dl), g_quark_from_string (k), (d), (f)) +#define g_datalist_remove_no_notify(dl, k) \ + g_datalist_id_remove_no_notify ((dl), g_quark_try_string (k)) +#define g_datalist_set_data(dl, k, d) \ + g_datalist_set_data_full ((dl), (k), (d), NULL) +#define g_datalist_remove_data(dl, k) \ + g_datalist_id_set_data ((dl), g_quark_try_string (k), NULL) + +/* Location Associated Keyed Data + */ +GLIB_AVAILABLE_IN_ALL +void g_dataset_destroy (gconstpointer dataset_location); +GLIB_AVAILABLE_IN_ALL +gpointer g_dataset_id_get_data (gconstpointer dataset_location, + GQuark key_id); +GLIB_AVAILABLE_IN_ALL +gpointer g_datalist_get_data (GData **datalist, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +void g_dataset_id_set_data_full (gconstpointer dataset_location, + GQuark key_id, + gpointer data, + GDestroyNotify destroy_func); +GLIB_AVAILABLE_IN_ALL +gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location, + GQuark key_id); +GLIB_AVAILABLE_IN_ALL +void g_dataset_foreach (gconstpointer dataset_location, + GDataForeachFunc func, + gpointer user_data); +#define g_dataset_id_set_data(l, k, d) \ + g_dataset_id_set_data_full ((l), (k), (d), NULL) +#define g_dataset_id_remove_data(l, k) \ + g_dataset_id_set_data ((l), (k), NULL) +#define g_dataset_get_data(l, k) \ + (g_dataset_id_get_data ((l), g_quark_try_string (k))) +#define g_dataset_set_data_full(l, k, d, f) \ + g_dataset_id_set_data_full ((l), g_quark_from_string (k), (d), (f)) +#define g_dataset_remove_no_notify(l, k) \ + g_dataset_id_remove_no_notify ((l), g_quark_try_string (k)) +#define g_dataset_set_data(l, k, d) \ + g_dataset_set_data_full ((l), (k), (d), NULL) +#define g_dataset_remove_data(l, k) \ + g_dataset_id_set_data ((l), g_quark_try_string (k), NULL) + +G_END_DECLS + +#endif /* __G_DATASET_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdate.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdate.h new file mode 100644 index 0000000..5ef21cb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdate.h @@ -0,0 +1,309 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_DATE_H__ +#define __G_DATE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +#include +#include + +G_BEGIN_DECLS + +/* GDate + * + * Date calculations (not time for now, to be resolved). These are a + * mutant combination of Steffen Beyer's DateCalc routines + * (http://www.perl.com/CPAN/authors/id/STBEY/) and Jon Trowbridge's + * date routines (written for in-house software). Written by Havoc + * Pennington + */ + +typedef gint32 GTime GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); +typedef guint16 GDateYear; +typedef guint8 GDateDay; /* day of the month */ +typedef struct _GDate GDate; + +/* enum used to specify order of appearance in parsed date strings */ +typedef enum +{ + G_DATE_DAY = 0, + G_DATE_MONTH = 1, + G_DATE_YEAR = 2 +} GDateDMY; + +/* actual week and month values */ +typedef enum +{ + G_DATE_BAD_WEEKDAY = 0, + G_DATE_MONDAY = 1, + G_DATE_TUESDAY = 2, + G_DATE_WEDNESDAY = 3, + G_DATE_THURSDAY = 4, + G_DATE_FRIDAY = 5, + G_DATE_SATURDAY = 6, + G_DATE_SUNDAY = 7 +} GDateWeekday; +typedef enum +{ + G_DATE_BAD_MONTH = 0, + G_DATE_JANUARY = 1, + G_DATE_FEBRUARY = 2, + G_DATE_MARCH = 3, + G_DATE_APRIL = 4, + G_DATE_MAY = 5, + G_DATE_JUNE = 6, + G_DATE_JULY = 7, + G_DATE_AUGUST = 8, + G_DATE_SEPTEMBER = 9, + G_DATE_OCTOBER = 10, + G_DATE_NOVEMBER = 11, + G_DATE_DECEMBER = 12 +} GDateMonth; + +#define G_DATE_BAD_JULIAN 0U +#define G_DATE_BAD_DAY 0U +#define G_DATE_BAD_YEAR 0U + +/* Note: directly manipulating structs is generally a bad idea, but + * in this case it's an *incredibly* bad idea, because all or part + * of this struct can be invalid at any given time. Use the functions, + * or you will get hosed, I promise. + */ +struct _GDate +{ + guint julian_days : 32; /* julian days representation - we use a + * bitfield hoping that 64 bit platforms + * will pack this whole struct in one big + * int + */ + + guint julian : 1; /* julian is valid */ + guint dmy : 1; /* dmy is valid */ + + /* DMY representation */ + guint day : 6; + guint month : 4; + guint year : 16; +}; + +/* g_date_new() returns an invalid date, you then have to _set() stuff + * to get a usable object. You can also allocate a GDate statically, + * then call g_date_clear() to initialize. + */ +GLIB_AVAILABLE_IN_ALL +GDate* g_date_new (void); +GLIB_AVAILABLE_IN_ALL +GDate* g_date_new_dmy (GDateDay day, + GDateMonth month, + GDateYear year); +GLIB_AVAILABLE_IN_ALL +GDate* g_date_new_julian (guint32 julian_day); +GLIB_AVAILABLE_IN_ALL +void g_date_free (GDate *date); +GLIB_AVAILABLE_IN_2_56 +GDate* g_date_copy (const GDate *date); + +/* check g_date_valid() after doing an operation that might fail, like + * _parse. Almost all g_date operations are undefined on invalid + * dates (the exceptions are the mutators, since you need those to + * return to validity). + */ +GLIB_AVAILABLE_IN_ALL +gboolean g_date_valid (const GDate *date); +GLIB_AVAILABLE_IN_ALL +gboolean g_date_valid_day (GDateDay day) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_date_valid_month (GDateMonth month) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_date_valid_year (GDateYear year) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_date_valid_weekday (GDateWeekday weekday) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_date_valid_julian (guint32 julian_date) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_date_valid_dmy (GDateDay day, + GDateMonth month, + GDateYear year) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GDateWeekday g_date_get_weekday (const GDate *date); +GLIB_AVAILABLE_IN_ALL +GDateMonth g_date_get_month (const GDate *date); +GLIB_AVAILABLE_IN_ALL +GDateYear g_date_get_year (const GDate *date); +GLIB_AVAILABLE_IN_ALL +GDateDay g_date_get_day (const GDate *date); +GLIB_AVAILABLE_IN_ALL +guint32 g_date_get_julian (const GDate *date); +GLIB_AVAILABLE_IN_ALL +guint g_date_get_day_of_year (const GDate *date); +/* First monday/sunday is the start of week 1; if we haven't reached + * that day, return 0. These are not ISO weeks of the year; that + * routine needs to be added. + * these functions return the number of weeks, starting on the + * corresponding day + */ +GLIB_AVAILABLE_IN_ALL +guint g_date_get_monday_week_of_year (const GDate *date); +GLIB_AVAILABLE_IN_ALL +guint g_date_get_sunday_week_of_year (const GDate *date); +GLIB_AVAILABLE_IN_ALL +guint g_date_get_iso8601_week_of_year (const GDate *date); + +/* If you create a static date struct you need to clear it to get it + * in a safe state before use. You can clear a whole array at + * once with the ndates argument. + */ +GLIB_AVAILABLE_IN_ALL +void g_date_clear (GDate *date, + guint n_dates); + +/* The parse routine is meant for dates typed in by a user, so it + * permits many formats but tries to catch common typos. If your data + * needs to be strictly validated, it is not an appropriate function. + */ +GLIB_AVAILABLE_IN_ALL +void g_date_set_parse (GDate *date, + const gchar *str); +GLIB_AVAILABLE_IN_ALL +void g_date_set_time_t (GDate *date, + time_t timet); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_62_FOR(g_date_set_time_t) +void g_date_set_time_val (GDate *date, + GTimeVal *timeval); +GLIB_DEPRECATED_FOR(g_date_set_time_t) +void g_date_set_time (GDate *date, + GTime time_); +G_GNUC_END_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_ALL +void g_date_set_month (GDate *date, + GDateMonth month); +GLIB_AVAILABLE_IN_ALL +void g_date_set_day (GDate *date, + GDateDay day); +GLIB_AVAILABLE_IN_ALL +void g_date_set_year (GDate *date, + GDateYear year); +GLIB_AVAILABLE_IN_ALL +void g_date_set_dmy (GDate *date, + GDateDay day, + GDateMonth month, + GDateYear y); +GLIB_AVAILABLE_IN_ALL +void g_date_set_julian (GDate *date, + guint32 julian_date); +GLIB_AVAILABLE_IN_ALL +gboolean g_date_is_first_of_month (const GDate *date); +GLIB_AVAILABLE_IN_ALL +gboolean g_date_is_last_of_month (const GDate *date); + +/* To go forward by some number of weeks just go forward weeks*7 days */ +GLIB_AVAILABLE_IN_ALL +void g_date_add_days (GDate *date, + guint n_days); +GLIB_AVAILABLE_IN_ALL +void g_date_subtract_days (GDate *date, + guint n_days); + +/* If you add/sub months while day > 28, the day might change */ +GLIB_AVAILABLE_IN_ALL +void g_date_add_months (GDate *date, + guint n_months); +GLIB_AVAILABLE_IN_ALL +void g_date_subtract_months (GDate *date, + guint n_months); + +/* If it's feb 29, changing years can move you to the 28th */ +GLIB_AVAILABLE_IN_ALL +void g_date_add_years (GDate *date, + guint n_years); +GLIB_AVAILABLE_IN_ALL +void g_date_subtract_years (GDate *date, + guint n_years); +GLIB_AVAILABLE_IN_ALL +gboolean g_date_is_leap_year (GDateYear year) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +guint8 g_date_get_days_in_month (GDateMonth month, + GDateYear year) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +guint8 g_date_get_monday_weeks_in_year (GDateYear year) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +guint8 g_date_get_sunday_weeks_in_year (GDateYear year) G_GNUC_CONST; + +/* Returns the number of days between the two dates. If date2 comes + before date1, a negative value is return. */ +GLIB_AVAILABLE_IN_ALL +gint g_date_days_between (const GDate *date1, + const GDate *date2); + +/* qsort-friendly (with a cast...) */ +GLIB_AVAILABLE_IN_ALL +gint g_date_compare (const GDate *lhs, + const GDate *rhs); +GLIB_AVAILABLE_IN_ALL +void g_date_to_struct_tm (const GDate *date, + struct tm *tm); + +GLIB_AVAILABLE_IN_ALL +void g_date_clamp (GDate *date, + const GDate *min_date, + const GDate *max_date); + +/* Swap date1 and date2's values if date1 > date2. */ +GLIB_AVAILABLE_IN_ALL +void g_date_order (GDate *date1, GDate *date2); + +/* Just like strftime() except you can only use date-related formats. + * Using a time format is undefined. + */ +GLIB_AVAILABLE_IN_ALL +gsize g_date_strftime (gchar *s, + gsize slen, + const gchar *format, + const GDate *date); + +#define g_date_weekday g_date_get_weekday GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_weekday) +#define g_date_month g_date_get_month GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_month) +#define g_date_year g_date_get_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_year) +#define g_date_day g_date_get_day GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_day) +#define g_date_julian g_date_get_julian GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_julian) +#define g_date_day_of_year g_date_get_day_of_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_day_of_year) +#define g_date_monday_week_of_year g_date_get_monday_week_of_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_monday_week_of_year) +#define g_date_sunday_week_of_year g_date_get_sunday_week_of_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_sunday_week_of_year) +#define g_date_days_in_month g_date_get_days_in_month GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_days_in_month) +#define g_date_monday_weeks_in_year g_date_get_monday_weeks_in_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_monday_weeks_in_year) +#define g_date_sunday_weeks_in_year g_date_get_sunday_weeks_in_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_sunday_weeks_in_year) + +G_END_DECLS + +#endif /* __G_DATE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdatetime.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdatetime.h new file mode 100644 index 0000000..4312433 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdatetime.h @@ -0,0 +1,275 @@ +/* + * Copyright (C) 2009-2010 Christian Hergert + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of the + * licence, or (at your option) any later version. + * + * This 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + * + * Authors: Christian Hergert + * Thiago Santos + * Emmanuele Bassi + * Ryan Lortie + */ + +#ifndef __G_DATE_TIME_H__ +#define __G_DATE_TIME_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_TIME_SPAN_DAY: + * + * Evaluates to a time span of one day. + * + * Since: 2.26 + */ +#define G_TIME_SPAN_DAY (G_GINT64_CONSTANT (86400000000)) + +/** + * G_TIME_SPAN_HOUR: + * + * Evaluates to a time span of one hour. + * + * Since: 2.26 + */ +#define G_TIME_SPAN_HOUR (G_GINT64_CONSTANT (3600000000)) + +/** + * G_TIME_SPAN_MINUTE: + * + * Evaluates to a time span of one minute. + * + * Since: 2.26 + */ +#define G_TIME_SPAN_MINUTE (G_GINT64_CONSTANT (60000000)) + +/** + * G_TIME_SPAN_SECOND: + * + * Evaluates to a time span of one second. + * + * Since: 2.26 + */ +#define G_TIME_SPAN_SECOND (G_GINT64_CONSTANT (1000000)) + +/** + * G_TIME_SPAN_MILLISECOND: + * + * Evaluates to a time span of one millisecond. + * + * Since: 2.26 + */ +#define G_TIME_SPAN_MILLISECOND (G_GINT64_CONSTANT (1000)) + +/** + * GTimeSpan: + * + * A value representing an interval of time, in microseconds. + * + * Since: 2.26 + */ +typedef gint64 GTimeSpan; + +/** + * GDateTime: + * + * An opaque structure that represents a date and time, including a time zone. + * + * Since: 2.26 + */ +typedef struct _GDateTime GDateTime; + +GLIB_AVAILABLE_IN_ALL +void g_date_time_unref (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_ref (GDateTime *datetime); + +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new_now (GTimeZone *tz); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new_now_local (void); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new_now_utc (void); + +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new_from_unix_local (gint64 t); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new_from_unix_utc (gint64 t); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_unix_local) +GDateTime * g_date_time_new_from_timeval_local (const GTimeVal *tv); +GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_unix_utc) +GDateTime * g_date_time_new_from_timeval_utc (const GTimeVal *tv); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_2_56 +GDateTime * g_date_time_new_from_iso8601 (const gchar *text, + GTimeZone *default_tz); + +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new (GTimeZone *tz, + gint year, + gint month, + gint day, + gint hour, + gint minute, + gdouble seconds); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new_local (gint year, + gint month, + gint day, + gint hour, + gint minute, + gdouble seconds); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_new_utc (gint year, + gint month, + gint day, + gint hour, + gint minute, + gdouble seconds); + +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add (GDateTime *datetime, + GTimeSpan timespan); + +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_years (GDateTime *datetime, + gint years); +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_months (GDateTime *datetime, + gint months); +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_weeks (GDateTime *datetime, + gint weeks); +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_days (GDateTime *datetime, + gint days); + +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_hours (GDateTime *datetime, + gint hours); +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_minutes (GDateTime *datetime, + gint minutes); +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_seconds (GDateTime *datetime, + gdouble seconds); + +GLIB_AVAILABLE_IN_ALL +G_GNUC_WARN_UNUSED_RESULT +GDateTime * g_date_time_add_full (GDateTime *datetime, + gint years, + gint months, + gint days, + gint hours, + gint minutes, + gdouble seconds); + +GLIB_AVAILABLE_IN_ALL +gint g_date_time_compare (gconstpointer dt1, + gconstpointer dt2); +GLIB_AVAILABLE_IN_ALL +GTimeSpan g_date_time_difference (GDateTime *end, + GDateTime *begin); +GLIB_AVAILABLE_IN_ALL +guint g_date_time_hash (gconstpointer datetime); +GLIB_AVAILABLE_IN_ALL +gboolean g_date_time_equal (gconstpointer dt1, + gconstpointer dt2); + +GLIB_AVAILABLE_IN_ALL +void g_date_time_get_ymd (GDateTime *datetime, + gint *year, + gint *month, + gint *day); + +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_year (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_month (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_day_of_month (GDateTime *datetime); + +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_week_numbering_year (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_week_of_year (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_day_of_week (GDateTime *datetime); + +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_day_of_year (GDateTime *datetime); + +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_hour (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_minute (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_second (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gint g_date_time_get_microsecond (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gdouble g_date_time_get_seconds (GDateTime *datetime); + +GLIB_AVAILABLE_IN_ALL +gint64 g_date_time_to_unix (GDateTime *datetime); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_to_unix) +gboolean g_date_time_to_timeval (GDateTime *datetime, + GTimeVal *tv); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +GTimeSpan g_date_time_get_utc_offset (GDateTime *datetime); +GLIB_AVAILABLE_IN_2_58 +GTimeZone * g_date_time_get_timezone (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +const gchar * g_date_time_get_timezone_abbreviation (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +gboolean g_date_time_is_daylight_savings (GDateTime *datetime); + +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_to_timezone (GDateTime *datetime, + GTimeZone *tz); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_to_local (GDateTime *datetime); +GLIB_AVAILABLE_IN_ALL +GDateTime * g_date_time_to_utc (GDateTime *datetime); + +GLIB_AVAILABLE_IN_ALL +gchar * g_date_time_format (GDateTime *datetime, + const gchar *format) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_2_62 +gchar * g_date_time_format_iso8601 (GDateTime *datetime) G_GNUC_MALLOC; + +G_END_DECLS + +#endif /* __G_DATE_TIME_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdir.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdir.h new file mode 100644 index 0000000..0d3ee82 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gdir.h @@ -0,0 +1,54 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * gdir.c: Simplified wrapper around the DIRENT functions. + * + * Copyright 2001 Hans Breuer + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_DIR_H__ +#define __G_DIR_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +#ifdef G_OS_UNIX +#include +#endif + +G_BEGIN_DECLS + +typedef struct _GDir GDir; + +GLIB_AVAILABLE_IN_ALL +GDir * g_dir_open (const gchar *path, + guint flags, + GError **error); +GLIB_AVAILABLE_IN_ALL +const gchar * g_dir_read_name (GDir *dir); +GLIB_AVAILABLE_IN_ALL +void g_dir_rewind (GDir *dir); +GLIB_AVAILABLE_IN_ALL +void g_dir_close (GDir *dir); + +G_END_DECLS + +#endif /* __G_DIR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/genviron.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/genviron.h new file mode 100644 index 0000000..3ac3846 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/genviron.h @@ -0,0 +1,65 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_ENVIRON_H__ +#define __G_ENVIRON_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +const gchar * g_getenv (const gchar *variable); +GLIB_AVAILABLE_IN_ALL +gboolean g_setenv (const gchar *variable, + const gchar *value, + gboolean overwrite); +GLIB_AVAILABLE_IN_ALL +void g_unsetenv (const gchar *variable); +GLIB_AVAILABLE_IN_ALL +gchar ** g_listenv (void); + +GLIB_AVAILABLE_IN_ALL +gchar ** g_get_environ (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_environ_getenv (gchar **envp, + const gchar *variable); +GLIB_AVAILABLE_IN_ALL +gchar ** g_environ_setenv (gchar **envp, + const gchar *variable, + const gchar *value, + gboolean overwrite) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +gchar ** g_environ_unsetenv (gchar **envp, + const gchar *variable) G_GNUC_WARN_UNUSED_RESULT; + +G_END_DECLS + +#endif /* __G_ENVIRON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gerror.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gerror.h new file mode 100644 index 0000000..1aebfbe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gerror.h @@ -0,0 +1,263 @@ +/* gerror.h - Error reporting system + * + * Copyright 2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_ERROR_H__ +#define __G_ERROR_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +#include + +G_BEGIN_DECLS + +/** + * GError: + * @domain: error domain, e.g. %G_FILE_ERROR + * @code: error code, e.g. %G_FILE_ERROR_NOENT + * @message: human-readable informative error message + * + * The `GError` structure contains information about + * an error that has occurred. + */ +typedef struct _GError GError; + +struct _GError +{ + GQuark domain; + gint code; + gchar *message; +}; + +/** + * G_DEFINE_EXTENDED_ERROR: + * @ErrorType: name to return a #GQuark for + * @error_type: prefix for the function name + * + * A convenience macro which defines two functions. First, returning + * the #GQuark for the extended error type @ErrorType; it is called + * `error_type_quark()`. Second, returning the private data from a + * passed #GError; it is called `error_type_get_private()`. + * + * For this macro to work, a type named `ErrorTypePrivate` should be + * defined, `error_type_private_init()`, `error_type_private_copy()` + * and `error_type_private_clear()` functions need to be either + * declared or defined. The functions should be similar to + * #GErrorInitFunc, #GErrorCopyFunc and #GErrorClearFunc, + * respectively, but they should receive the private data type instead + * of #GError. + * + * See [Extended #GError Domains][gerror-extended-domains] for an example. + * + * Since: 2.68 + */ +#define G_DEFINE_EXTENDED_ERROR(ErrorType, error_type) \ +static inline ErrorType ## Private * \ +error_type ## _get_private (const GError *error) \ +{ \ + /* Copied from gtype.c (STRUCT_ALIGNMENT and ALIGN_STRUCT macros). */ \ + const gsize sa = 2 * sizeof (gsize); \ + const gsize as = (sizeof (ErrorType ## Private) + (sa - 1)) & -sa; \ + g_return_val_if_fail (error != NULL, NULL); \ + g_return_val_if_fail (error->domain == error_type ## _quark (), NULL); \ + return (ErrorType ## Private *) (((guint8 *)error) - as); \ +} \ + \ +static void \ +g_error_with_ ## error_type ## _private_init (GError *error) \ +{ \ + ErrorType ## Private *priv = error_type ## _get_private (error); \ + error_type ## _private_init (priv); \ +} \ + \ +static void \ +g_error_with_ ## error_type ## _private_copy (const GError *src_error, \ + GError *dest_error) \ +{ \ + const ErrorType ## Private *src_priv = error_type ## _get_private (src_error); \ + ErrorType ## Private *dest_priv = error_type ## _get_private (dest_error); \ + error_type ## _private_copy (src_priv, dest_priv); \ +} \ + \ +static void \ +g_error_with_ ## error_type ## _private_clear (GError *error) \ +{ \ + ErrorType ## Private *priv = error_type ## _get_private (error); \ + error_type ## _private_clear (priv); \ +} \ + \ +GQuark \ +error_type ## _quark (void) \ +{ \ + static GQuark q; \ + static gsize initialized = 0; \ + \ + if (g_once_init_enter (&initialized)) \ + { \ + q = g_error_domain_register_static (#ErrorType, \ + sizeof (ErrorType ## Private), \ + g_error_with_ ## error_type ## _private_init, \ + g_error_with_ ## error_type ## _private_copy, \ + g_error_with_ ## error_type ## _private_clear); \ + g_once_init_leave (&initialized, 1); \ + } \ + \ + return q; \ +} + +/** + * GErrorInitFunc: + * @error: extended error + * + * Specifies the type of function which is called just after an + * extended error instance is created and its fields filled. It should + * only initialize the fields in the private data, which can be + * received with the generated `*_get_private()` function. + * + * Normally, it is better to use G_DEFINE_EXTENDED_ERROR(), as it + * already takes care of getting the private data from @error. + * + * Since: 2.68 + */ +typedef void (*GErrorInitFunc) (GError *error); + +/** + * GErrorCopyFunc: + * @src_error: source extended error + * @dest_error: destination extended error + * + * Specifies the type of function which is called when an extended + * error instance is copied. It is passed the pointer to the + * destination error and source error, and should copy only the fields + * of the private data from @src_error to @dest_error. + * + * Normally, it is better to use G_DEFINE_EXTENDED_ERROR(), as it + * already takes care of getting the private data from @src_error and + * @dest_error. + * + * Since: 2.68 + */ +typedef void (*GErrorCopyFunc) (const GError *src_error, GError *dest_error); + +/** + * GErrorClearFunc: + * @error: extended error to clear + * + * Specifies the type of function which is called when an extended + * error instance is freed. It is passed the error pointer about to be + * freed, and should free the error's private data fields. + * + * Normally, it is better to use G_DEFINE_EXTENDED_ERROR(), as it + * already takes care of getting the private data from @error. + * + * Since: 2.68 + */ +typedef void (*GErrorClearFunc) (GError *error); + +GLIB_AVAILABLE_IN_2_68 +GQuark g_error_domain_register_static (const char *error_type_name, + gsize error_type_private_size, + GErrorInitFunc error_type_init, + GErrorCopyFunc error_type_copy, + GErrorClearFunc error_type_clear); + +GLIB_AVAILABLE_IN_2_68 +GQuark g_error_domain_register (const char *error_type_name, + gsize error_type_private_size, + GErrorInitFunc error_type_init, + GErrorCopyFunc error_type_copy, + GErrorClearFunc error_type_clear); + +GLIB_AVAILABLE_IN_ALL +GError* g_error_new (GQuark domain, + gint code, + const gchar *format, + ...) G_GNUC_PRINTF (3, 4); + +GLIB_AVAILABLE_IN_ALL +GError* g_error_new_literal (GQuark domain, + gint code, + const gchar *message); +GLIB_AVAILABLE_IN_ALL +GError* g_error_new_valist (GQuark domain, + gint code, + const gchar *format, + va_list args) G_GNUC_PRINTF(3, 0); + +GLIB_AVAILABLE_IN_ALL +void g_error_free (GError *error); +GLIB_AVAILABLE_IN_ALL +GError* g_error_copy (const GError *error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_error_matches (const GError *error, + GQuark domain, + gint code); + +/* if (err) *err = g_error_new(domain, code, format, ...), also has + * some sanity checks. + */ +GLIB_AVAILABLE_IN_ALL +void g_set_error (GError **err, + GQuark domain, + gint code, + const gchar *format, + ...) G_GNUC_PRINTF (4, 5); + +GLIB_AVAILABLE_IN_ALL +void g_set_error_literal (GError **err, + GQuark domain, + gint code, + const gchar *message); + +/* if (dest) *dest = src; also has some sanity checks. + */ +GLIB_AVAILABLE_IN_ALL +void g_propagate_error (GError **dest, + GError *src); + +/* if (err && *err) { g_error_free(*err); *err = NULL; } */ +GLIB_AVAILABLE_IN_ALL +void g_clear_error (GError **err); + +/* if (err) prefix the formatted string to the ->message */ +GLIB_AVAILABLE_IN_ALL +void g_prefix_error (GError **err, + const gchar *format, + ...) G_GNUC_PRINTF (2, 3); + +/* if (err) prefix the string to the ->message */ +GLIB_AVAILABLE_IN_2_70 +void g_prefix_error_literal (GError **err, + const gchar *prefix); + +/* g_propagate_error then g_error_prefix on dest */ +GLIB_AVAILABLE_IN_ALL +void g_propagate_prefixed_error (GError **dest, + GError *src, + const gchar *format, + ...) G_GNUC_PRINTF (3, 4); + +G_END_DECLS + +#endif /* __G_ERROR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gfileutils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gfileutils.h new file mode 100644 index 0000000..c056dd0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gfileutils.h @@ -0,0 +1,223 @@ +/* gfileutils.h - File utility functions + * + * Copyright 2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_FILEUTILS_H__ +#define __G_FILEUTILS_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_FILE_ERROR g_file_error_quark () + +typedef enum +{ + G_FILE_ERROR_EXIST, + G_FILE_ERROR_ISDIR, + G_FILE_ERROR_ACCES, + G_FILE_ERROR_NAMETOOLONG, + G_FILE_ERROR_NOENT, + G_FILE_ERROR_NOTDIR, + G_FILE_ERROR_NXIO, + G_FILE_ERROR_NODEV, + G_FILE_ERROR_ROFS, + G_FILE_ERROR_TXTBSY, + G_FILE_ERROR_FAULT, + G_FILE_ERROR_LOOP, + G_FILE_ERROR_NOSPC, + G_FILE_ERROR_NOMEM, + G_FILE_ERROR_MFILE, + G_FILE_ERROR_NFILE, + G_FILE_ERROR_BADF, + G_FILE_ERROR_INVAL, + G_FILE_ERROR_PIPE, + G_FILE_ERROR_AGAIN, + G_FILE_ERROR_INTR, + G_FILE_ERROR_IO, + G_FILE_ERROR_PERM, + G_FILE_ERROR_NOSYS, + G_FILE_ERROR_FAILED +} GFileError; + +/* For backward-compat reasons, these are synced to an old + * anonymous enum in libgnome. But don't use that enum + * in new code. + */ +typedef enum +{ + G_FILE_TEST_IS_REGULAR = 1 << 0, + G_FILE_TEST_IS_SYMLINK = 1 << 1, + G_FILE_TEST_IS_DIR = 1 << 2, + G_FILE_TEST_IS_EXECUTABLE = 1 << 3, + G_FILE_TEST_EXISTS = 1 << 4 +} GFileTest; + +/** + * GFileSetContentsFlags: + * @G_FILE_SET_CONTENTS_NONE: No guarantees about file consistency or durability. + * The most dangerous setting, which is slightly faster than other settings. + * @G_FILE_SET_CONTENTS_CONSISTENT: Guarantee file consistency: after a crash, + * either the old version of the file or the new version of the file will be + * available, but not a mixture. On Unix systems this equates to an `fsync()` + * on the file and use of an atomic `rename()` of the new version of the file + * over the old. + * @G_FILE_SET_CONTENTS_DURABLE: Guarantee file durability: after a crash, the + * new version of the file will be available. On Unix systems this equates to + * an `fsync()` on the file (if %G_FILE_SET_CONTENTS_CONSISTENT is unset), or + * the effects of %G_FILE_SET_CONTENTS_CONSISTENT plus an `fsync()` on the + * directory containing the file after calling `rename()`. + * @G_FILE_SET_CONTENTS_ONLY_EXISTING: Only apply consistency and durability + * guarantees if the file already exists. This may speed up file operations + * if the file doesn’t currently exist, but may result in a corrupted version + * of the new file if the system crashes while writing it. + * + * Flags to pass to g_file_set_contents_full() to affect its safety and + * performance. + * + * Since: 2.66 + */ +typedef enum +{ + G_FILE_SET_CONTENTS_NONE = 0, + G_FILE_SET_CONTENTS_CONSISTENT = 1 << 0, + G_FILE_SET_CONTENTS_DURABLE = 1 << 1, + G_FILE_SET_CONTENTS_ONLY_EXISTING = 1 << 2 +} GFileSetContentsFlags +GLIB_AVAILABLE_ENUMERATOR_IN_2_66; + +GLIB_AVAILABLE_IN_ALL +GQuark g_file_error_quark (void); +/* So other code can generate a GFileError */ +GLIB_AVAILABLE_IN_ALL +GFileError g_file_error_from_errno (gint err_no); + +GLIB_AVAILABLE_IN_ALL +gboolean g_file_test (const gchar *filename, + GFileTest test); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_get_contents (const gchar *filename, + gchar **contents, + gsize *length, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_file_set_contents (const gchar *filename, + const gchar *contents, + gssize length, + GError **error); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_2_66 +gboolean g_file_set_contents_full (const gchar *filename, + const gchar *contents, + gssize length, + GFileSetContentsFlags flags, + int mode, + GError **error); +G_GNUC_END_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_ALL +gchar *g_file_read_link (const gchar *filename, + GError **error); + +/* Wrapper / workalike for mkdtemp() */ +GLIB_AVAILABLE_IN_2_30 +gchar *g_mkdtemp (gchar *tmpl); +GLIB_AVAILABLE_IN_2_30 +gchar *g_mkdtemp_full (gchar *tmpl, + gint mode); + +/* Wrapper / workalike for mkstemp() */ +GLIB_AVAILABLE_IN_ALL +gint g_mkstemp (gchar *tmpl); +GLIB_AVAILABLE_IN_ALL +gint g_mkstemp_full (gchar *tmpl, + gint flags, + gint mode); + +/* Wrappers for g_mkstemp and g_mkdtemp() */ +GLIB_AVAILABLE_IN_ALL +gint g_file_open_tmp (const gchar *tmpl, + gchar **name_used, + GError **error); +GLIB_AVAILABLE_IN_2_30 +gchar *g_dir_make_tmp (const gchar *tmpl, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gchar *g_build_path (const gchar *separator, + const gchar *first_element, + ...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_ALL +gchar *g_build_pathv (const gchar *separator, + gchar **args) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gchar *g_build_filename (const gchar *first_element, + ...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_ALL +gchar *g_build_filenamev (gchar **args) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_2_56 +gchar *g_build_filename_valist (const gchar *first_element, + va_list *args) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gint g_mkdir_with_parents (const gchar *pathname, + gint mode); + +#ifdef G_OS_WIN32 + +/* On Win32, the canonical directory separator is the backslash, and + * the search path separator is the semicolon. Note that also the + * (forward) slash works as directory separator. + */ +#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/') + +#else /* !G_OS_WIN32 */ + +#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR) + +#endif /* !G_OS_WIN32 */ + +GLIB_AVAILABLE_IN_ALL +gboolean g_path_is_absolute (const gchar *file_name); +GLIB_AVAILABLE_IN_ALL +const gchar *g_path_skip_root (const gchar *file_name); + +GLIB_DEPRECATED_FOR(g_path_get_basename) +const gchar *g_basename (const gchar *file_name); +#define g_dirname g_path_get_dirname GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_path_get_dirname) + +GLIB_AVAILABLE_IN_ALL +gchar *g_get_current_dir (void); +GLIB_AVAILABLE_IN_ALL +gchar *g_path_get_basename (const gchar *file_name) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar *g_path_get_dirname (const gchar *file_name) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_2_58 +gchar *g_canonicalize_filename (const gchar *filename, + const gchar *relative_to) G_GNUC_MALLOC; + +G_END_DECLS + +#endif /* __G_FILEUTILS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ggettext.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ggettext.h new file mode 100644 index 0000000..33a1fbe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ggettext.h @@ -0,0 +1,65 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_GETTEXT_H__ +#define __G_GETTEXT_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +const gchar *g_strip_context (const gchar *msgid, + const gchar *msgval) G_GNUC_FORMAT(1); + +GLIB_AVAILABLE_IN_ALL +const gchar *g_dgettext (const gchar *domain, + const gchar *msgid) G_GNUC_FORMAT(2); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dcgettext (const gchar *domain, + const gchar *msgid, + gint category) G_GNUC_FORMAT(2); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dngettext (const gchar *domain, + const gchar *msgid, + const gchar *msgid_plural, + gulong n) G_GNUC_FORMAT(3); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dpgettext (const gchar *domain, + const gchar *msgctxtid, + gsize msgidoffset) G_GNUC_FORMAT(2); +GLIB_AVAILABLE_IN_ALL +const gchar *g_dpgettext2 (const gchar *domain, + const gchar *context, + const gchar *msgid) G_GNUC_FORMAT(3); + +G_END_DECLS + +#endif /* __G_GETTEXT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghash.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghash.h new file mode 100644 index 0000000..8e7f4a0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghash.h @@ -0,0 +1,196 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_HASH_H__ +#define __G_HASH_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GHashTable GHashTable; + +typedef gboolean (*GHRFunc) (gpointer key, + gpointer value, + gpointer user_data); + +typedef struct _GHashTableIter GHashTableIter; + +struct _GHashTableIter +{ + /*< private >*/ + gpointer dummy1; + gpointer dummy2; + gpointer dummy3; + int dummy4; + gboolean dummy5; + gpointer dummy6; +}; + +GLIB_AVAILABLE_IN_ALL +GHashTable* g_hash_table_new (GHashFunc hash_func, + GEqualFunc key_equal_func); +GLIB_AVAILABLE_IN_ALL +GHashTable* g_hash_table_new_full (GHashFunc hash_func, + GEqualFunc key_equal_func, + GDestroyNotify key_destroy_func, + GDestroyNotify value_destroy_func); +GLIB_AVAILABLE_IN_2_72 +GHashTable *g_hash_table_new_similar (GHashTable *other_hash_table); +GLIB_AVAILABLE_IN_ALL +void g_hash_table_destroy (GHashTable *hash_table); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_insert (GHashTable *hash_table, + gpointer key, + gpointer value); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_replace (GHashTable *hash_table, + gpointer key, + gpointer value); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_add (GHashTable *hash_table, + gpointer key); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_remove (GHashTable *hash_table, + gconstpointer key); +GLIB_AVAILABLE_IN_ALL +void g_hash_table_remove_all (GHashTable *hash_table); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_steal (GHashTable *hash_table, + gconstpointer key); +GLIB_AVAILABLE_IN_2_58 +gboolean g_hash_table_steal_extended (GHashTable *hash_table, + gconstpointer lookup_key, + gpointer *stolen_key, + gpointer *stolen_value); +GLIB_AVAILABLE_IN_ALL +void g_hash_table_steal_all (GHashTable *hash_table); +GLIB_AVAILABLE_IN_ALL +gpointer g_hash_table_lookup (GHashTable *hash_table, + gconstpointer key); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_contains (GHashTable *hash_table, + gconstpointer key); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_lookup_extended (GHashTable *hash_table, + gconstpointer lookup_key, + gpointer *orig_key, + gpointer *value); +GLIB_AVAILABLE_IN_ALL +void g_hash_table_foreach (GHashTable *hash_table, + GHFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gpointer g_hash_table_find (GHashTable *hash_table, + GHRFunc predicate, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +guint g_hash_table_foreach_remove (GHashTable *hash_table, + GHRFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +guint g_hash_table_foreach_steal (GHashTable *hash_table, + GHRFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +guint g_hash_table_size (GHashTable *hash_table); +GLIB_AVAILABLE_IN_ALL +GList * g_hash_table_get_keys (GHashTable *hash_table); +GLIB_AVAILABLE_IN_ALL +GList * g_hash_table_get_values (GHashTable *hash_table); +GLIB_AVAILABLE_IN_2_40 +gpointer * g_hash_table_get_keys_as_array (GHashTable *hash_table, + guint *length); + +GLIB_AVAILABLE_IN_ALL +void g_hash_table_iter_init (GHashTableIter *iter, + GHashTable *hash_table); +GLIB_AVAILABLE_IN_ALL +gboolean g_hash_table_iter_next (GHashTableIter *iter, + gpointer *key, + gpointer *value); +GLIB_AVAILABLE_IN_ALL +GHashTable* g_hash_table_iter_get_hash_table (GHashTableIter *iter); +GLIB_AVAILABLE_IN_ALL +void g_hash_table_iter_remove (GHashTableIter *iter); +GLIB_AVAILABLE_IN_2_30 +void g_hash_table_iter_replace (GHashTableIter *iter, + gpointer value); +GLIB_AVAILABLE_IN_ALL +void g_hash_table_iter_steal (GHashTableIter *iter); + +GLIB_AVAILABLE_IN_ALL +GHashTable* g_hash_table_ref (GHashTable *hash_table); +GLIB_AVAILABLE_IN_ALL +void g_hash_table_unref (GHashTable *hash_table); + +#define g_hash_table_freeze(hash_table) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 +#define g_hash_table_thaw(hash_table) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 + +/* Hash Functions + */ +GLIB_AVAILABLE_IN_ALL +gboolean g_str_equal (gconstpointer v1, + gconstpointer v2); + +/* Macro for optimization in the case it is not used as callback function */ +#define g_str_equal(v1, v2) (strcmp ((v1), (v2)) == 0) + +GLIB_AVAILABLE_IN_ALL +guint g_str_hash (gconstpointer v); + +GLIB_AVAILABLE_IN_ALL +gboolean g_int_equal (gconstpointer v1, + gconstpointer v2); +GLIB_AVAILABLE_IN_ALL +guint g_int_hash (gconstpointer v); + +GLIB_AVAILABLE_IN_ALL +gboolean g_int64_equal (gconstpointer v1, + gconstpointer v2); +GLIB_AVAILABLE_IN_ALL +guint g_int64_hash (gconstpointer v); + +GLIB_AVAILABLE_IN_ALL +gboolean g_double_equal (gconstpointer v1, + gconstpointer v2); +GLIB_AVAILABLE_IN_ALL +guint g_double_hash (gconstpointer v); + +GLIB_AVAILABLE_IN_ALL +guint g_direct_hash (gconstpointer v) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_direct_equal (gconstpointer v1, + gconstpointer v2) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __G_HASH_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghmac.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghmac.h new file mode 100644 index 0000000..346b451 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghmac.h @@ -0,0 +1,85 @@ +/* ghmac.h - secure data hashing + * + * Copyright (C) 2011 Stef Walter + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_HMAC_H__ +#define __G_HMAC_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include "gchecksum.h" + +G_BEGIN_DECLS + +/** + * GHmac: + * + * An opaque structure representing a HMAC operation. + * To create a new GHmac, use g_hmac_new(). To free + * a GHmac, use g_hmac_unref(). + * + * Since: 2.30 + */ +typedef struct _GHmac GHmac; + +GLIB_AVAILABLE_IN_2_30 +GHmac * g_hmac_new (GChecksumType digest_type, + const guchar *key, + gsize key_len); +GLIB_AVAILABLE_IN_2_30 +GHmac * g_hmac_copy (const GHmac *hmac); +GLIB_AVAILABLE_IN_2_30 +GHmac * g_hmac_ref (GHmac *hmac); +GLIB_AVAILABLE_IN_2_30 +void g_hmac_unref (GHmac *hmac); +GLIB_AVAILABLE_IN_2_30 +void g_hmac_update (GHmac *hmac, + const guchar *data, + gssize length); +GLIB_AVAILABLE_IN_2_30 +const gchar * g_hmac_get_string (GHmac *hmac); +GLIB_AVAILABLE_IN_2_30 +void g_hmac_get_digest (GHmac *hmac, + guint8 *buffer, + gsize *digest_len); + +GLIB_AVAILABLE_IN_2_30 +gchar *g_compute_hmac_for_data (GChecksumType digest_type, + const guchar *key, + gsize key_len, + const guchar *data, + gsize length); +GLIB_AVAILABLE_IN_2_30 +gchar *g_compute_hmac_for_string (GChecksumType digest_type, + const guchar *key, + gsize key_len, + const gchar *str, + gssize length); +GLIB_AVAILABLE_IN_2_50 +gchar *g_compute_hmac_for_bytes (GChecksumType digest_type, + GBytes *key, + GBytes *data); + + +G_END_DECLS + +#endif /* __G_CHECKSUM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghook.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghook.h new file mode 100644 index 0000000..203bc36 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghook.h @@ -0,0 +1,204 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_HOOK_H__ +#define __G_HOOK_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +/* --- typedefs --- */ +typedef struct _GHook GHook; +typedef struct _GHookList GHookList; + +typedef gint (*GHookCompareFunc) (GHook *new_hook, + GHook *sibling); +typedef gboolean (*GHookFindFunc) (GHook *hook, + gpointer user_data); +typedef void (*GHookMarshaller) (GHook *hook, + gpointer user_data); +typedef gboolean (*GHookCheckMarshaller) (GHook *hook, + gpointer user_data); +typedef void (*GHookFunc) (gpointer data); +typedef gboolean (*GHookCheckFunc) (gpointer data); +typedef void (*GHookFinalizeFunc) (GHookList *hook_list, + GHook *hook); +typedef enum +{ + G_HOOK_FLAG_ACTIVE = 1 << 0, + G_HOOK_FLAG_IN_CALL = 1 << 1, + G_HOOK_FLAG_MASK = 0x0f +} GHookFlagMask; +#define G_HOOK_FLAG_USER_SHIFT (4) + + +/* --- structures --- */ +struct _GHookList +{ + gulong seq_id; + guint hook_size : 16; + guint is_setup : 1; + GHook *hooks; + gpointer dummy3; + GHookFinalizeFunc finalize_hook; + gpointer dummy[2]; +}; +struct _GHook +{ + gpointer data; + GHook *next; + GHook *prev; + guint ref_count; + gulong hook_id; + guint flags; + gpointer func; + GDestroyNotify destroy; +}; + + +/* --- macros --- */ +#define G_HOOK(hook) ((GHook*) (hook)) +#define G_HOOK_FLAGS(hook) (G_HOOK (hook)->flags) +#define G_HOOK_ACTIVE(hook) ((G_HOOK_FLAGS (hook) & \ + G_HOOK_FLAG_ACTIVE) != 0) +#define G_HOOK_IN_CALL(hook) ((G_HOOK_FLAGS (hook) & \ + G_HOOK_FLAG_IN_CALL) != 0) +#define G_HOOK_IS_VALID(hook) (G_HOOK (hook)->hook_id != 0 && \ + (G_HOOK_FLAGS (hook) & \ + G_HOOK_FLAG_ACTIVE)) +#define G_HOOK_IS_UNLINKED(hook) (G_HOOK (hook)->next == NULL && \ + G_HOOK (hook)->prev == NULL && \ + G_HOOK (hook)->hook_id == 0 && \ + G_HOOK (hook)->ref_count == 0) + + +/* --- prototypes --- */ +/* callback maintenance functions */ +GLIB_AVAILABLE_IN_ALL +void g_hook_list_init (GHookList *hook_list, + guint hook_size); +GLIB_AVAILABLE_IN_ALL +void g_hook_list_clear (GHookList *hook_list); +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_alloc (GHookList *hook_list); +GLIB_AVAILABLE_IN_ALL +void g_hook_free (GHookList *hook_list, + GHook *hook); +GLIB_AVAILABLE_IN_ALL +GHook * g_hook_ref (GHookList *hook_list, + GHook *hook); +GLIB_AVAILABLE_IN_ALL +void g_hook_unref (GHookList *hook_list, + GHook *hook); +GLIB_AVAILABLE_IN_ALL +gboolean g_hook_destroy (GHookList *hook_list, + gulong hook_id); +GLIB_AVAILABLE_IN_ALL +void g_hook_destroy_link (GHookList *hook_list, + GHook *hook); +GLIB_AVAILABLE_IN_ALL +void g_hook_prepend (GHookList *hook_list, + GHook *hook); +GLIB_AVAILABLE_IN_ALL +void g_hook_insert_before (GHookList *hook_list, + GHook *sibling, + GHook *hook); +GLIB_AVAILABLE_IN_ALL +void g_hook_insert_sorted (GHookList *hook_list, + GHook *hook, + GHookCompareFunc func); +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_get (GHookList *hook_list, + gulong hook_id); +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_find (GHookList *hook_list, + gboolean need_valids, + GHookFindFunc func, + gpointer data); +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_find_data (GHookList *hook_list, + gboolean need_valids, + gpointer data); +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_find_func (GHookList *hook_list, + gboolean need_valids, + gpointer func); +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_find_func_data (GHookList *hook_list, + gboolean need_valids, + gpointer func, + gpointer data); +/* return the first valid hook, and increment its reference count */ +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_first_valid (GHookList *hook_list, + gboolean may_be_in_call); +/* return the next valid hook with incremented reference count, and + * decrement the reference count of the original hook + */ +GLIB_AVAILABLE_IN_ALL +GHook* g_hook_next_valid (GHookList *hook_list, + GHook *hook, + gboolean may_be_in_call); +/* GHookCompareFunc implementation to insert hooks sorted by their id */ +GLIB_AVAILABLE_IN_ALL +gint g_hook_compare_ids (GHook *new_hook, + GHook *sibling); +/* convenience macros */ +#define g_hook_append( hook_list, hook ) \ + g_hook_insert_before ((hook_list), NULL, (hook)) +/* invoke all valid hooks with the (*GHookFunc) signature. + */ +GLIB_AVAILABLE_IN_ALL +void g_hook_list_invoke (GHookList *hook_list, + gboolean may_recurse); +/* invoke all valid hooks with the (*GHookCheckFunc) signature, + * and destroy the hook if FALSE is returned. + */ +GLIB_AVAILABLE_IN_ALL +void g_hook_list_invoke_check (GHookList *hook_list, + gboolean may_recurse); +/* invoke a marshaller on all valid hooks. + */ +GLIB_AVAILABLE_IN_ALL +void g_hook_list_marshal (GHookList *hook_list, + gboolean may_recurse, + GHookMarshaller marshaller, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_hook_list_marshal_check (GHookList *hook_list, + gboolean may_recurse, + GHookCheckMarshaller marshaller, + gpointer marshal_data); + +G_END_DECLS + +#endif /* __G_HOOK_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghostutils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghostutils.h new file mode 100644 index 0000000..6f35097 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/ghostutils.h @@ -0,0 +1,45 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_HOST_UTILS_H__ +#define __G_HOST_UTILS_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +gboolean g_hostname_is_non_ascii (const gchar *hostname); +GLIB_AVAILABLE_IN_ALL +gboolean g_hostname_is_ascii_encoded (const gchar *hostname); +GLIB_AVAILABLE_IN_ALL +gboolean g_hostname_is_ip_address (const gchar *hostname); + +GLIB_AVAILABLE_IN_ALL +gchar *g_hostname_to_ascii (const gchar *hostname); +GLIB_AVAILABLE_IN_ALL +gchar *g_hostname_to_unicode (const gchar *hostname); + +G_END_DECLS + +#endif /* __G_HOST_UTILS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gi18n-lib.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gi18n-lib.h new file mode 100644 index 0000000..fe9e79d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gi18n-lib.h @@ -0,0 +1,38 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997, 2002 Peter Mattis, Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_I18N_LIB_H__ +#define __G_I18N_LIB_H__ + +#include + +#include +#include + +#ifndef GETTEXT_PACKAGE +#error You must define GETTEXT_PACKAGE before including gi18n-lib.h. Did you forget to include config.h? +#endif + +#define _(String) ((char *) g_dgettext (GETTEXT_PACKAGE, String)) +#define Q_(String) g_dpgettext (GETTEXT_PACKAGE, String, 0) +#define N_(String) (String) +#define C_(Context,String) g_dpgettext (GETTEXT_PACKAGE, Context "\004" String, strlen (Context) + 1) +#define NC_(Context, String) (String) + +#endif /* __G_I18N_LIB_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gi18n.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gi18n.h new file mode 100644 index 0000000..dbb2cb3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gi18n.h @@ -0,0 +1,34 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997, 2002 Peter Mattis, Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_I18N_H__ +#define __G_I18N_H__ + +#include + +#include +#include + +#define _(String) gettext (String) +#define Q_(String) g_dpgettext (NULL, String, 0) +#define N_(String) (String) +#define C_(Context,String) g_dpgettext (NULL, Context "\004" String, strlen (Context) + 1) +#define NC_(Context, String) (String) + +#endif /* __G_I18N_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/giochannel.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/giochannel.h new file mode 100644 index 0000000..dee3d7d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/giochannel.h @@ -0,0 +1,407 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_IOCHANNEL_H__ +#define __G_IOCHANNEL_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +/* GIOChannel + */ + +typedef struct _GIOChannel GIOChannel; +typedef struct _GIOFuncs GIOFuncs; + +typedef enum +{ + G_IO_ERROR_NONE, + G_IO_ERROR_AGAIN, + G_IO_ERROR_INVAL, + G_IO_ERROR_UNKNOWN +} GIOError; + +#define G_IO_CHANNEL_ERROR g_io_channel_error_quark() + +typedef enum +{ + /* Derived from errno */ + G_IO_CHANNEL_ERROR_FBIG, + G_IO_CHANNEL_ERROR_INVAL, + G_IO_CHANNEL_ERROR_IO, + G_IO_CHANNEL_ERROR_ISDIR, + G_IO_CHANNEL_ERROR_NOSPC, + G_IO_CHANNEL_ERROR_NXIO, + G_IO_CHANNEL_ERROR_OVERFLOW, + G_IO_CHANNEL_ERROR_PIPE, + /* Other */ + G_IO_CHANNEL_ERROR_FAILED +} GIOChannelError; + +typedef enum +{ + G_IO_STATUS_ERROR, + G_IO_STATUS_NORMAL, + G_IO_STATUS_EOF, + G_IO_STATUS_AGAIN +} GIOStatus; + +typedef enum +{ + G_SEEK_CUR, + G_SEEK_SET, + G_SEEK_END +} GSeekType; + +typedef enum +{ + G_IO_FLAG_NONE GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_IO_FLAG_APPEND = 1 << 0, + G_IO_FLAG_NONBLOCK = 1 << 1, + G_IO_FLAG_IS_READABLE = 1 << 2, /* Read only flag */ + G_IO_FLAG_IS_WRITABLE = 1 << 3, /* Read only flag */ + G_IO_FLAG_IS_WRITEABLE = 1 << 3, /* Misspelling in 2.29.10 and earlier */ + G_IO_FLAG_IS_SEEKABLE = 1 << 4, /* Read only flag */ + G_IO_FLAG_MASK = (1 << 5) - 1, + G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK, + G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK +} GIOFlags; + +struct _GIOChannel +{ + /*< private >*/ + gint ref_count; + GIOFuncs *funcs; + + gchar *encoding; + GIConv read_cd; + GIConv write_cd; + gchar *line_term; /* String which indicates the end of a line of text */ + guint line_term_len; /* So we can have null in the line term */ + + gsize buf_size; + GString *read_buf; /* Raw data from the channel */ + GString *encoded_read_buf; /* Channel data converted to UTF-8 */ + GString *write_buf; /* Data ready to be written to the file */ + gchar partial_write_buf[6]; /* UTF-8 partial characters, null terminated */ + + /* Group the flags together, immediately after partial_write_buf, to save memory */ + + guint use_buffer : 1; /* The encoding uses the buffers */ + guint do_encode : 1; /* The encoding uses the GIConv coverters */ + guint close_on_unref : 1; /* Close the channel on final unref */ + guint is_readable : 1; /* Cached GIOFlag */ + guint is_writeable : 1; /* ditto */ + guint is_seekable : 1; /* ditto */ + + gpointer reserved1; + gpointer reserved2; +}; + +typedef gboolean (*GIOFunc) (GIOChannel *source, + GIOCondition condition, + gpointer user_data); +struct _GIOFuncs +{ + GIOStatus (*io_read) (GIOChannel *channel, + gchar *buf, + gsize count, + gsize *bytes_read, + GError **err); + GIOStatus (*io_write) (GIOChannel *channel, + const gchar *buf, + gsize count, + gsize *bytes_written, + GError **err); + GIOStatus (*io_seek) (GIOChannel *channel, + gint64 offset, + GSeekType type, + GError **err); + GIOStatus (*io_close) (GIOChannel *channel, + GError **err); + GSource* (*io_create_watch) (GIOChannel *channel, + GIOCondition condition); + void (*io_free) (GIOChannel *channel); + GIOStatus (*io_set_flags) (GIOChannel *channel, + GIOFlags flags, + GError **err); + GIOFlags (*io_get_flags) (GIOChannel *channel); +}; + +GLIB_AVAILABLE_IN_ALL +void g_io_channel_init (GIOChannel *channel); +GLIB_AVAILABLE_IN_ALL +GIOChannel *g_io_channel_ref (GIOChannel *channel); +GLIB_AVAILABLE_IN_ALL +void g_io_channel_unref (GIOChannel *channel); + +GLIB_DEPRECATED_FOR(g_io_channel_read_chars) +GIOError g_io_channel_read (GIOChannel *channel, + gchar *buf, + gsize count, + gsize *bytes_read); + +GLIB_DEPRECATED_FOR(g_io_channel_write_chars) +GIOError g_io_channel_write (GIOChannel *channel, + const gchar *buf, + gsize count, + gsize *bytes_written); + +GLIB_DEPRECATED_FOR(g_io_channel_seek_position) +GIOError g_io_channel_seek (GIOChannel *channel, + gint64 offset, + GSeekType type); + +GLIB_DEPRECATED_FOR(g_io_channel_shutdown) +void g_io_channel_close (GIOChannel *channel); + +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_shutdown (GIOChannel *channel, + gboolean flush, + GError **err); +GLIB_AVAILABLE_IN_ALL +guint g_io_add_watch_full (GIOChannel *channel, + gint priority, + GIOCondition condition, + GIOFunc func, + gpointer user_data, + GDestroyNotify notify); +GLIB_AVAILABLE_IN_ALL +GSource * g_io_create_watch (GIOChannel *channel, + GIOCondition condition); +GLIB_AVAILABLE_IN_ALL +guint g_io_add_watch (GIOChannel *channel, + GIOCondition condition, + GIOFunc func, + gpointer user_data); + +/* character encoding conversion involved functions. + */ + +GLIB_AVAILABLE_IN_ALL +void g_io_channel_set_buffer_size (GIOChannel *channel, + gsize size); +GLIB_AVAILABLE_IN_ALL +gsize g_io_channel_get_buffer_size (GIOChannel *channel); +GLIB_AVAILABLE_IN_ALL +GIOCondition g_io_channel_get_buffer_condition (GIOChannel *channel); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_set_flags (GIOChannel *channel, + GIOFlags flags, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOFlags g_io_channel_get_flags (GIOChannel *channel); +GLIB_AVAILABLE_IN_ALL +void g_io_channel_set_line_term (GIOChannel *channel, + const gchar *line_term, + gint length); +GLIB_AVAILABLE_IN_ALL +const gchar * g_io_channel_get_line_term (GIOChannel *channel, + gint *length); +GLIB_AVAILABLE_IN_ALL +void g_io_channel_set_buffered (GIOChannel *channel, + gboolean buffered); +GLIB_AVAILABLE_IN_ALL +gboolean g_io_channel_get_buffered (GIOChannel *channel); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_set_encoding (GIOChannel *channel, + const gchar *encoding, + GError **error); +GLIB_AVAILABLE_IN_ALL +const gchar * g_io_channel_get_encoding (GIOChannel *channel); +GLIB_AVAILABLE_IN_ALL +void g_io_channel_set_close_on_unref (GIOChannel *channel, + gboolean do_close); +GLIB_AVAILABLE_IN_ALL +gboolean g_io_channel_get_close_on_unref (GIOChannel *channel); + + +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_flush (GIOChannel *channel, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_read_line (GIOChannel *channel, + gchar **str_return, + gsize *length, + gsize *terminator_pos, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_read_line_string (GIOChannel *channel, + GString *buffer, + gsize *terminator_pos, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_read_to_end (GIOChannel *channel, + gchar **str_return, + gsize *length, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_read_chars (GIOChannel *channel, + gchar *buf, + gsize count, + gsize *bytes_read, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_read_unichar (GIOChannel *channel, + gunichar *thechar, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_write_chars (GIOChannel *channel, + const gchar *buf, + gssize count, + gsize *bytes_written, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_write_unichar (GIOChannel *channel, + gunichar thechar, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOStatus g_io_channel_seek_position (GIOChannel *channel, + gint64 offset, + GSeekType type, + GError **error); +GLIB_AVAILABLE_IN_ALL +GIOChannel* g_io_channel_new_file (const gchar *filename, + const gchar *mode, + GError **error); + +/* Error handling */ + +GLIB_AVAILABLE_IN_ALL +GQuark g_io_channel_error_quark (void); +GLIB_AVAILABLE_IN_ALL +GIOChannelError g_io_channel_error_from_errno (gint en); + +/* On Unix, IO channels created with this function for any file + * descriptor or socket. + * + * On Win32, this can be used either for files opened with the MSVCRT + * (the Microsoft run-time C library) _open() or _pipe, including file + * descriptors 0, 1 and 2 (corresponding to stdin, stdout and stderr), + * or for Winsock SOCKETs. If the parameter is a legal file + * descriptor, it is assumed to be such, otherwise it should be a + * SOCKET. This relies on SOCKETs and file descriptors not + * overlapping. If you want to be certain, call either + * g_io_channel_win32_new_fd() or g_io_channel_win32_new_socket() + * instead as appropriate. + * + * The term file descriptor as used in the context of Win32 refers to + * the emulated Unix-like file descriptors MSVCRT provides. The native + * corresponding concept is file HANDLE. There isn't as of yet a way to + * get GIOChannels for Win32 file HANDLEs. + */ +GLIB_AVAILABLE_IN_ALL +GIOChannel* g_io_channel_unix_new (int fd); +GLIB_AVAILABLE_IN_ALL +gint g_io_channel_unix_get_fd (GIOChannel *channel); + + +/* Hook for GClosure / GSource integration. Don't touch */ +GLIB_VAR GSourceFuncs g_io_watch_funcs; + +#ifdef G_OS_WIN32 + +/* You can use this "pseudo file descriptor" in a GPollFD to add + * polling for Windows messages. GTK applications should not do that. + */ + +#define G_WIN32_MSG_HANDLE 19981206 + +/* Use this to get a GPollFD from a GIOChannel, so that you can call + * g_io_channel_win32_poll(). After calling this you should only use + * g_io_channel_read() to read from the GIOChannel, i.e. never read() + * from the underlying file descriptor. For SOCKETs, it is possible to call + * recv(). + */ +GLIB_AVAILABLE_IN_ALL +void g_io_channel_win32_make_pollfd (GIOChannel *channel, + GIOCondition condition, + GPollFD *fd); + +/* This can be used to wait until at least one of the channels is readable. + * On Unix you would do a select() on the file descriptors of the channels. + */ +GLIB_AVAILABLE_IN_ALL +gint g_io_channel_win32_poll (GPollFD *fds, + gint n_fds, + gint timeout_); + +/* Create an IO channel for Windows messages for window handle hwnd. */ +#if GLIB_SIZEOF_VOID_P == 8 +/* We use gsize here so that it is still an integer type and not a + * pointer, like the guint in the traditional prototype. We can't use + * intptr_t as that is not portable enough. + */ +GLIB_AVAILABLE_IN_ALL +GIOChannel *g_io_channel_win32_new_messages (gsize hwnd); +#else +GLIB_AVAILABLE_IN_ALL +GIOChannel *g_io_channel_win32_new_messages (guint hwnd); +#endif + +/* Create an IO channel for C runtime (emulated Unix-like) file + * descriptors. After calling g_io_add_watch() on a IO channel + * returned by this function, you shouldn't call read() on the file + * descriptor. This is because adding polling for a file descriptor is + * implemented on Win32 by starting a thread that sits blocked in a + * read() from the file descriptor most of the time. All reads from + * the file descriptor should be done by this internal GLib + * thread. Your code should call only g_io_channel_read_chars(). + */ +GLIB_AVAILABLE_IN_ALL +GIOChannel* g_io_channel_win32_new_fd (gint fd); + +/* Get the C runtime file descriptor of a channel. */ +GLIB_AVAILABLE_IN_ALL +gint g_io_channel_win32_get_fd (GIOChannel *channel); + +/* Create an IO channel for a winsock socket. The parameter should be + * a SOCKET. Contrary to IO channels for file descriptors (on *Win32), + * you can use normal recv() or recvfrom() on sockets even if GLib + * is polling them. + */ +GLIB_AVAILABLE_IN_ALL +GIOChannel *g_io_channel_win32_new_socket (gint socket); + +GLIB_DEPRECATED_FOR(g_io_channel_win32_new_socket) +GIOChannel *g_io_channel_win32_new_stream_socket (gint socket); + +GLIB_AVAILABLE_IN_ALL +void g_io_channel_win32_set_debug (GIOChannel *channel, + gboolean flag); + +#endif + +G_END_DECLS + +#endif /* __G_IOCHANNEL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gkeyfile.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gkeyfile.h new file mode 100644 index 0000000..9d026d6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gkeyfile.h @@ -0,0 +1,332 @@ +/* gkeyfile.h - desktop entry file parser + * + * Copyright 2004 Red Hat, Inc. + * + * Ray Strode + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_KEY_FILE_H__ +#define __G_KEY_FILE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef enum +{ + G_KEY_FILE_ERROR_UNKNOWN_ENCODING, + G_KEY_FILE_ERROR_PARSE, + G_KEY_FILE_ERROR_NOT_FOUND, + G_KEY_FILE_ERROR_KEY_NOT_FOUND, + G_KEY_FILE_ERROR_GROUP_NOT_FOUND, + G_KEY_FILE_ERROR_INVALID_VALUE +} GKeyFileError; + +#define G_KEY_FILE_ERROR g_key_file_error_quark() + +GLIB_AVAILABLE_IN_ALL +GQuark g_key_file_error_quark (void); + +typedef struct _GKeyFile GKeyFile; + +typedef enum +{ + G_KEY_FILE_NONE = 0, + G_KEY_FILE_KEEP_COMMENTS = 1 << 0, + G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1 +} GKeyFileFlags; + +GLIB_AVAILABLE_IN_ALL +GKeyFile *g_key_file_new (void); +GLIB_AVAILABLE_IN_ALL +GKeyFile *g_key_file_ref (GKeyFile *key_file); +GLIB_AVAILABLE_IN_ALL +void g_key_file_unref (GKeyFile *key_file); +GLIB_AVAILABLE_IN_ALL +void g_key_file_free (GKeyFile *key_file); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_list_separator (GKeyFile *key_file, + gchar separator); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_load_from_file (GKeyFile *key_file, + const gchar *file, + GKeyFileFlags flags, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_load_from_data (GKeyFile *key_file, + const gchar *data, + gsize length, + GKeyFileFlags flags, + GError **error); +GLIB_AVAILABLE_IN_2_50 +gboolean g_key_file_load_from_bytes (GKeyFile *key_file, + GBytes *bytes, + GKeyFileFlags flags, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_load_from_dirs (GKeyFile *key_file, + const gchar *file, + const gchar **search_dirs, + gchar **full_path, + GKeyFileFlags flags, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_load_from_data_dirs (GKeyFile *key_file, + const gchar *file, + gchar **full_path, + GKeyFileFlags flags, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar *g_key_file_to_data (GKeyFile *key_file, + gsize *length, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_2_40 +gboolean g_key_file_save_to_file (GKeyFile *key_file, + const gchar *filename, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar *g_key_file_get_start_group (GKeyFile *key_file) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar **g_key_file_get_groups (GKeyFile *key_file, + gsize *length); +GLIB_AVAILABLE_IN_ALL +gchar **g_key_file_get_keys (GKeyFile *key_file, + const gchar *group_name, + gsize *length, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_has_group (GKeyFile *key_file, + const gchar *group_name); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_has_key (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar *g_key_file_get_value (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_value (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *value); +GLIB_AVAILABLE_IN_ALL +gchar *g_key_file_get_string (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_string (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *string); +GLIB_AVAILABLE_IN_ALL +gchar *g_key_file_get_locale_string (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *locale, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_2_56 +gchar *g_key_file_get_locale_for_key (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *locale) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_locale_string (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *locale, + const gchar *string); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_get_boolean (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_boolean (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gboolean value); +GLIB_AVAILABLE_IN_ALL +gint g_key_file_get_integer (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_integer (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gint value); +GLIB_AVAILABLE_IN_ALL +gint64 g_key_file_get_int64 (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_int64 (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gint64 value); +GLIB_AVAILABLE_IN_ALL +guint64 g_key_file_get_uint64 (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_uint64 (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + guint64 value); +GLIB_AVAILABLE_IN_ALL +gdouble g_key_file_get_double (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_double (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gdouble value); +GLIB_AVAILABLE_IN_ALL +gchar **g_key_file_get_string_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gsize *length, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_string_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar * const list[], + gsize length); +GLIB_AVAILABLE_IN_ALL +gchar **g_key_file_get_locale_string_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *locale, + gsize *length, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_locale_string_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *locale, + const gchar * const list[], + gsize length); +GLIB_AVAILABLE_IN_ALL +gboolean *g_key_file_get_boolean_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gsize *length, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_boolean_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gboolean list[], + gsize length); +GLIB_AVAILABLE_IN_ALL +gint *g_key_file_get_integer_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gsize *length, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_double_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gdouble list[], + gsize length); +GLIB_AVAILABLE_IN_ALL +gdouble *g_key_file_get_double_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gsize *length, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_key_file_set_integer_list (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + gint list[], + gsize length); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_set_comment (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + const gchar *comment, + GError **error); +GLIB_AVAILABLE_IN_ALL +gchar *g_key_file_get_comment (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_remove_comment (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_remove_key (GKeyFile *key_file, + const gchar *group_name, + const gchar *key, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_key_file_remove_group (GKeyFile *key_file, + const gchar *group_name, + GError **error); + +/* Defines for handling freedesktop.org Desktop files */ +#define G_KEY_FILE_DESKTOP_GROUP "Desktop Entry" + +#define G_KEY_FILE_DESKTOP_KEY_TYPE "Type" +#define G_KEY_FILE_DESKTOP_KEY_VERSION "Version" +#define G_KEY_FILE_DESKTOP_KEY_NAME "Name" +#define G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME "GenericName" +#define G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY "NoDisplay" +#define G_KEY_FILE_DESKTOP_KEY_COMMENT "Comment" +#define G_KEY_FILE_DESKTOP_KEY_ICON "Icon" +#define G_KEY_FILE_DESKTOP_KEY_HIDDEN "Hidden" +#define G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN "OnlyShowIn" +#define G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN "NotShowIn" +#define G_KEY_FILE_DESKTOP_KEY_TRY_EXEC "TryExec" +#define G_KEY_FILE_DESKTOP_KEY_EXEC "Exec" +#define G_KEY_FILE_DESKTOP_KEY_PATH "Path" +#define G_KEY_FILE_DESKTOP_KEY_TERMINAL "Terminal" +#define G_KEY_FILE_DESKTOP_KEY_MIME_TYPE "MimeType" +#define G_KEY_FILE_DESKTOP_KEY_CATEGORIES "Categories" +#define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY "StartupNotify" +#define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass" +#define G_KEY_FILE_DESKTOP_KEY_URL "URL" +#define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable" +#define G_KEY_FILE_DESKTOP_KEY_ACTIONS "Actions" + +#define G_KEY_FILE_DESKTOP_TYPE_APPLICATION "Application" +#define G_KEY_FILE_DESKTOP_TYPE_LINK "Link" +#define G_KEY_FILE_DESKTOP_TYPE_DIRECTORY "Directory" + +G_END_DECLS + +#endif /* __G_KEY_FILE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glib-autocleanups.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glib-autocleanups.h new file mode 100644 index 0000000..61e7d3c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glib-autocleanups.h @@ -0,0 +1,103 @@ +/* + * Copyright © 2015 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +static inline void +g_autoptr_cleanup_generic_gfree (void *p) +{ + void **pp = (void**)p; + g_free (*pp); +} + +static inline void +g_autoptr_cleanup_gstring_free (GString *string) +{ + if (string) + g_string_free (string, TRUE); +} + +/* Ignore deprecations in case we refer to a type which was added in a more + * recent GLib version than the user’s #GLIB_VERSION_MAX_ALLOWED definition. */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +/* If adding a cleanup here, please also add a test case to + * glib/tests/autoptr.c + */ +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAsyncQueue, g_async_queue_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBookmarkFile, g_bookmark_file_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBytes, g_bytes_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GChecksum, g_checksum_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDateTime, g_date_time_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDate, g_date_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDir, g_dir_close) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GError, g_error_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GHashTable, g_hash_table_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GHmac, g_hmac_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GIOChannel, g_io_channel_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GKeyFile, g_key_file_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GList, g_list_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GArray, g_array_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPtrArray, g_ptr_array_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GByteArray, g_byte_array_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainContext, g_main_context_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainContextPusher, g_main_context_pusher_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainLoop, g_main_loop_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSource, g_source_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMappedFile, g_mapped_file_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMarkupParseContext, g_markup_parse_context_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GNode, g_node_destroy) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GOptionContext, g_option_context_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GOptionGroup, g_option_group_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPatternSpec, g_pattern_spec_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GQueue, g_queue_free) +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GQueue, g_queue_clear) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRand, g_rand_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GScanner, g_scanner_destroy) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSequence, g_sequence_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSList, g_slist_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GString, g_autoptr_cleanup_gstring_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GStringChunk, g_string_chunk_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GStrvBuilder, g_strv_builder_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GThread, g_thread_unref) +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GMutex, g_mutex_clear) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMutexLocker, g_mutex_locker_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRecMutexLocker, g_rec_mutex_locker_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRWLockWriterLocker, g_rw_lock_writer_locker_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRWLockReaderLocker, g_rw_lock_reader_locker_free) +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GCond, g_cond_clear) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTimer, g_timer_destroy) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTimeZone, g_time_zone_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTree, g_tree_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariant, g_variant_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantBuilder, g_variant_builder_unref) +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GVariantBuilder, g_variant_builder_clear) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantIter, g_variant_iter_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantDict, g_variant_dict_unref) +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GVariantDict, g_variant_dict_clear) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantType, g_variant_type_free) +G_DEFINE_AUTO_CLEANUP_FREE_FUNC(GStrv, g_strfreev, NULL) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRefString, g_ref_string_release) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUri, g_uri_unref) + +G_GNUC_END_IGNORE_DEPRECATIONS diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glib-typeof.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glib-typeof.h new file mode 100644 index 0000000..106859d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glib-typeof.h @@ -0,0 +1,48 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2021 Iain Lane, Xavier Claessens + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __GLIB_TYPEOF_H__ +#define __GLIB_TYPEOF_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +/* + * We can only use __typeof__ on GCC >= 4.8, and not when compiling C++. Since + * __typeof__ is used in a few places in GLib, provide a pre-processor symbol + * to factor the check out from callers. + * + * This symbol is private. + */ +#undef glib_typeof +#if (!defined(__cplusplus) || (!defined (_MSVC_LANG) && __cplusplus < 201103L)) && \ + (G_GNUC_CHECK_VERSION(4, 8) || defined(__clang__)) +#define glib_typeof(t) __typeof__ (t) +#elif defined(__cplusplus) && \ + (__cplusplus >= 201103L || (defined (_MSVC_LANG) && _MSVC_LANG > 201103L)) && \ + GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_68 +/* C++11 decltype() is close enough for our usage */ +#include +#define glib_typeof(t) typename std::remove_reference::type +#endif + +#endif /* __GLIB_TYPEOF_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glist.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glist.h new file mode 100644 index 0000000..2a453b7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/glist.h @@ -0,0 +1,179 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_LIST_H__ +#define __G_LIST_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GList GList; + +struct _GList +{ + gpointer data; + GList *next; + GList *prev; +}; + +/* Doubly linked lists + */ +GLIB_AVAILABLE_IN_ALL +GList* g_list_alloc (void) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +void g_list_free (GList *list); +GLIB_AVAILABLE_IN_ALL +void g_list_free_1 (GList *list); +#define g_list_free1 g_list_free_1 +GLIB_AVAILABLE_IN_ALL +void g_list_free_full (GList *list, + GDestroyNotify free_func); +GLIB_AVAILABLE_IN_ALL +GList* g_list_append (GList *list, + gpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_prepend (GList *list, + gpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_insert (GList *list, + gpointer data, + gint position) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_insert_sorted (GList *list, + gpointer data, + GCompareFunc func) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_insert_sorted_with_data (GList *list, + gpointer data, + GCompareDataFunc func, + gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_insert_before (GList *list, + GList *sibling, + gpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_2_62 +GList* g_list_insert_before_link (GList *list, + GList *sibling, + GList *link_) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_concat (GList *list1, + GList *list2) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_remove (GList *list, + gconstpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_remove_all (GList *list, + gconstpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_remove_link (GList *list, + GList *llink) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_delete_link (GList *list, + GList *link_) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_reverse (GList *list) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_copy (GList *list) G_GNUC_WARN_UNUSED_RESULT; + +GLIB_AVAILABLE_IN_2_34 +GList* g_list_copy_deep (GList *list, + GCopyFunc func, + gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; + +GLIB_AVAILABLE_IN_ALL +GList* g_list_nth (GList *list, + guint n); +GLIB_AVAILABLE_IN_ALL +GList* g_list_nth_prev (GList *list, + guint n); +GLIB_AVAILABLE_IN_ALL +GList* g_list_find (GList *list, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +GList* g_list_find_custom (GList *list, + gconstpointer data, + GCompareFunc func); +GLIB_AVAILABLE_IN_ALL +gint g_list_position (GList *list, + GList *llink); +GLIB_AVAILABLE_IN_ALL +gint g_list_index (GList *list, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +GList* g_list_last (GList *list); +GLIB_AVAILABLE_IN_ALL +GList* g_list_first (GList *list); +GLIB_AVAILABLE_IN_ALL +guint g_list_length (GList *list); +GLIB_AVAILABLE_IN_ALL +void g_list_foreach (GList *list, + GFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GList* g_list_sort (GList *list, + GCompareFunc compare_func) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GList* g_list_sort_with_data (GList *list, + GCompareDataFunc compare_func, + gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +gpointer g_list_nth_data (GList *list, + guint n); + +GLIB_AVAILABLE_IN_2_64 +void g_clear_list (GList **list_ptr, + GDestroyNotify destroy); + +#define g_clear_list(list_ptr, destroy) \ + G_STMT_START { \ + GList *_list; \ + \ + _list = *(list_ptr); \ + if (_list) \ + { \ + *list_ptr = NULL; \ + \ + if ((destroy) != NULL) \ + g_list_free_full (_list, (destroy)); \ + else \ + g_list_free (_list); \ + } \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_64 + + +#define g_list_previous(list) ((list) ? (((GList *)(list))->prev) : NULL) +#define g_list_next(list) ((list) ? (((GList *)(list))->next) : NULL) + +G_END_DECLS + +#endif /* __G_LIST_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmacros.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmacros.h new file mode 100644 index 0000000..d4e5124 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmacros.h @@ -0,0 +1,1380 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +/* This file must not include any other glib header file and must thus + * not refer to variables from glibconfig.h + */ + +#ifndef __G_MACROS_H__ +#define __G_MACROS_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +/* We include stddef.h to get the system's definition of NULL + */ +#include + +/* + * Note: Clang (but not clang-cl) defines __GNUC__ and __GNUC_MINOR__. + * Both Clang 11.1 on current Arch Linux and Apple's Clang 12.0 define + * __GNUC__ = 4 and __GNUC_MINOR__ = 2. So G_GNUC_CHECK_VERSION(4, 2) on + * current Clang will be 1. + */ +#ifdef __GNUC__ +#define G_GNUC_CHECK_VERSION(major, minor) \ + ((__GNUC__ > (major)) || \ + ((__GNUC__ == (major)) && \ + (__GNUC_MINOR__ >= (minor)))) +#else +#define G_GNUC_CHECK_VERSION(major, minor) 0 +#endif + +/* Here we provide G_GNUC_EXTENSION as an alias for __extension__, + * where this is valid. This allows for warningless compilation of + * "long long" types even in the presence of '-ansi -pedantic'. + */ +#if G_GNUC_CHECK_VERSION(2, 8) +#define G_GNUC_EXTENSION __extension__ +#else +#define G_GNUC_EXTENSION +#endif + +/* Every compiler that we target supports inlining, but some of them may + * complain about it if we don't say "__inline". If we have C99, or if + * we are using C++, then we can use "inline" directly. Unfortunately + * Visual Studio does not support __STDC_VERSION__, so we need to check + * whether we are on Visual Studio 2013 or earlier to see that we need to + * say "__inline" in C mode. + * Otherwise, we say "__inline" to avoid the warning. + */ +#define G_CAN_INLINE +#ifndef __cplusplus +# ifdef _MSC_VER +# if (_MSC_VER < 1900) +# define G_INLINE_DEFINE_NEEDED +# endif +# elif !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199900) +# define G_INLINE_DEFINE_NEEDED +# endif +#endif + +#ifdef G_INLINE_DEFINE_NEEDED +# undef inline +# define inline __inline +#endif + +#undef G_INLINE_DEFINE_NEEDED + +/** + * G_INLINE_FUNC: + * + * This macro used to be used to conditionally define inline functions + * in a compatible way before this feature was supported in all + * compilers. These days, GLib requires inlining support from the + * compiler, so your GLib-using programs can safely assume that the + * "inline" keyword works properly. + * + * Never use this macro anymore. Just say "static inline". + * + * Deprecated: 2.48: Use "static inline" instead + */ + +/* For historical reasons we need to continue to support those who + * define G_IMPLEMENT_INLINES to mean "don't implement this here". + */ +#ifdef G_IMPLEMENT_INLINES +# define G_INLINE_FUNC extern GLIB_DEPRECATED_MACRO_IN_2_48_FOR(static inline) +# undef G_CAN_INLINE +#else +# define G_INLINE_FUNC static inline GLIB_DEPRECATED_MACRO_IN_2_48_FOR(static inline) +#endif /* G_IMPLEMENT_INLINES */ + +/* + * Attribute support detection. Works on clang and GCC >= 5 + * https://clang.llvm.org/docs/LanguageExtensions.html#has-attribute + * https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005fattribute.html + */ + +#ifdef __has_attribute +#define g_macro__has_attribute __has_attribute +#else + +/* + * Fallback for GCC < 5 and other compilers not supporting __has_attribute. + */ +#define g_macro__has_attribute(x) g_macro__has_attribute_##x + +#define g_macro__has_attribute___pure__ G_GNUC_CHECK_VERSION (2, 96) +#define g_macro__has_attribute___malloc__ G_GNUC_CHECK_VERSION (2, 96) +#define g_macro__has_attribute___noinline__ G_GNUC_CHECK_VERSION (2, 96) +#define g_macro__has_attribute___sentinel__ G_GNUC_CHECK_VERSION (4, 0) +#define g_macro__has_attribute___alloc_size__ G_GNUC_CHECK_VERSION (4, 3) +#define g_macro__has_attribute___format__ G_GNUC_CHECK_VERSION (2, 4) +#define g_macro__has_attribute___format_arg__ G_GNUC_CHECK_VERSION (2, 4) +#define g_macro__has_attribute___noreturn__ (G_GNUC_CHECK_VERSION (2, 8) || (0x5110 <= __SUNPRO_C)) +#define g_macro__has_attribute___const__ G_GNUC_CHECK_VERSION (2, 4) +#define g_macro__has_attribute___unused__ G_GNUC_CHECK_VERSION (2, 4) +#define g_macro__has_attribute___no_instrument_function__ G_GNUC_CHECK_VERSION (2, 4) +#define g_macro__has_attribute_fallthrough G_GNUC_CHECK_VERSION (6, 0) +#define g_macro__has_attribute___deprecated__ G_GNUC_CHECK_VERSION (3, 1) +#define g_macro__has_attribute_may_alias G_GNUC_CHECK_VERSION (3, 3) +#define g_macro__has_attribute_warn_unused_result G_GNUC_CHECK_VERSION (3, 4) +#define g_macro__has_attribute_cleanup G_GNUC_CHECK_VERSION (3, 3) + +#endif + +/* Provide macros to feature the GCC function attribute. + */ + +/** + * G_GNUC_PURE: + * + * Expands to the GNU C `pure` function attribute if the compiler is gcc. + * Declaring a function as `pure` enables better optimization of calls to + * the function. A `pure` function has no effects except its return value + * and the return value depends only on the parameters and/or global + * variables. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * gboolean g_type_check_value (const GValue *value) G_GNUC_PURE; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-pure-function-attribute) for more details. + */ + +/** + * G_GNUC_MALLOC: + * + * Expands to the + * [GNU C `malloc` function attribute](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-functions-that-behave-like-malloc) + * if the compiler is gcc. + * Declaring a function as `malloc` enables better optimization of the function, + * but must only be done if the allocation behaviour of the function is fully + * understood, otherwise miscompilation can result. + * + * A function can have the `malloc` attribute if it returns a pointer which is + * guaranteed to not alias with any other pointer valid when the function + * returns, and moreover no pointers to valid objects occur in any storage + * addressed by the returned pointer. + * + * In practice, this means that `G_GNUC_MALLOC` can be used with any function + * which returns unallocated or zeroed-out memory, but not with functions which + * return initialised structures containing other pointers, or with functions + * that reallocate memory. This definition changed in GLib 2.58 to match the + * stricter definition introduced around GCC 5. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * gpointer g_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); + * ]| + * + * See the + * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-functions-that-behave-like-malloc) + * for more details. + * + * Since: 2.6 + */ + +/** + * G_GNUC_NO_INLINE: + * + * Expands to the GNU C `noinline` function attribute if the compiler is gcc. + * If the compiler is not gcc, this macro expands to nothing. + * + * Declaring a function as `noinline` prevents the function from being + * considered for inlining. + * + * This macro is provided for retro-compatibility and will be eventually + * deprecated, but %G_NO_INLINE should be used instead. + * + * The attribute may be placed before the declaration or definition, + * right before the `static` keyword. + * + * |[ + * G_GNUC_NO_INLINE + * static int + * do_not_inline_this (void) + * { + * ... + * } + * ]| + * + * See the + * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-noinline-function-attribute) + * for more details. + * + * See also: %G_NO_INLINE, %G_ALWAYS_INLINE. + * + * Since: 2.58 + */ + +#if g_macro__has_attribute(__pure__) +#define G_GNUC_PURE __attribute__((__pure__)) +#else +#define G_GNUC_PURE +#endif + +#if g_macro__has_attribute(__malloc__) +#define G_GNUC_MALLOC __attribute__ ((__malloc__)) +#else +#define G_GNUC_MALLOC +#endif + +#if g_macro__has_attribute(__noinline__) +#define G_GNUC_NO_INLINE __attribute__ ((__noinline__)) \ + GLIB_AVAILABLE_MACRO_IN_2_58 +#else +#define G_GNUC_NO_INLINE \ + GLIB_AVAILABLE_MACRO_IN_2_58 +#endif + +/** + * G_GNUC_NULL_TERMINATED: + * + * Expands to the GNU C `sentinel` function attribute if the compiler is gcc. + * This function attribute only applies to variadic functions and instructs + * the compiler to check that the argument list is terminated with an + * explicit %NULL. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * gchar *g_strconcat (const gchar *string1, + * ...) G_GNUC_NULL_TERMINATED; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-sentinel-function-attribute) for more details. + * + * Since: 2.8 + */ +#if g_macro__has_attribute(__sentinel__) +#define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__)) +#else +#define G_GNUC_NULL_TERMINATED +#endif + +/* + * Clang feature detection: http://clang.llvm.org/docs/LanguageExtensions.html + * These are not available on GCC, but since the pre-processor doesn't do + * operator short-circuiting, we can't use it in a statement or we'll get: + * + * error: missing binary operator before token "(" + * + * So we define it to 0 to satisfy the pre-processor. + */ + +#ifdef __has_feature +#define g_macro__has_feature __has_feature +#else +#define g_macro__has_feature(x) 0 +#endif + +#ifdef __has_builtin +#define g_macro__has_builtin __has_builtin +#else +#define g_macro__has_builtin(x) 0 +#endif + +#ifdef __has_extension +#define g_macro__has_extension __has_extension +#else +#define g_macro__has_extension(x) 0 +#endif + +/** + * G_GNUC_ALLOC_SIZE: + * @x: the index of the argument specifying the allocation size + * + * Expands to the GNU C `alloc_size` function attribute if the compiler + * is a new enough gcc. This attribute tells the compiler that the + * function returns a pointer to memory of a size that is specified + * by the @xth function parameter. + * + * Place the attribute after the function declaration, just before the + * semicolon. + * + * |[ + * gpointer g_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-alloc_005fsize-function-attribute) for more details. + * + * Since: 2.18 + */ + +/** + * G_GNUC_ALLOC_SIZE2: + * @x: the index of the argument specifying one factor of the allocation size + * @y: the index of the argument specifying the second factor of the allocation size + * + * Expands to the GNU C `alloc_size` function attribute if the compiler is a + * new enough gcc. This attribute tells the compiler that the function returns + * a pointer to memory of a size that is specified by the product of two + * function parameters. + * + * Place the attribute after the function declaration, just before the + * semicolon. + * + * |[ + * gpointer g_malloc_n (gsize n_blocks, + * gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1, 2); + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-alloc_005fsize-function-attribute) for more details. + * + * Since: 2.18 + */ +#if g_macro__has_attribute(__alloc_size__) +#define G_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) +#define G_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y))) +#else +#define G_GNUC_ALLOC_SIZE(x) +#define G_GNUC_ALLOC_SIZE2(x,y) +#endif + +/** + * G_GNUC_PRINTF: + * @format_idx: the index of the argument corresponding to the + * format string (the arguments are numbered from 1) + * @arg_idx: the index of the first of the format arguments, or 0 if + * there are no format arguments + * + * Expands to the GNU C `format` function attribute if the compiler is gcc. + * This is used for declaring functions which take a variable number of + * arguments, with the same syntax as `printf()`. It allows the compiler + * to type-check the arguments passed to the function. + * + * Place the attribute after the function declaration, just before the + * semicolon. + * + * See the + * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-Wformat-3288) + * for more details. + * + * |[ + * gint g_snprintf (gchar *string, + * gulong n, + * gchar const *format, + * ...) G_GNUC_PRINTF (3, 4); + * ]| + */ + +/** + * G_GNUC_SCANF: + * @format_idx: the index of the argument corresponding to + * the format string (the arguments are numbered from 1) + * @arg_idx: the index of the first of the format arguments, or 0 if + * there are no format arguments + * + * Expands to the GNU C `format` function attribute if the compiler is gcc. + * This is used for declaring functions which take a variable number of + * arguments, with the same syntax as `scanf()`. It allows the compiler + * to type-check the arguments passed to the function. + * + * |[ + * int my_scanf (MyStream *stream, + * const char *format, + * ...) G_GNUC_SCANF (2, 3); + * int my_vscanf (MyStream *stream, + * const char *format, + * va_list ap) G_GNUC_SCANF (2, 0); + * ]| + * + * See the + * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-Wformat-3288) + * for details. + */ + +/** + * G_GNUC_STRFTIME: + * @format_idx: the index of the argument corresponding to + * the format string (the arguments are numbered from 1) + * + * Expands to the GNU C `strftime` format function attribute if the compiler + * is gcc. This is used for declaring functions which take a format argument + * which is passed to `strftime()` or an API implementing its formats. It allows + * the compiler check the format passed to the function. + * + * |[ + * gsize my_strftime (MyBuffer *buffer, + * const char *format, + * const struct tm *tm) G_GNUC_STRFTIME (2); + * ]| + * + * See the + * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-Wformat-3288) + * for details. + * + * Since: 2.60 + */ + +/** + * G_GNUC_FORMAT: + * @arg_idx: the index of the argument + * + * Expands to the GNU C `format_arg` function attribute if the compiler + * is gcc. This function attribute specifies that a function takes a + * format string for a `printf()`, `scanf()`, `strftime()` or `strfmon()` style + * function and modifies it, so that the result can be passed to a `printf()`, + * `scanf()`, `strftime()` or `strfmon()` style function (with the remaining + * arguments to the format function the same as they would have been + * for the unmodified string). + * + * Place the attribute after the function declaration, just before the + * semicolon. + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-Wformat-nonliteral-1) for more details. + * + * |[ + * gchar *g_dgettext (gchar *domain_name, gchar *msgid) G_GNUC_FORMAT (2); + * ]| + */ + +/** + * G_GNUC_NORETURN: + * + * Expands to the GNU C `noreturn` function attribute if the compiler is gcc. + * It is used for declaring functions which never return. It enables + * optimization of the function, and avoids possible compiler warnings. + * + * Since 2.68, it is recommended that code uses %G_NORETURN instead of + * %G_GNUC_NORETURN, as that works on more platforms and compilers (in + * particular, MSVC and C++11) than %G_GNUC_NORETURN, which works with GCC and + * Clang only. %G_GNUC_NORETURN continues to work, so has not been deprecated + * yet. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * void g_abort (void) G_GNUC_NORETURN; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-noreturn-function-attribute) for more details. + */ + +/** + * G_GNUC_CONST: + * + * Expands to the GNU C `const` function attribute if the compiler is gcc. + * Declaring a function as `const` enables better optimization of calls to + * the function. A `const` function doesn't examine any values except its + * parameters, and has no effects except its return value. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * gchar g_ascii_tolower (gchar c) G_GNUC_CONST; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-const-function-attribute) for more details. + * + * A function that has pointer arguments and examines the data pointed to + * must not be declared `const`. Likewise, a function that calls a non-`const` + * function usually must not be `const`. It doesn't make sense for a `const` + * function to return `void`. + */ + +/** + * G_GNUC_UNUSED: + * + * Expands to the GNU C `unused` function attribute if the compiler is gcc. + * It is used for declaring functions and arguments which may never be used. + * It avoids possible compiler warnings. + * + * For functions, place the attribute after the declaration, just before the + * semicolon. For arguments, place the attribute at the beginning of the + * argument declaration. + * + * |[ + * void my_unused_function (G_GNUC_UNUSED gint unused_argument, + * gint other_argument) G_GNUC_UNUSED; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-unused-function-attribute) for more details. + */ + +/** + * G_GNUC_NO_INSTRUMENT: + * + * Expands to the GNU C `no_instrument_function` function attribute if the + * compiler is gcc. Functions with this attribute will not be instrumented + * for profiling, when the compiler is called with the + * `-finstrument-functions` option. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * int do_uninteresting_things (void) G_GNUC_NO_INSTRUMENT; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-no_005finstrument_005ffunction-function-attribute) for more details. + */ + +#if g_macro__has_attribute(__format__) + +#if !defined (__clang__) && G_GNUC_CHECK_VERSION (4, 4) +#define G_GNUC_PRINTF( format_idx, arg_idx ) \ + __attribute__((__format__ (gnu_printf, format_idx, arg_idx))) +#define G_GNUC_SCANF( format_idx, arg_idx ) \ + __attribute__((__format__ (gnu_scanf, format_idx, arg_idx))) +#define G_GNUC_STRFTIME( format_idx ) \ + __attribute__((__format__ (gnu_strftime, format_idx, 0))) \ + GLIB_AVAILABLE_MACRO_IN_2_60 +#else +#define G_GNUC_PRINTF( format_idx, arg_idx ) \ + __attribute__((__format__ (__printf__, format_idx, arg_idx))) +#define G_GNUC_SCANF( format_idx, arg_idx ) \ + __attribute__((__format__ (__scanf__, format_idx, arg_idx))) +#define G_GNUC_STRFTIME( format_idx ) \ + __attribute__((__format__ (__strftime__, format_idx, 0))) \ + GLIB_AVAILABLE_MACRO_IN_2_60 +#endif + +#else + +#define G_GNUC_PRINTF( format_idx, arg_idx ) +#define G_GNUC_SCANF( format_idx, arg_idx ) +#define G_GNUC_STRFTIME( format_idx ) \ + GLIB_AVAILABLE_MACRO_IN_2_60 + +#endif + +#if g_macro__has_attribute(__format_arg__) +#define G_GNUC_FORMAT(arg_idx) \ + __attribute__ ((__format_arg__ (arg_idx))) +#else +#define G_GNUC_FORMAT( arg_idx ) +#endif + +#if g_macro__has_attribute(__noreturn__) +#define G_GNUC_NORETURN \ + __attribute__ ((__noreturn__)) +#else +/* NOTE: MSVC has __declspec(noreturn) but unlike GCC __attribute__, + * __declspec can only be placed at the start of the function prototype + * and not at the end, so we can't use it without breaking API. + */ +#define G_GNUC_NORETURN +#endif + +#if g_macro__has_attribute(__const__) +#define G_GNUC_CONST \ + __attribute__ ((__const__)) +#else +#define G_GNUC_CONST +#endif + +#if g_macro__has_attribute(__unused__) +#define G_GNUC_UNUSED \ + __attribute__ ((__unused__)) +#else +#define G_GNUC_UNUSED +#endif + +#if g_macro__has_attribute(__no_instrument_function__) +#define G_GNUC_NO_INSTRUMENT \ + __attribute__ ((__no_instrument_function__)) +#else +#define G_GNUC_NO_INSTRUMENT +#endif + +/** + * G_GNUC_FALLTHROUGH: + * + * Expands to the GNU C `fallthrough` statement attribute if the compiler supports it. + * This allows declaring case statement to explicitly fall through in switch + * statements. To enable this feature, use `-Wimplicit-fallthrough` during + * compilation. + * + * Put the attribute right before the case statement you want to fall through + * to. + * + * |[ + * switch (foo) + * { + * case 1: + * g_message ("it's 1"); + * G_GNUC_FALLTHROUGH; + * case 2: + * g_message ("it's either 1 or 2"); + * break; + * } + * ]| + * + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Statement-Attributes.html#index-fallthrough-statement-attribute) for more details. + * + * Since: 2.60 + */ +#if g_macro__has_attribute(fallthrough) +#define G_GNUC_FALLTHROUGH __attribute__((fallthrough)) \ + GLIB_AVAILABLE_MACRO_IN_2_60 +#else +#define G_GNUC_FALLTHROUGH \ + GLIB_AVAILABLE_MACRO_IN_2_60 +#endif + +/** + * G_GNUC_DEPRECATED: + * + * Expands to the GNU C `deprecated` attribute if the compiler is gcc. + * It can be used to mark `typedef`s, variables and functions as deprecated. + * When called with the `-Wdeprecated-declarations` option, + * gcc will generate warnings when deprecated interfaces are used. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * int my_mistake (void) G_GNUC_DEPRECATED; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-deprecated-function-attribute) for more details. + * + * Since: 2.2 + */ +#if g_macro__has_attribute(__deprecated__) +#define G_GNUC_DEPRECATED __attribute__((__deprecated__)) +#else +#define G_GNUC_DEPRECATED +#endif /* __GNUC__ */ + +/** + * G_GNUC_DEPRECATED_FOR: + * @f: the intended replacement for the deprecated symbol, + * such as the name of a function + * + * Like %G_GNUC_DEPRECATED, but names the intended replacement for the + * deprecated symbol if the version of gcc in use is new enough to support + * custom deprecation messages. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * int my_mistake (void) G_GNUC_DEPRECATED_FOR(my_replacement); + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-deprecated-function-attribute) for more details. + * + * Note that if @f is a macro, it will be expanded in the warning message. + * You can enclose it in quotes to prevent this. (The quotes will show up + * in the warning, but it's better than showing the macro expansion.) + * + * Since: 2.26 + */ +#if G_GNUC_CHECK_VERSION(4, 5) || defined(__clang__) +#define G_GNUC_DEPRECATED_FOR(f) \ + __attribute__((deprecated("Use " #f " instead"))) \ + GLIB_AVAILABLE_MACRO_IN_2_26 +#else +#define G_GNUC_DEPRECATED_FOR(f) G_GNUC_DEPRECATED \ + GLIB_AVAILABLE_MACRO_IN_2_26 +#endif /* __GNUC__ */ + +#ifdef __ICC +#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + _Pragma ("warning (push)") \ + _Pragma ("warning (disable:1478)") +#define G_GNUC_END_IGNORE_DEPRECATIONS \ + _Pragma ("warning (pop)") +#elif G_GNUC_CHECK_VERSION(4, 6) +#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#define G_GNUC_END_IGNORE_DEPRECATIONS \ + _Pragma ("GCC diagnostic pop") +#elif defined (_MSC_VER) && (_MSC_VER >= 1500) && !defined (__clang__) +#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + __pragma (warning (push)) \ + __pragma (warning (disable : 4996)) +#define G_GNUC_END_IGNORE_DEPRECATIONS \ + __pragma (warning (pop)) +#elif defined (__clang__) +#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#define G_GNUC_END_IGNORE_DEPRECATIONS \ + _Pragma("clang diagnostic pop") +#else +#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS +#define G_GNUC_END_IGNORE_DEPRECATIONS +#define GLIB_CANNOT_IGNORE_DEPRECATIONS +#endif + +/** + * G_GNUC_MAY_ALIAS: + * + * Expands to the GNU C `may_alias` type attribute if the compiler is gcc. + * Types with this attribute will not be subjected to type-based alias + * analysis, but are assumed to alias with any other type, just like `char`. + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-may_005falias-type-attribute) for details. + * + * Since: 2.14 + */ +#if g_macro__has_attribute(may_alias) +#define G_GNUC_MAY_ALIAS __attribute__((may_alias)) +#else +#define G_GNUC_MAY_ALIAS +#endif + +/** + * G_GNUC_WARN_UNUSED_RESULT: + * + * Expands to the GNU C `warn_unused_result` function attribute if the compiler + * is gcc. This function attribute makes the compiler emit a warning if the + * result of a function call is ignored. + * + * Place the attribute after the declaration, just before the semicolon. + * + * |[ + * GList *g_list_append (GList *list, + * gpointer data) G_GNUC_WARN_UNUSED_RESULT; + * ]| + * + * See the [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-warn_005funused_005fresult-function-attribute) for more details. + * + * Since: 2.10 + */ +#if g_macro__has_attribute(warn_unused_result) +#define G_GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +#define G_GNUC_WARN_UNUSED_RESULT +#endif /* __GNUC__ */ + +/** + * G_GNUC_FUNCTION: + * + * Expands to "" on all modern compilers, and to __FUNCTION__ on gcc + * version 2.x. Don't use it. + * + * Deprecated: 2.16: Use G_STRFUNC() instead + */ + +/** + * G_GNUC_PRETTY_FUNCTION: + * + * Expands to "" on all modern compilers, and to __PRETTY_FUNCTION__ + * on gcc version 2.x. Don't use it. + * + * Deprecated: 2.16: Use G_STRFUNC() instead + */ + +/* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with + * macros, so we can refer to them as strings unconditionally. + * usage not-recommended since gcc-3.0 + * + * Mark them as deprecated since 2.26, since that’s when version macros were + * introduced. + */ +#if defined (__GNUC__) && (__GNUC__ < 3) +#define G_GNUC_FUNCTION __FUNCTION__ GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) +#define G_GNUC_PRETTY_FUNCTION __PRETTY_FUNCTION__ GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) +#else /* !__GNUC__ */ +#define G_GNUC_FUNCTION "" GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) +#define G_GNUC_PRETTY_FUNCTION "" GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) +#endif /* !__GNUC__ */ + +#if g_macro__has_feature(attribute_analyzer_noreturn) && defined(__clang_analyzer__) +#define G_ANALYZER_ANALYZING 1 +#define G_ANALYZER_NORETURN __attribute__((analyzer_noreturn)) +#elif defined(__COVERITY__) +#define G_ANALYZER_ANALYZING 1 +#define G_ANALYZER_NORETURN __attribute__((noreturn)) +#else +#define G_ANALYZER_ANALYZING 0 +#define G_ANALYZER_NORETURN +#endif + +#define G_STRINGIFY(macro_or_string) G_STRINGIFY_ARG (macro_or_string) +#define G_STRINGIFY_ARG(contents) #contents + +#ifndef __GI_SCANNER__ /* The static assert macro really confuses the introspection parser */ +#define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2 +#define G_PASTE(identifier1,identifier2) G_PASTE_ARGS (identifier1, identifier2) +#if !defined(__cplusplus) && defined(__STDC_VERSION__) && \ + (__STDC_VERSION__ >= 201112L || g_macro__has_feature(c_static_assert) || g_macro__has_extension(c_static_assert)) +#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false") +#elif (defined(__cplusplus) && __cplusplus >= 201103L) || \ + (defined(__cplusplus) && defined (_MSC_VER) && (_MSC_VER >= 1600)) || \ + (defined (_MSC_VER) && (_MSC_VER >= 1800)) +#define G_STATIC_ASSERT(expr) static_assert (expr, "Expression evaluates to false") +#else +#ifdef __COUNTER__ +#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED +#else +#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __LINE__)[(expr) ? 1 : -1] G_GNUC_UNUSED +#endif +#endif /* __STDC_VERSION__ */ +#define G_STATIC_ASSERT_EXPR(expr) ((void) sizeof (char[(expr) ? 1 : -1])) +#endif /* !__GI_SCANNER__ */ + +/* Provide a string identifying the current code position */ +#if defined(__GNUC__) && (__GNUC__ < 3) && !defined(__cplusplus) +#define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) ":" __PRETTY_FUNCTION__ "()" +#else +#define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) +#endif + +/* Provide a string identifying the current function, non-concatenatable */ +#if defined (__GNUC__) && defined (__cplusplus) +#define G_STRFUNC ((const char*) (__PRETTY_FUNCTION__)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define G_STRFUNC ((const char*) (__func__)) +#elif defined (__GNUC__) || (defined(_MSC_VER) && (_MSC_VER > 1300)) +#define G_STRFUNC ((const char*) (__FUNCTION__)) +#else +#define G_STRFUNC ((const char*) ("???")) +#endif + +/* Guard C code in headers, while including them from C++ */ +#ifdef __cplusplus +#define G_BEGIN_DECLS extern "C" { +#define G_END_DECLS } +#else +#define G_BEGIN_DECLS +#define G_END_DECLS +#endif + +/* Provide definitions for some commonly used macros. + * Some of them are only provided if they haven't already + * been defined. It is assumed that if they are already + * defined then the current definition is correct. + */ +#ifndef NULL +# ifdef __cplusplus +# define NULL (0L) +# else /* !__cplusplus */ +# define NULL ((void*) 0) +# endif /* !__cplusplus */ +#endif + +#ifndef FALSE +#define FALSE (0) +#endif + +#ifndef TRUE +#define TRUE (!FALSE) +#endif + +#undef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) + +#undef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) + +#undef ABS +#define ABS(a) (((a) < 0) ? -(a) : (a)) + +#undef CLAMP +#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) + +#define G_APPROX_VALUE(a, b, epsilon) \ + (((a) > (b) ? (a) - (b) : (b) - (a)) < (epsilon)) + +/* Count the number of elements in an array. The array must be defined + * as such; using this with a dynamically allocated array will give + * incorrect results. + */ +#define G_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0])) + +/* Macros by analogy to GINT_TO_POINTER, GPOINTER_TO_INT + */ +#define GPOINTER_TO_SIZE(p) ((gsize) (p)) +#define GSIZE_TO_POINTER(s) ((gpointer) (gsize) (s)) + +/* Provide convenience macros for handling structure + * fields through their offsets. + */ + +#if G_GNUC_CHECK_VERSION(4, 0) || defined(_MSC_VER) +#define G_STRUCT_OFFSET(struct_type, member) \ + ((glong) offsetof (struct_type, member)) +#else +#define G_STRUCT_OFFSET(struct_type, member) \ + ((glong) ((guint8*) &((struct_type*) 0)->member)) +#endif + +#define G_STRUCT_MEMBER_P(struct_p, struct_offset) \ + ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset))) +#define G_STRUCT_MEMBER(member_type, struct_p, struct_offset) \ + (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset))) + +/* Provide simple macro statement wrappers: + * G_STMT_START { statements; } G_STMT_END; + * This can be used as a single statement, like: + * if (x) G_STMT_START { ... } G_STMT_END; else ... + * This intentionally does not use compiler extensions like GCC's '({...})' to + * avoid portability issue or side effects when compiled with different compilers. + * MSVC complains about "while(0)": C4127: "Conditional expression is constant", + * so we use __pragma to avoid the warning since the use here is intentional. + */ +#if !(defined (G_STMT_START) && defined (G_STMT_END)) +#define G_STMT_START do +#if defined (_MSC_VER) && (_MSC_VER >= 1500) +#define G_STMT_END \ + __pragma(warning(push)) \ + __pragma(warning(disable:4127)) \ + while(0) \ + __pragma(warning(pop)) +#else +#define G_STMT_END while (0) +#endif +#endif + +/* Provide G_ALIGNOF alignment macro. + * + * Note we cannot use the gcc __alignof__ operator here, as that returns the + * preferred alignment rather than the minimal alignment. See + * https://gitlab.gnome.org/GNOME/glib/merge_requests/538/diffs#note_390790. + */ + +/** + * G_ALIGNOF + * @type: a type-name + * + * Return the minimal alignment required by the platform ABI for values of the given + * type. The address of a variable or struct member of the given type must always be + * a multiple of this alignment. For example, most platforms require int variables + * to be aligned at a 4-byte boundary, so `G_ALIGNOF (int)` is 4 on most platforms. + * + * Note this is not necessarily the same as the value returned by GCC’s + * `__alignof__` operator, which returns the preferred alignment for a type. + * The preferred alignment may be a stricter alignment than the minimal + * alignment. + * + * Since: 2.60 + */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__cplusplus) +#define G_ALIGNOF(type) _Alignof (type) \ + GLIB_AVAILABLE_MACRO_IN_2_60 +#else +#define G_ALIGNOF(type) (G_STRUCT_OFFSET (struct { char a; type b; }, b)) \ + GLIB_AVAILABLE_MACRO_IN_2_60 +#endif + +/** + * G_CONST_RETURN: + * + * If %G_DISABLE_CONST_RETURNS is defined, this macro expands + * to nothing. By default, the macro expands to const. The macro + * can be used in place of const for functions that return a value + * that should not be modified. The purpose of this macro is to allow + * us to turn on const for returned constant strings by default, while + * allowing programmers who find that annoying to turn it off. This macro + * should only be used for return values and for "out" parameters, it + * doesn't make sense for "in" parameters. + * + * Deprecated: 2.30: API providers should replace all existing uses with + * const and API consumers should adjust their code accordingly + */ +#ifdef G_DISABLE_CONST_RETURNS +#define G_CONST_RETURN GLIB_DEPRECATED_MACRO_IN_2_30_FOR(const) +#else +#define G_CONST_RETURN const GLIB_DEPRECATED_MACRO_IN_2_30_FOR(const) +#endif + +/** + * G_NORETURN: + * + * Expands to the GNU C or MSVC `noreturn` function attribute depending on + * the compiler. It is used for declaring functions which never return. + * Enables optimization of the function, and avoids possible compiler warnings. + * + * Note that %G_NORETURN supersedes the previous %G_GNUC_NORETURN macro, which + * will eventually be deprecated. %G_NORETURN supports more platforms. + * + * Place the attribute before the function declaration as follows: + * + * |[ + * G_NORETURN void g_abort (void); + * ]| + * + * Since: 2.68 + */ +/* Note: We can’t annotate this with GLIB_AVAILABLE_MACRO_IN_2_68 because it’s + * used within the GLib headers in function declarations which are always + * evaluated when a header is included. This results in warnings in third party + * code which includes glib.h, even if the third party code doesn’t use the new + * macro itself. */ +#if g_macro__has_attribute(__noreturn__) + /* For compatibility with G_NORETURN_FUNCPTR on clang, use + __attribute__((__noreturn__)), not _Noreturn. */ +# define G_NORETURN __attribute__ ((__noreturn__)) +#elif defined (_MSC_VER) && (1200 <= _MSC_VER) + /* Use MSVC specific syntax. */ +# define G_NORETURN __declspec (noreturn) + /* Use ISO C++11 syntax when the compiler supports it. */ +#elif defined (__cplusplus) && __cplusplus >= 201103 +# define G_NORETURN [[noreturn]] + /* Use ISO C11 syntax when the compiler supports it. */ +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112 +# define G_NORETURN _Noreturn +#else +# define G_NORETURN /* empty */ +#endif + +/** + * G_NORETURN_FUNCPTR: + * + * Expands to the GNU C or MSVC `noreturn` function attribute depending on + * the compiler. It is used for declaring function pointers which never return. + * Enables optimization of the function, and avoids possible compiler warnings. + * + * Place the attribute before the function declaration as follows: + * + * |[ + * G_NORETURN_FUNCPTR void (*funcptr) (void); + * ]| + * + * Note that if the function is not a function pointer, you can simply use + * the %G_NORETURN macro as follows: + * + * |[ + * G_NORETURN void g_abort (void); + * ]| + * + * Since: 2.68 + */ +#if g_macro__has_attribute(__noreturn__) +# define G_NORETURN_FUNCPTR __attribute__ ((__noreturn__)) \ + GLIB_AVAILABLE_MACRO_IN_2_68 +#else +# define G_NORETURN_FUNCPTR /* empty */ \ + GLIB_AVAILABLE_MACRO_IN_2_68 +#endif + +/** + * G_ALWAYS_INLINE: + * + * Expands to the GNU C `always_inline` or MSVC `__forceinline` function + * attribute depending on the compiler. It is used for declaring functions + * as always inlined, ignoring the compiler optimization levels. + * + * The attribute may be placed before the declaration or definition, + * right before the `static` keyword. + * + * |[ + * G_ALWAYS_INLINE + * static int + * do_inline_this (void) + * { + * ... + * } + * ]| + * + * See the + * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-always_005finline-function-attribute) + * and the + * [MSVC documentation](https://docs.microsoft.com/en-us/visualstudio/misc/inline-inline-forceinline) + * + * Since: 2.74 + */ +/* Note: We can’t annotate this with GLIB_AVAILABLE_MACRO_IN_2_74 because it’s + * used within the GLib headers in function declarations which are always + * evaluated when a header is included. This results in warnings in third party + * code which includes glib.h, even if the third party code doesn’t use the new + * macro itself. */ +#if g_macro__has_attribute(__always_inline__) +# if defined (__cplusplus) && __cplusplus >= 201103L + /* Use ISO C++11 syntax when the compiler supports it. */ +# define G_ALWAYS_INLINE [[gnu::always_inline]] +# else +# define G_ALWAYS_INLINE __attribute__ ((__always_inline__)) +# endif +#elif defined (_MSC_VER) + /* Use MSVC specific syntax. */ +# define G_ALWAYS_INLINE __forceinline +#else +# define G_ALWAYS_INLINE /* empty */ +#endif + +/** + * G_NO_INLINE: + * + * Expands to the GNU C or MSVC `noinline` function attribute + * depending on the compiler. It is used for declaring functions + * preventing from being considered for inlining. + * + * Note that %G_NO_INLINE supersedes the previous %G_GNUC_NO_INLINE + * macro, which will eventually be deprecated. + * %G_NO_INLINE supports more platforms. + * + * The attribute may be placed before the declaration or definition, + * right before the `static` keyword. + * + * |[ + * G_NO_INLINE + * static int + * do_not_inline_this (void) + * { + * ... + * } + * ]| + * + * Since: 2.74 + */ +/* Note: We can’t annotate this with GLIB_AVAILABLE_MACRO_IN_2_74 because it’s + * used within the GLib headers in function declarations which are always + * evaluated when a header is included. This results in warnings in third party + * code which includes glib.h, even if the third party code doesn’t use the new + * macro itself. */ +#if g_macro__has_attribute(__noinline__) +# if defined (__cplusplus) && __cplusplus >= 201103L + /* Use ISO C++11 syntax when the compiler supports it. */ +# define G_NO_INLINE [[gnu::noinline]] +# else +# define G_NO_INLINE __attribute__ ((__noinline__)) +# endif +#elif defined (_MSC_VER) && (1200 <= _MSC_VER) + /* Use MSVC specific syntax. */ +# if defined (__cplusplus) && __cplusplus >= 201103L + /* Use ISO C++11 syntax when the compiler supports it. */ +# define G_NO_INLINE [[msvc::noinline]] +# else +# define G_NO_INLINE __declspec (noinline) +# endif +#else +# define G_NO_INLINE /* empty */ +#endif + +/* + * The G_LIKELY and G_UNLIKELY macros let the programmer give hints to + * the compiler about the expected result of an expression. Some compilers + * can use this information for optimizations. + * + * The _G_BOOLEAN_EXPR macro is intended to trigger a gcc warning when + * putting assignments in g_return_if_fail (). + */ +#if G_GNUC_CHECK_VERSION(2, 0) && defined(__OPTIMIZE__) +#define _G_BOOLEAN_EXPR(expr) \ + G_GNUC_EXTENSION ({ \ + int _g_boolean_var_; \ + if (expr) \ + _g_boolean_var_ = 1; \ + else \ + _g_boolean_var_ = 0; \ + _g_boolean_var_; \ +}) +#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1)) +#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0)) +#else +#define G_LIKELY(expr) (expr) +#define G_UNLIKELY(expr) (expr) +#endif + +/* GLIB_CANNOT_IGNORE_DEPRECATIONS is defined above for compilers that do not + * have a way to temporarily suppress deprecation warnings. In these cases, + * suppress the deprecated attribute altogether (otherwise a simple #include + * will emit a barrage of warnings). + */ +#if defined(GLIB_CANNOT_IGNORE_DEPRECATIONS) +#define G_DEPRECATED +#elif G_GNUC_CHECK_VERSION(3, 1) || defined(__clang__) +#define G_DEPRECATED __attribute__((__deprecated__)) +#elif defined(_MSC_VER) && (_MSC_VER >= 1300) +#define G_DEPRECATED __declspec(deprecated) +#else +#define G_DEPRECATED +#endif + +#if defined(GLIB_CANNOT_IGNORE_DEPRECATIONS) +#define G_DEPRECATED_FOR(f) G_DEPRECATED +#elif G_GNUC_CHECK_VERSION(4, 5) || defined(__clang__) +#define G_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead"))) +#elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) +#define G_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead")) +#else +#define G_DEPRECATED_FOR(f) G_DEPRECATED +#endif + +#if G_GNUC_CHECK_VERSION(4, 5) || defined(__clang__) +#define G_UNAVAILABLE(maj,min) __attribute__((deprecated("Not available before " #maj "." #min))) +#elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) +#define G_UNAVAILABLE(maj,min) __declspec(deprecated("is not available before " #maj "." #min)) +#else +#define G_UNAVAILABLE(maj,min) G_DEPRECATED +#endif + +#ifndef _GLIB_EXTERN +#define _GLIB_EXTERN extern +#endif + +/* These macros are used to mark deprecated symbols in GLib headers, + * and thus have to be exposed in installed headers. But please + * do *not* use them in other projects. Instead, use G_DEPRECATED + * or define your own wrappers around it. + */ + +#ifdef GLIB_DISABLE_DEPRECATION_WARNINGS +#define GLIB_DEPRECATED _GLIB_EXTERN +#define GLIB_DEPRECATED_FOR(f) _GLIB_EXTERN +#define GLIB_UNAVAILABLE(maj,min) _GLIB_EXTERN +#define GLIB_UNAVAILABLE_STATIC_INLINE(maj,min) +#else +#define GLIB_DEPRECATED G_DEPRECATED _GLIB_EXTERN +#define GLIB_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _GLIB_EXTERN +#define GLIB_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _GLIB_EXTERN +#define GLIB_UNAVAILABLE_STATIC_INLINE(maj,min) G_UNAVAILABLE(maj,min) +#endif + +#if !defined(GLIB_DISABLE_DEPRECATION_WARNINGS) && \ + (G_GNUC_CHECK_VERSION(4, 6) || \ + __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4)) +#define _GLIB_GNUC_DO_PRAGMA(x) _Pragma(G_STRINGIFY (x)) +#define GLIB_DEPRECATED_MACRO _GLIB_GNUC_DO_PRAGMA(GCC warning "Deprecated pre-processor symbol") +#define GLIB_DEPRECATED_MACRO_FOR(f) \ + _GLIB_GNUC_DO_PRAGMA(GCC warning G_STRINGIFY (Deprecated pre-processor symbol: replace with #f)) +#define GLIB_UNAVAILABLE_MACRO(maj,min) \ + _GLIB_GNUC_DO_PRAGMA(GCC warning G_STRINGIFY (Not available before maj.min)) +#else +#define GLIB_DEPRECATED_MACRO +#define GLIB_DEPRECATED_MACRO_FOR(f) +#define GLIB_UNAVAILABLE_MACRO(maj,min) +#endif + +#if !defined(GLIB_DISABLE_DEPRECATION_WARNINGS) && \ + (G_GNUC_CHECK_VERSION(6, 1) || \ + (defined (__clang_major__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 0)))) +#define GLIB_DEPRECATED_ENUMERATOR G_DEPRECATED +#define GLIB_DEPRECATED_ENUMERATOR_FOR(f) G_DEPRECATED_FOR(f) +#define GLIB_UNAVAILABLE_ENUMERATOR(maj,min) G_UNAVAILABLE(maj,min) +#else +#define GLIB_DEPRECATED_ENUMERATOR +#define GLIB_DEPRECATED_ENUMERATOR_FOR(f) +#define GLIB_UNAVAILABLE_ENUMERATOR(maj,min) +#endif + +#if !defined(GLIB_DISABLE_DEPRECATION_WARNINGS) && \ + (G_GNUC_CHECK_VERSION(3, 1) || \ + (defined (__clang_major__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 0)))) +#define GLIB_DEPRECATED_TYPE G_DEPRECATED +#define GLIB_DEPRECATED_TYPE_FOR(f) G_DEPRECATED_FOR(f) +#define GLIB_UNAVAILABLE_TYPE(maj,min) G_UNAVAILABLE(maj,min) +#else +#define GLIB_DEPRECATED_TYPE +#define GLIB_DEPRECATED_TYPE_FOR(f) +#define GLIB_UNAVAILABLE_TYPE(maj,min) +#endif + +#ifndef __GI_SCANNER__ + +#if g_macro__has_attribute(cleanup) + +/* these macros are private */ +#define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName +#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName +#define _GLIB_AUTOPTR_TYPENAME(TypeName) TypeName##_autoptr +#define _GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName) glib_listautoptr_cleanup_##TypeName +#define _GLIB_AUTOPTR_LIST_TYPENAME(TypeName) TypeName##_listautoptr +#define _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) glib_slistautoptr_cleanup_##TypeName +#define _GLIB_AUTOPTR_SLIST_TYPENAME(TypeName) TypeName##_slistautoptr +#define _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) glib_queueautoptr_cleanup_##TypeName +#define _GLIB_AUTOPTR_QUEUE_TYPENAME(TypeName) TypeName##_queueautoptr +#define _GLIB_AUTO_FUNC_NAME(TypeName) glib_auto_cleanup_##TypeName +#define _GLIB_CLEANUP(func) __attribute__((cleanup(func))) +#define _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, ParentName, cleanup) \ + typedef TypeName *_GLIB_AUTOPTR_TYPENAME(TypeName); \ + typedef GList *_GLIB_AUTOPTR_LIST_TYPENAME(TypeName); \ + typedef GSList *_GLIB_AUTOPTR_SLIST_TYPENAME(TypeName); \ + typedef GQueue *_GLIB_AUTOPTR_QUEUE_TYPENAME(TypeName); \ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (TypeName *_ptr) \ + { if (_ptr) (cleanup) ((ParentName *) _ptr); } \ + static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_FUNC_NAME(TypeName) (TypeName **_ptr) \ + { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); } \ + static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName) (GList **_l) \ + { g_list_free_full (*_l, (GDestroyNotify) (void(*)(void)) cleanup); } \ + static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) (GSList **_l) \ + { g_slist_free_full (*_l, (GDestroyNotify) (void(*)(void)) cleanup); } \ + static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) (GQueue **_q) \ + { if (*_q) g_queue_free_full (*_q, (GDestroyNotify) (void(*)(void)) cleanup); } \ + G_GNUC_END_IGNORE_DEPRECATIONS +#define _GLIB_DEFINE_AUTOPTR_CHAINUP(ModuleObjName, ParentName) \ + _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(ModuleObjName, ParentName, _GLIB_AUTOPTR_CLEAR_FUNC_NAME(ParentName)) + + +/* these macros are API */ +#define G_DEFINE_AUTOPTR_CLEANUP_FUNC(TypeName, func) \ + _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func) +#define G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(TypeName, func) \ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + static G_GNUC_UNUSED inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { (func) (_ptr); } \ + G_GNUC_END_IGNORE_DEPRECATIONS +#define G_DEFINE_AUTO_CLEANUP_FREE_FUNC(TypeName, func, none) \ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + static G_GNUC_UNUSED inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { if (*_ptr != none) (func) (*_ptr); } \ + G_GNUC_END_IGNORE_DEPRECATIONS +#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName) +#define g_autolist(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_LIST_TYPENAME(TypeName) +#define g_autoslist(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_SLIST_TYPENAME(TypeName) +#define g_autoqueue(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_QUEUE_TYPENAME(TypeName) +#define g_auto(TypeName) _GLIB_CLEANUP(_GLIB_AUTO_FUNC_NAME(TypeName)) TypeName +#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree) + +#else /* not GNU C */ +/* this (dummy) macro is private */ +#define _GLIB_DEFINE_AUTOPTR_CHAINUP(ModuleObjName, ParentName) + +/* these (dummy) macros are API */ +#define G_DEFINE_AUTOPTR_CLEANUP_FUNC(TypeName, func) +#define G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(TypeName, func) +#define G_DEFINE_AUTO_CLEANUP_FREE_FUNC(TypeName, func, none) + +/* no declaration of g_auto() or g_autoptr() here */ +#endif /* __GNUC__ */ + +#else + +#define _GLIB_DEFINE_AUTOPTR_CHAINUP(ModuleObjName, ParentName) + +#define G_DEFINE_AUTOPTR_CLEANUP_FUNC(TypeName, func) +#define G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(TypeName, func) +#define G_DEFINE_AUTO_CLEANUP_FREE_FUNC(TypeName, func, none) + +#endif /* __GI_SCANNER__ */ + +/** + * G_SIZEOF_MEMBER: + * @struct_type: a structure type, e.g. #GOutputVector + * @member: a field in the structure, e.g. `size` + * + * Returns the size of @member in the struct definition without having a + * declared instance of @struct_type. + * + * Returns: the size of @member in bytes. + * + * Since: 2.64 + */ +#define G_SIZEOF_MEMBER(struct_type, member) \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + sizeof (((struct_type *) 0)->member) + +#endif /* __G_MACROS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmain.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmain.h new file mode 100644 index 0000000..ae3cc3e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmain.h @@ -0,0 +1,858 @@ +/* gmain.h - the GLib Main loop + * Copyright (C) 1998-2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_MAIN_H__ +#define __G_MAIN_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +typedef enum /*< flags >*/ +{ + G_IO_IN GLIB_SYSDEF_POLLIN, + G_IO_OUT GLIB_SYSDEF_POLLOUT, + G_IO_PRI GLIB_SYSDEF_POLLPRI, + G_IO_ERR GLIB_SYSDEF_POLLERR, + G_IO_HUP GLIB_SYSDEF_POLLHUP, + G_IO_NVAL GLIB_SYSDEF_POLLNVAL +} GIOCondition; + +/** + * GMainContextFlags: + * @G_MAIN_CONTEXT_FLAGS_NONE: Default behaviour. + * @G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING: Assume that polling for events will + * free the thread to process other jobs. That's useful if you're using + * `g_main_context_{prepare,query,check,dispatch}` to integrate GMainContext in + * other event loops. + * + * Flags to pass to g_main_context_new_with_flags() which affect the behaviour + * of a #GMainContext. + * + * Since: 2.72 + */ +GLIB_AVAILABLE_TYPE_IN_2_72 +typedef enum /*< flags >*/ +{ + G_MAIN_CONTEXT_FLAGS_NONE = 0, + G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING = 1 +} GMainContextFlags; + + +/** + * GMainContext: + * + * The `GMainContext` struct is an opaque data + * type representing a set of sources to be handled in a main loop. + */ +typedef struct _GMainContext GMainContext; + +/** + * GMainLoop: + * + * The `GMainLoop` struct is an opaque data type + * representing the main event loop of a GLib or GTK+ application. + */ +typedef struct _GMainLoop GMainLoop; + +/** + * GSource: + * + * The `GSource` struct is an opaque data type + * representing an event source. + */ +typedef struct _GSource GSource; +typedef struct _GSourcePrivate GSourcePrivate; + +/** + * GSourceCallbackFuncs: + * @ref: Called when a reference is added to the callback object + * @unref: Called when a reference to the callback object is dropped + * @get: Called to extract the callback function and data from the + * callback object. + * + * The `GSourceCallbackFuncs` struct contains + * functions for managing callback objects. + */ +typedef struct _GSourceCallbackFuncs GSourceCallbackFuncs; + +/** + * GSourceFuncs: + * @prepare: Called before all the file descriptors are polled. If the + * source can determine that it is ready here (without waiting for the + * results of the poll() call) it should return %TRUE. It can also return + * a @timeout_ value which should be the maximum timeout (in milliseconds) + * which should be passed to the poll() call. The actual timeout used will + * be -1 if all sources returned -1, or it will be the minimum of all + * the @timeout_ values returned which were >= 0. Since 2.36 this may + * be %NULL, in which case the effect is as if the function always returns + * %FALSE with a timeout of -1. If @prepare returns a + * timeout and the source also has a ready time set, then the + * lower of the two will be used. + * @check: Called after all the file descriptors are polled. The source + * should return %TRUE if it is ready to be dispatched. Note that some + * time may have passed since the previous prepare function was called, + * so the source should be checked again here. Since 2.36 this may + * be %NULL, in which case the effect is as if the function always returns + * %FALSE. + * @dispatch: Called to dispatch the event source, after it has returned + * %TRUE in either its @prepare or its @check function, or if a ready time + * has been reached. The @dispatch function receives a callback function and + * user data. The callback function may be %NULL if the source was never + * connected to a callback using g_source_set_callback(). The @dispatch + * function should call the callback function with @user_data and whatever + * additional parameters are needed for this type of event source. The + * return value of the @dispatch function should be %G_SOURCE_REMOVE if the + * source should be removed or %G_SOURCE_CONTINUE to keep it. + * @finalize: Called when the source is finalized. At this point, the source + * will have been destroyed, had its callback cleared, and have been removed + * from its #GMainContext, but it will still have its final reference count, + * so methods can be called on it from within this function. + * + * The `GSourceFuncs` struct contains a table of + * functions used to handle event sources in a generic manner. + * + * For idle sources, the prepare and check functions always return %TRUE + * to indicate that the source is always ready to be processed. The prepare + * function also returns a timeout value of 0 to ensure that the poll() call + * doesn't block (since that would be time wasted which could have been spent + * running the idle function). + * + * For timeout sources, the prepare and check functions both return %TRUE + * if the timeout interval has expired. The prepare function also returns + * a timeout value to ensure that the poll() call doesn't block too long + * and miss the next timeout. + * + * For file descriptor sources, the prepare function typically returns %FALSE, + * since it must wait until poll() has been called before it knows whether + * any events need to be processed. It sets the returned timeout to -1 to + * indicate that it doesn't mind how long the poll() call blocks. In the + * check function, it tests the results of the poll() call to see if the + * required condition has been met, and returns %TRUE if so. + */ +typedef struct _GSourceFuncs GSourceFuncs; + +/** + * GPid: + * + * A type which is used to hold a process identification. + * + * On UNIX, processes are identified by a process id (an integer), + * while Windows uses process handles (which are pointers). + * + * GPid is used in GLib only for descendant processes spawned with + * the g_spawn functions. + */ +/* defined in glibconfig.h */ + +/** + * G_PID_FORMAT: + * + * A format specifier that can be used in printf()-style format strings + * when printing a #GPid. + * + * Since: 2.50 + */ +/* defined in glibconfig.h */ + +/** + * GSourceFunc: + * @user_data: data passed to the function, set when the source was + * created with one of the above functions + * + * Specifies the type of function passed to g_timeout_add(), + * g_timeout_add_full(), g_idle_add(), and g_idle_add_full(). + * + * When calling g_source_set_callback(), you may need to cast a function of a + * different type to this type. Use G_SOURCE_FUNC() to avoid warnings about + * incompatible function types. + * + * Returns: %FALSE if the source should be removed. %G_SOURCE_CONTINUE and + * %G_SOURCE_REMOVE are more memorable names for the return value. + */ +typedef gboolean (*GSourceFunc) (gpointer user_data); + +/** + * GSourceOnceFunc: + * @user_data: data passed to the function, set when the source was + * created + * + * A source function that is only called once before being removed from the main + * context automatically. + * + * See: g_idle_add_once(), g_timeout_add_once() + * + * Since: 2.74 + */ +typedef void (* GSourceOnceFunc) (gpointer user_data); + +/** + * G_SOURCE_FUNC: + * @f: a function pointer. + * + * Cast a function pointer to a #GSourceFunc, suppressing warnings from GCC 8 + * onwards with `-Wextra` or `-Wcast-function-type` enabled about the function + * types being incompatible. + * + * For example, the correct type of callback for a source created by + * g_child_watch_source_new() is #GChildWatchFunc, which accepts more arguments + * than #GSourceFunc. Casting the function with `(GSourceFunc)` to call + * g_source_set_callback() will trigger a warning, even though it will be cast + * back to the correct type before it is called by the source. + * + * Since: 2.58 + */ +#define G_SOURCE_FUNC(f) ((GSourceFunc) (void (*)(void)) (f)) GLIB_AVAILABLE_MACRO_IN_2_58 + +/** + * GChildWatchFunc: + * @pid: the process id of the child process + * @wait_status: Status information about the child process, encoded + * in a platform-specific manner + * @user_data: user data passed to g_child_watch_add() + * + * Prototype of a #GChildWatchSource callback, called when a child + * process has exited. + * + * To interpret @wait_status, see the documentation + * for g_spawn_check_wait_status(). In particular, + * on Unix platforms, note that it is usually not equal + * to the integer passed to `exit()` or returned from `main()`. + */ +typedef void (*GChildWatchFunc) (GPid pid, + gint wait_status, + gpointer user_data); + + +/** + * GSourceDisposeFunc: + * @source: #GSource that is currently being disposed + * + * Dispose function for @source. See g_source_set_dispose_function() for + * details. + * + * Since: 2.64 + */ +GLIB_AVAILABLE_TYPE_IN_2_64 +typedef void (*GSourceDisposeFunc) (GSource *source); + +struct _GSource +{ + /*< private >*/ + gpointer callback_data; + GSourceCallbackFuncs *callback_funcs; + + const GSourceFuncs *source_funcs; + guint ref_count; + + GMainContext *context; + + gint priority; + guint flags; + guint source_id; + + GSList *poll_fds; + + GSource *prev; + GSource *next; + + char *name; + + GSourcePrivate *priv; +}; + +struct _GSourceCallbackFuncs +{ + void (*ref) (gpointer cb_data); + void (*unref) (gpointer cb_data); + void (*get) (gpointer cb_data, + GSource *source, + GSourceFunc *func, + gpointer *data); +}; + +/** + * GSourceDummyMarshal: + * + * This is just a placeholder for #GClosureMarshal, + * which cannot be used here for dependency reasons. + */ +typedef void (*GSourceDummyMarshal) (void); + +struct _GSourceFuncs +{ + gboolean (*prepare) (GSource *source, + gint *timeout_);/* Can be NULL */ + gboolean (*check) (GSource *source);/* Can be NULL */ + gboolean (*dispatch) (GSource *source, + GSourceFunc callback, + gpointer user_data); + void (*finalize) (GSource *source); /* Can be NULL */ + + /*< private >*/ + /* For use by g_source_set_closure */ + GSourceFunc closure_callback; + GSourceDummyMarshal closure_marshal; /* Really is of type GClosureMarshal */ +}; + +/* Standard priorities */ + +/** + * G_PRIORITY_HIGH: + * + * Use this for high priority event sources. + * + * It is not used within GLib or GTK+. + */ +#define G_PRIORITY_HIGH -100 + +/** + * G_PRIORITY_DEFAULT: + * + * Use this for default priority event sources. + * + * In GLib this priority is used when adding timeout functions + * with g_timeout_add(). In GDK this priority is used for events + * from the X server. + */ +#define G_PRIORITY_DEFAULT 0 + +/** + * G_PRIORITY_HIGH_IDLE: + * + * Use this for high priority idle functions. + * + * GTK+ uses %G_PRIORITY_HIGH_IDLE + 10 for resizing operations, + * and %G_PRIORITY_HIGH_IDLE + 20 for redrawing operations. (This is + * done to ensure that any pending resizes are processed before any + * pending redraws, so that widgets are not redrawn twice unnecessarily.) + */ +#define G_PRIORITY_HIGH_IDLE 100 + +/** + * G_PRIORITY_DEFAULT_IDLE: + * + * Use this for default priority idle functions. + * + * In GLib this priority is used when adding idle functions with + * g_idle_add(). + */ +#define G_PRIORITY_DEFAULT_IDLE 200 + +/** + * G_PRIORITY_LOW: + * + * Use this for very low priority background tasks. + * + * It is not used within GLib or GTK+. + */ +#define G_PRIORITY_LOW 300 + +/** + * G_SOURCE_REMOVE: + * + * Use this macro as the return value of a #GSourceFunc to remove + * the #GSource from the main loop. + * + * Since: 2.32 + */ +#define G_SOURCE_REMOVE FALSE + +/** + * G_SOURCE_CONTINUE: + * + * Use this macro as the return value of a #GSourceFunc to leave + * the #GSource in the main loop. + * + * Since: 2.32 + */ +#define G_SOURCE_CONTINUE TRUE + +/* GMainContext: */ + +GLIB_AVAILABLE_IN_ALL +GMainContext *g_main_context_new (void); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_2_72 +GMainContext *g_main_context_new_with_flags (GMainContextFlags flags); +G_GNUC_END_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_ALL +GMainContext *g_main_context_ref (GMainContext *context); +GLIB_AVAILABLE_IN_ALL +void g_main_context_unref (GMainContext *context); +GLIB_AVAILABLE_IN_ALL +GMainContext *g_main_context_default (void); + +GLIB_AVAILABLE_IN_ALL +gboolean g_main_context_iteration (GMainContext *context, + gboolean may_block); +GLIB_AVAILABLE_IN_ALL +gboolean g_main_context_pending (GMainContext *context); + +/* For implementation of legacy interfaces + */ +GLIB_AVAILABLE_IN_ALL +GSource *g_main_context_find_source_by_id (GMainContext *context, + guint source_id); +GLIB_AVAILABLE_IN_ALL +GSource *g_main_context_find_source_by_user_data (GMainContext *context, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSource *g_main_context_find_source_by_funcs_user_data (GMainContext *context, + GSourceFuncs *funcs, + gpointer user_data); + +/* Low level functions for implementing custom main loops. + */ +GLIB_AVAILABLE_IN_ALL +void g_main_context_wakeup (GMainContext *context); +GLIB_AVAILABLE_IN_ALL +gboolean g_main_context_acquire (GMainContext *context); +GLIB_AVAILABLE_IN_ALL +void g_main_context_release (GMainContext *context); +GLIB_AVAILABLE_IN_ALL +gboolean g_main_context_is_owner (GMainContext *context); +GLIB_DEPRECATED_IN_2_58_FOR(g_main_context_is_owner) +gboolean g_main_context_wait (GMainContext *context, + GCond *cond, + GMutex *mutex); + +GLIB_AVAILABLE_IN_ALL +gboolean g_main_context_prepare (GMainContext *context, + gint *priority); +GLIB_AVAILABLE_IN_ALL +gint g_main_context_query (GMainContext *context, + gint max_priority, + gint *timeout_, + GPollFD *fds, + gint n_fds); +GLIB_AVAILABLE_IN_ALL +gboolean g_main_context_check (GMainContext *context, + gint max_priority, + GPollFD *fds, + gint n_fds); +GLIB_AVAILABLE_IN_ALL +void g_main_context_dispatch (GMainContext *context); + +GLIB_AVAILABLE_IN_ALL +void g_main_context_set_poll_func (GMainContext *context, + GPollFunc func); +GLIB_AVAILABLE_IN_ALL +GPollFunc g_main_context_get_poll_func (GMainContext *context); + +/* Low level functions for use by source implementations + */ +GLIB_AVAILABLE_IN_ALL +void g_main_context_add_poll (GMainContext *context, + GPollFD *fd, + gint priority); +GLIB_AVAILABLE_IN_ALL +void g_main_context_remove_poll (GMainContext *context, + GPollFD *fd); + +GLIB_AVAILABLE_IN_ALL +gint g_main_depth (void); +GLIB_AVAILABLE_IN_ALL +GSource *g_main_current_source (void); + +/* GMainContexts for other threads + */ +GLIB_AVAILABLE_IN_ALL +void g_main_context_push_thread_default (GMainContext *context); +GLIB_AVAILABLE_IN_ALL +void g_main_context_pop_thread_default (GMainContext *context); +GLIB_AVAILABLE_IN_ALL +GMainContext *g_main_context_get_thread_default (void); +GLIB_AVAILABLE_IN_ALL +GMainContext *g_main_context_ref_thread_default (void); + +/** + * GMainContextPusher: + * + * Opaque type. See g_main_context_pusher_new() for details. + * + * Since: 2.64 + */ +typedef void GMainContextPusher GLIB_AVAILABLE_TYPE_IN_2_64; + +/** + * g_main_context_pusher_new: + * @main_context: (transfer none): a main context to push + * + * Push @main_context as the new thread-default main context for the current + * thread, using g_main_context_push_thread_default(), and return a new + * #GMainContextPusher. Pop with g_main_context_pusher_free(). Using + * g_main_context_pop_thread_default() on @main_context while a + * #GMainContextPusher exists for it can lead to undefined behaviour. + * + * Using two #GMainContextPushers in the same scope is not allowed, as it leads + * to an undefined pop order. + * + * This is intended to be used with g_autoptr(). Note that g_autoptr() + * is only available when using GCC or clang, so the following example + * will only work with those compilers: + * |[ + * typedef struct + * { + * ... + * GMainContext *context; + * ... + * } MyObject; + * + * static void + * my_object_do_stuff (MyObject *self) + * { + * g_autoptr(GMainContextPusher) pusher = g_main_context_pusher_new (self->context); + * + * // Code with main context as the thread default here + * + * if (cond) + * // No need to pop + * return; + * + * // Optionally early pop + * g_clear_pointer (&pusher, g_main_context_pusher_free); + * + * // Code with main context no longer the thread default here + * } + * ]| + * + * Returns: (transfer full): a #GMainContextPusher + * Since: 2.64 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_64 +static inline GMainContextPusher * +g_main_context_pusher_new (GMainContext *main_context) +{ + g_main_context_push_thread_default (main_context); + return (GMainContextPusher *) main_context; +} +G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * g_main_context_pusher_free: + * @pusher: (transfer full): a #GMainContextPusher + * + * Pop @pusher’s main context as the thread default main context. + * See g_main_context_pusher_new() for details. + * + * This will pop the #GMainContext as the current thread-default main context, + * but will not call g_main_context_unref() on it. + * + * Since: 2.64 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_64 +static inline void +g_main_context_pusher_free (GMainContextPusher *pusher) +{ + g_main_context_pop_thread_default ((GMainContext *) pusher); +} +G_GNUC_END_IGNORE_DEPRECATIONS + +/* GMainLoop: */ + +GLIB_AVAILABLE_IN_ALL +GMainLoop *g_main_loop_new (GMainContext *context, + gboolean is_running); +GLIB_AVAILABLE_IN_ALL +void g_main_loop_run (GMainLoop *loop); +GLIB_AVAILABLE_IN_ALL +void g_main_loop_quit (GMainLoop *loop); +GLIB_AVAILABLE_IN_ALL +GMainLoop *g_main_loop_ref (GMainLoop *loop); +GLIB_AVAILABLE_IN_ALL +void g_main_loop_unref (GMainLoop *loop); +GLIB_AVAILABLE_IN_ALL +gboolean g_main_loop_is_running (GMainLoop *loop); +GLIB_AVAILABLE_IN_ALL +GMainContext *g_main_loop_get_context (GMainLoop *loop); + +/* GSource: */ + +GLIB_AVAILABLE_IN_ALL +GSource *g_source_new (GSourceFuncs *source_funcs, + guint struct_size); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_IN_2_64 +void g_source_set_dispose_function (GSource *source, + GSourceDisposeFunc dispose); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +GSource *g_source_ref (GSource *source); +GLIB_AVAILABLE_IN_ALL +void g_source_unref (GSource *source); + +GLIB_AVAILABLE_IN_ALL +guint g_source_attach (GSource *source, + GMainContext *context); +GLIB_AVAILABLE_IN_ALL +void g_source_destroy (GSource *source); + +GLIB_AVAILABLE_IN_ALL +void g_source_set_priority (GSource *source, + gint priority); +GLIB_AVAILABLE_IN_ALL +gint g_source_get_priority (GSource *source); +GLIB_AVAILABLE_IN_ALL +void g_source_set_can_recurse (GSource *source, + gboolean can_recurse); +GLIB_AVAILABLE_IN_ALL +gboolean g_source_get_can_recurse (GSource *source); +GLIB_AVAILABLE_IN_ALL +guint g_source_get_id (GSource *source); + +GLIB_AVAILABLE_IN_ALL +GMainContext *g_source_get_context (GSource *source); + +GLIB_AVAILABLE_IN_ALL +void g_source_set_callback (GSource *source, + GSourceFunc func, + gpointer data, + GDestroyNotify notify); + +GLIB_AVAILABLE_IN_ALL +void g_source_set_funcs (GSource *source, + GSourceFuncs *funcs); +GLIB_AVAILABLE_IN_ALL +gboolean g_source_is_destroyed (GSource *source); + +GLIB_AVAILABLE_IN_ALL +void g_source_set_name (GSource *source, + const char *name); +GLIB_AVAILABLE_IN_2_70 +void g_source_set_static_name (GSource *source, + const char *name); +GLIB_AVAILABLE_IN_ALL +const char * g_source_get_name (GSource *source); +GLIB_AVAILABLE_IN_ALL +void g_source_set_name_by_id (guint tag, + const char *name); + +GLIB_AVAILABLE_IN_2_36 +void g_source_set_ready_time (GSource *source, + gint64 ready_time); +GLIB_AVAILABLE_IN_2_36 +gint64 g_source_get_ready_time (GSource *source); + +#ifdef G_OS_UNIX +GLIB_AVAILABLE_IN_2_36 +gpointer g_source_add_unix_fd (GSource *source, + gint fd, + GIOCondition events); +GLIB_AVAILABLE_IN_2_36 +void g_source_modify_unix_fd (GSource *source, + gpointer tag, + GIOCondition new_events); +GLIB_AVAILABLE_IN_2_36 +void g_source_remove_unix_fd (GSource *source, + gpointer tag); +GLIB_AVAILABLE_IN_2_36 +GIOCondition g_source_query_unix_fd (GSource *source, + gpointer tag); +#endif + +/* Used to implement g_source_connect_closure and internally*/ +GLIB_AVAILABLE_IN_ALL +void g_source_set_callback_indirect (GSource *source, + gpointer callback_data, + GSourceCallbackFuncs *callback_funcs); + +GLIB_AVAILABLE_IN_ALL +void g_source_add_poll (GSource *source, + GPollFD *fd); +GLIB_AVAILABLE_IN_ALL +void g_source_remove_poll (GSource *source, + GPollFD *fd); + +GLIB_AVAILABLE_IN_ALL +void g_source_add_child_source (GSource *source, + GSource *child_source); +GLIB_AVAILABLE_IN_ALL +void g_source_remove_child_source (GSource *source, + GSource *child_source); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_28_FOR(g_source_get_time) +void g_source_get_current_time (GSource *source, + GTimeVal *timeval); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +gint64 g_source_get_time (GSource *source); + + /* void g_source_connect_closure (GSource *source, + GClosure *closure); + */ + +/* Specific source types + */ +GLIB_AVAILABLE_IN_ALL +GSource *g_idle_source_new (void); +GLIB_AVAILABLE_IN_ALL +GSource *g_child_watch_source_new (GPid pid); +GLIB_AVAILABLE_IN_ALL +GSource *g_timeout_source_new (guint interval); +GLIB_AVAILABLE_IN_ALL +GSource *g_timeout_source_new_seconds (guint interval); + +/* Miscellaneous functions + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_62_FOR(g_get_real_time) +void g_get_current_time (GTimeVal *result); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +gint64 g_get_monotonic_time (void); +GLIB_AVAILABLE_IN_ALL +gint64 g_get_real_time (void); + + +/* Source manipulation by ID */ +GLIB_AVAILABLE_IN_ALL +gboolean g_source_remove (guint tag); +GLIB_AVAILABLE_IN_ALL +gboolean g_source_remove_by_user_data (gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gboolean g_source_remove_by_funcs_user_data (GSourceFuncs *funcs, + gpointer user_data); + +/** + * GClearHandleFunc: + * @handle_id: the handle ID to clear + * + * Specifies the type of function passed to g_clear_handle_id(). + * The implementation is expected to free the resource identified + * by @handle_id; for instance, if @handle_id is a #GSource ID, + * g_source_remove() can be used. + * + * Since: 2.56 + */ +typedef void (* GClearHandleFunc) (guint handle_id); + +GLIB_AVAILABLE_IN_2_56 +void g_clear_handle_id (guint *tag_ptr, + GClearHandleFunc clear_func); + +#define g_clear_handle_id(tag_ptr, clear_func) \ + G_STMT_START { \ + G_STATIC_ASSERT (sizeof *(tag_ptr) == sizeof (guint)); \ + guint *_tag_ptr = (guint *) (tag_ptr); \ + guint _handle_id; \ + \ + _handle_id = *_tag_ptr; \ + if (_handle_id > 0) \ + { \ + *_tag_ptr = 0; \ + clear_func (_handle_id); \ + } \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_56 + +/* Idles, child watchers and timeouts */ +GLIB_AVAILABLE_IN_ALL +guint g_timeout_add_full (gint priority, + guint interval, + GSourceFunc function, + gpointer data, + GDestroyNotify notify); +GLIB_AVAILABLE_IN_ALL +guint g_timeout_add (guint interval, + GSourceFunc function, + gpointer data); +GLIB_AVAILABLE_IN_2_74 +guint g_timeout_add_once (guint interval, + GSourceOnceFunc function, + gpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_timeout_add_seconds_full (gint priority, + guint interval, + GSourceFunc function, + gpointer data, + GDestroyNotify notify); +GLIB_AVAILABLE_IN_ALL +guint g_timeout_add_seconds (guint interval, + GSourceFunc function, + gpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_child_watch_add_full (gint priority, + GPid pid, + GChildWatchFunc function, + gpointer data, + GDestroyNotify notify); +GLIB_AVAILABLE_IN_ALL +guint g_child_watch_add (GPid pid, + GChildWatchFunc function, + gpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_idle_add (GSourceFunc function, + gpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_idle_add_full (gint priority, + GSourceFunc function, + gpointer data, + GDestroyNotify notify); +GLIB_AVAILABLE_IN_2_74 +guint g_idle_add_once (GSourceOnceFunc function, + gpointer data); +GLIB_AVAILABLE_IN_ALL +gboolean g_idle_remove_by_data (gpointer data); + +GLIB_AVAILABLE_IN_ALL +void g_main_context_invoke_full (GMainContext *context, + gint priority, + GSourceFunc function, + gpointer data, + GDestroyNotify notify); +GLIB_AVAILABLE_IN_ALL +void g_main_context_invoke (GMainContext *context, + GSourceFunc function, + gpointer data); + +GLIB_AVAILABLE_STATIC_INLINE_IN_2_70 +static inline int +g_steal_fd (int *fd_ptr) +{ + int fd = *fd_ptr; + *fd_ptr = -1; + return fd; +} + +/* Hook for GClosure / GSource integration. Don't touch */ +GLIB_VAR GSourceFuncs g_timeout_funcs; +GLIB_VAR GSourceFuncs g_child_watch_funcs; +GLIB_VAR GSourceFuncs g_idle_funcs; +#ifdef G_OS_UNIX +GLIB_VAR GSourceFuncs g_unix_signal_funcs; +GLIB_VAR GSourceFuncs g_unix_fd_source_funcs; +#endif + +G_END_DECLS + +#endif /* __G_MAIN_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmappedfile.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmappedfile.h new file mode 100644 index 0000000..4f5f698 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmappedfile.h @@ -0,0 +1,60 @@ +/* GLIB - Library of useful routines for C programming + * gmappedfile.h: Simplified wrapper around the mmap function + * + * Copyright 2005 Matthias Clasen + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_MAPPED_FILE_H__ +#define __G_MAPPED_FILE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GMappedFile GMappedFile; + +GLIB_AVAILABLE_IN_ALL +GMappedFile *g_mapped_file_new (const gchar *filename, + gboolean writable, + GError **error); +GLIB_AVAILABLE_IN_ALL +GMappedFile *g_mapped_file_new_from_fd (gint fd, + gboolean writable, + GError **error); +GLIB_AVAILABLE_IN_ALL +gsize g_mapped_file_get_length (GMappedFile *file); +GLIB_AVAILABLE_IN_ALL +gchar *g_mapped_file_get_contents (GMappedFile *file); +GLIB_AVAILABLE_IN_2_34 +GBytes * g_mapped_file_get_bytes (GMappedFile *file); +GLIB_AVAILABLE_IN_ALL +GMappedFile *g_mapped_file_ref (GMappedFile *file); +GLIB_AVAILABLE_IN_ALL +void g_mapped_file_unref (GMappedFile *file); + +GLIB_DEPRECATED_FOR(g_mapped_file_unref) +void g_mapped_file_free (GMappedFile *file); + +G_END_DECLS + +#endif /* __G_MAPPED_FILE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmarkup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmarkup.h new file mode 100644 index 0000000..5b57813 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmarkup.h @@ -0,0 +1,265 @@ +/* gmarkup.h - Simple XML-like string parser/writer + * + * Copyright 2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_MARKUP_H__ +#define __G_MARKUP_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +#include +#include + +G_BEGIN_DECLS + +/** + * GMarkupError: + * @G_MARKUP_ERROR_BAD_UTF8: text being parsed was not valid UTF-8 + * @G_MARKUP_ERROR_EMPTY: document contained nothing, or only whitespace + * @G_MARKUP_ERROR_PARSE: document was ill-formed + * @G_MARKUP_ERROR_UNKNOWN_ELEMENT: error should be set by #GMarkupParser + * functions; element wasn't known + * @G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE: error should be set by #GMarkupParser + * functions; attribute wasn't known + * @G_MARKUP_ERROR_INVALID_CONTENT: error should be set by #GMarkupParser + * functions; content was invalid + * @G_MARKUP_ERROR_MISSING_ATTRIBUTE: error should be set by #GMarkupParser + * functions; a required attribute was missing + * + * Error codes returned by markup parsing. + */ +typedef enum +{ + G_MARKUP_ERROR_BAD_UTF8, + G_MARKUP_ERROR_EMPTY, + G_MARKUP_ERROR_PARSE, + /* The following are primarily intended for specific GMarkupParser + * implementations to set. + */ + G_MARKUP_ERROR_UNKNOWN_ELEMENT, + G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE, + G_MARKUP_ERROR_INVALID_CONTENT, + G_MARKUP_ERROR_MISSING_ATTRIBUTE +} GMarkupError; + +/** + * G_MARKUP_ERROR: + * + * Error domain for markup parsing. + * Errors in this domain will be from the #GMarkupError enumeration. + * See #GError for information on error domains. + */ +#define G_MARKUP_ERROR g_markup_error_quark () + +GLIB_AVAILABLE_IN_ALL +GQuark g_markup_error_quark (void); + +/** + * GMarkupParseFlags: + * @G_MARKUP_DEFAULT_FLAGS: No special behaviour. Since: 2.74 + * @G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG: flag you should not use + * @G_MARKUP_TREAT_CDATA_AS_TEXT: When this flag is set, CDATA marked + * sections are not passed literally to the @passthrough function of + * the parser. Instead, the content of the section (without the + * ``) is + * passed to the @text function. This flag was added in GLib 2.12 + * @G_MARKUP_PREFIX_ERROR_POSITION: Normally errors caught by GMarkup + * itself have line/column information prefixed to them to let the + * caller know the location of the error. When this flag is set the + * location information is also prefixed to errors generated by the + * #GMarkupParser implementation functions + * @G_MARKUP_IGNORE_QUALIFIED: Ignore (don't report) qualified + * attributes and tags, along with their contents. A qualified + * attribute or tag is one that contains ':' in its name (ie: is in + * another namespace). Since: 2.40. + * + * Flags that affect the behaviour of the parser. + */ +typedef enum +{ + G_MARKUP_DEFAULT_FLAGS GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG = 1 << 0, + G_MARKUP_TREAT_CDATA_AS_TEXT = 1 << 1, + G_MARKUP_PREFIX_ERROR_POSITION = 1 << 2, + G_MARKUP_IGNORE_QUALIFIED = 1 << 3 +} GMarkupParseFlags; + +/** + * GMarkupParseContext: + * + * A parse context is used to parse a stream of bytes that + * you expect to contain marked-up text. + * + * See g_markup_parse_context_new(), #GMarkupParser, and so + * on for more details. + */ +typedef struct _GMarkupParseContext GMarkupParseContext; +typedef struct _GMarkupParser GMarkupParser; + +/** + * GMarkupParser: + * @start_element: Callback to invoke when the opening tag of an element + * is seen. The callback's @attribute_names and @attribute_values parameters + * are %NULL-terminated. + * @end_element: Callback to invoke when the closing tag of an element + * is seen. Note that this is also called for empty tags like + * ``. + * @text: Callback to invoke when some text is seen (text is always + * inside an element). Note that the text of an element may be spread + * over multiple calls of this function. If the + * %G_MARKUP_TREAT_CDATA_AS_TEXT flag is set, this function is also + * called for the content of CDATA marked sections. + * @passthrough: Callback to invoke for comments, processing instructions + * and doctype declarations; if you're re-writing the parsed document, + * write the passthrough text back out in the same position. If the + * %G_MARKUP_TREAT_CDATA_AS_TEXT flag is not set, this function is also + * called for CDATA marked sections. + * @error: Callback to invoke when an error occurs. + * + * Any of the fields in #GMarkupParser can be %NULL, in which case they + * will be ignored. Except for the @error function, any of these callbacks + * can set an error; in particular the %G_MARKUP_ERROR_UNKNOWN_ELEMENT, + * %G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE, and %G_MARKUP_ERROR_INVALID_CONTENT + * errors are intended to be set from these callbacks. If you set an error + * from a callback, g_markup_parse_context_parse() will report that error + * back to its caller. + */ +struct _GMarkupParser +{ + /* Called for open tags */ + void (*start_element) (GMarkupParseContext *context, + const gchar *element_name, + const gchar **attribute_names, + const gchar **attribute_values, + gpointer user_data, + GError **error); + + /* Called for close tags */ + void (*end_element) (GMarkupParseContext *context, + const gchar *element_name, + gpointer user_data, + GError **error); + + /* Called for character data */ + /* text is not nul-terminated */ + void (*text) (GMarkupParseContext *context, + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error); + + /* Called for strings that should be re-saved verbatim in this same + * position, but are not otherwise interpretable. At the moment + * this includes comments and processing instructions. + */ + /* text is not nul-terminated. */ + void (*passthrough) (GMarkupParseContext *context, + const gchar *passthrough_text, + gsize text_len, + gpointer user_data, + GError **error); + + /* Called on error, including one set by other + * methods in the vtable. The GError should not be freed. + */ + void (*error) (GMarkupParseContext *context, + GError *error, + gpointer user_data); +}; + +GLIB_AVAILABLE_IN_ALL +GMarkupParseContext *g_markup_parse_context_new (const GMarkupParser *parser, + GMarkupParseFlags flags, + gpointer user_data, + GDestroyNotify user_data_dnotify); +GLIB_AVAILABLE_IN_2_36 +GMarkupParseContext *g_markup_parse_context_ref (GMarkupParseContext *context); +GLIB_AVAILABLE_IN_2_36 +void g_markup_parse_context_unref (GMarkupParseContext *context); +GLIB_AVAILABLE_IN_ALL +void g_markup_parse_context_free (GMarkupParseContext *context); +GLIB_AVAILABLE_IN_ALL +gboolean g_markup_parse_context_parse (GMarkupParseContext *context, + const gchar *text, + gssize text_len, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_markup_parse_context_push (GMarkupParseContext *context, + const GMarkupParser *parser, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gpointer g_markup_parse_context_pop (GMarkupParseContext *context); + +GLIB_AVAILABLE_IN_ALL +gboolean g_markup_parse_context_end_parse (GMarkupParseContext *context, + GError **error); +GLIB_AVAILABLE_IN_ALL +const gchar * g_markup_parse_context_get_element (GMarkupParseContext *context); +GLIB_AVAILABLE_IN_ALL +const GSList * g_markup_parse_context_get_element_stack (GMarkupParseContext *context); + +/* For user-constructed error messages, has no precise semantics */ +GLIB_AVAILABLE_IN_ALL +void g_markup_parse_context_get_position (GMarkupParseContext *context, + gint *line_number, + gint *char_number); +GLIB_AVAILABLE_IN_ALL +gpointer g_markup_parse_context_get_user_data (GMarkupParseContext *context); + +/* useful when saving */ +GLIB_AVAILABLE_IN_ALL +gchar* g_markup_escape_text (const gchar *text, + gssize length); + +GLIB_AVAILABLE_IN_ALL +gchar *g_markup_printf_escaped (const char *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_ALL +gchar *g_markup_vprintf_escaped (const char *format, + va_list args) G_GNUC_PRINTF(1, 0); + +typedef enum +{ + G_MARKUP_COLLECT_INVALID, + G_MARKUP_COLLECT_STRING, + G_MARKUP_COLLECT_STRDUP, + G_MARKUP_COLLECT_BOOLEAN, + G_MARKUP_COLLECT_TRISTATE, + + G_MARKUP_COLLECT_OPTIONAL = (1 << 16) +} GMarkupCollectType; + + +/* useful from start_element */ +GLIB_AVAILABLE_IN_ALL +gboolean g_markup_collect_attributes (const gchar *element_name, + const gchar **attribute_names, + const gchar **attribute_values, + GError **error, + GMarkupCollectType first_type, + const gchar *first_attr, + ...); + +G_END_DECLS + +#endif /* __G_MARKUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmem.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmem.h new file mode 100644 index 0000000..bae51fa --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmem.h @@ -0,0 +1,409 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_MEM_H__ +#define __G_MEM_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/** + * GMemVTable: + * @malloc: function to use for allocating memory. + * @realloc: function to use for reallocating memory. + * @free: function to use to free memory. + * @calloc: function to use for allocating zero-filled memory. + * @try_malloc: function to use for allocating memory without a default error handler. + * @try_realloc: function to use for reallocating memory without a default error handler. + * + * A set of functions used to perform memory allocation. The same #GMemVTable must + * be used for all allocations in the same program; a call to g_mem_set_vtable(), + * if it exists, should be prior to any use of GLib. + * + * This functions related to this has been deprecated in 2.46, and no longer work. + */ +typedef struct _GMemVTable GMemVTable; + + +#if GLIB_SIZEOF_VOID_P > GLIB_SIZEOF_LONG +/** + * G_MEM_ALIGN: + * + * Indicates the number of bytes to which memory will be aligned on the + * current platform. + */ +# define G_MEM_ALIGN GLIB_SIZEOF_VOID_P +#else /* GLIB_SIZEOF_VOID_P <= GLIB_SIZEOF_LONG */ +# define G_MEM_ALIGN GLIB_SIZEOF_LONG +#endif /* GLIB_SIZEOF_VOID_P <= GLIB_SIZEOF_LONG */ + + +/* Memory allocation functions + */ + +GLIB_AVAILABLE_IN_ALL +void g_free (gpointer mem); + +GLIB_AVAILABLE_IN_2_34 +void g_clear_pointer (gpointer *pp, + GDestroyNotify destroy); + +GLIB_AVAILABLE_IN_ALL +gpointer g_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_ALL +gpointer g_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_ALL +gpointer g_realloc (gpointer mem, + gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +gpointer g_try_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_ALL +gpointer g_try_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_ALL +gpointer g_try_realloc (gpointer mem, + gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT; + +GLIB_AVAILABLE_IN_ALL +gpointer g_malloc_n (gsize n_blocks, + gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2); +GLIB_AVAILABLE_IN_ALL +gpointer g_malloc0_n (gsize n_blocks, + gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2); +GLIB_AVAILABLE_IN_ALL +gpointer g_realloc_n (gpointer mem, + gsize n_blocks, + gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +gpointer g_try_malloc_n (gsize n_blocks, + gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2); +GLIB_AVAILABLE_IN_ALL +gpointer g_try_malloc0_n (gsize n_blocks, + gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2); +GLIB_AVAILABLE_IN_ALL +gpointer g_try_realloc_n (gpointer mem, + gsize n_blocks, + gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT; + +GLIB_AVAILABLE_IN_2_72 +gpointer g_aligned_alloc (gsize n_blocks, + gsize n_block_bytes, + gsize alignment) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE2(1,2); +GLIB_AVAILABLE_IN_2_72 +gpointer g_aligned_alloc0 (gsize n_blocks, + gsize n_block_bytes, + gsize alignment) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE2(1,2); +GLIB_AVAILABLE_IN_2_72 +void g_aligned_free (gpointer mem); + +#if defined(glib_typeof) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_58 +#define g_clear_pointer(pp, destroy) \ + G_STMT_START \ + { \ + G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \ + glib_typeof ((pp)) _pp = (pp); \ + glib_typeof (*(pp)) _ptr = *_pp; \ + *_pp = NULL; \ + if (_ptr) \ + (destroy) (_ptr); \ + } \ + G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_34 +#else /* __GNUC__ */ +#define g_clear_pointer(pp, destroy) \ + G_STMT_START { \ + G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \ + /* Only one access, please; work around type aliasing */ \ + union { char *in; gpointer *out; } _pp; \ + gpointer _p; \ + /* This assignment is needed to avoid a gcc warning */ \ + GDestroyNotify _destroy = (GDestroyNotify) (destroy); \ + \ + _pp.in = (char *) (pp); \ + _p = *_pp.out; \ + if (_p) \ + { \ + *_pp.out = NULL; \ + _destroy (_p); \ + } \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_34 +#endif /* __GNUC__ */ + +/** + * g_steal_pointer: + * @pp: (not nullable): a pointer to a pointer + * + * Sets @pp to %NULL, returning the value that was there before. + * + * Conceptually, this transfers the ownership of the pointer from the + * referenced variable to the "caller" of the macro (ie: "steals" the + * reference). + * + * The return value will be properly typed, according to the type of + * @pp. + * + * This can be very useful when combined with g_autoptr() to prevent the + * return value of a function from being automatically freed. Consider + * the following example (which only works on GCC and clang): + * + * |[ + * GObject * + * create_object (void) + * { + * g_autoptr(GObject) obj = g_object_new (G_TYPE_OBJECT, NULL); + * + * if (early_error_case) + * return NULL; + * + * return g_steal_pointer (&obj); + * } + * ]| + * + * It can also be used in similar ways for 'out' parameters and is + * particularly useful for dealing with optional out parameters: + * + * |[ + * gboolean + * get_object (GObject **obj_out) + * { + * g_autoptr(GObject) obj = g_object_new (G_TYPE_OBJECT, NULL); + * + * if (early_error_case) + * return FALSE; + * + * if (obj_out) + * *obj_out = g_steal_pointer (&obj); + * + * return TRUE; + * } + * ]| + * + * In the above example, the object will be automatically freed in the + * early error case and also in the case that %NULL was given for + * @obj_out. + * + * Since: 2.44 + */ +GLIB_AVAILABLE_STATIC_INLINE_IN_2_44 +static inline gpointer +g_steal_pointer (gpointer pp) +{ + gpointer *ptr = (gpointer *) pp; + gpointer ref; + + ref = *ptr; + *ptr = NULL; + + return ref; +} + +/* type safety */ +#if defined(glib_typeof) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_58 +#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp)) +#else /* __GNUC__ */ +/* This version does not depend on gcc extensions, but gcc does not warn + * about incompatible-pointer-types: */ +#define g_steal_pointer(pp) \ + (0 ? (*(pp)) : (g_steal_pointer) (pp)) +#endif /* __GNUC__ */ + +/* Optimise: avoid the call to the (slower) _n function if we can + * determine at compile-time that no overflow happens. + */ +#if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__) +# define _G_NEW(struct_type, n_structs, func) \ + (struct_type *) (G_GNUC_EXTENSION ({ \ + gsize __n = (gsize) (n_structs); \ + gsize __s = sizeof (struct_type); \ + gpointer __p; \ + if (__s == 1) \ + __p = g_##func (__n); \ + else if (__builtin_constant_p (__n) && \ + (__s == 0 || __n <= G_MAXSIZE / __s)) \ + __p = g_##func (__n * __s); \ + else \ + __p = g_##func##_n (__n, __s); \ + __p; \ + })) +# define _G_RENEW(struct_type, mem, n_structs, func) \ + (struct_type *) (G_GNUC_EXTENSION ({ \ + gsize __n = (gsize) (n_structs); \ + gsize __s = sizeof (struct_type); \ + gpointer __p = (gpointer) (mem); \ + if (__s == 1) \ + __p = g_##func (__p, __n); \ + else if (__builtin_constant_p (__n) && \ + (__s == 0 || __n <= G_MAXSIZE / __s)) \ + __p = g_##func (__p, __n * __s); \ + else \ + __p = g_##func##_n (__p, __n, __s); \ + __p; \ + })) + +#else + +/* Unoptimised version: always call the _n() function. */ + +#define _G_NEW(struct_type, n_structs, func) \ + ((struct_type *) g_##func##_n ((n_structs), sizeof (struct_type))) +#define _G_RENEW(struct_type, mem, n_structs, func) \ + ((struct_type *) g_##func##_n (mem, (n_structs), sizeof (struct_type))) + +#endif + +/** + * g_new: + * @struct_type: the type of the elements to allocate + * @n_structs: the number of elements to allocate + * + * Allocates @n_structs elements of type @struct_type. + * The returned pointer is cast to a pointer to the given type. + * If @n_structs is 0 it returns %NULL. + * Care is taken to avoid overflow when calculating the size of the allocated block. + * + * Since the returned pointer is already casted to the right type, + * it is normally unnecessary to cast it explicitly, and doing + * so might hide memory allocation errors. + * + * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type + */ +#define g_new(struct_type, n_structs) _G_NEW (struct_type, n_structs, malloc) +/** + * g_new0: + * @struct_type: the type of the elements to allocate. + * @n_structs: the number of elements to allocate. + * + * Allocates @n_structs elements of type @struct_type, initialized to 0's. + * The returned pointer is cast to a pointer to the given type. + * If @n_structs is 0 it returns %NULL. + * Care is taken to avoid overflow when calculating the size of the allocated block. + * + * Since the returned pointer is already casted to the right type, + * it is normally unnecessary to cast it explicitly, and doing + * so might hide memory allocation errors. + * + * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type. + */ +#define g_new0(struct_type, n_structs) _G_NEW (struct_type, n_structs, malloc0) +/** + * g_renew: + * @struct_type: the type of the elements to allocate + * @mem: the currently allocated memory + * @n_structs: the number of elements to allocate + * + * Reallocates the memory pointed to by @mem, so that it now has space for + * @n_structs elements of type @struct_type. It returns the new address of + * the memory, which may have been moved. + * Care is taken to avoid overflow when calculating the size of the allocated block. + * + * Returns: a pointer to the new allocated memory, cast to a pointer to @struct_type + */ +#define g_renew(struct_type, mem, n_structs) _G_RENEW (struct_type, mem, n_structs, realloc) +/** + * g_try_new: + * @struct_type: the type of the elements to allocate + * @n_structs: the number of elements to allocate + * + * Attempts to allocate @n_structs elements of type @struct_type, and returns + * %NULL on failure. Contrast with g_new(), which aborts the program on failure. + * The returned pointer is cast to a pointer to the given type. + * The function returns %NULL when @n_structs is 0 of if an overflow occurs. + * + * Since: 2.8 + * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type + */ +#define g_try_new(struct_type, n_structs) _G_NEW (struct_type, n_structs, try_malloc) +/** + * g_try_new0: + * @struct_type: the type of the elements to allocate + * @n_structs: the number of elements to allocate + * + * Attempts to allocate @n_structs elements of type @struct_type, initialized + * to 0's, and returns %NULL on failure. Contrast with g_new0(), which aborts + * the program on failure. + * The returned pointer is cast to a pointer to the given type. + * The function returns %NULL when @n_structs is 0 or if an overflow occurs. + * + * Since: 2.8 + * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type + */ +#define g_try_new0(struct_type, n_structs) _G_NEW (struct_type, n_structs, try_malloc0) +/** + * g_try_renew: + * @struct_type: the type of the elements to allocate + * @mem: the currently allocated memory + * @n_structs: the number of elements to allocate + * + * Attempts to reallocate the memory pointed to by @mem, so that it now has + * space for @n_structs elements of type @struct_type, and returns %NULL on + * failure. Contrast with g_renew(), which aborts the program on failure. + * It returns the new address of the memory, which may have been moved. + * The function returns %NULL if an overflow occurs. + * + * Since: 2.8 + * Returns: a pointer to the new allocated memory, cast to a pointer to @struct_type + */ +#define g_try_renew(struct_type, mem, n_structs) _G_RENEW (struct_type, mem, n_structs, try_realloc) + + +/* Memory allocation virtualization for debugging purposes + * g_mem_set_vtable() has to be the very first GLib function called + * if being used + */ +struct _GMemVTable { + gpointer (*malloc) (gsize n_bytes); + gpointer (*realloc) (gpointer mem, + gsize n_bytes); + void (*free) (gpointer mem); + /* optional; set to NULL if not used ! */ + gpointer (*calloc) (gsize n_blocks, + gsize n_block_bytes); + gpointer (*try_malloc) (gsize n_bytes); + gpointer (*try_realloc) (gpointer mem, + gsize n_bytes); +}; +GLIB_DEPRECATED_IN_2_46 +void g_mem_set_vtable (GMemVTable *vtable); +GLIB_DEPRECATED_IN_2_46 +gboolean g_mem_is_system_malloc (void); + +GLIB_VAR gboolean g_mem_gc_friendly; + +/* Memory profiler and checker, has to be enabled via g_mem_set_vtable() + */ +GLIB_VAR GMemVTable *glib_mem_profiler_table; +GLIB_DEPRECATED_IN_2_46 +void g_mem_profile (void); + +G_END_DECLS + +#endif /* __G_MEM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmessages.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmessages.h new file mode 100644 index 0000000..119b72e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gmessages.h @@ -0,0 +1,690 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_MESSAGES_H__ +#define __G_MESSAGES_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +/* calculate a string size, guaranteed to fit format + args. + */ +GLIB_AVAILABLE_IN_ALL +gsize g_printf_string_upper_bound (const gchar* format, + va_list args) G_GNUC_PRINTF(1, 0); + +/* Log level shift offset for user defined + * log levels (0-7 are used by GLib). + */ +#define G_LOG_LEVEL_USER_SHIFT (8) + +/* Glib log levels and flags. + */ +typedef enum +{ + /* log flags */ + G_LOG_FLAG_RECURSION = 1 << 0, + G_LOG_FLAG_FATAL = 1 << 1, + + /* GLib log levels */ + G_LOG_LEVEL_ERROR = 1 << 2, /* always fatal */ + G_LOG_LEVEL_CRITICAL = 1 << 3, + G_LOG_LEVEL_WARNING = 1 << 4, + G_LOG_LEVEL_MESSAGE = 1 << 5, + G_LOG_LEVEL_INFO = 1 << 6, + G_LOG_LEVEL_DEBUG = 1 << 7, + + G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL) +} GLogLevelFlags; + +/* GLib log levels that are considered fatal by default */ +#define G_LOG_FATAL_MASK (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR) + +typedef void (*GLogFunc) (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data); + +/* Logging mechanism + */ +GLIB_AVAILABLE_IN_ALL +guint g_log_set_handler (const gchar *log_domain, + GLogLevelFlags log_levels, + GLogFunc log_func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_46 +guint g_log_set_handler_full (const gchar *log_domain, + GLogLevelFlags log_levels, + GLogFunc log_func, + gpointer user_data, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_ALL +void g_log_remove_handler (const gchar *log_domain, + guint handler_id); +GLIB_AVAILABLE_IN_ALL +void g_log_default_handler (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer unused_data); +GLIB_AVAILABLE_IN_ALL +GLogFunc g_log_set_default_handler (GLogFunc log_func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +void g_log (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *format, + ...) G_GNUC_PRINTF (3, 4); +GLIB_AVAILABLE_IN_ALL +void g_logv (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *format, + va_list args) G_GNUC_PRINTF(3, 0); +GLIB_AVAILABLE_IN_ALL +GLogLevelFlags g_log_set_fatal_mask (const gchar *log_domain, + GLogLevelFlags fatal_mask); +GLIB_AVAILABLE_IN_ALL +GLogLevelFlags g_log_set_always_fatal (GLogLevelFlags fatal_mask); + +/* Structured logging mechanism. */ + +/** + * GLogWriterOutput: + * @G_LOG_WRITER_HANDLED: Log writer has handled the log entry. + * @G_LOG_WRITER_UNHANDLED: Log writer could not handle the log entry. + * + * Return values from #GLogWriterFuncs to indicate whether the given log entry + * was successfully handled by the writer, or whether there was an error in + * handling it (and hence a fallback writer should be used). + * + * If a #GLogWriterFunc ignores a log entry, it should return + * %G_LOG_WRITER_HANDLED. + * + * Since: 2.50 + */ +typedef enum +{ + G_LOG_WRITER_HANDLED = 1, + G_LOG_WRITER_UNHANDLED = 0, +} GLogWriterOutput; + +/** + * GLogField: + * @key: field name (UTF-8 string) + * @value: field value (arbitrary bytes) + * @length: length of @value, in bytes, or -1 if it is nul-terminated + * + * Structure representing a single field in a structured log entry. See + * g_log_structured() for details. + * + * Log fields may contain arbitrary values, including binary with embedded nul + * bytes. If the field contains a string, the string must be UTF-8 encoded and + * have a trailing nul byte. Otherwise, @length must be set to a non-negative + * value. + * + * Since: 2.50 + */ +typedef struct _GLogField GLogField; +struct _GLogField +{ + const gchar *key; + gconstpointer value; + gssize length; +}; + +/** + * GLogWriterFunc: + * @log_level: log level of the message + * @fields: (array length=n_fields): fields forming the message + * @n_fields: number of @fields + * @user_data: user data passed to g_log_set_writer_func() + * + * Writer function for log entries. A log entry is a collection of one or more + * #GLogFields, using the standard [field names from journal + * specification](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html). + * See g_log_structured() for more information. + * + * Writer functions must ignore fields which they do not recognise, unless they + * can write arbitrary binary output, as field values may be arbitrary binary. + * + * @log_level is guaranteed to be included in @fields as the `PRIORITY` field, + * but is provided separately for convenience of deciding whether or where to + * output the log entry. + * + * Writer functions should return %G_LOG_WRITER_HANDLED if they handled the log + * message successfully or if they deliberately ignored it. If there was an + * error handling the message (for example, if the writer function is meant to + * send messages to a remote logging server and there is a network error), it + * should return %G_LOG_WRITER_UNHANDLED. This allows writer functions to be + * chained and fall back to simpler handlers in case of failure. + * + * Returns: %G_LOG_WRITER_HANDLED if the log entry was handled successfully; + * %G_LOG_WRITER_UNHANDLED otherwise + * + * Since: 2.50 + */ +typedef GLogWriterOutput (*GLogWriterFunc) (GLogLevelFlags log_level, + const GLogField *fields, + gsize n_fields, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_50 +void g_log_structured (const gchar *log_domain, + GLogLevelFlags log_level, + ...); +GLIB_AVAILABLE_IN_2_50 +void g_log_structured_array (GLogLevelFlags log_level, + const GLogField *fields, + gsize n_fields); + +GLIB_AVAILABLE_IN_2_50 +void g_log_variant (const gchar *log_domain, + GLogLevelFlags log_level, + GVariant *fields); + +GLIB_AVAILABLE_IN_2_50 +void g_log_set_writer_func (GLogWriterFunc func, + gpointer user_data, + GDestroyNotify user_data_free); + +GLIB_AVAILABLE_IN_2_50 +gboolean g_log_writer_supports_color (gint output_fd); +GLIB_AVAILABLE_IN_2_50 +gboolean g_log_writer_is_journald (gint output_fd); + +GLIB_AVAILABLE_IN_2_50 +gchar *g_log_writer_format_fields (GLogLevelFlags log_level, + const GLogField *fields, + gsize n_fields, + gboolean use_color); + +GLIB_AVAILABLE_IN_2_50 +GLogWriterOutput g_log_writer_journald (GLogLevelFlags log_level, + const GLogField *fields, + gsize n_fields, + gpointer user_data); +GLIB_AVAILABLE_IN_2_50 +GLogWriterOutput g_log_writer_standard_streams (GLogLevelFlags log_level, + const GLogField *fields, + gsize n_fields, + gpointer user_data); +GLIB_AVAILABLE_IN_2_50 +GLogWriterOutput g_log_writer_default (GLogLevelFlags log_level, + const GLogField *fields, + gsize n_fields, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_68 +void g_log_writer_default_set_use_stderr (gboolean use_stderr); +GLIB_AVAILABLE_IN_2_68 +gboolean g_log_writer_default_would_drop (GLogLevelFlags log_level, + const char *log_domain); + +/* G_MESSAGES_DEBUG enablement */ +GLIB_AVAILABLE_IN_2_72 +gboolean g_log_get_debug_enabled (void); +GLIB_AVAILABLE_IN_2_72 +void g_log_set_debug_enabled (gboolean enabled); + +/** + * G_DEBUG_HERE: + * + * A convenience form of g_log_structured(), recommended to be added to + * functions when debugging. It prints the current monotonic time and the code + * location using %G_STRLOC. + * + * Since: 2.50 + */ +#define G_DEBUG_HERE() \ + g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \ + "CODE_FILE", __FILE__, \ + "CODE_LINE", G_STRINGIFY (__LINE__), \ + "CODE_FUNC", G_STRFUNC, \ + "MESSAGE", "%" G_GINT64_FORMAT ": %s", \ + g_get_monotonic_time (), G_STRLOC) + +/* internal */ +void _g_log_fallback_handler (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer unused_data); + +/* Internal functions, used to implement the following macros */ +GLIB_AVAILABLE_IN_ALL +void g_return_if_fail_warning (const char *log_domain, + const char *pretty_function, + const char *expression) G_ANALYZER_NORETURN; +GLIB_AVAILABLE_IN_ALL +void g_warn_message (const char *domain, + const char *file, + int line, + const char *func, + const char *warnexpr) G_ANALYZER_NORETURN; +GLIB_DEPRECATED +G_NORETURN +void g_assert_warning (const char *log_domain, + const char *file, + const int line, + const char *pretty_function, + const char *expression); + +GLIB_AVAILABLE_IN_2_56 +void g_log_structured_standard (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *file, + const gchar *line, + const gchar *func, + const gchar *message_format, + ...) G_GNUC_PRINTF (6, 7); + +#ifndef G_LOG_DOMAIN +#define G_LOG_DOMAIN ((gchar*) 0) +#endif /* G_LOG_DOMAIN */ + +#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING +#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 +#define g_error(...) G_STMT_START { \ + g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, __VA_ARGS__); \ + for (;;) ; \ + } G_STMT_END +#define g_message(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, __VA_ARGS__) +#define g_critical(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, __VA_ARGS__) +#define g_warning(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, __VA_ARGS__) +#define g_info(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, __VA_ARGS__) +#define g_debug(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, __VA_ARGS__) +#else +/* for(;;) ; so that GCC knows that control doesn't go past g_error(). + * Put space before ending semicolon to avoid C++ build warnings. + */ +#define g_error(...) G_STMT_START { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_ERROR, \ + __VA_ARGS__); \ + for (;;) ; \ + } G_STMT_END +#define g_message(...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_MESSAGE, \ + __VA_ARGS__) +#define g_critical(...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + __VA_ARGS__) +#define g_warning(...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_WARNING, \ + __VA_ARGS__) +#define g_info(...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_INFO, \ + __VA_ARGS__) +#define g_debug(...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_DEBUG, \ + __VA_ARGS__) +#endif +#elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING +#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 +#define g_error(format...) G_STMT_START { \ + g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, format); \ + for (;;) ; \ + } G_STMT_END +#define g_message(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, format) +#define g_critical(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, format) +#define g_warning(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, format) +#define g_info(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, format) +#define g_debug(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \ + __FILE__, G_STRINGIFY (__LINE__), \ + G_STRFUNC, format) +#else +#define g_error(format...) G_STMT_START { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_ERROR, \ + format); \ + for (;;) ; \ + } G_STMT_END + +#define g_message(format...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_MESSAGE, \ + format) +#define g_critical(format...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + format) +#define g_warning(format...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_WARNING, \ + format) +#define g_info(format...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_INFO, \ + format) +#define g_debug(format...) g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_DEBUG, \ + format) +#endif +#else /* no varargs macros */ +static G_NORETURN void g_error (const gchar *format, ...) G_ANALYZER_NORETURN; +static void g_critical (const gchar *format, ...) G_ANALYZER_NORETURN; + +static inline void +g_error (const gchar *format, + ...) +{ + va_list args; + va_start (args, format); + g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args); + va_end (args); + + for(;;) ; +} +static inline void +g_message (const gchar *format, + ...) +{ + va_list args; + va_start (args, format); + g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, format, args); + va_end (args); +} +static inline void +g_critical (const gchar *format, + ...) +{ + va_list args; + va_start (args, format); + g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, format, args); + va_end (args); +} +static inline void +g_warning (const gchar *format, + ...) +{ + va_list args; + va_start (args, format); + g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, format, args); + va_end (args); +} +static inline void +g_info (const gchar *format, + ...) +{ + va_list args; + va_start (args, format); + g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format, args); + va_end (args); +} +static inline void +g_debug (const gchar *format, + ...) +{ + va_list args; + va_start (args, format); + g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args); + va_end (args); +} +#endif /* !__GNUC__ */ + +/** + * g_warning_once: + * @...: format string, followed by parameters to insert + * into the format string (as with printf()) + * + * Logs a warning only once. + * + * g_warning_once() calls g_warning() with the passed message the first time + * the statement is executed; subsequent times it is a no-op. + * + * Note! On platforms where the compiler doesn't support variadic macros, the + * warning is printed each time instead of only once. + * + * Since: 2.64 + */ +#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING +#define g_warning_once(...) \ + G_STMT_START { \ + static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \ + if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ + 0, 1)) \ + g_warning (__VA_ARGS__); \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_64 +#elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING +#define g_warning_once(format...) \ + G_STMT_START { \ + static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \ + if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ + 0, 1)) \ + g_warning (format); \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_64 +#else +#define g_warning_once g_warning +#endif + +/** + * GPrintFunc: + * @string: the message to output + * + * Specifies the type of the print handler functions. + * These are called with the complete formatted string to output. + */ +typedef void (*GPrintFunc) (const gchar *string); +GLIB_AVAILABLE_IN_ALL +void g_print (const gchar *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_ALL +GPrintFunc g_set_print_handler (GPrintFunc func); +GLIB_AVAILABLE_IN_ALL +void g_printerr (const gchar *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_ALL +GPrintFunc g_set_printerr_handler (GPrintFunc func); + +/** + * g_warn_if_reached: + * + * Logs a warning. + * + * Since: 2.16 + */ +#define g_warn_if_reached() \ + do { \ + g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); \ + } while (0) + +/** + * g_warn_if_fail: + * @expr: the expression to check + * + * Logs a warning if the expression is not true. + * + * Since: 2.16 + */ +#define g_warn_if_fail(expr) \ + do { \ + if G_LIKELY (expr) ; \ + else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \ + } while (0) + +#ifdef G_DISABLE_CHECKS + +/** + * g_return_if_fail: + * @expr: the expression to check + * + * Verifies that the expression @expr, usually representing a precondition, + * evaluates to %TRUE. If the function returns a value, use + * g_return_val_if_fail() instead. + * + * If @expr evaluates to %FALSE, the current function should be considered to + * have undefined behaviour (a programmer error). The only correct solution + * to such an error is to change the module that is calling the current + * function, so that it avoids this incorrect call. + * + * To make this undefined behaviour visible, if @expr evaluates to %FALSE, + * the result is usually that a critical message is logged and the current + * function returns. + * + * If `G_DISABLE_CHECKS` is defined then the check is not performed. You + * should therefore not depend on any side effects of @expr. + * + * To debug failure of a g_return_if_fail() check, run the code under a debugger + * with `G_DEBUG=fatal-criticals` or `G_DEBUG=fatal-warnings` defined in the + * environment (see [Running GLib Applications](glib-running.html)): + * + * |[ + * G_DEBUG=fatal-warnings gdb ./my-program + * ]| + * + * Any unrelated failures can be skipped over in + * [gdb](https://www.gnu.org/software/gdb/) using the `continue` command. + */ +#define g_return_if_fail(expr) G_STMT_START{ (void)0; }G_STMT_END + +/** + * g_return_val_if_fail: + * @expr: the expression to check + * @val: the value to return from the current function + * if the expression is not true + * + * Verifies that the expression @expr, usually representing a precondition, + * evaluates to %TRUE. If the function does not return a value, use + * g_return_if_fail() instead. + * + * If @expr evaluates to %FALSE, the current function should be considered to + * have undefined behaviour (a programmer error). The only correct solution + * to such an error is to change the module that is calling the current + * function, so that it avoids this incorrect call. + * + * To make this undefined behaviour visible, if @expr evaluates to %FALSE, + * the result is usually that a critical message is logged and @val is + * returned from the current function. + * + * If `G_DISABLE_CHECKS` is defined then the check is not performed. You + * should therefore not depend on any side effects of @expr. + * + * See g_return_if_fail() for guidance on how to debug failure of this check. + */ +#define g_return_val_if_fail(expr,val) G_STMT_START{ (void)0; }G_STMT_END + +/** + * g_return_if_reached: + * + * Logs a critical message and returns from the current function. + * This can only be used in functions which do not return a value. + * + * See g_return_if_fail() for guidance on how to debug failure of this check. + */ +#define g_return_if_reached() G_STMT_START{ return; }G_STMT_END + +/** + * g_return_val_if_reached: + * @val: the value to return from the current function + * + * Logs a critical message and returns @val. + * + * See g_return_if_fail() for guidance on how to debug failure of this check. + */ +#define g_return_val_if_reached(val) G_STMT_START{ return (val); }G_STMT_END + +#else /* !G_DISABLE_CHECKS */ + +#define g_return_if_fail(expr) \ + G_STMT_START { \ + if (G_LIKELY (expr)) \ + { } \ + else \ + { \ + g_return_if_fail_warning (G_LOG_DOMAIN, \ + G_STRFUNC, \ + #expr); \ + return; \ + } \ + } G_STMT_END + +#define g_return_val_if_fail(expr, val) \ + G_STMT_START { \ + if (G_LIKELY (expr)) \ + { } \ + else \ + { \ + g_return_if_fail_warning (G_LOG_DOMAIN, \ + G_STRFUNC, \ + #expr); \ + return (val); \ + } \ + } G_STMT_END + +#define g_return_if_reached() \ + G_STMT_START { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + "file %s: line %d (%s): should not be reached", \ + __FILE__, \ + __LINE__, \ + G_STRFUNC); \ + return; \ + } G_STMT_END + +#define g_return_val_if_reached(val) \ + G_STMT_START { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + "file %s: line %d (%s): should not be reached", \ + __FILE__, \ + __LINE__, \ + G_STRFUNC); \ + return (val); \ + } G_STMT_END + +#endif /* !G_DISABLE_CHECKS */ + +G_END_DECLS + +#endif /* __G_MESSAGES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gnode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gnode.h new file mode 100644 index 0000000..b3f89f0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gnode.h @@ -0,0 +1,309 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_NODE_H__ +#define __G_NODE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GNode GNode; + +/* Tree traverse flags */ +typedef enum +{ + G_TRAVERSE_LEAVES = 1 << 0, + G_TRAVERSE_NON_LEAVES = 1 << 1, + G_TRAVERSE_ALL = G_TRAVERSE_LEAVES | G_TRAVERSE_NON_LEAVES, + G_TRAVERSE_MASK = 0x03, + G_TRAVERSE_LEAFS = G_TRAVERSE_LEAVES, + G_TRAVERSE_NON_LEAFS = G_TRAVERSE_NON_LEAVES +} GTraverseFlags; + +/* Tree traverse orders */ +typedef enum +{ + G_IN_ORDER, + G_PRE_ORDER, + G_POST_ORDER, + G_LEVEL_ORDER +} GTraverseType; + +typedef gboolean (*GNodeTraverseFunc) (GNode *node, + gpointer user_data); +typedef void (*GNodeForeachFunc) (GNode *node, + gpointer user_data); + +/* N-way tree implementation + */ +struct _GNode +{ + gpointer data; + GNode *next; + GNode *prev; + GNode *parent; + GNode *children; +}; + +/** + * G_NODE_IS_ROOT: + * @node: a #GNode + * + * Returns %TRUE if a #GNode is the root of a tree. + * + * Returns: %TRUE if the #GNode is the root of a tree + * (i.e. it has no parent or siblings) + */ +#define G_NODE_IS_ROOT(node) (((GNode*) (node))->parent == NULL && \ + ((GNode*) (node))->prev == NULL && \ + ((GNode*) (node))->next == NULL) + +/** + * G_NODE_IS_LEAF: + * @node: a #GNode + * + * Returns %TRUE if a #GNode is a leaf node. + * + * Returns: %TRUE if the #GNode is a leaf node + * (i.e. it has no children) + */ +#define G_NODE_IS_LEAF(node) (((GNode*) (node))->children == NULL) + +GLIB_AVAILABLE_IN_ALL +GNode* g_node_new (gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_node_destroy (GNode *root); +GLIB_AVAILABLE_IN_ALL +void g_node_unlink (GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_copy_deep (GNode *node, + GCopyFunc copy_func, + gpointer data); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_copy (GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_insert (GNode *parent, + gint position, + GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_insert_before (GNode *parent, + GNode *sibling, + GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_insert_after (GNode *parent, + GNode *sibling, + GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_prepend (GNode *parent, + GNode *node); +GLIB_AVAILABLE_IN_ALL +guint g_node_n_nodes (GNode *root, + GTraverseFlags flags); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_get_root (GNode *node); +GLIB_AVAILABLE_IN_ALL +gboolean g_node_is_ancestor (GNode *node, + GNode *descendant); +GLIB_AVAILABLE_IN_ALL +guint g_node_depth (GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_find (GNode *root, + GTraverseType order, + GTraverseFlags flags, + gpointer data); + +/* convenience macros */ +/** + * g_node_append: + * @parent: the #GNode to place the new #GNode under + * @node: the #GNode to insert + * + * Inserts a #GNode as the last child of the given parent. + * + * Returns: the inserted #GNode + */ +#define g_node_append(parent, node) \ + g_node_insert_before ((parent), NULL, (node)) + +/** + * g_node_insert_data: + * @parent: the #GNode to place the new #GNode under + * @position: the position to place the new #GNode at. If position is -1, + * the new #GNode is inserted as the last child of @parent + * @data: the data for the new #GNode + * + * Inserts a new #GNode at the given position. + * + * Returns: the new #GNode + */ +#define g_node_insert_data(parent, position, data) \ + g_node_insert ((parent), (position), g_node_new (data)) + +/** + * g_node_insert_data_after: + * @parent: the #GNode to place the new #GNode under + * @sibling: the sibling #GNode to place the new #GNode after + * @data: the data for the new #GNode + * + * Inserts a new #GNode after the given sibling. + * + * Returns: the new #GNode + */ + +#define g_node_insert_data_after(parent, sibling, data) \ + g_node_insert_after ((parent), (sibling), g_node_new (data)) +/** + * g_node_insert_data_before: + * @parent: the #GNode to place the new #GNode under + * @sibling: the sibling #GNode to place the new #GNode before + * @data: the data for the new #GNode + * + * Inserts a new #GNode before the given sibling. + * + * Returns: the new #GNode + */ +#define g_node_insert_data_before(parent, sibling, data) \ + g_node_insert_before ((parent), (sibling), g_node_new (data)) + +/** + * g_node_prepend_data: + * @parent: the #GNode to place the new #GNode under + * @data: the data for the new #GNode + * + * Inserts a new #GNode as the first child of the given parent. + * + * Returns: the new #GNode + */ +#define g_node_prepend_data(parent, data) \ + g_node_prepend ((parent), g_node_new (data)) + +/** + * g_node_append_data: + * @parent: the #GNode to place the new #GNode under + * @data: the data for the new #GNode + * + * Inserts a new #GNode as the last child of the given parent. + * + * Returns: the new #GNode + */ +#define g_node_append_data(parent, data) \ + g_node_insert_before ((parent), NULL, g_node_new (data)) + +/* traversal function, assumes that 'node' is root + * (only traverses 'node' and its subtree). + * this function is just a high level interface to + * low level traversal functions, optimized for speed. + */ +GLIB_AVAILABLE_IN_ALL +void g_node_traverse (GNode *root, + GTraverseType order, + GTraverseFlags flags, + gint max_depth, + GNodeTraverseFunc func, + gpointer data); + +/* return the maximum tree height starting with 'node', this is an expensive + * operation, since we need to visit all nodes. this could be shortened by + * adding 'guint height' to struct _GNode, but then again, this is not very + * often needed, and would make g_node_insert() more time consuming. + */ +GLIB_AVAILABLE_IN_ALL +guint g_node_max_height (GNode *root); + +GLIB_AVAILABLE_IN_ALL +void g_node_children_foreach (GNode *node, + GTraverseFlags flags, + GNodeForeachFunc func, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_node_reverse_children (GNode *node); +GLIB_AVAILABLE_IN_ALL +guint g_node_n_children (GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_nth_child (GNode *node, + guint n); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_last_child (GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_find_child (GNode *node, + GTraverseFlags flags, + gpointer data); +GLIB_AVAILABLE_IN_ALL +gint g_node_child_position (GNode *node, + GNode *child); +GLIB_AVAILABLE_IN_ALL +gint g_node_child_index (GNode *node, + gpointer data); + +GLIB_AVAILABLE_IN_ALL +GNode* g_node_first_sibling (GNode *node); +GLIB_AVAILABLE_IN_ALL +GNode* g_node_last_sibling (GNode *node); + +/** + * g_node_prev_sibling: + * @node: a #GNode + * + * Gets the previous sibling of a #GNode. + * + * Returns: the previous sibling of @node, or %NULL if @node is the first + * node or %NULL + */ +#define g_node_prev_sibling(node) ((node) ? \ + ((GNode*) (node))->prev : NULL) + +/** + * g_node_next_sibling: + * @node: a #GNode + * + * Gets the next sibling of a #GNode. + * + * Returns: the next sibling of @node, or %NULL if @node is the last node + * or %NULL + */ +#define g_node_next_sibling(node) ((node) ? \ + ((GNode*) (node))->next : NULL) + +/** + * g_node_first_child: + * @node: a #GNode + * + * Gets the first child of a #GNode. + * + * Returns: the first child of @node, or %NULL if @node is %NULL + * or has no children + */ +#define g_node_first_child(node) ((node) ? \ + ((GNode*) (node))->children : NULL) + +G_END_DECLS + +#endif /* __G_NODE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/goption.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/goption.h new file mode 100644 index 0000000..6d7de3a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/goption.h @@ -0,0 +1,409 @@ +/* goption.h - Option parser + * + * Copyright (C) 2004 Anders Carlsson + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_OPTION_H__ +#define __G_OPTION_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/** + * GOptionContext: + * + * A `GOptionContext` struct defines which options + * are accepted by the commandline option parser. The struct has only private + * fields and should not be directly accessed. + */ +typedef struct _GOptionContext GOptionContext; + +/** + * GOptionGroup: + * + * A `GOptionGroup` struct defines the options in a single + * group. The struct has only private fields and should not be directly accessed. + * + * All options in a group share the same translation function. Libraries which + * need to parse commandline options are expected to provide a function for + * getting a `GOptionGroup` holding their options, which + * the application can then add to its #GOptionContext. + */ +typedef struct _GOptionGroup GOptionGroup; +typedef struct _GOptionEntry GOptionEntry; + +/** + * GOptionFlags: + * @G_OPTION_FLAG_NONE: No flags. Since: 2.42. + * @G_OPTION_FLAG_HIDDEN: The option doesn't appear in `--help` output. + * @G_OPTION_FLAG_IN_MAIN: The option appears in the main section of the + * `--help` output, even if it is defined in a group. + * @G_OPTION_FLAG_REVERSE: For options of the %G_OPTION_ARG_NONE kind, this + * flag indicates that the sense of the option is reversed. i.e. %FALSE will + * be stored into the argument rather than %TRUE. + * @G_OPTION_FLAG_NO_ARG: For options of the %G_OPTION_ARG_CALLBACK kind, + * this flag indicates that the callback does not take any argument + * (like a %G_OPTION_ARG_NONE option). Since 2.8 + * @G_OPTION_FLAG_FILENAME: For options of the %G_OPTION_ARG_CALLBACK + * kind, this flag indicates that the argument should be passed to the + * callback in the GLib filename encoding rather than UTF-8. Since 2.8 + * @G_OPTION_FLAG_OPTIONAL_ARG: For options of the %G_OPTION_ARG_CALLBACK + * kind, this flag indicates that the argument supply is optional. + * If no argument is given then data of %GOptionParseFunc will be + * set to NULL. Since 2.8 + * @G_OPTION_FLAG_NOALIAS: This flag turns off the automatic conflict + * resolution which prefixes long option names with `groupname-` if + * there is a conflict. This option should only be used in situations + * where aliasing is necessary to model some legacy commandline interface. + * It is not safe to use this option, unless all option groups are under + * your direct control. Since 2.8. + * + * Flags which modify individual options. + */ +typedef enum +{ + G_OPTION_FLAG_NONE = 0, + G_OPTION_FLAG_HIDDEN = 1 << 0, + G_OPTION_FLAG_IN_MAIN = 1 << 1, + G_OPTION_FLAG_REVERSE = 1 << 2, + G_OPTION_FLAG_NO_ARG = 1 << 3, + G_OPTION_FLAG_FILENAME = 1 << 4, + G_OPTION_FLAG_OPTIONAL_ARG = 1 << 5, + G_OPTION_FLAG_NOALIAS = 1 << 6 +} GOptionFlags; + +/** + * GOptionArg: + * @G_OPTION_ARG_NONE: No extra argument. This is useful for simple flags or booleans. + * @G_OPTION_ARG_STRING: The option takes a UTF-8 string argument. + * @G_OPTION_ARG_INT: The option takes an integer argument. + * @G_OPTION_ARG_CALLBACK: The option provides a callback (of type + * #GOptionArgFunc) to parse the extra argument. + * @G_OPTION_ARG_FILENAME: The option takes a filename as argument, which will + be in the GLib filename encoding rather than UTF-8. + * @G_OPTION_ARG_STRING_ARRAY: The option takes a string argument, multiple + * uses of the option are collected into an array of strings. + * @G_OPTION_ARG_FILENAME_ARRAY: The option takes a filename as argument, + * multiple uses of the option are collected into an array of strings. + * @G_OPTION_ARG_DOUBLE: The option takes a double argument. The argument + * can be formatted either for the user's locale or for the "C" locale. + * Since 2.12 + * @G_OPTION_ARG_INT64: The option takes a 64-bit integer. Like + * %G_OPTION_ARG_INT but for larger numbers. The number can be in + * decimal base, or in hexadecimal (when prefixed with `0x`, for + * example, `0xffffffff`). Since 2.12 + * + * The #GOptionArg enum values determine which type of extra argument the + * options expect to find. If an option expects an extra argument, it can + * be specified in several ways; with a short option: `-x arg`, with a long + * option: `--name arg` or combined in a single argument: `--name=arg`. + */ +typedef enum +{ + G_OPTION_ARG_NONE, + G_OPTION_ARG_STRING, + G_OPTION_ARG_INT, + G_OPTION_ARG_CALLBACK, + G_OPTION_ARG_FILENAME, + G_OPTION_ARG_STRING_ARRAY, + G_OPTION_ARG_FILENAME_ARRAY, + G_OPTION_ARG_DOUBLE, + G_OPTION_ARG_INT64 +} GOptionArg; + +/** + * GOptionArgFunc: + * @option_name: The name of the option being parsed. This will be either a + * single dash followed by a single letter (for a short name) or two dashes + * followed by a long option name. + * @value: The value to be parsed. + * @user_data: User data added to the #GOptionGroup containing the option when + * it was created with g_option_group_new() + * @error: A return location for errors. The error code %G_OPTION_ERROR_FAILED + * is intended to be used for errors in #GOptionArgFunc callbacks. + * + * The type of function to be passed as callback for %G_OPTION_ARG_CALLBACK + * options. + * + * Returns: %TRUE if the option was successfully parsed, %FALSE if an error + * occurred, in which case @error should be set with g_set_error() + */ +typedef gboolean (*GOptionArgFunc) (const gchar *option_name, + const gchar *value, + gpointer user_data, + GError **error); + +/** + * GOptionParseFunc: + * @context: The active #GOptionContext + * @group: The group to which the function belongs + * @user_data: User data added to the #GOptionGroup containing the option when + * it was created with g_option_group_new() + * @error: A return location for error details + * + * The type of function that can be called before and after parsing. + * + * Returns: %TRUE if the function completed successfully, %FALSE if an error + * occurred, in which case @error should be set with g_set_error() + */ +typedef gboolean (*GOptionParseFunc) (GOptionContext *context, + GOptionGroup *group, + gpointer user_data, + GError **error); + +/** + * GOptionErrorFunc: + * @context: The active #GOptionContext + * @group: The group to which the function belongs + * @user_data: User data added to the #GOptionGroup containing the option when + * it was created with g_option_group_new() + * @error: The #GError containing details about the parse error + * + * The type of function to be used as callback when a parse error occurs. + */ +typedef void (*GOptionErrorFunc) (GOptionContext *context, + GOptionGroup *group, + gpointer user_data, + GError **error); + +/** + * G_OPTION_ERROR: + * + * Error domain for option parsing. Errors in this domain will + * be from the #GOptionError enumeration. See #GError for information on + * error domains. + */ +#define G_OPTION_ERROR (g_option_error_quark ()) + +/** + * GOptionError: + * @G_OPTION_ERROR_UNKNOWN_OPTION: An option was not known to the parser. + * This error will only be reported, if the parser hasn't been instructed + * to ignore unknown options, see g_option_context_set_ignore_unknown_options(). + * @G_OPTION_ERROR_BAD_VALUE: A value couldn't be parsed. + * @G_OPTION_ERROR_FAILED: A #GOptionArgFunc callback failed. + * + * Error codes returned by option parsing. + */ +typedef enum +{ + G_OPTION_ERROR_UNKNOWN_OPTION, + G_OPTION_ERROR_BAD_VALUE, + G_OPTION_ERROR_FAILED +} GOptionError; + +GLIB_AVAILABLE_IN_ALL +GQuark g_option_error_quark (void); + +/** + * GOptionEntry: + * @long_name: The long name of an option can be used to specify it + * in a commandline as `--long_name`. Every option must have a + * long name. To resolve conflicts if multiple option groups contain + * the same long name, it is also possible to specify the option as + * `--groupname-long_name`. + * @short_name: If an option has a short name, it can be specified + * `-short_name` in a commandline. @short_name must be a printable + * ASCII character different from '-', or zero if the option has no + * short name. + * @flags: Flags from #GOptionFlags + * @arg: The type of the option, as a #GOptionArg + * @arg_data: If the @arg type is %G_OPTION_ARG_CALLBACK, then @arg_data + * must point to a #GOptionArgFunc callback function, which will be + * called to handle the extra argument. Otherwise, @arg_data is a + * pointer to a location to store the value, the required type of + * the location depends on the @arg type: + * - %G_OPTION_ARG_NONE: %gboolean + * - %G_OPTION_ARG_STRING: %gchar* + * - %G_OPTION_ARG_INT: %gint + * - %G_OPTION_ARG_FILENAME: %gchar* + * - %G_OPTION_ARG_STRING_ARRAY: %gchar** + * - %G_OPTION_ARG_FILENAME_ARRAY: %gchar** + * - %G_OPTION_ARG_DOUBLE: %gdouble + * If @arg type is %G_OPTION_ARG_STRING or %G_OPTION_ARG_FILENAME, + * the location will contain a newly allocated string if the option + * was given. That string needs to be freed by the callee using g_free(). + * Likewise if @arg type is %G_OPTION_ARG_STRING_ARRAY or + * %G_OPTION_ARG_FILENAME_ARRAY, the data should be freed using g_strfreev(). + * @description: the description for the option in `--help` + * output. The @description is translated using the @translate_func + * of the group, see g_option_group_set_translation_domain(). + * @arg_description: The placeholder to use for the extra argument parsed + * by the option in `--help` output. The @arg_description is translated + * using the @translate_func of the group, see + * g_option_group_set_translation_domain(). + * + * A GOptionEntry struct defines a single option. To have an effect, they + * must be added to a #GOptionGroup with g_option_context_add_main_entries() + * or g_option_group_add_entries(). + */ +struct _GOptionEntry +{ + const gchar *long_name; + gchar short_name; + gint flags; + + GOptionArg arg; + gpointer arg_data; + + const gchar *description; + const gchar *arg_description; +}; + +/** + * G_OPTION_REMAINING: + * + * If a long option in the main group has this name, it is not treated as a + * regular option. Instead it collects all non-option arguments which would + * otherwise be left in `argv`. The option must be of type + * %G_OPTION_ARG_CALLBACK, %G_OPTION_ARG_STRING_ARRAY + * or %G_OPTION_ARG_FILENAME_ARRAY. + * + * + * Using %G_OPTION_REMAINING instead of simply scanning `argv` + * for leftover arguments has the advantage that GOption takes care of + * necessary encoding conversions for strings or filenames. + * + * Since: 2.6 + */ +#define G_OPTION_REMAINING "" + +/** + * G_OPTION_ENTRY_NULL: + * + * A #GOptionEntry array requires a %NULL terminator, this macro can + * be used as terminator instead of an explicit `{ 0 }` but it cannot + * be assigned to a variable. + * + * |[ + * GOptionEntry option[] = { G_OPTION_ENTRY_NULL }; + * ]| + * + * Since: 2.70 + */ +#define G_OPTION_ENTRY_NULL \ + GLIB_AVAILABLE_MACRO_IN_2_70 \ + { NULL, 0, 0, 0, NULL, NULL, NULL } + + +GLIB_AVAILABLE_IN_ALL +GOptionContext *g_option_context_new (const gchar *parameter_string); +GLIB_AVAILABLE_IN_ALL +void g_option_context_set_summary (GOptionContext *context, + const gchar *summary); +GLIB_AVAILABLE_IN_ALL +const gchar * g_option_context_get_summary (GOptionContext *context); +GLIB_AVAILABLE_IN_ALL +void g_option_context_set_description (GOptionContext *context, + const gchar *description); +GLIB_AVAILABLE_IN_ALL +const gchar * g_option_context_get_description (GOptionContext *context); +GLIB_AVAILABLE_IN_ALL +void g_option_context_free (GOptionContext *context); +GLIB_AVAILABLE_IN_ALL +void g_option_context_set_help_enabled (GOptionContext *context, + gboolean help_enabled); +GLIB_AVAILABLE_IN_ALL +gboolean g_option_context_get_help_enabled (GOptionContext *context); +GLIB_AVAILABLE_IN_ALL +void g_option_context_set_ignore_unknown_options (GOptionContext *context, + gboolean ignore_unknown); +GLIB_AVAILABLE_IN_ALL +gboolean g_option_context_get_ignore_unknown_options (GOptionContext *context); + +GLIB_AVAILABLE_IN_2_44 +void g_option_context_set_strict_posix (GOptionContext *context, + gboolean strict_posix); +GLIB_AVAILABLE_IN_2_44 +gboolean g_option_context_get_strict_posix (GOptionContext *context); + +GLIB_AVAILABLE_IN_ALL +void g_option_context_add_main_entries (GOptionContext *context, + const GOptionEntry *entries, + const gchar *translation_domain); +GLIB_AVAILABLE_IN_ALL +gboolean g_option_context_parse (GOptionContext *context, + gint *argc, + gchar ***argv, + GError **error); +GLIB_AVAILABLE_IN_2_40 +gboolean g_option_context_parse_strv (GOptionContext *context, + gchar ***arguments, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_option_context_set_translate_func (GOptionContext *context, + GTranslateFunc func, + gpointer data, + GDestroyNotify destroy_notify); +GLIB_AVAILABLE_IN_ALL +void g_option_context_set_translation_domain (GOptionContext *context, + const gchar *domain); + +GLIB_AVAILABLE_IN_ALL +void g_option_context_add_group (GOptionContext *context, + GOptionGroup *group); +GLIB_AVAILABLE_IN_ALL +void g_option_context_set_main_group (GOptionContext *context, + GOptionGroup *group); +GLIB_AVAILABLE_IN_ALL +GOptionGroup *g_option_context_get_main_group (GOptionContext *context); +GLIB_AVAILABLE_IN_ALL +gchar *g_option_context_get_help (GOptionContext *context, + gboolean main_help, + GOptionGroup *group); + +GLIB_AVAILABLE_IN_ALL +GOptionGroup *g_option_group_new (const gchar *name, + const gchar *description, + const gchar *help_description, + gpointer user_data, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_ALL +void g_option_group_set_parse_hooks (GOptionGroup *group, + GOptionParseFunc pre_parse_func, + GOptionParseFunc post_parse_func); +GLIB_AVAILABLE_IN_ALL +void g_option_group_set_error_hook (GOptionGroup *group, + GOptionErrorFunc error_func); +GLIB_DEPRECATED_IN_2_44 +void g_option_group_free (GOptionGroup *group); +GLIB_AVAILABLE_IN_2_44 +GOptionGroup *g_option_group_ref (GOptionGroup *group); +GLIB_AVAILABLE_IN_2_44 +void g_option_group_unref (GOptionGroup *group); +GLIB_AVAILABLE_IN_ALL +void g_option_group_add_entries (GOptionGroup *group, + const GOptionEntry *entries); +GLIB_AVAILABLE_IN_ALL +void g_option_group_set_translate_func (GOptionGroup *group, + GTranslateFunc func, + gpointer data, + GDestroyNotify destroy_notify); +GLIB_AVAILABLE_IN_ALL +void g_option_group_set_translation_domain (GOptionGroup *group, + const gchar *domain); + +G_END_DECLS + +#endif /* __G_OPTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gpattern.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gpattern.h new file mode 100644 index 0000000..c8ceb84 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gpattern.h @@ -0,0 +1,65 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997, 1999 Peter Mattis, Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_PATTERN_H__ +#define __G_PATTERN_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +typedef struct _GPatternSpec GPatternSpec; + +GLIB_AVAILABLE_IN_ALL +GPatternSpec* g_pattern_spec_new (const gchar *pattern); +GLIB_AVAILABLE_IN_ALL +void g_pattern_spec_free (GPatternSpec *pspec); +GLIB_AVAILABLE_IN_2_70 +GPatternSpec *g_pattern_spec_copy (GPatternSpec *pspec); +GLIB_AVAILABLE_IN_ALL +gboolean g_pattern_spec_equal (GPatternSpec *pspec1, + GPatternSpec *pspec2); +GLIB_AVAILABLE_IN_2_70 +gboolean g_pattern_spec_match (GPatternSpec *pspec, + gsize string_length, + const gchar *string, + const gchar *string_reversed); +GLIB_AVAILABLE_IN_2_70 +gboolean g_pattern_spec_match_string (GPatternSpec *pspec, + const gchar *string); +GLIB_DEPRECATED_IN_2_70_FOR (g_pattern_spec_match) +gboolean g_pattern_match (GPatternSpec *pspec, + guint string_length, + const gchar *string, + const gchar *string_reversed); +GLIB_DEPRECATED_IN_2_70_FOR (g_pattern_spec_match_string) +gboolean g_pattern_match_string (GPatternSpec *pspec, + const gchar *string); +GLIB_AVAILABLE_IN_ALL +gboolean g_pattern_match_simple (const gchar *pattern, + const gchar *string); + +G_END_DECLS + +#endif /* __G_PATTERN_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gpoll.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gpoll.h new file mode 100644 index 0000000..bd72bc4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gpoll.h @@ -0,0 +1,122 @@ +/* gpoll.h - poll(2) support + * Copyright (C) 2008 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_POLL_H__ +#define __G_POLL_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (__G_MAIN_H__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/* Any definitions using GPollFD or GPollFunc are primarily + * for Unix and not guaranteed to be the compatible on all + * operating systems on which GLib runs. Right now, the + * GLib does use these functions on Win32 as well, but interprets + * them in a fairly different way than on Unix. If you use + * these definitions, you are should be prepared to recode + * for different operating systems. + * + * Note that on systems with a working poll(2), that function is used + * in place of g_poll(). Thus g_poll() must have the same signature as + * poll(), meaning GPollFD must have the same layout as struct pollfd. + * + * On Win32, the fd in a GPollFD should be Win32 HANDLE (*not* a file + * descriptor as provided by the C runtime) that can be used by + * MsgWaitForMultipleObjects. This does *not* include file handles + * from CreateFile, SOCKETs, nor pipe handles. (But you can use + * WSAEventSelect to signal events when a SOCKET is readable). + * + * On Win32, fd can also be the special value G_WIN32_MSG_HANDLE to + * indicate polling for messages. + * + * But note that G_WIN32_MSG_HANDLE GPollFDs should not be used by GDK + * (GTK) programs, as GDK itself wants to read messages and convert them + * to GDK events. + * + * So, unless you really know what you are doing, it's best not to try + * to use the main loop polling stuff for your own needs on + * Windows. + */ +typedef struct _GPollFD GPollFD; + +/** + * GPollFunc: + * @ufds: an array of #GPollFD elements + * @nfsd: the number of elements in @ufds + * @timeout_: the maximum time to wait for an event of the file descriptors. + * A negative value indicates an infinite timeout. + * + * Specifies the type of function passed to g_main_context_set_poll_func(). + * The semantics of the function should match those of the poll() system call. + * + * Returns: the number of #GPollFD elements which have events or errors + * reported, or -1 if an error occurred. + */ +typedef gint (*GPollFunc) (GPollFD *ufds, + guint nfsd, + gint timeout_); + +/** + * GPollFD: + * @fd: the file descriptor to poll (or a HANDLE on Win32) + * @events: a bitwise combination from #GIOCondition, specifying which + * events should be polled for. Typically for reading from a file + * descriptor you would use %G_IO_IN | %G_IO_HUP | %G_IO_ERR, and + * for writing you would use %G_IO_OUT | %G_IO_ERR. + * @revents: a bitwise combination of flags from #GIOCondition, returned + * from the poll() function to indicate which events occurred. + * + * Represents a file descriptor, which events to poll for, and which events + * occurred. + */ +struct _GPollFD +{ +#if defined (G_OS_WIN32) && GLIB_SIZEOF_VOID_P == 8 +#ifndef __GTK_DOC_IGNORE__ + gint64 fd; +#endif +#else + gint fd; +#endif + gushort events; + gushort revents; +}; + +/** + * G_POLLFD_FORMAT: + * + * A format specifier that can be used in printf()-style format strings + * when printing the @fd member of a #GPollFD. + */ +/* defined in glibconfig.h */ + +GLIB_AVAILABLE_IN_ALL +gint +g_poll (GPollFD *fds, + guint nfds, + gint timeout); + +G_END_DECLS + +#endif /* __G_POLL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gprimes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gprimes.h new file mode 100644 index 0000000..f35b5fd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gprimes.h @@ -0,0 +1,52 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_PRIMES_H__ +#define __G_PRIMES_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* Prime numbers. + */ + +/* This function returns prime numbers spaced by approximately 1.5-2.0 + * and is for use in resizing data structures which prefer + * prime-valued sizes. The closest spaced prime function returns the + * next largest prime, or the highest it knows about which is about + * MAXINT/4. + */ +GLIB_AVAILABLE_IN_ALL +guint g_spaced_primes_closest (guint num) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __G_PRIMES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gprintf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gprintf.h new file mode 100644 index 0000000..78b2520 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gprintf.h @@ -0,0 +1,59 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997, 2002 Peter Mattis, Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_PRINTF_H__ +#define __G_PRINTF_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +gint g_printf (gchar const *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_ALL +gint g_fprintf (FILE *file, + gchar const *format, + ...) G_GNUC_PRINTF (2, 3); +GLIB_AVAILABLE_IN_ALL +gint g_sprintf (gchar *string, + gchar const *format, + ...) G_GNUC_PRINTF (2, 3); + +GLIB_AVAILABLE_IN_ALL +gint g_vprintf (gchar const *format, + va_list args) G_GNUC_PRINTF(1, 0); +GLIB_AVAILABLE_IN_ALL +gint g_vfprintf (FILE *file, + gchar const *format, + va_list args) G_GNUC_PRINTF(2, 0); +GLIB_AVAILABLE_IN_ALL +gint g_vsprintf (gchar *string, + gchar const *format, + va_list args) G_GNUC_PRINTF(2, 0); +GLIB_AVAILABLE_IN_ALL +gint g_vasprintf (gchar **string, + gchar const *format, + va_list args) G_GNUC_PRINTF(2, 0); + +G_END_DECLS + +#endif /* __G_PRINTF_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gqsort.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gqsort.h new file mode 100644 index 0000000..c04c038 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gqsort.h @@ -0,0 +1,47 @@ + /* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_QSORT_H__ +#define __G_QSORT_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +void g_qsort_with_data (gconstpointer pbase, + gint total_elems, + gsize size, + GCompareDataFunc compare_func, + gpointer user_data); + +G_END_DECLS + +#endif /* __G_QSORT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gquark.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gquark.h new file mode 100644 index 0000000..d0c4403 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gquark.h @@ -0,0 +1,70 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_QUARK_H__ +#define __G_QUARK_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef guint32 GQuark; + +/* Quarks (string<->id association) + */ +GLIB_AVAILABLE_IN_ALL +GQuark g_quark_try_string (const gchar *string); +GLIB_AVAILABLE_IN_ALL +GQuark g_quark_from_static_string (const gchar *string); +GLIB_AVAILABLE_IN_ALL +GQuark g_quark_from_string (const gchar *string); +GLIB_AVAILABLE_IN_ALL +const gchar * g_quark_to_string (GQuark quark) G_GNUC_CONST; + +#define G_DEFINE_QUARK(QN, q_n) \ +GQuark \ +q_n##_quark (void) \ +{ \ + static GQuark q; \ + \ + if G_UNLIKELY (q == 0) \ + q = g_quark_from_static_string (#QN); \ + \ + return q; \ +} + +GLIB_AVAILABLE_IN_ALL +const gchar * g_intern_string (const gchar *string); +GLIB_AVAILABLE_IN_ALL +const gchar * g_intern_static_string (const gchar *string); + +G_END_DECLS + +#endif /* __G_QUARK_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gqueue.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gqueue.h new file mode 100644 index 0000000..c3a28c8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gqueue.h @@ -0,0 +1,205 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_QUEUE_H__ +#define __G_QUEUE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GQueue GQueue; + +/** + * GQueue: + * @head: a pointer to the first element of the queue + * @tail: a pointer to the last element of the queue + * @length: the number of elements in the queue + * + * Contains the public fields of a + * [Queue][glib-Double-ended-Queues]. + */ +struct _GQueue +{ + GList *head; + GList *tail; + guint length; +}; + +/** + * G_QUEUE_INIT: + * + * A statically-allocated #GQueue must be initialized with this + * macro before it can be used. This macro can be used to initialize + * a variable, but it cannot be assigned to a variable. In that case + * you have to use g_queue_init(). + * + * |[ + * GQueue my_queue = G_QUEUE_INIT; + * ]| + * + * Since: 2.14 + */ +#define G_QUEUE_INIT { NULL, NULL, 0 } + +/* Queues + */ +GLIB_AVAILABLE_IN_ALL +GQueue* g_queue_new (void); +GLIB_AVAILABLE_IN_ALL +void g_queue_free (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +void g_queue_free_full (GQueue *queue, + GDestroyNotify free_func); +GLIB_AVAILABLE_IN_ALL +void g_queue_init (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +void g_queue_clear (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +gboolean g_queue_is_empty (GQueue *queue); +GLIB_AVAILABLE_IN_2_60 +void g_queue_clear_full (GQueue *queue, + GDestroyNotify free_func); +GLIB_AVAILABLE_IN_ALL +guint g_queue_get_length (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +void g_queue_reverse (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +GQueue * g_queue_copy (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +void g_queue_foreach (GQueue *queue, + GFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GList * g_queue_find (GQueue *queue, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +GList * g_queue_find_custom (GQueue *queue, + gconstpointer data, + GCompareFunc func); +GLIB_AVAILABLE_IN_ALL +void g_queue_sort (GQueue *queue, + GCompareDataFunc compare_func, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +void g_queue_push_head (GQueue *queue, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_queue_push_tail (GQueue *queue, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_queue_push_nth (GQueue *queue, + gpointer data, + gint n); +GLIB_AVAILABLE_IN_ALL +gpointer g_queue_pop_head (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_queue_pop_tail (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_queue_pop_nth (GQueue *queue, + guint n); +GLIB_AVAILABLE_IN_ALL +gpointer g_queue_peek_head (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_queue_peek_tail (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +gpointer g_queue_peek_nth (GQueue *queue, + guint n); +GLIB_AVAILABLE_IN_ALL +gint g_queue_index (GQueue *queue, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +gboolean g_queue_remove (GQueue *queue, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_queue_remove_all (GQueue *queue, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +void g_queue_insert_before (GQueue *queue, + GList *sibling, + gpointer data); +GLIB_AVAILABLE_IN_2_62 +void g_queue_insert_before_link + (GQueue *queue, + GList *sibling, + GList *link_); +GLIB_AVAILABLE_IN_ALL +void g_queue_insert_after (GQueue *queue, + GList *sibling, + gpointer data); +GLIB_AVAILABLE_IN_2_62 +void g_queue_insert_after_link + (GQueue *queue, + GList *sibling, + GList *link_); +GLIB_AVAILABLE_IN_ALL +void g_queue_insert_sorted (GQueue *queue, + gpointer data, + GCompareDataFunc func, + gpointer user_data); + +GLIB_AVAILABLE_IN_ALL +void g_queue_push_head_link (GQueue *queue, + GList *link_); +GLIB_AVAILABLE_IN_ALL +void g_queue_push_tail_link (GQueue *queue, + GList *link_); +GLIB_AVAILABLE_IN_ALL +void g_queue_push_nth_link (GQueue *queue, + gint n, + GList *link_); +GLIB_AVAILABLE_IN_ALL +GList* g_queue_pop_head_link (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +GList* g_queue_pop_tail_link (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +GList* g_queue_pop_nth_link (GQueue *queue, + guint n); +GLIB_AVAILABLE_IN_ALL +GList* g_queue_peek_head_link (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +GList* g_queue_peek_tail_link (GQueue *queue); +GLIB_AVAILABLE_IN_ALL +GList* g_queue_peek_nth_link (GQueue *queue, + guint n); +GLIB_AVAILABLE_IN_ALL +gint g_queue_link_index (GQueue *queue, + GList *link_); +GLIB_AVAILABLE_IN_ALL +void g_queue_unlink (GQueue *queue, + GList *link_); +GLIB_AVAILABLE_IN_ALL +void g_queue_delete_link (GQueue *queue, + GList *link_); + +G_END_DECLS + +#endif /* __G_QUEUE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grand.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grand.h new file mode 100644 index 0000000..c4ae956 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grand.h @@ -0,0 +1,101 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_RAND_H__ +#define __G_RAND_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GRand GRand; + +/* GRand - a good and fast random number generator: Mersenne Twister + * see http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html for more info. + * The range functions return a value in the interval [begin, end). + * int -> [0..2^32-1] + * int_range -> [begin..end-1] + * double -> [0..1) + * double_range -> [begin..end) + */ + +GLIB_AVAILABLE_IN_ALL +GRand* g_rand_new_with_seed (guint32 seed); +GLIB_AVAILABLE_IN_ALL +GRand* g_rand_new_with_seed_array (const guint32 *seed, + guint seed_length); +GLIB_AVAILABLE_IN_ALL +GRand* g_rand_new (void); +GLIB_AVAILABLE_IN_ALL +void g_rand_free (GRand *rand_); +GLIB_AVAILABLE_IN_ALL +GRand* g_rand_copy (GRand *rand_); +GLIB_AVAILABLE_IN_ALL +void g_rand_set_seed (GRand *rand_, + guint32 seed); +GLIB_AVAILABLE_IN_ALL +void g_rand_set_seed_array (GRand *rand_, + const guint32 *seed, + guint seed_length); + +#define g_rand_boolean(rand_) ((g_rand_int (rand_) & (1 << 15)) != 0) + +GLIB_AVAILABLE_IN_ALL +guint32 g_rand_int (GRand *rand_); +GLIB_AVAILABLE_IN_ALL +gint32 g_rand_int_range (GRand *rand_, + gint32 begin, + gint32 end); +GLIB_AVAILABLE_IN_ALL +gdouble g_rand_double (GRand *rand_); +GLIB_AVAILABLE_IN_ALL +gdouble g_rand_double_range (GRand *rand_, + gdouble begin, + gdouble end); +GLIB_AVAILABLE_IN_ALL +void g_random_set_seed (guint32 seed); + +#define g_random_boolean() ((g_random_int () & (1 << 15)) != 0) + +GLIB_AVAILABLE_IN_ALL +guint32 g_random_int (void); +GLIB_AVAILABLE_IN_ALL +gint32 g_random_int_range (gint32 begin, + gint32 end); +GLIB_AVAILABLE_IN_ALL +gdouble g_random_double (void); +GLIB_AVAILABLE_IN_ALL +gdouble g_random_double_range (gdouble begin, + gdouble end); + + +G_END_DECLS + +#endif /* __G_RAND_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grcbox.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grcbox.h new file mode 100644 index 0000000..f101e43 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grcbox.h @@ -0,0 +1,91 @@ +/* grcbox.h: Reference counted data + * + * Copyright 2018 Emmanuele Bassi + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#pragma once + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_58 +gpointer g_rc_box_alloc (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_2_58 +gpointer g_rc_box_alloc0 (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_2_58 +gpointer g_rc_box_dup (gsize block_size, + gconstpointer mem_block) G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_2_58 +gpointer g_rc_box_acquire (gpointer mem_block); +GLIB_AVAILABLE_IN_2_58 +void g_rc_box_release (gpointer mem_block); +GLIB_AVAILABLE_IN_2_58 +void g_rc_box_release_full (gpointer mem_block, + GDestroyNotify clear_func); + +GLIB_AVAILABLE_IN_2_58 +gsize g_rc_box_get_size (gpointer mem_block); + +GLIB_AVAILABLE_IN_2_58 +gpointer g_atomic_rc_box_alloc (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_2_58 +gpointer g_atomic_rc_box_alloc0 (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_2_58 +gpointer g_atomic_rc_box_dup (gsize block_size, + gconstpointer mem_block) G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_2_58 +gpointer g_atomic_rc_box_acquire (gpointer mem_block); +GLIB_AVAILABLE_IN_2_58 +void g_atomic_rc_box_release (gpointer mem_block); +GLIB_AVAILABLE_IN_2_58 +void g_atomic_rc_box_release_full (gpointer mem_block, + GDestroyNotify clear_func); + +GLIB_AVAILABLE_IN_2_58 +gsize g_atomic_rc_box_get_size (gpointer mem_block); + +#define g_rc_box_new(type) \ + ((type *) g_rc_box_alloc (sizeof (type))) +#define g_rc_box_new0(type) \ + ((type *) g_rc_box_alloc0 (sizeof (type))) +#define g_atomic_rc_box_new(type) \ + ((type *) g_atomic_rc_box_alloc (sizeof (type))) +#define g_atomic_rc_box_new0(type) \ + ((type *) g_atomic_rc_box_alloc0 (sizeof (type))) + +#if defined(glib_typeof) +/* Type check to avoid assigning references to different types */ +#define g_rc_box_acquire(mem_block) \ + ((glib_typeof (mem_block)) (g_rc_box_acquire) (mem_block)) +#define g_atomic_rc_box_acquire(mem_block) \ + ((glib_typeof (mem_block)) (g_atomic_rc_box_acquire) (mem_block)) + +/* Type check to avoid duplicating data to different types */ +#define g_rc_box_dup(block_size, mem_block) \ + ((glib_typeof (mem_block)) (g_rc_box_dup) (block_size, mem_block)) +#define g_atomic_rc_box_dup(block_size, mem_block) \ + ((glib_typeof (mem_block)) (g_atomic_rc_box_dup) (block_size, mem_block)) +#endif + +G_END_DECLS diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grefcount.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grefcount.h new file mode 100644 index 0000000..88fc716 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grefcount.h @@ -0,0 +1,125 @@ +/* grefcount.h: Reference counting + * + * Copyright 2018 Emmanuele Bassi + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __GREFCOUNT_H__ +#define __GREFCOUNT_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_58 +void g_ref_count_init (grefcount *rc); +GLIB_AVAILABLE_IN_2_58 +void g_ref_count_inc (grefcount *rc); +GLIB_AVAILABLE_IN_2_58 +gboolean g_ref_count_dec (grefcount *rc); +GLIB_AVAILABLE_IN_2_58 +gboolean g_ref_count_compare (grefcount *rc, + gint val); + +GLIB_AVAILABLE_IN_2_58 +void g_atomic_ref_count_init (gatomicrefcount *arc); +GLIB_AVAILABLE_IN_2_58 +void g_atomic_ref_count_inc (gatomicrefcount *arc); +GLIB_AVAILABLE_IN_2_58 +gboolean g_atomic_ref_count_dec (gatomicrefcount *arc); +GLIB_AVAILABLE_IN_2_58 +gboolean g_atomic_ref_count_compare (gatomicrefcount *arc, + gint val); + +/* On GCC we can use __extension__ to inline the API without using + * ancillary functions; we only do this when disabling checks, as + * it disables warnings when saturating the reference counters + */ +#if defined(__GNUC__) && defined(G_DISABLE_CHECKS) + +# define g_ref_count_init(rc) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (grefcount)); \ + (void) (0 ? *(rc) ^ *(rc) : 1); \ + *(rc) = -1; \ + })) + +# define g_ref_count_inc(rc) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (grefcount)); \ + (void) (0 ? *(rc) ^ *(rc) : 1); \ + if (*(rc) == G_MININT) ; else { \ + *(rc) -= 1; \ + } \ + })) + +# define g_ref_count_dec(rc) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (grefcount)); \ + grefcount __rc = *(rc); \ + __rc += 1; \ + if (__rc == 0) ; else { \ + *(rc) = __rc; \ + } \ + (gboolean) (__rc == 0); \ + })) + +# define g_ref_count_compare(rc,val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (grefcount)); \ + (void) (0 ? *(rc) ^ (val) : 1); \ + (gboolean) (*(rc) == -(val)); \ + })) + +# define g_atomic_ref_count_init(rc) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (gatomicrefcount)); \ + (void) (0 ? *(rc) ^ *(rc) : 1); \ + *(rc) = 1; \ + })) + +# define g_atomic_ref_count_inc(rc) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (gatomicrefcount)); \ + (void) (0 ? *(rc) ^ *(rc) : 1); \ + (void) (g_atomic_int_get (rc) == G_MAXINT ? 0 : g_atomic_int_inc ((rc))); \ + })) + +# define g_atomic_ref_count_dec(rc) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (gatomicrefcount)); \ + (void) (0 ? *(rc) ^ *(rc) : 1); \ + g_atomic_int_dec_and_test ((rc)); \ + })) + +# define g_atomic_ref_count_compare(rc,val) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(rc) == sizeof (gatomicrefcount)); \ + (void) (0 ? *(rc) ^ (val) : 1); \ + (gboolean) (g_atomic_int_get (rc) == (val)); \ + })) + +#endif /* __GNUC__ && G_DISABLE_CHECKS */ + +G_END_DECLS + +#endif /* __GREFCOUNT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grefstring.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grefstring.h new file mode 100644 index 0000000..ae7d173 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/grefstring.h @@ -0,0 +1,59 @@ +/* grefstring.h: Reference counted strings + * + * Copyright 2018 Emmanuele Bassi + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#pragma once + +#include "gmem.h" +#include "gmacros.h" + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_58 +char * g_ref_string_new (const char *str); +GLIB_AVAILABLE_IN_2_58 +char * g_ref_string_new_len (const char *str, + gssize len); +GLIB_AVAILABLE_IN_2_58 +char * g_ref_string_new_intern (const char *str); + +GLIB_AVAILABLE_IN_2_58 +char * g_ref_string_acquire (char *str); +GLIB_AVAILABLE_IN_2_58 +void g_ref_string_release (char *str); + +GLIB_AVAILABLE_IN_2_58 +gsize g_ref_string_length (char *str); + +/** + * GRefString: + * + * A typedef for a reference-counted string. A pointer to a #GRefString can be + * treated like a standard `char*` array by all code, but can additionally have + * `g_ref_string_*()` methods called on it. `g_ref_string_*()` methods cannot be + * called on `char*` arrays not allocated using g_ref_string_new(). + * + * If using #GRefString with autocleanups, g_autoptr() must be used rather than + * g_autofree(), so that the reference counting metadata is also freed. + * + * Since: 2.58 + */ +typedef char GRefString; + +G_END_DECLS diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gscanner.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gscanner.h new file mode 100644 index 0000000..bbad353 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gscanner.h @@ -0,0 +1,301 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_SCANNER_H__ +#define __G_SCANNER_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GScanner GScanner; +typedef struct _GScannerConfig GScannerConfig; +typedef union _GTokenValue GTokenValue; + +typedef void (*GScannerMsgFunc) (GScanner *scanner, + gchar *message, + gboolean error); + +/* GScanner: Flexible lexical scanner for general purpose. + */ + +/* Character sets */ +#define G_CSET_A_2_Z "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +#define G_CSET_a_2_z "abcdefghijklmnopqrstuvwxyz" +#define G_CSET_DIGITS "0123456789" +#define G_CSET_LATINC "\300\301\302\303\304\305\306"\ + "\307\310\311\312\313\314\315\316\317\320"\ + "\321\322\323\324\325\326"\ + "\330\331\332\333\334\335\336" +#define G_CSET_LATINS "\337\340\341\342\343\344\345\346"\ + "\347\350\351\352\353\354\355\356\357\360"\ + "\361\362\363\364\365\366"\ + "\370\371\372\373\374\375\376\377" + +/* Error types */ +typedef enum +{ + G_ERR_UNKNOWN, + G_ERR_UNEXP_EOF, + G_ERR_UNEXP_EOF_IN_STRING, + G_ERR_UNEXP_EOF_IN_COMMENT, + G_ERR_NON_DIGIT_IN_CONST, + G_ERR_DIGIT_RADIX, + G_ERR_FLOAT_RADIX, + G_ERR_FLOAT_MALFORMED +} GErrorType; + +/* Token types */ +typedef enum +{ + G_TOKEN_EOF = 0, + + G_TOKEN_LEFT_PAREN = '(', + G_TOKEN_RIGHT_PAREN = ')', + G_TOKEN_LEFT_CURLY = '{', + G_TOKEN_RIGHT_CURLY = '}', + G_TOKEN_LEFT_BRACE = '[', + G_TOKEN_RIGHT_BRACE = ']', + G_TOKEN_EQUAL_SIGN = '=', + G_TOKEN_COMMA = ',', + + G_TOKEN_NONE = 256, + + G_TOKEN_ERROR, + + G_TOKEN_CHAR, + G_TOKEN_BINARY, + G_TOKEN_OCTAL, + G_TOKEN_INT, + G_TOKEN_HEX, + G_TOKEN_FLOAT, + G_TOKEN_STRING, + + G_TOKEN_SYMBOL, + G_TOKEN_IDENTIFIER, + G_TOKEN_IDENTIFIER_NULL, + + G_TOKEN_COMMENT_SINGLE, + G_TOKEN_COMMENT_MULTI, + + /*< private >*/ + G_TOKEN_LAST +} GTokenType; + +union _GTokenValue +{ + gpointer v_symbol; + gchar *v_identifier; + gulong v_binary; + gulong v_octal; + gulong v_int; + guint64 v_int64; + gdouble v_float; + gulong v_hex; + gchar *v_string; + gchar *v_comment; + guchar v_char; + guint v_error; +}; + +struct _GScannerConfig +{ + /* Character sets + */ + gchar *cset_skip_characters; /* default: " \t\n" */ + gchar *cset_identifier_first; + gchar *cset_identifier_nth; + gchar *cpair_comment_single; /* default: "#\n" */ + + /* Should symbol lookup work case sensitive? + */ + guint case_sensitive : 1; + + /* Boolean values to be adjusted "on the fly" + * to configure scanning behaviour. + */ + guint skip_comment_multi : 1; /* C like comment */ + guint skip_comment_single : 1; /* single line comment */ + guint scan_comment_multi : 1; /* scan multi line comments? */ + guint scan_identifier : 1; + guint scan_identifier_1char : 1; + guint scan_identifier_NULL : 1; + guint scan_symbols : 1; + guint scan_binary : 1; + guint scan_octal : 1; + guint scan_float : 1; + guint scan_hex : 1; /* '0x0ff0' */ + guint scan_hex_dollar : 1; /* '$0ff0' */ + guint scan_string_sq : 1; /* string: 'anything' */ + guint scan_string_dq : 1; /* string: "\\-escapes!\n" */ + guint numbers_2_int : 1; /* bin, octal, hex => int */ + guint int_2_float : 1; /* int => G_TOKEN_FLOAT? */ + guint identifier_2_string : 1; + guint char_2_token : 1; /* return G_TOKEN_CHAR? */ + guint symbol_2_token : 1; + guint scope_0_fallback : 1; /* try scope 0 on lookups? */ + guint store_int64 : 1; /* use value.v_int64 rather than v_int */ + + /*< private >*/ + guint padding_dummy; +}; + +struct _GScanner +{ + /* unused fields */ + gpointer user_data; + guint max_parse_errors; + + /* g_scanner_error() increments this field */ + guint parse_errors; + + /* name of input stream, featured by the default message handler */ + const gchar *input_name; + + /* quarked data */ + GData *qdata; + + /* link into the scanner configuration */ + GScannerConfig *config; + + /* fields filled in after g_scanner_get_next_token() */ + GTokenType token; + GTokenValue value; + guint line; + guint position; + + /* fields filled in after g_scanner_peek_next_token() */ + GTokenType next_token; + GTokenValue next_value; + guint next_line; + guint next_position; + + /*< private >*/ + /* to be considered private */ + GHashTable *symbol_table; + gint input_fd; + const gchar *text; + const gchar *text_end; + gchar *buffer; + guint scope_id; + + /*< public >*/ + /* handler function for _warn and _error */ + GScannerMsgFunc msg_handler; +}; + +GLIB_AVAILABLE_IN_ALL +GScanner* g_scanner_new (const GScannerConfig *config_templ); +GLIB_AVAILABLE_IN_ALL +void g_scanner_destroy (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +void g_scanner_input_file (GScanner *scanner, + gint input_fd); +GLIB_AVAILABLE_IN_ALL +void g_scanner_sync_file_offset (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +void g_scanner_input_text (GScanner *scanner, + const gchar *text, + guint text_len); +GLIB_AVAILABLE_IN_ALL +GTokenType g_scanner_get_next_token (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +GTokenType g_scanner_peek_next_token (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +GTokenType g_scanner_cur_token (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +GTokenValue g_scanner_cur_value (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +guint g_scanner_cur_line (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +guint g_scanner_cur_position (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +gboolean g_scanner_eof (GScanner *scanner); +GLIB_AVAILABLE_IN_ALL +guint g_scanner_set_scope (GScanner *scanner, + guint scope_id); +GLIB_AVAILABLE_IN_ALL +void g_scanner_scope_add_symbol (GScanner *scanner, + guint scope_id, + const gchar *symbol, + gpointer value); +GLIB_AVAILABLE_IN_ALL +void g_scanner_scope_remove_symbol (GScanner *scanner, + guint scope_id, + const gchar *symbol); +GLIB_AVAILABLE_IN_ALL +gpointer g_scanner_scope_lookup_symbol (GScanner *scanner, + guint scope_id, + const gchar *symbol); +GLIB_AVAILABLE_IN_ALL +void g_scanner_scope_foreach_symbol (GScanner *scanner, + guint scope_id, + GHFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +gpointer g_scanner_lookup_symbol (GScanner *scanner, + const gchar *symbol); +GLIB_AVAILABLE_IN_ALL +void g_scanner_unexp_token (GScanner *scanner, + GTokenType expected_token, + const gchar *identifier_spec, + const gchar *symbol_spec, + const gchar *symbol_name, + const gchar *message, + gint is_error); +GLIB_AVAILABLE_IN_ALL +void g_scanner_error (GScanner *scanner, + const gchar *format, + ...) G_GNUC_PRINTF (2,3); +GLIB_AVAILABLE_IN_ALL +void g_scanner_warn (GScanner *scanner, + const gchar *format, + ...) G_GNUC_PRINTF (2,3); + +/* keep downward source compatibility */ +#define g_scanner_add_symbol( scanner, symbol, value ) G_STMT_START { \ + g_scanner_scope_add_symbol ((scanner), 0, (symbol), (value)); \ +} G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_scanner_scope_add_symbol) +#define g_scanner_remove_symbol( scanner, symbol ) G_STMT_START { \ + g_scanner_scope_remove_symbol ((scanner), 0, (symbol)); \ +} G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_scanner_scope_remove_symbol) +#define g_scanner_foreach_symbol( scanner, func, data ) G_STMT_START { \ + g_scanner_scope_foreach_symbol ((scanner), 0, (func), (data)); \ +} G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_scanner_scope_foreach_symbol) + +/* The following two functions are deprecated and will be removed in + * the next major release. They do no good. */ +#define g_scanner_freeze_symbol_table(scanner) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 +#define g_scanner_thaw_symbol_table(scanner) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 + +G_END_DECLS + +#endif /* __G_SCANNER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gsequence.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gsequence.h new file mode 100644 index 0000000..464fe80 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gsequence.h @@ -0,0 +1,175 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 + * Soeren Sandmann (sandmann@daimi.au.dk) + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_SEQUENCE_H__ +#define __G_SEQUENCE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GSequence GSequence; +typedef struct _GSequenceNode GSequenceIter; + +typedef gint (* GSequenceIterCompareFunc) (GSequenceIter *a, + GSequenceIter *b, + gpointer user_data); + + +/* GSequence */ +GLIB_AVAILABLE_IN_ALL +GSequence * g_sequence_new (GDestroyNotify data_destroy); +GLIB_AVAILABLE_IN_ALL +void g_sequence_free (GSequence *seq); +GLIB_AVAILABLE_IN_ALL +gint g_sequence_get_length (GSequence *seq); +GLIB_AVAILABLE_IN_ALL +void g_sequence_foreach (GSequence *seq, + GFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +void g_sequence_foreach_range (GSequenceIter *begin, + GSequenceIter *end, + GFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +void g_sequence_sort (GSequence *seq, + GCompareDataFunc cmp_func, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +void g_sequence_sort_iter (GSequence *seq, + GSequenceIterCompareFunc cmp_func, + gpointer cmp_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_sequence_is_empty (GSequence *seq); + + +/* Getting iters */ +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_get_begin_iter (GSequence *seq); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_get_end_iter (GSequence *seq); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_get_iter_at_pos (GSequence *seq, + gint pos); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_append (GSequence *seq, + gpointer data); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_prepend (GSequence *seq, + gpointer data); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_insert_before (GSequenceIter *iter, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_sequence_move (GSequenceIter *src, + GSequenceIter *dest); +GLIB_AVAILABLE_IN_ALL +void g_sequence_swap (GSequenceIter *a, + GSequenceIter *b); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_insert_sorted (GSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_insert_sorted_iter (GSequence *seq, + gpointer data, + GSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +void g_sequence_sort_changed (GSequenceIter *iter, + GCompareDataFunc cmp_func, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +void g_sequence_sort_changed_iter (GSequenceIter *iter, + GSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +void g_sequence_remove (GSequenceIter *iter); +GLIB_AVAILABLE_IN_ALL +void g_sequence_remove_range (GSequenceIter *begin, + GSequenceIter *end); +GLIB_AVAILABLE_IN_ALL +void g_sequence_move_range (GSequenceIter *dest, + GSequenceIter *begin, + GSequenceIter *end); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_search (GSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_search_iter (GSequence *seq, + gpointer data, + GSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_lookup (GSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_lookup_iter (GSequence *seq, + gpointer data, + GSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); + + +/* Dereferencing */ +GLIB_AVAILABLE_IN_ALL +gpointer g_sequence_get (GSequenceIter *iter); +GLIB_AVAILABLE_IN_ALL +void g_sequence_set (GSequenceIter *iter, + gpointer data); + +/* Operations on GSequenceIter * */ +GLIB_AVAILABLE_IN_ALL +gboolean g_sequence_iter_is_begin (GSequenceIter *iter); +GLIB_AVAILABLE_IN_ALL +gboolean g_sequence_iter_is_end (GSequenceIter *iter); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_iter_next (GSequenceIter *iter); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_iter_prev (GSequenceIter *iter); +GLIB_AVAILABLE_IN_ALL +gint g_sequence_iter_get_position (GSequenceIter *iter); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_iter_move (GSequenceIter *iter, + gint delta); +GLIB_AVAILABLE_IN_ALL +GSequence * g_sequence_iter_get_sequence (GSequenceIter *iter); + + +/* Search */ +GLIB_AVAILABLE_IN_ALL +gint g_sequence_iter_compare (GSequenceIter *a, + GSequenceIter *b); +GLIB_AVAILABLE_IN_ALL +GSequenceIter *g_sequence_range_get_midpoint (GSequenceIter *begin, + GSequenceIter *end); + +G_END_DECLS + +#endif /* __G_SEQUENCE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gshell.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gshell.h new file mode 100644 index 0000000..4084b69 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gshell.h @@ -0,0 +1,59 @@ +/* gshell.h - Shell-related utilities + * + * Copyright 2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_SHELL_H__ +#define __G_SHELL_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_SHELL_ERROR g_shell_error_quark () + +typedef enum +{ + /* mismatched or otherwise mangled quoting */ + G_SHELL_ERROR_BAD_QUOTING, + /* string to be parsed was empty */ + G_SHELL_ERROR_EMPTY_STRING, + G_SHELL_ERROR_FAILED +} GShellError; + +GLIB_AVAILABLE_IN_ALL +GQuark g_shell_error_quark (void); + +GLIB_AVAILABLE_IN_ALL +gchar* g_shell_quote (const gchar *unquoted_string); +GLIB_AVAILABLE_IN_ALL +gchar* g_shell_unquote (const gchar *quoted_string, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_shell_parse_argv (const gchar *command_line, + gint *argcp, + gchar ***argvp, + GError **error); + +G_END_DECLS + +#endif /* __G_SHELL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gslice.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gslice.h new file mode 100644 index 0000000..eb67786 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gslice.h @@ -0,0 +1,117 @@ +/* GLIB sliced memory - fast threaded memory chunk allocator + * Copyright (C) 2005 Tim Janik + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_SLICE_H__ +#define __G_SLICE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/* slices - fast allocation/release of small memory blocks + */ +GLIB_AVAILABLE_IN_ALL +gpointer g_slice_alloc (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_ALL +gpointer g_slice_alloc0 (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_ALL +gpointer g_slice_copy (gsize block_size, + gconstpointer mem_block) G_GNUC_ALLOC_SIZE(1); +GLIB_AVAILABLE_IN_ALL +void g_slice_free1 (gsize block_size, + gpointer mem_block); +GLIB_AVAILABLE_IN_ALL +void g_slice_free_chain_with_offset (gsize block_size, + gpointer mem_chain, + gsize next_offset); +#define g_slice_new(type) ((type*) g_slice_alloc (sizeof (type))) + +/* Allow the compiler to inline memset(). Since the size is a constant, this + * can significantly improve performance. */ +#if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__) +# define g_slice_new0(type) \ + (type *) (G_GNUC_EXTENSION ({ \ + gsize __s = sizeof (type); \ + gpointer __p; \ + __p = g_slice_alloc (__s); \ + memset (__p, 0, __s); \ + __p; \ + })) +#else +# define g_slice_new0(type) ((type*) g_slice_alloc0 (sizeof (type))) +#endif + +/* MemoryBlockType * + * g_slice_dup (MemoryBlockType, + * MemoryBlockType *mem_block); + * g_slice_free (MemoryBlockType, + * MemoryBlockType *mem_block); + * g_slice_free_chain (MemoryBlockType, + * MemoryBlockType *first_chain_block, + * memory_block_next_field); + * pseudo prototypes for the macro + * definitions following below. + */ + +/* we go through extra hoops to ensure type safety */ +#define g_slice_dup(type, mem) \ + (1 ? (type*) g_slice_copy (sizeof (type), (mem)) \ + : ((void) ((type*) 0 == (mem)), (type*) 0)) +#define g_slice_free(type, mem) \ +G_STMT_START { \ + if (1) g_slice_free1 (sizeof (type), (mem)); \ + else (void) ((type*) 0 == (mem)); \ +} G_STMT_END +#define g_slice_free_chain(type, mem_chain, next) \ +G_STMT_START { \ + if (1) g_slice_free_chain_with_offset (sizeof (type), \ + (mem_chain), G_STRUCT_OFFSET (type, next)); \ + else (void) ((type*) 0 == (mem_chain)); \ +} G_STMT_END + +/* --- internal debugging API --- */ +typedef enum { + G_SLICE_CONFIG_ALWAYS_MALLOC = 1, + G_SLICE_CONFIG_BYPASS_MAGAZINES, + G_SLICE_CONFIG_WORKING_SET_MSECS, + G_SLICE_CONFIG_COLOR_INCREMENT, + G_SLICE_CONFIG_CHUNK_SIZES, + G_SLICE_CONFIG_CONTENTION_COUNTER +} GSliceConfig; + +GLIB_DEPRECATED_IN_2_34 +void g_slice_set_config (GSliceConfig ckey, gint64 value); +GLIB_DEPRECATED_IN_2_34 +gint64 g_slice_get_config (GSliceConfig ckey); +GLIB_DEPRECATED_IN_2_34 +gint64* g_slice_get_config_state (GSliceConfig ckey, gint64 address, guint *n_values); + +#ifdef G_ENABLE_DEBUG +GLIB_AVAILABLE_IN_ALL +void g_slice_debug_tree_statistics (void); +#endif + +G_END_DECLS + +#endif /* __G_SLICE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gslist.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gslist.h new file mode 100644 index 0000000..c8e0cf2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gslist.h @@ -0,0 +1,166 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_SLIST_H__ +#define __G_SLIST_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GSList GSList; + +struct _GSList +{ + gpointer data; + GSList *next; +}; + +/* Singly linked lists + */ +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_alloc (void) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +void g_slist_free (GSList *list); +GLIB_AVAILABLE_IN_ALL +void g_slist_free_1 (GSList *list); +#define g_slist_free1 g_slist_free_1 +GLIB_AVAILABLE_IN_ALL +void g_slist_free_full (GSList *list, + GDestroyNotify free_func); +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_append (GSList *list, + gpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_prepend (GSList *list, + gpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_insert (GSList *list, + gpointer data, + gint position) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_insert_sorted (GSList *list, + gpointer data, + GCompareFunc func) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_insert_sorted_with_data (GSList *list, + gpointer data, + GCompareDataFunc func, + gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_insert_before (GSList *slist, + GSList *sibling, + gpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_concat (GSList *list1, + GSList *list2) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_remove (GSList *list, + gconstpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_remove_all (GSList *list, + gconstpointer data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_remove_link (GSList *list, + GSList *link_) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_delete_link (GSList *list, + GSList *link_) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_reverse (GSList *list) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_copy (GSList *list) G_GNUC_WARN_UNUSED_RESULT; + +GLIB_AVAILABLE_IN_2_34 +GSList* g_slist_copy_deep (GSList *list, + GCopyFunc func, + gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_nth (GSList *list, + guint n); +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_find (GSList *list, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_find_custom (GSList *list, + gconstpointer data, + GCompareFunc func); +GLIB_AVAILABLE_IN_ALL +gint g_slist_position (GSList *list, + GSList *llink); +GLIB_AVAILABLE_IN_ALL +gint g_slist_index (GSList *list, + gconstpointer data); +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_last (GSList *list); +GLIB_AVAILABLE_IN_ALL +guint g_slist_length (GSList *list); +GLIB_AVAILABLE_IN_ALL +void g_slist_foreach (GSList *list, + GFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_sort (GSList *list, + GCompareFunc compare_func) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +GSList* g_slist_sort_with_data (GSList *list, + GCompareDataFunc compare_func, + gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; +GLIB_AVAILABLE_IN_ALL +gpointer g_slist_nth_data (GSList *list, + guint n); + +GLIB_AVAILABLE_IN_2_64 +void g_clear_slist (GSList **slist_ptr, + GDestroyNotify destroy); + +#define g_clear_slist(slist_ptr, destroy) \ + G_STMT_START { \ + GSList *_slist; \ + \ + _slist = *(slist_ptr); \ + if (_slist) \ + { \ + *slist_ptr = NULL; \ + \ + if ((destroy) != NULL) \ + g_slist_free_full (_slist, (destroy)); \ + else \ + g_slist_free (_slist); \ + } \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_64 + +#define g_slist_next(slist) ((slist) ? (((GSList *)(slist))->next) : NULL) + +G_END_DECLS + +#endif /* __G_SLIST_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gspawn.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gspawn.h new file mode 100644 index 0000000..277c98c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gspawn.h @@ -0,0 +1,323 @@ +/* gspawn.h - Process launching + * + * Copyright 2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_SPAWN_H__ +#define __G_SPAWN_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +/* I'm not sure I remember our proposed naming convention here. */ +/** + * G_SPAWN_ERROR: + * + * Error domain for spawning processes. Errors in this domain will + * be from the #GSpawnError enumeration. See #GError for information on + * error domains. + */ +#define G_SPAWN_ERROR g_spawn_error_quark () + +/** + * GSpawnError: + * @G_SPAWN_ERROR_FORK: Fork failed due to lack of memory. + * @G_SPAWN_ERROR_READ: Read or select on pipes failed. + * @G_SPAWN_ERROR_CHDIR: Changing to working directory failed. + * @G_SPAWN_ERROR_ACCES: execv() returned `EACCES` + * @G_SPAWN_ERROR_PERM: execv() returned `EPERM` + * @G_SPAWN_ERROR_TOO_BIG: execv() returned `E2BIG` + * @G_SPAWN_ERROR_2BIG: deprecated alias for %G_SPAWN_ERROR_TOO_BIG (deprecated since GLib 2.32) + * @G_SPAWN_ERROR_NOEXEC: execv() returned `ENOEXEC` + * @G_SPAWN_ERROR_NAMETOOLONG: execv() returned `ENAMETOOLONG` + * @G_SPAWN_ERROR_NOENT: execv() returned `ENOENT` + * @G_SPAWN_ERROR_NOMEM: execv() returned `ENOMEM` + * @G_SPAWN_ERROR_NOTDIR: execv() returned `ENOTDIR` + * @G_SPAWN_ERROR_LOOP: execv() returned `ELOOP` + * @G_SPAWN_ERROR_TXTBUSY: execv() returned `ETXTBUSY` + * @G_SPAWN_ERROR_IO: execv() returned `EIO` + * @G_SPAWN_ERROR_NFILE: execv() returned `ENFILE` + * @G_SPAWN_ERROR_MFILE: execv() returned `EMFILE` + * @G_SPAWN_ERROR_INVAL: execv() returned `EINVAL` + * @G_SPAWN_ERROR_ISDIR: execv() returned `EISDIR` + * @G_SPAWN_ERROR_LIBBAD: execv() returned `ELIBBAD` + * @G_SPAWN_ERROR_FAILED: Some other fatal failure, + * `error->message` should explain. + * + * Error codes returned by spawning processes. + */ +typedef enum +{ + G_SPAWN_ERROR_FORK, /* fork failed due to lack of memory */ + G_SPAWN_ERROR_READ, /* read or select on pipes failed */ + G_SPAWN_ERROR_CHDIR, /* changing to working dir failed */ + G_SPAWN_ERROR_ACCES, /* execv() returned EACCES */ + G_SPAWN_ERROR_PERM, /* execv() returned EPERM */ + G_SPAWN_ERROR_TOO_BIG,/* execv() returned E2BIG */ + G_SPAWN_ERROR_2BIG GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(G_SPAWN_ERROR_TOO_BIG) = G_SPAWN_ERROR_TOO_BIG, + G_SPAWN_ERROR_NOEXEC, /* execv() returned ENOEXEC */ + G_SPAWN_ERROR_NAMETOOLONG, /* "" "" ENAMETOOLONG */ + G_SPAWN_ERROR_NOENT, /* "" "" ENOENT */ + G_SPAWN_ERROR_NOMEM, /* "" "" ENOMEM */ + G_SPAWN_ERROR_NOTDIR, /* "" "" ENOTDIR */ + G_SPAWN_ERROR_LOOP, /* "" "" ELOOP */ + G_SPAWN_ERROR_TXTBUSY, /* "" "" ETXTBUSY */ + G_SPAWN_ERROR_IO, /* "" "" EIO */ + G_SPAWN_ERROR_NFILE, /* "" "" ENFILE */ + G_SPAWN_ERROR_MFILE, /* "" "" EMFLE */ + G_SPAWN_ERROR_INVAL, /* "" "" EINVAL */ + G_SPAWN_ERROR_ISDIR, /* "" "" EISDIR */ + G_SPAWN_ERROR_LIBBAD, /* "" "" ELIBBAD */ + G_SPAWN_ERROR_FAILED /* other fatal failure, error->message + * should explain + */ +} GSpawnError; + +/** + * G_SPAWN_EXIT_ERROR: + * + * Error domain used by g_spawn_check_wait_status(). The code + * will be the program exit code. + */ +#define G_SPAWN_EXIT_ERROR g_spawn_exit_error_quark () + +/** + * GSpawnChildSetupFunc: + * @user_data: user data to pass to the function. + * + * Specifies the type of the setup function passed to g_spawn_async(), + * g_spawn_sync() and g_spawn_async_with_pipes(), which can, in very + * limited ways, be used to affect the child's execution. + * + * On POSIX platforms, the function is called in the child after GLib + * has performed all the setup it plans to perform, but before calling + * exec(). Actions taken in this function will only affect the child, + * not the parent. + * + * On Windows, the function is called in the parent. Its usefulness on + * Windows is thus questionable. In many cases executing the child setup + * function in the parent can have ill effects, and you should be very + * careful when porting software to Windows that uses child setup + * functions. + * + * However, even on POSIX, you are extremely limited in what you can + * safely do from a #GSpawnChildSetupFunc, because any mutexes that were + * held by other threads in the parent process at the time of the fork() + * will still be locked in the child process, and they will never be + * unlocked (since the threads that held them don't exist in the child). + * POSIX allows only async-signal-safe functions (see signal(7)) to be + * called in the child between fork() and exec(), which drastically limits + * the usefulness of child setup functions. + * + * In particular, it is not safe to call any function which may + * call malloc(), which includes POSIX functions such as setenv(). + * If you need to set up the child environment differently from + * the parent, you should use g_get_environ(), g_environ_setenv(), + * and g_environ_unsetenv(), and then pass the complete environment + * list to the `g_spawn...` function. + */ +typedef void (* GSpawnChildSetupFunc) (gpointer user_data); + +/** + * GSpawnFlags: + * @G_SPAWN_DEFAULT: no flags, default behaviour + * @G_SPAWN_LEAVE_DESCRIPTORS_OPEN: the parent's open file descriptors will + * be inherited by the child; otherwise all descriptors except stdin, + * stdout and stderr will be closed before calling exec() in the child. + * @G_SPAWN_DO_NOT_REAP_CHILD: the child will not be automatically reaped; + * you must use g_child_watch_add() yourself (or call waitpid() or handle + * `SIGCHLD` yourself), or the child will become a zombie. + * @G_SPAWN_SEARCH_PATH: `argv[0]` need not be an absolute path, it will be + * looked for in the user's `PATH`. + * @G_SPAWN_STDOUT_TO_DEV_NULL: the child's standard output will be discarded, + * instead of going to the same location as the parent's standard output. + * @G_SPAWN_STDERR_TO_DEV_NULL: the child's standard error will be discarded. + * @G_SPAWN_CHILD_INHERITS_STDIN: the child will inherit the parent's standard + * input (by default, the child's standard input is attached to `/dev/null`). + * @G_SPAWN_FILE_AND_ARGV_ZERO: the first element of `argv` is the file to + * execute, while the remaining elements are the actual argument vector + * to pass to the file. Normally g_spawn_async_with_pipes() uses `argv[0]` + * as the file to execute, and passes all of `argv` to the child. + * @G_SPAWN_SEARCH_PATH_FROM_ENVP: if `argv[0]` is not an absolute path, + * it will be looked for in the `PATH` from the passed child environment. + * Since: 2.34 + * @G_SPAWN_CLOEXEC_PIPES: create all pipes with the `O_CLOEXEC` flag set. + * Since: 2.40 + * @G_SPAWN_CHILD_INHERITS_STDOUT: the child will inherit the parent's standard output. + * Since: 2.74 + * @G_SPAWN_CHILD_INHERITS_STDERR: the child will inherit the parent's standard error. + * Since: 2.74 + * @G_SPAWN_STDIN_FROM_DEV_NULL: the child's standard input is attached to `/dev/null`. + * Since: 2.74 + * + * Flags passed to g_spawn_sync(), g_spawn_async() and g_spawn_async_with_pipes(). + */ +typedef enum +{ + G_SPAWN_DEFAULT = 0, + G_SPAWN_LEAVE_DESCRIPTORS_OPEN = 1 << 0, + G_SPAWN_DO_NOT_REAP_CHILD = 1 << 1, + /* look for argv[0] in the path i.e. use execvp() */ + G_SPAWN_SEARCH_PATH = 1 << 2, + /* Dump output to /dev/null */ + G_SPAWN_STDOUT_TO_DEV_NULL = 1 << 3, + G_SPAWN_STDERR_TO_DEV_NULL = 1 << 4, + G_SPAWN_CHILD_INHERITS_STDIN = 1 << 5, + G_SPAWN_FILE_AND_ARGV_ZERO = 1 << 6, + G_SPAWN_SEARCH_PATH_FROM_ENVP = 1 << 7, + G_SPAWN_CLOEXEC_PIPES = 1 << 8, + + /** + * G_SPAWN_CHILD_INHERITS_STDOUT: + * + * The child will inherit the parent's standard output. + * + * Since: 2.74 + */ + G_SPAWN_CHILD_INHERITS_STDOUT = 1 << 9, + + /** + * G_SPAWN_CHILD_INHERITS_STDERR: + * + * The child will inherit the parent's standard error. + * + * Since: 2.74 + */ + G_SPAWN_CHILD_INHERITS_STDERR = 1 << 10, + + /** + * G_SPAWN_STDIN_FROM_DEV_NULL: + * + * The child's standard input is attached to `/dev/null`. + * + * Since: 2.74 + */ + G_SPAWN_STDIN_FROM_DEV_NULL = 1 << 11 +} GSpawnFlags; + +GLIB_AVAILABLE_IN_ALL +GQuark g_spawn_error_quark (void); +GLIB_AVAILABLE_IN_ALL +GQuark g_spawn_exit_error_quark (void); + +GLIB_AVAILABLE_IN_ALL +gboolean g_spawn_async (const gchar *working_directory, + gchar **argv, + gchar **envp, + GSpawnFlags flags, + GSpawnChildSetupFunc child_setup, + gpointer user_data, + GPid *child_pid, + GError **error); + + +/* Opens pipes for non-NULL standard_output, standard_input, standard_error, + * and returns the parent's end of the pipes. + */ +GLIB_AVAILABLE_IN_ALL +gboolean g_spawn_async_with_pipes (const gchar *working_directory, + gchar **argv, + gchar **envp, + GSpawnFlags flags, + GSpawnChildSetupFunc child_setup, + gpointer user_data, + GPid *child_pid, + gint *standard_input, + gint *standard_output, + gint *standard_error, + GError **error); + +GLIB_AVAILABLE_IN_2_68 +gboolean g_spawn_async_with_pipes_and_fds (const gchar *working_directory, + const gchar * const *argv, + const gchar * const *envp, + GSpawnFlags flags, + GSpawnChildSetupFunc child_setup, + gpointer user_data, + gint stdin_fd, + gint stdout_fd, + gint stderr_fd, + const gint *source_fds, + const gint *target_fds, + gsize n_fds, + GPid *child_pid_out, + gint *stdin_pipe_out, + gint *stdout_pipe_out, + gint *stderr_pipe_out, + GError **error); + +/* Lets you provide fds for stdin/stdout/stderr */ +GLIB_AVAILABLE_IN_2_58 +gboolean g_spawn_async_with_fds (const gchar *working_directory, + gchar **argv, + gchar **envp, + GSpawnFlags flags, + GSpawnChildSetupFunc child_setup, + gpointer user_data, + GPid *child_pid, + gint stdin_fd, + gint stdout_fd, + gint stderr_fd, + GError **error); + +/* If standard_output or standard_error are non-NULL, the full + * standard output or error of the command will be placed there. + */ + +GLIB_AVAILABLE_IN_ALL +gboolean g_spawn_sync (const gchar *working_directory, + gchar **argv, + gchar **envp, + GSpawnFlags flags, + GSpawnChildSetupFunc child_setup, + gpointer user_data, + gchar **standard_output, + gchar **standard_error, + gint *wait_status, + GError **error); + +GLIB_AVAILABLE_IN_ALL +gboolean g_spawn_command_line_sync (const gchar *command_line, + gchar **standard_output, + gchar **standard_error, + gint *wait_status, + GError **error); +GLIB_AVAILABLE_IN_ALL +gboolean g_spawn_command_line_async (const gchar *command_line, + GError **error); + +GLIB_AVAILABLE_IN_2_70 +gboolean g_spawn_check_wait_status (gint wait_status, + GError **error); + +GLIB_DEPRECATED_IN_2_70_FOR(g_spawn_check_wait_status) +gboolean g_spawn_check_exit_status (gint wait_status, + GError **error); + +GLIB_AVAILABLE_IN_ALL +void g_spawn_close_pid (GPid pid); + +G_END_DECLS + +#endif /* __G_SPAWN_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstdio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstdio.h new file mode 100644 index 0000000..4410298 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstdio.h @@ -0,0 +1,183 @@ +/* gstdio.h - GFilename wrappers for C library functions + * + * Copyright 2004 Tor Lillqvist + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_STDIO_H__ +#define __G_STDIO_H__ + +#include + +#include + +G_BEGIN_DECLS + +#if (defined (__MINGW64_VERSION_MAJOR) || defined (_MSC_VER)) && !defined(_WIN64) + +/* Make it clear that we mean the struct with 32-bit st_size and + * 32-bit st_*time fields as that is how the 32-bit GLib DLL normally + * has been compiled. If you get a compiler warning when calling + * g_stat(), do take it seriously and make sure that the type of + * struct stat the code in GLib fills in matches the struct the type + * of struct stat you pass to g_stat(). To avoid hassle, to get file + * attributes just use the GIO API instead which doesn't use struct + * stat. + * + * Sure, it would be nicer to use a struct with 64-bit st_size and + * 64-bit st_*time fields, but changing that now would break ABI. And + * in MinGW, a plain "struct stat" is the one with 32-bit st_size and + * st_*time fields. + */ + +typedef struct _stat32 GStatBuf; + +#elif defined(__MINGW64_VERSION_MAJOR) && defined(_WIN64) + +typedef struct _stat64 GStatBuf; + +#else + +typedef struct stat GStatBuf; + +#endif + +#if defined(G_OS_UNIX) && !defined(G_STDIO_WRAP_ON_UNIX) + +/* Just pass on to the system functions, so there's no potential for data + * format mismatches, especially with large file interfaces. + * A few functions can't be handled in this way, since they are not defined + * in a portable system header that we could include here. + * + * G_STDIO_WRAP_ON_UNIX is not public API and its behaviour is not guaranteed + * in future. + */ + +#ifndef __GTK_DOC_IGNORE__ +#define g_chmod chmod +#define g_open open +#define g_creat creat +#define g_rename rename +#define g_mkdir mkdir +#define g_stat stat +#define g_lstat lstat +#define g_remove remove +#define g_fopen fopen +#define g_freopen freopen +#define g_fsync fsync +#define g_utime utime +#endif + +GLIB_AVAILABLE_IN_ALL +int g_access (const gchar *filename, + int mode); + +GLIB_AVAILABLE_IN_ALL +int g_chdir (const gchar *path); + +GLIB_AVAILABLE_IN_ALL +int g_unlink (const gchar *filename); + +GLIB_AVAILABLE_IN_ALL +int g_rmdir (const gchar *filename); + +#else /* ! G_OS_UNIX */ + +/* Wrappers for C library functions that take pathname arguments. On + * Unix, the pathname is a file name as it literally is in the file + * system. On well-maintained systems with consistent users who know + * what they are doing and no exchange of files with others this would + * be a well-defined encoding, preferably UTF-8. On Windows, the + * pathname is always in UTF-8, even if that is not the on-disk + * encoding, and not the encoding accepted by the C library or Win32 + * API. + */ + +GLIB_AVAILABLE_IN_ALL +int g_access (const gchar *filename, + int mode); + +GLIB_AVAILABLE_IN_ALL +int g_chmod (const gchar *filename, + int mode); + +GLIB_AVAILABLE_IN_ALL +int g_open (const gchar *filename, + int flags, + int mode); + +GLIB_AVAILABLE_IN_ALL +int g_creat (const gchar *filename, + int mode); + +GLIB_AVAILABLE_IN_ALL +int g_rename (const gchar *oldfilename, + const gchar *newfilename); + +GLIB_AVAILABLE_IN_ALL +int g_mkdir (const gchar *filename, + int mode); + +GLIB_AVAILABLE_IN_ALL +int g_chdir (const gchar *path); + +GLIB_AVAILABLE_IN_ALL +int g_stat (const gchar *filename, + GStatBuf *buf); + +GLIB_AVAILABLE_IN_ALL +int g_lstat (const gchar *filename, + GStatBuf *buf); + +GLIB_AVAILABLE_IN_ALL +int g_unlink (const gchar *filename); + +GLIB_AVAILABLE_IN_ALL +int g_remove (const gchar *filename); + +GLIB_AVAILABLE_IN_ALL +int g_rmdir (const gchar *filename); + +GLIB_AVAILABLE_IN_ALL +FILE *g_fopen (const gchar *filename, + const gchar *mode); + +GLIB_AVAILABLE_IN_ALL +FILE *g_freopen (const gchar *filename, + const gchar *mode, + FILE *stream); + +GLIB_AVAILABLE_IN_2_64 +gint g_fsync (gint fd); + +struct utimbuf; /* Don't need the real definition of struct utimbuf when just + * including this header. + */ + +GLIB_AVAILABLE_IN_ALL +int g_utime (const gchar *filename, + struct utimbuf *utb); + +#endif /* G_OS_UNIX */ + +GLIB_AVAILABLE_IN_2_36 +gboolean g_close (gint fd, + GError **error); + +G_END_DECLS + +#endif /* __G_STDIO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstrfuncs.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstrfuncs.h new file mode 100644 index 0000000..37d2728 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstrfuncs.h @@ -0,0 +1,368 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_STRFUNCS_H__ +#define __G_STRFUNCS_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include + +G_BEGIN_DECLS + +/* Functions like the ones in that are not affected by locale. */ +typedef enum { + G_ASCII_ALNUM = 1 << 0, + G_ASCII_ALPHA = 1 << 1, + G_ASCII_CNTRL = 1 << 2, + G_ASCII_DIGIT = 1 << 3, + G_ASCII_GRAPH = 1 << 4, + G_ASCII_LOWER = 1 << 5, + G_ASCII_PRINT = 1 << 6, + G_ASCII_PUNCT = 1 << 7, + G_ASCII_SPACE = 1 << 8, + G_ASCII_UPPER = 1 << 9, + G_ASCII_XDIGIT = 1 << 10 +} GAsciiType; + +GLIB_VAR const guint16 * const g_ascii_table; + +#define g_ascii_isalnum(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_ALNUM) != 0) + +#define g_ascii_isalpha(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_ALPHA) != 0) + +#define g_ascii_iscntrl(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_CNTRL) != 0) + +#define g_ascii_isdigit(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_DIGIT) != 0) + +#define g_ascii_isgraph(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_GRAPH) != 0) + +#define g_ascii_islower(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_LOWER) != 0) + +#define g_ascii_isprint(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_PRINT) != 0) + +#define g_ascii_ispunct(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_PUNCT) != 0) + +#define g_ascii_isspace(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_SPACE) != 0) + +#define g_ascii_isupper(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_UPPER) != 0) + +#define g_ascii_isxdigit(c) \ + ((g_ascii_table[(guchar) (c)] & G_ASCII_XDIGIT) != 0) + +GLIB_AVAILABLE_IN_ALL +gchar g_ascii_tolower (gchar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gchar g_ascii_toupper (gchar c) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gint g_ascii_digit_value (gchar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gint g_ascii_xdigit_value (gchar c) G_GNUC_CONST; + +/* String utility functions that modify a string argument or + * return a constant string that must not be freed. + */ +#define G_STR_DELIMITERS "_-|> <." +GLIB_AVAILABLE_IN_ALL +gchar* g_strdelimit (gchar *string, + const gchar *delimiters, + gchar new_delimiter); +GLIB_AVAILABLE_IN_ALL +gchar* g_strcanon (gchar *string, + const gchar *valid_chars, + gchar substitutor); +GLIB_AVAILABLE_IN_ALL +const gchar * g_strerror (gint errnum) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +const gchar * g_strsignal (gint signum) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gchar * g_strreverse (gchar *string); +GLIB_AVAILABLE_IN_ALL +gsize g_strlcpy (gchar *dest, + const gchar *src, + gsize dest_size); +GLIB_AVAILABLE_IN_ALL +gsize g_strlcat (gchar *dest, + const gchar *src, + gsize dest_size); +GLIB_AVAILABLE_IN_ALL +gchar * g_strstr_len (const gchar *haystack, + gssize haystack_len, + const gchar *needle); +GLIB_AVAILABLE_IN_ALL +gchar * g_strrstr (const gchar *haystack, + const gchar *needle); +GLIB_AVAILABLE_IN_ALL +gchar * g_strrstr_len (const gchar *haystack, + gssize haystack_len, + const gchar *needle); + +GLIB_AVAILABLE_IN_ALL +gboolean g_str_has_suffix (const gchar *str, + const gchar *suffix); +GLIB_AVAILABLE_IN_ALL +gboolean g_str_has_prefix (const gchar *str, + const gchar *prefix); + +/* String to/from double conversion functions */ + +GLIB_AVAILABLE_IN_ALL +gdouble g_strtod (const gchar *nptr, + gchar **endptr); +GLIB_AVAILABLE_IN_ALL +gdouble g_ascii_strtod (const gchar *nptr, + gchar **endptr); +GLIB_AVAILABLE_IN_ALL +guint64 g_ascii_strtoull (const gchar *nptr, + gchar **endptr, + guint base); +GLIB_AVAILABLE_IN_ALL +gint64 g_ascii_strtoll (const gchar *nptr, + gchar **endptr, + guint base); +/* 29 bytes should enough for all possible values that + * g_ascii_dtostr can produce. + * Then add 10 for good measure */ +#define G_ASCII_DTOSTR_BUF_SIZE (29 + 10) +GLIB_AVAILABLE_IN_ALL +gchar * g_ascii_dtostr (gchar *buffer, + gint buf_len, + gdouble d); +GLIB_AVAILABLE_IN_ALL +gchar * g_ascii_formatd (gchar *buffer, + gint buf_len, + const gchar *format, + gdouble d); + +/* removes leading spaces */ +GLIB_AVAILABLE_IN_ALL +gchar* g_strchug (gchar *string); +/* removes trailing spaces */ +GLIB_AVAILABLE_IN_ALL +gchar* g_strchomp (gchar *string); +/* removes leading & trailing spaces */ +#define g_strstrip( string ) g_strchomp (g_strchug (string)) + +GLIB_AVAILABLE_IN_ALL +gint g_ascii_strcasecmp (const gchar *s1, + const gchar *s2); +GLIB_AVAILABLE_IN_ALL +gint g_ascii_strncasecmp (const gchar *s1, + const gchar *s2, + gsize n); +GLIB_AVAILABLE_IN_ALL +gchar* g_ascii_strdown (const gchar *str, + gssize len) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_ascii_strup (const gchar *str, + gssize len) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_2_40 +gboolean g_str_is_ascii (const gchar *str); + +GLIB_DEPRECATED +gint g_strcasecmp (const gchar *s1, + const gchar *s2); +GLIB_DEPRECATED +gint g_strncasecmp (const gchar *s1, + const gchar *s2, + guint n); +GLIB_DEPRECATED +gchar* g_strdown (gchar *string); +GLIB_DEPRECATED +gchar* g_strup (gchar *string); + + +/* String utility functions that return a newly allocated string which + * ought to be freed with g_free from the caller at some point. + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_strdup (const gchar *str) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_strdup_printf (const gchar *format, + ...) G_GNUC_PRINTF (1, 2) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_strdup_vprintf (const gchar *format, + va_list args) G_GNUC_PRINTF(1, 0) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_strndup (const gchar *str, + gsize n) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_strnfill (gsize length, + gchar fill_char) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_strconcat (const gchar *string1, + ...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_ALL +gchar* g_strjoin (const gchar *separator, + ...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED; + +/* Make a copy of a string interpreting C string -style escape + * sequences. Inverse of g_strescape. The recognized sequences are \b + * \f \n \r \t \\ \" and the octal format. + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_strcompress (const gchar *source) G_GNUC_MALLOC; + +/* Copy a string escaping nonprintable characters like in C strings. + * Inverse of g_strcompress. The exceptions parameter, if non-NULL, points + * to a string containing characters that are not to be escaped. + * + * Deprecated API: gchar* g_strescape (const gchar *source); + * Luckily this function wasn't used much, using NULL as second parameter + * provides mostly identical semantics. + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_strescape (const gchar *source, + const gchar *exceptions) G_GNUC_MALLOC; + +GLIB_DEPRECATED_IN_2_68_FOR (g_memdup2) +gpointer g_memdup (gconstpointer mem, + guint byte_size) G_GNUC_ALLOC_SIZE(2); + +GLIB_AVAILABLE_IN_2_68 +gpointer g_memdup2 (gconstpointer mem, + gsize byte_size) G_GNUC_ALLOC_SIZE(2); + +/* NULL terminated string arrays. + * g_strsplit(), g_strsplit_set() split up string into max_tokens tokens + * at delim and return a newly allocated string array. + * g_strjoinv() concatenates all of str_array's strings, sliding in an + * optional separator, the returned string is newly allocated. + * g_strfreev() frees the array itself and all of its strings. + * g_strdupv() copies a NULL-terminated array of strings + * g_strv_length() returns the length of a NULL-terminated array of strings + */ +typedef gchar** GStrv; +GLIB_AVAILABLE_IN_ALL +gchar** g_strsplit (const gchar *string, + const gchar *delimiter, + gint max_tokens); +GLIB_AVAILABLE_IN_ALL +gchar ** g_strsplit_set (const gchar *string, + const gchar *delimiters, + gint max_tokens); +GLIB_AVAILABLE_IN_ALL +gchar* g_strjoinv (const gchar *separator, + gchar **str_array) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +void g_strfreev (gchar **str_array); +GLIB_AVAILABLE_IN_ALL +gchar** g_strdupv (gchar **str_array); +GLIB_AVAILABLE_IN_ALL +guint g_strv_length (gchar **str_array); + +GLIB_AVAILABLE_IN_ALL +gchar* g_stpcpy (gchar *dest, + const char *src); + +GLIB_AVAILABLE_IN_2_40 +gchar * g_str_to_ascii (const gchar *str, + const gchar *from_locale); + +GLIB_AVAILABLE_IN_2_40 +gchar ** g_str_tokenize_and_fold (const gchar *string, + const gchar *translit_locale, + gchar ***ascii_alternates); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_str_match_string (const gchar *search_term, + const gchar *potential_hit, + gboolean accept_alternates); + +GLIB_AVAILABLE_IN_2_44 +gboolean g_strv_contains (const gchar * const *strv, + const gchar *str); + +GLIB_AVAILABLE_IN_2_60 +gboolean g_strv_equal (const gchar * const *strv1, + const gchar * const *strv2); + +/* Convenience ASCII string to number API */ + +/** + * GNumberParserError: + * @G_NUMBER_PARSER_ERROR_INVALID: String was not a valid number. + * @G_NUMBER_PARSER_ERROR_OUT_OF_BOUNDS: String was a number, but out of bounds. + * + * Error codes returned by functions converting a string to a number. + * + * Since: 2.54 + */ +typedef enum + { + G_NUMBER_PARSER_ERROR_INVALID, + G_NUMBER_PARSER_ERROR_OUT_OF_BOUNDS, + } GNumberParserError; + +/** + * G_NUMBER_PARSER_ERROR: + * + * Domain for errors returned by functions converting a string to a + * number. + * + * Since: 2.54 + */ +#define G_NUMBER_PARSER_ERROR (g_number_parser_error_quark ()) + +GLIB_AVAILABLE_IN_2_54 +GQuark g_number_parser_error_quark (void); + +GLIB_AVAILABLE_IN_2_54 +gboolean g_ascii_string_to_signed (const gchar *str, + guint base, + gint64 min, + gint64 max, + gint64 *out_num, + GError **error); + +GLIB_AVAILABLE_IN_2_54 +gboolean g_ascii_string_to_unsigned (const gchar *str, + guint base, + guint64 min, + guint64 max, + guint64 *out_num, + GError **error); + +G_END_DECLS + +#endif /* __G_STRFUNCS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstring.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstring.h new file mode 100644 index 0000000..17a7e3c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstring.h @@ -0,0 +1,194 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_STRING_H__ +#define __G_STRING_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include /* for G_CAN_INLINE */ + +G_BEGIN_DECLS + +typedef struct _GString GString; + +struct _GString +{ + gchar *str; + gsize len; + gsize allocated_len; +}; + +GLIB_AVAILABLE_IN_ALL +GString* g_string_new (const gchar *init); +GLIB_AVAILABLE_IN_ALL +GString* g_string_new_len (const gchar *init, + gssize len); +GLIB_AVAILABLE_IN_ALL +GString* g_string_sized_new (gsize dfl_size); +GLIB_AVAILABLE_IN_ALL +gchar* g_string_free (GString *string, + gboolean free_segment); +GLIB_AVAILABLE_IN_2_34 +GBytes* g_string_free_to_bytes (GString *string); +GLIB_AVAILABLE_IN_ALL +gboolean g_string_equal (const GString *v, + const GString *v2); +GLIB_AVAILABLE_IN_ALL +guint g_string_hash (const GString *str); +GLIB_AVAILABLE_IN_ALL +GString* g_string_assign (GString *string, + const gchar *rval); +GLIB_AVAILABLE_IN_ALL +GString* g_string_truncate (GString *string, + gsize len); +GLIB_AVAILABLE_IN_ALL +GString* g_string_set_size (GString *string, + gsize len); +GLIB_AVAILABLE_IN_ALL +GString* g_string_insert_len (GString *string, + gssize pos, + const gchar *val, + gssize len); +GLIB_AVAILABLE_IN_ALL +GString* g_string_append (GString *string, + const gchar *val); +GLIB_AVAILABLE_IN_ALL +GString* g_string_append_len (GString *string, + const gchar *val, + gssize len); +GLIB_AVAILABLE_IN_ALL +GString* g_string_append_c (GString *string, + gchar c); +GLIB_AVAILABLE_IN_ALL +GString* g_string_append_unichar (GString *string, + gunichar wc); +GLIB_AVAILABLE_IN_ALL +GString* g_string_prepend (GString *string, + const gchar *val); +GLIB_AVAILABLE_IN_ALL +GString* g_string_prepend_c (GString *string, + gchar c); +GLIB_AVAILABLE_IN_ALL +GString* g_string_prepend_unichar (GString *string, + gunichar wc); +GLIB_AVAILABLE_IN_ALL +GString* g_string_prepend_len (GString *string, + const gchar *val, + gssize len); +GLIB_AVAILABLE_IN_ALL +GString* g_string_insert (GString *string, + gssize pos, + const gchar *val); +GLIB_AVAILABLE_IN_ALL +GString* g_string_insert_c (GString *string, + gssize pos, + gchar c); +GLIB_AVAILABLE_IN_ALL +GString* g_string_insert_unichar (GString *string, + gssize pos, + gunichar wc); +GLIB_AVAILABLE_IN_ALL +GString* g_string_overwrite (GString *string, + gsize pos, + const gchar *val); +GLIB_AVAILABLE_IN_ALL +GString* g_string_overwrite_len (GString *string, + gsize pos, + const gchar *val, + gssize len); +GLIB_AVAILABLE_IN_ALL +GString* g_string_erase (GString *string, + gssize pos, + gssize len); +GLIB_AVAILABLE_IN_2_68 +guint g_string_replace (GString *string, + const gchar *find, + const gchar *replace, + guint limit); +GLIB_AVAILABLE_IN_ALL +GString* g_string_ascii_down (GString *string); +GLIB_AVAILABLE_IN_ALL +GString* g_string_ascii_up (GString *string); +GLIB_AVAILABLE_IN_ALL +void g_string_vprintf (GString *string, + const gchar *format, + va_list args) + G_GNUC_PRINTF(2, 0); +GLIB_AVAILABLE_IN_ALL +void g_string_printf (GString *string, + const gchar *format, + ...) G_GNUC_PRINTF (2, 3); +GLIB_AVAILABLE_IN_ALL +void g_string_append_vprintf (GString *string, + const gchar *format, + va_list args) + G_GNUC_PRINTF(2, 0); +GLIB_AVAILABLE_IN_ALL +void g_string_append_printf (GString *string, + const gchar *format, + ...) G_GNUC_PRINTF (2, 3); +GLIB_AVAILABLE_IN_ALL +GString* g_string_append_uri_escaped (GString *string, + const gchar *unescaped, + const gchar *reserved_chars_allowed, + gboolean allow_utf8); + +/* -- optimize g_strig_append_c --- */ +#ifdef G_CAN_INLINE +static inline GString* +g_string_append_c_inline (GString *gstring, + gchar c) +{ + if (gstring->len + 1 < gstring->allocated_len) + { + gstring->str[gstring->len++] = c; + gstring->str[gstring->len] = 0; + } + else + g_string_insert_c (gstring, -1, c); + return gstring; +} +#define g_string_append_c(gstr,c) g_string_append_c_inline (gstr, c) +#endif /* G_CAN_INLINE */ + + +GLIB_DEPRECATED +GString *g_string_down (GString *string); +GLIB_DEPRECATED +GString *g_string_up (GString *string); + +#define g_string_sprintf g_string_printf GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_string_printf) +#define g_string_sprintfa g_string_append_printf GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_string_append_printf) + +G_END_DECLS + +#endif /* __G_STRING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstringchunk.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstringchunk.h new file mode 100644 index 0000000..a79a4cb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstringchunk.h @@ -0,0 +1,59 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_STRINGCHUNK_H__ +#define __G_STRINGCHUNK_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GStringChunk GStringChunk; + +GLIB_AVAILABLE_IN_ALL +GStringChunk* g_string_chunk_new (gsize size); +GLIB_AVAILABLE_IN_ALL +void g_string_chunk_free (GStringChunk *chunk); +GLIB_AVAILABLE_IN_ALL +void g_string_chunk_clear (GStringChunk *chunk); +GLIB_AVAILABLE_IN_ALL +gchar* g_string_chunk_insert (GStringChunk *chunk, + const gchar *string); +GLIB_AVAILABLE_IN_ALL +gchar* g_string_chunk_insert_len (GStringChunk *chunk, + const gchar *string, + gssize len); +GLIB_AVAILABLE_IN_ALL +gchar* g_string_chunk_insert_const (GStringChunk *chunk, + const gchar *string); + +G_END_DECLS + +#endif /* __G_STRING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstrvbuilder.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstrvbuilder.h new file mode 100644 index 0000000..c8acbaa --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gstrvbuilder.h @@ -0,0 +1,69 @@ +/* + * Copyright © 2020 Canonical Ltd. + * Copyright © 2021 Alexandros Theodotou + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_STRVBUILDER_H__ +#define __G_STRVBUILDER_H__ + +#if !defined(__GLIB_H_INSIDE__) && !defined(GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/** + * GStrvBuilder: + * + * A helper object to build a %NULL-terminated string array + * by appending. See g_strv_builder_new(). + * + * Since: 2.68 + */ +typedef struct _GStrvBuilder GStrvBuilder; + +GLIB_AVAILABLE_IN_2_68 +GStrvBuilder *g_strv_builder_new (void); + +GLIB_AVAILABLE_IN_2_68 +void g_strv_builder_unref (GStrvBuilder *builder); + +GLIB_AVAILABLE_IN_2_68 +GStrvBuilder *g_strv_builder_ref (GStrvBuilder *builder); + +GLIB_AVAILABLE_IN_2_68 +void g_strv_builder_add (GStrvBuilder *builder, + const char *value); + +GLIB_AVAILABLE_IN_2_70 +void g_strv_builder_addv (GStrvBuilder *builder, + const char **value); + +GLIB_AVAILABLE_IN_2_70 +void g_strv_builder_add_many (GStrvBuilder *builder, + ...) G_GNUC_NULL_TERMINATED; + +GLIB_AVAILABLE_IN_2_68 +GStrv g_strv_builder_end (GStrvBuilder *builder); + +G_END_DECLS + +#endif /* __G_STRVBUILDER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtestutils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtestutils.h new file mode 100644 index 0000000..4e38eb4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtestutils.h @@ -0,0 +1,710 @@ +/* GLib testing utilities + * Copyright (C) 2007 Imendio AB + * Authors: Tim Janik + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __G_TEST_UTILS_H__ +#define __G_TEST_UTILS_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct GTestCase GTestCase; +typedef struct GTestSuite GTestSuite; +typedef void (*GTestFunc) (void); +typedef void (*GTestDataFunc) (gconstpointer user_data); +typedef void (*GTestFixtureFunc) (gpointer fixture, + gconstpointer user_data); + +/* assertion API */ +#define g_assert_cmpstr(s1, cmp, s2) G_STMT_START { \ + const char *__s1 = (s1), *__s2 = (s2); \ + if (g_strcmp0 (__s1, __s2) cmp 0) ; else \ + g_assertion_message_cmpstr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #s1 " " #cmp " " #s2, __s1, #cmp, __s2); \ + } G_STMT_END +#define g_assert_cmpint(n1, cmp, n2) G_STMT_START { \ + gint64 __n1 = (n1), __n2 = (n2); \ + if (__n1 cmp __n2) ; else \ + g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #n1 " " #cmp " " #n2, (long double) __n1, #cmp, (long double) __n2, 'i'); \ + } G_STMT_END +#define g_assert_cmpuint(n1, cmp, n2) G_STMT_START { \ + guint64 __n1 = (n1), __n2 = (n2); \ + if (__n1 cmp __n2) ; else \ + g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #n1 " " #cmp " " #n2, (long double) __n1, #cmp, (long double) __n2, 'i'); \ + } G_STMT_END +#define g_assert_cmphex(n1, cmp, n2) G_STMT_START {\ + guint64 __n1 = (n1), __n2 = (n2); \ + if (__n1 cmp __n2) ; else \ + g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #n1 " " #cmp " " #n2, (long double) __n1, #cmp, (long double) __n2, 'x'); \ + } G_STMT_END +#define g_assert_cmpfloat(n1,cmp,n2) G_STMT_START { \ + long double __n1 = (long double) (n1), __n2 = (long double) (n2); \ + if (__n1 cmp __n2) ; else \ + g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #n1 " " #cmp " " #n2, (long double) __n1, #cmp, (long double) __n2, 'f'); \ + } G_STMT_END +#define g_assert_cmpfloat_with_epsilon(n1,n2,epsilon) \ + G_STMT_START { \ + double __n1 = (n1), __n2 = (n2), __epsilon = (epsilon); \ + if (G_APPROX_VALUE (__n1, __n2, __epsilon)) ; else \ + g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #n1 " == " #n2 " (+/- " #epsilon ")", __n1, "==", __n2, 'f'); \ + } G_STMT_END +#define g_assert_cmpmem(m1, l1, m2, l2) G_STMT_START {\ + gconstpointer __m1 = m1, __m2 = m2; \ + int __l1 = l1, __l2 = l2; \ + if (__l1 != 0 && __m1 == NULL) \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "assertion failed (" #l1 " == 0 || " #m1 " != NULL)"); \ + else if (__l2 != 0 && __m2 == NULL) \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "assertion failed (" #l2 " == 0 || " #m2 " != NULL)"); \ + else if (__l1 != __l2) \ + g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #l1 " (len(" #m1 ")) == " #l2 " (len(" #m2 "))", \ + (long double) __l1, "==", (long double) __l2, 'i'); \ + else if (__l1 != 0 && __m2 != NULL && memcmp (__m1, __m2, __l1) != 0) \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "assertion failed (" #m1 " == " #m2 ")"); \ + } G_STMT_END +#define g_assert_cmpvariant(v1, v2) \ + G_STMT_START \ + { \ + GVariant *__v1 = (v1), *__v2 = (v2); \ + if (!g_variant_equal (__v1, __v2)) \ + { \ + gchar *__s1, *__s2, *__msg; \ + __s1 = g_variant_print (__v1, TRUE); \ + __s2 = g_variant_print (__v2, TRUE); \ + __msg = g_strdup_printf ("assertion failed (" #v1 " == " #v2 "): %s does not equal %s", __s1, __s2); \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \ + g_free (__s1); \ + g_free (__s2); \ + g_free (__msg); \ + } \ + } \ + G_STMT_END +#define g_assert_cmpstrv(strv1, strv2) \ + G_STMT_START \ + { \ + const char * const *__strv1 = (const char * const *) (strv1); \ + const char * const *__strv2 = (const char * const *) (strv2); \ + if (!__strv1 || !__strv2) \ + { \ + if (__strv1) \ + { \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "assertion failed (" #strv1 " == " #strv2 "): " #strv2 " is NULL, but " #strv1 " is not"); \ + } \ + else if (__strv2) \ + { \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "assertion failed (" #strv1 " == " #strv2 "): " #strv1 " is NULL, but " #strv2 " is not"); \ + } \ + } \ + else \ + { \ + guint __l1 = g_strv_length ((char **) __strv1); \ + guint __l2 = g_strv_length ((char **) __strv2); \ + if (__l1 != __l2) \ + { \ + char *__msg; \ + __msg = g_strdup_printf ("assertion failed (" #strv1 " == " #strv2 "): length %u does not equal length %u", __l1, __l2); \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \ + g_free (__msg); \ + } \ + else \ + { \ + guint __i; \ + for (__i = 0; __i < __l1; __i++) \ + { \ + if (g_strcmp0 (__strv1[__i], __strv2[__i]) != 0) \ + { \ + g_assertion_message_cmpstrv (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #strv1 " == " #strv2, \ + __strv1, __strv2, __i); \ + } \ + } \ + } \ + } \ + } \ + G_STMT_END +#define g_assert_no_errno(expr) G_STMT_START { \ + int __ret, __errsv; \ + errno = 0; \ + __ret = expr; \ + __errsv = errno; \ + if (__ret < 0) \ + { \ + gchar *__msg; \ + __msg = g_strdup_printf ("assertion failed (" #expr " >= 0): errno %i: %s", __errsv, g_strerror (__errsv)); \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \ + g_free (__msg); \ + } \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_66 +#define g_assert_no_error(err) G_STMT_START { \ + if (err) \ + g_assertion_message_error (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #err, err, 0, 0); \ + } G_STMT_END +#define g_assert_error(err, dom, c) G_STMT_START { \ + if (!err || (err)->domain != dom || (err)->code != c) \ + g_assertion_message_error (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #err, err, dom, c); \ + } G_STMT_END +#define g_assert_true(expr) G_STMT_START { \ + if G_LIKELY (expr) ; else \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "'" #expr "' should be TRUE"); \ + } G_STMT_END +#define g_assert_false(expr) G_STMT_START { \ + if G_LIKELY (!(expr)) ; else \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "'" #expr "' should be FALSE"); \ + } G_STMT_END + +/* Use nullptr in C++ to catch misuse of these macros. */ +#if defined(__cplusplus) && __cplusplus >= 201100L +#define g_assert_null(expr) G_STMT_START { if G_LIKELY ((expr) == nullptr) ; else \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "'" #expr "' should be nullptr"); \ + } G_STMT_END +#define g_assert_nonnull(expr) G_STMT_START { \ + if G_LIKELY ((expr) != nullptr) ; else \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "'" #expr "' should not be nullptr"); \ + } G_STMT_END +#else /* not C++ */ +#define g_assert_null(expr) G_STMT_START { if G_LIKELY ((expr) == NULL) ; else \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "'" #expr "' should be NULL"); \ + } G_STMT_END +#define g_assert_nonnull(expr) G_STMT_START { \ + if G_LIKELY ((expr) != NULL) ; else \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "'" #expr "' should not be NULL"); \ + } G_STMT_END +#endif + +#ifdef G_DISABLE_ASSERT +/* https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/Other-Builtins.html#index-_005f_005fbuiltin_005funreachable + * GCC 5 is not a strict lower bound for versions of GCC which provide __builtin_unreachable(). */ +#if __GNUC__ >= 5 || g_macro__has_builtin(__builtin_unreachable) +#define g_assert_not_reached() G_STMT_START { (void) 0; __builtin_unreachable (); } G_STMT_END +#elif defined (_MSC_VER) +#define g_assert_not_reached() G_STMT_START { (void) 0; __assume (0); } G_STMT_END +#else /* if __builtin_unreachable() is not supported: */ +#define g_assert_not_reached() G_STMT_START { (void) 0; } G_STMT_END +#endif + +#define g_assert(expr) G_STMT_START { (void) 0; } G_STMT_END +#else /* !G_DISABLE_ASSERT */ +#define g_assert_not_reached() G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END +#define g_assert(expr) G_STMT_START { \ + if G_LIKELY (expr) ; else \ + g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #expr); \ + } G_STMT_END +#endif /* !G_DISABLE_ASSERT */ + +GLIB_AVAILABLE_IN_ALL +int g_strcmp0 (const char *str1, + const char *str2); + +/* report performance results */ +GLIB_AVAILABLE_IN_ALL +void g_test_minimized_result (double minimized_quantity, + const char *format, + ...) G_GNUC_PRINTF (2, 3); +GLIB_AVAILABLE_IN_ALL +void g_test_maximized_result (double maximized_quantity, + const char *format, + ...) G_GNUC_PRINTF (2, 3); + +/* initialize testing framework */ +GLIB_AVAILABLE_IN_ALL +void g_test_init (int *argc, + char ***argv, + ...) G_GNUC_NULL_TERMINATED; + +/** + * G_TEST_OPTION_ISOLATE_DIRS: + * + * Creates a unique temporary directory for each unit test and uses + * g_set_user_dirs() to set XDG directories to point into subdirectories of it + * for the duration of the unit test. The directory tree is cleaned up after the + * test finishes successfully. Note that this doesn’t take effect until + * g_test_run() is called, so calls to (for example) g_get_user_home_dir() will + * return the system-wide value when made in a test program’s main() function. + * + * The following functions will return subdirectories of the temporary directory + * when this option is used. The specific subdirectory paths in use are not + * guaranteed to be stable API — always use a getter function to retrieve them. + * + * - g_get_home_dir() + * - g_get_user_cache_dir() + * - g_get_system_config_dirs() + * - g_get_user_config_dir() + * - g_get_system_data_dirs() + * - g_get_user_data_dir() + * - g_get_user_state_dir() + * - g_get_user_runtime_dir() + * + * The subdirectories may not be created by the test harness; as with normal + * calls to functions like g_get_user_cache_dir(), the caller must be prepared + * to create the directory if it doesn’t exist. + * + * Since: 2.60 + */ +#define G_TEST_OPTION_ISOLATE_DIRS "isolate_dirs" + +/* While we discourage its use, g_assert() is often used in unit tests + * (especially in legacy code). g_assert_*() should really be used instead. + * g_assert() can be disabled at client program compile time, which can render + * tests useless. Highlight that to the user. */ +#ifdef G_DISABLE_ASSERT +#if defined(G_HAVE_ISO_VARARGS) +#define g_test_init(argc, argv, ...) \ + G_STMT_START { \ + g_printerr ("Tests were compiled with G_DISABLE_ASSERT and are likely no-ops. Aborting.\n"); \ + exit (1); \ + } G_STMT_END +#elif defined(G_HAVE_GNUC_VARARGS) +#define g_test_init(argc, argv...) \ + G_STMT_START { \ + g_printerr ("Tests were compiled with G_DISABLE_ASSERT and are likely no-ops. Aborting.\n"); \ + exit (1); \ + } G_STMT_END +#else /* no varargs */ + /* do nothing */ +#endif /* varargs support */ +#endif /* G_DISABLE_ASSERT */ + +/* query testing framework config */ +#define g_test_initialized() (g_test_config_vars->test_initialized) +#define g_test_quick() (g_test_config_vars->test_quick) +#define g_test_slow() (!g_test_config_vars->test_quick) +#define g_test_thorough() (!g_test_config_vars->test_quick) +#define g_test_perf() (g_test_config_vars->test_perf) +#define g_test_verbose() (g_test_config_vars->test_verbose) +#define g_test_quiet() (g_test_config_vars->test_quiet) +#define g_test_undefined() (g_test_config_vars->test_undefined) +GLIB_AVAILABLE_IN_2_38 +gboolean g_test_subprocess (void); + +/* run all tests under toplevel suite (path: /) */ +GLIB_AVAILABLE_IN_ALL +int g_test_run (void); +/* hook up a test functions under test path */ +GLIB_AVAILABLE_IN_ALL +void g_test_add_func (const char *testpath, + GTestFunc test_func); + +GLIB_AVAILABLE_IN_ALL +void g_test_add_data_func (const char *testpath, + gconstpointer test_data, + GTestDataFunc test_func); + +GLIB_AVAILABLE_IN_2_34 +void g_test_add_data_func_full (const char *testpath, + gpointer test_data, + GTestDataFunc test_func, + GDestroyNotify data_free_func); + +/* tell about currently run test */ +GLIB_AVAILABLE_IN_2_68 +const char * g_test_get_path (void); + +/* tell about failure */ +GLIB_AVAILABLE_IN_2_30 +void g_test_fail (void); +GLIB_AVAILABLE_IN_2_70 +void g_test_fail_printf (const char *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_2_38 +void g_test_incomplete (const gchar *msg); +GLIB_AVAILABLE_IN_2_70 +void g_test_incomplete_printf (const char *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_2_38 +void g_test_skip (const gchar *msg); +GLIB_AVAILABLE_IN_2_70 +void g_test_skip_printf (const char *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_2_38 +gboolean g_test_failed (void); +GLIB_AVAILABLE_IN_2_38 +void g_test_set_nonfatal_assertions (void); + +/** + * g_test_add: + * @testpath: The test path for a new test case. + * @Fixture: The type of a fixture data structure. + * @tdata: Data argument for the test functions. + * @fsetup: The function to set up the fixture data. + * @ftest: The actual test function. + * @fteardown: The function to tear down the fixture data. + * + * Hook up a new test case at @testpath, similar to g_test_add_func(). + * A fixture data structure with setup and teardown functions may be provided, + * similar to g_test_create_case(). + * + * g_test_add() is implemented as a macro, so that the fsetup(), ftest() and + * fteardown() callbacks can expect a @Fixture pointer as their first argument + * in a type safe manner. They otherwise have type #GTestFixtureFunc. + * + * Since: 2.16 + */ +#define g_test_add(testpath, Fixture, tdata, fsetup, ftest, fteardown) \ + G_STMT_START { \ + void (*add_vtable) (const char*, \ + gsize, \ + gconstpointer, \ + void (*) (Fixture*, gconstpointer), \ + void (*) (Fixture*, gconstpointer), \ + void (*) (Fixture*, gconstpointer)) = (void (*) (const gchar *, gsize, gconstpointer, void (*) (Fixture*, gconstpointer), void (*) (Fixture*, gconstpointer), void (*) (Fixture*, gconstpointer))) g_test_add_vtable; \ + add_vtable \ + (testpath, sizeof (Fixture), tdata, fsetup, ftest, fteardown); \ + } G_STMT_END + +/* add test messages to the test report */ +GLIB_AVAILABLE_IN_ALL +void g_test_message (const char *format, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_ALL +void g_test_bug_base (const char *uri_pattern); +GLIB_AVAILABLE_IN_ALL +void g_test_bug (const char *bug_uri_snippet); +GLIB_AVAILABLE_IN_2_62 +void g_test_summary (const char *summary); +/* measure test timings */ +GLIB_AVAILABLE_IN_ALL +void g_test_timer_start (void); +GLIB_AVAILABLE_IN_ALL +double g_test_timer_elapsed (void); /* elapsed seconds */ +GLIB_AVAILABLE_IN_ALL +double g_test_timer_last (void); /* repeat last elapsed() result */ + +/* automatically g_free or g_object_unref upon teardown */ +GLIB_AVAILABLE_IN_ALL +void g_test_queue_free (gpointer gfree_pointer); +GLIB_AVAILABLE_IN_ALL +void g_test_queue_destroy (GDestroyNotify destroy_func, + gpointer destroy_data); +#define g_test_queue_unref(gobject) g_test_queue_destroy (g_object_unref, gobject) + +/** + * GTestTrapFlags: + * @G_TEST_TRAP_DEFAULT: Default behaviour. Since: 2.74 + * @G_TEST_TRAP_SILENCE_STDOUT: Redirect stdout of the test child to + * `/dev/null` so it cannot be observed on the console during test + * runs. The actual output is still captured though to allow later + * tests with g_test_trap_assert_stdout(). + * @G_TEST_TRAP_SILENCE_STDERR: Redirect stderr of the test child to + * `/dev/null` so it cannot be observed on the console during test + * runs. The actual output is still captured though to allow later + * tests with g_test_trap_assert_stderr(). + * @G_TEST_TRAP_INHERIT_STDIN: If this flag is given, stdin of the + * child process is shared with stdin of its parent process. + * It is redirected to `/dev/null` otherwise. + * + * Test traps are guards around forked tests. + * These flags determine what traps to set. + * + * Deprecated: 2.38: #GTestTrapFlags is used only with g_test_trap_fork(), + * which is deprecated. g_test_trap_subprocess() uses + * #GTestSubprocessFlags. + */ +typedef enum { + G_TEST_TRAP_DEFAULT GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_TEST_TRAP_SILENCE_STDOUT = 1 << 7, + G_TEST_TRAP_SILENCE_STDERR = 1 << 8, + G_TEST_TRAP_INHERIT_STDIN = 1 << 9 +} GTestTrapFlags GLIB_DEPRECATED_TYPE_IN_2_38_FOR(GTestSubprocessFlags); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +GLIB_DEPRECATED_IN_2_38_FOR (g_test_trap_subprocess) +gboolean g_test_trap_fork (guint64 usec_timeout, + GTestTrapFlags test_trap_flags); + +G_GNUC_END_IGNORE_DEPRECATIONS + +typedef enum { + G_TEST_SUBPROCESS_DEFAULT GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_TEST_SUBPROCESS_INHERIT_STDIN = 1 << 0, + G_TEST_SUBPROCESS_INHERIT_STDOUT = 1 << 1, + G_TEST_SUBPROCESS_INHERIT_STDERR = 1 << 2 +} GTestSubprocessFlags; + +GLIB_AVAILABLE_IN_2_38 +void g_test_trap_subprocess (const char *test_path, + guint64 usec_timeout, + GTestSubprocessFlags test_flags); + +GLIB_AVAILABLE_IN_ALL +gboolean g_test_trap_has_passed (void); +GLIB_AVAILABLE_IN_ALL +gboolean g_test_trap_reached_timeout (void); +#define g_test_trap_assert_passed() g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 0, 0) +#define g_test_trap_assert_failed() g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 1, 0) +#define g_test_trap_assert_stdout(soutpattern) g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 2, soutpattern) +#define g_test_trap_assert_stdout_unmatched(soutpattern) g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 3, soutpattern) +#define g_test_trap_assert_stderr(serrpattern) g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 4, serrpattern) +#define g_test_trap_assert_stderr_unmatched(serrpattern) g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 5, serrpattern) + +/* provide seed-able random numbers for tests */ +#define g_test_rand_bit() (0 != (g_test_rand_int() & (1 << 15))) +GLIB_AVAILABLE_IN_ALL +gint32 g_test_rand_int (void); +GLIB_AVAILABLE_IN_ALL +gint32 g_test_rand_int_range (gint32 begin, + gint32 end); +GLIB_AVAILABLE_IN_ALL +double g_test_rand_double (void); +GLIB_AVAILABLE_IN_ALL +double g_test_rand_double_range (double range_start, + double range_end); + +/* + * semi-internal API: non-documented symbols with stable ABI. You + * should use the non-internal helper macros instead. However, for + * compatibility reason, you may use this semi-internal API. + */ +GLIB_AVAILABLE_IN_ALL +GTestCase* g_test_create_case (const char *test_name, + gsize data_size, + gconstpointer test_data, + GTestFixtureFunc data_setup, + GTestFixtureFunc data_test, + GTestFixtureFunc data_teardown); +GLIB_AVAILABLE_IN_ALL +GTestSuite* g_test_create_suite (const char *suite_name); +GLIB_AVAILABLE_IN_ALL +GTestSuite* g_test_get_root (void); +GLIB_AVAILABLE_IN_ALL +void g_test_suite_add (GTestSuite *suite, + GTestCase *test_case); +GLIB_AVAILABLE_IN_ALL +void g_test_suite_add_suite (GTestSuite *suite, + GTestSuite *nestedsuite); +GLIB_AVAILABLE_IN_ALL +int g_test_run_suite (GTestSuite *suite); + +GLIB_AVAILABLE_IN_2_70 +void g_test_case_free (GTestCase *test_case); + +GLIB_AVAILABLE_IN_2_70 +void g_test_suite_free (GTestSuite *suite); + +GLIB_AVAILABLE_IN_ALL +void g_test_trap_assertions (const char *domain, + const char *file, + int line, + const char *func, + guint64 assertion_flags, /* 0-pass, 1-fail, 2-outpattern, 4-errpattern */ + const char *pattern); +GLIB_AVAILABLE_IN_ALL +void g_assertion_message (const char *domain, + const char *file, + int line, + const char *func, + const char *message) G_ANALYZER_NORETURN; +GLIB_AVAILABLE_IN_ALL +G_NORETURN +void g_assertion_message_expr (const char *domain, + const char *file, + int line, + const char *func, + const char *expr); +GLIB_AVAILABLE_IN_ALL +void g_assertion_message_cmpstr (const char *domain, + const char *file, + int line, + const char *func, + const char *expr, + const char *arg1, + const char *cmp, + const char *arg2) G_ANALYZER_NORETURN; + +GLIB_AVAILABLE_IN_2_68 +void g_assertion_message_cmpstrv (const char *domain, + const char *file, + int line, + const char *func, + const char *expr, + const char * const *arg1, + const char * const *arg2, + gsize first_wrong_idx) G_ANALYZER_NORETURN; +GLIB_AVAILABLE_IN_ALL +void g_assertion_message_cmpnum (const char *domain, + const char *file, + int line, + const char *func, + const char *expr, + long double arg1, + const char *cmp, + long double arg2, + char numtype) G_ANALYZER_NORETURN; +GLIB_AVAILABLE_IN_ALL +void g_assertion_message_error (const char *domain, + const char *file, + int line, + const char *func, + const char *expr, + const GError *error, + GQuark error_domain, + int error_code) G_ANALYZER_NORETURN; +GLIB_AVAILABLE_IN_ALL +void g_test_add_vtable (const char *testpath, + gsize data_size, + gconstpointer test_data, + GTestFixtureFunc data_setup, + GTestFixtureFunc data_test, + GTestFixtureFunc data_teardown); +typedef struct { + gboolean test_initialized; + gboolean test_quick; /* disable thorough tests */ + gboolean test_perf; /* run performance tests */ + gboolean test_verbose; /* extra info */ + gboolean test_quiet; /* reduce output */ + gboolean test_undefined; /* run tests that are meant to assert */ +} GTestConfig; +GLIB_VAR const GTestConfig * const g_test_config_vars; + +/* internal logging API */ +typedef enum { + G_TEST_RUN_SUCCESS, + G_TEST_RUN_SKIPPED, + G_TEST_RUN_FAILURE, + G_TEST_RUN_INCOMPLETE +} GTestResult; + +typedef enum { + G_TEST_LOG_NONE, + G_TEST_LOG_ERROR, /* s:msg */ + G_TEST_LOG_START_BINARY, /* s:binaryname s:seed */ + G_TEST_LOG_LIST_CASE, /* s:testpath */ + G_TEST_LOG_SKIP_CASE, /* s:testpath */ + G_TEST_LOG_START_CASE, /* s:testpath */ + G_TEST_LOG_STOP_CASE, /* d:status d:nforks d:elapsed */ + G_TEST_LOG_MIN_RESULT, /* s:blurb d:result */ + G_TEST_LOG_MAX_RESULT, /* s:blurb d:result */ + G_TEST_LOG_MESSAGE, /* s:blurb */ + G_TEST_LOG_START_SUITE, + G_TEST_LOG_STOP_SUITE +} GTestLogType; + +typedef struct { + GTestLogType log_type; + guint n_strings; + gchar **strings; /* NULL terminated */ + guint n_nums; + long double *nums; +} GTestLogMsg; +typedef struct { + /*< private >*/ + GString *data; + GSList *msgs; +} GTestLogBuffer; + +GLIB_AVAILABLE_IN_ALL +const char* g_test_log_type_name (GTestLogType log_type); +GLIB_AVAILABLE_IN_ALL +GTestLogBuffer* g_test_log_buffer_new (void); +GLIB_AVAILABLE_IN_ALL +void g_test_log_buffer_free (GTestLogBuffer *tbuffer); +GLIB_AVAILABLE_IN_ALL +void g_test_log_buffer_push (GTestLogBuffer *tbuffer, + guint n_bytes, + const guint8 *bytes); +GLIB_AVAILABLE_IN_ALL +GTestLogMsg* g_test_log_buffer_pop (GTestLogBuffer *tbuffer); +GLIB_AVAILABLE_IN_ALL +void g_test_log_msg_free (GTestLogMsg *tmsg); + +/** + * GTestLogFatalFunc: + * @log_domain: the log domain of the message + * @log_level: the log level of the message (including the fatal and recursion flags) + * @message: the message to process + * @user_data: user data, set in g_test_log_set_fatal_handler() + * + * Specifies the prototype of fatal log handler functions. + * + * Returns: %TRUE if the program should abort, %FALSE otherwise + * + * Since: 2.22 + */ +typedef gboolean (*GTestLogFatalFunc) (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data); +GLIB_AVAILABLE_IN_ALL +void +g_test_log_set_fatal_handler (GTestLogFatalFunc log_func, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_34 +void g_test_expect_message (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *pattern); +GLIB_AVAILABLE_IN_2_34 +void g_test_assert_expected_messages_internal (const char *domain, + const char *file, + int line, + const char *func); + +typedef enum +{ + G_TEST_DIST, + G_TEST_BUILT +} GTestFileType; + +GLIB_AVAILABLE_IN_2_38 +gchar * g_test_build_filename (GTestFileType file_type, + const gchar *first_path, + ...) G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_2_38 +const gchar *g_test_get_dir (GTestFileType file_type); +GLIB_AVAILABLE_IN_2_38 +const gchar *g_test_get_filename (GTestFileType file_type, + const gchar *first_path, + ...) G_GNUC_NULL_TERMINATED; + +#define g_test_assert_expected_messages() g_test_assert_expected_messages_internal (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC) + +G_END_DECLS + +#endif /* __G_TEST_UTILS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gthread.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gthread.h new file mode 100644 index 0000000..5a8fc5f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gthread.h @@ -0,0 +1,603 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_THREAD_H__ +#define __G_THREAD_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +#define G_THREAD_ERROR g_thread_error_quark () +GLIB_AVAILABLE_IN_ALL +GQuark g_thread_error_quark (void); + +typedef enum +{ + G_THREAD_ERROR_AGAIN /* Resource temporarily unavailable */ +} GThreadError; + +typedef gpointer (*GThreadFunc) (gpointer user_data); + +typedef struct _GThread GThread; + +typedef union _GMutex GMutex; +typedef struct _GRecMutex GRecMutex; +typedef struct _GRWLock GRWLock; +typedef struct _GCond GCond; +typedef struct _GPrivate GPrivate; +typedef struct _GOnce GOnce; + +union _GMutex +{ + /*< private >*/ + gpointer p; + guint i[2]; +}; + +struct _GRWLock +{ + /*< private >*/ + gpointer p; + guint i[2]; +}; + +struct _GCond +{ + /*< private >*/ + gpointer p; + guint i[2]; +}; + +struct _GRecMutex +{ + /*< private >*/ + gpointer p; + guint i[2]; +}; + +#define G_PRIVATE_INIT(notify) { NULL, (notify), { NULL, NULL } } +struct _GPrivate +{ + /*< private >*/ + gpointer p; + GDestroyNotify notify; + gpointer future[2]; +}; + +typedef enum +{ + G_ONCE_STATUS_NOTCALLED, + G_ONCE_STATUS_PROGRESS, + G_ONCE_STATUS_READY +} GOnceStatus; + +#define G_ONCE_INIT { G_ONCE_STATUS_NOTCALLED, NULL } +struct _GOnce +{ + volatile GOnceStatus status; + volatile gpointer retval; +}; + +#define G_LOCK_NAME(name) g__ ## name ## _lock +#define G_LOCK_DEFINE_STATIC(name) static G_LOCK_DEFINE (name) +#define G_LOCK_DEFINE(name) GMutex G_LOCK_NAME (name) +#define G_LOCK_EXTERN(name) extern GMutex G_LOCK_NAME (name) + +#ifdef G_DEBUG_LOCKS +# define G_LOCK(name) G_STMT_START{ \ + g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \ + "file %s: line %d (%s): locking: %s ", \ + __FILE__, __LINE__, G_STRFUNC, \ + #name); \ + g_mutex_lock (&G_LOCK_NAME (name)); \ + }G_STMT_END +# define G_UNLOCK(name) G_STMT_START{ \ + g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \ + "file %s: line %d (%s): unlocking: %s ", \ + __FILE__, __LINE__, G_STRFUNC, \ + #name); \ + g_mutex_unlock (&G_LOCK_NAME (name)); \ + }G_STMT_END +# define G_TRYLOCK(name) \ + (g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \ + "file %s: line %d (%s): try locking: %s ", \ + __FILE__, __LINE__, G_STRFUNC, \ + #name), g_mutex_trylock (&G_LOCK_NAME (name))) +#else /* !G_DEBUG_LOCKS */ +# define G_LOCK(name) g_mutex_lock (&G_LOCK_NAME (name)) +# define G_UNLOCK(name) g_mutex_unlock (&G_LOCK_NAME (name)) +# define G_TRYLOCK(name) g_mutex_trylock (&G_LOCK_NAME (name)) +#endif /* !G_DEBUG_LOCKS */ + +GLIB_AVAILABLE_IN_2_32 +GThread * g_thread_ref (GThread *thread); +GLIB_AVAILABLE_IN_2_32 +void g_thread_unref (GThread *thread); +GLIB_AVAILABLE_IN_2_32 +GThread * g_thread_new (const gchar *name, + GThreadFunc func, + gpointer data); +GLIB_AVAILABLE_IN_2_32 +GThread * g_thread_try_new (const gchar *name, + GThreadFunc func, + gpointer data, + GError **error); +GLIB_AVAILABLE_IN_ALL +GThread * g_thread_self (void); +GLIB_AVAILABLE_IN_ALL +void g_thread_exit (gpointer retval); +GLIB_AVAILABLE_IN_ALL +gpointer g_thread_join (GThread *thread); +GLIB_AVAILABLE_IN_ALL +void g_thread_yield (void); + + +GLIB_AVAILABLE_IN_2_32 +void g_mutex_init (GMutex *mutex); +GLIB_AVAILABLE_IN_2_32 +void g_mutex_clear (GMutex *mutex); +GLIB_AVAILABLE_IN_ALL +void g_mutex_lock (GMutex *mutex); +GLIB_AVAILABLE_IN_ALL +gboolean g_mutex_trylock (GMutex *mutex); +GLIB_AVAILABLE_IN_ALL +void g_mutex_unlock (GMutex *mutex); + +GLIB_AVAILABLE_IN_2_32 +void g_rw_lock_init (GRWLock *rw_lock); +GLIB_AVAILABLE_IN_2_32 +void g_rw_lock_clear (GRWLock *rw_lock); +GLIB_AVAILABLE_IN_2_32 +void g_rw_lock_writer_lock (GRWLock *rw_lock); +GLIB_AVAILABLE_IN_2_32 +gboolean g_rw_lock_writer_trylock (GRWLock *rw_lock); +GLIB_AVAILABLE_IN_2_32 +void g_rw_lock_writer_unlock (GRWLock *rw_lock); +GLIB_AVAILABLE_IN_2_32 +void g_rw_lock_reader_lock (GRWLock *rw_lock); +GLIB_AVAILABLE_IN_2_32 +gboolean g_rw_lock_reader_trylock (GRWLock *rw_lock); +GLIB_AVAILABLE_IN_2_32 +void g_rw_lock_reader_unlock (GRWLock *rw_lock); + +GLIB_AVAILABLE_IN_2_32 +void g_rec_mutex_init (GRecMutex *rec_mutex); +GLIB_AVAILABLE_IN_2_32 +void g_rec_mutex_clear (GRecMutex *rec_mutex); +GLIB_AVAILABLE_IN_2_32 +void g_rec_mutex_lock (GRecMutex *rec_mutex); +GLIB_AVAILABLE_IN_2_32 +gboolean g_rec_mutex_trylock (GRecMutex *rec_mutex); +GLIB_AVAILABLE_IN_2_32 +void g_rec_mutex_unlock (GRecMutex *rec_mutex); + +GLIB_AVAILABLE_IN_2_32 +void g_cond_init (GCond *cond); +GLIB_AVAILABLE_IN_2_32 +void g_cond_clear (GCond *cond); +GLIB_AVAILABLE_IN_ALL +void g_cond_wait (GCond *cond, + GMutex *mutex); +GLIB_AVAILABLE_IN_ALL +void g_cond_signal (GCond *cond); +GLIB_AVAILABLE_IN_ALL +void g_cond_broadcast (GCond *cond); +GLIB_AVAILABLE_IN_2_32 +gboolean g_cond_wait_until (GCond *cond, + GMutex *mutex, + gint64 end_time); + +GLIB_AVAILABLE_IN_ALL +gpointer g_private_get (GPrivate *key); +GLIB_AVAILABLE_IN_ALL +void g_private_set (GPrivate *key, + gpointer value); +GLIB_AVAILABLE_IN_2_32 +void g_private_replace (GPrivate *key, + gpointer value); + +GLIB_AVAILABLE_IN_ALL +gpointer g_once_impl (GOnce *once, + GThreadFunc func, + gpointer arg); +GLIB_AVAILABLE_IN_ALL +gboolean g_once_init_enter (volatile void *location); +GLIB_AVAILABLE_IN_ALL +void g_once_init_leave (volatile void *location, + gsize result); + +/* Use C11-style atomic extensions to check the fast path for status=ready. If + * they are not available, fall back to using a mutex and condition variable in + * g_once_impl(). + * + * On the C11-style codepath, only the load of once->status needs to be atomic, + * as the writes to it and once->retval in g_once_impl() are related by a + * happens-before relation. Release-acquire semantics are defined such that any + * atomic/non-atomic write which happens-before a store/release is guaranteed to + * be seen by the load/acquire of the same atomic variable. */ +#if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) && defined(__ATOMIC_SEQ_CST) +# define g_once(once, func, arg) \ + ((__atomic_load_n (&(once)->status, __ATOMIC_ACQUIRE) == G_ONCE_STATUS_READY) ? \ + (once)->retval : \ + g_once_impl ((once), (func), (arg))) +#else +# define g_once(once, func, arg) g_once_impl ((once), (func), (arg)) +#endif + +#ifdef __GNUC__ +# define g_once_init_enter(location) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \ + (void) (0 ? (gpointer) *(location) : NULL); \ + (!g_atomic_pointer_get (location) && \ + g_once_init_enter (location)); \ + })) +# define g_once_init_leave(location, result) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \ + 0 ? (void) (*(location) = (result)) : (void) 0; \ + g_once_init_leave ((location), (gsize) (result)); \ + })) +#else +# define g_once_init_enter(location) \ + (g_once_init_enter((location))) +# define g_once_init_leave(location, result) \ + (g_once_init_leave((location), (gsize) (result))) +#endif + +GLIB_AVAILABLE_IN_2_36 +guint g_get_num_processors (void); + +/** + * GMutexLocker: + * + * Opaque type. See g_mutex_locker_new() for details. + * Since: 2.44 + */ +typedef void GMutexLocker; + +/** + * g_mutex_locker_new: + * @mutex: a mutex to lock + * + * Lock @mutex and return a new #GMutexLocker. Unlock with + * g_mutex_locker_free(). Using g_mutex_unlock() on @mutex + * while a #GMutexLocker exists can lead to undefined behaviour. + * + * No allocation is performed, it is equivalent to a g_mutex_lock() call. + * + * This is intended to be used with g_autoptr(). Note that g_autoptr() + * is only available when using GCC or clang, so the following example + * will only work with those compilers: + * |[ + * typedef struct + * { + * ... + * GMutex mutex; + * ... + * } MyObject; + * + * static void + * my_object_do_stuff (MyObject *self) + * { + * g_autoptr(GMutexLocker) locker = g_mutex_locker_new (&self->mutex); + * + * // Code with mutex locked here + * + * if (cond) + * // No need to unlock + * return; + * + * // Optionally early unlock + * g_clear_pointer (&locker, g_mutex_locker_free); + * + * // Code with mutex unlocked here + * } + * ]| + * + * Returns: a #GMutexLocker + * Since: 2.44 + */ +GLIB_AVAILABLE_STATIC_INLINE_IN_2_44 +static inline GMutexLocker * +g_mutex_locker_new (GMutex *mutex) +{ + g_mutex_lock (mutex); + return (GMutexLocker *) mutex; +} + +/** + * g_mutex_locker_free: + * @locker: a GMutexLocker + * + * Unlock @locker's mutex. See g_mutex_locker_new() for details. + * + * No memory is freed, it is equivalent to a g_mutex_unlock() call. + * + * Since: 2.44 + */ +GLIB_AVAILABLE_STATIC_INLINE_IN_2_44 +static inline void +g_mutex_locker_free (GMutexLocker *locker) +{ + g_mutex_unlock ((GMutex *) locker); +} + +/** + * GRecMutexLocker: + * + * Opaque type. See g_rec_mutex_locker_new() for details. + * Since: 2.60 + */ +typedef void GRecMutexLocker; + +/** + * g_rec_mutex_locker_new: + * @rec_mutex: a recursive mutex to lock + * + * Lock @rec_mutex and return a new #GRecMutexLocker. Unlock with + * g_rec_mutex_locker_free(). Using g_rec_mutex_unlock() on @rec_mutex + * while a #GRecMutexLocker exists can lead to undefined behaviour. + * + * No allocation is performed, it is equivalent to a g_rec_mutex_lock() call. + * + * This is intended to be used with g_autoptr(). Note that g_autoptr() + * is only available when using GCC or clang, so the following example + * will only work with those compilers: + * |[ + * typedef struct + * { + * ... + * GRecMutex rec_mutex; + * ... + * } MyObject; + * + * static void + * my_object_do_stuff (MyObject *self) + * { + * g_autoptr(GRecMutexLocker) locker = g_rec_mutex_locker_new (&self->rec_mutex); + * + * // Code with rec_mutex locked here + * + * if (cond) + * // No need to unlock + * return; + * + * // Optionally early unlock + * g_clear_pointer (&locker, g_rec_mutex_locker_free); + * + * // Code with rec_mutex unlocked here + * } + * ]| + * + * Returns: a #GRecMutexLocker + * Since: 2.60 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_60 +static inline GRecMutexLocker * +g_rec_mutex_locker_new (GRecMutex *rec_mutex) +{ + g_rec_mutex_lock (rec_mutex); + return (GRecMutexLocker *) rec_mutex; +} +G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * g_rec_mutex_locker_free: + * @locker: a GRecMutexLocker + * + * Unlock @locker's recursive mutex. See g_rec_mutex_locker_new() for details. + * + * No memory is freed, it is equivalent to a g_rec_mutex_unlock() call. + * + * Since: 2.60 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_60 +static inline void +g_rec_mutex_locker_free (GRecMutexLocker *locker) +{ + g_rec_mutex_unlock ((GRecMutex *) locker); +} +G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * GRWLockWriterLocker: + * + * Opaque type. See g_rw_lock_writer_locker_new() for details. + * Since: 2.62 + */ +typedef void GRWLockWriterLocker; + +/** + * g_rw_lock_writer_locker_new: + * @rw_lock: a #GRWLock + * + * Obtain a write lock on @rw_lock and return a new #GRWLockWriterLocker. + * Unlock with g_rw_lock_writer_locker_free(). Using g_rw_lock_writer_unlock() + * on @rw_lock while a #GRWLockWriterLocker exists can lead to undefined + * behaviour. + * + * No allocation is performed, it is equivalent to a g_rw_lock_writer_lock() call. + * + * This is intended to be used with g_autoptr(). Note that g_autoptr() + * is only available when using GCC or clang, so the following example + * will only work with those compilers: + * |[ + * typedef struct + * { + * ... + * GRWLock rw_lock; + * GPtrArray *array; + * ... + * } MyObject; + * + * static gchar * + * my_object_get_data (MyObject *self, guint index) + * { + * g_autoptr(GRWLockReaderLocker) locker = g_rw_lock_reader_locker_new (&self->rw_lock); + * + * // Code with a read lock obtained on rw_lock here + * + * if (self->array == NULL) + * // No need to unlock + * return NULL; + * + * if (index < self->array->len) + * // No need to unlock + * return g_ptr_array_index (self->array, index); + * + * // Optionally early unlock + * g_clear_pointer (&locker, g_rw_lock_reader_locker_free); + * + * // Code with rw_lock unlocked here + * return NULL; + * } + * + * static void + * my_object_set_data (MyObject *self, guint index, gpointer data) + * { + * g_autoptr(GRWLockWriterLocker) locker = g_rw_lock_writer_locker_new (&self->rw_lock); + * + * // Code with a write lock obtained on rw_lock here + * + * if (self->array == NULL) + * self->array = g_ptr_array_new (); + * + * if (cond) + * // No need to unlock + * return; + * + * if (index >= self->array->len) + * g_ptr_array_set_size (self->array, index+1); + * g_ptr_array_index (self->array, index) = data; + * + * // Optionally early unlock + * g_clear_pointer (&locker, g_rw_lock_writer_locker_free); + * + * // Code with rw_lock unlocked here + * } + * ]| + * + * Returns: a #GRWLockWriterLocker + * Since: 2.62 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 +static inline GRWLockWriterLocker * +g_rw_lock_writer_locker_new (GRWLock *rw_lock) +{ + g_rw_lock_writer_lock (rw_lock); + return (GRWLockWriterLocker *) rw_lock; +} +G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * g_rw_lock_writer_locker_free: + * @locker: a GRWLockWriterLocker + * + * Release a write lock on @locker's read-write lock. See + * g_rw_lock_writer_locker_new() for details. + * + * No memory is freed, it is equivalent to a g_rw_lock_writer_unlock() call. + * + * Since: 2.62 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 +static inline void +g_rw_lock_writer_locker_free (GRWLockWriterLocker *locker) +{ + g_rw_lock_writer_unlock ((GRWLock *) locker); +} +G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * GRWLockReaderLocker: + * + * Opaque type. See g_rw_lock_reader_locker_new() for details. + * Since: 2.62 + */ +typedef void GRWLockReaderLocker; + +/** + * g_rw_lock_reader_locker_new: + * @rw_lock: a #GRWLock + * + * Obtain a read lock on @rw_lock and return a new #GRWLockReaderLocker. + * Unlock with g_rw_lock_reader_locker_free(). Using g_rw_lock_reader_unlock() + * on @rw_lock while a #GRWLockReaderLocker exists can lead to undefined + * behaviour. + * + * No allocation is performed, it is equivalent to a g_rw_lock_reader_lock() call. + * + * This is intended to be used with g_autoptr(). For a code sample, see + * g_rw_lock_writer_locker_new(). + * + * Returns: a #GRWLockReaderLocker + * Since: 2.62 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 +static inline GRWLockReaderLocker * +g_rw_lock_reader_locker_new (GRWLock *rw_lock) +{ + g_rw_lock_reader_lock (rw_lock); + return (GRWLockReaderLocker *) rw_lock; +} +G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * g_rw_lock_reader_locker_free: + * @locker: a GRWLockReaderLocker + * + * Release a read lock on @locker's read-write lock. See + * g_rw_lock_reader_locker_new() for details. + * + * No memory is freed, it is equivalent to a g_rw_lock_reader_unlock() call. + * + * Since: 2.62 + */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 +static inline void +g_rw_lock_reader_locker_free (GRWLockReaderLocker *locker) +{ + g_rw_lock_reader_unlock ((GRWLock *) locker); +} +G_GNUC_END_IGNORE_DEPRECATIONS + +G_END_DECLS + +#endif /* __G_THREAD_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gthreadpool.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gthreadpool.h new file mode 100644 index 0000000..921bee4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gthreadpool.h @@ -0,0 +1,105 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_THREADPOOL_H__ +#define __G_THREADPOOL_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _GThreadPool GThreadPool; + +/* Thread Pools + */ + +struct _GThreadPool +{ + GFunc func; + gpointer user_data; + gboolean exclusive; +}; + +GLIB_AVAILABLE_IN_ALL +GThreadPool * g_thread_pool_new (GFunc func, + gpointer user_data, + gint max_threads, + gboolean exclusive, + GError **error); +GLIB_AVAILABLE_IN_2_70 +GThreadPool * g_thread_pool_new_full (GFunc func, + gpointer user_data, + GDestroyNotify item_free_func, + gint max_threads, + gboolean exclusive, + GError **error); +GLIB_AVAILABLE_IN_ALL +void g_thread_pool_free (GThreadPool *pool, + gboolean immediate, + gboolean wait_); +GLIB_AVAILABLE_IN_ALL +gboolean g_thread_pool_push (GThreadPool *pool, + gpointer data, + GError **error); +GLIB_AVAILABLE_IN_ALL +guint g_thread_pool_unprocessed (GThreadPool *pool); +GLIB_AVAILABLE_IN_ALL +void g_thread_pool_set_sort_function (GThreadPool *pool, + GCompareDataFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_46 +gboolean g_thread_pool_move_to_front (GThreadPool *pool, + gpointer data); + +GLIB_AVAILABLE_IN_ALL +gboolean g_thread_pool_set_max_threads (GThreadPool *pool, + gint max_threads, + GError **error); +GLIB_AVAILABLE_IN_ALL +gint g_thread_pool_get_max_threads (GThreadPool *pool); +GLIB_AVAILABLE_IN_ALL +guint g_thread_pool_get_num_threads (GThreadPool *pool); + +GLIB_AVAILABLE_IN_ALL +void g_thread_pool_set_max_unused_threads (gint max_threads); +GLIB_AVAILABLE_IN_ALL +gint g_thread_pool_get_max_unused_threads (void); +GLIB_AVAILABLE_IN_ALL +guint g_thread_pool_get_num_unused_threads (void); +GLIB_AVAILABLE_IN_ALL +void g_thread_pool_stop_unused_threads (void); +GLIB_AVAILABLE_IN_ALL +void g_thread_pool_set_max_idle_time (guint interval); +GLIB_AVAILABLE_IN_ALL +guint g_thread_pool_get_max_idle_time (void); + +G_END_DECLS + +#endif /* __G_THREADPOOL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtimer.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtimer.h new file mode 100644 index 0000000..439ffad --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtimer.h @@ -0,0 +1,80 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_TIMER_H__ +#define __G_TIMER_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* Timer + */ + +/* microseconds per second */ +typedef struct _GTimer GTimer; + +#define G_USEC_PER_SEC 1000000 + +GLIB_AVAILABLE_IN_ALL +GTimer* g_timer_new (void); +GLIB_AVAILABLE_IN_ALL +void g_timer_destroy (GTimer *timer); +GLIB_AVAILABLE_IN_ALL +void g_timer_start (GTimer *timer); +GLIB_AVAILABLE_IN_ALL +void g_timer_stop (GTimer *timer); +GLIB_AVAILABLE_IN_ALL +void g_timer_reset (GTimer *timer); +GLIB_AVAILABLE_IN_ALL +void g_timer_continue (GTimer *timer); +GLIB_AVAILABLE_IN_ALL +gdouble g_timer_elapsed (GTimer *timer, + gulong *microseconds); +GLIB_AVAILABLE_IN_2_62 +gboolean g_timer_is_active (GTimer *timer); + +GLIB_AVAILABLE_IN_ALL +void g_usleep (gulong microseconds); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_62 +void g_time_val_add (GTimeVal *time_, + glong microseconds); +GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_iso8601) +gboolean g_time_val_from_iso8601 (const gchar *iso_date, + GTimeVal *time_); +GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_format) +gchar* g_time_val_to_iso8601 (GTimeVal *time_) G_GNUC_MALLOC; +G_GNUC_END_IGNORE_DEPRECATIONS + +G_END_DECLS + +#endif /* __G_TIMER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtimezone.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtimezone.h new file mode 100644 index 0000000..679ed4e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtimezone.h @@ -0,0 +1,98 @@ +/* + * Copyright © 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_TIME_ZONE_H__ +#define __G_TIME_ZONE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GTimeZone GTimeZone; + +/** + * GTimeType: + * @G_TIME_TYPE_STANDARD: the time is in local standard time + * @G_TIME_TYPE_DAYLIGHT: the time is in local daylight time + * @G_TIME_TYPE_UNIVERSAL: the time is in UTC + * + * Disambiguates a given time in two ways. + * + * First, specifies if the given time is in universal or local time. + * + * Second, if the time is in local time, specifies if it is local + * standard time or local daylight time. This is important for the case + * where the same local time occurs twice (during daylight savings time + * transitions, for example). + */ +typedef enum +{ + G_TIME_TYPE_STANDARD, + G_TIME_TYPE_DAYLIGHT, + G_TIME_TYPE_UNIVERSAL +} GTimeType; + +GLIB_DEPRECATED_IN_2_68_FOR (g_time_zone_new_identifier) +GTimeZone * g_time_zone_new (const gchar *identifier); +GLIB_AVAILABLE_IN_2_68 +GTimeZone * g_time_zone_new_identifier (const gchar *identifier); +GLIB_AVAILABLE_IN_ALL +GTimeZone * g_time_zone_new_utc (void); +GLIB_AVAILABLE_IN_ALL +GTimeZone * g_time_zone_new_local (void); +GLIB_AVAILABLE_IN_2_58 +GTimeZone * g_time_zone_new_offset (gint32 seconds); + +GLIB_AVAILABLE_IN_ALL +GTimeZone * g_time_zone_ref (GTimeZone *tz); +GLIB_AVAILABLE_IN_ALL +void g_time_zone_unref (GTimeZone *tz); + +GLIB_AVAILABLE_IN_ALL +gint g_time_zone_find_interval (GTimeZone *tz, + GTimeType type, + gint64 time_); + +GLIB_AVAILABLE_IN_ALL +gint g_time_zone_adjust_time (GTimeZone *tz, + GTimeType type, + gint64 *time_); + +GLIB_AVAILABLE_IN_ALL +const gchar * g_time_zone_get_abbreviation (GTimeZone *tz, + gint interval); +GLIB_AVAILABLE_IN_ALL +gint32 g_time_zone_get_offset (GTimeZone *tz, + gint interval); +GLIB_AVAILABLE_IN_ALL +gboolean g_time_zone_is_dst (GTimeZone *tz, + gint interval); +GLIB_AVAILABLE_IN_2_58 +const gchar * g_time_zone_get_identifier (GTimeZone *tz); + +G_END_DECLS + +#endif /* __G_TIME_ZONE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtrashstack.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtrashstack.h new file mode 100644 index 0000000..81456d3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtrashstack.h @@ -0,0 +1,60 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_TRASH_STACK_H__ +#define __G_TRASH_STACK_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +typedef struct _GTrashStack GTrashStack GLIB_DEPRECATED_TYPE_IN_2_48; +struct _GTrashStack +{ + GTrashStack *next; +} GLIB_DEPRECATED_TYPE_IN_2_48; + +GLIB_DEPRECATED_IN_2_48 +void g_trash_stack_push (GTrashStack **stack_p, + gpointer data_p); +GLIB_DEPRECATED_IN_2_48 +gpointer g_trash_stack_pop (GTrashStack **stack_p); +GLIB_DEPRECATED_IN_2_48 +gpointer g_trash_stack_peek (GTrashStack **stack_p); +GLIB_DEPRECATED_IN_2_48 +guint g_trash_stack_height (GTrashStack **stack_p); + +G_GNUC_END_IGNORE_DEPRECATIONS + +G_END_DECLS + +#endif /* __G_TRASH_STACK_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtree.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtree.h new file mode 100644 index 0000000..baff685 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtree.h @@ -0,0 +1,181 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_TREE_H__ +#define __G_TREE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#undef G_TREE_DEBUG + +typedef struct _GTree GTree; + +/** + * GTreeNode: + * + * An opaque type which identifies a specific node in a #GTree. + * + * Since: 2.68 + */ +typedef struct _GTreeNode GTreeNode; + +typedef gboolean (*GTraverseFunc) (gpointer key, + gpointer value, + gpointer user_data); + +/** + * GTraverseNodeFunc: + * @node: a #GTreeNode + * @user_data: user data passed to g_tree_foreach_node() + * + * Specifies the type of function passed to g_tree_foreach_node(). It is + * passed each node, together with the @user_data parameter passed to + * g_tree_foreach_node(). If the function returns %TRUE, the traversal is + * stopped. + * + * Returns: %TRUE to stop the traversal + * Since: 2.68 + */ +typedef gboolean (*GTraverseNodeFunc) (GTreeNode *node, + gpointer user_data); + +/* Balanced binary trees + */ +GLIB_AVAILABLE_IN_ALL +GTree* g_tree_new (GCompareFunc key_compare_func); +GLIB_AVAILABLE_IN_ALL +GTree* g_tree_new_with_data (GCompareDataFunc key_compare_func, + gpointer key_compare_data); +GLIB_AVAILABLE_IN_ALL +GTree* g_tree_new_full (GCompareDataFunc key_compare_func, + gpointer key_compare_data, + GDestroyNotify key_destroy_func, + GDestroyNotify value_destroy_func); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_node_first (GTree *tree); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_node_last (GTree *tree); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_node_previous (GTreeNode *node); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_node_next (GTreeNode *node); +GLIB_AVAILABLE_IN_ALL +GTree* g_tree_ref (GTree *tree); +GLIB_AVAILABLE_IN_ALL +void g_tree_unref (GTree *tree); +GLIB_AVAILABLE_IN_ALL +void g_tree_destroy (GTree *tree); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_insert_node (GTree *tree, + gpointer key, + gpointer value); +GLIB_AVAILABLE_IN_ALL +void g_tree_insert (GTree *tree, + gpointer key, + gpointer value); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_replace_node (GTree *tree, + gpointer key, + gpointer value); +GLIB_AVAILABLE_IN_ALL +void g_tree_replace (GTree *tree, + gpointer key, + gpointer value); +GLIB_AVAILABLE_IN_ALL +gboolean g_tree_remove (GTree *tree, + gconstpointer key); + +GLIB_AVAILABLE_IN_2_70 +void g_tree_remove_all (GTree *tree); + +GLIB_AVAILABLE_IN_ALL +gboolean g_tree_steal (GTree *tree, + gconstpointer key); +GLIB_AVAILABLE_IN_2_68 +gpointer g_tree_node_key (GTreeNode *node); +GLIB_AVAILABLE_IN_2_68 +gpointer g_tree_node_value (GTreeNode *node); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_lookup_node (GTree *tree, + gconstpointer key); +GLIB_AVAILABLE_IN_ALL +gpointer g_tree_lookup (GTree *tree, + gconstpointer key); +GLIB_AVAILABLE_IN_ALL +gboolean g_tree_lookup_extended (GTree *tree, + gconstpointer lookup_key, + gpointer *orig_key, + gpointer *value); +GLIB_AVAILABLE_IN_ALL +void g_tree_foreach (GTree *tree, + GTraverseFunc func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_68 +void g_tree_foreach_node (GTree *tree, + GTraverseNodeFunc func, + gpointer user_data); + +GLIB_DEPRECATED +void g_tree_traverse (GTree *tree, + GTraverseFunc traverse_func, + GTraverseType traverse_type, + gpointer user_data); + +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_search_node (GTree *tree, + GCompareFunc search_func, + gconstpointer user_data); +GLIB_AVAILABLE_IN_ALL +gpointer g_tree_search (GTree *tree, + GCompareFunc search_func, + gconstpointer user_data); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_lower_bound (GTree *tree, + gconstpointer key); +GLIB_AVAILABLE_IN_2_68 +GTreeNode *g_tree_upper_bound (GTree *tree, + gconstpointer key); +GLIB_AVAILABLE_IN_ALL +gint g_tree_height (GTree *tree); +GLIB_AVAILABLE_IN_ALL +gint g_tree_nnodes (GTree *tree); + +#ifdef G_TREE_DEBUG +/*< private >*/ +#ifndef __GTK_DOC_IGNORE__ +void g_tree_dump (GTree *tree); +#endif /* !__GTK_DOC_IGNORE__ */ +#endif /* G_TREE_DEBUG */ + +G_END_DECLS + +#endif /* __G_TREE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtypes.h new file mode 100644 index 0000000..8ef1909 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gtypes.h @@ -0,0 +1,610 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_TYPES_H__ +#define __G_TYPES_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include + +G_BEGIN_DECLS + +/* Provide type definitions for commonly used types. + * These are useful because a "gint8" can be adjusted + * to be 1 byte (8 bits) on all platforms. Similarly and + * more importantly, "gint32" can be adjusted to be + * 4 bytes (32 bits) on all platforms. + */ + +typedef char gchar; +typedef short gshort; +typedef long glong; +typedef int gint; +typedef gint gboolean; + +typedef unsigned char guchar; +typedef unsigned short gushort; +typedef unsigned long gulong; +typedef unsigned int guint; + +typedef float gfloat; +typedef double gdouble; + +/* Define min and max constants for the fixed size numerical types */ +/** + * G_MININT8: (value -128) + * + * The minimum value which can be held in a #gint8. + * + * Since: 2.4 + */ +#define G_MININT8 ((gint8) (-G_MAXINT8 - 1)) +#define G_MAXINT8 ((gint8) 0x7f) +#define G_MAXUINT8 ((guint8) 0xff) + +/** + * G_MININT16: (value -32768) + * + * The minimum value which can be held in a #gint16. + * + * Since: 2.4 + */ +#define G_MININT16 ((gint16) (-G_MAXINT16 - 1)) +#define G_MAXINT16 ((gint16) 0x7fff) +#define G_MAXUINT16 ((guint16) 0xffff) + +/** + * G_MININT32: (value -2147483648) + * + * The minimum value which can be held in a #gint32. + * + * Since: 2.4 + */ +#define G_MININT32 ((gint32) (-G_MAXINT32 - 1)) +#define G_MAXINT32 ((gint32) 0x7fffffff) +#define G_MAXUINT32 ((guint32) 0xffffffff) + +/** + * G_MININT64: (value -9223372036854775808) + * + * The minimum value which can be held in a #gint64. + */ +#define G_MININT64 ((gint64) (-G_MAXINT64 - G_GINT64_CONSTANT(1))) +#define G_MAXINT64 G_GINT64_CONSTANT(0x7fffffffffffffff) +#define G_MAXUINT64 G_GUINT64_CONSTANT(0xffffffffffffffff) + +typedef void* gpointer; +typedef const void *gconstpointer; + +typedef gint (*GCompareFunc) (gconstpointer a, + gconstpointer b); +typedef gint (*GCompareDataFunc) (gconstpointer a, + gconstpointer b, + gpointer user_data); +typedef gboolean (*GEqualFunc) (gconstpointer a, + gconstpointer b); + +/** + * GEqualFuncFull: + * @a: a value + * @b: a value to compare with + * @user_data: user data provided by the caller + * + * Specifies the type of a function used to test two values for + * equality. The function should return %TRUE if both values are equal + * and %FALSE otherwise. + * + * This is a version of #GEqualFunc which provides a @user_data closure from + * the caller. + * + * Returns: %TRUE if @a = @b; %FALSE otherwise + * Since: 2.74 + */ +typedef gboolean (*GEqualFuncFull) (gconstpointer a, + gconstpointer b, + gpointer user_data); + +typedef void (*GDestroyNotify) (gpointer data); +typedef void (*GFunc) (gpointer data, + gpointer user_data); +typedef guint (*GHashFunc) (gconstpointer key); +typedef void (*GHFunc) (gpointer key, + gpointer value, + gpointer user_data); + +/** + * GCopyFunc: + * @src: (not nullable): A pointer to the data which should be copied + * @user_data: Additional data + * + * A function of this signature is used to copy the node data + * when doing a deep-copy of a tree. + * + * Returns: (not nullable): A pointer to the copy + * + * Since: 2.4 + */ +typedef gpointer (*GCopyFunc) (gconstpointer src, + gpointer user_data); +/** + * GFreeFunc: + * @data: a data pointer + * + * Declares a type of function which takes an arbitrary + * data pointer argument and has no return value. It is + * not currently used in GLib or GTK+. + */ +typedef void (*GFreeFunc) (gpointer data); + +/** + * GTranslateFunc: + * @str: the untranslated string + * @user_data: user data specified when installing the function, e.g. + * in g_option_group_set_translate_func() + * + * The type of functions which are used to translate user-visible + * strings, for output. + * + * Returns: a translation of the string for the current locale. + * The returned string is owned by GLib and must not be freed. + */ +typedef const gchar * (*GTranslateFunc) (const gchar *str, + gpointer user_data); + + +/* Define some mathematical constants that aren't available + * symbolically in some strict ISO C implementations. + * + * Note that the large number of digits used in these definitions + * doesn't imply that GLib or current computers in general would be + * able to handle floating point numbers with an accuracy like this. + * It's mostly an exercise in futility and future proofing. For + * extended precision floating point support, look somewhere else + * than GLib. + */ +#define G_E 2.7182818284590452353602874713526624977572470937000 +#define G_LN2 0.69314718055994530941723212145817656807550013436026 +#define G_LN10 2.3025850929940456840179914546843642076011014886288 +#define G_PI 3.1415926535897932384626433832795028841971693993751 +#define G_PI_2 1.5707963267948966192313216916397514420985846996876 +#define G_PI_4 0.78539816339744830961566084581987572104929234984378 +#define G_SQRT2 1.4142135623730950488016887242096980785696718753769 + +/* Portable endian checks and conversions + * + * glibconfig.h defines G_BYTE_ORDER which expands to one of + * the below macros. + */ +#define G_LITTLE_ENDIAN 1234 +#define G_BIG_ENDIAN 4321 +#define G_PDP_ENDIAN 3412 /* unused, need specific PDP check */ + + +/* Basic bit swapping functions + */ +#define GUINT16_SWAP_LE_BE_CONSTANT(val) ((guint16) ( \ + (guint16) ((guint16) (val) >> 8) | \ + (guint16) ((guint16) (val) << 8))) + +#define GUINT32_SWAP_LE_BE_CONSTANT(val) ((guint32) ( \ + (((guint32) (val) & (guint32) 0x000000ffU) << 24) | \ + (((guint32) (val) & (guint32) 0x0000ff00U) << 8) | \ + (((guint32) (val) & (guint32) 0x00ff0000U) >> 8) | \ + (((guint32) (val) & (guint32) 0xff000000U) >> 24))) + +#define GUINT64_SWAP_LE_BE_CONSTANT(val) ((guint64) ( \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0x00000000000000ffU)) << 56) | \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0x000000000000ff00U)) << 40) | \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0x0000000000ff0000U)) << 24) | \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0x00000000ff000000U)) << 8) | \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0x000000ff00000000U)) >> 8) | \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0x0000ff0000000000U)) >> 24) | \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0x00ff000000000000U)) >> 40) | \ + (((guint64) (val) & \ + (guint64) G_GINT64_CONSTANT (0xff00000000000000U)) >> 56))) + +/* Arch specific stuff for speed + */ +#if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__) + +# if __GNUC__ >= 4 && defined (__GNUC_MINOR__) && __GNUC_MINOR__ >= 3 +# define GUINT32_SWAP_LE_BE(val) ((guint32) __builtin_bswap32 ((guint32) (val))) +# define GUINT64_SWAP_LE_BE(val) ((guint64) __builtin_bswap64 ((guint64) (val))) +# endif + +# if defined (__i386__) +# define GUINT16_SWAP_LE_BE_IA32(val) \ + (G_GNUC_EXTENSION \ + ({ guint16 __v, __x = ((guint16) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT16_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ ("rorw $8, %w0" \ + : "=r" (__v) \ + : "0" (__x) \ + : "cc"); \ + __v; })) +# if !defined (__i486__) && !defined (__i586__) \ + && !defined (__pentium__) && !defined (__i686__) \ + && !defined (__pentiumpro__) && !defined (__pentium4__) +# define GUINT32_SWAP_LE_BE_IA32(val) \ + (G_GNUC_EXTENSION \ + ({ guint32 __v, __x = ((guint32) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ ("rorw $8, %w0\n\t" \ + "rorl $16, %0\n\t" \ + "rorw $8, %w0" \ + : "=r" (__v) \ + : "0" (__x) \ + : "cc"); \ + __v; })) +# else /* 486 and higher has bswap */ +# define GUINT32_SWAP_LE_BE_IA32(val) \ + (G_GNUC_EXTENSION \ + ({ guint32 __v, __x = ((guint32) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ ("bswap %0" \ + : "=r" (__v) \ + : "0" (__x)); \ + __v; })) +# endif /* processor specific 32-bit stuff */ +# define GUINT64_SWAP_LE_BE_IA32(val) \ + (G_GNUC_EXTENSION \ + ({ union { guint64 __ll; \ + guint32 __l[2]; } __w, __r; \ + __w.__ll = ((guint64) (val)); \ + if (__builtin_constant_p (__w.__ll)) \ + __r.__ll = GUINT64_SWAP_LE_BE_CONSTANT (__w.__ll); \ + else \ + { \ + __r.__l[0] = GUINT32_SWAP_LE_BE (__w.__l[1]); \ + __r.__l[1] = GUINT32_SWAP_LE_BE (__w.__l[0]); \ + } \ + __r.__ll; })) + /* Possibly just use the constant version and let gcc figure it out? */ +# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA32 (val)) +# ifndef GUINT32_SWAP_LE_BE +# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA32 (val)) +# endif +# ifndef GUINT64_SWAP_LE_BE +# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA32 (val)) +# endif +# elif defined (__ia64__) +# define GUINT16_SWAP_LE_BE_IA64(val) \ + (G_GNUC_EXTENSION \ + ({ guint16 __v, __x = ((guint16) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT16_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ __volatile__ ("shl %0 = %1, 48 ;;" \ + "mux1 %0 = %0, @rev ;;" \ + : "=r" (__v) \ + : "r" (__x)); \ + __v; })) +# define GUINT32_SWAP_LE_BE_IA64(val) \ + (G_GNUC_EXTENSION \ + ({ guint32 __v, __x = ((guint32) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ __volatile__ ("shl %0 = %1, 32 ;;" \ + "mux1 %0 = %0, @rev ;;" \ + : "=r" (__v) \ + : "r" (__x)); \ + __v; })) +# define GUINT64_SWAP_LE_BE_IA64(val) \ + (G_GNUC_EXTENSION \ + ({ guint64 __v, __x = ((guint64) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT64_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ __volatile__ ("mux1 %0 = %1, @rev ;;" \ + : "=r" (__v) \ + : "r" (__x)); \ + __v; })) +# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA64 (val)) +# ifndef GUINT32_SWAP_LE_BE +# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA64 (val)) +# endif +# ifndef GUINT64_SWAP_LE_BE +# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA64 (val)) +# endif +# elif defined (__x86_64__) +# define GUINT32_SWAP_LE_BE_X86_64(val) \ + (G_GNUC_EXTENSION \ + ({ guint32 __v, __x = ((guint32) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ ("bswapl %0" \ + : "=r" (__v) \ + : "0" (__x)); \ + __v; })) +# define GUINT64_SWAP_LE_BE_X86_64(val) \ + (G_GNUC_EXTENSION \ + ({ guint64 __v, __x = ((guint64) (val)); \ + if (__builtin_constant_p (__x)) \ + __v = GUINT64_SWAP_LE_BE_CONSTANT (__x); \ + else \ + __asm__ ("bswapq %0" \ + : "=r" (__v) \ + : "0" (__x)); \ + __v; })) + /* gcc seems to figure out optimal code for this on its own */ +# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val)) +# ifndef GUINT32_SWAP_LE_BE +# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_X86_64 (val)) +# endif +# ifndef GUINT64_SWAP_LE_BE +# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_X86_64 (val)) +# endif +# else /* generic gcc */ +# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val)) +# ifndef GUINT32_SWAP_LE_BE +# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val)) +# endif +# ifndef GUINT64_SWAP_LE_BE +# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val)) +# endif +# endif +#else /* generic */ +# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val)) +# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val)) +# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val)) +#endif /* generic */ + +#define GUINT16_SWAP_LE_PDP(val) ((guint16) (val)) +#define GUINT16_SWAP_BE_PDP(val) (GUINT16_SWAP_LE_BE (val)) +#define GUINT32_SWAP_LE_PDP(val) ((guint32) ( \ + (((guint32) (val) & (guint32) 0x0000ffffU) << 16) | \ + (((guint32) (val) & (guint32) 0xffff0000U) >> 16))) +#define GUINT32_SWAP_BE_PDP(val) ((guint32) ( \ + (((guint32) (val) & (guint32) 0x00ff00ffU) << 8) | \ + (((guint32) (val) & (guint32) 0xff00ff00U) >> 8))) + +/* The G*_TO_?E() macros are defined in glibconfig.h. + * The transformation is symmetric, so the FROM just maps to the TO. + */ +#define GINT16_FROM_LE(val) (GINT16_TO_LE (val)) +#define GUINT16_FROM_LE(val) (GUINT16_TO_LE (val)) +#define GINT16_FROM_BE(val) (GINT16_TO_BE (val)) +#define GUINT16_FROM_BE(val) (GUINT16_TO_BE (val)) +#define GINT32_FROM_LE(val) (GINT32_TO_LE (val)) +#define GUINT32_FROM_LE(val) (GUINT32_TO_LE (val)) +#define GINT32_FROM_BE(val) (GINT32_TO_BE (val)) +#define GUINT32_FROM_BE(val) (GUINT32_TO_BE (val)) + +#define GINT64_FROM_LE(val) (GINT64_TO_LE (val)) +#define GUINT64_FROM_LE(val) (GUINT64_TO_LE (val)) +#define GINT64_FROM_BE(val) (GINT64_TO_BE (val)) +#define GUINT64_FROM_BE(val) (GUINT64_TO_BE (val)) + +#define GLONG_FROM_LE(val) (GLONG_TO_LE (val)) +#define GULONG_FROM_LE(val) (GULONG_TO_LE (val)) +#define GLONG_FROM_BE(val) (GLONG_TO_BE (val)) +#define GULONG_FROM_BE(val) (GULONG_TO_BE (val)) + +#define GINT_FROM_LE(val) (GINT_TO_LE (val)) +#define GUINT_FROM_LE(val) (GUINT_TO_LE (val)) +#define GINT_FROM_BE(val) (GINT_TO_BE (val)) +#define GUINT_FROM_BE(val) (GUINT_TO_BE (val)) + +#define GSIZE_FROM_LE(val) (GSIZE_TO_LE (val)) +#define GSSIZE_FROM_LE(val) (GSSIZE_TO_LE (val)) +#define GSIZE_FROM_BE(val) (GSIZE_TO_BE (val)) +#define GSSIZE_FROM_BE(val) (GSSIZE_TO_BE (val)) + +/* Portable versions of host-network order stuff + */ +#define g_ntohl(val) (GUINT32_FROM_BE (val)) +#define g_ntohs(val) (GUINT16_FROM_BE (val)) +#define g_htonl(val) (GUINT32_TO_BE (val)) +#define g_htons(val) (GUINT16_TO_BE (val)) + +/* Overflow-checked unsigned integer arithmetic + */ +#ifndef _GLIB_TEST_OVERFLOW_FALLBACK +/* https://bugzilla.gnome.org/show_bug.cgi?id=769104 */ +#if __GNUC__ >= 5 && !defined(__INTEL_COMPILER) +#define _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS +#elif g_macro__has_builtin(__builtin_add_overflow) +#define _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS +#endif +#endif + +#ifdef _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS + +#define g_uint_checked_add(dest, a, b) \ + (!__builtin_add_overflow(a, b, dest)) +#define g_uint_checked_mul(dest, a, b) \ + (!__builtin_mul_overflow(a, b, dest)) + +#define g_uint64_checked_add(dest, a, b) \ + (!__builtin_add_overflow(a, b, dest)) +#define g_uint64_checked_mul(dest, a, b) \ + (!__builtin_mul_overflow(a, b, dest)) + +#define g_size_checked_add(dest, a, b) \ + (!__builtin_add_overflow(a, b, dest)) +#define g_size_checked_mul(dest, a, b) \ + (!__builtin_mul_overflow(a, b, dest)) + +#else /* !_GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS */ + +/* The names of the following inlines are private. Use the macro + * definitions above. + */ +static inline gboolean _GLIB_CHECKED_ADD_UINT (guint *dest, guint a, guint b) { + *dest = a + b; return *dest >= a; } +static inline gboolean _GLIB_CHECKED_MUL_UINT (guint *dest, guint a, guint b) { + *dest = a * b; return !a || *dest / a == b; } +static inline gboolean _GLIB_CHECKED_ADD_UINT64 (guint64 *dest, guint64 a, guint64 b) { + *dest = a + b; return *dest >= a; } +static inline gboolean _GLIB_CHECKED_MUL_UINT64 (guint64 *dest, guint64 a, guint64 b) { + *dest = a * b; return !a || *dest / a == b; } +static inline gboolean _GLIB_CHECKED_ADD_SIZE (gsize *dest, gsize a, gsize b) { + *dest = a + b; return *dest >= a; } +static inline gboolean _GLIB_CHECKED_MUL_SIZE (gsize *dest, gsize a, gsize b) { + *dest = a * b; return !a || *dest / a == b; } + +#define g_uint_checked_add(dest, a, b) \ + _GLIB_CHECKED_ADD_UINT(dest, a, b) +#define g_uint_checked_mul(dest, a, b) \ + _GLIB_CHECKED_MUL_UINT(dest, a, b) + +#define g_uint64_checked_add(dest, a, b) \ + _GLIB_CHECKED_ADD_UINT64(dest, a, b) +#define g_uint64_checked_mul(dest, a, b) \ + _GLIB_CHECKED_MUL_UINT64(dest, a, b) + +#define g_size_checked_add(dest, a, b) \ + _GLIB_CHECKED_ADD_SIZE(dest, a, b) +#define g_size_checked_mul(dest, a, b) \ + _GLIB_CHECKED_MUL_SIZE(dest, a, b) + +#endif /* !_GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS */ + +/* IEEE Standard 754 Single Precision Storage Format (gfloat): + * + * 31 30 23 22 0 + * +--------+---------------+---------------+ + * | s 1bit | e[30:23] 8bit | f[22:0] 23bit | + * +--------+---------------+---------------+ + * B0------------------->B1------->B2-->B3--> + * + * IEEE Standard 754 Double Precision Storage Format (gdouble): + * + * 63 62 52 51 32 31 0 + * +--------+----------------+----------------+ +---------------+ + * | s 1bit | e[62:52] 11bit | f[51:32] 20bit | | f[31:0] 32bit | + * +--------+----------------+----------------+ +---------------+ + * B0--------------->B1---------->B2--->B3----> B4->B5->B6->B7-> + */ +/* subtract from biased_exponent to form base2 exponent (normal numbers) */ +typedef union _GDoubleIEEE754 GDoubleIEEE754; +typedef union _GFloatIEEE754 GFloatIEEE754; +#define G_IEEE754_FLOAT_BIAS (127) +#define G_IEEE754_DOUBLE_BIAS (1023) +/* multiply with base2 exponent to get base10 exponent (normal numbers) */ +#define G_LOG_2_BASE_10 (0.30102999566398119521) +#if G_BYTE_ORDER == G_LITTLE_ENDIAN +union _GFloatIEEE754 +{ + gfloat v_float; + struct { + guint mantissa : 23; + guint biased_exponent : 8; + guint sign : 1; + } mpn; +}; +union _GDoubleIEEE754 +{ + gdouble v_double; + struct { + guint mantissa_low : 32; + guint mantissa_high : 20; + guint biased_exponent : 11; + guint sign : 1; + } mpn; +}; +#elif G_BYTE_ORDER == G_BIG_ENDIAN +union _GFloatIEEE754 +{ + gfloat v_float; + struct { + guint sign : 1; + guint biased_exponent : 8; + guint mantissa : 23; + } mpn; +}; +union _GDoubleIEEE754 +{ + gdouble v_double; + struct { + guint sign : 1; + guint biased_exponent : 11; + guint mantissa_high : 20; + guint mantissa_low : 32; + } mpn; +}; +#else /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */ +#error unknown ENDIAN type +#endif /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */ + +typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); + +struct _GTimeVal +{ + glong tv_sec; + glong tv_usec; +} GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); + +typedef gint grefcount; +typedef gint gatomicrefcount; /* should be accessed only using atomics */ + +G_END_DECLS + +/* We prefix variable declarations so they can + * properly get exported in Windows DLLs. + */ +#ifndef GLIB_VAR +# ifdef G_PLATFORM_WIN32 +# ifdef GLIB_STATIC_COMPILATION +# define GLIB_VAR extern +# else /* !GLIB_STATIC_COMPILATION */ +# ifdef GLIB_COMPILATION +# ifdef DLL_EXPORT +# define GLIB_VAR extern __declspec(dllexport) +# else /* !DLL_EXPORT */ +# define GLIB_VAR extern +# endif /* !DLL_EXPORT */ +# else /* !GLIB_COMPILATION */ +# define GLIB_VAR extern __declspec(dllimport) +# endif /* !GLIB_COMPILATION */ +# endif /* !GLIB_STATIC_COMPILATION */ +# else /* !G_PLATFORM_WIN32 */ +# define GLIB_VAR _GLIB_EXTERN +# endif /* !G_PLATFORM_WIN32 */ +#endif /* GLIB_VAR */ + +#endif /* __G_TYPES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gunicode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gunicode.h new file mode 100644 index 0000000..63117ea --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gunicode.h @@ -0,0 +1,970 @@ +/* gunicode.h - Unicode manipulation functions + * + * Copyright (C) 1999, 2000 Tom Tromey + * Copyright 2000, 2005 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#ifndef __G_UNICODE_H__ +#define __G_UNICODE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/** + * gunichar: + * + * A type which can hold any UTF-32 or UCS-4 character code, + * also known as a Unicode code point. + * + * If you want to produce the UTF-8 representation of a #gunichar, + * use g_ucs4_to_utf8(). See also g_utf8_to_ucs4() for the reverse + * process. + * + * To print/scan values of this type as integer, use + * %G_GINT32_MODIFIER and/or %G_GUINT32_FORMAT. + * + * The notation to express a Unicode code point in running text is + * as a hexadecimal number with four to six digits and uppercase + * letters, prefixed by the string "U+". Leading zeros are omitted, + * unless the code point would have fewer than four hexadecimal digits. + * For example, "U+0041 LATIN CAPITAL LETTER A". To print a code point + * in the U+-notation, use the format string "U+\%04"G_GINT32_FORMAT"X". + * To scan, use the format string "U+\%06"G_GINT32_FORMAT"X". + * + * |[ + * gunichar c; + * sscanf ("U+0041", "U+%06"G_GINT32_FORMAT"X", &c) + * g_print ("Read U+%04"G_GINT32_FORMAT"X", c); + * ]| + */ +typedef guint32 gunichar; + +/** + * gunichar2: + * + * A type which can hold any UTF-16 code + * pointUTF-16 also has so called + * surrogate pairs to encode characters beyond + * the BMP as pairs of 16bit numbers. Surrogate pairs cannot be stored + * in a single gunichar2 field, but all GLib functions accepting gunichar2 + * arrays will correctly interpret surrogate pairs.. + * + * To print/scan values of this type to/from text you need to convert + * to/from UTF-8, using g_utf16_to_utf8()/g_utf8_to_utf16(). + * + * To print/scan values of this type as integer, use + * %G_GINT16_MODIFIER and/or %G_GUINT16_FORMAT. + */ +typedef guint16 gunichar2; + +/** + * GUnicodeType: + * @G_UNICODE_CONTROL: General category "Other, Control" (Cc) + * @G_UNICODE_FORMAT: General category "Other, Format" (Cf) + * @G_UNICODE_UNASSIGNED: General category "Other, Not Assigned" (Cn) + * @G_UNICODE_PRIVATE_USE: General category "Other, Private Use" (Co) + * @G_UNICODE_SURROGATE: General category "Other, Surrogate" (Cs) + * @G_UNICODE_LOWERCASE_LETTER: General category "Letter, Lowercase" (Ll) + * @G_UNICODE_MODIFIER_LETTER: General category "Letter, Modifier" (Lm) + * @G_UNICODE_OTHER_LETTER: General category "Letter, Other" (Lo) + * @G_UNICODE_TITLECASE_LETTER: General category "Letter, Titlecase" (Lt) + * @G_UNICODE_UPPERCASE_LETTER: General category "Letter, Uppercase" (Lu) + * @G_UNICODE_SPACING_MARK: General category "Mark, Spacing" (Mc) + * @G_UNICODE_ENCLOSING_MARK: General category "Mark, Enclosing" (Me) + * @G_UNICODE_NON_SPACING_MARK: General category "Mark, Nonspacing" (Mn) + * @G_UNICODE_DECIMAL_NUMBER: General category "Number, Decimal Digit" (Nd) + * @G_UNICODE_LETTER_NUMBER: General category "Number, Letter" (Nl) + * @G_UNICODE_OTHER_NUMBER: General category "Number, Other" (No) + * @G_UNICODE_CONNECT_PUNCTUATION: General category "Punctuation, Connector" (Pc) + * @G_UNICODE_DASH_PUNCTUATION: General category "Punctuation, Dash" (Pd) + * @G_UNICODE_CLOSE_PUNCTUATION: General category "Punctuation, Close" (Pe) + * @G_UNICODE_FINAL_PUNCTUATION: General category "Punctuation, Final quote" (Pf) + * @G_UNICODE_INITIAL_PUNCTUATION: General category "Punctuation, Initial quote" (Pi) + * @G_UNICODE_OTHER_PUNCTUATION: General category "Punctuation, Other" (Po) + * @G_UNICODE_OPEN_PUNCTUATION: General category "Punctuation, Open" (Ps) + * @G_UNICODE_CURRENCY_SYMBOL: General category "Symbol, Currency" (Sc) + * @G_UNICODE_MODIFIER_SYMBOL: General category "Symbol, Modifier" (Sk) + * @G_UNICODE_MATH_SYMBOL: General category "Symbol, Math" (Sm) + * @G_UNICODE_OTHER_SYMBOL: General category "Symbol, Other" (So) + * @G_UNICODE_LINE_SEPARATOR: General category "Separator, Line" (Zl) + * @G_UNICODE_PARAGRAPH_SEPARATOR: General category "Separator, Paragraph" (Zp) + * @G_UNICODE_SPACE_SEPARATOR: General category "Separator, Space" (Zs) + * + * These are the possible character classifications from the + * Unicode specification. + * See [Unicode Character Database](http://www.unicode.org/reports/tr44/#General_Category_Values). + */ +typedef enum +{ + G_UNICODE_CONTROL, + G_UNICODE_FORMAT, + G_UNICODE_UNASSIGNED, + G_UNICODE_PRIVATE_USE, + G_UNICODE_SURROGATE, + G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_MODIFIER_LETTER, + G_UNICODE_OTHER_LETTER, + G_UNICODE_TITLECASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_SPACING_MARK, + G_UNICODE_ENCLOSING_MARK, + G_UNICODE_NON_SPACING_MARK, + G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_LETTER_NUMBER, + G_UNICODE_OTHER_NUMBER, + G_UNICODE_CONNECT_PUNCTUATION, + G_UNICODE_DASH_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, + G_UNICODE_FINAL_PUNCTUATION, + G_UNICODE_INITIAL_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CURRENCY_SYMBOL, + G_UNICODE_MODIFIER_SYMBOL, + G_UNICODE_MATH_SYMBOL, + G_UNICODE_OTHER_SYMBOL, + G_UNICODE_LINE_SEPARATOR, + G_UNICODE_PARAGRAPH_SEPARATOR, + G_UNICODE_SPACE_SEPARATOR +} GUnicodeType; + +/** + * G_UNICODE_COMBINING_MARK: + * + * Older name for %G_UNICODE_SPACING_MARK. + * + * Deprecated: 2.30: Use %G_UNICODE_SPACING_MARK. + */ +#define G_UNICODE_COMBINING_MARK G_UNICODE_SPACING_MARK GLIB_DEPRECATED_MACRO_IN_2_30_FOR(G_UNICODE_SPACING_MARK) + +/** + * GUnicodeBreakType: + * @G_UNICODE_BREAK_MANDATORY: Mandatory Break (BK) + * @G_UNICODE_BREAK_CARRIAGE_RETURN: Carriage Return (CR) + * @G_UNICODE_BREAK_LINE_FEED: Line Feed (LF) + * @G_UNICODE_BREAK_COMBINING_MARK: Attached Characters and Combining Marks (CM) + * @G_UNICODE_BREAK_SURROGATE: Surrogates (SG) + * @G_UNICODE_BREAK_ZERO_WIDTH_SPACE: Zero Width Space (ZW) + * @G_UNICODE_BREAK_INSEPARABLE: Inseparable (IN) + * @G_UNICODE_BREAK_NON_BREAKING_GLUE: Non-breaking ("Glue") (GL) + * @G_UNICODE_BREAK_CONTINGENT: Contingent Break Opportunity (CB) + * @G_UNICODE_BREAK_SPACE: Space (SP) + * @G_UNICODE_BREAK_AFTER: Break Opportunity After (BA) + * @G_UNICODE_BREAK_BEFORE: Break Opportunity Before (BB) + * @G_UNICODE_BREAK_BEFORE_AND_AFTER: Break Opportunity Before and After (B2) + * @G_UNICODE_BREAK_HYPHEN: Hyphen (HY) + * @G_UNICODE_BREAK_NON_STARTER: Nonstarter (NS) + * @G_UNICODE_BREAK_OPEN_PUNCTUATION: Opening Punctuation (OP) + * @G_UNICODE_BREAK_CLOSE_PUNCTUATION: Closing Punctuation (CL) + * @G_UNICODE_BREAK_QUOTATION: Ambiguous Quotation (QU) + * @G_UNICODE_BREAK_EXCLAMATION: Exclamation/Interrogation (EX) + * @G_UNICODE_BREAK_IDEOGRAPHIC: Ideographic (ID) + * @G_UNICODE_BREAK_NUMERIC: Numeric (NU) + * @G_UNICODE_BREAK_INFIX_SEPARATOR: Infix Separator (Numeric) (IS) + * @G_UNICODE_BREAK_SYMBOL: Symbols Allowing Break After (SY) + * @G_UNICODE_BREAK_ALPHABETIC: Ordinary Alphabetic and Symbol Characters (AL) + * @G_UNICODE_BREAK_PREFIX: Prefix (Numeric) (PR) + * @G_UNICODE_BREAK_POSTFIX: Postfix (Numeric) (PO) + * @G_UNICODE_BREAK_COMPLEX_CONTEXT: Complex Content Dependent (South East Asian) (SA) + * @G_UNICODE_BREAK_AMBIGUOUS: Ambiguous (Alphabetic or Ideographic) (AI) + * @G_UNICODE_BREAK_UNKNOWN: Unknown (XX) + * @G_UNICODE_BREAK_NEXT_LINE: Next Line (NL) + * @G_UNICODE_BREAK_WORD_JOINER: Word Joiner (WJ) + * @G_UNICODE_BREAK_HANGUL_L_JAMO: Hangul L Jamo (JL) + * @G_UNICODE_BREAK_HANGUL_V_JAMO: Hangul V Jamo (JV) + * @G_UNICODE_BREAK_HANGUL_T_JAMO: Hangul T Jamo (JT) + * @G_UNICODE_BREAK_HANGUL_LV_SYLLABLE: Hangul LV Syllable (H2) + * @G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE: Hangul LVT Syllable (H3) + * @G_UNICODE_BREAK_CLOSE_PARANTHESIS: Closing Parenthesis (CP). Since 2.28. Deprecated: 2.70: Use %G_UNICODE_BREAK_CLOSE_PARENTHESIS instead. + * @G_UNICODE_BREAK_CLOSE_PARENTHESIS: Closing Parenthesis (CP). Since 2.70 + * @G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER: Conditional Japanese Starter (CJ). Since: 2.32 + * @G_UNICODE_BREAK_HEBREW_LETTER: Hebrew Letter (HL). Since: 2.32 + * @G_UNICODE_BREAK_REGIONAL_INDICATOR: Regional Indicator (RI). Since: 2.36 + * @G_UNICODE_BREAK_EMOJI_BASE: Emoji Base (EB). Since: 2.50 + * @G_UNICODE_BREAK_EMOJI_MODIFIER: Emoji Modifier (EM). Since: 2.50 + * @G_UNICODE_BREAK_ZERO_WIDTH_JOINER: Zero Width Joiner (ZWJ). Since: 2.50 + * + * These are the possible line break classifications. + * + * Since new unicode versions may add new types here, applications should be ready + * to handle unknown values. They may be regarded as %G_UNICODE_BREAK_UNKNOWN. + * + * See [Unicode Line Breaking Algorithm](http://www.unicode.org/unicode/reports/tr14/). + */ +typedef enum +{ + G_UNICODE_BREAK_MANDATORY, + G_UNICODE_BREAK_CARRIAGE_RETURN, + G_UNICODE_BREAK_LINE_FEED, + G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_SURROGATE, + G_UNICODE_BREAK_ZERO_WIDTH_SPACE, + G_UNICODE_BREAK_INSEPARABLE, + G_UNICODE_BREAK_NON_BREAKING_GLUE, + G_UNICODE_BREAK_CONTINGENT, + G_UNICODE_BREAK_SPACE, + G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_BEFORE, + G_UNICODE_BREAK_BEFORE_AND_AFTER, + G_UNICODE_BREAK_HYPHEN, + G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_QUOTATION, + G_UNICODE_BREAK_EXCLAMATION, + G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_INFIX_SEPARATOR, + G_UNICODE_BREAK_SYMBOL, + G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NEXT_LINE, + G_UNICODE_BREAK_WORD_JOINER, + G_UNICODE_BREAK_HANGUL_L_JAMO, + G_UNICODE_BREAK_HANGUL_V_JAMO, + G_UNICODE_BREAK_HANGUL_T_JAMO, + G_UNICODE_BREAK_HANGUL_LV_SYLLABLE, + G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE, + G_UNICODE_BREAK_CLOSE_PARANTHESIS, + G_UNICODE_BREAK_CLOSE_PARENTHESIS GLIB_AVAILABLE_ENUMERATOR_IN_2_70 = G_UNICODE_BREAK_CLOSE_PARANTHESIS, + G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER, + G_UNICODE_BREAK_HEBREW_LETTER, + G_UNICODE_BREAK_REGIONAL_INDICATOR, + G_UNICODE_BREAK_EMOJI_BASE, + G_UNICODE_BREAK_EMOJI_MODIFIER, + G_UNICODE_BREAK_ZERO_WIDTH_JOINER +} GUnicodeBreakType; + +/** + * GUnicodeScript: + * @G_UNICODE_SCRIPT_INVALID_CODE: + * a value never returned from g_unichar_get_script() + * @G_UNICODE_SCRIPT_COMMON: a character used by multiple different scripts + * @G_UNICODE_SCRIPT_INHERITED: a mark glyph that takes its script from the + * base glyph to which it is attached + * @G_UNICODE_SCRIPT_ARABIC: Arabic + * @G_UNICODE_SCRIPT_ARMENIAN: Armenian + * @G_UNICODE_SCRIPT_BENGALI: Bengali + * @G_UNICODE_SCRIPT_BOPOMOFO: Bopomofo + * @G_UNICODE_SCRIPT_CHEROKEE: Cherokee + * @G_UNICODE_SCRIPT_COPTIC: Coptic + * @G_UNICODE_SCRIPT_CYRILLIC: Cyrillic + * @G_UNICODE_SCRIPT_DESERET: Deseret + * @G_UNICODE_SCRIPT_DEVANAGARI: Devanagari + * @G_UNICODE_SCRIPT_ETHIOPIC: Ethiopic + * @G_UNICODE_SCRIPT_GEORGIAN: Georgian + * @G_UNICODE_SCRIPT_GOTHIC: Gothic + * @G_UNICODE_SCRIPT_GREEK: Greek + * @G_UNICODE_SCRIPT_GUJARATI: Gujarati + * @G_UNICODE_SCRIPT_GURMUKHI: Gurmukhi + * @G_UNICODE_SCRIPT_HAN: Han + * @G_UNICODE_SCRIPT_HANGUL: Hangul + * @G_UNICODE_SCRIPT_HEBREW: Hebrew + * @G_UNICODE_SCRIPT_HIRAGANA: Hiragana + * @G_UNICODE_SCRIPT_KANNADA: Kannada + * @G_UNICODE_SCRIPT_KATAKANA: Katakana + * @G_UNICODE_SCRIPT_KHMER: Khmer + * @G_UNICODE_SCRIPT_LAO: Lao + * @G_UNICODE_SCRIPT_LATIN: Latin + * @G_UNICODE_SCRIPT_MALAYALAM: Malayalam + * @G_UNICODE_SCRIPT_MONGOLIAN: Mongolian + * @G_UNICODE_SCRIPT_MYANMAR: Myanmar + * @G_UNICODE_SCRIPT_OGHAM: Ogham + * @G_UNICODE_SCRIPT_OLD_ITALIC: Old Italic + * @G_UNICODE_SCRIPT_ORIYA: Oriya + * @G_UNICODE_SCRIPT_RUNIC: Runic + * @G_UNICODE_SCRIPT_SINHALA: Sinhala + * @G_UNICODE_SCRIPT_SYRIAC: Syriac + * @G_UNICODE_SCRIPT_TAMIL: Tamil + * @G_UNICODE_SCRIPT_TELUGU: Telugu + * @G_UNICODE_SCRIPT_THAANA: Thaana + * @G_UNICODE_SCRIPT_THAI: Thai + * @G_UNICODE_SCRIPT_TIBETAN: Tibetan + * @G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL: + * Canadian Aboriginal + * @G_UNICODE_SCRIPT_YI: Yi + * @G_UNICODE_SCRIPT_TAGALOG: Tagalog + * @G_UNICODE_SCRIPT_HANUNOO: Hanunoo + * @G_UNICODE_SCRIPT_BUHID: Buhid + * @G_UNICODE_SCRIPT_TAGBANWA: Tagbanwa + * @G_UNICODE_SCRIPT_BRAILLE: Braille + * @G_UNICODE_SCRIPT_CYPRIOT: Cypriot + * @G_UNICODE_SCRIPT_LIMBU: Limbu + * @G_UNICODE_SCRIPT_OSMANYA: Osmanya + * @G_UNICODE_SCRIPT_SHAVIAN: Shavian + * @G_UNICODE_SCRIPT_LINEAR_B: Linear B + * @G_UNICODE_SCRIPT_TAI_LE: Tai Le + * @G_UNICODE_SCRIPT_UGARITIC: Ugaritic + * @G_UNICODE_SCRIPT_NEW_TAI_LUE: + * New Tai Lue + * @G_UNICODE_SCRIPT_BUGINESE: Buginese + * @G_UNICODE_SCRIPT_GLAGOLITIC: Glagolitic + * @G_UNICODE_SCRIPT_TIFINAGH: Tifinagh + * @G_UNICODE_SCRIPT_SYLOTI_NAGRI: + * Syloti Nagri + * @G_UNICODE_SCRIPT_OLD_PERSIAN: + * Old Persian + * @G_UNICODE_SCRIPT_KHAROSHTHI: Kharoshthi + * @G_UNICODE_SCRIPT_UNKNOWN: an unassigned code point + * @G_UNICODE_SCRIPT_BALINESE: Balinese + * @G_UNICODE_SCRIPT_CUNEIFORM: Cuneiform + * @G_UNICODE_SCRIPT_PHOENICIAN: Phoenician + * @G_UNICODE_SCRIPT_PHAGS_PA: Phags-pa + * @G_UNICODE_SCRIPT_NKO: N'Ko + * @G_UNICODE_SCRIPT_KAYAH_LI: Kayah Li. Since 2.16.3 + * @G_UNICODE_SCRIPT_LEPCHA: Lepcha. Since 2.16.3 + * @G_UNICODE_SCRIPT_REJANG: Rejang. Since 2.16.3 + * @G_UNICODE_SCRIPT_SUNDANESE: Sundanese. Since 2.16.3 + * @G_UNICODE_SCRIPT_SAURASHTRA: Saurashtra. Since 2.16.3 + * @G_UNICODE_SCRIPT_CHAM: Cham. Since 2.16.3 + * @G_UNICODE_SCRIPT_OL_CHIKI: Ol Chiki. Since 2.16.3 + * @G_UNICODE_SCRIPT_VAI: Vai. Since 2.16.3 + * @G_UNICODE_SCRIPT_CARIAN: Carian. Since 2.16.3 + * @G_UNICODE_SCRIPT_LYCIAN: Lycian. Since 2.16.3 + * @G_UNICODE_SCRIPT_LYDIAN: Lydian. Since 2.16.3 + * @G_UNICODE_SCRIPT_AVESTAN: Avestan. Since 2.26 + * @G_UNICODE_SCRIPT_BAMUM: Bamum. Since 2.26 + * @G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS: + * Egyptian Hieroglpyhs. Since 2.26 + * @G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC: + * Imperial Aramaic. Since 2.26 + * @G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI: + * Inscriptional Pahlavi. Since 2.26 + * @G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN: + * Inscriptional Parthian. Since 2.26 + * @G_UNICODE_SCRIPT_JAVANESE: Javanese. Since 2.26 + * @G_UNICODE_SCRIPT_KAITHI: Kaithi. Since 2.26 + * @G_UNICODE_SCRIPT_LISU: Lisu. Since 2.26 + * @G_UNICODE_SCRIPT_MEETEI_MAYEK: + * Meetei Mayek. Since 2.26 + * @G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN: + * Old South Arabian. Since 2.26 + * @G_UNICODE_SCRIPT_OLD_TURKIC: Old Turkic. Since 2.28 + * @G_UNICODE_SCRIPT_SAMARITAN: Samaritan. Since 2.26 + * @G_UNICODE_SCRIPT_TAI_THAM: Tai Tham. Since 2.26 + * @G_UNICODE_SCRIPT_TAI_VIET: Tai Viet. Since 2.26 + * @G_UNICODE_SCRIPT_BATAK: Batak. Since 2.28 + * @G_UNICODE_SCRIPT_BRAHMI: Brahmi. Since 2.28 + * @G_UNICODE_SCRIPT_MANDAIC: Mandaic. Since 2.28 + * @G_UNICODE_SCRIPT_CHAKMA: Chakma. Since: 2.32 + * @G_UNICODE_SCRIPT_MEROITIC_CURSIVE: Meroitic Cursive. Since: 2.32 + * @G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS: Meroitic Hieroglyphs. Since: 2.32 + * @G_UNICODE_SCRIPT_MIAO: Miao. Since: 2.32 + * @G_UNICODE_SCRIPT_SHARADA: Sharada. Since: 2.32 + * @G_UNICODE_SCRIPT_SORA_SOMPENG: Sora Sompeng. Since: 2.32 + * @G_UNICODE_SCRIPT_TAKRI: Takri. Since: 2.32 + * @G_UNICODE_SCRIPT_BASSA_VAH: Bassa. Since: 2.42 + * @G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN: Caucasian Albanian. Since: 2.42 + * @G_UNICODE_SCRIPT_DUPLOYAN: Duployan. Since: 2.42 + * @G_UNICODE_SCRIPT_ELBASAN: Elbasan. Since: 2.42 + * @G_UNICODE_SCRIPT_GRANTHA: Grantha. Since: 2.42 + * @G_UNICODE_SCRIPT_KHOJKI: Kjohki. Since: 2.42 + * @G_UNICODE_SCRIPT_KHUDAWADI: Khudawadi, Sindhi. Since: 2.42 + * @G_UNICODE_SCRIPT_LINEAR_A: Linear A. Since: 2.42 + * @G_UNICODE_SCRIPT_MAHAJANI: Mahajani. Since: 2.42 + * @G_UNICODE_SCRIPT_MANICHAEAN: Manichaean. Since: 2.42 + * @G_UNICODE_SCRIPT_MENDE_KIKAKUI: Mende Kikakui. Since: 2.42 + * @G_UNICODE_SCRIPT_MODI: Modi. Since: 2.42 + * @G_UNICODE_SCRIPT_MRO: Mro. Since: 2.42 + * @G_UNICODE_SCRIPT_NABATAEAN: Nabataean. Since: 2.42 + * @G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN: Old North Arabian. Since: 2.42 + * @G_UNICODE_SCRIPT_OLD_PERMIC: Old Permic. Since: 2.42 + * @G_UNICODE_SCRIPT_PAHAWH_HMONG: Pahawh Hmong. Since: 2.42 + * @G_UNICODE_SCRIPT_PALMYRENE: Palmyrene. Since: 2.42 + * @G_UNICODE_SCRIPT_PAU_CIN_HAU: Pau Cin Hau. Since: 2.42 + * @G_UNICODE_SCRIPT_PSALTER_PAHLAVI: Psalter Pahlavi. Since: 2.42 + * @G_UNICODE_SCRIPT_SIDDHAM: Siddham. Since: 2.42 + * @G_UNICODE_SCRIPT_TIRHUTA: Tirhuta. Since: 2.42 + * @G_UNICODE_SCRIPT_WARANG_CITI: Warang Citi. Since: 2.42 + * @G_UNICODE_SCRIPT_AHOM: Ahom. Since: 2.48 + * @G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS: Anatolian Hieroglyphs. Since: 2.48 + * @G_UNICODE_SCRIPT_HATRAN: Hatran. Since: 2.48 + * @G_UNICODE_SCRIPT_MULTANI: Multani. Since: 2.48 + * @G_UNICODE_SCRIPT_OLD_HUNGARIAN: Old Hungarian. Since: 2.48 + * @G_UNICODE_SCRIPT_SIGNWRITING: Signwriting. Since: 2.48 + * @G_UNICODE_SCRIPT_ADLAM: Adlam. Since: 2.50 + * @G_UNICODE_SCRIPT_BHAIKSUKI: Bhaiksuki. Since: 2.50 + * @G_UNICODE_SCRIPT_MARCHEN: Marchen. Since: 2.50 + * @G_UNICODE_SCRIPT_NEWA: Newa. Since: 2.50 + * @G_UNICODE_SCRIPT_OSAGE: Osage. Since: 2.50 + * @G_UNICODE_SCRIPT_TANGUT: Tangut. Since: 2.50 + * @G_UNICODE_SCRIPT_MASARAM_GONDI: Masaram Gondi. Since: 2.54 + * @G_UNICODE_SCRIPT_NUSHU: Nushu. Since: 2.54 + * @G_UNICODE_SCRIPT_SOYOMBO: Soyombo. Since: 2.54 + * @G_UNICODE_SCRIPT_ZANABAZAR_SQUARE: Zanabazar Square. Since: 2.54 + * @G_UNICODE_SCRIPT_DOGRA: Dogra. Since: 2.58 + * @G_UNICODE_SCRIPT_GUNJALA_GONDI: Gunjala Gondi. Since: 2.58 + * @G_UNICODE_SCRIPT_HANIFI_ROHINGYA: Hanifi Rohingya. Since: 2.58 + * @G_UNICODE_SCRIPT_MAKASAR: Makasar. Since: 2.58 + * @G_UNICODE_SCRIPT_MEDEFAIDRIN: Medefaidrin. Since: 2.58 + * @G_UNICODE_SCRIPT_OLD_SOGDIAN: Old Sogdian. Since: 2.58 + * @G_UNICODE_SCRIPT_SOGDIAN: Sogdian. Since: 2.58 + * @G_UNICODE_SCRIPT_ELYMAIC: Elym. Since: 2.62 + * @G_UNICODE_SCRIPT_NANDINAGARI: Nand. Since: 2.62 + * @G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG: Rohg. Since: 2.62 + * @G_UNICODE_SCRIPT_WANCHO: Wcho. Since: 2.62 + * @G_UNICODE_SCRIPT_CHORASMIAN: Chorasmian. Since: 2.66 + * @G_UNICODE_SCRIPT_DIVES_AKURU: Dives Akuru. Since: 2.66 + * @G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT: Khitan small script. Since: 2.66 + * @G_UNICODE_SCRIPT_YEZIDI: Yezidi. Since: 2.66 + * @G_UNICODE_SCRIPT_CYPRO_MINOAN: Cypro-Minoan. Since: 2.72 + * @G_UNICODE_SCRIPT_OLD_UYGHUR: Old Uyghur. Since: 2.72 + * @G_UNICODE_SCRIPT_TANGSA: Tangsa. Since: 2.72 + * @G_UNICODE_SCRIPT_TOTO: Toto. Since: 2.72 + * @G_UNICODE_SCRIPT_VITHKUQI: Vithkuqi. Since: 2.72 + * @G_UNICODE_SCRIPT_MATH: Mathematical notation. Since: 2.72 + * @G_UNICODE_SCRIPT_KAWI: Kawi. Since 2.74 + * @G_UNICODE_SCRIPT_NAG_MUNDARI: Nag Mundari. Since 2.74 + * + * The #GUnicodeScript enumeration identifies different writing + * systems. The values correspond to the names as defined in the + * Unicode standard. The enumeration has been added in GLib 2.14, + * and is interchangeable with #PangoScript. + * + * Note that new types may be added in the future. Applications + * should be ready to handle unknown values. + * See [Unicode Standard Annex #24: Script names](http://www.unicode.org/reports/tr24/). + */ +typedef enum +{ /* ISO 15924 code */ + G_UNICODE_SCRIPT_INVALID_CODE = -1, + G_UNICODE_SCRIPT_COMMON = 0, /* Zyyy */ + G_UNICODE_SCRIPT_INHERITED, /* Zinh (Qaai) */ + G_UNICODE_SCRIPT_ARABIC, /* Arab */ + G_UNICODE_SCRIPT_ARMENIAN, /* Armn */ + G_UNICODE_SCRIPT_BENGALI, /* Beng */ + G_UNICODE_SCRIPT_BOPOMOFO, /* Bopo */ + G_UNICODE_SCRIPT_CHEROKEE, /* Cher */ + G_UNICODE_SCRIPT_COPTIC, /* Copt (Qaac) */ + G_UNICODE_SCRIPT_CYRILLIC, /* Cyrl (Cyrs) */ + G_UNICODE_SCRIPT_DESERET, /* Dsrt */ + G_UNICODE_SCRIPT_DEVANAGARI, /* Deva */ + G_UNICODE_SCRIPT_ETHIOPIC, /* Ethi */ + G_UNICODE_SCRIPT_GEORGIAN, /* Geor (Geon, Geoa) */ + G_UNICODE_SCRIPT_GOTHIC, /* Goth */ + G_UNICODE_SCRIPT_GREEK, /* Grek */ + G_UNICODE_SCRIPT_GUJARATI, /* Gujr */ + G_UNICODE_SCRIPT_GURMUKHI, /* Guru */ + G_UNICODE_SCRIPT_HAN, /* Hani */ + G_UNICODE_SCRIPT_HANGUL, /* Hang */ + G_UNICODE_SCRIPT_HEBREW, /* Hebr */ + G_UNICODE_SCRIPT_HIRAGANA, /* Hira */ + G_UNICODE_SCRIPT_KANNADA, /* Knda */ + G_UNICODE_SCRIPT_KATAKANA, /* Kana */ + G_UNICODE_SCRIPT_KHMER, /* Khmr */ + G_UNICODE_SCRIPT_LAO, /* Laoo */ + G_UNICODE_SCRIPT_LATIN, /* Latn (Latf, Latg) */ + G_UNICODE_SCRIPT_MALAYALAM, /* Mlym */ + G_UNICODE_SCRIPT_MONGOLIAN, /* Mong */ + G_UNICODE_SCRIPT_MYANMAR, /* Mymr */ + G_UNICODE_SCRIPT_OGHAM, /* Ogam */ + G_UNICODE_SCRIPT_OLD_ITALIC, /* Ital */ + G_UNICODE_SCRIPT_ORIYA, /* Orya */ + G_UNICODE_SCRIPT_RUNIC, /* Runr */ + G_UNICODE_SCRIPT_SINHALA, /* Sinh */ + G_UNICODE_SCRIPT_SYRIAC, /* Syrc (Syrj, Syrn, Syre) */ + G_UNICODE_SCRIPT_TAMIL, /* Taml */ + G_UNICODE_SCRIPT_TELUGU, /* Telu */ + G_UNICODE_SCRIPT_THAANA, /* Thaa */ + G_UNICODE_SCRIPT_THAI, /* Thai */ + G_UNICODE_SCRIPT_TIBETAN, /* Tibt */ + G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, /* Cans */ + G_UNICODE_SCRIPT_YI, /* Yiii */ + G_UNICODE_SCRIPT_TAGALOG, /* Tglg */ + G_UNICODE_SCRIPT_HANUNOO, /* Hano */ + G_UNICODE_SCRIPT_BUHID, /* Buhd */ + G_UNICODE_SCRIPT_TAGBANWA, /* Tagb */ + + /* Unicode-4.0 additions */ + G_UNICODE_SCRIPT_BRAILLE, /* Brai */ + G_UNICODE_SCRIPT_CYPRIOT, /* Cprt */ + G_UNICODE_SCRIPT_LIMBU, /* Limb */ + G_UNICODE_SCRIPT_OSMANYA, /* Osma */ + G_UNICODE_SCRIPT_SHAVIAN, /* Shaw */ + G_UNICODE_SCRIPT_LINEAR_B, /* Linb */ + G_UNICODE_SCRIPT_TAI_LE, /* Tale */ + G_UNICODE_SCRIPT_UGARITIC, /* Ugar */ + + /* Unicode-4.1 additions */ + G_UNICODE_SCRIPT_NEW_TAI_LUE, /* Talu */ + G_UNICODE_SCRIPT_BUGINESE, /* Bugi */ + G_UNICODE_SCRIPT_GLAGOLITIC, /* Glag */ + G_UNICODE_SCRIPT_TIFINAGH, /* Tfng */ + G_UNICODE_SCRIPT_SYLOTI_NAGRI, /* Sylo */ + G_UNICODE_SCRIPT_OLD_PERSIAN, /* Xpeo */ + G_UNICODE_SCRIPT_KHAROSHTHI, /* Khar */ + + /* Unicode-5.0 additions */ + G_UNICODE_SCRIPT_UNKNOWN, /* Zzzz */ + G_UNICODE_SCRIPT_BALINESE, /* Bali */ + G_UNICODE_SCRIPT_CUNEIFORM, /* Xsux */ + G_UNICODE_SCRIPT_PHOENICIAN, /* Phnx */ + G_UNICODE_SCRIPT_PHAGS_PA, /* Phag */ + G_UNICODE_SCRIPT_NKO, /* Nkoo */ + + /* Unicode-5.1 additions */ + G_UNICODE_SCRIPT_KAYAH_LI, /* Kali */ + G_UNICODE_SCRIPT_LEPCHA, /* Lepc */ + G_UNICODE_SCRIPT_REJANG, /* Rjng */ + G_UNICODE_SCRIPT_SUNDANESE, /* Sund */ + G_UNICODE_SCRIPT_SAURASHTRA, /* Saur */ + G_UNICODE_SCRIPT_CHAM, /* Cham */ + G_UNICODE_SCRIPT_OL_CHIKI, /* Olck */ + G_UNICODE_SCRIPT_VAI, /* Vaii */ + G_UNICODE_SCRIPT_CARIAN, /* Cari */ + G_UNICODE_SCRIPT_LYCIAN, /* Lyci */ + G_UNICODE_SCRIPT_LYDIAN, /* Lydi */ + + /* Unicode-5.2 additions */ + G_UNICODE_SCRIPT_AVESTAN, /* Avst */ + G_UNICODE_SCRIPT_BAMUM, /* Bamu */ + G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS, /* Egyp */ + G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC, /* Armi */ + G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI, /* Phli */ + G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN, /* Prti */ + G_UNICODE_SCRIPT_JAVANESE, /* Java */ + G_UNICODE_SCRIPT_KAITHI, /* Kthi */ + G_UNICODE_SCRIPT_LISU, /* Lisu */ + G_UNICODE_SCRIPT_MEETEI_MAYEK, /* Mtei */ + G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN, /* Sarb */ + G_UNICODE_SCRIPT_OLD_TURKIC, /* Orkh */ + G_UNICODE_SCRIPT_SAMARITAN, /* Samr */ + G_UNICODE_SCRIPT_TAI_THAM, /* Lana */ + G_UNICODE_SCRIPT_TAI_VIET, /* Tavt */ + + /* Unicode-6.0 additions */ + G_UNICODE_SCRIPT_BATAK, /* Batk */ + G_UNICODE_SCRIPT_BRAHMI, /* Brah */ + G_UNICODE_SCRIPT_MANDAIC, /* Mand */ + + /* Unicode-6.1 additions */ + G_UNICODE_SCRIPT_CHAKMA, /* Cakm */ + G_UNICODE_SCRIPT_MEROITIC_CURSIVE, /* Merc */ + G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS, /* Mero */ + G_UNICODE_SCRIPT_MIAO, /* Plrd */ + G_UNICODE_SCRIPT_SHARADA, /* Shrd */ + G_UNICODE_SCRIPT_SORA_SOMPENG, /* Sora */ + G_UNICODE_SCRIPT_TAKRI, /* Takr */ + + /* Unicode 7.0 additions */ + G_UNICODE_SCRIPT_BASSA_VAH, /* Bass */ + G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN, /* Aghb */ + G_UNICODE_SCRIPT_DUPLOYAN, /* Dupl */ + G_UNICODE_SCRIPT_ELBASAN, /* Elba */ + G_UNICODE_SCRIPT_GRANTHA, /* Gran */ + G_UNICODE_SCRIPT_KHOJKI, /* Khoj */ + G_UNICODE_SCRIPT_KHUDAWADI, /* Sind */ + G_UNICODE_SCRIPT_LINEAR_A, /* Lina */ + G_UNICODE_SCRIPT_MAHAJANI, /* Mahj */ + G_UNICODE_SCRIPT_MANICHAEAN, /* Mani */ + G_UNICODE_SCRIPT_MENDE_KIKAKUI, /* Mend */ + G_UNICODE_SCRIPT_MODI, /* Modi */ + G_UNICODE_SCRIPT_MRO, /* Mroo */ + G_UNICODE_SCRIPT_NABATAEAN, /* Nbat */ + G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN, /* Narb */ + G_UNICODE_SCRIPT_OLD_PERMIC, /* Perm */ + G_UNICODE_SCRIPT_PAHAWH_HMONG, /* Hmng */ + G_UNICODE_SCRIPT_PALMYRENE, /* Palm */ + G_UNICODE_SCRIPT_PAU_CIN_HAU, /* Pauc */ + G_UNICODE_SCRIPT_PSALTER_PAHLAVI, /* Phlp */ + G_UNICODE_SCRIPT_SIDDHAM, /* Sidd */ + G_UNICODE_SCRIPT_TIRHUTA, /* Tirh */ + G_UNICODE_SCRIPT_WARANG_CITI, /* Wara */ + + /* Unicode 8.0 additions */ + G_UNICODE_SCRIPT_AHOM, /* Ahom */ + G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS, /* Hluw */ + G_UNICODE_SCRIPT_HATRAN, /* Hatr */ + G_UNICODE_SCRIPT_MULTANI, /* Mult */ + G_UNICODE_SCRIPT_OLD_HUNGARIAN, /* Hung */ + G_UNICODE_SCRIPT_SIGNWRITING, /* Sgnw */ + + /* Unicode 9.0 additions */ + G_UNICODE_SCRIPT_ADLAM, /* Adlm */ + G_UNICODE_SCRIPT_BHAIKSUKI, /* Bhks */ + G_UNICODE_SCRIPT_MARCHEN, /* Marc */ + G_UNICODE_SCRIPT_NEWA, /* Newa */ + G_UNICODE_SCRIPT_OSAGE, /* Osge */ + G_UNICODE_SCRIPT_TANGUT, /* Tang */ + + /* Unicode 10.0 additions */ + G_UNICODE_SCRIPT_MASARAM_GONDI, /* Gonm */ + G_UNICODE_SCRIPT_NUSHU, /* Nshu */ + G_UNICODE_SCRIPT_SOYOMBO, /* Soyo */ + G_UNICODE_SCRIPT_ZANABAZAR_SQUARE, /* Zanb */ + + /* Unicode 11.0 additions */ + G_UNICODE_SCRIPT_DOGRA, /* Dogr */ + G_UNICODE_SCRIPT_GUNJALA_GONDI, /* Gong */ + G_UNICODE_SCRIPT_HANIFI_ROHINGYA, /* Rohg */ + G_UNICODE_SCRIPT_MAKASAR, /* Maka */ + G_UNICODE_SCRIPT_MEDEFAIDRIN, /* Medf */ + G_UNICODE_SCRIPT_OLD_SOGDIAN, /* Sogo */ + G_UNICODE_SCRIPT_SOGDIAN, /* Sogd */ + + /* Unicode 12.0 additions */ + G_UNICODE_SCRIPT_ELYMAIC, /* Elym */ + G_UNICODE_SCRIPT_NANDINAGARI, /* Nand */ + G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG, /* Rohg */ + G_UNICODE_SCRIPT_WANCHO, /* Wcho */ + + /* Unicode 13.0 additions */ + G_UNICODE_SCRIPT_CHORASMIAN, /* Chrs */ + G_UNICODE_SCRIPT_DIVES_AKURU, /* Diak */ + G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT, /* Kits */ + G_UNICODE_SCRIPT_YEZIDI, /* Yezi */ + + /* Unicode 14.0 additions */ + G_UNICODE_SCRIPT_CYPRO_MINOAN, /* Cpmn */ + G_UNICODE_SCRIPT_OLD_UYGHUR, /* Ougr */ + G_UNICODE_SCRIPT_TANGSA, /* Tnsa */ + G_UNICODE_SCRIPT_TOTO, /* Toto */ + G_UNICODE_SCRIPT_VITHKUQI, /* Vith */ + + /* not really a Unicode script, but part of ISO 15924 */ + G_UNICODE_SCRIPT_MATH, /* Zmth */ + + /* Unicode 15.0 additions */ + G_UNICODE_SCRIPT_KAWI GLIB_AVAILABLE_ENUMERATOR_IN_2_74, /* Kawi */ + G_UNICODE_SCRIPT_NAG_MUNDARI GLIB_AVAILABLE_ENUMERATOR_IN_2_74, /* Nag Mundari */ +} GUnicodeScript; + +GLIB_AVAILABLE_IN_ALL +guint32 g_unicode_script_to_iso15924 (GUnicodeScript script); +GLIB_AVAILABLE_IN_ALL +GUnicodeScript g_unicode_script_from_iso15924 (guint32 iso15924); + +/* These are all analogs of the functions. + */ +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isalnum (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isalpha (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_iscntrl (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isdigit (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isgraph (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_islower (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isprint (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_ispunct (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isspace (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isupper (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isxdigit (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_istitle (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_isdefined (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_iswide (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_iswide_cjk(gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_iszerowidth(gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_ismark (gunichar c) G_GNUC_CONST; + +/* More functions. These convert between the three cases. + * See the Unicode book to understand title case. */ +GLIB_AVAILABLE_IN_ALL +gunichar g_unichar_toupper (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gunichar g_unichar_tolower (gunichar c) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gunichar g_unichar_totitle (gunichar c) G_GNUC_CONST; + +/* If C is a digit (according to 'g_unichar_isdigit'), then return its + numeric value. Otherwise return -1. */ +GLIB_AVAILABLE_IN_ALL +gint g_unichar_digit_value (gunichar c) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gint g_unichar_xdigit_value (gunichar c) G_GNUC_CONST; + +/* Return the Unicode character type of a given character. */ +GLIB_AVAILABLE_IN_ALL +GUnicodeType g_unichar_type (gunichar c) G_GNUC_CONST; + +/* Return the line break property for a given character */ +GLIB_AVAILABLE_IN_ALL +GUnicodeBreakType g_unichar_break_type (gunichar c) G_GNUC_CONST; + +/* Returns the combining class for a given character */ +GLIB_AVAILABLE_IN_ALL +gint g_unichar_combining_class (gunichar uc) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_get_mirror_char (gunichar ch, + gunichar *mirrored_ch); + +GLIB_AVAILABLE_IN_ALL +GUnicodeScript g_unichar_get_script (gunichar ch) G_GNUC_CONST; + +/* Validate a Unicode character */ +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_validate (gunichar ch) G_GNUC_CONST; + +/* Pairwise canonical compose/decompose */ +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_compose (gunichar a, + gunichar b, + gunichar *ch); +GLIB_AVAILABLE_IN_ALL +gboolean g_unichar_decompose (gunichar ch, + gunichar *a, + gunichar *b); + +GLIB_AVAILABLE_IN_ALL +gsize g_unichar_fully_decompose (gunichar ch, + gboolean compat, + gunichar *result, + gsize result_len); + +/** + * G_UNICHAR_MAX_DECOMPOSITION_LENGTH: + * + * The maximum length (in codepoints) of a compatibility or canonical + * decomposition of a single Unicode character. + * + * This is as defined by Unicode 6.1. + * + * Since: 2.32 + */ +#define G_UNICHAR_MAX_DECOMPOSITION_LENGTH 18 /* codepoints */ + +/* Compute canonical ordering of a string in-place. This rearranges + decomposed characters in the string according to their combining + classes. See the Unicode manual for more information. */ +GLIB_AVAILABLE_IN_ALL +void g_unicode_canonical_ordering (gunichar *string, + gsize len); + + +GLIB_DEPRECATED_IN_2_30 +gunichar *g_unicode_canonical_decomposition (gunichar ch, + gsize *result_len) G_GNUC_MALLOC; + +/* Array of skip-bytes-per-initial character. + */ +GLIB_VAR const gchar * const g_utf8_skip; + +/** + * g_utf8_next_char: + * @p: Pointer to the start of a valid UTF-8 character + * + * Skips to the next character in a UTF-8 string. + * + * The string must be valid; this macro is as fast as possible, and has + * no error-checking. + * + * You would use this macro to iterate over a string character by character. + * + * The macro returns the start of the next UTF-8 character. + * + * Before using this macro, use g_utf8_validate() to validate strings + * that may contain invalid UTF-8. + */ +#define g_utf8_next_char(p) (char *)((p) + g_utf8_skip[*(const guchar *)(p)]) + +GLIB_AVAILABLE_IN_ALL +gunichar g_utf8_get_char (const gchar *p) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gunichar g_utf8_get_char_validated (const gchar *p, + gssize max_len) G_GNUC_PURE; + +GLIB_AVAILABLE_IN_ALL +gchar* g_utf8_offset_to_pointer (const gchar *str, + glong offset) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +glong g_utf8_pointer_to_offset (const gchar *str, + const gchar *pos) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gchar* g_utf8_prev_char (const gchar *p) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gchar* g_utf8_find_next_char (const gchar *p, + const gchar *end) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gchar* g_utf8_find_prev_char (const gchar *str, + const gchar *p) G_GNUC_PURE; + +GLIB_AVAILABLE_IN_ALL +glong g_utf8_strlen (const gchar *p, + gssize max) G_GNUC_PURE; + +GLIB_AVAILABLE_IN_2_30 +gchar *g_utf8_substring (const gchar *str, + glong start_pos, + glong end_pos) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gchar *g_utf8_strncpy (gchar *dest, + const gchar *src, + gsize n); + +/* Find the UTF-8 character corresponding to ch, in string p. These + functions are equivalants to strchr and strrchr */ +GLIB_AVAILABLE_IN_ALL +gchar* g_utf8_strchr (const gchar *p, + gssize len, + gunichar c); +GLIB_AVAILABLE_IN_ALL +gchar* g_utf8_strrchr (const gchar *p, + gssize len, + gunichar c); +GLIB_AVAILABLE_IN_ALL +gchar* g_utf8_strreverse (const gchar *str, + gssize len); + +GLIB_AVAILABLE_IN_ALL +gunichar2 *g_utf8_to_utf16 (const gchar *str, + glong len, + glong *items_read, + glong *items_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gunichar * g_utf8_to_ucs4 (const gchar *str, + glong len, + glong *items_read, + glong *items_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gunichar * g_utf8_to_ucs4_fast (const gchar *str, + glong len, + glong *items_written) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gunichar * g_utf16_to_ucs4 (const gunichar2 *str, + glong len, + glong *items_read, + glong *items_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_utf16_to_utf8 (const gunichar2 *str, + glong len, + glong *items_read, + glong *items_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gunichar2 *g_ucs4_to_utf16 (const gunichar *str, + glong len, + glong *items_read, + glong *items_written, + GError **error) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar* g_ucs4_to_utf8 (const gunichar *str, + glong len, + glong *items_read, + glong *items_written, + GError **error) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gint g_unichar_to_utf8 (gunichar c, + gchar *outbuf); + +GLIB_AVAILABLE_IN_ALL +gboolean g_utf8_validate (const gchar *str, + gssize max_len, + const gchar **end); +GLIB_AVAILABLE_IN_2_60 +gboolean g_utf8_validate_len (const gchar *str, + gsize max_len, + const gchar **end); + +GLIB_AVAILABLE_IN_ALL +gchar *g_utf8_strup (const gchar *str, + gssize len) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar *g_utf8_strdown (const gchar *str, + gssize len) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar *g_utf8_casefold (const gchar *str, + gssize len) G_GNUC_MALLOC; + +/** + * GNormalizeMode: + * @G_NORMALIZE_DEFAULT: standardize differences that do not affect the + * text content, such as the above-mentioned accent representation + * @G_NORMALIZE_NFD: another name for %G_NORMALIZE_DEFAULT + * @G_NORMALIZE_DEFAULT_COMPOSE: like %G_NORMALIZE_DEFAULT, but with + * composed forms rather than a maximally decomposed form + * @G_NORMALIZE_NFC: another name for %G_NORMALIZE_DEFAULT_COMPOSE + * @G_NORMALIZE_ALL: beyond %G_NORMALIZE_DEFAULT also standardize the + * "compatibility" characters in Unicode, such as SUPERSCRIPT THREE + * to the standard forms (in this case DIGIT THREE). Formatting + * information may be lost but for most text operations such + * characters should be considered the same + * @G_NORMALIZE_NFKD: another name for %G_NORMALIZE_ALL + * @G_NORMALIZE_ALL_COMPOSE: like %G_NORMALIZE_ALL, but with composed + * forms rather than a maximally decomposed form + * @G_NORMALIZE_NFKC: another name for %G_NORMALIZE_ALL_COMPOSE + * + * Defines how a Unicode string is transformed in a canonical + * form, standardizing such issues as whether a character with + * an accent is represented as a base character and combining + * accent or as a single precomposed character. Unicode strings + * should generally be normalized before comparing them. + */ +typedef enum { + G_NORMALIZE_DEFAULT, + G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT, + G_NORMALIZE_DEFAULT_COMPOSE, + G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE, + G_NORMALIZE_ALL, + G_NORMALIZE_NFKD = G_NORMALIZE_ALL, + G_NORMALIZE_ALL_COMPOSE, + G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE +} GNormalizeMode; + +GLIB_AVAILABLE_IN_ALL +gchar *g_utf8_normalize (const gchar *str, + gssize len, + GNormalizeMode mode) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_ALL +gint g_utf8_collate (const gchar *str1, + const gchar *str2) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gchar *g_utf8_collate_key (const gchar *str, + gssize len) G_GNUC_MALLOC; +GLIB_AVAILABLE_IN_ALL +gchar *g_utf8_collate_key_for_filename (const gchar *str, + gssize len) G_GNUC_MALLOC; + +GLIB_AVAILABLE_IN_2_52 +gchar *g_utf8_make_valid (const gchar *str, + gssize len) G_GNUC_MALLOC; + +G_END_DECLS + +#endif /* __G_UNICODE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/guri.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/guri.h new file mode 100644 index 0000000..5989eab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/guri.h @@ -0,0 +1,420 @@ +/* GLIB - Library of useful routines for C programming + * Copyright © 2020 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * . + */ + +#pragma once + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +typedef struct _GUri GUri; + +GLIB_AVAILABLE_IN_2_66 +GUri * g_uri_ref (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +void g_uri_unref (GUri *uri); + +/** + * GUriFlags: + * @G_URI_FLAGS_NONE: No flags set. + * @G_URI_FLAGS_PARSE_RELAXED: Parse the URI more relaxedly than the + * [RFC 3986](https://tools.ietf.org/html/rfc3986) grammar specifies, + * fixing up or ignoring common mistakes in URIs coming from external + * sources. This is also needed for some obscure URI schemes where `;` + * separates the host from the path. Don’t use this flag unless you need to. + * @G_URI_FLAGS_HAS_PASSWORD: The userinfo field may contain a password, + * which will be separated from the username by `:`. + * @G_URI_FLAGS_HAS_AUTH_PARAMS: The userinfo may contain additional + * authentication-related parameters, which will be separated from + * the username and/or password by `;`. + * @G_URI_FLAGS_NON_DNS: The host component should not be assumed to be a + * DNS hostname or IP address (for example, for `smb` URIs with NetBIOS + * hostnames). + * @G_URI_FLAGS_ENCODED: When parsing a URI, this indicates that `%`-encoded + * characters in the userinfo, path, query, and fragment fields + * should not be decoded. (And likewise the host field if + * %G_URI_FLAGS_NON_DNS is also set.) When building a URI, it indicates + * that you have already `%`-encoded the components, and so #GUri + * should not do any encoding itself. + * @G_URI_FLAGS_ENCODED_QUERY: Same as %G_URI_FLAGS_ENCODED, for the query + * field only. + * @G_URI_FLAGS_ENCODED_PATH: Same as %G_URI_FLAGS_ENCODED, for the path only. + * @G_URI_FLAGS_ENCODED_FRAGMENT: Same as %G_URI_FLAGS_ENCODED, for the + * fragment only. + * @G_URI_FLAGS_SCHEME_NORMALIZE: A scheme-based normalization will be applied. + * For example, when parsing an HTTP URI changing omitted path to `/` and + * omitted port to `80`; and when building a URI, changing empty path to `/` + * and default port `80`). This only supports a subset of known schemes. (Since: 2.68) + * + * Flags that describe a URI. + * + * When parsing a URI, if you need to choose different flags based on + * the type of URI, you can use g_uri_peek_scheme() on the URI string + * to check the scheme first, and use that to decide what flags to + * parse it with. + * + * Since: 2.66 + */ +GLIB_AVAILABLE_TYPE_IN_2_66 +typedef enum { + G_URI_FLAGS_NONE = 0, + G_URI_FLAGS_PARSE_RELAXED = 1 << 0, + G_URI_FLAGS_HAS_PASSWORD = 1 << 1, + G_URI_FLAGS_HAS_AUTH_PARAMS = 1 << 2, + G_URI_FLAGS_ENCODED = 1 << 3, + G_URI_FLAGS_NON_DNS = 1 << 4, + G_URI_FLAGS_ENCODED_QUERY = 1 << 5, + G_URI_FLAGS_ENCODED_PATH = 1 << 6, + G_URI_FLAGS_ENCODED_FRAGMENT = 1 << 7, + G_URI_FLAGS_SCHEME_NORMALIZE GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = 1 << 8, +} GUriFlags; + +GLIB_AVAILABLE_IN_2_66 +gboolean g_uri_split (const gchar *uri_ref, + GUriFlags flags, + gchar **scheme, + gchar **userinfo, + gchar **host, + gint *port, + gchar **path, + gchar **query, + gchar **fragment, + GError **error); +GLIB_AVAILABLE_IN_2_66 +gboolean g_uri_split_with_user (const gchar *uri_ref, + GUriFlags flags, + gchar **scheme, + gchar **user, + gchar **password, + gchar **auth_params, + gchar **host, + gint *port, + gchar **path, + gchar **query, + gchar **fragment, + GError **error); +GLIB_AVAILABLE_IN_2_66 +gboolean g_uri_split_network (const gchar *uri_string, + GUriFlags flags, + gchar **scheme, + gchar **host, + gint *port, + GError **error); + +GLIB_AVAILABLE_IN_2_66 +gboolean g_uri_is_valid (const gchar *uri_string, + GUriFlags flags, + GError **error); + +GLIB_AVAILABLE_IN_2_66 +gchar * g_uri_join (GUriFlags flags, + const gchar *scheme, + const gchar *userinfo, + const gchar *host, + gint port, + const gchar *path, + const gchar *query, + const gchar *fragment); +GLIB_AVAILABLE_IN_2_66 +gchar * g_uri_join_with_user (GUriFlags flags, + const gchar *scheme, + const gchar *user, + const gchar *password, + const gchar *auth_params, + const gchar *host, + gint port, + const gchar *path, + const gchar *query, + const gchar *fragment); + +GLIB_AVAILABLE_IN_2_66 +GUri * g_uri_parse (const gchar *uri_string, + GUriFlags flags, + GError **error); +GLIB_AVAILABLE_IN_2_66 +GUri * g_uri_parse_relative (GUri *base_uri, + const gchar *uri_ref, + GUriFlags flags, + GError **error); + +GLIB_AVAILABLE_IN_2_66 +gchar * g_uri_resolve_relative (const gchar *base_uri_string, + const gchar *uri_ref, + GUriFlags flags, + GError **error); + +GLIB_AVAILABLE_IN_2_66 +GUri * g_uri_build (GUriFlags flags, + const gchar *scheme, + const gchar *userinfo, + const gchar *host, + gint port, + const gchar *path, + const gchar *query, + const gchar *fragment); +GLIB_AVAILABLE_IN_2_66 +GUri * g_uri_build_with_user (GUriFlags flags, + const gchar *scheme, + const gchar *user, + const gchar *password, + const gchar *auth_params, + const gchar *host, + gint port, + const gchar *path, + const gchar *query, + const gchar *fragment); + +/** + * GUriHideFlags: + * @G_URI_HIDE_NONE: No flags set. + * @G_URI_HIDE_USERINFO: Hide the userinfo. + * @G_URI_HIDE_PASSWORD: Hide the password. + * @G_URI_HIDE_AUTH_PARAMS: Hide the auth_params. + * @G_URI_HIDE_QUERY: Hide the query. + * @G_URI_HIDE_FRAGMENT: Hide the fragment. + * + * Flags describing what parts of the URI to hide in + * g_uri_to_string_partial(). Note that %G_URI_HIDE_PASSWORD and + * %G_URI_HIDE_AUTH_PARAMS will only work if the #GUri was parsed with + * the corresponding flags. + * + * Since: 2.66 + */ +GLIB_AVAILABLE_TYPE_IN_2_66 +typedef enum { + G_URI_HIDE_NONE = 0, + G_URI_HIDE_USERINFO = 1 << 0, + G_URI_HIDE_PASSWORD = 1 << 1, + G_URI_HIDE_AUTH_PARAMS = 1 << 2, + G_URI_HIDE_QUERY = 1 << 3, + G_URI_HIDE_FRAGMENT = 1 << 4, +} GUriHideFlags; + +GLIB_AVAILABLE_IN_2_66 +char * g_uri_to_string (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +char * g_uri_to_string_partial (GUri *uri, + GUriHideFlags flags); + +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_scheme (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_userinfo (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_user (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_password (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_auth_params (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_host (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +gint g_uri_get_port (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_path (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_query (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +const gchar *g_uri_get_fragment (GUri *uri); +GLIB_AVAILABLE_IN_2_66 +GUriFlags g_uri_get_flags (GUri *uri); + +/** + * GUriParamsFlags: + * @G_URI_PARAMS_NONE: No flags set. + * @G_URI_PARAMS_CASE_INSENSITIVE: Parameter names are case insensitive. + * @G_URI_PARAMS_WWW_FORM: Replace `+` with space character. Only useful for + * URLs on the web, using the `https` or `http` schemas. + * @G_URI_PARAMS_PARSE_RELAXED: See %G_URI_FLAGS_PARSE_RELAXED. + * + * Flags modifying the way parameters are handled by g_uri_parse_params() and + * #GUriParamsIter. + * + * Since: 2.66 + */ +GLIB_AVAILABLE_TYPE_IN_2_66 +typedef enum { + G_URI_PARAMS_NONE = 0, + G_URI_PARAMS_CASE_INSENSITIVE = 1 << 0, + G_URI_PARAMS_WWW_FORM = 1 << 1, + G_URI_PARAMS_PARSE_RELAXED = 1 << 2, +} GUriParamsFlags; + +GLIB_AVAILABLE_IN_2_66 +GHashTable *g_uri_parse_params (const gchar *params, + gssize length, + const gchar *separators, + GUriParamsFlags flags, + GError **error); + +typedef struct _GUriParamsIter GUriParamsIter; + +struct _GUriParamsIter +{ + /*< private >*/ + gint dummy0; + gpointer dummy1; + gpointer dummy2; + guint8 dummy3[256]; +}; + +GLIB_AVAILABLE_IN_2_66 +void g_uri_params_iter_init (GUriParamsIter *iter, + const gchar *params, + gssize length, + const gchar *separators, + GUriParamsFlags flags); + +GLIB_AVAILABLE_IN_2_66 +gboolean g_uri_params_iter_next (GUriParamsIter *iter, + gchar **attribute, + gchar **value, + GError **error); + +/** + * G_URI_ERROR: + * + * Error domain for URI methods. Errors in this domain will be from + * the #GUriError enumeration. See #GError for information on error + * domains. + * + * Since: 2.66 + */ +#define G_URI_ERROR (g_uri_error_quark ()) GLIB_AVAILABLE_MACRO_IN_2_66 +GLIB_AVAILABLE_IN_2_66 +GQuark g_uri_error_quark (void); + +/** + * GUriError: + * @G_URI_ERROR_FAILED: Generic error if no more specific error is available. + * See the error message for details. + * @G_URI_ERROR_BAD_SCHEME: The scheme of a URI could not be parsed. + * @G_URI_ERROR_BAD_USER: The user/userinfo of a URI could not be parsed. + * @G_URI_ERROR_BAD_PASSWORD: The password of a URI could not be parsed. + * @G_URI_ERROR_BAD_AUTH_PARAMS: The authentication parameters of a URI could not be parsed. + * @G_URI_ERROR_BAD_HOST: The host of a URI could not be parsed. + * @G_URI_ERROR_BAD_PORT: The port of a URI could not be parsed. + * @G_URI_ERROR_BAD_PATH: The path of a URI could not be parsed. + * @G_URI_ERROR_BAD_QUERY: The query of a URI could not be parsed. + * @G_URI_ERROR_BAD_FRAGMENT: The fragment of a URI could not be parsed. + * + * Error codes returned by #GUri methods. + * + * Since: 2.66 + */ +typedef enum { + G_URI_ERROR_FAILED, + G_URI_ERROR_BAD_SCHEME, + G_URI_ERROR_BAD_USER, + G_URI_ERROR_BAD_PASSWORD, + G_URI_ERROR_BAD_AUTH_PARAMS, + G_URI_ERROR_BAD_HOST, + G_URI_ERROR_BAD_PORT, + G_URI_ERROR_BAD_PATH, + G_URI_ERROR_BAD_QUERY, + G_URI_ERROR_BAD_FRAGMENT, +} GUriError; + +/** + * G_URI_RESERVED_CHARS_GENERIC_DELIMITERS: + * + * Generic delimiters characters as defined in + * [RFC 3986](https://tools.ietf.org/html/rfc3986). Includes `:/?#[]@`. + * + * Since: 2.16 + **/ +#define G_URI_RESERVED_CHARS_GENERIC_DELIMITERS ":/?#[]@" + +/** + * G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS: + * + * Subcomponent delimiter characters as defined in + * [RFC 3986](https://tools.ietf.org/html/rfc3986). Includes `!$&'()*+,;=`. + * + * Since: 2.16 + **/ +#define G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS "!$&'()*+,;=" + +/** + * G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT: + * + * Allowed characters in path elements. Includes `!$&'()*+,;=:@`. + * + * Since: 2.16 + **/ +#define G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS ":@" + +/** + * G_URI_RESERVED_CHARS_ALLOWED_IN_PATH: + * + * Allowed characters in a path. Includes `!$&'()*+,;=:@/`. + * + * Since: 2.16 + **/ +#define G_URI_RESERVED_CHARS_ALLOWED_IN_PATH G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT "/" + +/** + * G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO: + * + * Allowed characters in userinfo as defined in + * [RFC 3986](https://tools.ietf.org/html/rfc3986). Includes `!$&'()*+,;=:`. + * + * Since: 2.16 + **/ +#define G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS ":" + +GLIB_AVAILABLE_IN_ALL +char * g_uri_unescape_string (const char *escaped_string, + const char *illegal_characters); +GLIB_AVAILABLE_IN_ALL +char * g_uri_unescape_segment (const char *escaped_string, + const char *escaped_string_end, + const char *illegal_characters); + +GLIB_AVAILABLE_IN_ALL +char * g_uri_parse_scheme (const char *uri); +GLIB_AVAILABLE_IN_2_66 +const char *g_uri_peek_scheme (const char *uri); + +GLIB_AVAILABLE_IN_ALL +char * g_uri_escape_string (const char *unescaped, + const char *reserved_chars_allowed, + gboolean allow_utf8); + +GLIB_AVAILABLE_IN_2_66 +GBytes * g_uri_unescape_bytes (const char *escaped_string, + gssize length, + const char *illegal_characters, + GError **error); + +GLIB_AVAILABLE_IN_2_66 +char * g_uri_escape_bytes (const guint8 *unescaped, + gsize length, + const char *reserved_chars_allowed); + +G_GNUC_END_IGNORE_DEPRECATIONS + +G_END_DECLS diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gutils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gutils.h new file mode 100644 index 0000000..d50ef70 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gutils.h @@ -0,0 +1,493 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_UTILS_H__ +#define __G_UTILS_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +/* Define G_VA_COPY() to do the right thing for copying va_list variables. + * glibconfig.h may have already defined G_VA_COPY as va_copy or __va_copy. + */ +#if !defined (G_VA_COPY) +# if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32)) +# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2)) +# elif defined (G_VA_COPY_AS_ARRAY) +# define G_VA_COPY(ap1, ap2) memmove ((ap1), (ap2), sizeof (va_list)) +# else /* va_list is a pointer */ +# define G_VA_COPY(ap1, ap2) ((ap1) = (ap2)) +# endif /* va_list is a pointer */ +#endif /* !G_VA_COPY */ + +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_user_name (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_real_name (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_home_dir (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_tmp_dir (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_host_name (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_prgname (void); +GLIB_AVAILABLE_IN_ALL +void g_set_prgname (const gchar *prgname); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_application_name (void); +GLIB_AVAILABLE_IN_ALL +void g_set_application_name (const gchar *application_name); +GLIB_AVAILABLE_IN_2_64 +gchar * g_get_os_info (const gchar *key_name); + +/** + * G_OS_INFO_KEY_NAME: + * + * A key to get the name of the operating system excluding version information suitable for presentation to the user, e.g. "YoYoOS" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_NAME \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "NAME" + +/** + * G_OS_INFO_KEY_PRETTY_NAME: + * + * A key to get the name of the operating system in a format suitable for presentation to the user, e.g. "YoYoOS Foo" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_PRETTY_NAME \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "PRETTY_NAME" + +/** + * G_OS_INFO_KEY_VERSION: + * + * A key to get the operating system version suitable for presentation to the user, e.g. "42 (Foo)" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_VERSION \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "VERSION" + +/** + * G_OS_INFO_KEY_VERSION_CODENAME: + * + * A key to get a codename identifying the operating system release suitable for processing by scripts or usage in generated filenames, e.g. "foo" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_VERSION_CODENAME \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "VERSION_CODENAME" + +/** + * G_OS_INFO_KEY_VERSION_ID: + * + * A key to get the version of the operating system suitable for processing by scripts or usage in generated filenames, e.g. "42" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_VERSION_ID \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "VERSION_ID" + +/** + * G_OS_INFO_KEY_ID: + * + * A key to get an ID identifying the operating system suitable for processing by scripts or usage in generated filenames, e.g. "yoyoos" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_ID \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "ID" + +/** + * G_OS_INFO_KEY_HOME_URL: + * + * A key to get the homepage for the operating system, e.g. "https://www.yoyo-os.com/" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_HOME_URL \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "HOME_URL" + +/** + * G_OS_INFO_KEY_DOCUMENTATION_URL: + * + * A key to get the documentation page for the operating system, e.g. "https://docs.yoyo-os.com/" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_DOCUMENTATION_URL \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "DOCUMENTATION_URL" + +/** + * G_OS_INFO_KEY_SUPPORT_URL: + * + * A key to get the support page for the operating system, e.g. "https://support.yoyo-os.com/" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_SUPPORT_URL \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "SUPPORT_URL" + +/** + * G_OS_INFO_KEY_BUG_REPORT_URL: + * + * A key to get the bug reporting page for the operating system, e.g. "https://bugs.yoyo-os.com/" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_BUG_REPORT_URL \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "BUG_REPORT_URL" + +/** + * G_OS_INFO_KEY_PRIVACY_POLICY_URL: + * + * A key to get the privacy policy for the operating system, e.g. "https://privacy.yoyo-os.com/" + * + * Since: 2.64 + */ +#define G_OS_INFO_KEY_PRIVACY_POLICY_URL \ + GLIB_AVAILABLE_MACRO_IN_2_64 \ + "PRIVACY_POLICY_URL" + +GLIB_AVAILABLE_IN_ALL +void g_reload_user_special_dirs_cache (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_user_data_dir (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_user_config_dir (void); +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_user_cache_dir (void); +GLIB_AVAILABLE_IN_2_72 +const gchar * g_get_user_state_dir (void); +GLIB_AVAILABLE_IN_ALL +const gchar * const * g_get_system_data_dirs (void); + +#ifdef G_OS_WIN32 +/* This function is not part of the public GLib API */ +GLIB_AVAILABLE_IN_ALL +const gchar * const * g_win32_get_system_data_dirs_for_module (void (*address_of_function)(void)); +#endif + +#if defined (G_OS_WIN32) && defined (G_CAN_INLINE) +/* This function is not part of the public GLib API either. Just call + * g_get_system_data_dirs() in your code, never mind that that is + * actually a macro and you will in fact call this inline function. + */ +static inline const gchar * const * +_g_win32_get_system_data_dirs (void) +{ + return g_win32_get_system_data_dirs_for_module ((void (*)(void)) &_g_win32_get_system_data_dirs); +} +#define g_get_system_data_dirs _g_win32_get_system_data_dirs +#endif + +GLIB_AVAILABLE_IN_ALL +const gchar * const * g_get_system_config_dirs (void); + +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_user_runtime_dir (void); + +/** + * GUserDirectory: + * @G_USER_DIRECTORY_DESKTOP: the user's Desktop directory + * @G_USER_DIRECTORY_DOCUMENTS: the user's Documents directory + * @G_USER_DIRECTORY_DOWNLOAD: the user's Downloads directory + * @G_USER_DIRECTORY_MUSIC: the user's Music directory + * @G_USER_DIRECTORY_PICTURES: the user's Pictures directory + * @G_USER_DIRECTORY_PUBLIC_SHARE: the user's shared directory + * @G_USER_DIRECTORY_TEMPLATES: the user's Templates directory + * @G_USER_DIRECTORY_VIDEOS: the user's Movies directory + * @G_USER_N_DIRECTORIES: the number of enum values + * + * These are logical ids for special directories which are defined + * depending on the platform used. You should use g_get_user_special_dir() + * to retrieve the full path associated to the logical id. + * + * The #GUserDirectory enumeration can be extended at later date. Not + * every platform has a directory for every logical id in this + * enumeration. + * + * Since: 2.14 + */ +typedef enum { + G_USER_DIRECTORY_DESKTOP, + G_USER_DIRECTORY_DOCUMENTS, + G_USER_DIRECTORY_DOWNLOAD, + G_USER_DIRECTORY_MUSIC, + G_USER_DIRECTORY_PICTURES, + G_USER_DIRECTORY_PUBLIC_SHARE, + G_USER_DIRECTORY_TEMPLATES, + G_USER_DIRECTORY_VIDEOS, + + G_USER_N_DIRECTORIES +} GUserDirectory; + +GLIB_AVAILABLE_IN_ALL +const gchar * g_get_user_special_dir (GUserDirectory directory); + +/** + * GDebugKey: + * @key: the string + * @value: the flag + * + * Associates a string with a bit flag. + * Used in g_parse_debug_string(). + */ +typedef struct _GDebugKey GDebugKey; +struct _GDebugKey +{ + const gchar *key; + guint value; +}; + +/* Miscellaneous utility functions + */ +GLIB_AVAILABLE_IN_ALL +guint g_parse_debug_string (const gchar *string, + const GDebugKey *keys, + guint nkeys); + +GLIB_AVAILABLE_IN_ALL +gint g_snprintf (gchar *string, + gulong n, + gchar const *format, + ...) G_GNUC_PRINTF (3, 4); +GLIB_AVAILABLE_IN_ALL +gint g_vsnprintf (gchar *string, + gulong n, + gchar const *format, + va_list args) + G_GNUC_PRINTF(3, 0); + +GLIB_AVAILABLE_IN_ALL +void g_nullify_pointer (gpointer *nullify_location); + +typedef enum +{ + G_FORMAT_SIZE_DEFAULT = 0, + G_FORMAT_SIZE_LONG_FORMAT = 1 << 0, + G_FORMAT_SIZE_IEC_UNITS = 1 << 1, + G_FORMAT_SIZE_BITS = 1 << 2, + G_FORMAT_SIZE_ONLY_VALUE GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 1 << 3, + G_FORMAT_SIZE_ONLY_UNIT GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 1 << 4 +} GFormatSizeFlags; + +GLIB_AVAILABLE_IN_2_30 +gchar *g_format_size_full (guint64 size, + GFormatSizeFlags flags); +GLIB_AVAILABLE_IN_2_30 +gchar *g_format_size (guint64 size); + +GLIB_DEPRECATED_IN_2_30_FOR(g_format_size) +gchar *g_format_size_for_display (goffset size); + +#define g_ATEXIT(proc) (atexit (proc)) GLIB_DEPRECATED_MACRO_IN_2_32 +#define g_memmove(dest,src,len) \ + G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_40_FOR(memmove) + +/** + * GVoidFunc: + * + * Declares a type of function which takes no arguments + * and has no return value. It is used to specify the type + * function passed to g_atexit(). + */ +typedef void (*GVoidFunc) (void) GLIB_DEPRECATED_TYPE_IN_2_32; +#define ATEXIT(proc) g_ATEXIT(proc) GLIB_DEPRECATED_MACRO_IN_2_32 + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED +void g_atexit (GVoidFunc func); +G_GNUC_END_IGNORE_DEPRECATIONS + +#ifdef G_OS_WIN32 +/* It's a bad idea to wrap atexit() on Windows. If the GLib DLL calls + * atexit(), the function will be called when the GLib DLL is detached + * from the program, which is not what the caller wants. The caller + * wants the function to be called when it *itself* exits (or is + * detached, in case the caller, too, is a DLL). + */ +#if (defined(__MINGW_H) && !defined(_STDLIB_H_)) || (defined(_MSC_VER) && !defined(_INC_STDLIB)) +int atexit (void (*)(void)); +#endif +#define g_atexit(func) atexit(func) GLIB_DEPRECATED_MACRO_IN_2_32 +#endif + + +/* Look for an executable in PATH, following execvp() rules */ +GLIB_AVAILABLE_IN_ALL +gchar* g_find_program_in_path (const gchar *program); + +/* Bit tests + * + * These are defined in a convoluted way because we want the compiler to + * be able to inline the code for performance reasons, but for + * historical reasons, we must continue to provide non-inline versions + * on our ABI. + * + * We define these as functions in gutils.c which are just implemented + * as calls to the _impl() versions in order to preserve the ABI. + */ + +#define g_bit_nth_lsf(mask, nth_bit) g_bit_nth_lsf_impl(mask, nth_bit) +#define g_bit_nth_msf(mask, nth_bit) g_bit_nth_msf_impl(mask, nth_bit) +#define g_bit_storage(number) g_bit_storage_impl(number) + +GLIB_AVAILABLE_IN_ALL +gint (g_bit_nth_lsf) (gulong mask, + gint nth_bit); +GLIB_AVAILABLE_IN_ALL +gint (g_bit_nth_msf) (gulong mask, + gint nth_bit); +GLIB_AVAILABLE_IN_ALL +guint (g_bit_storage) (gulong number); + +static inline gint +g_bit_nth_lsf_impl (gulong mask, + gint nth_bit) +{ + if (G_UNLIKELY (nth_bit < -1)) + nth_bit = -1; + while (nth_bit < ((GLIB_SIZEOF_LONG * 8) - 1)) + { + nth_bit++; + if (mask & (1UL << nth_bit)) + return nth_bit; + } + return -1; +} + +static inline gint +g_bit_nth_msf_impl (gulong mask, + gint nth_bit) +{ + if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8)) + nth_bit = GLIB_SIZEOF_LONG * 8; + while (nth_bit > 0) + { + nth_bit--; + if (mask & (1UL << nth_bit)) + return nth_bit; + } + return -1; +} + +static inline guint +g_bit_storage_impl (gulong number) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__) + return G_LIKELY (number) ? + ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1; +#else + guint n_bits = 0; + + do + { + n_bits++; + number >>= 1; + } + while (number); + return n_bits; +#endif +} + +/* Crashes the program. */ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_50 +#ifndef G_OS_WIN32 +# include +# define g_abort() abort () +#else +GLIB_AVAILABLE_IN_2_50 +G_NORETURN void g_abort (void) G_ANALYZER_NORETURN; +#endif +#endif + +/* + * This macro is deprecated. This DllMain() is too complex. It is + * recommended to write an explicit minimal DLlMain() that just saves + * the handle to the DLL and then use that handle instead, for + * instance passing it to + * g_win32_get_package_installation_directory_of_module(). + * + * On Windows, this macro defines a DllMain function that stores the + * actual DLL name that the code being compiled will be included in. + * STATIC should be empty or 'static'. DLL_NAME is the name of the + * (pointer to the) char array where the DLL name will be stored. If + * this is used, you must also include . If you need a more complex + * DLL entry point function, you cannot use this. + * + * On non-Windows platforms, expands to nothing. + */ + +#ifndef G_PLATFORM_WIN32 +# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) GLIB_DEPRECATED_MACRO_IN_2_26 +#else +# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) \ +static char *dll_name; \ + \ +BOOL WINAPI \ +DllMain (HINSTANCE hinstDLL, \ + DWORD fdwReason, \ + LPVOID lpvReserved) \ +{ \ + wchar_t wcbfr[1000]; \ + char *tem; \ + switch (fdwReason) \ + { \ + case DLL_PROCESS_ATTACH: \ + GetModuleFileNameW ((HMODULE) hinstDLL, wcbfr, G_N_ELEMENTS (wcbfr)); \ + tem = g_utf16_to_utf8 (wcbfr, -1, NULL, NULL, NULL); \ + dll_name = g_path_get_basename (tem); \ + g_free (tem); \ + break; \ + } \ + \ + return TRUE; \ +} GLIB_DEPRECATED_MACRO_IN_2_26 +#endif /* G_PLATFORM_WIN32 */ + +G_END_DECLS + +#endif /* __G_UTILS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/guuid.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/guuid.h new file mode 100644 index 0000000..c653188 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/guuid.h @@ -0,0 +1,42 @@ +/* guuid.h - UUID functions + * + * Copyright (C) 2013-2015, 2017 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of the + * licence, or (at your option) any later version. + * + * This 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA. + * + * Authors: Marc-André Lureau + */ + +#ifndef __G_UUID_H__ +#define __G_UUID_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_2_52 +gboolean g_uuid_string_is_valid (const gchar *str); + +GLIB_AVAILABLE_IN_2_52 +gchar * g_uuid_string_random (void); + +G_END_DECLS + +#endif /* __G_UUID_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gvariant.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gvariant.h new file mode 100644 index 0000000..e7087a1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gvariant.h @@ -0,0 +1,541 @@ +/* + * Copyright © 2007, 2008 Ryan Lortie + * Copyright © 2009, 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_VARIANT_H__ +#define __G_VARIANT_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct _GVariant GVariant; + +typedef enum +{ + G_VARIANT_CLASS_BOOLEAN = 'b', + G_VARIANT_CLASS_BYTE = 'y', + G_VARIANT_CLASS_INT16 = 'n', + G_VARIANT_CLASS_UINT16 = 'q', + G_VARIANT_CLASS_INT32 = 'i', + G_VARIANT_CLASS_UINT32 = 'u', + G_VARIANT_CLASS_INT64 = 'x', + G_VARIANT_CLASS_UINT64 = 't', + G_VARIANT_CLASS_HANDLE = 'h', + G_VARIANT_CLASS_DOUBLE = 'd', + G_VARIANT_CLASS_STRING = 's', + G_VARIANT_CLASS_OBJECT_PATH = 'o', + G_VARIANT_CLASS_SIGNATURE = 'g', + G_VARIANT_CLASS_VARIANT = 'v', + G_VARIANT_CLASS_MAYBE = 'm', + G_VARIANT_CLASS_ARRAY = 'a', + G_VARIANT_CLASS_TUPLE = '(', + G_VARIANT_CLASS_DICT_ENTRY = '{' +} GVariantClass; + +GLIB_AVAILABLE_IN_ALL +void g_variant_unref (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_ref (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_ref_sink (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_is_floating (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_take_ref (GVariant *value); + +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_variant_get_type (GVariant *value); +GLIB_AVAILABLE_IN_ALL +const gchar * g_variant_get_type_string (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_is_of_type (GVariant *value, + const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_is_container (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariantClass g_variant_classify (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_boolean (gboolean value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_byte (guint8 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_int16 (gint16 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_uint16 (guint16 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_int32 (gint32 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_uint32 (guint32 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_int64 (gint64 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_uint64 (guint64 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_handle (gint32 value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_double (gdouble value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_string (const gchar *string); +GLIB_AVAILABLE_IN_2_38 +GVariant * g_variant_new_take_string (gchar *string); +GLIB_AVAILABLE_IN_2_38 +GVariant * g_variant_new_printf (const gchar *format_string, + ...) G_GNUC_PRINTF (1, 2); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_object_path (const gchar *object_path); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_is_object_path (const gchar *string); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_signature (const gchar *signature); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_is_signature (const gchar *string); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_variant (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_strv (const gchar * const *strv, + gssize length); +GLIB_AVAILABLE_IN_2_30 +GVariant * g_variant_new_objv (const gchar * const *strv, + gssize length); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_bytestring (const gchar *string); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_bytestring_array (const gchar * const *strv, + gssize length); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_fixed_array (const GVariantType *element_type, + gconstpointer elements, + gsize n_elements, + gsize element_size); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_get_boolean (GVariant *value); +GLIB_AVAILABLE_IN_ALL +guint8 g_variant_get_byte (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gint16 g_variant_get_int16 (GVariant *value); +GLIB_AVAILABLE_IN_ALL +guint16 g_variant_get_uint16 (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gint32 g_variant_get_int32 (GVariant *value); +GLIB_AVAILABLE_IN_ALL +guint32 g_variant_get_uint32 (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gint64 g_variant_get_int64 (GVariant *value); +GLIB_AVAILABLE_IN_ALL +guint64 g_variant_get_uint64 (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gint32 g_variant_get_handle (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gdouble g_variant_get_double (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_get_variant (GVariant *value); +GLIB_AVAILABLE_IN_ALL +const gchar * g_variant_get_string (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_ALL +gchar * g_variant_dup_string (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_ALL +const gchar ** g_variant_get_strv (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_ALL +gchar ** g_variant_dup_strv (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_2_30 +const gchar ** g_variant_get_objv (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_ALL +gchar ** g_variant_dup_objv (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_ALL +const gchar * g_variant_get_bytestring (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gchar * g_variant_dup_bytestring (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_ALL +const gchar ** g_variant_get_bytestring_array (GVariant *value, + gsize *length); +GLIB_AVAILABLE_IN_ALL +gchar ** g_variant_dup_bytestring_array (GVariant *value, + gsize *length); + +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_maybe (const GVariantType *child_type, + GVariant *child); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_array (const GVariantType *child_type, + GVariant * const *children, + gsize n_children); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_tuple (GVariant * const *children, + gsize n_children); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_dict_entry (GVariant *key, + GVariant *value); + +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_get_maybe (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gsize g_variant_n_children (GVariant *value); +GLIB_AVAILABLE_IN_ALL +void g_variant_get_child (GVariant *value, + gsize index_, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_get_child_value (GVariant *value, + gsize index_); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_lookup (GVariant *dictionary, + const gchar *key, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_lookup_value (GVariant *dictionary, + const gchar *key, + const GVariantType *expected_type); +GLIB_AVAILABLE_IN_ALL +gconstpointer g_variant_get_fixed_array (GVariant *value, + gsize *n_elements, + gsize element_size); + +GLIB_AVAILABLE_IN_ALL +gsize g_variant_get_size (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gconstpointer g_variant_get_data (GVariant *value); +GLIB_AVAILABLE_IN_2_36 +GBytes * g_variant_get_data_as_bytes (GVariant *value); +GLIB_AVAILABLE_IN_ALL +void g_variant_store (GVariant *value, + gpointer data); + +GLIB_AVAILABLE_IN_ALL +gchar * g_variant_print (GVariant *value, + gboolean type_annotate); +GLIB_AVAILABLE_IN_ALL +GString * g_variant_print_string (GVariant *value, + GString *string, + gboolean type_annotate); + +GLIB_AVAILABLE_IN_ALL +guint g_variant_hash (gconstpointer value); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_equal (gconstpointer one, + gconstpointer two); + +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_get_normal_form (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_is_normal_form (GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_byteswap (GVariant *value); + +GLIB_AVAILABLE_IN_2_36 +GVariant * g_variant_new_from_bytes (const GVariantType *type, + GBytes *bytes, + gboolean trusted); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_from_data (const GVariantType *type, + gconstpointer data, + gsize size, + gboolean trusted, + GDestroyNotify notify, + gpointer user_data); + +typedef struct _GVariantIter GVariantIter; +struct _GVariantIter { + /*< private >*/ + gsize x[16]; +}; + +GLIB_AVAILABLE_IN_ALL +GVariantIter * g_variant_iter_new (GVariant *value); +GLIB_AVAILABLE_IN_ALL +gsize g_variant_iter_init (GVariantIter *iter, + GVariant *value); +GLIB_AVAILABLE_IN_ALL +GVariantIter * g_variant_iter_copy (GVariantIter *iter); +GLIB_AVAILABLE_IN_ALL +gsize g_variant_iter_n_children (GVariantIter *iter); +GLIB_AVAILABLE_IN_ALL +void g_variant_iter_free (GVariantIter *iter); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_iter_next_value (GVariantIter *iter); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_iter_next (GVariantIter *iter, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_iter_loop (GVariantIter *iter, + const gchar *format_string, + ...); + + +typedef struct _GVariantBuilder GVariantBuilder; +struct _GVariantBuilder { + /*< private >*/ + union + { + struct { + gsize partial_magic; + const GVariantType *type; + gsize y[14]; + } s; + gsize x[16]; + } u; +}; + +typedef enum +{ + G_VARIANT_PARSE_ERROR_FAILED, + G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED, + G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE, + G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED, + G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END, + G_VARIANT_PARSE_ERROR_INVALID_CHARACTER, + G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING, + G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH, + G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE, + G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING, + G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE, + G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE, + G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG, + G_VARIANT_PARSE_ERROR_TYPE_ERROR, + G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN, + G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD, + G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT, + G_VARIANT_PARSE_ERROR_VALUE_EXPECTED, + G_VARIANT_PARSE_ERROR_RECURSION +} GVariantParseError; +#define G_VARIANT_PARSE_ERROR (g_variant_parse_error_quark ()) + +GLIB_DEPRECATED_IN_2_38_FOR(g_variant_parse_error_quark) +GQuark g_variant_parser_get_error_quark (void); + +GLIB_AVAILABLE_IN_ALL +GQuark g_variant_parse_error_quark (void); + +/** + * G_VARIANT_BUILDER_INIT: + * @variant_type: a const GVariantType* + * + * A stack-allocated #GVariantBuilder must be initialized if it is + * used together with g_auto() to avoid warnings or crashes if + * function returns before g_variant_builder_init() is called on the + * builder. + * + * This macro can be used as initializer instead of an + * explicit zeroing a variable when declaring it and a following + * g_variant_builder_init(), but it cannot be assigned to a variable. + * + * The passed @variant_type should be a static GVariantType to avoid + * lifetime issues, as copying the @variant_type does not happen in + * the G_VARIANT_BUILDER_INIT() call, but rather in functions that + * make sure that #GVariantBuilder is valid. + * + * |[ + * g_auto(GVariantBuilder) builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE_BYTESTRING); + * ]| + * + * Since: 2.50 + */ +#define G_VARIANT_BUILDER_INIT(variant_type) \ + { \ + { \ + { \ + 2942751021u /* == GVSB_MAGIC_PARTIAL, see gvariant.c */, variant_type, { 0, } \ + } \ + } \ + } + +GLIB_AVAILABLE_IN_ALL +GVariantBuilder * g_variant_builder_new (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_unref (GVariantBuilder *builder); +GLIB_AVAILABLE_IN_ALL +GVariantBuilder * g_variant_builder_ref (GVariantBuilder *builder); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_init (GVariantBuilder *builder, + const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_builder_end (GVariantBuilder *builder); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_clear (GVariantBuilder *builder); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_open (GVariantBuilder *builder, + const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_close (GVariantBuilder *builder); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_add_value (GVariantBuilder *builder, + GVariant *value); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_add (GVariantBuilder *builder, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_ALL +void g_variant_builder_add_parsed (GVariantBuilder *builder, + const gchar *format, + ...); + +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new (const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_ALL +void g_variant_get (GVariant *value, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_va (const gchar *format_string, + const gchar **endptr, + va_list *app); +GLIB_AVAILABLE_IN_ALL +void g_variant_get_va (GVariant *value, + const gchar *format_string, + const gchar **endptr, + va_list *app); +GLIB_AVAILABLE_IN_2_34 +gboolean g_variant_check_format_string (GVariant *value, + const gchar *format_string, + gboolean copy_only); + +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_parse (const GVariantType *type, + const gchar *text, + const gchar *limit, + const gchar **endptr, + GError **error); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_parsed (const gchar *format, + ...); +GLIB_AVAILABLE_IN_ALL +GVariant * g_variant_new_parsed_va (const gchar *format, + va_list *app); + +GLIB_AVAILABLE_IN_2_40 +gchar * g_variant_parse_error_print_context (GError *error, + const gchar *source_str); + +GLIB_AVAILABLE_IN_ALL +gint g_variant_compare (gconstpointer one, + gconstpointer two); + +typedef struct _GVariantDict GVariantDict; +struct _GVariantDict { + /*< private >*/ + union + { + struct { + GVariant *asv; + gsize partial_magic; + gsize y[14]; + } s; + gsize x[16]; + } u; +}; + +/** + * G_VARIANT_DICT_INIT: + * @asv: (nullable): a GVariant* + * + * A stack-allocated #GVariantDict must be initialized if it is used + * together with g_auto() to avoid warnings or crashes if function + * returns before g_variant_dict_init() is called on the builder. + * + * This macro can be used as initializer instead of an explicit + * zeroing a variable when declaring it and a following + * g_variant_dict_init(), but it cannot be assigned to a variable. + * + * The passed @asv has to live long enough for #GVariantDict to gather + * the entries from, as the gathering does not happen in the + * G_VARIANT_DICT_INIT() call, but rather in functions that make sure + * that #GVariantDict is valid. In context where the initialization + * value has to be a constant expression, the only possible value of + * @asv is %NULL. It is still possible to call g_variant_dict_init() + * safely with a different @asv right after the variable was + * initialized with G_VARIANT_DICT_INIT(). + * + * |[ + * g_autoptr(GVariant) variant = get_asv_variant (); + * g_auto(GVariantDict) dict = G_VARIANT_DICT_INIT (variant); + * ]| + * + * Since: 2.50 + */ +#define G_VARIANT_DICT_INIT(asv) \ + { \ + { \ + { \ + asv, 3488698669u /* == GVSD_MAGIC_PARTIAL, see gvariant.c */, { 0, } \ + } \ + } \ + } + +GLIB_AVAILABLE_IN_2_40 +GVariantDict * g_variant_dict_new (GVariant *from_asv); + +GLIB_AVAILABLE_IN_2_40 +void g_variant_dict_init (GVariantDict *dict, + GVariant *from_asv); + +GLIB_AVAILABLE_IN_2_40 +gboolean g_variant_dict_lookup (GVariantDict *dict, + const gchar *key, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_2_40 +GVariant * g_variant_dict_lookup_value (GVariantDict *dict, + const gchar *key, + const GVariantType *expected_type); +GLIB_AVAILABLE_IN_2_40 +gboolean g_variant_dict_contains (GVariantDict *dict, + const gchar *key); +GLIB_AVAILABLE_IN_2_40 +void g_variant_dict_insert (GVariantDict *dict, + const gchar *key, + const gchar *format_string, + ...); +GLIB_AVAILABLE_IN_2_40 +void g_variant_dict_insert_value (GVariantDict *dict, + const gchar *key, + GVariant *value); +GLIB_AVAILABLE_IN_2_40 +gboolean g_variant_dict_remove (GVariantDict *dict, + const gchar *key); +GLIB_AVAILABLE_IN_2_40 +void g_variant_dict_clear (GVariantDict *dict); +GLIB_AVAILABLE_IN_2_40 +GVariant * g_variant_dict_end (GVariantDict *dict); +GLIB_AVAILABLE_IN_2_40 +GVariantDict * g_variant_dict_ref (GVariantDict *dict); +GLIB_AVAILABLE_IN_2_40 +void g_variant_dict_unref (GVariantDict *dict); + +G_END_DECLS + +#endif /* __G_VARIANT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gvarianttype.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gvarianttype.h new file mode 100644 index 0000000..6374957 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gvarianttype.h @@ -0,0 +1,384 @@ +/* + * Copyright © 2007, 2008 Ryan Lortie + * Copyright © 2009, 2010 Codethink Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#ifndef __G_VARIANT_TYPE_H__ +#define __G_VARIANT_TYPE_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GVariantType: + * + * A type in the GVariant type system. + * + * Two types may not be compared by value; use g_variant_type_equal() or + * g_variant_type_is_subtype_of(). May be copied using + * g_variant_type_copy() and freed using g_variant_type_free(). + **/ +typedef struct _GVariantType GVariantType; + +/** + * G_VARIANT_TYPE_BOOLEAN: + * + * The type of a value that can be either %TRUE or %FALSE. + **/ +#define G_VARIANT_TYPE_BOOLEAN ((const GVariantType *) "b") + +/** + * G_VARIANT_TYPE_BYTE: + * + * The type of an integer value that can range from 0 to 255. + **/ +#define G_VARIANT_TYPE_BYTE ((const GVariantType *) "y") + +/** + * G_VARIANT_TYPE_INT16: + * + * The type of an integer value that can range from -32768 to 32767. + **/ +#define G_VARIANT_TYPE_INT16 ((const GVariantType *) "n") + +/** + * G_VARIANT_TYPE_UINT16: + * + * The type of an integer value that can range from 0 to 65535. + * There were about this many people living in Toronto in the 1870s. + **/ +#define G_VARIANT_TYPE_UINT16 ((const GVariantType *) "q") + +/** + * G_VARIANT_TYPE_INT32: + * + * The type of an integer value that can range from -2147483648 to + * 2147483647. + **/ +#define G_VARIANT_TYPE_INT32 ((const GVariantType *) "i") + +/** + * G_VARIANT_TYPE_UINT32: + * + * The type of an integer value that can range from 0 to 4294967295. + * That's one number for everyone who was around in the late 1970s. + **/ +#define G_VARIANT_TYPE_UINT32 ((const GVariantType *) "u") + +/** + * G_VARIANT_TYPE_INT64: + * + * The type of an integer value that can range from + * -9223372036854775808 to 9223372036854775807. + **/ +#define G_VARIANT_TYPE_INT64 ((const GVariantType *) "x") + +/** + * G_VARIANT_TYPE_UINT64: + * + * The type of an integer value that can range from 0 + * to 18446744073709551615 (inclusive). That's a really big number, + * but a Rubik's cube can have a bit more than twice as many possible + * positions. + **/ +#define G_VARIANT_TYPE_UINT64 ((const GVariantType *) "t") + +/** + * G_VARIANT_TYPE_DOUBLE: + * + * The type of a double precision IEEE754 floating point number. + * These guys go up to about 1.80e308 (plus and minus) but miss out on + * some numbers in between. In any case, that's far greater than the + * estimated number of fundamental particles in the observable + * universe. + **/ +#define G_VARIANT_TYPE_DOUBLE ((const GVariantType *) "d") + +/** + * G_VARIANT_TYPE_STRING: + * + * The type of a string. "" is a string. %NULL is not a string. + **/ +#define G_VARIANT_TYPE_STRING ((const GVariantType *) "s") + +/** + * G_VARIANT_TYPE_OBJECT_PATH: + * + * The type of a D-Bus object reference. These are strings of a + * specific format used to identify objects at a given destination on + * the bus. + * + * If you are not interacting with D-Bus, then there is no reason to make + * use of this type. If you are, then the D-Bus specification contains a + * precise description of valid object paths. + **/ +#define G_VARIANT_TYPE_OBJECT_PATH ((const GVariantType *) "o") + +/** + * G_VARIANT_TYPE_SIGNATURE: + * + * The type of a D-Bus type signature. These are strings of a specific + * format used as type signatures for D-Bus methods and messages. + * + * If you are not interacting with D-Bus, then there is no reason to make + * use of this type. If you are, then the D-Bus specification contains a + * precise description of valid signature strings. + **/ +#define G_VARIANT_TYPE_SIGNATURE ((const GVariantType *) "g") + +/** + * G_VARIANT_TYPE_VARIANT: + * + * The type of a box that contains any other value (including another + * variant). + **/ +#define G_VARIANT_TYPE_VARIANT ((const GVariantType *) "v") + +/** + * G_VARIANT_TYPE_HANDLE: + * + * The type of a 32bit signed integer value, that by convention, is used + * as an index into an array of file descriptors that are sent alongside + * a D-Bus message. + * + * If you are not interacting with D-Bus, then there is no reason to make + * use of this type. + **/ +#define G_VARIANT_TYPE_HANDLE ((const GVariantType *) "h") + +/** + * G_VARIANT_TYPE_UNIT: + * + * The empty tuple type. Has only one instance. Known also as "triv" + * or "void". + **/ +#define G_VARIANT_TYPE_UNIT ((const GVariantType *) "()") + +/** + * G_VARIANT_TYPE_ANY: + * + * An indefinite type that is a supertype of every type (including + * itself). + **/ +#define G_VARIANT_TYPE_ANY ((const GVariantType *) "*") + +/** + * G_VARIANT_TYPE_BASIC: + * + * An indefinite type that is a supertype of every basic (ie: + * non-container) type. + **/ +#define G_VARIANT_TYPE_BASIC ((const GVariantType *) "?") + +/** + * G_VARIANT_TYPE_MAYBE: + * + * An indefinite type that is a supertype of every maybe type. + **/ +#define G_VARIANT_TYPE_MAYBE ((const GVariantType *) "m*") + +/** + * G_VARIANT_TYPE_ARRAY: + * + * An indefinite type that is a supertype of every array type. + **/ +#define G_VARIANT_TYPE_ARRAY ((const GVariantType *) "a*") + +/** + * G_VARIANT_TYPE_TUPLE: + * + * An indefinite type that is a supertype of every tuple type, + * regardless of the number of items in the tuple. + **/ +#define G_VARIANT_TYPE_TUPLE ((const GVariantType *) "r") + +/** + * G_VARIANT_TYPE_DICT_ENTRY: + * + * An indefinite type that is a supertype of every dictionary entry + * type. + **/ +#define G_VARIANT_TYPE_DICT_ENTRY ((const GVariantType *) "{?*}") + +/** + * G_VARIANT_TYPE_DICTIONARY: + * + * An indefinite type that is a supertype of every dictionary type -- + * that is, any array type that has an element type equal to any + * dictionary entry type. + **/ +#define G_VARIANT_TYPE_DICTIONARY ((const GVariantType *) "a{?*}") + +/** + * G_VARIANT_TYPE_STRING_ARRAY: + * + * The type of an array of strings. + **/ +#define G_VARIANT_TYPE_STRING_ARRAY ((const GVariantType *) "as") + +/** + * G_VARIANT_TYPE_OBJECT_PATH_ARRAY: + * + * The type of an array of object paths. + **/ +#define G_VARIANT_TYPE_OBJECT_PATH_ARRAY ((const GVariantType *) "ao") + +/** + * G_VARIANT_TYPE_BYTESTRING: + * + * The type of an array of bytes. This type is commonly used to pass + * around strings that may not be valid utf8. In that case, the + * convention is that the nul terminator character should be included as + * the last character in the array. + **/ +#define G_VARIANT_TYPE_BYTESTRING ((const GVariantType *) "ay") + +/** + * G_VARIANT_TYPE_BYTESTRING_ARRAY: + * + * The type of an array of byte strings (an array of arrays of bytes). + **/ +#define G_VARIANT_TYPE_BYTESTRING_ARRAY ((const GVariantType *) "aay") + +/** + * G_VARIANT_TYPE_VARDICT: + * + * The type of a dictionary mapping strings to variants (the ubiquitous + * "a{sv}" type). + * + * Since: 2.30 + **/ +#define G_VARIANT_TYPE_VARDICT ((const GVariantType *) "a{sv}") + + +/** + * G_VARIANT_TYPE: + * @type_string: a well-formed #GVariantType type string + * + * Converts a string to a const #GVariantType. Depending on the + * current debugging level, this function may perform a runtime check + * to ensure that @string is a valid GVariant type string. + * + * It is always a programmer error to use this macro with an invalid + * type string. If in doubt, use g_variant_type_string_is_valid() to + * check if the string is valid. + * + * Since 2.24 + **/ +#ifndef G_DISABLE_CHECKS +# define G_VARIANT_TYPE(type_string) (g_variant_type_checked_ ((type_string))) +#else +# define G_VARIANT_TYPE(type_string) ((const GVariantType *) (type_string)) +#endif + +/* type string checking */ +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_string_is_valid (const gchar *type_string); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_string_scan (const gchar *string, + const gchar *limit, + const gchar **endptr); + +/* create/destroy */ +GLIB_AVAILABLE_IN_ALL +void g_variant_type_free (GVariantType *type); +GLIB_AVAILABLE_IN_ALL +GVariantType * g_variant_type_copy (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +GVariantType * g_variant_type_new (const gchar *type_string); + +/* getters */ +GLIB_AVAILABLE_IN_ALL +gsize g_variant_type_get_string_length (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +const gchar * g_variant_type_peek_string (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gchar * g_variant_type_dup_string (const GVariantType *type); + +/* classification */ +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_definite (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_container (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_basic (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_maybe (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_array (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_tuple (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_dict_entry (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_variant (const GVariantType *type); + +/* for hash tables */ +GLIB_AVAILABLE_IN_ALL +guint g_variant_type_hash (gconstpointer type); +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_equal (gconstpointer type1, + gconstpointer type2); + +/* subtypes */ +GLIB_AVAILABLE_IN_ALL +gboolean g_variant_type_is_subtype_of (const GVariantType *type, + const GVariantType *supertype); + +/* type iterator interface */ +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_variant_type_element (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_variant_type_first (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_variant_type_next (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +gsize g_variant_type_n_items (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_variant_type_key (const GVariantType *type); +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_variant_type_value (const GVariantType *type); + +/* constructors */ +GLIB_AVAILABLE_IN_ALL +GVariantType * g_variant_type_new_array (const GVariantType *element); +GLIB_AVAILABLE_IN_ALL +GVariantType * g_variant_type_new_maybe (const GVariantType *element); +GLIB_AVAILABLE_IN_ALL +GVariantType * g_variant_type_new_tuple (const GVariantType * const *items, + gint length); +GLIB_AVAILABLE_IN_ALL +GVariantType * g_variant_type_new_dict_entry (const GVariantType *key, + const GVariantType *value); + +/*< private >*/ +GLIB_AVAILABLE_IN_ALL +const GVariantType * g_variant_type_checked_ (const gchar *); +GLIB_AVAILABLE_IN_2_60 +gsize g_variant_type_string_get_depth_ (const gchar *type_string); + +G_END_DECLS + +#endif /* __G_VARIANT_TYPE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gversion.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gversion.h new file mode 100644 index 0000000..d15f548 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gversion.h @@ -0,0 +1,57 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_VERSION_H__ +#define __G_VERSION_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +GLIB_VAR const guint glib_major_version; +GLIB_VAR const guint glib_minor_version; +GLIB_VAR const guint glib_micro_version; +GLIB_VAR const guint glib_interface_age; +GLIB_VAR const guint glib_binary_age; + +GLIB_AVAILABLE_IN_ALL +const gchar * glib_check_version (guint required_major, + guint required_minor, + guint required_micro); + +#define GLIB_CHECK_VERSION(major,minor,micro) \ + (GLIB_MAJOR_VERSION > (major) || \ + (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION > (minor)) || \ + (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION == (minor) && \ + GLIB_MICRO_VERSION >= (micro))) + +G_END_DECLS + +#endif /* __G_VERSION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gversionmacros.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gversionmacros.h new file mode 100644 index 0000000..4ec9e06 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gversionmacros.h @@ -0,0 +1,1213 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_VERSION_MACROS_H__ +#define __G_VERSION_MACROS_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +/* Version boundaries checks */ + +#define G_ENCODE_VERSION(major,minor) ((major) << 16 | (minor) << 8) + +/* XXX: Every new stable minor release bump should add a macro here */ + +/** + * GLIB_VERSION_2_26: + * + * A macro that evaluates to the 2.26 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.32 + */ +#define GLIB_VERSION_2_26 (G_ENCODE_VERSION (2, 26)) + +/** + * GLIB_VERSION_2_28: + * + * A macro that evaluates to the 2.28 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.32 + */ +#define GLIB_VERSION_2_28 (G_ENCODE_VERSION (2, 28)) + +/** + * GLIB_VERSION_2_30: + * + * A macro that evaluates to the 2.30 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.32 + */ +#define GLIB_VERSION_2_30 (G_ENCODE_VERSION (2, 30)) + +/** + * GLIB_VERSION_2_32: + * + * A macro that evaluates to the 2.32 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.32 + */ +#define GLIB_VERSION_2_32 (G_ENCODE_VERSION (2, 32)) + +/** + * GLIB_VERSION_2_34: + * + * A macro that evaluates to the 2.34 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.34 + */ +#define GLIB_VERSION_2_34 (G_ENCODE_VERSION (2, 34)) + +/** + * GLIB_VERSION_2_36: + * + * A macro that evaluates to the 2.36 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.36 + */ +#define GLIB_VERSION_2_36 (G_ENCODE_VERSION (2, 36)) + +/** + * GLIB_VERSION_2_38: + * + * A macro that evaluates to the 2.38 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.38 + */ +#define GLIB_VERSION_2_38 (G_ENCODE_VERSION (2, 38)) + +/** + * GLIB_VERSION_2_40: + * + * A macro that evaluates to the 2.40 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.40 + */ +#define GLIB_VERSION_2_40 (G_ENCODE_VERSION (2, 40)) + +/** + * GLIB_VERSION_2_42: + * + * A macro that evaluates to the 2.42 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.42 + */ +#define GLIB_VERSION_2_42 (G_ENCODE_VERSION (2, 42)) + +/** + * GLIB_VERSION_2_44: + * + * A macro that evaluates to the 2.44 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.44 + */ +#define GLIB_VERSION_2_44 (G_ENCODE_VERSION (2, 44)) + +/** + * GLIB_VERSION_2_46: + * + * A macro that evaluates to the 2.46 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.46 + */ +#define GLIB_VERSION_2_46 (G_ENCODE_VERSION (2, 46)) + +/** + * GLIB_VERSION_2_48: + * + * A macro that evaluates to the 2.48 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.48 + */ +#define GLIB_VERSION_2_48 (G_ENCODE_VERSION (2, 48)) + +/** + * GLIB_VERSION_2_50: + * + * A macro that evaluates to the 2.50 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.50 + */ +#define GLIB_VERSION_2_50 (G_ENCODE_VERSION (2, 50)) + +/** + * GLIB_VERSION_2_52: + * + * A macro that evaluates to the 2.52 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.52 + */ +#define GLIB_VERSION_2_52 (G_ENCODE_VERSION (2, 52)) + +/** + * GLIB_VERSION_2_54: + * + * A macro that evaluates to the 2.54 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.54 + */ +#define GLIB_VERSION_2_54 (G_ENCODE_VERSION (2, 54)) + +/** + * GLIB_VERSION_2_56: + * + * A macro that evaluates to the 2.56 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.56 + */ +#define GLIB_VERSION_2_56 (G_ENCODE_VERSION (2, 56)) + +/** + * GLIB_VERSION_2_58: + * + * A macro that evaluates to the 2.58 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.58 + */ +#define GLIB_VERSION_2_58 (G_ENCODE_VERSION (2, 58)) + +/** + * GLIB_VERSION_2_60: + * + * A macro that evaluates to the 2.60 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.60 + */ +#define GLIB_VERSION_2_60 (G_ENCODE_VERSION (2, 60)) + +/** + * GLIB_VERSION_2_62: + * + * A macro that evaluates to the 2.62 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.62 + */ +#define GLIB_VERSION_2_62 (G_ENCODE_VERSION (2, 62)) + +/** + * GLIB_VERSION_2_64: + * + * A macro that evaluates to the 2.64 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.64 + */ +#define GLIB_VERSION_2_64 (G_ENCODE_VERSION (2, 64)) + +/** + * GLIB_VERSION_2_66: + * + * A macro that evaluates to the 2.66 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.66 + */ +#define GLIB_VERSION_2_66 (G_ENCODE_VERSION (2, 66)) + +/** + * GLIB_VERSION_2_68: + * + * A macro that evaluates to the 2.68 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.68 + */ +#define GLIB_VERSION_2_68 (G_ENCODE_VERSION (2, 68)) + +/** + * GLIB_VERSION_2_70: + * + * A macro that evaluates to the 2.70 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.70 + */ +#define GLIB_VERSION_2_70 (G_ENCODE_VERSION (2, 70)) + +/** + * GLIB_VERSION_2_72: + * + * A macro that evaluates to the 2.72 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.72 + */ +#define GLIB_VERSION_2_72 (G_ENCODE_VERSION (2, 72)) + +/** + * GLIB_VERSION_2_74: + * + * A macro that evaluates to the 2.74 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.74 + */ +#define GLIB_VERSION_2_74 (G_ENCODE_VERSION (2, 74)) + +/** + * GLIB_VERSION_CUR_STABLE: + * + * A macro that evaluates to the current stable version of GLib, in a format + * that can be used by the C pre-processor. + * + * During an unstable development cycle, this evaluates to the next stable + * (unreleased) version which will be the result of the development cycle. + * + * Since: 2.32 + */ +#if (GLIB_MINOR_VERSION % 2) +#define GLIB_VERSION_CUR_STABLE (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION + 1)) +#else +#define GLIB_VERSION_CUR_STABLE (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION)) +#endif + +/** + * GLIB_VERSION_PREV_STABLE: + * + * A macro that evaluates to the previous stable version of GLib, in a format + * that can be used by the C pre-processor. + * + * During an unstable development cycle, this evaluates to the most recent + * released stable release, which preceded this development cycle. + * + * Since: 2.32 + */ +#if (GLIB_MINOR_VERSION % 2) +#define GLIB_VERSION_PREV_STABLE (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION - 1)) +#else +#define GLIB_VERSION_PREV_STABLE (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION - 2)) +#endif + +/** + * GLIB_VERSION_MIN_REQUIRED: + * + * A macro that should be defined by the user prior to including + * the glib.h header. + * The definition should be one of the predefined GLib version + * macros: %GLIB_VERSION_2_26, %GLIB_VERSION_2_28,... + * + * This macro defines the earliest version of GLib that the package is + * required to be able to compile against. + * + * If the compiler is configured to warn about the use of deprecated + * functions, then using functions that were deprecated in version + * %GLIB_VERSION_MIN_REQUIRED or earlier will cause warnings (but + * using functions deprecated in later releases will not). + * + * Since: 2.32 + */ +/* If the package sets GLIB_VERSION_MIN_REQUIRED to some future + * GLIB_VERSION_X_Y value that we don't know about, it will compare as + * 0 in preprocessor tests. + */ +#ifndef GLIB_VERSION_MIN_REQUIRED +# define GLIB_VERSION_MIN_REQUIRED (GLIB_VERSION_CUR_STABLE) +#elif GLIB_VERSION_MIN_REQUIRED == 0 +# undef GLIB_VERSION_MIN_REQUIRED +# define GLIB_VERSION_MIN_REQUIRED (GLIB_VERSION_CUR_STABLE + 2) +#endif + +/** + * GLIB_VERSION_MAX_ALLOWED: + * + * A macro that should be defined by the user prior to including + * the glib.h header. + * The definition should be one of the predefined GLib version + * macros: %GLIB_VERSION_2_26, %GLIB_VERSION_2_28,... + * + * This macro defines the latest version of the GLib API that the + * package is allowed to make use of. + * + * If the compiler is configured to warn about the use of deprecated + * functions, then using functions added after version + * %GLIB_VERSION_MAX_ALLOWED will cause warnings. + * + * Unless you are using GLIB_CHECK_VERSION() or the like to compile + * different code depending on the GLib version, then this should be + * set to the same value as %GLIB_VERSION_MIN_REQUIRED. + * + * Since: 2.32 + */ +#if !defined (GLIB_VERSION_MAX_ALLOWED) || (GLIB_VERSION_MAX_ALLOWED == 0) +# undef GLIB_VERSION_MAX_ALLOWED +# define GLIB_VERSION_MAX_ALLOWED (GLIB_VERSION_CUR_STABLE) +#endif + +/* sanity checks */ +#if GLIB_VERSION_MIN_REQUIRED > GLIB_VERSION_CUR_STABLE +#error "GLIB_VERSION_MIN_REQUIRED must be <= GLIB_VERSION_CUR_STABLE" +#endif +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_MIN_REQUIRED +#error "GLIB_VERSION_MAX_ALLOWED must be >= GLIB_VERSION_MIN_REQUIRED" +#endif +#if GLIB_VERSION_MIN_REQUIRED < GLIB_VERSION_2_26 +#error "GLIB_VERSION_MIN_REQUIRED must be >= GLIB_VERSION_2_26" +#endif + +/* These macros are used to mark deprecated functions in GLib headers, + * and thus have to be exposed in installed headers. But please + * do *not* use them in other projects. Instead, use G_DEPRECATED + * or define your own wrappers around it. + */ +#define GLIB_AVAILABLE_IN_ALL _GLIB_EXTERN + +/* XXX: Every new stable minor release should add a set of macros here */ + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_26 +# define GLIB_DEPRECATED_IN_2_26 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_26_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_26 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_26_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_26 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_26_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_26 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_26_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_26 +# define GLIB_DEPRECATED_MACRO_IN_2_26_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_26 +# define GLIB_DEPRECATED_TYPE_IN_2_26_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_26 +# define GLIB_AVAILABLE_IN_2_26 GLIB_UNAVAILABLE(2, 26) +# define GLIB_AVAILABLE_MACRO_IN_2_26 GLIB_UNAVAILABLE_MACRO(2, 26) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_26 GLIB_UNAVAILABLE_ENUMERATOR(2, 26) +# define GLIB_AVAILABLE_TYPE_IN_2_26 GLIB_UNAVAILABLE_TYPE(2, 26) +#else +# define GLIB_AVAILABLE_IN_2_26 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_26 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_26 +# define GLIB_AVAILABLE_TYPE_IN_2_26 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_28 +# define GLIB_DEPRECATED_IN_2_28 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_28_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_28 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_28_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_28 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_28_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_28 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_28_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_28 +# define GLIB_DEPRECATED_MACRO_IN_2_28_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_28 +# define GLIB_DEPRECATED_TYPE_IN_2_28_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_28 +# define GLIB_AVAILABLE_IN_2_28 GLIB_UNAVAILABLE(2, 28) +# define GLIB_AVAILABLE_MACRO_IN_2_28 GLIB_UNAVAILABLE_MACRO(2, 28) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_28 GLIB_UNAVAILABLE_ENUMERATOR(2, 28) +# define GLIB_AVAILABLE_TYPE_IN_2_28 GLIB_UNAVAILABLE_TYPE(2, 28) +#else +# define GLIB_AVAILABLE_IN_2_28 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_28 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_28 +# define GLIB_AVAILABLE_TYPE_IN_2_28 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_30 +# define GLIB_DEPRECATED_IN_2_30 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_30_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_30 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_30_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_30 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_30_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_30 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_30_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_30 +# define GLIB_DEPRECATED_MACRO_IN_2_30_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_30 +# define GLIB_DEPRECATED_TYPE_IN_2_30_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_30 +# define GLIB_AVAILABLE_IN_2_30 GLIB_UNAVAILABLE(2, 30) +# define GLIB_AVAILABLE_MACRO_IN_2_30 GLIB_UNAVAILABLE_MACRO(2, 30) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_30 GLIB_UNAVAILABLE_ENUMERATOR(2, 30) +# define GLIB_AVAILABLE_TYPE_IN_2_30 GLIB_UNAVAILABLE_TYPE(2, 30) +#else +# define GLIB_AVAILABLE_IN_2_30 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_30 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_30 +# define GLIB_AVAILABLE_TYPE_IN_2_30 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_32 +# define GLIB_DEPRECATED_IN_2_32 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_32_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_32 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_32_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_32 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_32_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_32 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_32_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_32 +# define GLIB_DEPRECATED_MACRO_IN_2_32_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_32 +# define GLIB_DEPRECATED_TYPE_IN_2_32_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_32 +# define GLIB_DEPRECATED_TYPE_IN_2_32_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_32 +# define GLIB_AVAILABLE_IN_2_32 GLIB_UNAVAILABLE(2, 32) +# define GLIB_AVAILABLE_MACRO_IN_2_32 GLIB_UNAVAILABLE_MACRO(2, 32) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_32 GLIB_UNAVAILABLE_ENUMERATOR(2, 32) +# define GLIB_AVAILABLE_TYPE_IN_2_32 GLIB_UNAVAILABLE_TYPE(2, 32) +#else +# define GLIB_AVAILABLE_IN_2_32 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_32 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_32 +# define GLIB_AVAILABLE_TYPE_IN_2_32 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_34 +# define GLIB_DEPRECATED_IN_2_34 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_34_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_34 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_34_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_34 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_34_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_34 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_34_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_34 +# define GLIB_DEPRECATED_MACRO_IN_2_34_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_34 +# define GLIB_DEPRECATED_TYPE_IN_2_34_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_34 +# define GLIB_AVAILABLE_IN_2_34 GLIB_UNAVAILABLE(2, 34) +# define GLIB_AVAILABLE_MACRO_IN_2_34 GLIB_UNAVAILABLE_MACRO(2, 34) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_34 GLIB_UNAVAILABLE_ENUMERATOR(2, 34) +# define GLIB_AVAILABLE_TYPE_IN_2_34 GLIB_UNAVAILABLE_TYPE(2, 34) +#else +# define GLIB_AVAILABLE_IN_2_34 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_34 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_34 +# define GLIB_AVAILABLE_TYPE_IN_2_34 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_36 +# define GLIB_DEPRECATED_IN_2_36 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_36_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_36 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_36_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_36 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_36_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_36 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_36_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_36 +# define GLIB_DEPRECATED_MACRO_IN_2_36_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_36 +# define GLIB_DEPRECATED_TYPE_IN_2_36_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_36 +# define GLIB_AVAILABLE_IN_2_36 GLIB_UNAVAILABLE(2, 36) +# define GLIB_AVAILABLE_MACRO_IN_2_36 GLIB_UNAVAILABLE_MACRO(2, 36) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_36 GLIB_UNAVAILABLE_ENUMERATOR(2, 36) +# define GLIB_AVAILABLE_TYPE_IN_2_36 GLIB_UNAVAILABLE_TYPE(2, 36) +#else +# define GLIB_AVAILABLE_IN_2_36 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_36 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_36 +# define GLIB_AVAILABLE_TYPE_IN_2_36 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_38 +# define GLIB_DEPRECATED_IN_2_38 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_38_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_38 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_38_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_38 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_38_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_38 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_38_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_38 +# define GLIB_DEPRECATED_MACRO_IN_2_38_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_38 +# define GLIB_DEPRECATED_TYPE_IN_2_38_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 +# define GLIB_AVAILABLE_IN_2_38 GLIB_UNAVAILABLE(2, 38) +# define GLIB_AVAILABLE_MACRO_IN_2_38 GLIB_UNAVAILABLE_MACRO(2, 38) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_38 GLIB_UNAVAILABLE_ENUMERATOR(2, 38) +# define GLIB_AVAILABLE_TYPE_IN_2_38 GLIB_UNAVAILABLE_TYPE(2, 38) +#else +# define GLIB_AVAILABLE_IN_2_38 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_38 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_38 +# define GLIB_AVAILABLE_TYPE_IN_2_38 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_40 +# define GLIB_DEPRECATED_IN_2_40 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_40_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_40 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_40_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_40 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_40_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_40 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_40_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_40 +# define GLIB_DEPRECATED_MACRO_IN_2_40_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_40 +# define GLIB_DEPRECATED_TYPE_IN_2_40_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_40 +# define GLIB_AVAILABLE_IN_2_40 GLIB_UNAVAILABLE(2, 40) +# define GLIB_AVAILABLE_MACRO_IN_2_40 GLIB_UNAVAILABLE_MACRO(2, 40) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_40 GLIB_UNAVAILABLE_ENUMERATOR(2, 40) +# define GLIB_AVAILABLE_TYPE_IN_2_40 GLIB_UNAVAILABLE_TYPE(2, 40) +#else +# define GLIB_AVAILABLE_IN_2_40 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_40 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_40 +# define GLIB_AVAILABLE_TYPE_IN_2_40 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_42 +# define GLIB_DEPRECATED_IN_2_42 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_42_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_42 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_42_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_42 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_42_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_42 +# define GLIB_DEPRECATED_MACRO_IN_2_42_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_42 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_42_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_42 +# define GLIB_DEPRECATED_TYPE_IN_2_42_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_42 +# define GLIB_AVAILABLE_IN_2_42 GLIB_UNAVAILABLE(2, 42) +# define GLIB_AVAILABLE_MACRO_IN_2_42 GLIB_UNAVAILABLE_MACRO(2, 42) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_42 GLIB_UNAVAILABLE_ENUMERATOR(2, 42) +# define GLIB_AVAILABLE_TYPE_IN_2_42 GLIB_UNAVAILABLE_TYPE(2, 42) +#else +# define GLIB_AVAILABLE_IN_2_42 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_42 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_42 +# define GLIB_AVAILABLE_TYPE_IN_2_42 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_44 +# define GLIB_DEPRECATED_IN_2_44 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_44_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_44 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_44_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_44 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_44_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_44 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_44_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_44 +# define GLIB_DEPRECATED_MACRO_IN_2_44_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_44 +# define GLIB_DEPRECATED_TYPE_IN_2_44_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_44 +# define GLIB_AVAILABLE_IN_2_44 GLIB_UNAVAILABLE(2, 44) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_44 GLIB_UNAVAILABLE_STATIC_INLINE(2, 44) +# define GLIB_AVAILABLE_MACRO_IN_2_44 GLIB_UNAVAILABLE_MACRO(2, 44) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_44 GLIB_UNAVAILABLE_ENUMERATOR(2, 44) +# define GLIB_AVAILABLE_TYPE_IN_2_44 GLIB_UNAVAILABLE_TYPE(2, 44) +#else +# define GLIB_AVAILABLE_IN_2_44 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_44 +# define GLIB_AVAILABLE_MACRO_IN_2_44 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_44 +# define GLIB_AVAILABLE_TYPE_IN_2_44 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_46 +# define GLIB_DEPRECATED_IN_2_46 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_46_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_46 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_46_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_46 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_46_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_46 +# define GLIB_DEPRECATED_MACRO_IN_2_46_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_46 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_46_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_46 +# define GLIB_DEPRECATED_TYPE_IN_2_46_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_46 +# define GLIB_AVAILABLE_IN_2_46 GLIB_UNAVAILABLE(2, 46) +# define GLIB_AVAILABLE_MACRO_IN_2_46 GLIB_UNAVAILABLE_MACRO(2, 46) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_46 GLIB_UNAVAILABLE_ENUMERATOR(2, 46) +# define GLIB_AVAILABLE_TYPE_IN_2_46 GLIB_UNAVAILABLE_TYPE(2, 46) +#else +# define GLIB_AVAILABLE_IN_2_46 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_46 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_46 +# define GLIB_AVAILABLE_TYPE_IN_2_46 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_48 +# define GLIB_DEPRECATED_IN_2_48 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_48_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_48 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_48_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_48 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_48_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_48 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_48_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_48 +# define GLIB_DEPRECATED_MACRO_IN_2_48_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_48 +# define GLIB_DEPRECATED_TYPE_IN_2_48_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_48 +# define GLIB_AVAILABLE_IN_2_48 GLIB_UNAVAILABLE(2, 48) +# define GLIB_AVAILABLE_MACRO_IN_2_48 GLIB_UNAVAILABLE_MACRO(2, 48) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_48 GLIB_UNAVAILABLE_ENUMERATOR(2, 48) +# define GLIB_AVAILABLE_TYPE_IN_2_48 GLIB_UNAVAILABLE_TYPE(2, 48) +#else +# define GLIB_AVAILABLE_IN_2_48 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_48 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_48 +# define GLIB_AVAILABLE_TYPE_IN_2_48 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_50 +# define GLIB_DEPRECATED_IN_2_50 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_50_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_50 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_50_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_50 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_50_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_50 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_50_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_50 +# define GLIB_DEPRECATED_MACRO_IN_2_50_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_50 +# define GLIB_DEPRECATED_TYPE_IN_2_50_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_50 +# define GLIB_AVAILABLE_IN_2_50 GLIB_UNAVAILABLE(2, 50) +# define GLIB_AVAILABLE_MACRO_IN_2_50 GLIB_UNAVAILABLE_MACRO(2, 50) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_50 GLIB_UNAVAILABLE_ENUMERATOR(2, 50) +# define GLIB_AVAILABLE_TYPE_IN_2_50 GLIB_UNAVAILABLE_TYPE(2, 50) +#else +# define GLIB_AVAILABLE_IN_2_50 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_50 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_50 +# define GLIB_AVAILABLE_TYPE_IN_2_50 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_52 +# define GLIB_DEPRECATED_IN_2_52 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_52_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_52 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_52_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_52 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_52_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_52 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_52_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_52 +# define GLIB_DEPRECATED_MACRO_IN_2_52_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_52 +# define GLIB_DEPRECATED_TYPE_IN_2_52_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_52 +# define GLIB_AVAILABLE_IN_2_52 GLIB_UNAVAILABLE(2, 52) +# define GLIB_AVAILABLE_MACRO_IN_2_52 GLIB_UNAVAILABLE_MACRO(2, 52) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_52 GLIB_UNAVAILABLE_ENUMERATOR(2, 52) +# define GLIB_AVAILABLE_TYPE_IN_2_52 GLIB_UNAVAILABLE_TYPE(2, 52) +#else +# define GLIB_AVAILABLE_IN_2_52 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_52 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_52 +# define GLIB_AVAILABLE_TYPE_IN_2_52 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_54 +# define GLIB_DEPRECATED_IN_2_54 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_54_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_54 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_54_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_54 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_54_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_54 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_54_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_54 +# define GLIB_DEPRECATED_MACRO_IN_2_54_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_54 +# define GLIB_DEPRECATED_TYPE_IN_2_54_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_54 +# define GLIB_AVAILABLE_IN_2_54 GLIB_UNAVAILABLE(2, 54) +# define GLIB_AVAILABLE_MACRO_IN_2_54 GLIB_UNAVAILABLE_MACRO(2, 54) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_54 GLIB_UNAVAILABLE_ENUMERATOR(2, 54) +# define GLIB_AVAILABLE_TYPE_IN_2_54 GLIB_UNAVAILABLE_TYPE(2, 54) +#else +# define GLIB_AVAILABLE_IN_2_54 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_54 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_54 +# define GLIB_AVAILABLE_TYPE_IN_2_54 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_56 +# define GLIB_DEPRECATED_IN_2_56 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_56_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_56 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_56_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_56 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_56_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_56 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_56_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_56 +# define GLIB_DEPRECATED_MACRO_IN_2_56_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_56 +# define GLIB_DEPRECATED_TYPE_IN_2_56_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_56 +# define GLIB_AVAILABLE_IN_2_56 GLIB_UNAVAILABLE(2, 56) +# define GLIB_AVAILABLE_MACRO_IN_2_56 GLIB_UNAVAILABLE_MACRO(2, 56) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_56 GLIB_UNAVAILABLE_ENUMERATOR(2, 56) +# define GLIB_AVAILABLE_TYPE_IN_2_56 GLIB_UNAVAILABLE_TYPE(2, 56) +#else +# define GLIB_AVAILABLE_IN_2_56 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_56 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_56 +# define GLIB_AVAILABLE_TYPE_IN_2_56 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_58 +# define GLIB_DEPRECATED_IN_2_58 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_58_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_58 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_58_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_58 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_58_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_58 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_58_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_58 +# define GLIB_DEPRECATED_MACRO_IN_2_58_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_58 +# define GLIB_DEPRECATED_TYPE_IN_2_58_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_58 +# define GLIB_AVAILABLE_IN_2_58 GLIB_UNAVAILABLE(2, 58) +# define GLIB_AVAILABLE_MACRO_IN_2_58 GLIB_UNAVAILABLE_MACRO(2, 58) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_58 GLIB_UNAVAILABLE_ENUMERATOR(2, 58) +# define GLIB_AVAILABLE_TYPE_IN_2_58 GLIB_UNAVAILABLE_TYPE(2, 58) +#else +# define GLIB_AVAILABLE_IN_2_58 _GLIB_EXTERN +# define GLIB_AVAILABLE_MACRO_IN_2_58 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_58 +# define GLIB_AVAILABLE_TYPE_IN_2_58 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_60 +# define GLIB_DEPRECATED_IN_2_60 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_60_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_60 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_60_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_60 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_60_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_60 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_60_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_60 +# define GLIB_DEPRECATED_MACRO_IN_2_60_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_60 +# define GLIB_DEPRECATED_TYPE_IN_2_60_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_60 +# define GLIB_AVAILABLE_IN_2_60 GLIB_UNAVAILABLE(2, 60) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_60 GLIB_UNAVAILABLE_STATIC_INLINE(2, 60) +# define GLIB_AVAILABLE_MACRO_IN_2_60 GLIB_UNAVAILABLE_MACRO(2, 60) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_60 GLIB_UNAVAILABLE_ENUMERATOR(2, 60) +# define GLIB_AVAILABLE_TYPE_IN_2_60 GLIB_UNAVAILABLE_TYPE(2, 60) +#else +# define GLIB_AVAILABLE_IN_2_60 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_60 +# define GLIB_AVAILABLE_MACRO_IN_2_60 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_60 +# define GLIB_AVAILABLE_TYPE_IN_2_60 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_62 +# define GLIB_DEPRECATED_IN_2_62 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_62_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_62 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_62_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_62 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_62_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_62 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_62_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_62 +# define GLIB_DEPRECATED_MACRO_IN_2_62_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_62 +# define GLIB_DEPRECATED_TYPE_IN_2_62_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_62 +# define GLIB_AVAILABLE_IN_2_62 GLIB_UNAVAILABLE(2, 62) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 GLIB_UNAVAILABLE_STATIC_INLINE(2, 62) +# define GLIB_AVAILABLE_MACRO_IN_2_62 GLIB_UNAVAILABLE_MACRO(2, 62) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_62 GLIB_UNAVAILABLE_ENUMERATOR(2, 62) +# define GLIB_AVAILABLE_TYPE_IN_2_62 GLIB_UNAVAILABLE_TYPE(2, 62) +#else +# define GLIB_AVAILABLE_IN_2_62 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_62 +# define GLIB_AVAILABLE_MACRO_IN_2_62 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_62 +# define GLIB_AVAILABLE_TYPE_IN_2_62 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64 +# define GLIB_DEPRECATED_IN_2_64 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_64_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_64 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_64_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_64 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_64_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_64 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_64_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_64 +# define GLIB_DEPRECATED_MACRO_IN_2_64_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_64 +# define GLIB_DEPRECATED_TYPE_IN_2_64_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_64 +# define GLIB_AVAILABLE_IN_2_64 GLIB_UNAVAILABLE(2, 64) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_64 GLIB_UNAVAILABLE_STATIC_INLINE(2, 64) +# define GLIB_AVAILABLE_MACRO_IN_2_64 GLIB_UNAVAILABLE_MACRO(2, 64) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_64 GLIB_UNAVAILABLE_ENUMERATOR(2, 64) +# define GLIB_AVAILABLE_TYPE_IN_2_64 GLIB_UNAVAILABLE_TYPE(2, 64) +#else +# define GLIB_AVAILABLE_IN_2_64 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_64 +# define GLIB_AVAILABLE_MACRO_IN_2_64 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_64 +# define GLIB_AVAILABLE_TYPE_IN_2_64 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_66 +# define GLIB_DEPRECATED_IN_2_66 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_66_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_66 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_66_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_66 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_66_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_66 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_66_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_66 +# define GLIB_DEPRECATED_MACRO_IN_2_66_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_66 +# define GLIB_DEPRECATED_TYPE_IN_2_66_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_66 +# define GLIB_AVAILABLE_IN_2_66 GLIB_UNAVAILABLE(2, 66) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_66 GLIB_UNAVAILABLE_STATIC_INLINE(2, 66) +# define GLIB_AVAILABLE_MACRO_IN_2_66 GLIB_UNAVAILABLE_MACRO(2, 66) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_66 GLIB_UNAVAILABLE_ENUMERATOR(2, 66) +# define GLIB_AVAILABLE_TYPE_IN_2_66 GLIB_UNAVAILABLE_TYPE(2, 66) +#else +# define GLIB_AVAILABLE_IN_2_66 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_66 +# define GLIB_AVAILABLE_MACRO_IN_2_66 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_66 +# define GLIB_AVAILABLE_TYPE_IN_2_66 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_68 +# define GLIB_DEPRECATED_IN_2_68 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_68_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_68 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_68_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_68 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_68_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_68 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_68_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_68 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_68_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_68 +# define GLIB_DEPRECATED_MACRO_IN_2_68_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_68 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_68_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_68 +# define GLIB_DEPRECATED_TYPE_IN_2_68_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_68 +# define GLIB_AVAILABLE_IN_2_68 GLIB_UNAVAILABLE(2, 68) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_68 GLIB_UNAVAILABLE_STATIC_INLINE(2, 68) +# define GLIB_AVAILABLE_MACRO_IN_2_68 GLIB_UNAVAILABLE_MACRO(2, 68) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_68 GLIB_UNAVAILABLE_ENUMERATOR(2, 68) +# define GLIB_AVAILABLE_TYPE_IN_2_68 GLIB_UNAVAILABLE_TYPE(2, 68) +#else +# define GLIB_AVAILABLE_IN_2_68 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_68 +# define GLIB_AVAILABLE_MACRO_IN_2_68 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_68 +# define GLIB_AVAILABLE_TYPE_IN_2_68 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_70 +# define GLIB_DEPRECATED_IN_2_70 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_70_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_70 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_70_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_70 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_70_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_70 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_70_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_70 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_70_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_70 +# define GLIB_DEPRECATED_MACRO_IN_2_70_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_70 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_70_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_70 +# define GLIB_DEPRECATED_TYPE_IN_2_70_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_70 +# define GLIB_AVAILABLE_IN_2_70 GLIB_UNAVAILABLE(2, 70) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_70 GLIB_UNAVAILABLE_STATIC_INLINE(2, 70) +# define GLIB_AVAILABLE_MACRO_IN_2_70 GLIB_UNAVAILABLE_MACRO(2, 70) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_70 GLIB_UNAVAILABLE_ENUMERATOR(2, 70) +# define GLIB_AVAILABLE_TYPE_IN_2_70 GLIB_UNAVAILABLE_TYPE(2, 70) +#else +# define GLIB_AVAILABLE_IN_2_70 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_70 +# define GLIB_AVAILABLE_MACRO_IN_2_70 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_70 +# define GLIB_AVAILABLE_TYPE_IN_2_70 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_72 +# define GLIB_DEPRECATED_IN_2_72 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_72_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_72 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_72_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_72 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_72_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_72 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_72_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_72 +# define GLIB_DEPRECATED_MACRO_IN_2_72_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_72 +# define GLIB_DEPRECATED_TYPE_IN_2_72_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_72 +# define GLIB_AVAILABLE_IN_2_72 GLIB_UNAVAILABLE(2, 72) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_72 GLIB_UNAVAILABLE_STATIC_INLINE(2, 72) +# define GLIB_AVAILABLE_MACRO_IN_2_72 GLIB_UNAVAILABLE_MACRO(2, 72) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_72 GLIB_UNAVAILABLE_ENUMERATOR(2, 72) +# define GLIB_AVAILABLE_TYPE_IN_2_72 GLIB_UNAVAILABLE_TYPE(2, 72) +#else +# define GLIB_AVAILABLE_IN_2_72 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_72 +# define GLIB_AVAILABLE_MACRO_IN_2_72 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_72 +# define GLIB_AVAILABLE_TYPE_IN_2_72 +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_74 +# define GLIB_DEPRECATED_IN_2_74 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_74_FOR(f) GLIB_DEPRECATED_FOR(f) +# define GLIB_DEPRECATED_MACRO_IN_2_74 GLIB_DEPRECATED_MACRO +# define GLIB_DEPRECATED_MACRO_IN_2_74_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_74 GLIB_DEPRECATED_ENUMERATOR +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_74_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_74 GLIB_DEPRECATED_TYPE +# define GLIB_DEPRECATED_TYPE_IN_2_74_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_74 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_74_FOR(f) _GLIB_EXTERN +# define GLIB_DEPRECATED_MACRO_IN_2_74 +# define GLIB_DEPRECATED_MACRO_IN_2_74_FOR(f) +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_74 +# define GLIB_DEPRECATED_ENUMERATOR_IN_2_74_FOR(f) +# define GLIB_DEPRECATED_TYPE_IN_2_74 +# define GLIB_DEPRECATED_TYPE_IN_2_74_FOR(f) +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_74 +# define GLIB_AVAILABLE_IN_2_74 GLIB_UNAVAILABLE(2, 74) +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_74 GLIB_UNAVAILABLE_STATIC_INLINE(2, 74) +# define GLIB_AVAILABLE_MACRO_IN_2_74 GLIB_UNAVAILABLE_MACRO(2, 74) +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_74 GLIB_UNAVAILABLE_ENUMERATOR(2, 74) +# define GLIB_AVAILABLE_TYPE_IN_2_74 GLIB_UNAVAILABLE_TYPE(2, 74) +#else +# define GLIB_AVAILABLE_IN_2_74 _GLIB_EXTERN +# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_74 +# define GLIB_AVAILABLE_MACRO_IN_2_74 +# define GLIB_AVAILABLE_ENUMERATOR_IN_2_74 +# define GLIB_AVAILABLE_TYPE_IN_2_74 +#endif + +#endif /* __G_VERSION_MACROS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gwin32.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gwin32.h new file mode 100644 index 0000000..e38a7f9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/glib/gwin32.h @@ -0,0 +1,142 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_WIN32_H__ +#define __G_WIN32_H__ + +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +#ifdef G_PLATFORM_WIN32 + +G_BEGIN_DECLS + +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 +#endif + +#ifdef G_OS_WIN32 + +/* + * To get prototypes for the following POSIXish functions, you have to + * include the indicated non-POSIX headers. The functions are defined + * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). But note that + * for POSIX functions that take or return file names in the system + * codepage, in many cases you would want to use the GLib wrappers in + * gstdio.h and UTF-8 instead. + * + * getcwd: (MSVC), (mingw32) + * getpid: + * access: + * unlink: or + * open, read, write, lseek, close: + * rmdir: + * pipe: (actually, _pipe()) + */ + +/* For some POSIX functions that are not provided by the MS runtime, + * we provide emulation functions in glib, which are prefixed with + * g_win32_. Or that was the idea at some time, but there is just one + * of those: + */ +GLIB_AVAILABLE_IN_ALL +gint g_win32_ftruncate (gint f, + guint size); +#endif /* G_OS_WIN32 */ + +/* The MS setlocale uses locale names of the form "English_United + * States.1252" etc. We want the Unixish standard form "en", "zh_TW" + * etc. This function gets the current thread locale from Windows and + * returns it as a string of the above form for use in forming file + * names etc. The returned string should be deallocated with g_free(). + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_win32_getlocale (void); + +/* Translate a Win32 error code (as returned by GetLastError()) into + * the corresponding message. The returned string should be deallocated + * with g_free(). + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_win32_error_message (gint error); + +GLIB_DEPRECATED +gchar* g_win32_get_package_installation_directory (const gchar *package, + const gchar *dll_name); + +GLIB_DEPRECATED +gchar* g_win32_get_package_installation_subdirectory (const gchar *package, + const gchar *dll_name, + const gchar *subdir); + +GLIB_AVAILABLE_IN_ALL +gchar* g_win32_get_package_installation_directory_of_module (gpointer hmodule); + +GLIB_DEPRECATED_IN_2_44_FOR(g_win32_check_windows_version) +guint g_win32_get_windows_version (void); + +GLIB_AVAILABLE_IN_ALL +gchar* g_win32_locale_filename_from_utf8 (const gchar *utf8filename); + +GLIB_AVAILABLE_IN_2_40 +gchar ** g_win32_get_command_line (void); + +/* As of GLib 2.14 we only support NT-based Windows */ +#define G_WIN32_IS_NT_BASED() TRUE +#define G_WIN32_HAVE_WIDECHAR_API() TRUE + +/** + * GWin32OSType: + * @G_WIN32_OS_ANY: The running system can be a workstation or a server edition of + * Windows. The type of the running system is therefore not checked. + * @G_WIN32_OS_WORKSTATION: The running system is a workstation edition of Windows, + * such as Windows 7 Professional. + * @G_WIN32_OS_SERVER: The running system is a server edition of Windows, such as + * Windows Server 2008 R2. + * + * Type of Windows edition to check for at run-time. + **/ +typedef enum +{ + G_WIN32_OS_ANY, + G_WIN32_OS_WORKSTATION, + G_WIN32_OS_SERVER, +} GWin32OSType; + +GLIB_AVAILABLE_IN_2_44 +gboolean g_win32_check_windows_version (const gint major, + const gint minor, + const gint spver, + const GWin32OSType os_type); + +G_END_DECLS + +#endif /* G_PLATFORM_WIN32 */ + +#endif /* __G_WIN32_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gmodule.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gmodule.h new file mode 100644 index 0000000..9744890 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gmodule.h @@ -0,0 +1,144 @@ +/* GMODULE - GLIB wrapper code for dynamic module loading + * Copyright (C) 1998 Tim Janik + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __GMODULE_H__ +#define __GMODULE_H__ + +#include + +G_BEGIN_DECLS + +/* exporting and importing functions, this is special cased + * to feature Windows dll stubs. + */ +#define G_MODULE_IMPORT extern +#ifdef G_PLATFORM_WIN32 +# define G_MODULE_EXPORT __declspec(dllexport) +#elif __GNUC__ >= 4 +# define G_MODULE_EXPORT __attribute__((visibility("default"))) +#else /* !G_PLATFORM_WIN32 && __GNUC__ < 4 */ +# define G_MODULE_EXPORT +#endif /* !G_PLATFORM_WIN32 */ + +/** + * GModuleFlags: + * @G_MODULE_BIND_LAZY: specifies that symbols are only resolved when + * needed. The default action is to bind all symbols when the module + * is loaded. + * @G_MODULE_BIND_LOCAL: specifies that symbols in the module should + * not be added to the global name space. The default action on most + * platforms is to place symbols in the module in the global name space, + * which may cause conflicts with existing symbols. + * @G_MODULE_BIND_MASK: mask for all flags. + * + * Flags passed to g_module_open(). + * Note that these flags are not supported on all platforms. + */ +typedef enum +{ + G_MODULE_BIND_LAZY = 1 << 0, + G_MODULE_BIND_LOCAL = 1 << 1, + G_MODULE_BIND_MASK = 0x03 +} GModuleFlags; + +typedef struct _GModule GModule; +typedef const gchar* (*GModuleCheckInit) (GModule *module); +typedef void (*GModuleUnload) (GModule *module); + +#define G_MODULE_ERROR g_module_error_quark () GLIB_AVAILABLE_MACRO_IN_2_70 +GLIB_AVAILABLE_IN_2_70 +GQuark g_module_error_quark (void); + +/** + * GModuleError: + * @G_MODULE_ERROR_FAILED: there was an error loading or opening a module file + * @G_MODULE_ERROR_CHECK_FAILED: a module returned an error from its `g_module_check_init()` function + * + * Errors returned by g_module_open_full(). + * + * Since: 2.70 + */ +typedef enum +{ + G_MODULE_ERROR_FAILED, + G_MODULE_ERROR_CHECK_FAILED, +} GModuleError +GLIB_AVAILABLE_ENUMERATOR_IN_2_70; + +/* return TRUE if dynamic module loading is supported */ +GLIB_AVAILABLE_IN_ALL +gboolean g_module_supported (void) G_GNUC_CONST; + +/* open a module 'file_name' and return handle, which is NULL on error */ +GLIB_AVAILABLE_IN_ALL +GModule* g_module_open (const gchar *file_name, + GModuleFlags flags); + +GLIB_AVAILABLE_IN_2_70 +GModule *g_module_open_full (const gchar *file_name, + GModuleFlags flags, + GError **error); + +/* close a previously opened module, returns TRUE on success */ +GLIB_AVAILABLE_IN_ALL +gboolean g_module_close (GModule *module); + +/* make a module resident so g_module_close on it will be ignored */ +GLIB_AVAILABLE_IN_ALL +void g_module_make_resident (GModule *module); + +/* query the last module error as a string */ +GLIB_AVAILABLE_IN_ALL +const gchar * g_module_error (void); + +/* retrieve a symbol pointer from 'module', returns TRUE on success */ +GLIB_AVAILABLE_IN_ALL +gboolean g_module_symbol (GModule *module, + const gchar *symbol_name, + gpointer *symbol); + +/* retrieve the file name from an existing module */ +GLIB_AVAILABLE_IN_ALL +const gchar * g_module_name (GModule *module); + +/* Build the actual file name containing a module. 'directory' is the + * directory where the module file is supposed to be, or NULL or empty + * in which case it should either be in the current directory or, on + * some operating systems, in some standard place, for instance on the + * PATH. Hence, to be absolutely sure to get the correct module, + * always pass in a directory. The file name consists of the directory, + * if supplied, and 'module_name' suitably decorated according to + * the operating system's conventions (for instance lib*.so or *.dll). + * + * No checks are made that the file exists, or is of correct type. + */ +GLIB_AVAILABLE_IN_ALL +gchar* g_module_build_path (const gchar *directory, + const gchar *module_name); + +G_END_DECLS + +#endif /* __GMODULE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gbinding.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gbinding.h new file mode 100644 index 0000000..78aa315 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gbinding.h @@ -0,0 +1,156 @@ +/* gbinding.h: Binding for object properties + * + * Copyright (C) 2010 Intel Corp. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Author: Emmanuele Bassi + */ + +#ifndef __G_BINDING_H__ +#define __G_BINDING_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define G_TYPE_BINDING_FLAGS (g_binding_flags_get_type ()) + +#define G_TYPE_BINDING (g_binding_get_type ()) +#define G_BINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_BINDING, GBinding)) +#define G_IS_BINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_BINDING)) + +/** + * GBinding: + * + * GBinding is an opaque structure whose members + * cannot be accessed directly. + * + * Since: 2.26 + */ +typedef struct _GBinding GBinding; + +/** + * GBindingTransformFunc: + * @binding: a #GBinding + * @from_value: the #GValue containing the value to transform + * @to_value: the #GValue in which to store the transformed value + * @user_data: data passed to the transform function + * + * A function to be called to transform @from_value to @to_value. + * + * If this is the @transform_to function of a binding, then @from_value + * is the @source_property on the @source object, and @to_value is the + * @target_property on the @target object. If this is the + * @transform_from function of a %G_BINDING_BIDIRECTIONAL binding, + * then those roles are reversed. + * + * Returns: %TRUE if the transformation was successful, and %FALSE + * otherwise + * + * Since: 2.26 + */ +typedef gboolean (* GBindingTransformFunc) (GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data); + +/** + * GBindingFlags: + * @G_BINDING_DEFAULT: The default binding; if the source property + * changes, the target property is updated with its value. + * @G_BINDING_BIDIRECTIONAL: Bidirectional binding; if either the + * property of the source or the property of the target changes, + * the other is updated. + * @G_BINDING_SYNC_CREATE: Synchronize the values of the source and + * target properties when creating the binding; the direction of + * the synchronization is always from the source to the target. + * @G_BINDING_INVERT_BOOLEAN: If the two properties being bound are + * booleans, setting one to %TRUE will result in the other being + * set to %FALSE and vice versa. This flag will only work for + * boolean properties, and cannot be used when passing custom + * transformation functions to g_object_bind_property_full(). + * + * Flags to be passed to g_object_bind_property() or + * g_object_bind_property_full(). + * + * This enumeration can be extended at later date. + * + * Since: 2.26 + */ +typedef enum { /*< prefix=G_BINDING >*/ + G_BINDING_DEFAULT = 0, + + G_BINDING_BIDIRECTIONAL = 1 << 0, + G_BINDING_SYNC_CREATE = 1 << 1, + G_BINDING_INVERT_BOOLEAN = 1 << 2 +} GBindingFlags; + +GLIB_AVAILABLE_IN_ALL +GType g_binding_flags_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_binding_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_ALL +GBindingFlags g_binding_get_flags (GBinding *binding); +GLIB_DEPRECATED_IN_2_68_FOR(g_binding_dup_source) +GObject * g_binding_get_source (GBinding *binding); +GLIB_AVAILABLE_IN_2_68 +GObject * g_binding_dup_source (GBinding *binding); +GLIB_DEPRECATED_IN_2_68_FOR(g_binding_dup_target) +GObject * g_binding_get_target (GBinding *binding); +GLIB_AVAILABLE_IN_2_68 +GObject * g_binding_dup_target (GBinding *binding); +GLIB_AVAILABLE_IN_ALL +const gchar * g_binding_get_source_property (GBinding *binding); +GLIB_AVAILABLE_IN_ALL +const gchar * g_binding_get_target_property (GBinding *binding); +GLIB_AVAILABLE_IN_2_38 +void g_binding_unbind (GBinding *binding); + +GLIB_AVAILABLE_IN_ALL +GBinding *g_object_bind_property (gpointer source, + const gchar *source_property, + gpointer target, + const gchar *target_property, + GBindingFlags flags); +GLIB_AVAILABLE_IN_ALL +GBinding *g_object_bind_property_full (gpointer source, + const gchar *source_property, + gpointer target, + const gchar *target_property, + GBindingFlags flags, + GBindingTransformFunc transform_to, + GBindingTransformFunc transform_from, + gpointer user_data, + GDestroyNotify notify); +GLIB_AVAILABLE_IN_ALL +GBinding *g_object_bind_property_with_closures (gpointer source, + const gchar *source_property, + gpointer target, + const gchar *target_property, + GBindingFlags flags, + GClosure *transform_to, + GClosure *transform_from); + +G_END_DECLS + +#endif /* __G_BINDING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gbindinggroup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gbindinggroup.h new file mode 100644 index 0000000..472ebc5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gbindinggroup.h @@ -0,0 +1,85 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * + * Copyright (C) 2015-2022 Christian Hergert + * Copyright (C) 2015 Garrett Regier + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#ifndef __G_BINDING_GROUP_H__ +#define __G_BINDING_GROUP_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +#define G_BINDING_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_BINDING_GROUP, GBindingGroup)) +#define G_IS_BINDING_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_BINDING_GROUP)) +#define G_TYPE_BINDING_GROUP (g_binding_group_get_type()) + +/** + * GBindingGroup: + * + * GBindingGroup is an opaque structure whose members + * cannot be accessed directly. + * + * Since: 2.72 + */ +typedef struct _GBindingGroup GBindingGroup; + +GLIB_AVAILABLE_IN_2_72 +GType g_binding_group_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_72 +GBindingGroup *g_binding_group_new (void); +GLIB_AVAILABLE_IN_2_72 +gpointer g_binding_group_dup_source (GBindingGroup *self); +GLIB_AVAILABLE_IN_2_72 +void g_binding_group_set_source (GBindingGroup *self, + gpointer source); +GLIB_AVAILABLE_IN_2_72 +void g_binding_group_bind (GBindingGroup *self, + const gchar *source_property, + gpointer target, + const gchar *target_property, + GBindingFlags flags); +GLIB_AVAILABLE_IN_2_72 +void g_binding_group_bind_full (GBindingGroup *self, + const gchar *source_property, + gpointer target, + const gchar *target_property, + GBindingFlags flags, + GBindingTransformFunc transform_to, + GBindingTransformFunc transform_from, + gpointer user_data, + GDestroyNotify user_data_destroy); +GLIB_AVAILABLE_IN_2_72 +void g_binding_group_bind_with_closures (GBindingGroup *self, + const gchar *source_property, + gpointer target, + const gchar *target_property, + GBindingFlags flags, + GClosure *transform_to, + GClosure *transform_from); + +G_END_DECLS + +#endif /* __G_BINDING_GROUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gboxed.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gboxed.h new file mode 100644 index 0000000..c563dcc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gboxed.h @@ -0,0 +1,124 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2000-2001 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_BOXED_H__ +#define __G_BOXED_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +#ifndef __GI_SCANNER__ +#include +#endif + +G_BEGIN_DECLS + +/* --- type macros --- */ +#define G_TYPE_IS_BOXED(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_BOXED) +/** + * G_VALUE_HOLDS_BOXED: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values derived + * from type %G_TYPE_BOXED. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_BOXED(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_BOXED)) + + +/* --- typedefs --- */ +/** + * GBoxedCopyFunc: + * @boxed: (not nullable): The boxed structure to be copied. + * + * This function is provided by the user and should produce a copy + * of the passed in boxed structure. + * + * Returns: (not nullable): The newly created copy of the boxed structure. + */ +typedef gpointer (*GBoxedCopyFunc) (gpointer boxed); + +/** + * GBoxedFreeFunc: + * @boxed: (not nullable): The boxed structure to be freed. + * + * This function is provided by the user and should free the boxed + * structure passed. + */ +typedef void (*GBoxedFreeFunc) (gpointer boxed); + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +gpointer g_boxed_copy (GType boxed_type, + gconstpointer src_boxed); +GLIB_AVAILABLE_IN_ALL +void g_boxed_free (GType boxed_type, + gpointer boxed); +GLIB_AVAILABLE_IN_ALL +void g_value_set_boxed (GValue *value, + gconstpointer v_boxed); +GLIB_AVAILABLE_IN_ALL +void g_value_set_static_boxed (GValue *value, + gconstpointer v_boxed); +GLIB_AVAILABLE_IN_ALL +void g_value_take_boxed (GValue *value, + gconstpointer v_boxed); +GLIB_DEPRECATED_FOR(g_value_take_boxed) +void g_value_set_boxed_take_ownership (GValue *value, + gconstpointer v_boxed); +GLIB_AVAILABLE_IN_ALL +gpointer g_value_get_boxed (const GValue *value); +GLIB_AVAILABLE_IN_ALL +gpointer g_value_dup_boxed (const GValue *value); + + +/* --- convenience --- */ +GLIB_AVAILABLE_IN_ALL +GType g_boxed_type_register_static (const gchar *name, + GBoxedCopyFunc boxed_copy, + GBoxedFreeFunc boxed_free); + +/* --- GObject boxed types --- */ +/** + * G_TYPE_CLOSURE: + * + * The #GType for #GClosure. + */ +#define G_TYPE_CLOSURE (g_closure_get_type ()) + +/** + * G_TYPE_VALUE: + * + * The type ID of the "GValue" type which is a boxed type, + * used to pass around pointers to GValues. + */ +#define G_TYPE_VALUE (g_value_get_type ()) + +GLIB_AVAILABLE_IN_ALL +GType g_closure_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_value_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __G_BOXED_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gclosure.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gclosure.h new file mode 100644 index 0000000..330a1cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gclosure.h @@ -0,0 +1,323 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2000-2001 Red Hat, Inc. + * Copyright (C) 2005 Imendio AB + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_CLOSURE_H__ +#define __G_CLOSURE_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* --- defines --- */ +/** + * G_CLOSURE_NEEDS_MARSHAL: + * @closure: a #GClosure + * + * Check if the closure still needs a marshaller. See g_closure_set_marshal(). + * + * Returns: %TRUE if a #GClosureMarshal marshaller has not yet been set on + * @closure. + */ +#define G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL) +/** + * G_CLOSURE_N_NOTIFIERS: + * @cl: a #GClosure + * + * Get the total number of notifiers connected with the closure @cl. + * + * The count includes the meta marshaller, the finalize and invalidate notifiers + * and the marshal guards. Note that each guard counts as two notifiers. + * See g_closure_set_meta_marshal(), g_closure_add_finalize_notifier(), + * g_closure_add_invalidate_notifier() and g_closure_add_marshal_guards(). + * + * Returns: number of notifiers + */ +#define G_CLOSURE_N_NOTIFIERS(cl) (((cl)->n_guards << 1L) + \ + (cl)->n_fnotifiers + (cl)->n_inotifiers) +/** + * G_CCLOSURE_SWAP_DATA: + * @cclosure: a #GCClosure + * + * Checks whether the user data of the #GCClosure should be passed as the + * first parameter to the callback. See g_cclosure_new_swap(). + * + * Returns: %TRUE if data has to be swapped. + */ +#define G_CCLOSURE_SWAP_DATA(cclosure) (((GClosure*) (cclosure))->derivative_flag) +/** + * G_CALLBACK: + * @f: a function pointer. + * + * Cast a function pointer to a #GCallback. + */ +#define G_CALLBACK(f) ((GCallback) (f)) + + +/* -- typedefs --- */ +typedef struct _GClosure GClosure; +typedef struct _GClosureNotifyData GClosureNotifyData; + +/** + * GCallback: + * + * The type used for callback functions in structure definitions and function + * signatures. + * + * This doesn't mean that all callback functions must take no parameters and + * return void. The required signature of a callback function is determined by + * the context in which is used (e.g. the signal to which it is connected). + * + * Use G_CALLBACK() to cast the callback function to a #GCallback. + */ +typedef void (*GCallback) (void); +/** + * GClosureNotify: + * @data: data specified when registering the notification callback + * @closure: the #GClosure on which the notification is emitted + * + * The type used for the various notification callbacks which can be registered + * on closures. + */ +typedef void (*GClosureNotify) (gpointer data, + GClosure *closure); +/** + * GClosureMarshal: + * @closure: the #GClosure to which the marshaller belongs + * @return_value: (nullable): a #GValue to store the return + * value. May be %NULL if the callback of @closure doesn't return a + * value. + * @n_param_values: the length of the @param_values array + * @param_values: (array length=n_param_values): an array of + * #GValues holding the arguments on which to invoke the + * callback of @closure + * @invocation_hint: (nullable): the invocation hint given as the + * last argument to g_closure_invoke() + * @user_data: (nullable): additional data specified when + * registering the marshaller, see g_closure_set_marshal() and + * g_closure_set_meta_marshal() + * + * The type used for marshaller functions. + */ +typedef void (*GClosureMarshal) (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer user_data); + +/** + * GVaClosureMarshal: + * @closure: the #GClosure to which the marshaller belongs + * @return_value: (nullable): a #GValue to store the return + * value. May be %NULL if the callback of @closure doesn't return a + * value. + * @instance: (type GObject.TypeInstance): the instance on which the closure is + * invoked. + * @args: va_list of arguments to be passed to the closure. + * @marshal_data: (nullable): additional data specified when + * registering the marshaller, see g_closure_set_marshal() and + * g_closure_set_meta_marshal() + * @n_params: the length of the @param_types array + * @param_types: (array length=n_params): the #GType of each argument from + * @args. + * + * This is the signature of va_list marshaller functions, an optional + * marshaller that can be used in some situations to avoid + * marshalling the signal argument into GValues. + */ +typedef void (* GVaClosureMarshal) (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/** + * GCClosure: + * @closure: the #GClosure + * @callback: the callback function + * + * A #GCClosure is a specialization of #GClosure for C function callbacks. + */ +typedef struct _GCClosure GCClosure; + + +/* --- structures --- */ +struct _GClosureNotifyData +{ + gpointer data; + GClosureNotify notify; +}; +/** + * GClosure: + * @in_marshal: Indicates whether the closure is currently being invoked with + * g_closure_invoke() + * @is_invalid: Indicates whether the closure has been invalidated by + * g_closure_invalidate() + * + * A #GClosure represents a callback supplied by the programmer. + */ +struct _GClosure +{ + /*< private >*/ + guint ref_count : 15; /* (atomic) */ + /* meta_marshal is not used anymore but must be zero for historical reasons + as it was exposed in the G_CLOSURE_N_NOTIFIERS macro */ + guint meta_marshal_nouse : 1; /* (atomic) */ + guint n_guards : 1; /* (atomic) */ + guint n_fnotifiers : 2; /* finalization notifiers (atomic) */ + guint n_inotifiers : 8; /* invalidation notifiers (atomic) */ + guint in_inotify : 1; /* (atomic) */ + guint floating : 1; /* (atomic) */ + /*< protected >*/ + guint derivative_flag : 1; /* (atomic) */ + /*< public >*/ + guint in_marshal : 1; /* (atomic) */ + guint is_invalid : 1; /* (atomic) */ + + /*< private >*/ void (*marshal) (GClosure *closure, + GValue /*out*/ *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); + /*< protected >*/ gpointer data; + + /*< private >*/ GClosureNotifyData *notifiers; + + /* invariants/constraints: + * - ->marshal and ->data are _invalid_ as soon as ->is_invalid==TRUE + * - invocation of all inotifiers occurs prior to fnotifiers + * - order of inotifiers is random + * inotifiers may _not_ free/invalidate parameter values (e.g. ->data) + * - order of fnotifiers is random + * - each notifier may only be removed before or during its invocation + * - reference counting may only happen prior to fnotify invocation + * (in that sense, fnotifiers are really finalization handlers) + */ +}; +/* closure for C function calls, callback() is the user function + */ +struct _GCClosure +{ + GClosure closure; + gpointer callback; +}; + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GClosure* g_cclosure_new (GCallback callback_func, + gpointer user_data, + GClosureNotify destroy_data); +GLIB_AVAILABLE_IN_ALL +GClosure* g_cclosure_new_swap (GCallback callback_func, + gpointer user_data, + GClosureNotify destroy_data); +GLIB_AVAILABLE_IN_ALL +GClosure* g_signal_type_cclosure_new (GType itype, + guint struct_offset); + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GClosure* g_closure_ref (GClosure *closure); +GLIB_AVAILABLE_IN_ALL +void g_closure_sink (GClosure *closure); +GLIB_AVAILABLE_IN_ALL +void g_closure_unref (GClosure *closure); +/* intimidating */ +GLIB_AVAILABLE_IN_ALL +GClosure* g_closure_new_simple (guint sizeof_closure, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_closure_add_finalize_notifier (GClosure *closure, + gpointer notify_data, + GClosureNotify notify_func); +GLIB_AVAILABLE_IN_ALL +void g_closure_remove_finalize_notifier (GClosure *closure, + gpointer notify_data, + GClosureNotify notify_func); +GLIB_AVAILABLE_IN_ALL +void g_closure_add_invalidate_notifier (GClosure *closure, + gpointer notify_data, + GClosureNotify notify_func); +GLIB_AVAILABLE_IN_ALL +void g_closure_remove_invalidate_notifier (GClosure *closure, + gpointer notify_data, + GClosureNotify notify_func); +GLIB_AVAILABLE_IN_ALL +void g_closure_add_marshal_guards (GClosure *closure, + gpointer pre_marshal_data, + GClosureNotify pre_marshal_notify, + gpointer post_marshal_data, + GClosureNotify post_marshal_notify); +GLIB_AVAILABLE_IN_ALL +void g_closure_set_marshal (GClosure *closure, + GClosureMarshal marshal); +GLIB_AVAILABLE_IN_ALL +void g_closure_set_meta_marshal (GClosure *closure, + gpointer marshal_data, + GClosureMarshal meta_marshal); +GLIB_AVAILABLE_IN_ALL +void g_closure_invalidate (GClosure *closure); +GLIB_AVAILABLE_IN_ALL +void g_closure_invoke (GClosure *closure, + GValue /*out*/ *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint); + +/* FIXME: + OK: data_object::destroy -> closure_invalidate(); + MIS: closure_invalidate() -> disconnect(closure); + MIS: disconnect(closure) -> (unlink) closure_unref(); + OK: closure_finalize() -> g_free (data_string); + + random remarks: + - need marshaller repo with decent aliasing to base types + - provide marshaller collection, virtually covering anything out there +*/ + +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_generic (GClosure *closure, + GValue *return_gvalue, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); + +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_generic_va (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args_list, + gpointer marshal_data, + int n_params, + GType *param_types); + + +G_END_DECLS + +#endif /* __G_CLOSURE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/genums.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/genums.h new file mode 100644 index 0000000..b8fff52 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/genums.h @@ -0,0 +1,381 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_ENUMS_H__ +#define __G_ENUMS_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* --- type macros --- */ +/** + * G_TYPE_IS_ENUM: + * @type: a #GType ID. + * + * Checks whether @type "is a" %G_TYPE_ENUM. + * + * Returns: %TRUE if @type "is a" %G_TYPE_ENUM. + */ +#define G_TYPE_IS_ENUM(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_ENUM) +/** + * G_ENUM_CLASS: + * @class: a valid #GEnumClass + * + * Casts a derived #GEnumClass structure into a #GEnumClass structure. + */ +#define G_ENUM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_ENUM, GEnumClass)) +/** + * G_IS_ENUM_CLASS: + * @class: a #GEnumClass + * + * Checks whether @class "is a" valid #GEnumClass structure of type %G_TYPE_ENUM + * or derived. + */ +#define G_IS_ENUM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_ENUM)) +/** + * G_ENUM_CLASS_TYPE: + * @class: a #GEnumClass + * + * Get the type identifier from a given #GEnumClass structure. + * + * Returns: the #GType + */ +#define G_ENUM_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class)) +/** + * G_ENUM_CLASS_TYPE_NAME: + * @class: a #GEnumClass + * + * Get the static type name from a given #GEnumClass structure. + * + * Returns: the type name. + */ +#define G_ENUM_CLASS_TYPE_NAME(class) (g_type_name (G_ENUM_CLASS_TYPE (class))) + + +/** + * G_TYPE_IS_FLAGS: + * @type: a #GType ID. + * + * Checks whether @type "is a" %G_TYPE_FLAGS. + * + * Returns: %TRUE if @type "is a" %G_TYPE_FLAGS. + */ +#define G_TYPE_IS_FLAGS(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_FLAGS) +/** + * G_FLAGS_CLASS: + * @class: a valid #GFlagsClass + * + * Casts a derived #GFlagsClass structure into a #GFlagsClass structure. + */ +#define G_FLAGS_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_FLAGS, GFlagsClass)) +/** + * G_IS_FLAGS_CLASS: + * @class: a #GFlagsClass + * + * Checks whether @class "is a" valid #GFlagsClass structure of type %G_TYPE_FLAGS + * or derived. + */ +#define G_IS_FLAGS_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_FLAGS)) +/** + * G_FLAGS_CLASS_TYPE: + * @class: a #GFlagsClass + * + * Get the type identifier from a given #GFlagsClass structure. + * + * Returns: the #GType + */ +#define G_FLAGS_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class)) +/** + * G_FLAGS_CLASS_TYPE_NAME: + * @class: a #GFlagsClass + * + * Get the static type name from a given #GFlagsClass structure. + * + * Returns: the type name. + */ +#define G_FLAGS_CLASS_TYPE_NAME(class) (g_type_name (G_FLAGS_CLASS_TYPE (class))) + + +/** + * G_VALUE_HOLDS_ENUM: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values derived from type %G_TYPE_ENUM. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_ENUM(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ENUM)) +/** + * G_VALUE_HOLDS_FLAGS: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values derived from type %G_TYPE_FLAGS. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_FLAGS(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLAGS)) + + +/* --- enum/flag values & classes --- */ +typedef struct _GEnumClass GEnumClass; +typedef struct _GFlagsClass GFlagsClass; +typedef struct _GEnumValue GEnumValue; +typedef struct _GFlagsValue GFlagsValue; + +/** + * GEnumClass: + * @g_type_class: the parent class + * @minimum: the smallest possible value. + * @maximum: the largest possible value. + * @n_values: the number of possible values. + * @values: an array of #GEnumValue structs describing the + * individual values. + * + * The class of an enumeration type holds information about its + * possible values. + */ +struct _GEnumClass +{ + GTypeClass g_type_class; + + /*< public >*/ + gint minimum; + gint maximum; + guint n_values; + GEnumValue *values; +}; +/** + * GFlagsClass: + * @g_type_class: the parent class + * @mask: a mask covering all possible values. + * @n_values: the number of possible values. + * @values: an array of #GFlagsValue structs describing the + * individual values. + * + * The class of a flags type holds information about its + * possible values. + */ +struct _GFlagsClass +{ + GTypeClass g_type_class; + + /*< public >*/ + guint mask; + guint n_values; + GFlagsValue *values; +}; +/** + * GEnumValue: + * @value: the enum value + * @value_name: the name of the value + * @value_nick: the nickname of the value + * + * A structure which contains a single enum value, its name, and its + * nickname. + */ +struct _GEnumValue +{ + gint value; + const gchar *value_name; + const gchar *value_nick; +}; +/** + * GFlagsValue: + * @value: the flags value + * @value_name: the name of the value + * @value_nick: the nickname of the value + * + * A structure which contains a single flags value, its name, and its + * nickname. + */ +struct _GFlagsValue +{ + guint value; + const gchar *value_name; + const gchar *value_nick; +}; + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GEnumValue* g_enum_get_value (GEnumClass *enum_class, + gint value); +GLIB_AVAILABLE_IN_ALL +GEnumValue* g_enum_get_value_by_name (GEnumClass *enum_class, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +GEnumValue* g_enum_get_value_by_nick (GEnumClass *enum_class, + const gchar *nick); +GLIB_AVAILABLE_IN_ALL +GFlagsValue* g_flags_get_first_value (GFlagsClass *flags_class, + guint value); +GLIB_AVAILABLE_IN_ALL +GFlagsValue* g_flags_get_value_by_name (GFlagsClass *flags_class, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +GFlagsValue* g_flags_get_value_by_nick (GFlagsClass *flags_class, + const gchar *nick); +GLIB_AVAILABLE_IN_2_54 +gchar *g_enum_to_string (GType g_enum_type, + gint value); +GLIB_AVAILABLE_IN_2_54 +gchar *g_flags_to_string (GType flags_type, + guint value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_enum (GValue *value, + gint v_enum); +GLIB_AVAILABLE_IN_ALL +gint g_value_get_enum (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_flags (GValue *value, + guint v_flags); +GLIB_AVAILABLE_IN_ALL +guint g_value_get_flags (const GValue *value); + + + +/* --- registration functions --- */ +/* const_static_values is a NULL terminated array of enum/flags + * values that is taken over! + */ +GLIB_AVAILABLE_IN_ALL +GType g_enum_register_static (const gchar *name, + const GEnumValue *const_static_values); +GLIB_AVAILABLE_IN_ALL +GType g_flags_register_static (const gchar *name, + const GFlagsValue *const_static_values); +/* functions to complete the type information + * for enums/flags implemented by plugins + */ +GLIB_AVAILABLE_IN_ALL +void g_enum_complete_type_info (GType g_enum_type, + GTypeInfo *info, + const GEnumValue *const_values); +GLIB_AVAILABLE_IN_ALL +void g_flags_complete_type_info (GType g_flags_type, + GTypeInfo *info, + const GFlagsValue *const_values); + +/* {{{ Macros */ + +/** + * G_DEFINE_ENUM_VALUE: + * @EnumValue: an enumeration value + * @EnumNick: a short string representing the enumeration value + * + * Defines an enumeration value, and maps it to a "nickname". + * + * This macro can only be used with G_DEFINE_ENUM_TYPE() and + * G_DEFINE_FLAGS_TYPE(). + * + * Since: 2.74 + */ +#define G_DEFINE_ENUM_VALUE(EnumValue, EnumNick) \ + { EnumValue, #EnumValue, EnumNick } \ + GLIB_AVAILABLE_MACRO_IN_2_74 + +/** + * G_DEFINE_ENUM_TYPE: + * @TypeName: the enumeration type, in `CamelCase` + * @type_name: the enumeration type prefixed, in `snake_case` + * @...: a list of enumeration values, defined using G_DEFINE_ENUM_VALUE() + * + * A convenience macro for defining enumeration types. + * + * This macro will generate a `*_get_type()` function for the + * given @TypeName, using @type_name as the function prefix. + * + * |[ + * G_DEFINE_ENUM_TYPE (GtkOrientation, gtk_orientation, + * G_DEFINE_ENUM_VALUE (GTK_ORIENTATION_HORIZONTAL, "horizontal"), + * G_DEFINE_ENUM_VALUE (GTK_ORIENTATION_VERTICAL, "vertical")) + * ]| + * + * For projects that have multiple enumeration types, or enumeration + * types with many values, you should consider using glib-mkenums to + * generate the type function. + * + * Since: 2.74 + */ +#define G_DEFINE_ENUM_TYPE(TypeName, type_name, ...) \ +GType \ +type_name ## _get_type (void) { \ + static gsize g_define_type__static = 0; \ + if (g_once_init_enter (&g_define_type__static)) { \ + static const GEnumValue enum_values[] = { \ + __VA_ARGS__ , \ + { 0, NULL, NULL }, \ + }; \ + GType g_define_type = g_enum_register_static (g_intern_static_string (#TypeName), enum_values); \ + g_once_init_leave (&g_define_type__static, g_define_type); \ + } \ + return g_define_type__static; \ +} \ + GLIB_AVAILABLE_MACRO_IN_2_74 + +/** + * G_DEFINE_FLAGS_TYPE: + * @TypeName: the enumeration type, in `CamelCase` + * @type_name: the enumeration type prefixed, in `snake_case` + * @...: a list of enumeration values, defined using G_DEFINE_ENUM_VALUE() + * + * A convenience macro for defining flag types. + * + * This macro will generate a `*_get_type()` function for the + * given @TypeName, using @type_name as the function prefix. + * + * |[ + * G_DEFINE_FLAGS_TYPE (GSettingsBindFlags, g_settings_bind_flags, + * G_DEFINE_ENUM_VALUE (G_SETTINGS_BIND_DEFAULT, "default"), + * G_DEFINE_ENUM_VALUE (G_SETTINGS_BIND_GET, "get"), + * G_DEFINE_ENUM_VALUE (G_SETTINGS_BIND_SET, "set"), + * G_DEFINE_ENUM_VALUE (G_SETTINGS_BIND_NO_SENSITIVITY, "no-sensitivity"), + * G_DEFINE_ENUM_VALUE (G_SETTINGS_BIND_GET_NO_CHANGES, "get-no-changes"), + * G_DEFINE_ENUM_VALUE (G_SETTINGS_BIND_INVERT_BOOLEAN, "invert-boolean")) + * ]| + * + * For projects that have multiple enumeration types, or enumeration + * types with many values, you should consider using glib-mkenums to + * generate the type function. + * + * Since: 2.74 + */ +#define G_DEFINE_FLAGS_TYPE(TypeName, type_name, ...) \ +GType \ +type_name ## _get_type (void) { \ + static gsize g_define_type__static = 0; \ + if (g_once_init_enter (&g_define_type__static)) { \ + static const GFlagsValue flags_values[] = { \ + __VA_ARGS__ , \ + { 0, NULL, NULL }, \ + }; \ + GType g_define_type = g_flags_register_static (g_intern_static_string (#TypeName), flags_values); \ + g_once_init_leave (&g_define_type__static, g_define_type); \ + } \ + return g_define_type__static; \ +} \ + GLIB_AVAILABLE_MACRO_IN_2_74 + +G_END_DECLS + +#endif /* __G_ENUMS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/glib-enumtypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/glib-enumtypes.h new file mode 100644 index 0000000..31fb5c5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/glib-enumtypes.h @@ -0,0 +1,25 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +#ifndef __GOBJECT_ENUM_TYPES_H__ +#define __GOBJECT_ENUM_TYPES_H__ + +#include + +G_BEGIN_DECLS + +/* enumerations from "../glib-2.74.1/gobject/../glib/gunicode.h" */ +GLIB_AVAILABLE_IN_2_60 GType g_unicode_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_UNICODE_TYPE (g_unicode_type_get_type ()) +GLIB_AVAILABLE_IN_2_60 GType g_unicode_break_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_UNICODE_BREAK_TYPE (g_unicode_break_type_get_type ()) +GLIB_AVAILABLE_IN_2_60 GType g_unicode_script_get_type (void) G_GNUC_CONST; +#define G_TYPE_UNICODE_SCRIPT (g_unicode_script_get_type ()) +GLIB_AVAILABLE_IN_2_60 GType g_normalize_mode_get_type (void) G_GNUC_CONST; +#define G_TYPE_NORMALIZE_MODE (g_normalize_mode_get_type ()) +G_END_DECLS + +#endif /* __GOBJECT_ENUM_TYPES_H__ */ + +/* Generated data ends here */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/glib-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/glib-types.h new file mode 100644 index 0000000..bfef10f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/glib-types.h @@ -0,0 +1,388 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2000-2001 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __GLIB_TYPES_H__ +#define __GLIB_TYPES_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) && !defined(GLIB_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* A hack necesssary to preprocess this file with g-ir-scanner */ +#ifdef __GI_SCANNER__ +typedef gsize GType; +#endif + +/* --- GLib boxed types --- */ +/** + * G_TYPE_DATE: + * + * The #GType for #GDate. + */ +#define G_TYPE_DATE (g_date_get_type ()) + +/** + * G_TYPE_STRV: + * + * The #GType for a boxed type holding a %NULL-terminated array of strings. + * + * The code fragments in the following example show the use of a property of + * type %G_TYPE_STRV with g_object_class_install_property(), g_object_set() + * and g_object_get(). + * + * |[ + * g_object_class_install_property (object_class, + * PROP_AUTHORS, + * g_param_spec_boxed ("authors", + * _("Authors"), + * _("List of authors"), + * G_TYPE_STRV, + * G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + * + * gchar *authors[] = { "Owen", "Tim", NULL }; + * g_object_set (obj, "authors", authors, NULL); + * + * gchar *writers[]; + * g_object_get (obj, "authors", &writers, NULL); + * /* do something with writers */ + * g_strfreev (writers); + * ]| + * + * Since: 2.4 + */ +#define G_TYPE_STRV (g_strv_get_type ()) + +/** + * G_TYPE_GSTRING: + * + * The #GType for #GString. + */ +#define G_TYPE_GSTRING (g_gstring_get_type ()) + +/** + * G_TYPE_HASH_TABLE: + * + * The #GType for a boxed type holding a #GHashTable reference. + * + * Since: 2.10 + */ +#define G_TYPE_HASH_TABLE (g_hash_table_get_type ()) + +/** + * G_TYPE_MATCH_INFO: + * + * The #GType for a boxed type holding a #GMatchInfo reference. + * + * Since: 2.30 + */ +#define G_TYPE_MATCH_INFO (g_match_info_get_type ()) + +/** + * G_TYPE_ARRAY: + * + * The #GType for a boxed type holding a #GArray reference. + * + * Since: 2.22 + */ +#define G_TYPE_ARRAY (g_array_get_type ()) + +/** + * G_TYPE_BYTE_ARRAY: + * + * The #GType for a boxed type holding a #GByteArray reference. + * + * Since: 2.22 + */ +#define G_TYPE_BYTE_ARRAY (g_byte_array_get_type ()) + +/** + * G_TYPE_PTR_ARRAY: + * + * The #GType for a boxed type holding a #GPtrArray reference. + * + * Since: 2.22 + */ +#define G_TYPE_PTR_ARRAY (g_ptr_array_get_type ()) + +/** + * G_TYPE_BYTES: + * + * The #GType for #GBytes. + * + * Since: 2.32 + */ +#define G_TYPE_BYTES (g_bytes_get_type ()) + +/** + * G_TYPE_VARIANT_TYPE: + * + * The #GType for a boxed type holding a #GVariantType. + * + * Since: 2.24 + */ +#define G_TYPE_VARIANT_TYPE (g_variant_type_get_gtype ()) + +/** + * G_TYPE_ERROR: + * + * The #GType for a boxed type holding a #GError. + * + * Since: 2.26 + */ +#define G_TYPE_ERROR (g_error_get_type ()) + +/** + * G_TYPE_DATE_TIME: + * + * The #GType for a boxed type holding a #GDateTime. + * + * Since: 2.26 + */ +#define G_TYPE_DATE_TIME (g_date_time_get_type ()) + +/** + * G_TYPE_TIME_ZONE: + * + * The #GType for a boxed type holding a #GTimeZone. + * + * Since: 2.34 + */ +#define G_TYPE_TIME_ZONE (g_time_zone_get_type ()) + +/** + * G_TYPE_IO_CHANNEL: + * + * The #GType for #GIOChannel. + */ +#define G_TYPE_IO_CHANNEL (g_io_channel_get_type ()) + +/** + * G_TYPE_IO_CONDITION: + * + * The #GType for #GIOCondition. + */ +#define G_TYPE_IO_CONDITION (g_io_condition_get_type ()) + +/** + * G_TYPE_VARIANT_BUILDER: + * + * The #GType for a boxed type holding a #GVariantBuilder. + * + * Since: 2.30 + */ +#define G_TYPE_VARIANT_BUILDER (g_variant_builder_get_type ()) + +/** + * G_TYPE_VARIANT_DICT: + * + * The #GType for a boxed type holding a #GVariantDict. + * + * Since: 2.40 + */ +#define G_TYPE_VARIANT_DICT (g_variant_dict_get_type ()) + +/** + * G_TYPE_MAIN_LOOP: + * + * The #GType for a boxed type holding a #GMainLoop. + * + * Since: 2.30 + */ +#define G_TYPE_MAIN_LOOP (g_main_loop_get_type ()) + +/** + * G_TYPE_MAIN_CONTEXT: + * + * The #GType for a boxed type holding a #GMainContext. + * + * Since: 2.30 + */ +#define G_TYPE_MAIN_CONTEXT (g_main_context_get_type ()) + +/** + * G_TYPE_SOURCE: + * + * The #GType for a boxed type holding a #GSource. + * + * Since: 2.30 + */ +#define G_TYPE_SOURCE (g_source_get_type ()) + +/** + * G_TYPE_POLLFD: + * + * The #GType for a boxed type holding a #GPollFD. + * + * Since: 2.36 + */ +#define G_TYPE_POLLFD (g_pollfd_get_type ()) + +/** + * G_TYPE_MARKUP_PARSE_CONTEXT: + * + * The #GType for a boxed type holding a #GMarkupParseContext. + * + * Since: 2.36 + */ +#define G_TYPE_MARKUP_PARSE_CONTEXT (g_markup_parse_context_get_type ()) + +/** + * G_TYPE_KEY_FILE: + * + * The #GType for a boxed type holding a #GKeyFile. + * + * Since: 2.32 + */ +#define G_TYPE_KEY_FILE (g_key_file_get_type ()) + +/** + * G_TYPE_MAPPED_FILE: + * + * The #GType for a boxed type holding a #GMappedFile. + * + * Since: 2.40 + */ +#define G_TYPE_MAPPED_FILE (g_mapped_file_get_type ()) + +/** + * G_TYPE_THREAD: + * + * The #GType for a boxed type holding a #GThread. + * + * Since: 2.36 + */ +#define G_TYPE_THREAD (g_thread_get_type ()) + +/** + * G_TYPE_CHECKSUM: + * + * The #GType for a boxed type holding a #GChecksum. + * + * Since: 2.36 + */ +#define G_TYPE_CHECKSUM (g_checksum_get_type ()) + +/** + * G_TYPE_OPTION_GROUP: + * + * The #GType for a boxed type holding a #GOptionGroup. + * + * Since: 2.44 + */ +#define G_TYPE_OPTION_GROUP (g_option_group_get_type ()) + +/** + * G_TYPE_URI: + * + * The #GType for a boxed type holding a #GUri. + * + * Since: 2.66 + */ +#define G_TYPE_URI (g_uri_get_type ()) + +/** + * G_TYPE_TREE: + * + * The #GType for #GTree. + * + * Since: 2.68 + */ +#define G_TYPE_TREE (g_tree_get_type ()) + +/** + * G_TYPE_PATTERN_SPEC: + * + * The #GType for #GPatternSpec. + * + * Since: 2.70 + */ +#define G_TYPE_PATTERN_SPEC (g_pattern_spec_get_type ()) + +GLIB_AVAILABLE_IN_ALL +GType g_date_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_strv_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_gstring_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_hash_table_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_array_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_byte_array_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_ptr_array_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_bytes_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_variant_type_get_gtype (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_regex_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_30 +GType g_match_info_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_error_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_date_time_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_time_zone_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_io_channel_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_io_condition_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_variant_builder_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_40 +GType g_variant_dict_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +GType g_key_file_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_30 +GType g_main_loop_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_30 +GType g_main_context_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_30 +GType g_source_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_36 +GType g_pollfd_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_36 +GType g_thread_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_36 +GType g_checksum_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_36 +GType g_markup_parse_context_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_40 +GType g_mapped_file_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_44 +GType g_option_group_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_66 +GType g_uri_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_68 +GType g_tree_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_70 +GType g_pattern_spec_get_type (void) G_GNUC_CONST; + +GLIB_DEPRECATED_FOR('G_TYPE_VARIANT') +GType g_variant_get_gtype (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __GLIB_TYPES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gmarshal.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gmarshal.h new file mode 100644 index 0000000..fdd6c04 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gmarshal.h @@ -0,0 +1,434 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +#ifndef __G_MARSHAL_H__ +#define __G_MARSHAL_H__ + +G_BEGIN_DECLS + +/* VOID:VOID */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__VOID (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__VOIDv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:BOOLEAN */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__BOOLEAN (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__BOOLEANv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:CHAR */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__CHAR (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__CHARv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:UCHAR */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__UCHAR (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__UCHARv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:INT */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__INT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__INTv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:UINT */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__UINT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__UINTv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:LONG */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__LONG (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__LONGv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:ULONG */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__ULONG (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__ULONGv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:ENUM */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__ENUM (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__ENUMv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:FLAGS */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__FLAGS (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__FLAGSv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:FLOAT */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__FLOAT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__FLOATv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:DOUBLE */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__DOUBLE (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__DOUBLEv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:STRING */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__STRING (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__STRINGv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:PARAM */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__PARAM (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__PARAMv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:BOXED */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__BOXED (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__BOXEDv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:POINTER */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__POINTERv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:OBJECT */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__OBJECT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__OBJECTv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:VARIANT */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__VARIANT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__VARIANTv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* VOID:UINT,POINTER */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__UINT_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_VOID__UINT_POINTERv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* BOOL:FLAGS */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_BOOLEAN__FLAGS (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_BOOLEAN__FLAGSv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/** + * g_cclosure_marshal_BOOL__FLAGS: + * @closure: A #GClosure. + * @return_value: A #GValue to store the return value. May be %NULL + * if the callback of closure doesn't return a value. + * @n_param_values: The length of the @param_values array. + * @param_values: An array of #GValues holding the arguments + * on which to invoke the callback of closure. + * @invocation_hint: The invocation hint given as the last argument to + * g_closure_invoke(). + * @marshal_data: Additional data specified when registering the + * marshaller, see g_closure_set_marshal() and + * g_closure_set_meta_marshal() + * + * An old alias for g_cclosure_marshal_BOOLEAN__FLAGS(). + */ +#define g_cclosure_marshal_BOOL__FLAGS g_cclosure_marshal_BOOLEAN__FLAGS + +/* STRING:OBJECT,POINTER */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_STRING__OBJECT_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_STRING__OBJECT_POINTERv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/* BOOL:BOXED,BOXED */ +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_BOOLEAN__BOXED_BOXED (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +GLIB_AVAILABLE_IN_ALL +void g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv (GClosure *closure, + GValue *return_value, + gpointer instance, + va_list args, + gpointer marshal_data, + int n_params, + GType *param_types); + +/** + * g_cclosure_marshal_BOOL__BOXED_BOXED: + * @closure: A #GClosure. + * @return_value: A #GValue to store the return value. May be %NULL + * if the callback of closure doesn't return a value. + * @n_param_values: The length of the @param_values array. + * @param_values: An array of #GValues holding the arguments + * on which to invoke the callback of closure. + * @invocation_hint: The invocation hint given as the last argument to + * g_closure_invoke(). + * @marshal_data: Additional data specified when registering the + * marshaller, see g_closure_set_marshal() and + * g_closure_set_meta_marshal() + * + * An old alias for g_cclosure_marshal_BOOLEAN__BOXED_BOXED(). + */ +#define g_cclosure_marshal_BOOL__BOXED_BOXED g_cclosure_marshal_BOOLEAN__BOXED_BOXED + +G_END_DECLS + +#endif /* __G_MARSHAL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobject-autocleanups.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobject-autocleanups.h new file mode 100644 index 0000000..bddb3f2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobject-autocleanups.h @@ -0,0 +1,33 @@ +/* + * Copyright © 2015 Canonical Limited + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + * Author: Ryan Lortie + */ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GClosure, g_closure_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GEnumClass, g_type_class_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GFlagsClass, g_type_class_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GObject, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GInitiallyUnowned, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GParamSpec, g_param_spec_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTypeClass, g_type_class_unref) +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GValue, g_value_unset) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobject.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobject.h new file mode 100644 index 0000000..17bb0f5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobject.h @@ -0,0 +1,953 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_OBJECT_H__ +#define __G_OBJECT_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +/* --- type macros --- */ +/** + * G_TYPE_IS_OBJECT: + * @type: Type id to check + * + * Check if the passed in type id is a %G_TYPE_OBJECT or derived from it. + * + * Returns: %FALSE or %TRUE, indicating whether @type is a %G_TYPE_OBJECT. + */ +#define G_TYPE_IS_OBJECT(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT) +/** + * G_OBJECT: + * @object: Object which is subject to casting. + * + * Casts a #GObject or derived pointer into a (GObject*) pointer. + * + * Depending on the current debugging level, this function may invoke + * certain runtime checks to identify invalid casts. + */ +#define G_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject)) +/** + * G_OBJECT_CLASS: + * @class: a valid #GObjectClass + * + * Casts a derived #GObjectClass structure into a #GObjectClass structure. + */ +#define G_OBJECT_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass)) +/** + * G_IS_OBJECT: + * @object: Instance to check for being a %G_TYPE_OBJECT. + * + * Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_OBJECT. + */ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_42 +#define G_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((object), G_TYPE_OBJECT)) +#else +#define G_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_OBJECT)) +#endif +/** + * G_IS_OBJECT_CLASS: + * @class: a #GObjectClass + * + * Checks whether @class "is a" valid #GObjectClass structure of type + * %G_TYPE_OBJECT or derived. + */ +#define G_IS_OBJECT_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT)) +/** + * G_OBJECT_GET_CLASS: + * @object: a #GObject instance. + * + * Get the class structure associated to a #GObject instance. + * + * Returns: pointer to object class structure. + */ +#define G_OBJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass)) +/** + * G_OBJECT_TYPE: + * @object: Object to return the type id for. + * + * Get the type id of an object. + * + * Returns: Type id of @object. + */ +#define G_OBJECT_TYPE(object) (G_TYPE_FROM_INSTANCE (object)) +/** + * G_OBJECT_TYPE_NAME: + * @object: Object to return the type name for. + * + * Get the name of an object's type. + * + * Returns: Type name of @object. The string is owned by the type system and + * should not be freed. + */ +#define G_OBJECT_TYPE_NAME(object) (g_type_name (G_OBJECT_TYPE (object))) +/** + * G_OBJECT_CLASS_TYPE: + * @class: a valid #GObjectClass + * + * Get the type id of a class structure. + * + * Returns: Type id of @class. + */ +#define G_OBJECT_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class)) +/** + * G_OBJECT_CLASS_NAME: + * @class: a valid #GObjectClass + * + * Return the name of a class structure's type. + * + * Returns: Type name of @class. The string is owned by the type system and + * should not be freed. + */ +#define G_OBJECT_CLASS_NAME(class) (g_type_name (G_OBJECT_CLASS_TYPE (class))) +/** + * G_VALUE_HOLDS_OBJECT: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values derived from type %G_TYPE_OBJECT. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_OBJECT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_OBJECT)) + +/* --- type macros --- */ +/** + * G_TYPE_INITIALLY_UNOWNED: + * + * The type for #GInitiallyUnowned. + */ +#define G_TYPE_INITIALLY_UNOWNED (g_initially_unowned_get_type()) +/** + * G_INITIALLY_UNOWNED: + * @object: Object which is subject to casting. + * + * Casts a #GInitiallyUnowned or derived pointer into a (GInitiallyUnowned*) + * pointer. + * + * Depending on the current debugging level, this function may invoke + * certain runtime checks to identify invalid casts. + */ +#define G_INITIALLY_UNOWNED(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnowned)) +/** + * G_INITIALLY_UNOWNED_CLASS: + * @class: a valid #GInitiallyUnownedClass + * + * Casts a derived #GInitiallyUnownedClass structure into a + * #GInitiallyUnownedClass structure. + */ +#define G_INITIALLY_UNOWNED_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass)) +/** + * G_IS_INITIALLY_UNOWNED: + * @object: Instance to check for being a %G_TYPE_INITIALLY_UNOWNED. + * + * Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_INITIALLY_UNOWNED. + */ +#define G_IS_INITIALLY_UNOWNED(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_INITIALLY_UNOWNED)) +/** + * G_IS_INITIALLY_UNOWNED_CLASS: + * @class: a #GInitiallyUnownedClass + * + * Checks whether @class "is a" valid #GInitiallyUnownedClass structure of type + * %G_TYPE_INITIALLY_UNOWNED or derived. + */ +#define G_IS_INITIALLY_UNOWNED_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_INITIALLY_UNOWNED)) +/** + * G_INITIALLY_UNOWNED_GET_CLASS: + * @object: a #GInitiallyUnowned instance. + * + * Get the class structure associated to a #GInitiallyUnowned instance. + * + * Returns: pointer to object class structure. + */ +#define G_INITIALLY_UNOWNED_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass)) +/* GInitiallyUnowned ia a GObject with initially floating reference count */ + + +/* --- typedefs & structures --- */ +typedef struct _GObject GObject; +typedef struct _GObjectClass GObjectClass; +typedef struct _GObject GInitiallyUnowned; +typedef struct _GObjectClass GInitiallyUnownedClass; +typedef struct _GObjectConstructParam GObjectConstructParam; +/** + * GObjectGetPropertyFunc: + * @object: a #GObject + * @property_id: the numeric id under which the property was registered with + * g_object_class_install_property(). + * @value: a #GValue to return the property value in + * @pspec: the #GParamSpec describing the property + * + * The type of the @get_property function of #GObjectClass. + */ +typedef void (*GObjectGetPropertyFunc) (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); +/** + * GObjectSetPropertyFunc: + * @object: a #GObject + * @property_id: the numeric id under which the property was registered with + * g_object_class_install_property(). + * @value: the new value for the property + * @pspec: the #GParamSpec describing the property + * + * The type of the @set_property function of #GObjectClass. + */ +typedef void (*GObjectSetPropertyFunc) (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +/** + * GObjectFinalizeFunc: + * @object: the #GObject being finalized + * + * The type of the @finalize function of #GObjectClass. + */ +typedef void (*GObjectFinalizeFunc) (GObject *object); +/** + * GWeakNotify: + * @data: data that was provided when the weak reference was established + * @where_the_object_was: the object being disposed + * + * A #GWeakNotify function can be added to an object as a callback that gets + * triggered when the object is finalized. + * + * Since the object is already being disposed when the #GWeakNotify is called, + * there's not much you could do with the object, apart from e.g. using its + * address as hash-index or the like. + * + * In particular, this means it’s invalid to call g_object_ref(), + * g_weak_ref_init(), g_weak_ref_set(), g_object_add_toggle_ref(), + * g_object_weak_ref(), g_object_add_weak_pointer() or any function which calls + * them on the object from this callback. + */ +typedef void (*GWeakNotify) (gpointer data, + GObject *where_the_object_was); +/** + * GObject: + * + * The base object type. + * + * All the fields in the `GObject` structure are private to the implementation + * and should never be accessed directly. + * + * Since GLib 2.72, all #GObjects are guaranteed to be aligned to at least the + * alignment of the largest basic GLib type (typically this is #guint64 or + * #gdouble). If you need larger alignment for an element in a #GObject, you + * should allocate it on the heap (aligned), or arrange for your #GObject to be + * appropriately padded. This guarantee applies to the #GObject (or derived) + * struct, the #GObjectClass (or derived) struct, and any private data allocated + * by G_ADD_PRIVATE(). + */ +struct _GObject +{ + GTypeInstance g_type_instance; + + /*< private >*/ + guint ref_count; /* (atomic) */ + GData *qdata; +}; +/** + * GObjectClass: + * @g_type_class: the parent class + * @constructor: the @constructor function is called by g_object_new () to + * complete the object initialization after all the construction properties are + * set. The first thing a @constructor implementation must do is chain up to the + * @constructor of the parent class. Overriding @constructor should be rarely + * needed, e.g. to handle construct properties, or to implement singletons. + * @set_property: the generic setter for all properties of this type. Should be + * overridden for every type with properties. If implementations of + * @set_property don't emit property change notification explicitly, this will + * be done implicitly by the type system. However, if the notify signal is + * emitted explicitly, the type system will not emit it a second time. + * @get_property: the generic getter for all properties of this type. Should be + * overridden for every type with properties. + * @dispose: the @dispose function is supposed to drop all references to other + * objects, but keep the instance otherwise intact, so that client method + * invocations still work. It may be run multiple times (due to reference + * loops). Before returning, @dispose should chain up to the @dispose method + * of the parent class. + * @finalize: instance finalization function, should finish the finalization of + * the instance begun in @dispose and chain up to the @finalize method of the + * parent class. + * @dispatch_properties_changed: emits property change notification for a bunch + * of properties. Overriding @dispatch_properties_changed should be rarely + * needed. + * @notify: the class closure for the notify signal + * @constructed: the @constructed function is called by g_object_new() as the + * final step of the object creation process. At the point of the call, all + * construction properties have been set on the object. The purpose of this + * call is to allow for object initialisation steps that can only be performed + * after construction properties have been set. @constructed implementors + * should chain up to the @constructed call of their parent class to allow it + * to complete its initialisation. + * + * The class structure for the GObject type. + * + * |[ + * // Example of implementing a singleton using a constructor. + * static MySingleton *the_singleton = NULL; + * + * static GObject* + * my_singleton_constructor (GType type, + * guint n_construct_params, + * GObjectConstructParam *construct_params) + * { + * GObject *object; + * + * if (!the_singleton) + * { + * object = G_OBJECT_CLASS (parent_class)->constructor (type, + * n_construct_params, + * construct_params); + * the_singleton = MY_SINGLETON (object); + * } + * else + * object = g_object_ref (G_OBJECT (the_singleton)); + * + * return object; + * } + * ]| + */ +struct _GObjectClass +{ + GTypeClass g_type_class; + + /*< private >*/ + GSList *construct_properties; + + /*< public >*/ + /* seldom overridden */ + GObject* (*constructor) (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties); + /* overridable methods */ + void (*set_property) (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); + void (*get_property) (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); + void (*dispose) (GObject *object); + void (*finalize) (GObject *object); + /* seldom overridden */ + void (*dispatch_properties_changed) (GObject *object, + guint n_pspecs, + GParamSpec **pspecs); + /* signals */ + void (*notify) (GObject *object, + GParamSpec *pspec); + + /* called when done constructing */ + void (*constructed) (GObject *object); + + /*< private >*/ + gsize flags; + + gsize n_construct_properties; + + gpointer pspecs; + gsize n_pspecs; + + /* padding */ + gpointer pdummy[3]; +}; + +/** + * GObjectConstructParam: + * @pspec: the #GParamSpec of the construct parameter + * @value: the value to set the parameter to + * + * The GObjectConstructParam struct is an auxiliary structure used to hand + * #GParamSpec/#GValue pairs to the @constructor of a #GObjectClass. + */ +struct _GObjectConstructParam +{ + GParamSpec *pspec; + GValue *value; +}; + +/** + * GInitiallyUnowned: + * + * A type for objects that have an initially floating reference. + * + * All the fields in the `GInitiallyUnowned` structure are private to the + * implementation and should never be accessed directly. + */ +/** + * GInitiallyUnownedClass: + * + * The class structure for the GInitiallyUnowned type. + */ + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GType g_initially_unowned_get_type (void); +GLIB_AVAILABLE_IN_ALL +void g_object_class_install_property (GObjectClass *oclass, + guint property_id, + GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_object_class_find_property (GObjectClass *oclass, + const gchar *property_name); +GLIB_AVAILABLE_IN_ALL +GParamSpec**g_object_class_list_properties (GObjectClass *oclass, + guint *n_properties); +GLIB_AVAILABLE_IN_ALL +void g_object_class_override_property (GObjectClass *oclass, + guint property_id, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +void g_object_class_install_properties (GObjectClass *oclass, + guint n_pspecs, + GParamSpec **pspecs); + +GLIB_AVAILABLE_IN_ALL +void g_object_interface_install_property (gpointer g_iface, + GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_object_interface_find_property (gpointer g_iface, + const gchar *property_name); +GLIB_AVAILABLE_IN_ALL +GParamSpec**g_object_interface_list_properties (gpointer g_iface, + guint *n_properties_p); + +GLIB_AVAILABLE_IN_ALL +GType g_object_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gpointer g_object_new (GType object_type, + const gchar *first_property_name, + ...); +GLIB_AVAILABLE_IN_2_54 +GObject* g_object_new_with_properties (GType object_type, + guint n_properties, + const char *names[], + const GValue values[]); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties) +gpointer g_object_newv (GType object_type, + guint n_parameters, + GParameter *parameters); + +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +GObject* g_object_new_valist (GType object_type, + const gchar *first_property_name, + va_list var_args); +GLIB_AVAILABLE_IN_ALL +void g_object_set (gpointer object, + const gchar *first_property_name, + ...) G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_ALL +void g_object_get (gpointer object, + const gchar *first_property_name, + ...) G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_ALL +gpointer g_object_connect (gpointer object, + const gchar *signal_spec, + ...) G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_ALL +void g_object_disconnect (gpointer object, + const gchar *signal_spec, + ...) G_GNUC_NULL_TERMINATED; +GLIB_AVAILABLE_IN_2_54 +void g_object_setv (GObject *object, + guint n_properties, + const gchar *names[], + const GValue values[]); +GLIB_AVAILABLE_IN_ALL +void g_object_set_valist (GObject *object, + const gchar *first_property_name, + va_list var_args); +GLIB_AVAILABLE_IN_2_54 +void g_object_getv (GObject *object, + guint n_properties, + const gchar *names[], + GValue values[]); +GLIB_AVAILABLE_IN_ALL +void g_object_get_valist (GObject *object, + const gchar *first_property_name, + va_list var_args); +GLIB_AVAILABLE_IN_ALL +void g_object_set_property (GObject *object, + const gchar *property_name, + const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_object_get_property (GObject *object, + const gchar *property_name, + GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_object_freeze_notify (GObject *object); +GLIB_AVAILABLE_IN_ALL +void g_object_notify (GObject *object, + const gchar *property_name); +GLIB_AVAILABLE_IN_ALL +void g_object_notify_by_pspec (GObject *object, + GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +void g_object_thaw_notify (GObject *object); +GLIB_AVAILABLE_IN_ALL +gboolean g_object_is_floating (gpointer object); +GLIB_AVAILABLE_IN_ALL +gpointer g_object_ref_sink (gpointer object); +GLIB_AVAILABLE_IN_2_70 +gpointer g_object_take_ref (gpointer object); +GLIB_AVAILABLE_IN_ALL +gpointer g_object_ref (gpointer object); +GLIB_AVAILABLE_IN_ALL +void g_object_unref (gpointer object); +GLIB_AVAILABLE_IN_ALL +void g_object_weak_ref (GObject *object, + GWeakNotify notify, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_object_weak_unref (GObject *object, + GWeakNotify notify, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_object_add_weak_pointer (GObject *object, + gpointer *weak_pointer_location); +GLIB_AVAILABLE_IN_ALL +void g_object_remove_weak_pointer (GObject *object, + gpointer *weak_pointer_location); + +#if defined(glib_typeof) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 +/* Make reference APIs type safe with macros */ +#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj)) +#define g_object_ref_sink(Obj) ((glib_typeof (Obj)) (g_object_ref_sink) (Obj)) +#endif + +/** + * GToggleNotify: + * @data: Callback data passed to g_object_add_toggle_ref() + * @object: The object on which g_object_add_toggle_ref() was called. + * @is_last_ref: %TRUE if the toggle reference is now the + * last reference to the object. %FALSE if the toggle + * reference was the last reference and there are now other + * references. + * + * A callback function used for notification when the state + * of a toggle reference changes. + * + * See also: g_object_add_toggle_ref() + */ +typedef void (*GToggleNotify) (gpointer data, + GObject *object, + gboolean is_last_ref); + +GLIB_AVAILABLE_IN_ALL +void g_object_add_toggle_ref (GObject *object, + GToggleNotify notify, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_object_remove_toggle_ref (GObject *object, + GToggleNotify notify, + gpointer data); + +GLIB_AVAILABLE_IN_ALL +gpointer g_object_get_qdata (GObject *object, + GQuark quark); +GLIB_AVAILABLE_IN_ALL +void g_object_set_qdata (GObject *object, + GQuark quark, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_object_set_qdata_full (GObject *object, + GQuark quark, + gpointer data, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_ALL +gpointer g_object_steal_qdata (GObject *object, + GQuark quark); + +GLIB_AVAILABLE_IN_2_34 +gpointer g_object_dup_qdata (GObject *object, + GQuark quark, + GDuplicateFunc dup_func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_34 +gboolean g_object_replace_qdata (GObject *object, + GQuark quark, + gpointer oldval, + gpointer newval, + GDestroyNotify destroy, + GDestroyNotify *old_destroy); + +GLIB_AVAILABLE_IN_ALL +gpointer g_object_get_data (GObject *object, + const gchar *key); +GLIB_AVAILABLE_IN_ALL +void g_object_set_data (GObject *object, + const gchar *key, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_object_set_data_full (GObject *object, + const gchar *key, + gpointer data, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_ALL +gpointer g_object_steal_data (GObject *object, + const gchar *key); + +GLIB_AVAILABLE_IN_2_34 +gpointer g_object_dup_data (GObject *object, + const gchar *key, + GDuplicateFunc dup_func, + gpointer user_data); +GLIB_AVAILABLE_IN_2_34 +gboolean g_object_replace_data (GObject *object, + const gchar *key, + gpointer oldval, + gpointer newval, + GDestroyNotify destroy, + GDestroyNotify *old_destroy); + + +GLIB_AVAILABLE_IN_ALL +void g_object_watch_closure (GObject *object, + GClosure *closure); +GLIB_AVAILABLE_IN_ALL +GClosure* g_cclosure_new_object (GCallback callback_func, + GObject *object); +GLIB_AVAILABLE_IN_ALL +GClosure* g_cclosure_new_object_swap (GCallback callback_func, + GObject *object); +GLIB_AVAILABLE_IN_ALL +GClosure* g_closure_new_object (guint sizeof_closure, + GObject *object); +GLIB_AVAILABLE_IN_ALL +void g_value_set_object (GValue *value, + gpointer v_object); +GLIB_AVAILABLE_IN_ALL +gpointer g_value_get_object (const GValue *value); +GLIB_AVAILABLE_IN_ALL +gpointer g_value_dup_object (const GValue *value); +GLIB_AVAILABLE_IN_ALL +gulong g_signal_connect_object (gpointer instance, + const gchar *detailed_signal, + GCallback c_handler, + gpointer gobject, + GConnectFlags connect_flags); + +/*< protected >*/ +GLIB_AVAILABLE_IN_ALL +void g_object_force_floating (GObject *object); +GLIB_AVAILABLE_IN_ALL +void g_object_run_dispose (GObject *object); + + +GLIB_AVAILABLE_IN_ALL +void g_value_take_object (GValue *value, + gpointer v_object); +GLIB_DEPRECATED_FOR(g_value_take_object) +void g_value_set_object_take_ownership (GValue *value, + gpointer v_object); + +GLIB_DEPRECATED +gsize g_object_compat_control (gsize what, + gpointer data); + +/* --- implementation macros --- */ +#define G_OBJECT_WARN_INVALID_PSPEC(object, pname, property_id, pspec) \ +G_STMT_START { \ + GObject *_glib__object = (GObject*) (object); \ + GParamSpec *_glib__pspec = (GParamSpec*) (pspec); \ + guint _glib__property_id = (property_id); \ + g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'", \ + __FILE__, __LINE__, \ + (pname), \ + _glib__property_id, \ + _glib__pspec->name, \ + g_type_name (G_PARAM_SPEC_TYPE (_glib__pspec)), \ + G_OBJECT_TYPE_NAME (_glib__object)); \ +} G_STMT_END +/** + * G_OBJECT_WARN_INVALID_PROPERTY_ID: + * @object: the #GObject on which set_property() or get_property() was called + * @property_id: the numeric id of the property + * @pspec: the #GParamSpec of the property + * + * This macro should be used to emit a standard warning about unexpected + * properties in set_property() and get_property() implementations. + */ +#define G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec) \ + G_OBJECT_WARN_INVALID_PSPEC ((object), "property", (property_id), (pspec)) + +GLIB_AVAILABLE_IN_ALL +void g_clear_object (GObject **object_ptr); +#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref) + +/** + * g_set_object: (skip) + * @object_ptr: (inout) (not optional) (nullable): a pointer to a #GObject reference + * @new_object: (nullable) (transfer none): a pointer to the new #GObject to + * assign to @object_ptr, or %NULL to clear the pointer + * + * Updates a #GObject pointer to refer to @new_object. + * + * It increments the reference count of @new_object (if non-%NULL), decrements + * the reference count of the current value of @object_ptr (if non-%NULL), and + * assigns @new_object to @object_ptr. The assignment is not atomic. + * + * @object_ptr must not be %NULL, but can point to a %NULL value. + * + * A macro is also included that allows this function to be used without + * pointer casts. The function itself is static inline, so its address may vary + * between compilation units. + * + * One convenient usage of this function is in implementing property setters: + * |[ + * void + * foo_set_bar (Foo *foo, + * Bar *new_bar) + * { + * g_return_if_fail (IS_FOO (foo)); + * g_return_if_fail (new_bar == NULL || IS_BAR (new_bar)); + * + * if (g_set_object (&foo->bar, new_bar)) + * g_object_notify (foo, "bar"); + * } + * ]| + * + * Returns: %TRUE if the value of @object_ptr changed, %FALSE otherwise + * + * Since: 2.44 + */ +static inline gboolean +(g_set_object) (GObject **object_ptr, + GObject *new_object) +{ + GObject *old_object = *object_ptr; + + /* rely on g_object_[un]ref() to check the pointers are actually GObjects; + * elide a (object_ptr != NULL) check because most of the time we will be + * operating on struct members with a constant offset, so a NULL check would + * not catch bugs + */ + + if (old_object == new_object) + return FALSE; + + if (new_object != NULL) + g_object_ref (new_object); + + *object_ptr = new_object; + + if (old_object != NULL) + g_object_unref (old_object); + + return TRUE; +} + +/* We need GCC for __extension__, which we need to sort out strict aliasing of @object_ptr */ +#if defined(__GNUC__) + +#define g_set_object(object_ptr, new_object) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \ + /* Only one access, please; work around type aliasing */ \ + union { char *in; GObject **out; } _object_ptr; \ + _object_ptr.in = (char *) (object_ptr); \ + /* Check types match */ \ + (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \ + (g_set_object) (_object_ptr.out, (GObject *) new_object); \ + })) \ + GLIB_AVAILABLE_MACRO_IN_2_44 + +#else /* if !defined(__GNUC__) */ + +#define g_set_object(object_ptr, new_object) \ + (/* Check types match. */ \ + 0 ? *(object_ptr) = (new_object), FALSE : \ + (g_set_object) ((GObject **) (object_ptr), (GObject *) (new_object)) \ + ) + +#endif /* !defined(__GNUC__) */ + +/** + * g_assert_finalize_object: (skip) + * @object: (transfer full) (type GObject.Object): an object + * + * Assert that @object is non-%NULL, then release one reference to it with + * g_object_unref() and assert that it has been finalized (i.e. that there + * are no more references). + * + * If assertions are disabled via `G_DISABLE_ASSERT`, + * this macro just calls g_object_unref() without any further checks. + * + * This macro should only be used in regression tests. + * + * Since: 2.62 + */ +static inline void +(g_assert_finalize_object) (GObject *object) +{ + gpointer weak_pointer = object; + + g_assert_true (G_IS_OBJECT (weak_pointer)); + g_object_add_weak_pointer (object, &weak_pointer); + g_object_unref (weak_pointer); + g_assert_null (weak_pointer); +} + +#ifdef G_DISABLE_ASSERT +#define g_assert_finalize_object(object) g_object_unref (object) +#else +#define g_assert_finalize_object(object) (g_assert_finalize_object ((GObject *) object)) +#endif + +/** + * g_clear_weak_pointer: (skip) + * @weak_pointer_location: The memory address of a pointer + * + * Clears a weak reference to a #GObject. + * + * @weak_pointer_location must not be %NULL. + * + * If the weak reference is %NULL then this function does nothing. + * Otherwise, the weak reference to the object is removed for that location + * and the pointer is set to %NULL. + * + * A macro is also included that allows this function to be used without + * pointer casts. The function itself is static inline, so its address may vary + * between compilation units. + * + * Since: 2.56 + */ +static inline void +(g_clear_weak_pointer) (gpointer *weak_pointer_location) +{ + GObject *object = (GObject *) *weak_pointer_location; + + if (object != NULL) + { + g_object_remove_weak_pointer (object, weak_pointer_location); + *weak_pointer_location = NULL; + } +} + +#define g_clear_weak_pointer(weak_pointer_location) \ + (/* Check types match. */ \ + (g_clear_weak_pointer) ((gpointer *) (weak_pointer_location)) \ + ) + +/** + * g_set_weak_pointer: (skip) + * @weak_pointer_location: the memory address of a pointer + * @new_object: (nullable) (transfer none): a pointer to the new #GObject to + * assign to it, or %NULL to clear the pointer + * + * Updates a pointer to weakly refer to @new_object. + * + * It assigns @new_object to @weak_pointer_location and ensures + * that @weak_pointer_location will automatically be set to %NULL + * if @new_object gets destroyed. The assignment is not atomic. + * The weak reference is not thread-safe, see g_object_add_weak_pointer() + * for details. + * + * The @weak_pointer_location argument must not be %NULL. + * + * A macro is also included that allows this function to be used without + * pointer casts. The function itself is static inline, so its address may vary + * between compilation units. + * + * One convenient usage of this function is in implementing property setters: + * |[ + * void + * foo_set_bar (Foo *foo, + * Bar *new_bar) + * { + * g_return_if_fail (IS_FOO (foo)); + * g_return_if_fail (new_bar == NULL || IS_BAR (new_bar)); + * + * if (g_set_weak_pointer (&foo->bar, new_bar)) + * g_object_notify (foo, "bar"); + * } + * ]| + * + * Returns: %TRUE if the value of @weak_pointer_location changed, %FALSE otherwise + * + * Since: 2.56 + */ +static inline gboolean +(g_set_weak_pointer) (gpointer *weak_pointer_location, + GObject *new_object) +{ + GObject *old_object = (GObject *) *weak_pointer_location; + + /* elide a (weak_pointer_location != NULL) check because most of the time we + * will be operating on struct members with a constant offset, so a NULL + * check would not catch bugs + */ + + if (old_object == new_object) + return FALSE; + + if (old_object != NULL) + g_object_remove_weak_pointer (old_object, weak_pointer_location); + + *weak_pointer_location = new_object; + + if (new_object != NULL) + g_object_add_weak_pointer (new_object, weak_pointer_location); + + return TRUE; +} + +#define g_set_weak_pointer(weak_pointer_location, new_object) \ + (/* Check types match. */ \ + 0 ? *(weak_pointer_location) = (new_object), FALSE : \ + (g_set_weak_pointer) ((gpointer *) (weak_pointer_location), (GObject *) (new_object)) \ + ) + +typedef struct { + /**/ + union { gpointer p; } priv; +} GWeakRef; + +GLIB_AVAILABLE_IN_ALL +void g_weak_ref_init (GWeakRef *weak_ref, + gpointer object); +GLIB_AVAILABLE_IN_ALL +void g_weak_ref_clear (GWeakRef *weak_ref); +GLIB_AVAILABLE_IN_ALL +gpointer g_weak_ref_get (GWeakRef *weak_ref); +GLIB_AVAILABLE_IN_ALL +void g_weak_ref_set (GWeakRef *weak_ref, + gpointer object); + +G_END_DECLS + +#endif /* __G_OBJECT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobjectnotifyqueue.c b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobjectnotifyqueue.c new file mode 100644 index 0000000..48d09ec --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gobjectnotifyqueue.c @@ -0,0 +1,199 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ + +/* WARNING: + * + * This file is INSTALLED and other projects (outside of glib) + * #include its contents. + */ + +#ifndef __G_OBJECT_NOTIFY_QUEUE_H__ +#define __G_OBJECT_NOTIFY_QUEUE_H__ + +#include /* memset */ + +#include + +G_BEGIN_DECLS + + +/* --- typedefs --- */ +typedef struct _GObjectNotifyContext GObjectNotifyContext; +typedef struct _GObjectNotifyQueue GObjectNotifyQueue; +typedef void (*GObjectNotifyQueueDispatcher) (GObject *object, + guint n_pspecs, + GParamSpec **pspecs); + + +/* --- structures --- */ +struct _GObjectNotifyContext +{ + GQuark quark_notify_queue; + GObjectNotifyQueueDispatcher dispatcher; + GTrashStack *_nqueue_trash; /* unused */ +}; +struct _GObjectNotifyQueue +{ + GObjectNotifyContext *context; + GSList *pspecs; + guint16 n_pspecs; + guint16 freeze_count; +}; + +G_LOCK_DEFINE_STATIC(notify_lock); + +/* --- functions --- */ +static void +g_object_notify_queue_free (gpointer data) +{ + GObjectNotifyQueue *nqueue = data; + + g_slist_free (nqueue->pspecs); + g_slice_free (GObjectNotifyQueue, nqueue); +} + +static inline GObjectNotifyQueue* +g_object_notify_queue_freeze (GObject *object, + GObjectNotifyContext *context) +{ + GObjectNotifyQueue *nqueue; + + G_LOCK(notify_lock); + nqueue = g_datalist_id_get_data (&object->qdata, context->quark_notify_queue); + if (!nqueue) + { + nqueue = g_slice_new0 (GObjectNotifyQueue); + nqueue->context = context; + g_datalist_id_set_data_full (&object->qdata, context->quark_notify_queue, + nqueue, g_object_notify_queue_free); + } + + if (nqueue->freeze_count >= 65535) + g_critical("Free queue for %s (%p) is larger than 65535," + " called g_object_freeze_notify() too often." + " Forgot to call g_object_thaw_notify() or infinite loop", + G_OBJECT_TYPE_NAME (object), object); + else + nqueue->freeze_count++; + G_UNLOCK(notify_lock); + + return nqueue; +} + +static inline void +g_object_notify_queue_thaw (GObject *object, + GObjectNotifyQueue *nqueue) +{ + GObjectNotifyContext *context = nqueue->context; + GParamSpec *pspecs_mem[16], **pspecs, **free_me = NULL; + GSList *slist; + guint n_pspecs = 0; + + g_return_if_fail (nqueue->freeze_count > 0); + g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0); + + G_LOCK(notify_lock); + + /* Just make sure we never get into some nasty race condition */ + if (G_UNLIKELY(nqueue->freeze_count == 0)) { + G_UNLOCK(notify_lock); + g_warning ("%s: property-changed notification for %s(%p) is not frozen", + G_STRFUNC, G_OBJECT_TYPE_NAME (object), object); + return; + } + + nqueue->freeze_count--; + if (nqueue->freeze_count) { + G_UNLOCK(notify_lock); + return; + } + + pspecs = nqueue->n_pspecs > 16 ? free_me = g_new (GParamSpec*, nqueue->n_pspecs) : pspecs_mem; + + for (slist = nqueue->pspecs; slist; slist = slist->next) + { + pspecs[n_pspecs++] = slist->data; + } + g_datalist_id_set_data (&object->qdata, context->quark_notify_queue, NULL); + + G_UNLOCK(notify_lock); + + if (n_pspecs) + context->dispatcher (object, n_pspecs, pspecs); + g_free (free_me); +} + +static inline void +g_object_notify_queue_clear (GObject *object, + GObjectNotifyQueue *nqueue) +{ + g_return_if_fail (nqueue->freeze_count > 0); + + G_LOCK(notify_lock); + + g_slist_free (nqueue->pspecs); + nqueue->pspecs = NULL; + nqueue->n_pspecs = 0; + + G_UNLOCK(notify_lock); +} + +static inline void +g_object_notify_queue_add (GObject *object, + GObjectNotifyQueue *nqueue, + GParamSpec *pspec) +{ + if (pspec->flags & G_PARAM_READABLE) + { + GParamSpec *redirect; + + G_LOCK(notify_lock); + + g_return_if_fail (nqueue->n_pspecs < 65535); + + redirect = g_param_spec_get_redirect_target (pspec); + if (redirect) + pspec = redirect; + + /* we do the deduping in _thaw */ + if (g_slist_find (nqueue->pspecs, pspec) == NULL) + { + nqueue->pspecs = g_slist_prepend (nqueue->pspecs, pspec); + nqueue->n_pspecs++; + } + + G_UNLOCK(notify_lock); + } +} + +/* NB: This function is not threadsafe, do not ever use it if + * you need a threadsafe notify queue. + * Use g_object_notify_queue_freeze() to acquire the queue and + * g_object_notify_queue_thaw() after you are done instead. + */ +static inline GObjectNotifyQueue* +g_object_notify_queue_from_object (GObject *object, + GObjectNotifyContext *context) +{ + return g_datalist_id_get_data (&object->qdata, context->quark_notify_queue); +} + +G_END_DECLS + +#endif /* __G_OBJECT_NOTIFY_QUEUE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gparam.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gparam.h new file mode 100644 index 0000000..cf8e8dd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gparam.h @@ -0,0 +1,476 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1997-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * gparam.h: GParamSpec base class implementation + */ +#ifndef __G_PARAM_H__ +#define __G_PARAM_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* --- standard type macros --- */ +/** + * G_TYPE_IS_PARAM: + * @type: a #GType ID + * + * Checks whether @type "is a" %G_TYPE_PARAM. + */ +#define G_TYPE_IS_PARAM(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_PARAM) +/** + * G_PARAM_SPEC: + * @pspec: a valid #GParamSpec + * + * Casts a derived #GParamSpec object (e.g. of type #GParamSpecInt) into + * a #GParamSpec object. + */ +#define G_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec)) +/** + * G_IS_PARAM_SPEC: + * @pspec: a #GParamSpec + * + * Checks whether @pspec "is a" valid #GParamSpec structure of type %G_TYPE_PARAM + * or derived. + */ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_42 +#define G_IS_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((pspec), G_TYPE_PARAM)) +#else +#define G_IS_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM)) +#endif +/** + * G_PARAM_SPEC_CLASS: + * @pclass: a valid #GParamSpecClass + * + * Casts a derived #GParamSpecClass structure into a #GParamSpecClass structure. + */ +#define G_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_CAST ((pclass), G_TYPE_PARAM, GParamSpecClass)) +/** + * G_IS_PARAM_SPEC_CLASS: + * @pclass: a #GParamSpecClass + * + * Checks whether @pclass "is a" valid #GParamSpecClass structure of type + * %G_TYPE_PARAM or derived. + */ +#define G_IS_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_TYPE ((pclass), G_TYPE_PARAM)) +/** + * G_PARAM_SPEC_GET_CLASS: + * @pspec: a valid #GParamSpec + * + * Retrieves the #GParamSpecClass of a #GParamSpec. + */ +#define G_PARAM_SPEC_GET_CLASS(pspec) (G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass)) + + +/* --- convenience macros --- */ +/** + * G_PARAM_SPEC_TYPE: + * @pspec: a valid #GParamSpec + * + * Retrieves the #GType of this @pspec. + */ +#define G_PARAM_SPEC_TYPE(pspec) (G_TYPE_FROM_INSTANCE (pspec)) +/** + * G_PARAM_SPEC_TYPE_NAME: + * @pspec: a valid #GParamSpec + * + * Retrieves the #GType name of this @pspec. + */ +#define G_PARAM_SPEC_TYPE_NAME(pspec) (g_type_name (G_PARAM_SPEC_TYPE (pspec))) +/** + * G_PARAM_SPEC_VALUE_TYPE: + * @pspec: a valid #GParamSpec + * + * Retrieves the #GType to initialize a #GValue for this parameter. + */ +#define G_PARAM_SPEC_VALUE_TYPE(pspec) (G_PARAM_SPEC (pspec)->value_type) +/** + * G_VALUE_HOLDS_PARAM: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values derived from type %G_TYPE_PARAM. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_PARAM(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_PARAM)) + + +/* --- flags --- */ +/** + * GParamFlags: + * @G_PARAM_READABLE: the parameter is readable + * @G_PARAM_WRITABLE: the parameter is writable + * @G_PARAM_READWRITE: alias for %G_PARAM_READABLE | %G_PARAM_WRITABLE + * @G_PARAM_CONSTRUCT: the parameter will be set upon object construction + * @G_PARAM_CONSTRUCT_ONLY: the parameter can only be set upon object construction + * @G_PARAM_LAX_VALIDATION: upon parameter conversion (see g_param_value_convert()) + * strict validation is not required + * @G_PARAM_STATIC_NAME: the string used as name when constructing the + * parameter is guaranteed to remain valid and + * unmodified for the lifetime of the parameter. + * Since 2.8 + * @G_PARAM_STATIC_NICK: the string used as nick when constructing the + * parameter is guaranteed to remain valid and + * unmmodified for the lifetime of the parameter. + * Since 2.8 + * @G_PARAM_STATIC_BLURB: the string used as blurb when constructing the + * parameter is guaranteed to remain valid and + * unmodified for the lifetime of the parameter. + * Since 2.8 + * @G_PARAM_EXPLICIT_NOTIFY: calls to g_object_set_property() for this + * property will not automatically result in a "notify" signal being + * emitted: the implementation must call g_object_notify() themselves + * in case the property actually changes. Since: 2.42. + * @G_PARAM_PRIVATE: internal + * @G_PARAM_DEPRECATED: the parameter is deprecated and will be removed + * in a future version. A warning will be generated if it is used + * while running with G_ENABLE_DIAGNOSTIC=1. + * Since 2.26 + * + * Through the #GParamFlags flag values, certain aspects of parameters + * can be configured. + * + * See also: %G_PARAM_STATIC_STRINGS + */ +typedef enum +{ + G_PARAM_READABLE = 1 << 0, + G_PARAM_WRITABLE = 1 << 1, + G_PARAM_READWRITE = (G_PARAM_READABLE | G_PARAM_WRITABLE), + G_PARAM_CONSTRUCT = 1 << 2, + G_PARAM_CONSTRUCT_ONLY = 1 << 3, + G_PARAM_LAX_VALIDATION = 1 << 4, + G_PARAM_STATIC_NAME = 1 << 5, + G_PARAM_PRIVATE GLIB_DEPRECATED_ENUMERATOR_IN_2_26 = G_PARAM_STATIC_NAME, + G_PARAM_STATIC_NICK = 1 << 6, + G_PARAM_STATIC_BLURB = 1 << 7, + /* User defined flags go here */ + G_PARAM_EXPLICIT_NOTIFY = 1 << 30, + /* Avoid warning with -Wpedantic for gcc6 */ + G_PARAM_DEPRECATED = (gint)(1u << 31) +} GParamFlags; + +/** + * G_PARAM_STATIC_STRINGS: + * + * #GParamFlags value alias for %G_PARAM_STATIC_NAME | %G_PARAM_STATIC_NICK | %G_PARAM_STATIC_BLURB. + * + * It is recommended to use this for all properties by default, as it allows for + * internal performance improvements in GObject. + * + * It is very rare that a property would have a dynamically constructed name, + * nickname or blurb. + * + * Since 2.13.0 + */ +#define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB) +/* bits in the range 0xffffff00 are reserved for 3rd party usage */ +/** + * G_PARAM_MASK: + * + * Mask containing the bits of #GParamSpec.flags which are reserved for GLib. + */ +#define G_PARAM_MASK (0x000000ff) +/** + * G_PARAM_USER_SHIFT: + * + * Minimum shift count to be used for user defined flags, to be stored in + * #GParamSpec.flags. The maximum allowed is 10. + */ +#define G_PARAM_USER_SHIFT (8) + +/* --- typedefs & structures --- */ +typedef struct _GParamSpec GParamSpec; +typedef struct _GParamSpecClass GParamSpecClass; +typedef struct _GParameter GParameter GLIB_DEPRECATED_TYPE_IN_2_54; +typedef struct _GParamSpecPool GParamSpecPool; +/** + * GParamSpec: (ref-func g_param_spec_ref_sink) (unref-func g_param_spec_unref) (set-value-func g_value_set_param) (get-value-func g_value_get_param) + * @g_type_instance: private #GTypeInstance portion + * @name: name of this parameter: always an interned string + * @flags: #GParamFlags flags for this parameter + * @value_type: the #GValue type for this parameter + * @owner_type: #GType type that uses (introduces) this parameter + * + * All other fields of the GParamSpec struct are private and + * should not be used directly. + */ +struct _GParamSpec +{ + GTypeInstance g_type_instance; + + const gchar *name; /* interned string */ + GParamFlags flags; + GType value_type; + GType owner_type; /* class or interface using this property */ + + /*< private >*/ + gchar *_nick; + gchar *_blurb; + GData *qdata; + guint ref_count; + guint param_id; /* sort-criteria */ +}; +/** + * GParamSpecClass: + * @g_type_class: the parent class + * @value_type: the #GValue type for this parameter + * @finalize: The instance finalization function (optional), should chain + * up to the finalize method of the parent class. + * @value_set_default: Resets a @value to the default value for this type + * (recommended, the default is g_value_reset()), see + * g_param_value_set_default(). + * @value_validate: Ensures that the contents of @value comply with the + * specifications set out by this type (optional), see + * g_param_value_validate(). + * @values_cmp: Compares @value1 with @value2 according to this type + * (recommended, the default is memcmp()), see g_param_values_cmp(). + * @value_is_valid: Checks if contents of @value comply with the specifications + * set out by this type, without modifying the value. This vfunc is optional. + * If it isn't set, GObject will use @value_validate. Since 2.74 + * + * The class structure for the GParamSpec type. + * Normally, GParamSpec classes are filled by + * g_param_type_register_static(). + */ +struct _GParamSpecClass +{ + GTypeClass g_type_class; + + GType value_type; + + void (*finalize) (GParamSpec *pspec); + + /* GParam methods */ + void (*value_set_default) (GParamSpec *pspec, + GValue *value); + gboolean (*value_validate) (GParamSpec *pspec, + GValue *value); + gint (*values_cmp) (GParamSpec *pspec, + const GValue *value1, + const GValue *value2); + + gboolean (*value_is_valid) (GParamSpec *pspec, + const GValue *value); + + /*< private >*/ + gpointer dummy[3]; +}; +/** + * GParameter: + * @name: the parameter name + * @value: the parameter value + * + * The GParameter struct is an auxiliary structure used + * to hand parameter name/value pairs to g_object_newv(). + * + * Deprecated: 2.54: This type is not introspectable. + */ +struct _GParameter /* auxiliary structure for _setv() variants */ +{ + const gchar *name; + GValue value; +} GLIB_DEPRECATED_TYPE_IN_2_54; + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_ref (GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +void g_param_spec_unref (GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +void g_param_spec_sink (GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +gpointer g_param_spec_get_qdata (GParamSpec *pspec, + GQuark quark); +GLIB_AVAILABLE_IN_ALL +void g_param_spec_set_qdata (GParamSpec *pspec, + GQuark quark, + gpointer data); +GLIB_AVAILABLE_IN_ALL +void g_param_spec_set_qdata_full (GParamSpec *pspec, + GQuark quark, + gpointer data, + GDestroyNotify destroy); +GLIB_AVAILABLE_IN_ALL +gpointer g_param_spec_steal_qdata (GParamSpec *pspec, + GQuark quark); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec); + +GLIB_AVAILABLE_IN_ALL +void g_param_value_set_default (GParamSpec *pspec, + GValue *value); +GLIB_AVAILABLE_IN_ALL +gboolean g_param_value_defaults (GParamSpec *pspec, + const GValue *value); +GLIB_AVAILABLE_IN_ALL +gboolean g_param_value_validate (GParamSpec *pspec, + GValue *value); +GLIB_AVAILABLE_IN_2_74 +gboolean g_param_value_is_valid (GParamSpec *pspec, + const GValue *value); +GLIB_AVAILABLE_IN_ALL +gboolean g_param_value_convert (GParamSpec *pspec, + const GValue *src_value, + GValue *dest_value, + gboolean strict_validation); +GLIB_AVAILABLE_IN_ALL +gint g_param_values_cmp (GParamSpec *pspec, + const GValue *value1, + const GValue *value2); +GLIB_AVAILABLE_IN_ALL +const gchar * g_param_spec_get_name (GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +const gchar * g_param_spec_get_nick (GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +const gchar * g_param_spec_get_blurb (GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +void g_value_set_param (GValue *value, + GParamSpec *param); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_value_get_param (const GValue *value); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_value_dup_param (const GValue *value); + + +GLIB_AVAILABLE_IN_ALL +void g_value_take_param (GValue *value, + GParamSpec *param); +GLIB_DEPRECATED_FOR(g_value_take_param) +void g_value_set_param_take_ownership (GValue *value, + GParamSpec *param); +GLIB_AVAILABLE_IN_2_36 +const GValue * g_param_spec_get_default_value (GParamSpec *pspec); + +GLIB_AVAILABLE_IN_2_46 +GQuark g_param_spec_get_name_quark (GParamSpec *pspec); + +/* --- convenience functions --- */ +typedef struct _GParamSpecTypeInfo GParamSpecTypeInfo; +/** + * GParamSpecTypeInfo: + * @instance_size: Size of the instance (object) structure. + * @n_preallocs: Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the [slice allocator][glib-Memory-Slices] now. + * @instance_init: Location of the instance initialization function (optional). + * @value_type: The #GType of values conforming to this #GParamSpec + * @finalize: The instance finalization function (optional). + * @value_set_default: Resets a @value to the default value for @pspec + * (recommended, the default is g_value_reset()), see + * g_param_value_set_default(). + * @value_validate: Ensures that the contents of @value comply with the + * specifications set out by @pspec (optional), see + * g_param_value_validate(). + * @values_cmp: Compares @value1 with @value2 according to @pspec + * (recommended, the default is memcmp()), see g_param_values_cmp(). + * + * This structure is used to provide the type system with the information + * required to initialize and destruct (finalize) a parameter's class and + * instances thereof. + * + * The initialized structure is passed to the g_param_type_register_static() + * The type system will perform a deep copy of this structure, so its memory + * does not need to be persistent across invocation of + * g_param_type_register_static(). + */ +struct _GParamSpecTypeInfo +{ + /* type system portion */ + guint16 instance_size; /* obligatory */ + guint16 n_preallocs; /* optional */ + void (*instance_init) (GParamSpec *pspec); /* optional */ + + /* class portion */ + GType value_type; /* obligatory */ + void (*finalize) (GParamSpec *pspec); /* optional */ + void (*value_set_default) (GParamSpec *pspec, /* recommended */ + GValue *value); + gboolean (*value_validate) (GParamSpec *pspec, /* optional */ + GValue *value); + gint (*values_cmp) (GParamSpec *pspec, /* recommended */ + const GValue *value1, + const GValue *value2); +}; +GLIB_AVAILABLE_IN_ALL +GType g_param_type_register_static (const gchar *name, + const GParamSpecTypeInfo *pspec_info); + +GLIB_AVAILABLE_IN_2_66 +gboolean g_param_spec_is_valid_name (const gchar *name); + +/* For registering builting types */ +GType _g_param_type_register_static_constant (const gchar *name, + const GParamSpecTypeInfo *pspec_info, + GType opt_type); + + +/* --- protected --- */ +GLIB_AVAILABLE_IN_ALL +gpointer g_param_spec_internal (GType param_type, + const gchar *name, + const gchar *nick, + const gchar *blurb, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing); +GLIB_AVAILABLE_IN_ALL +void g_param_spec_pool_insert (GParamSpecPool *pool, + GParamSpec *pspec, + GType owner_type); +GLIB_AVAILABLE_IN_ALL +void g_param_spec_pool_remove (GParamSpecPool *pool, + GParamSpec *pspec); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool, + const gchar *param_name, + GType owner_type, + gboolean walk_ancestors); +GLIB_AVAILABLE_IN_ALL +GList* g_param_spec_pool_list_owned (GParamSpecPool *pool, + GType owner_type); +GLIB_AVAILABLE_IN_ALL +GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool, + GType owner_type, + guint *n_pspecs_p); + + +/* contracts: + * + * gboolean value_validate (GParamSpec *pspec, + * GValue *value): + * modify value contents in the least destructive way, so + * that it complies with pspec's requirements (i.e. + * according to minimum/maximum ranges etc...). return + * whether modification was necessary. + * + * gint values_cmp (GParamSpec *pspec, + * const GValue *value1, + * const GValue *value2): + * return value1 - value2, i.e. (-1) if value1 < value2, + * (+1) if value1 > value2, and (0) otherwise (equality) + */ + +G_END_DECLS + +#endif /* __G_PARAM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gparamspecs.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gparamspecs.h new file mode 100644 index 0000000..250531e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gparamspecs.h @@ -0,0 +1,1175 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1997-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * gparamspecs.h: GLib default param specs + */ +#ifndef __G_PARAMSPECS_H__ +#define __G_PARAMSPECS_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include + +G_BEGIN_DECLS + +/* --- type macros --- */ +/** + * G_TYPE_PARAM_CHAR: + * + * The #GType of #GParamSpecChar. + */ +#define G_TYPE_PARAM_CHAR (g_param_spec_types[0]) +/** + * G_IS_PARAM_SPEC_CHAR: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_CHAR. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_CHAR(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_CHAR)) +/** + * G_PARAM_SPEC_CHAR: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecChar. + */ +#define G_PARAM_SPEC_CHAR(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_CHAR, GParamSpecChar)) + +/** + * G_TYPE_PARAM_UCHAR: + * + * The #GType of #GParamSpecUChar. + */ +#define G_TYPE_PARAM_UCHAR (g_param_spec_types[1]) +/** + * G_IS_PARAM_SPEC_UCHAR: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UCHAR. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_UCHAR(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UCHAR)) +/** + * G_PARAM_SPEC_UCHAR: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecUChar. + */ +#define G_PARAM_SPEC_UCHAR(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UCHAR, GParamSpecUChar)) + +/** + * G_TYPE_PARAM_BOOLEAN: + * + * The #GType of #GParamSpecBoolean. + */ +#define G_TYPE_PARAM_BOOLEAN (g_param_spec_types[2]) +/** + * G_IS_PARAM_SPEC_BOOLEAN: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOOLEAN. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_BOOLEAN(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOOLEAN)) +/** + * G_PARAM_SPEC_BOOLEAN: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecBoolean. + */ +#define G_PARAM_SPEC_BOOLEAN(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOOLEAN, GParamSpecBoolean)) + +/** + * G_TYPE_PARAM_INT: + * + * The #GType of #GParamSpecInt. + */ +#define G_TYPE_PARAM_INT (g_param_spec_types[3]) +/** + * G_IS_PARAM_SPEC_INT: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_INT(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT)) +/** + * G_PARAM_SPEC_INT: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecInt. + */ +#define G_PARAM_SPEC_INT(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT, GParamSpecInt)) + +/** + * G_TYPE_PARAM_UINT: + * + * The #GType of #GParamSpecUInt. + */ +#define G_TYPE_PARAM_UINT (g_param_spec_types[4]) +/** + * G_IS_PARAM_SPEC_UINT: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_UINT(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT)) +/** + * G_PARAM_SPEC_UINT: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecUInt. + */ +#define G_PARAM_SPEC_UINT(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT, GParamSpecUInt)) + +/** + * G_TYPE_PARAM_LONG: + * + * The #GType of #GParamSpecLong. + */ +#define G_TYPE_PARAM_LONG (g_param_spec_types[5]) +/** + * G_IS_PARAM_SPEC_LONG: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_LONG. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_LONG(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_LONG)) +/** + * G_PARAM_SPEC_LONG: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecLong. + */ +#define G_PARAM_SPEC_LONG(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_LONG, GParamSpecLong)) + +/** + * G_TYPE_PARAM_ULONG: + * + * The #GType of #GParamSpecULong. + */ +#define G_TYPE_PARAM_ULONG (g_param_spec_types[6]) +/** + * G_IS_PARAM_SPEC_ULONG: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ULONG. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_ULONG(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ULONG)) +/** + * G_PARAM_SPEC_ULONG: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecULong. + */ +#define G_PARAM_SPEC_ULONG(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ULONG, GParamSpecULong)) + +/** + * G_TYPE_PARAM_INT64: + * + * The #GType of #GParamSpecInt64. + */ +#define G_TYPE_PARAM_INT64 (g_param_spec_types[7]) +/** + * G_IS_PARAM_SPEC_INT64: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT64. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_INT64(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT64)) +/** + * G_PARAM_SPEC_INT64: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecInt64. + */ +#define G_PARAM_SPEC_INT64(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT64, GParamSpecInt64)) + +/** + * G_TYPE_PARAM_UINT64: + * + * The #GType of #GParamSpecUInt64. + */ +#define G_TYPE_PARAM_UINT64 (g_param_spec_types[8]) +/** + * G_IS_PARAM_SPEC_UINT64: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT64. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_UINT64(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT64)) +/** + * G_PARAM_SPEC_UINT64: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecUInt64. + */ +#define G_PARAM_SPEC_UINT64(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT64, GParamSpecUInt64)) + +/** + * G_TYPE_PARAM_UNICHAR: + * + * The #GType of #GParamSpecUnichar. + */ +#define G_TYPE_PARAM_UNICHAR (g_param_spec_types[9]) +/** + * G_PARAM_SPEC_UNICHAR: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecUnichar. + */ +#define G_PARAM_SPEC_UNICHAR(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UNICHAR, GParamSpecUnichar)) +/** + * G_IS_PARAM_SPEC_UNICHAR: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UNICHAR. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_UNICHAR(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UNICHAR)) + +/** + * G_TYPE_PARAM_ENUM: + * + * The #GType of #GParamSpecEnum. + */ +#define G_TYPE_PARAM_ENUM (g_param_spec_types[10]) +/** + * G_IS_PARAM_SPEC_ENUM: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ENUM. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_ENUM(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ENUM)) +/** + * G_PARAM_SPEC_ENUM: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecEnum. + */ +#define G_PARAM_SPEC_ENUM(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ENUM, GParamSpecEnum)) + +/** + * G_TYPE_PARAM_FLAGS: + * + * The #GType of #GParamSpecFlags. + */ +#define G_TYPE_PARAM_FLAGS (g_param_spec_types[11]) +/** + * G_IS_PARAM_SPEC_FLAGS: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLAGS. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_FLAGS(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLAGS)) +/** + * G_PARAM_SPEC_FLAGS: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecFlags. + */ +#define G_PARAM_SPEC_FLAGS(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLAGS, GParamSpecFlags)) + +/** + * G_TYPE_PARAM_FLOAT: + * + * The #GType of #GParamSpecFloat. + */ +#define G_TYPE_PARAM_FLOAT (g_param_spec_types[12]) +/** + * G_IS_PARAM_SPEC_FLOAT: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLOAT. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_FLOAT(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLOAT)) +/** + * G_PARAM_SPEC_FLOAT: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecFloat. + */ +#define G_PARAM_SPEC_FLOAT(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLOAT, GParamSpecFloat)) + +/** + * G_TYPE_PARAM_DOUBLE: + * + * The #GType of #GParamSpecDouble. + */ +#define G_TYPE_PARAM_DOUBLE (g_param_spec_types[13]) +/** + * G_IS_PARAM_SPEC_DOUBLE: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_DOUBLE. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_DOUBLE(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_DOUBLE)) +/** + * G_PARAM_SPEC_DOUBLE: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecDouble. + */ +#define G_PARAM_SPEC_DOUBLE(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_DOUBLE, GParamSpecDouble)) + +/** + * G_TYPE_PARAM_STRING: + * + * The #GType of #GParamSpecString. + */ +#define G_TYPE_PARAM_STRING (g_param_spec_types[14]) +/** + * G_IS_PARAM_SPEC_STRING: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_STRING. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_STRING)) +/** + * G_PARAM_SPEC_STRING: + * @pspec: a valid #GParamSpec instance + * + * Casts a #GParamSpec instance into a #GParamSpecString. + */ +#define G_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_STRING, GParamSpecString)) + +/** + * G_TYPE_PARAM_PARAM: + * + * The #GType of #GParamSpecParam. + */ +#define G_TYPE_PARAM_PARAM (g_param_spec_types[15]) +/** + * G_IS_PARAM_SPEC_PARAM: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_PARAM. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_PARAM(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_PARAM)) +/** + * G_PARAM_SPEC_PARAM: + * @pspec: a valid #GParamSpec instance + * + * Casts a #GParamSpec instance into a #GParamSpecParam. + */ +#define G_PARAM_SPEC_PARAM(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_PARAM, GParamSpecParam)) + +/** + * G_TYPE_PARAM_BOXED: + * + * The #GType of #GParamSpecBoxed. + */ +#define G_TYPE_PARAM_BOXED (g_param_spec_types[16]) +/** + * G_IS_PARAM_SPEC_BOXED: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOXED. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_BOXED(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOXED)) +/** + * G_PARAM_SPEC_BOXED: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecBoxed. + */ +#define G_PARAM_SPEC_BOXED(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOXED, GParamSpecBoxed)) + +/** + * G_TYPE_PARAM_POINTER: + * + * The #GType of #GParamSpecPointer. + */ +#define G_TYPE_PARAM_POINTER (g_param_spec_types[17]) +/** + * G_IS_PARAM_SPEC_POINTER: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_POINTER. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_POINTER(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_POINTER)) +/** + * G_PARAM_SPEC_POINTER: + * @pspec: a valid #GParamSpec instance + * + * Casts a #GParamSpec instance into a #GParamSpecPointer. + */ +#define G_PARAM_SPEC_POINTER(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_POINTER, GParamSpecPointer)) + +/** + * G_TYPE_PARAM_VALUE_ARRAY: + * + * The #GType of #GParamSpecValueArray. + * + * Deprecated: 2.32: Use #GArray instead of #GValueArray + */ +#define G_TYPE_PARAM_VALUE_ARRAY (g_param_spec_types[18]) GLIB_DEPRECATED_MACRO_IN_2_32 +/** + * G_IS_PARAM_SPEC_VALUE_ARRAY: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VALUE_ARRAY. + * + * Returns: %TRUE on success. + * + * Deprecated: 2.32: Use #GArray instead of #GValueArray + */ +#define G_IS_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VALUE_ARRAY)) GLIB_DEPRECATED_MACRO_IN_2_32 +/** + * G_PARAM_SPEC_VALUE_ARRAY: + * @pspec: a valid #GParamSpec instance + * + * Cast a #GParamSpec instance into a #GParamSpecValueArray. + * + * Deprecated: 2.32: Use #GArray instead of #GValueArray + */ +#define G_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VALUE_ARRAY, GParamSpecValueArray)) GLIB_DEPRECATED_MACRO_IN_2_32 + +/** + * G_TYPE_PARAM_OBJECT: + * + * The #GType of #GParamSpecObject. + */ +#define G_TYPE_PARAM_OBJECT (g_param_spec_types[19]) +/** + * G_IS_PARAM_SPEC_OBJECT: + * @pspec: a valid #GParamSpec instance + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OBJECT. + * + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_OBJECT(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OBJECT)) +/** + * G_PARAM_SPEC_OBJECT: + * @pspec: a valid #GParamSpec instance + * + * Casts a #GParamSpec instance into a #GParamSpecObject. + */ +#define G_PARAM_SPEC_OBJECT(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OBJECT, GParamSpecObject)) + +/** + * G_TYPE_PARAM_OVERRIDE: + * + * The #GType of #GParamSpecOverride. + * + * Since: 2.4 + */ +#define G_TYPE_PARAM_OVERRIDE (g_param_spec_types[20]) +/** + * G_IS_PARAM_SPEC_OVERRIDE: + * @pspec: a #GParamSpec + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OVERRIDE. + * + * Since: 2.4 + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_OVERRIDE(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OVERRIDE)) +/** + * G_PARAM_SPEC_OVERRIDE: + * @pspec: a #GParamSpec + * + * Casts a #GParamSpec into a #GParamSpecOverride. + * + * Since: 2.4 + */ +#define G_PARAM_SPEC_OVERRIDE(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OVERRIDE, GParamSpecOverride)) + +/** + * G_TYPE_PARAM_GTYPE: + * + * The #GType of #GParamSpecGType. + * + * Since: 2.10 + */ +#define G_TYPE_PARAM_GTYPE (g_param_spec_types[21]) +/** + * G_IS_PARAM_SPEC_GTYPE: + * @pspec: a #GParamSpec + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_GTYPE. + * + * Since: 2.10 + * Returns: %TRUE on success. + */ +#define G_IS_PARAM_SPEC_GTYPE(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_GTYPE)) +/** + * G_PARAM_SPEC_GTYPE: + * @pspec: a #GParamSpec + * + * Casts a #GParamSpec into a #GParamSpecGType. + * + * Since: 2.10 + */ +#define G_PARAM_SPEC_GTYPE(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_GTYPE, GParamSpecGType)) + +/** + * G_TYPE_PARAM_VARIANT: + * + * The #GType of #GParamSpecVariant. + * + * Since: 2.26 + */ +#define G_TYPE_PARAM_VARIANT (g_param_spec_types[22]) +/** + * G_IS_PARAM_SPEC_VARIANT: + * @pspec: a #GParamSpec + * + * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VARIANT. + * + * Returns: %TRUE on success + * + * Since: 2.26 + */ +#define G_IS_PARAM_SPEC_VARIANT(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VARIANT)) +/** + * G_PARAM_SPEC_VARIANT: + * @pspec: a #GParamSpec + * + * Casts a #GParamSpec into a #GParamSpecVariant. + * + * Since: 2.26 + */ +#define G_PARAM_SPEC_VARIANT(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VARIANT, GParamSpecVariant)) + +/* --- typedefs & structures --- */ +typedef struct _GParamSpecChar GParamSpecChar; +typedef struct _GParamSpecUChar GParamSpecUChar; +typedef struct _GParamSpecBoolean GParamSpecBoolean; +typedef struct _GParamSpecInt GParamSpecInt; +typedef struct _GParamSpecUInt GParamSpecUInt; +typedef struct _GParamSpecLong GParamSpecLong; +typedef struct _GParamSpecULong GParamSpecULong; +typedef struct _GParamSpecInt64 GParamSpecInt64; +typedef struct _GParamSpecUInt64 GParamSpecUInt64; +typedef struct _GParamSpecUnichar GParamSpecUnichar; +typedef struct _GParamSpecEnum GParamSpecEnum; +typedef struct _GParamSpecFlags GParamSpecFlags; +typedef struct _GParamSpecFloat GParamSpecFloat; +typedef struct _GParamSpecDouble GParamSpecDouble; +typedef struct _GParamSpecString GParamSpecString; +typedef struct _GParamSpecParam GParamSpecParam; +typedef struct _GParamSpecBoxed GParamSpecBoxed; +typedef struct _GParamSpecPointer GParamSpecPointer; +typedef struct _GParamSpecValueArray GParamSpecValueArray; +typedef struct _GParamSpecObject GParamSpecObject; +typedef struct _GParamSpecOverride GParamSpecOverride; +typedef struct _GParamSpecGType GParamSpecGType; +typedef struct _GParamSpecVariant GParamSpecVariant; + +/** + * GParamSpecChar: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for character properties. + */ +struct _GParamSpecChar +{ + GParamSpec parent_instance; + + gint8 minimum; + gint8 maximum; + gint8 default_value; +}; +/** + * GParamSpecUChar: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for unsigned character properties. + */ +struct _GParamSpecUChar +{ + GParamSpec parent_instance; + + guint8 minimum; + guint8 maximum; + guint8 default_value; +}; +/** + * GParamSpecBoolean: + * @parent_instance: private #GParamSpec portion + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for boolean properties. + */ +struct _GParamSpecBoolean +{ + GParamSpec parent_instance; + + gboolean default_value; +}; +/** + * GParamSpecInt: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for integer properties. + */ +struct _GParamSpecInt +{ + GParamSpec parent_instance; + + gint minimum; + gint maximum; + gint default_value; +}; +/** + * GParamSpecUInt: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for unsigned integer properties. + */ +struct _GParamSpecUInt +{ + GParamSpec parent_instance; + + guint minimum; + guint maximum; + guint default_value; +}; +/** + * GParamSpecLong: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for long integer properties. + */ +struct _GParamSpecLong +{ + GParamSpec parent_instance; + + glong minimum; + glong maximum; + glong default_value; +}; +/** + * GParamSpecULong: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for unsigned long integer properties. + */ +struct _GParamSpecULong +{ + GParamSpec parent_instance; + + gulong minimum; + gulong maximum; + gulong default_value; +}; +/** + * GParamSpecInt64: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for 64bit integer properties. + */ +struct _GParamSpecInt64 +{ + GParamSpec parent_instance; + + gint64 minimum; + gint64 maximum; + gint64 default_value; +}; +/** + * GParamSpecUInt64: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for unsigned 64bit integer properties. + */ +struct _GParamSpecUInt64 +{ + GParamSpec parent_instance; + + guint64 minimum; + guint64 maximum; + guint64 default_value; +}; +/** + * GParamSpecUnichar: + * @parent_instance: private #GParamSpec portion + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for unichar (unsigned integer) properties. + */ +struct _GParamSpecUnichar +{ + GParamSpec parent_instance; + + gunichar default_value; +}; +/** + * GParamSpecEnum: + * @parent_instance: private #GParamSpec portion + * @enum_class: the #GEnumClass for the enum + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for enum + * properties. + */ +struct _GParamSpecEnum +{ + GParamSpec parent_instance; + + GEnumClass *enum_class; + gint default_value; +}; +/** + * GParamSpecFlags: + * @parent_instance: private #GParamSpec portion + * @flags_class: the #GFlagsClass for the flags + * @default_value: default value for the property specified + * + * A #GParamSpec derived structure that contains the meta data for flags + * properties. + */ +struct _GParamSpecFlags +{ + GParamSpec parent_instance; + + GFlagsClass *flags_class; + guint default_value; +}; +/** + * GParamSpecFloat: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * @epsilon: values closer than @epsilon will be considered identical + * by g_param_values_cmp(); the default value is 1e-30. + * + * A #GParamSpec derived structure that contains the meta data for float properties. + */ +struct _GParamSpecFloat +{ + GParamSpec parent_instance; + + gfloat minimum; + gfloat maximum; + gfloat default_value; + gfloat epsilon; +}; +/** + * GParamSpecDouble: + * @parent_instance: private #GParamSpec portion + * @minimum: minimum value for the property specified + * @maximum: maximum value for the property specified + * @default_value: default value for the property specified + * @epsilon: values closer than @epsilon will be considered identical + * by g_param_values_cmp(); the default value is 1e-90. + * + * A #GParamSpec derived structure that contains the meta data for double properties. + */ +struct _GParamSpecDouble +{ + GParamSpec parent_instance; + + gdouble minimum; + gdouble maximum; + gdouble default_value; + gdouble epsilon; +}; +/** + * GParamSpecString: + * @parent_instance: private #GParamSpec portion + * @default_value: default value for the property specified + * @cset_first: a string containing the allowed values for the first byte + * @cset_nth: a string containing the allowed values for the subsequent bytes + * @substitutor: the replacement byte for bytes which don't match @cset_first or @cset_nth. + * @null_fold_if_empty: replace empty string by %NULL + * @ensure_non_null: replace %NULL strings by an empty string + * + * A #GParamSpec derived structure that contains the meta data for string + * properties. + */ +struct _GParamSpecString +{ + GParamSpec parent_instance; + + gchar *default_value; + gchar *cset_first; + gchar *cset_nth; + gchar substitutor; + guint null_fold_if_empty : 1; + guint ensure_non_null : 1; +}; +/** + * GParamSpecParam: + * @parent_instance: private #GParamSpec portion + * + * A #GParamSpec derived structure that contains the meta data for %G_TYPE_PARAM + * properties. + */ +struct _GParamSpecParam +{ + GParamSpec parent_instance; +}; +/** + * GParamSpecBoxed: + * @parent_instance: private #GParamSpec portion + * + * A #GParamSpec derived structure that contains the meta data for boxed properties. + */ +struct _GParamSpecBoxed +{ + GParamSpec parent_instance; +}; +/** + * GParamSpecPointer: + * @parent_instance: private #GParamSpec portion + * + * A #GParamSpec derived structure that contains the meta data for pointer properties. + */ +struct _GParamSpecPointer +{ + GParamSpec parent_instance; +}; +/** + * GParamSpecValueArray: + * @parent_instance: private #GParamSpec portion + * @element_spec: a #GParamSpec describing the elements contained in arrays of this property, may be %NULL + * @fixed_n_elements: if greater than 0, arrays of this property will always have this many elements + * + * A #GParamSpec derived structure that contains the meta data for #GValueArray properties. + */ +struct _GParamSpecValueArray +{ + GParamSpec parent_instance; + GParamSpec *element_spec; + guint fixed_n_elements; +}; +/** + * GParamSpecObject: + * @parent_instance: private #GParamSpec portion + * + * A #GParamSpec derived structure that contains the meta data for object properties. + */ +struct _GParamSpecObject +{ + GParamSpec parent_instance; +}; +/** + * GParamSpecOverride: + * + * A #GParamSpec derived structure that redirects operations to + * other types of #GParamSpec. + * + * All operations other than getting or setting the value are redirected, + * including accessing the nick and blurb, validating a value, and so + * forth. + * + * See g_param_spec_get_redirect_target() for retrieving the overridden + * property. #GParamSpecOverride is used in implementing + * g_object_class_override_property(), and will not be directly useful + * unless you are implementing a new base type similar to GObject. + * + * Since: 2.4 + */ +struct _GParamSpecOverride +{ + /*< private >*/ + GParamSpec parent_instance; + GParamSpec *overridden; +}; +/** + * GParamSpecGType: + * @parent_instance: private #GParamSpec portion + * @is_a_type: a #GType whose subtypes can occur as values + * + * A #GParamSpec derived structure that contains the meta data for #GType properties. + * + * Since: 2.10 + */ +struct _GParamSpecGType +{ + GParamSpec parent_instance; + GType is_a_type; +}; +/** + * GParamSpecVariant: + * @parent_instance: private #GParamSpec portion + * @type: a #GVariantType, or %NULL + * @default_value: a #GVariant, or %NULL + * + * A #GParamSpec derived structure that contains the meta data for #GVariant properties. + * + * When comparing values with g_param_values_cmp(), scalar values with the same + * type will be compared with g_variant_compare(). Other non-%NULL variants will + * be checked for equality with g_variant_equal(), and their sort order is + * otherwise undefined. %NULL is ordered before non-%NULL variants. Two %NULL + * values compare equal. + * + * Since: 2.26 + */ +struct _GParamSpecVariant +{ + GParamSpec parent_instance; + GVariantType *type; + GVariant *default_value; + + /*< private >*/ + gpointer padding[4]; +}; + +/* --- GParamSpec prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_char (const gchar *name, + const gchar *nick, + const gchar *blurb, + gint8 minimum, + gint8 maximum, + gint8 default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_uchar (const gchar *name, + const gchar *nick, + const gchar *blurb, + guint8 minimum, + guint8 maximum, + guint8 default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_boolean (const gchar *name, + const gchar *nick, + const gchar *blurb, + gboolean default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_int (const gchar *name, + const gchar *nick, + const gchar *blurb, + gint minimum, + gint maximum, + gint default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_uint (const gchar *name, + const gchar *nick, + const gchar *blurb, + guint minimum, + guint maximum, + guint default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_long (const gchar *name, + const gchar *nick, + const gchar *blurb, + glong minimum, + glong maximum, + glong default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_ulong (const gchar *name, + const gchar *nick, + const gchar *blurb, + gulong minimum, + gulong maximum, + gulong default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_int64 (const gchar *name, + const gchar *nick, + const gchar *blurb, + gint64 minimum, + gint64 maximum, + gint64 default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_uint64 (const gchar *name, + const gchar *nick, + const gchar *blurb, + guint64 minimum, + guint64 maximum, + guint64 default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_unichar (const gchar *name, + const gchar *nick, + const gchar *blurb, + gunichar default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_enum (const gchar *name, + const gchar *nick, + const gchar *blurb, + GType enum_type, + gint default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_flags (const gchar *name, + const gchar *nick, + const gchar *blurb, + GType flags_type, + guint default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_float (const gchar *name, + const gchar *nick, + const gchar *blurb, + gfloat minimum, + gfloat maximum, + gfloat default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_double (const gchar *name, + const gchar *nick, + const gchar *blurb, + gdouble minimum, + gdouble maximum, + gdouble default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_string (const gchar *name, + const gchar *nick, + const gchar *blurb, + const gchar *default_value, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_param (const gchar *name, + const gchar *nick, + const gchar *blurb, + GType param_type, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_boxed (const gchar *name, + const gchar *nick, + const gchar *blurb, + GType boxed_type, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_pointer (const gchar *name, + const gchar *nick, + const gchar *blurb, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_value_array (const gchar *name, + const gchar *nick, + const gchar *blurb, + GParamSpec *element_spec, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_object (const gchar *name, + const gchar *nick, + const gchar *blurb, + GType object_type, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_override (const gchar *name, + GParamSpec *overridden); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_gtype (const gchar *name, + const gchar *nick, + const gchar *blurb, + GType is_a_type, + GParamFlags flags); +GLIB_AVAILABLE_IN_ALL +GParamSpec* g_param_spec_variant (const gchar *name, + const gchar *nick, + const gchar *blurb, + const GVariantType *type, + GVariant *default_value, + GParamFlags flags); + +/* --- internal --- */ +/* We prefix variable declarations so they can + * properly get exported in windows dlls. + */ +#ifndef GOBJECT_VAR +# ifdef G_PLATFORM_WIN32 +# ifdef GOBJECT_STATIC_COMPILATION +# define GOBJECT_VAR extern +# else /* !GOBJECT_STATIC_COMPILATION */ +# ifdef GOBJECT_COMPILATION +# ifdef DLL_EXPORT +# define GOBJECT_VAR extern __declspec(dllexport) +# else /* !DLL_EXPORT */ +# define GOBJECT_VAR extern +# endif /* !DLL_EXPORT */ +# else /* !GOBJECT_COMPILATION */ +# define GOBJECT_VAR extern __declspec(dllimport) +# endif /* !GOBJECT_COMPILATION */ +# endif /* !GOBJECT_STATIC_COMPILATION */ +# else /* !G_PLATFORM_WIN32 */ +# define GOBJECT_VAR _GLIB_EXTERN +# endif /* !G_PLATFORM_WIN32 */ +#endif /* GOBJECT_VAR */ + +GOBJECT_VAR GType *g_param_spec_types; + +G_END_DECLS + +#endif /* __G_PARAMSPECS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsignal.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsignal.h new file mode 100644 index 0000000..0d93f26 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsignal.h @@ -0,0 +1,647 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2000-2001 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_SIGNAL_H__ +#define __G_SIGNAL_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include +#include + +G_BEGIN_DECLS + +/* --- typedefs --- */ +typedef struct _GSignalQuery GSignalQuery; +typedef struct _GSignalInvocationHint GSignalInvocationHint; +/** + * GSignalCMarshaller: + * + * This is the signature of marshaller functions, required to marshall + * arrays of parameter values to signal emissions into C language callback + * invocations. + * + * It is merely an alias to #GClosureMarshal since the #GClosure mechanism + * takes over responsibility of actual function invocation for the signal + * system. + */ +typedef GClosureMarshal GSignalCMarshaller; +/** + * GSignalCVaMarshaller: + * + * This is the signature of va_list marshaller functions, an optional + * marshaller that can be used in some situations to avoid + * marshalling the signal argument into GValues. + */ +typedef GVaClosureMarshal GSignalCVaMarshaller; +/** + * GSignalEmissionHook: + * @ihint: Signal invocation hint, see #GSignalInvocationHint. + * @n_param_values: the number of parameters to the function, including + * the instance on which the signal was emitted. + * @param_values: (array length=n_param_values): the instance on which + * the signal was emitted, followed by the parameters of the emission. + * @user_data: user data associated with the hook. + * + * A simple function pointer to get invoked when the signal is emitted. + * + * Emission hooks allow you to tie a hook to the signal type, so that it will + * trap all emissions of that signal, from any object. + * + * You may not attach these to signals created with the %G_SIGNAL_NO_HOOKS flag. + * + * Returns: whether it wants to stay connected. If it returns %FALSE, the signal + * hook is disconnected (and destroyed). + */ +typedef gboolean (*GSignalEmissionHook) (GSignalInvocationHint *ihint, + guint n_param_values, + const GValue *param_values, + gpointer user_data); +/** + * GSignalAccumulator: + * @ihint: Signal invocation hint, see #GSignalInvocationHint. + * @return_accu: Accumulator to collect callback return values in, this + * is the return value of the current signal emission. + * @handler_return: A #GValue holding the return value of the signal handler. + * @user_data: Callback data that was specified when creating the signal. + * + * The signal accumulator is a special callback function that can be used + * to collect return values of the various callbacks that are called + * during a signal emission. + * + * The signal accumulator is specified at signal creation time, if it is + * left %NULL, no accumulation of callback return values is performed. + * The return value of signal emissions is then the value returned by the + * last callback. + * + * Returns: The accumulator function returns whether the signal emission + * should be aborted. Returning %TRUE will continue with + * the signal emission. Returning %FALSE will abort the current emission. + * Since 2.62, returning %FALSE will skip to the CLEANUP stage. In this case, + * emission will occur as normal in the CLEANUP stage and the handler's + * return value will be accumulated. + */ +typedef gboolean (*GSignalAccumulator) (GSignalInvocationHint *ihint, + GValue *return_accu, + const GValue *handler_return, + gpointer user_data); + + +/* --- run, match and connect types --- */ +/** + * GSignalFlags: + * @G_SIGNAL_RUN_FIRST: Invoke the object method handler in the first emission stage. + * @G_SIGNAL_RUN_LAST: Invoke the object method handler in the third emission stage. + * @G_SIGNAL_RUN_CLEANUP: Invoke the object method handler in the last emission stage. + * @G_SIGNAL_NO_RECURSE: Signals being emitted for an object while currently being in + * emission for this very object will not be emitted recursively, + * but instead cause the first emission to be restarted. + * @G_SIGNAL_DETAILED: This signal supports "::detail" appendices to the signal name + * upon handler connections and emissions. + * @G_SIGNAL_ACTION: Action signals are signals that may freely be emitted on alive + * objects from user code via g_signal_emit() and friends, without + * the need of being embedded into extra code that performs pre or + * post emission adjustments on the object. They can also be thought + * of as object methods which can be called generically by + * third-party code. + * @G_SIGNAL_NO_HOOKS: No emissions hooks are supported for this signal. + * @G_SIGNAL_MUST_COLLECT: Varargs signal emission will always collect the + * arguments, even if there are no signal handlers connected. Since 2.30. + * @G_SIGNAL_DEPRECATED: The signal is deprecated and will be removed + * in a future version. A warning will be generated if it is connected while + * running with G_ENABLE_DIAGNOSTIC=1. Since 2.32. + * @G_SIGNAL_ACCUMULATOR_FIRST_RUN: Only used in #GSignalAccumulator accumulator + * functions for the #GSignalInvocationHint::run_type field to mark the first + * call to the accumulator function for a signal emission. Since 2.68. + * + * The signal flags are used to specify a signal's behaviour. + */ +typedef enum +{ + G_SIGNAL_RUN_FIRST = 1 << 0, + G_SIGNAL_RUN_LAST = 1 << 1, + G_SIGNAL_RUN_CLEANUP = 1 << 2, + G_SIGNAL_NO_RECURSE = 1 << 3, + G_SIGNAL_DETAILED = 1 << 4, + G_SIGNAL_ACTION = 1 << 5, + G_SIGNAL_NO_HOOKS = 1 << 6, + G_SIGNAL_MUST_COLLECT = 1 << 7, + G_SIGNAL_DEPRECATED = 1 << 8, + /* normal signal flags until 1 << 16 */ + G_SIGNAL_ACCUMULATOR_FIRST_RUN = 1 << 17, +} GSignalFlags; +/** + * G_SIGNAL_FLAGS_MASK: + * + * A mask for all #GSignalFlags bits. + */ +#define G_SIGNAL_FLAGS_MASK 0x1ff +/** + * GConnectFlags: + * @G_CONNECT_DEFAULT: Default behaviour (no special flags). Since: 2.74 + * @G_CONNECT_AFTER: If set, the handler should be called after the + * default handler of the signal. Normally, the handler is called before + * the default handler. + * @G_CONNECT_SWAPPED: If set, the instance and data should be swapped when + * calling the handler; see g_signal_connect_swapped() for an example. + * + * The connection flags are used to specify the behaviour of a signal's + * connection. + */ +typedef enum +{ + G_CONNECT_DEFAULT GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_CONNECT_AFTER = 1 << 0, + G_CONNECT_SWAPPED = 1 << 1 +} GConnectFlags; +/** + * GSignalMatchType: + * @G_SIGNAL_MATCH_ID: The signal id must be equal. + * @G_SIGNAL_MATCH_DETAIL: The signal detail must be equal. + * @G_SIGNAL_MATCH_CLOSURE: The closure must be the same. + * @G_SIGNAL_MATCH_FUNC: The C closure callback must be the same. + * @G_SIGNAL_MATCH_DATA: The closure data must be the same. + * @G_SIGNAL_MATCH_UNBLOCKED: Only unblocked signals may be matched. + * + * The match types specify what g_signal_handlers_block_matched(), + * g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched() + * match signals by. + */ +typedef enum +{ + G_SIGNAL_MATCH_ID = 1 << 0, + G_SIGNAL_MATCH_DETAIL = 1 << 1, + G_SIGNAL_MATCH_CLOSURE = 1 << 2, + G_SIGNAL_MATCH_FUNC = 1 << 3, + G_SIGNAL_MATCH_DATA = 1 << 4, + G_SIGNAL_MATCH_UNBLOCKED = 1 << 5 +} GSignalMatchType; +/** + * G_SIGNAL_MATCH_MASK: + * + * A mask for all #GSignalMatchType bits. + */ +#define G_SIGNAL_MATCH_MASK 0x3f +/** + * G_SIGNAL_TYPE_STATIC_SCOPE: + * + * This macro flags signal argument types for which the signal system may + * assume that instances thereof remain persistent across all signal emissions + * they are used in. This is only useful for non ref-counted, value-copy types. + * + * To flag a signal argument in this way, add `| G_SIGNAL_TYPE_STATIC_SCOPE` + * to the corresponding argument of g_signal_new(). + * |[ + * g_signal_new ("size_request", + * G_TYPE_FROM_CLASS (gobject_class), + * G_SIGNAL_RUN_FIRST, + * G_STRUCT_OFFSET (GtkWidgetClass, size_request), + * NULL, NULL, + * _gtk_marshal_VOID__BOXED, + * G_TYPE_NONE, 1, + * GTK_TYPE_REQUISITION | G_SIGNAL_TYPE_STATIC_SCOPE); + * ]| + */ +#define G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT) + + +/* --- signal information --- */ +/** + * GSignalInvocationHint: + * @signal_id: The signal id of the signal invoking the callback + * @detail: The detail passed on for this emission + * @run_type: The stage the signal emission is currently in, this + * field will contain one of %G_SIGNAL_RUN_FIRST, + * %G_SIGNAL_RUN_LAST or %G_SIGNAL_RUN_CLEANUP and %G_SIGNAL_ACCUMULATOR_FIRST_RUN. + * %G_SIGNAL_ACCUMULATOR_FIRST_RUN is only set for the first run of the accumulator + * function for a signal emission. + * + * The #GSignalInvocationHint structure is used to pass on additional information + * to callbacks during a signal emission. + */ +struct _GSignalInvocationHint +{ + guint signal_id; + GQuark detail; + GSignalFlags run_type; +}; +/** + * GSignalQuery: + * @signal_id: The signal id of the signal being queried, or 0 if the + * signal to be queried was unknown. + * @signal_name: The signal name. + * @itype: The interface/instance type that this signal can be emitted for. + * @signal_flags: The signal flags as passed in to g_signal_new(). + * @return_type: The return type for user callbacks. + * @n_params: The number of parameters that user callbacks take. + * @param_types: (array length=n_params): The individual parameter types for + * user callbacks, note that the effective callback signature is: + * |[ + * @return_type callback (#gpointer data1, + * [param_types param_names,] + * gpointer data2); + * ]| + * + * A structure holding in-depth information for a specific signal. + * + * See also: g_signal_query() + */ +struct _GSignalQuery +{ + guint signal_id; + const gchar *signal_name; + GType itype; + GSignalFlags signal_flags; + GType return_type; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */ + guint n_params; + const GType *param_types; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */ +}; + + +/* --- signals --- */ +GLIB_AVAILABLE_IN_ALL +guint g_signal_newv (const gchar *signal_name, + GType itype, + GSignalFlags signal_flags, + GClosure *class_closure, + GSignalAccumulator accumulator, + gpointer accu_data, + GSignalCMarshaller c_marshaller, + GType return_type, + guint n_params, + GType *param_types); +GLIB_AVAILABLE_IN_ALL +guint g_signal_new_valist (const gchar *signal_name, + GType itype, + GSignalFlags signal_flags, + GClosure *class_closure, + GSignalAccumulator accumulator, + gpointer accu_data, + GSignalCMarshaller c_marshaller, + GType return_type, + guint n_params, + va_list args); +GLIB_AVAILABLE_IN_ALL +guint g_signal_new (const gchar *signal_name, + GType itype, + GSignalFlags signal_flags, + guint class_offset, + GSignalAccumulator accumulator, + gpointer accu_data, + GSignalCMarshaller c_marshaller, + GType return_type, + guint n_params, + ...); +GLIB_AVAILABLE_IN_ALL +guint g_signal_new_class_handler (const gchar *signal_name, + GType itype, + GSignalFlags signal_flags, + GCallback class_handler, + GSignalAccumulator accumulator, + gpointer accu_data, + GSignalCMarshaller c_marshaller, + GType return_type, + guint n_params, + ...); +GLIB_AVAILABLE_IN_ALL +void g_signal_set_va_marshaller (guint signal_id, + GType instance_type, + GSignalCVaMarshaller va_marshaller); + +GLIB_AVAILABLE_IN_ALL +void g_signal_emitv (const GValue *instance_and_params, + guint signal_id, + GQuark detail, + GValue *return_value); +GLIB_AVAILABLE_IN_ALL +void g_signal_emit_valist (gpointer instance, + guint signal_id, + GQuark detail, + va_list var_args); +GLIB_AVAILABLE_IN_ALL +void g_signal_emit (gpointer instance, + guint signal_id, + GQuark detail, + ...); +GLIB_AVAILABLE_IN_ALL +void g_signal_emit_by_name (gpointer instance, + const gchar *detailed_signal, + ...); +GLIB_AVAILABLE_IN_ALL +guint g_signal_lookup (const gchar *name, + GType itype); +GLIB_AVAILABLE_IN_ALL +const gchar * g_signal_name (guint signal_id); +GLIB_AVAILABLE_IN_ALL +void g_signal_query (guint signal_id, + GSignalQuery *query); +GLIB_AVAILABLE_IN_ALL +guint* g_signal_list_ids (GType itype, + guint *n_ids); +GLIB_AVAILABLE_IN_2_66 +gboolean g_signal_is_valid_name (const gchar *name); +GLIB_AVAILABLE_IN_ALL +gboolean g_signal_parse_name (const gchar *detailed_signal, + GType itype, + guint *signal_id_p, + GQuark *detail_p, + gboolean force_detail_quark); +GLIB_AVAILABLE_IN_ALL +GSignalInvocationHint* g_signal_get_invocation_hint (gpointer instance); + + +/* --- signal emissions --- */ +GLIB_AVAILABLE_IN_ALL +void g_signal_stop_emission (gpointer instance, + guint signal_id, + GQuark detail); +GLIB_AVAILABLE_IN_ALL +void g_signal_stop_emission_by_name (gpointer instance, + const gchar *detailed_signal); +GLIB_AVAILABLE_IN_ALL +gulong g_signal_add_emission_hook (guint signal_id, + GQuark detail, + GSignalEmissionHook hook_func, + gpointer hook_data, + GDestroyNotify data_destroy); +GLIB_AVAILABLE_IN_ALL +void g_signal_remove_emission_hook (guint signal_id, + gulong hook_id); + + +/* --- signal handlers --- */ +GLIB_AVAILABLE_IN_ALL +gboolean g_signal_has_handler_pending (gpointer instance, + guint signal_id, + GQuark detail, + gboolean may_be_blocked); +GLIB_AVAILABLE_IN_ALL +gulong g_signal_connect_closure_by_id (gpointer instance, + guint signal_id, + GQuark detail, + GClosure *closure, + gboolean after); +GLIB_AVAILABLE_IN_ALL +gulong g_signal_connect_closure (gpointer instance, + const gchar *detailed_signal, + GClosure *closure, + gboolean after); +GLIB_AVAILABLE_IN_ALL +gulong g_signal_connect_data (gpointer instance, + const gchar *detailed_signal, + GCallback c_handler, + gpointer data, + GClosureNotify destroy_data, + GConnectFlags connect_flags); +GLIB_AVAILABLE_IN_ALL +void g_signal_handler_block (gpointer instance, + gulong handler_id); +GLIB_AVAILABLE_IN_ALL +void g_signal_handler_unblock (gpointer instance, + gulong handler_id); +GLIB_AVAILABLE_IN_ALL +void g_signal_handler_disconnect (gpointer instance, + gulong handler_id); +GLIB_AVAILABLE_IN_ALL +gboolean g_signal_handler_is_connected (gpointer instance, + gulong handler_id); +GLIB_AVAILABLE_IN_ALL +gulong g_signal_handler_find (gpointer instance, + GSignalMatchType mask, + guint signal_id, + GQuark detail, + GClosure *closure, + gpointer func, + gpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_signal_handlers_block_matched (gpointer instance, + GSignalMatchType mask, + guint signal_id, + GQuark detail, + GClosure *closure, + gpointer func, + gpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_signal_handlers_unblock_matched (gpointer instance, + GSignalMatchType mask, + guint signal_id, + GQuark detail, + GClosure *closure, + gpointer func, + gpointer data); +GLIB_AVAILABLE_IN_ALL +guint g_signal_handlers_disconnect_matched (gpointer instance, + GSignalMatchType mask, + guint signal_id, + GQuark detail, + GClosure *closure, + gpointer func, + gpointer data); + +GLIB_AVAILABLE_IN_2_62 +void g_clear_signal_handler (gulong *handler_id_ptr, + gpointer instance); + +#define g_clear_signal_handler(handler_id_ptr, instance) \ + G_STMT_START { \ + gpointer const _instance = (instance); \ + gulong *const _handler_id_ptr = (handler_id_ptr); \ + const gulong _handler_id = *_handler_id_ptr; \ + \ + if (_handler_id > 0) \ + { \ + *_handler_id_ptr = 0; \ + g_signal_handler_disconnect (_instance, _handler_id); \ + } \ + } G_STMT_END \ + GLIB_AVAILABLE_MACRO_IN_2_62 + +/* --- overriding and chaining --- */ +GLIB_AVAILABLE_IN_ALL +void g_signal_override_class_closure (guint signal_id, + GType instance_type, + GClosure *class_closure); +GLIB_AVAILABLE_IN_ALL +void g_signal_override_class_handler (const gchar *signal_name, + GType instance_type, + GCallback class_handler); +GLIB_AVAILABLE_IN_ALL +void g_signal_chain_from_overridden (const GValue *instance_and_params, + GValue *return_value); +GLIB_AVAILABLE_IN_ALL +void g_signal_chain_from_overridden_handler (gpointer instance, + ...); + + +/* --- convenience --- */ +/** + * g_signal_connect: + * @instance: the instance to connect to. + * @detailed_signal: a string of the form "signal-name::detail". + * @c_handler: the #GCallback to connect. + * @data: data to pass to @c_handler calls. + * + * Connects a #GCallback function to a signal for a particular object. + * + * The handler will be called synchronously, before the default handler of the signal. g_signal_emit() will not return control until all handlers are called. + * + * See [memory management of signal handlers][signal-memory-management] for + * details on how to handle the return value and memory management of @data. + * + * Returns: the handler ID, of type #gulong (always greater than 0 for successful connections) + */ +/* Intentionally not using G_CONNECT_DEFAULT here to avoid deprecation + * warnings with older GLIB_VERSION_MAX_ALLOWED */ +#define g_signal_connect(instance, detailed_signal, c_handler, data) \ + g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0) +/** + * g_signal_connect_after: + * @instance: the instance to connect to. + * @detailed_signal: a string of the form "signal-name::detail". + * @c_handler: the #GCallback to connect. + * @data: data to pass to @c_handler calls. + * + * Connects a #GCallback function to a signal for a particular object. + * + * The handler will be called synchronously, after the default handler of the signal. + * + * Returns: the handler ID, of type #gulong (always greater than 0 for successful connections) + */ +#define g_signal_connect_after(instance, detailed_signal, c_handler, data) \ + g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, G_CONNECT_AFTER) +/** + * g_signal_connect_swapped: + * @instance: the instance to connect to. + * @detailed_signal: a string of the form "signal-name::detail". + * @c_handler: the #GCallback to connect. + * @data: data to pass to @c_handler calls. + * + * Connects a #GCallback function to a signal for a particular object. + * + * The instance on which the signal is emitted and @data will be swapped when + * calling the handler. This is useful when calling pre-existing functions to + * operate purely on the @data, rather than the @instance: swapping the + * parameters avoids the need to write a wrapper function. + * + * For example, this allows the shorter code: + * |[ + * g_signal_connect_swapped (button, "clicked", + * (GCallback) gtk_widget_hide, other_widget); + * ]| + * + * Rather than the cumbersome: + * |[ + * static void + * button_clicked_cb (GtkButton *button, GtkWidget *other_widget) + * { + * gtk_widget_hide (other_widget); + * } + * + * ... + * + * g_signal_connect (button, "clicked", + * (GCallback) button_clicked_cb, other_widget); + * ]| + * + * Returns: the handler ID, of type #gulong (always greater than 0 for successful connections) + */ +#define g_signal_connect_swapped(instance, detailed_signal, c_handler, data) \ + g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, G_CONNECT_SWAPPED) +/** + * g_signal_handlers_disconnect_by_func: + * @instance: The instance to remove handlers from. + * @func: The C closure callback of the handlers (useless for non-C closures). + * @data: The closure data of the handlers' closures. + * + * Disconnects all handlers on an instance that match @func and @data. + * + * Returns: The number of handlers that matched. + */ +#define g_signal_handlers_disconnect_by_func(instance, func, data) \ + g_signal_handlers_disconnect_matched ((instance), \ + (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), \ + 0, 0, NULL, (func), (data)) + +/** + * g_signal_handlers_disconnect_by_data: + * @instance: The instance to remove handlers from + * @data: the closure data of the handlers' closures + * + * Disconnects all handlers on an instance that match @data. + * + * Returns: The number of handlers that matched. + * + * Since: 2.32 + */ +#define g_signal_handlers_disconnect_by_data(instance, data) \ + g_signal_handlers_disconnect_matched ((instance), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, (data)) + +/** + * g_signal_handlers_block_by_func: + * @instance: The instance to block handlers from. + * @func: The C closure callback of the handlers (useless for non-C closures). + * @data: The closure data of the handlers' closures. + * + * Blocks all handlers on an instance that match @func and @data. + * + * Returns: The number of handlers that matched. + */ +#define g_signal_handlers_block_by_func(instance, func, data) \ + g_signal_handlers_block_matched ((instance), \ + (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), \ + 0, 0, NULL, (func), (data)) +/** + * g_signal_handlers_unblock_by_func: + * @instance: The instance to unblock handlers from. + * @func: The C closure callback of the handlers (useless for non-C closures). + * @data: The closure data of the handlers' closures. + * + * Unblocks all handlers on an instance that match @func and @data. + * + * Returns: The number of handlers that matched. + */ +#define g_signal_handlers_unblock_by_func(instance, func, data) \ + g_signal_handlers_unblock_matched ((instance), \ + (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), \ + 0, 0, NULL, (func), (data)) + + +GLIB_AVAILABLE_IN_ALL +gboolean g_signal_accumulator_true_handled (GSignalInvocationHint *ihint, + GValue *return_accu, + const GValue *handler_return, + gpointer dummy); + +GLIB_AVAILABLE_IN_ALL +gboolean g_signal_accumulator_first_wins (GSignalInvocationHint *ihint, + GValue *return_accu, + const GValue *handler_return, + gpointer dummy); + +/*< private >*/ +GLIB_AVAILABLE_IN_ALL +void g_signal_handlers_destroy (gpointer instance); +void _g_signals_destroy (GType itype); + +G_END_DECLS + +#endif /* __G_SIGNAL_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsignalgroup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsignalgroup.h new file mode 100644 index 0000000..ec93bdd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsignalgroup.h @@ -0,0 +1,98 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * + * Copyright (C) 2015-2022 Christian Hergert + * Copyright (C) 2015 Garrett Regier + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#ifndef __G_SIGNAL_GROUP_H__ +#define __G_SIGNAL_GROUP_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include +#include + +G_BEGIN_DECLS + +#define G_SIGNAL_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SIGNAL_GROUP, GSignalGroup)) +#define G_IS_SIGNAL_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SIGNAL_GROUP)) +#define G_TYPE_SIGNAL_GROUP (g_signal_group_get_type()) + +/** + * GSignalGroup: + * + * #GSignalGroup is an opaque structure whose members + * cannot be accessed directly. + * + * Since: 2.72 + */ +typedef struct _GSignalGroup GSignalGroup; + +GLIB_AVAILABLE_IN_2_72 +GType g_signal_group_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_2_72 +GSignalGroup *g_signal_group_new (GType target_type); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_set_target (GSignalGroup *self, + gpointer target); +GLIB_AVAILABLE_IN_2_72 +gpointer g_signal_group_dup_target (GSignalGroup *self); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_block (GSignalGroup *self); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_unblock (GSignalGroup *self); +GLIB_AVAILABLE_IN_2_74 +void g_signal_group_connect_closure (GSignalGroup *self, + const gchar *detailed_signal, + GClosure *closure, + gboolean after); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_connect_object (GSignalGroup *self, + const gchar *detailed_signal, + GCallback c_handler, + gpointer object, + GConnectFlags flags); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_connect_data (GSignalGroup *self, + const gchar *detailed_signal, + GCallback c_handler, + gpointer data, + GClosureNotify notify, + GConnectFlags flags); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_connect (GSignalGroup *self, + const gchar *detailed_signal, + GCallback c_handler, + gpointer data); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_connect_after (GSignalGroup *self, + const gchar *detailed_signal, + GCallback c_handler, + gpointer data); +GLIB_AVAILABLE_IN_2_72 +void g_signal_group_connect_swapped (GSignalGroup *self, + const gchar *detailed_signal, + GCallback c_handler, + gpointer data); + +G_END_DECLS + +#endif /* __G_SIGNAL_GROUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsourceclosure.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsourceclosure.h new file mode 100644 index 0000000..9a14252 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gsourceclosure.h @@ -0,0 +1,40 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2001 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_SOURCECLOSURE_H__ +#define __G_SOURCECLOSURE_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +GLIB_AVAILABLE_IN_ALL +void g_source_set_closure (GSource *source, + GClosure *closure); + +GLIB_AVAILABLE_IN_ALL +void g_source_set_dummy_callback (GSource *source); + +G_END_DECLS + +#endif /* __G_SOURCECLOSURE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtype.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtype.h new file mode 100644 index 0000000..3f2afb3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtype.h @@ -0,0 +1,2562 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_TYPE_H__ +#define __G_TYPE_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* Basic Type Macros + */ +/** + * G_TYPE_FUNDAMENTAL: + * @type: A #GType value. + * + * The fundamental type which is the ancestor of @type. + * + * Fundamental types are types that serve as ultimate bases for the derived types, + * thus they are the roots of distinct inheritance hierarchies. + */ +#define G_TYPE_FUNDAMENTAL(type) (g_type_fundamental (type)) +/** + * G_TYPE_FUNDAMENTAL_MAX: + * + * An integer constant that represents the number of identifiers reserved + * for types that are assigned at compile-time. + */ +#define G_TYPE_FUNDAMENTAL_MAX (255 << G_TYPE_FUNDAMENTAL_SHIFT) + +/* Constant fundamental types, + */ +/** + * G_TYPE_INVALID: + * + * An invalid #GType used as error return value in some functions which return + * a #GType. + */ +#define G_TYPE_INVALID G_TYPE_MAKE_FUNDAMENTAL (0) +/** + * G_TYPE_NONE: + * + * A fundamental type which is used as a replacement for the C + * void return type. + */ +#define G_TYPE_NONE G_TYPE_MAKE_FUNDAMENTAL (1) +/** + * G_TYPE_INTERFACE: + * + * The fundamental type from which all interfaces are derived. + */ +#define G_TYPE_INTERFACE G_TYPE_MAKE_FUNDAMENTAL (2) +/** + * G_TYPE_CHAR: + * + * The fundamental type corresponding to #gchar. + * + * The type designated by %G_TYPE_CHAR is unconditionally an 8-bit signed integer. + * This may or may not be the same type a the C type "gchar". + */ +#define G_TYPE_CHAR G_TYPE_MAKE_FUNDAMENTAL (3) +/** + * G_TYPE_UCHAR: + * + * The fundamental type corresponding to #guchar. + */ +#define G_TYPE_UCHAR G_TYPE_MAKE_FUNDAMENTAL (4) +/** + * G_TYPE_BOOLEAN: + * + * The fundamental type corresponding to #gboolean. + */ +#define G_TYPE_BOOLEAN G_TYPE_MAKE_FUNDAMENTAL (5) +/** + * G_TYPE_INT: + * + * The fundamental type corresponding to #gint. + */ +#define G_TYPE_INT G_TYPE_MAKE_FUNDAMENTAL (6) +/** + * G_TYPE_UINT: + * + * The fundamental type corresponding to #guint. + */ +#define G_TYPE_UINT G_TYPE_MAKE_FUNDAMENTAL (7) +/** + * G_TYPE_LONG: + * + * The fundamental type corresponding to #glong. + */ +#define G_TYPE_LONG G_TYPE_MAKE_FUNDAMENTAL (8) +/** + * G_TYPE_ULONG: + * + * The fundamental type corresponding to #gulong. + */ +#define G_TYPE_ULONG G_TYPE_MAKE_FUNDAMENTAL (9) +/** + * G_TYPE_INT64: + * + * The fundamental type corresponding to #gint64. + */ +#define G_TYPE_INT64 G_TYPE_MAKE_FUNDAMENTAL (10) +/** + * G_TYPE_UINT64: + * + * The fundamental type corresponding to #guint64. + */ +#define G_TYPE_UINT64 G_TYPE_MAKE_FUNDAMENTAL (11) +/** + * G_TYPE_ENUM: + * + * The fundamental type from which all enumeration types are derived. + */ +#define G_TYPE_ENUM G_TYPE_MAKE_FUNDAMENTAL (12) +/** + * G_TYPE_FLAGS: + * + * The fundamental type from which all flags types are derived. + */ +#define G_TYPE_FLAGS G_TYPE_MAKE_FUNDAMENTAL (13) +/** + * G_TYPE_FLOAT: + * + * The fundamental type corresponding to #gfloat. + */ +#define G_TYPE_FLOAT G_TYPE_MAKE_FUNDAMENTAL (14) +/** + * G_TYPE_DOUBLE: + * + * The fundamental type corresponding to #gdouble. + */ +#define G_TYPE_DOUBLE G_TYPE_MAKE_FUNDAMENTAL (15) +/** + * G_TYPE_STRING: + * + * The fundamental type corresponding to nul-terminated C strings. + */ +#define G_TYPE_STRING G_TYPE_MAKE_FUNDAMENTAL (16) +/** + * G_TYPE_POINTER: + * + * The fundamental type corresponding to #gpointer. + */ +#define G_TYPE_POINTER G_TYPE_MAKE_FUNDAMENTAL (17) +/** + * G_TYPE_BOXED: + * + * The fundamental type from which all boxed types are derived. + */ +#define G_TYPE_BOXED G_TYPE_MAKE_FUNDAMENTAL (18) +/** + * G_TYPE_PARAM: + * + * The fundamental type from which all #GParamSpec types are derived. + */ +#define G_TYPE_PARAM G_TYPE_MAKE_FUNDAMENTAL (19) +/** + * G_TYPE_OBJECT: + * + * The fundamental type for #GObject. + */ +#define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20) +/** + * G_TYPE_VARIANT: + * + * The fundamental type corresponding to #GVariant. + * + * All floating #GVariant instances passed through the #GType system are + * consumed. + * + * Note that callbacks in closures, and signal handlers + * for signals of return type %G_TYPE_VARIANT, must never return floating + * variants. + * + * Note: GLib 2.24 did include a boxed type with this name. It was replaced + * with this fundamental type in 2.26. + * + * Since: 2.26 + */ +#define G_TYPE_VARIANT G_TYPE_MAKE_FUNDAMENTAL (21) + + +/* Reserved fundamental type numbers to create new fundamental + * type IDs with G_TYPE_MAKE_FUNDAMENTAL(). + * + * Open an issue on https://gitlab.gnome.org/GNOME/glib/issues/new for + * reservations. + */ +/** + * G_TYPE_FUNDAMENTAL_SHIFT: + * + * Shift value used in converting numbers to type IDs. + */ +#define G_TYPE_FUNDAMENTAL_SHIFT (2) +/** + * G_TYPE_MAKE_FUNDAMENTAL: + * @x: the fundamental type number. + * + * Get the type ID for the fundamental type number @x. + * + * Use g_type_fundamental_next() instead of this macro to create new fundamental + * types. + * + * Returns: the GType + */ +#define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT)) +/** + * G_TYPE_RESERVED_GLIB_FIRST: + * + * First fundamental type number to create a new fundamental type id with + * G_TYPE_MAKE_FUNDAMENTAL() reserved for GLib. + */ +#define G_TYPE_RESERVED_GLIB_FIRST (22) +/** + * G_TYPE_RESERVED_GLIB_LAST: + * + * Last fundamental type number reserved for GLib. + */ +#define G_TYPE_RESERVED_GLIB_LAST (31) +/** + * G_TYPE_RESERVED_BSE_FIRST: + * + * First fundamental type number to create a new fundamental type id with + * G_TYPE_MAKE_FUNDAMENTAL() reserved for BSE. + */ +#define G_TYPE_RESERVED_BSE_FIRST (32) +/** + * G_TYPE_RESERVED_BSE_LAST: + * + * Last fundamental type number reserved for BSE. + */ +#define G_TYPE_RESERVED_BSE_LAST (48) +/** + * G_TYPE_RESERVED_USER_FIRST: + * + * First available fundamental type number to create new fundamental + * type id with G_TYPE_MAKE_FUNDAMENTAL(). + */ +#define G_TYPE_RESERVED_USER_FIRST (49) + + +/* Type Checking Macros + */ +/** + * G_TYPE_IS_FUNDAMENTAL: + * @type: A #GType value + * + * Checks if @type is a fundamental type. + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_FUNDAMENTAL(type) ((type) <= G_TYPE_FUNDAMENTAL_MAX) +/** + * G_TYPE_IS_DERIVED: + * @type: A #GType value + * + * Checks if @type is derived (or in object-oriented terminology: + * inherited) from another type (this holds true for all non-fundamental + * types). + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_DERIVED(type) ((type) > G_TYPE_FUNDAMENTAL_MAX) +/** + * G_TYPE_IS_INTERFACE: + * @type: A #GType value + * + * Checks if @type is an interface type. + * + * An interface type provides a pure API, the implementation + * of which is provided by another type (which is then said to conform + * to the interface). GLib interfaces are somewhat analogous to Java + * interfaces and C++ classes containing only pure virtual functions, + * with the difference that GType interfaces are not derivable (but see + * g_type_interface_add_prerequisite() for an alternative). + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_INTERFACE(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE) +/** + * G_TYPE_IS_CLASSED: + * @type: A #GType value + * + * Checks if @type is a classed type. + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_CLASSED(type) (g_type_test_flags ((type), G_TYPE_FLAG_CLASSED)) +/** + * G_TYPE_IS_INSTANTIATABLE: + * @type: A #GType value + * + * Checks if @type can be instantiated. Instantiation is the + * process of creating an instance (object) of this type. + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_INSTANTIATABLE(type) (g_type_test_flags ((type), G_TYPE_FLAG_INSTANTIATABLE)) +/** + * G_TYPE_IS_DERIVABLE: + * @type: A #GType value + * + * Checks if @type is a derivable type. A derivable type can + * be used as the base class of a flat (single-level) class hierarchy. + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_DERIVABLE(type) (g_type_test_flags ((type), G_TYPE_FLAG_DERIVABLE)) +/** + * G_TYPE_IS_DEEP_DERIVABLE: + * @type: A #GType value + * + * Checks if @type is a deep derivable type. A deep derivable type + * can be used as the base class of a deep (multi-level) class hierarchy. + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_DEEP_DERIVABLE(type) (g_type_test_flags ((type), G_TYPE_FLAG_DEEP_DERIVABLE)) +/** + * G_TYPE_IS_ABSTRACT: + * @type: A #GType value + * + * Checks if @type is an abstract type. An abstract type cannot be + * instantiated and is normally used as an abstract base class for + * derived classes. + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_ABSTRACT(type) (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT)) +/** + * G_TYPE_IS_VALUE_ABSTRACT: + * @type: A #GType value + * + * Checks if @type is an abstract value type. An abstract value type introduces + * a value table, but can't be used for g_value_init() and is normally used as + * an abstract base type for derived value types. + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_VALUE_ABSTRACT(type) (g_type_test_flags ((type), G_TYPE_FLAG_VALUE_ABSTRACT)) +/** + * G_TYPE_IS_VALUE_TYPE: + * @type: A #GType value + * + * Checks if @type is a value type and can be used with g_value_init(). + * + * Returns: %TRUE on success + */ +#define G_TYPE_IS_VALUE_TYPE(type) (g_type_check_is_value_type (type)) +/** + * G_TYPE_HAS_VALUE_TABLE: + * @type: A #GType value + * + * Checks if @type has a #GTypeValueTable. + * + * Returns: %TRUE on success + */ +#define G_TYPE_HAS_VALUE_TABLE(type) (g_type_value_table_peek (type) != NULL) +/** + * G_TYPE_IS_FINAL: + * @type: a #GType value + * + * Checks if @type is a final type. A final type cannot be derived any + * further. + * + * Returns: %TRUE on success + * + * Since: 2.70 + */ +#define G_TYPE_IS_FINAL(type) (g_type_test_flags ((type), G_TYPE_FLAG_FINAL)) GLIB_AVAILABLE_MACRO_IN_2_70 + + +/* Typedefs + */ +/** + * GType: + * + * A numerical value which represents the unique identifier of a registered + * type. + */ +#if GLIB_SIZEOF_SIZE_T != GLIB_SIZEOF_LONG || !defined __cplusplus +typedef gsize GType; +#else /* for historic reasons, C++ links against gulong GTypes */ +typedef gulong GType; +#endif +typedef struct _GValue GValue; +typedef union _GTypeCValue GTypeCValue; +typedef struct _GTypePlugin GTypePlugin; +typedef struct _GTypeClass GTypeClass; +typedef struct _GTypeInterface GTypeInterface; +typedef struct _GTypeInstance GTypeInstance; +typedef struct _GTypeInfo GTypeInfo; +typedef struct _GTypeFundamentalInfo GTypeFundamentalInfo; +typedef struct _GInterfaceInfo GInterfaceInfo; +typedef struct _GTypeValueTable GTypeValueTable; +typedef struct _GTypeQuery GTypeQuery; + + +/* Basic Type Structures + */ +/** + * GTypeClass: + * + * An opaque structure used as the base of all classes. + */ +struct _GTypeClass +{ + /*< private >*/ + GType g_type; +}; +/** + * GTypeInstance: + * + * An opaque structure used as the base of all type instances. + */ +struct _GTypeInstance +{ + /*< private >*/ + GTypeClass *g_class; +}; +/** + * GTypeInterface: + * + * An opaque structure used as the base of all interface types. + */ +struct _GTypeInterface +{ + /*< private >*/ + GType g_type; /* iface type */ + GType g_instance_type; +}; +/** + * GTypeQuery: + * @type: the #GType value of the type + * @type_name: the name of the type + * @class_size: the size of the class structure + * @instance_size: the size of the instance structure + * + * A structure holding information for a specific type. + * + * See also: g_type_query() + */ +struct _GTypeQuery +{ + GType type; + const gchar *type_name; + guint class_size; + guint instance_size; +}; + + +/* Casts, checks and accessors for structured types + * usage of these macros is reserved to type implementations only + */ +/*< protected >*/ +/** + * G_TYPE_CHECK_INSTANCE: + * @instance: Location of a #GTypeInstance structure + * + * Checks if @instance is a valid #GTypeInstance structure, + * otherwise issues a warning and returns %FALSE. %NULL is not a valid + * #GTypeInstance. + * + * This macro should only be used in type implementations. + * + * Returns: %TRUE on success + */ +#define G_TYPE_CHECK_INSTANCE(instance) (_G_TYPE_CHI ((GTypeInstance*) (instance))) +/** + * G_TYPE_CHECK_INSTANCE_CAST: + * @instance: (nullable): Location of a #GTypeInstance structure + * @g_type: The type to be returned + * @c_type: The corresponding C type of @g_type + * + * Checks that @instance is an instance of the type identified by @g_type + * and issues a warning if this is not the case. Returns @instance casted + * to a pointer to @c_type. + * + * No warning will be issued if @instance is %NULL, and %NULL will be returned. + * + * This macro should only be used in type implementations. + */ +#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type)) +/** + * G_TYPE_CHECK_INSTANCE_TYPE: + * @instance: (nullable): Location of a #GTypeInstance structure. + * @g_type: The type to be checked + * + * Checks if @instance is an instance of the type identified by @g_type. If + * @instance is %NULL, %FALSE will be returned. + * + * This macro should only be used in type implementations. + * + * Returns: %TRUE on success + */ +#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type) (_G_TYPE_CIT ((instance), (g_type))) +/** + * G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE: + * @instance: (nullable): Location of a #GTypeInstance structure. + * @g_type: The fundamental type to be checked + * + * Checks if @instance is an instance of the fundamental type identified by @g_type. + * If @instance is %NULL, %FALSE will be returned. + * + * This macro should only be used in type implementations. + * + * Returns: %TRUE on success + */ +#define G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE(instance, g_type) (_G_TYPE_CIFT ((instance), (g_type))) +/** + * G_TYPE_INSTANCE_GET_CLASS: + * @instance: Location of the #GTypeInstance structure + * @g_type: The #GType of the class to be returned + * @c_type: The C type of the class structure + * + * Get the class structure of a given @instance, casted + * to a specified ancestor type @g_type of the instance. + * + * Note that while calling a GInstanceInitFunc(), the class pointer + * gets modified, so it might not always return the expected pointer. + * + * This macro should only be used in type implementations. + * + * Returns: a pointer to the class structure + */ +#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type) (_G_TYPE_IGC ((instance), (g_type), c_type)) +/** + * G_TYPE_INSTANCE_GET_INTERFACE: + * @instance: Location of the #GTypeInstance structure + * @g_type: The #GType of the interface to be returned + * @c_type: The C type of the interface structure + * + * Get the interface structure for interface @g_type of a given @instance. + * + * This macro should only be used in type implementations. + * + * Returns: a pointer to the interface structure + */ +#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type)) +/** + * G_TYPE_CHECK_CLASS_CAST: + * @g_class: Location of a #GTypeClass structure + * @g_type: The type to be returned + * @c_type: The corresponding C type of class structure of @g_type + * + * Checks that @g_class is a class structure of the type identified by @g_type + * and issues a warning if this is not the case. Returns @g_class casted + * to a pointer to @c_type. %NULL is not a valid class structure. + * + * This macro should only be used in type implementations. + */ +#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type) (_G_TYPE_CCC ((g_class), (g_type), c_type)) +/** + * G_TYPE_CHECK_CLASS_TYPE: + * @g_class: (nullable): Location of a #GTypeClass structure + * @g_type: The type to be checked + * + * Checks if @g_class is a class structure of the type identified by + * @g_type. If @g_class is %NULL, %FALSE will be returned. + * + * This macro should only be used in type implementations. + * + * Returns: %TRUE on success + */ +#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type) (_G_TYPE_CCT ((g_class), (g_type))) +/** + * G_TYPE_CHECK_VALUE: + * @value: a #GValue + * + * Checks if @value has been initialized to hold values + * of a value type. + * + * This macro should only be used in type implementations. + * + * Returns: %TRUE on success + */ +#define G_TYPE_CHECK_VALUE(value) (_G_TYPE_CHV ((value))) +/** + * G_TYPE_CHECK_VALUE_TYPE: + * @value: a #GValue + * @g_type: The type to be checked + * + * Checks if @value has been initialized to hold values + * of type @g_type. + * + * This macro should only be used in type implementations. + * + * Returns: %TRUE on success + */ +#define G_TYPE_CHECK_VALUE_TYPE(value, g_type) (_G_TYPE_CVH ((value), (g_type))) +/** + * G_TYPE_FROM_INSTANCE: + * @instance: Location of a valid #GTypeInstance structure + * + * Get the type identifier from a given @instance structure. + * + * This macro should only be used in type implementations. + * + * Returns: the #GType + */ +#define G_TYPE_FROM_INSTANCE(instance) (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class)) +/** + * G_TYPE_FROM_CLASS: + * @g_class: Location of a valid #GTypeClass structure + * + * Get the type identifier from a given @class structure. + * + * This macro should only be used in type implementations. + * + * Returns: the #GType + */ +#define G_TYPE_FROM_CLASS(g_class) (((GTypeClass*) (g_class))->g_type) +/** + * G_TYPE_FROM_INTERFACE: + * @g_iface: Location of a valid #GTypeInterface structure + * + * Get the type identifier from a given @interface structure. + * + * This macro should only be used in type implementations. + * + * Returns: the #GType + */ +#define G_TYPE_FROM_INTERFACE(g_iface) (((GTypeInterface*) (g_iface))->g_type) + +/** + * G_TYPE_INSTANCE_GET_PRIVATE: + * @instance: the instance of a type deriving from @private_type + * @g_type: the type identifying which private data to retrieve + * @c_type: The C type for the private structure + * + * Gets the private structure for a particular type. + * + * The private structure must have been registered in the + * class_init function with g_type_class_add_private(). + * + * This macro should only be used in type implementations. + * + * Since: 2.4 + * Deprecated: 2.58: Use G_ADD_PRIVATE() and the generated + * `your_type_get_instance_private()` function instead + * Returns: (not nullable): a pointer to the private data structure + */ +#define G_TYPE_INSTANCE_GET_PRIVATE(instance, g_type, c_type) ((c_type*) g_type_instance_get_private ((GTypeInstance*) (instance), (g_type))) GLIB_DEPRECATED_MACRO_IN_2_58_FOR(G_ADD_PRIVATE) + +/** + * G_TYPE_CLASS_GET_PRIVATE: + * @klass: the class of a type deriving from @private_type + * @g_type: the type identifying which private data to retrieve + * @c_type: The C type for the private structure + * + * Gets the private class structure for a particular type. + * + * The private structure must have been registered in the + * get_type() function with g_type_add_class_private(). + * + * This macro should only be used in type implementations. + * + * Since: 2.24 + * Returns: (not nullable): a pointer to the private data structure + */ +#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type) ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type))) + +/** + * GTypeDebugFlags: + * @G_TYPE_DEBUG_NONE: Print no messages + * @G_TYPE_DEBUG_OBJECTS: Print messages about object bookkeeping + * @G_TYPE_DEBUG_SIGNALS: Print messages about signal emissions + * @G_TYPE_DEBUG_MASK: Mask covering all debug flags + * @G_TYPE_DEBUG_INSTANCE_COUNT: Keep a count of instances of each type + * + * These flags used to be passed to g_type_init_with_debug_flags() which + * is now deprecated. + * + * If you need to enable debugging features, use the GOBJECT_DEBUG + * environment variable. + * + * Deprecated: 2.36: g_type_init() is now done automatically + */ +typedef enum /*< skip >*/ +{ + G_TYPE_DEBUG_NONE = 0, + G_TYPE_DEBUG_OBJECTS = 1 << 0, + G_TYPE_DEBUG_SIGNALS = 1 << 1, + G_TYPE_DEBUG_INSTANCE_COUNT = 1 << 2, + G_TYPE_DEBUG_MASK = 0x07 +} GTypeDebugFlags GLIB_DEPRECATED_TYPE_IN_2_36; + + +/* --- prototypes --- */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +GLIB_DEPRECATED_IN_2_36 +void g_type_init (void); +GLIB_DEPRECATED_IN_2_36 +void g_type_init_with_debug_flags (GTypeDebugFlags debug_flags); +G_GNUC_END_IGNORE_DEPRECATIONS + +GLIB_AVAILABLE_IN_ALL +const gchar * g_type_name (GType type); +GLIB_AVAILABLE_IN_ALL +GQuark g_type_qname (GType type); +GLIB_AVAILABLE_IN_ALL +GType g_type_from_name (const gchar *name); +GLIB_AVAILABLE_IN_ALL +GType g_type_parent (GType type); +GLIB_AVAILABLE_IN_ALL +guint g_type_depth (GType type); +GLIB_AVAILABLE_IN_ALL +GType g_type_next_base (GType leaf_type, + GType root_type); +GLIB_AVAILABLE_IN_ALL +gboolean g_type_is_a (GType type, + GType is_a_type); + +/* Hoist exact GType comparisons into the caller */ +#define g_type_is_a(a,b) ((a) == (b) || (g_type_is_a) ((a), (b))) + +GLIB_AVAILABLE_IN_ALL +gpointer g_type_class_ref (GType type); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_class_peek (GType type); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_class_peek_static (GType type); +GLIB_AVAILABLE_IN_ALL +void g_type_class_unref (gpointer g_class); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_class_peek_parent (gpointer g_class); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_interface_peek (gpointer instance_class, + GType iface_type); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_interface_peek_parent (gpointer g_iface); + +GLIB_AVAILABLE_IN_ALL +gpointer g_type_default_interface_ref (GType g_type); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_default_interface_peek (GType g_type); +GLIB_AVAILABLE_IN_ALL +void g_type_default_interface_unref (gpointer g_iface); + +/* g_free() the returned arrays */ +GLIB_AVAILABLE_IN_ALL +GType* g_type_children (GType type, + guint *n_children); +GLIB_AVAILABLE_IN_ALL +GType* g_type_interfaces (GType type, + guint *n_interfaces); + +/* per-type _static_ data */ +GLIB_AVAILABLE_IN_ALL +void g_type_set_qdata (GType type, + GQuark quark, + gpointer data); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_get_qdata (GType type, + GQuark quark); +GLIB_AVAILABLE_IN_ALL +void g_type_query (GType type, + GTypeQuery *query); + +GLIB_AVAILABLE_IN_2_44 +int g_type_get_instance_count (GType type); + +/* --- type registration --- */ +/** + * GBaseInitFunc: + * @g_class: (type GObject.TypeClass): The #GTypeClass structure to initialize + * + * A callback function used by the type system to do base initialization + * of the class structures of derived types. + * + * This function is called as part of the initialization process of all derived + * classes and should reallocate or reset all dynamic class members copied over + * from the parent class. + * + * For example, class members (such as strings) that are not sufficiently + * handled by a plain memory copy of the parent class into the derived class + * have to be altered. See GClassInitFunc() for a discussion of the class + * initialization process. + */ +typedef void (*GBaseInitFunc) (gpointer g_class); +/** + * GBaseFinalizeFunc: + * @g_class: (type GObject.TypeClass): The #GTypeClass structure to finalize + * + * A callback function used by the type system to finalize those portions + * of a derived types class structure that were setup from the corresponding + * GBaseInitFunc() function. + * + * Class finalization basically works the inverse way in which class + * initialization is performed. + * + * See GClassInitFunc() for a discussion of the class initialization process. + */ +typedef void (*GBaseFinalizeFunc) (gpointer g_class); +/** + * GClassInitFunc: + * @g_class: (type GObject.TypeClass): The #GTypeClass structure to initialize. + * @class_data: The @class_data member supplied via the #GTypeInfo structure. + * + * A callback function used by the type system to initialize the class + * of a specific type. + * + * This function should initialize all static class members. + * + * The initialization process of a class involves: + * + * - Copying common members from the parent class over to the + * derived class structure. + * - Zero initialization of the remaining members not copied + * over from the parent class. + * - Invocation of the GBaseInitFunc() initializers of all parent + * types and the class' type. + * - Invocation of the class' GClassInitFunc() initializer. + * + * Since derived classes are partially initialized through a memory copy + * of the parent class, the general rule is that GBaseInitFunc() and + * GBaseFinalizeFunc() should take care of necessary reinitialization + * and release of those class members that were introduced by the type + * that specified these GBaseInitFunc()/GBaseFinalizeFunc(). + * GClassInitFunc() should only care about initializing static + * class members, while dynamic class members (such as allocated strings + * or reference counted resources) are better handled by a GBaseInitFunc() + * for this type, so proper initialization of the dynamic class members + * is performed for class initialization of derived types as well. + * + * An example may help to correspond the intend of the different class + * initializers: + * + * |[ + * typedef struct { + * GObjectClass parent_class; + * gint static_integer; + * gchar *dynamic_string; + * } TypeAClass; + * static void + * type_a_base_class_init (TypeAClass *class) + * { + * class->dynamic_string = g_strdup ("some string"); + * } + * static void + * type_a_base_class_finalize (TypeAClass *class) + * { + * g_free (class->dynamic_string); + * } + * static void + * type_a_class_init (TypeAClass *class) + * { + * class->static_integer = 42; + * } + * + * typedef struct { + * TypeAClass parent_class; + * gfloat static_float; + * GString *dynamic_gstring; + * } TypeBClass; + * static void + * type_b_base_class_init (TypeBClass *class) + * { + * class->dynamic_gstring = g_string_new ("some other string"); + * } + * static void + * type_b_base_class_finalize (TypeBClass *class) + * { + * g_string_free (class->dynamic_gstring); + * } + * static void + * type_b_class_init (TypeBClass *class) + * { + * class->static_float = 3.14159265358979323846; + * } + * ]| + * + * Initialization of TypeBClass will first cause initialization of + * TypeAClass (derived classes reference their parent classes, see + * g_type_class_ref() on this). + * + * Initialization of TypeAClass roughly involves zero-initializing its fields, + * then calling its GBaseInitFunc() type_a_base_class_init() to allocate + * its dynamic members (dynamic_string), and finally calling its GClassInitFunc() + * type_a_class_init() to initialize its static members (static_integer). + * The first step in the initialization process of TypeBClass is then + * a plain memory copy of the contents of TypeAClass into TypeBClass and + * zero-initialization of the remaining fields in TypeBClass. + * The dynamic members of TypeAClass within TypeBClass now need + * reinitialization which is performed by calling type_a_base_class_init() + * with an argument of TypeBClass. + * + * After that, the GBaseInitFunc() of TypeBClass, type_b_base_class_init() + * is called to allocate the dynamic members of TypeBClass (dynamic_gstring), + * and finally the GClassInitFunc() of TypeBClass, type_b_class_init(), + * is called to complete the initialization process with the static members + * (static_float). + * + * Corresponding finalization counter parts to the GBaseInitFunc() functions + * have to be provided to release allocated resources at class finalization + * time. + */ +typedef void (*GClassInitFunc) (gpointer g_class, + gpointer class_data); +/** + * GClassFinalizeFunc: + * @g_class: (type GObject.TypeClass): The #GTypeClass structure to finalize + * @class_data: The @class_data member supplied via the #GTypeInfo structure + * + * A callback function used by the type system to finalize a class. + * + * This function is rarely needed, as dynamically allocated class resources + * should be handled by GBaseInitFunc() and GBaseFinalizeFunc(). + * + * Also, specification of a GClassFinalizeFunc() in the #GTypeInfo + * structure of a static type is invalid, because classes of static types + * will never be finalized (they are artificially kept alive when their + * reference count drops to zero). + */ +typedef void (*GClassFinalizeFunc) (gpointer g_class, + gpointer class_data); +/** + * GInstanceInitFunc: + * @instance: The instance to initialize + * @g_class: (type GObject.TypeClass): The class of the type the instance is + * created for + * + * A callback function used by the type system to initialize a new + * instance of a type. + * + * This function initializes all instance members and allocates any resources + * required by it. + * + * Initialization of a derived instance involves calling all its parent + * types instance initializers, so the class member of the instance + * is altered during its initialization to always point to the class that + * belongs to the type the current initializer was introduced for. + * + * The extended members of @instance are guaranteed to have been filled with + * zeros before this function is called. + */ +typedef void (*GInstanceInitFunc) (GTypeInstance *instance, + gpointer g_class); +/** + * GInterfaceInitFunc: + * @g_iface: (type GObject.TypeInterface): The interface structure to initialize + * @iface_data: The @interface_data supplied via the #GInterfaceInfo structure + * + * A callback function used by the type system to initialize a new + * interface. + * + * This function should initialize all internal data and* allocate any + * resources required by the interface. + * + * The members of @iface_data are guaranteed to have been filled with + * zeros before this function is called. + */ +typedef void (*GInterfaceInitFunc) (gpointer g_iface, + gpointer iface_data); +/** + * GInterfaceFinalizeFunc: + * @g_iface: (type GObject.TypeInterface): The interface structure to finalize + * @iface_data: The @interface_data supplied via the #GInterfaceInfo structure + * + * A callback function used by the type system to finalize an interface. + * + * This function should destroy any internal data and release any resources + * allocated by the corresponding GInterfaceInitFunc() function. + */ +typedef void (*GInterfaceFinalizeFunc) (gpointer g_iface, + gpointer iface_data); +/** + * GTypeClassCacheFunc: + * @cache_data: data that was given to the g_type_add_class_cache_func() call + * @g_class: (type GObject.TypeClass): The #GTypeClass structure which is + * unreferenced + * + * A callback function which is called when the reference count of a class + * drops to zero. + * + * It may use g_type_class_ref() to prevent the class from being freed. You + * should not call g_type_class_unref() from a #GTypeClassCacheFunc function + * to prevent infinite recursion, use g_type_class_unref_uncached() instead. + * + * The functions have to check the class id passed in to figure + * whether they actually want to cache the class of this type, since all + * classes are routed through the same #GTypeClassCacheFunc chain. + * + * Returns: %TRUE to stop further #GTypeClassCacheFuncs from being + * called, %FALSE to continue + */ +typedef gboolean (*GTypeClassCacheFunc) (gpointer cache_data, + GTypeClass *g_class); +/** + * GTypeInterfaceCheckFunc: + * @check_data: data passed to g_type_add_interface_check() + * @g_iface: (type GObject.TypeInterface): the interface that has been + * initialized + * + * A callback called after an interface vtable is initialized. + * + * See g_type_add_interface_check(). + * + * Since: 2.4 + */ +typedef void (*GTypeInterfaceCheckFunc) (gpointer check_data, + gpointer g_iface); +/** + * GTypeFundamentalFlags: + * @G_TYPE_FLAG_CLASSED: Indicates a classed type + * @G_TYPE_FLAG_INSTANTIATABLE: Indicates an instantiatable type (implies classed) + * @G_TYPE_FLAG_DERIVABLE: Indicates a flat derivable type + * @G_TYPE_FLAG_DEEP_DERIVABLE: Indicates a deep derivable type (implies derivable) + * + * Bit masks used to check or determine specific characteristics of a + * fundamental type. + */ +typedef enum /*< skip >*/ +{ + /* There is no G_TYPE_FUNDAMENTAL_FLAGS_NONE: this is implemented to use + * the same bits as GTypeFlags */ + G_TYPE_FLAG_CLASSED = (1 << 0), + G_TYPE_FLAG_INSTANTIATABLE = (1 << 1), + G_TYPE_FLAG_DERIVABLE = (1 << 2), + G_TYPE_FLAG_DEEP_DERIVABLE = (1 << 3) +} GTypeFundamentalFlags; +/** + * GTypeFlags: + * @G_TYPE_FLAG_NONE: No special flags. Since: 2.74 + * @G_TYPE_FLAG_ABSTRACT: Indicates an abstract type. No instances can be + * created for an abstract type + * @G_TYPE_FLAG_VALUE_ABSTRACT: Indicates an abstract value type, i.e. a type + * that introduces a value table, but can't be used for + * g_value_init() + * @G_TYPE_FLAG_FINAL: Indicates a final type. A final type is a non-derivable + * leaf node in a deep derivable type hierarchy tree. Since: 2.70 + * + * Bit masks used to check or determine characteristics of a type. + */ +typedef enum /*< skip >*/ +{ + G_TYPE_FLAG_NONE GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, + G_TYPE_FLAG_ABSTRACT = (1 << 4), + G_TYPE_FLAG_VALUE_ABSTRACT = (1 << 5), + G_TYPE_FLAG_FINAL GLIB_AVAILABLE_ENUMERATOR_IN_2_70 = (1 << 6) +} GTypeFlags; +/** + * GTypeInfo: + * @class_size: Size of the class structure (required for interface, classed and instantiatable types) + * @base_init: Location of the base initialization function (optional) + * @base_finalize: Location of the base finalization function (optional) + * @class_init: Location of the class initialization function for + * classed and instantiatable types. Location of the default vtable + * inititalization function for interface types. (optional) This function + * is used both to fill in virtual functions in the class or default vtable, + * and to do type-specific setup such as registering signals and object + * properties. + * @class_finalize: Location of the class finalization function for + * classed and instantiatable types. Location of the default vtable + * finalization function for interface types. (optional) + * @class_data: User-supplied data passed to the class init/finalize functions + * @instance_size: Size of the instance (object) structure (required for instantiatable types only) + * @n_preallocs: Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the [slice allocator][glib-Memory-Slices] now. + * @instance_init: Location of the instance initialization function (optional, for instantiatable types only) + * @value_table: A #GTypeValueTable function table for generic handling of GValues + * of this type (usually only useful for fundamental types) + * + * This structure is used to provide the type system with the information + * required to initialize and destruct (finalize) a type's class and + * its instances. + * + * The initialized structure is passed to the g_type_register_static() function + * (or is copied into the provided #GTypeInfo structure in the + * g_type_plugin_complete_type_info()). The type system will perform a deep + * copy of this structure, so its memory does not need to be persistent + * across invocation of g_type_register_static(). + */ +struct _GTypeInfo +{ + /* interface types, classed types, instantiated types */ + guint16 class_size; + + GBaseInitFunc base_init; + GBaseFinalizeFunc base_finalize; + + /* interface types, classed types, instantiated types */ + GClassInitFunc class_init; + GClassFinalizeFunc class_finalize; + gconstpointer class_data; + + /* instantiated types */ + guint16 instance_size; + guint16 n_preallocs; + GInstanceInitFunc instance_init; + + /* value handling */ + const GTypeValueTable *value_table; +}; +/** + * GTypeFundamentalInfo: + * @type_flags: #GTypeFundamentalFlags describing the characteristics of the fundamental type + * + * A structure that provides information to the type system which is + * used specifically for managing fundamental types. + */ +struct _GTypeFundamentalInfo +{ + GTypeFundamentalFlags type_flags; +}; +/** + * GInterfaceInfo: + * @interface_init: location of the interface initialization function + * @interface_finalize: location of the interface finalization function + * @interface_data: user-supplied data passed to the interface init/finalize functions + * + * A structure that provides information to the type system which is + * used specifically for managing interface types. + */ +struct _GInterfaceInfo +{ + GInterfaceInitFunc interface_init; + GInterfaceFinalizeFunc interface_finalize; + gpointer interface_data; +}; +/** + * GTypeValueTable: + * @value_init: Default initialize @values contents by poking values + * directly into the value->data array. The data array of + * the #GValue passed into this function was zero-filled + * with `memset()`, so no care has to be taken to free any + * old contents. E.g. for the implementation of a string + * value that may never be %NULL, the implementation might + * look like: + * |[ + * value->data[0].v_pointer = g_strdup (""); + * ]| + * @value_free: Free any old contents that might be left in the + * data array of the passed in @value. No resources may + * remain allocated through the #GValue contents after + * this function returns. E.g. for our above string type: + * |[ + * // only free strings without a specific flag for static storage + * if (!(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS)) + * g_free (value->data[0].v_pointer); + * ]| + * @value_copy: @dest_value is a #GValue with zero-filled data section + * and @src_value is a properly setup #GValue of same or + * derived type. + * The purpose of this function is to copy the contents of + * @src_value into @dest_value in a way, that even after + * @src_value has been freed, the contents of @dest_value + * remain valid. String type example: + * |[ + * dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer); + * ]| + * @value_peek_pointer: If the value contents fit into a pointer, such as objects + * or strings, return this pointer, so the caller can peek at + * the current contents. To extend on our above string example: + * |[ + * return value->data[0].v_pointer; + * ]| + * @collect_format: A string format describing how to collect the contents of + * this value bit-by-bit. Each character in the format represents + * an argument to be collected, and the characters themselves indicate + * the type of the argument. Currently supported arguments are: + * - 'i' - Integers. passed as collect_values[].v_int. + * - 'l' - Longs. passed as collect_values[].v_long. + * - 'd' - Doubles. passed as collect_values[].v_double. + * - 'p' - Pointers. passed as collect_values[].v_pointer. + * It should be noted that for variable argument list construction, + * ANSI C promotes every type smaller than an integer to an int, and + * floats to doubles. So for collection of short int or char, 'i' + * needs to be used, and for collection of floats 'd'. + * @collect_value: The collect_value() function is responsible for converting the + * values collected from a variable argument list into contents + * suitable for storage in a GValue. This function should setup + * @value similar to value_init(); e.g. for a string value that + * does not allow %NULL pointers, it needs to either spew an error, + * or do an implicit conversion by storing an empty string. + * The @value passed in to this function has a zero-filled data + * array, so just like for value_init() it is guaranteed to not + * contain any old contents that might need freeing. + * @n_collect_values is exactly the string length of @collect_format, + * and @collect_values is an array of unions #GTypeCValue with + * length @n_collect_values, containing the collected values + * according to @collect_format. + * @collect_flags is an argument provided as a hint by the caller. + * It may contain the flag %G_VALUE_NOCOPY_CONTENTS indicating, + * that the collected value contents may be considered "static" + * for the duration of the @value lifetime. + * Thus an extra copy of the contents stored in @collect_values is + * not required for assignment to @value. + * For our above string example, we continue with: + * |[ + * if (!collect_values[0].v_pointer) + * value->data[0].v_pointer = g_strdup (""); + * else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) + * { + * value->data[0].v_pointer = collect_values[0].v_pointer; + * // keep a flag for the value_free() implementation to not free this string + * value->data[1].v_uint = G_VALUE_NOCOPY_CONTENTS; + * } + * else + * value->data[0].v_pointer = g_strdup (collect_values[0].v_pointer); + * return NULL; + * ]| + * It should be noted, that it is generally a bad idea to follow the + * %G_VALUE_NOCOPY_CONTENTS hint for reference counted types. Due to + * reentrancy requirements and reference count assertions performed + * by the signal emission code, reference counts should always be + * incremented for reference counted contents stored in the value->data + * array. To deviate from our string example for a moment, and taking + * a look at an exemplary implementation for collect_value() of + * #GObject: + * |[ + * GObject *object = G_OBJECT (collect_values[0].v_pointer); + * g_return_val_if_fail (object != NULL, + * g_strdup_printf ("Object passed as invalid NULL pointer")); + * // never honour G_VALUE_NOCOPY_CONTENTS for ref-counted types + * value->data[0].v_pointer = g_object_ref (object); + * return NULL; + * ]| + * The reference count for valid objects is always incremented, + * regardless of @collect_flags. For invalid objects, the example + * returns a newly allocated string without altering @value. + * Upon success, collect_value() needs to return %NULL. If, however, + * an error condition occurred, collect_value() may spew an + * error by returning a newly allocated non-%NULL string, giving + * a suitable description of the error condition. + * The calling code makes no assumptions about the @value + * contents being valid upon error returns, @value + * is simply thrown away without further freeing. As such, it is + * a good idea to not allocate #GValue contents, prior to returning + * an error, however, collect_values() is not obliged to return + * a correctly setup @value for error returns, simply because + * any non-%NULL return is considered a fatal condition so further + * program behaviour is undefined. + * @lcopy_format: Format description of the arguments to collect for @lcopy_value, + * analogous to @collect_format. Usually, @lcopy_format string consists + * only of 'p's to provide lcopy_value() with pointers to storage locations. + * @lcopy_value: This function is responsible for storing the @value contents into + * arguments passed through a variable argument list which got + * collected into @collect_values according to @lcopy_format. + * @n_collect_values equals the string length of @lcopy_format, + * and @collect_flags may contain %G_VALUE_NOCOPY_CONTENTS. + * In contrast to collect_value(), lcopy_value() is obliged to + * always properly support %G_VALUE_NOCOPY_CONTENTS. + * Similar to collect_value() the function may prematurely abort + * by returning a newly allocated string describing an error condition. + * To complete the string example: + * |[ + * gchar **string_p = collect_values[0].v_pointer; + * g_return_val_if_fail (string_p != NULL, + * g_strdup_printf ("string location passed as NULL")); + * if (collect_flags & G_VALUE_NOCOPY_CONTENTS) + * *string_p = value->data[0].v_pointer; + * else + * *string_p = g_strdup (value->data[0].v_pointer); + * ]| + * And an illustrative version of lcopy_value() for + * reference-counted types: + * |[ + * GObject **object_p = collect_values[0].v_pointer; + * g_return_val_if_fail (object_p != NULL, + * g_strdup_printf ("object location passed as NULL")); + * if (!value->data[0].v_pointer) + * *object_p = NULL; + * else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) // always honour + * *object_p = value->data[0].v_pointer; + * else + * *object_p = g_object_ref (value->data[0].v_pointer); + * return NULL; + * ]| + * + * The #GTypeValueTable provides the functions required by the #GValue + * implementation, to serve as a container for values of a type. + */ + +struct _GTypeValueTable +{ + void (*value_init) (GValue *value); + void (*value_free) (GValue *value); + void (*value_copy) (const GValue *src_value, + GValue *dest_value); + /* varargs functionality (optional) */ + gpointer (*value_peek_pointer) (const GValue *value); + const gchar *collect_format; + gchar* (*collect_value) (GValue *value, + guint n_collect_values, + GTypeCValue *collect_values, + guint collect_flags); + const gchar *lcopy_format; + gchar* (*lcopy_value) (const GValue *value, + guint n_collect_values, + GTypeCValue *collect_values, + guint collect_flags); +}; +GLIB_AVAILABLE_IN_ALL +GType g_type_register_static (GType parent_type, + const gchar *type_name, + const GTypeInfo *info, + GTypeFlags flags); +GLIB_AVAILABLE_IN_ALL +GType g_type_register_static_simple (GType parent_type, + const gchar *type_name, + guint class_size, + GClassInitFunc class_init, + guint instance_size, + GInstanceInitFunc instance_init, + GTypeFlags flags); + +GLIB_AVAILABLE_IN_ALL +GType g_type_register_dynamic (GType parent_type, + const gchar *type_name, + GTypePlugin *plugin, + GTypeFlags flags); +GLIB_AVAILABLE_IN_ALL +GType g_type_register_fundamental (GType type_id, + const gchar *type_name, + const GTypeInfo *info, + const GTypeFundamentalInfo *finfo, + GTypeFlags flags); +GLIB_AVAILABLE_IN_ALL +void g_type_add_interface_static (GType instance_type, + GType interface_type, + const GInterfaceInfo *info); +GLIB_AVAILABLE_IN_ALL +void g_type_add_interface_dynamic (GType instance_type, + GType interface_type, + GTypePlugin *plugin); +GLIB_AVAILABLE_IN_ALL +void g_type_interface_add_prerequisite (GType interface_type, + GType prerequisite_type); +GLIB_AVAILABLE_IN_ALL +GType*g_type_interface_prerequisites (GType interface_type, + guint *n_prerequisites); +GLIB_AVAILABLE_IN_2_68 +GType g_type_interface_instantiatable_prerequisite + (GType interface_type); +GLIB_DEPRECATED_IN_2_58 +void g_type_class_add_private (gpointer g_class, + gsize private_size); +GLIB_AVAILABLE_IN_2_38 +gint g_type_add_instance_private (GType class_type, + gsize private_size); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_instance_get_private (GTypeInstance *instance, + GType private_type); +GLIB_AVAILABLE_IN_2_38 +void g_type_class_adjust_private_offset (gpointer g_class, + gint *private_size_or_offset); + +GLIB_AVAILABLE_IN_ALL +void g_type_add_class_private (GType class_type, + gsize private_size); +GLIB_AVAILABLE_IN_ALL +gpointer g_type_class_get_private (GTypeClass *klass, + GType private_type); +GLIB_AVAILABLE_IN_2_38 +gint g_type_class_get_instance_private_offset (gpointer g_class); + +GLIB_AVAILABLE_IN_2_34 +void g_type_ensure (GType type); +GLIB_AVAILABLE_IN_2_36 +guint g_type_get_type_registration_serial (void); + + +/* --- GType boilerplate --- */ +/** + * G_DECLARE_FINAL_TYPE: + * @ModuleObjName: The name of the new type, in camel case (like `GtkWidget`) + * @module_obj_name: The name of the new type in lowercase, with words + * separated by `_` (like `gtk_widget`) + * @MODULE: The name of the module, in all caps (like `GTK`) + * @OBJ_NAME: The bare name of the type, in all caps (like `WIDGET`) + * @ParentName: the name of the parent type, in camel case (like `GtkWidget`) + * + * A convenience macro for emitting the usual declarations in the header file + * for a type which is not (at the present time) intended to be subclassed. + * + * You might use it in a header as follows: + * + * |[ + * #ifndef _myapp_window_h_ + * #define _myapp_window_h_ + * + * #include + * + * #define MY_APP_TYPE_WINDOW my_app_window_get_type () + * G_DECLARE_FINAL_TYPE (MyAppWindow, my_app_window, MY_APP, WINDOW, GtkWindow) + * + * MyAppWindow * my_app_window_new (void); + * + * ... + * + * #endif + * ]| + * + * And use it as follow in your C file: + * + * |[ + * struct _MyAppWindow + * { + * GtkWindow parent; + * ... + * }; + * G_DEFINE_TYPE (MyAppWindow, my_app_window, GTK_TYPE_WINDOW) + * ]| + * + * This results in the following things happening: + * + * - the usual `my_app_window_get_type()` function is declared with a return type of #GType + * + * - the `MyAppWindow` type is defined as a `typedef` of `struct _MyAppWindow`. The struct itself is not + * defined and should be defined from the .c file before G_DEFINE_TYPE() is used. + * + * - the `MY_APP_WINDOW()` cast is emitted as `static inline` function along with the `MY_APP_IS_WINDOW()` type + * checking function + * + * - the `MyAppWindowClass` type is defined as a struct containing `GtkWindowClass`. This is done for the + * convenience of the person defining the type and should not be considered to be part of the ABI. In + * particular, without a firm declaration of the instance structure, it is not possible to subclass the type + * and therefore the fact that the size of the class structure is exposed is not a concern and it can be + * freely changed at any point in the future. + * + * - g_autoptr() support being added for your type, based on the type of your parent class + * + * You can only use this function if your parent type also supports g_autoptr(). + * + * Because the type macro (`MY_APP_TYPE_WINDOW` in the above example) is not a callable, you must continue to + * manually define this as a macro for yourself. + * + * The declaration of the `_get_type()` function is the first thing emitted by the macro. This allows this macro + * to be used in the usual way with export control and API versioning macros. + * + * If you want to declare your own class structure, use G_DECLARE_DERIVABLE_TYPE(). + * + * If you are writing a library, it is important to note that it is possible to convert a type from using + * G_DECLARE_FINAL_TYPE() to G_DECLARE_DERIVABLE_TYPE() without breaking API or ABI. As a precaution, you + * should therefore use G_DECLARE_FINAL_TYPE() until you are sure that it makes sense for your class to be + * subclassed. Once a class structure has been exposed it is not possible to change its size or remove or + * reorder items without breaking the API and/or ABI. + * + * Since: 2.44 + **/ +#define G_DECLARE_FINAL_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName) \ + GType module_obj_name##_get_type (void); \ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + typedef struct _##ModuleObjName ModuleObjName; \ + typedef struct { ParentName##Class parent_class; } ModuleObjName##Class; \ + \ + _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \ + G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref) \ + \ + G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ + G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ + G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * G_DECLARE_DERIVABLE_TYPE: + * @ModuleObjName: The name of the new type, in camel case (like `GtkWidget`) + * @module_obj_name: The name of the new type in lowercase, with words + * separated by `_` (like `gtk_widget`) + * @MODULE: The name of the module, in all caps (like `GTK`) + * @OBJ_NAME: The bare name of the type, in all caps (like `WIDGET`) + * @ParentName: the name of the parent type, in camel case (like `GtkWidget`) + * + * A convenience macro for emitting the usual declarations in the + * header file for a type which is intended to be subclassed. + * + * You might use it in a header as follows: + * + * |[ + * #ifndef _gtk_frobber_h_ + * #define _gtk_frobber_h_ + * + * #define GTK_TYPE_FROBBER gtk_frobber_get_type () + * GDK_AVAILABLE_IN_3_12 + * G_DECLARE_DERIVABLE_TYPE (GtkFrobber, gtk_frobber, GTK, FROBBER, GtkWidget) + * + * struct _GtkFrobberClass + * { + * GtkWidgetClass parent_class; + * + * void (* handle_frob) (GtkFrobber *frobber, + * guint n_frobs); + * + * gpointer padding[12]; + * }; + * + * GtkWidget * gtk_frobber_new (void); + * + * ... + * + * #endif + * ]| + * + * Since the instance structure is public it is often needed to declare a + * private struct as follow in your C file: + * + * |[ + * typedef struct _GtkFrobberPrivate GtkFrobberPrivate; + * struct _GtkFrobberPrivate + * { + * ... + * }; + * G_DEFINE_TYPE_WITH_PRIVATE (GtkFrobber, gtk_frobber, GTK_TYPE_WIDGET) + * ]| + * + * This results in the following things happening: + * + * - the usual `gtk_frobber_get_type()` function is declared with a return type of #GType + * + * - the `GtkFrobber` struct is created with `GtkWidget` as the first and only item. You are expected to use + * a private structure from your .c file to store your instance variables. + * + * - the `GtkFrobberClass` type is defined as a typedef to `struct _GtkFrobberClass`, which is left undefined. + * You should do this from the header file directly after you use the macro. + * + * - the `GTK_FROBBER()` and `GTK_FROBBER_CLASS()` casts are emitted as `static inline` functions along with + * the `GTK_IS_FROBBER()` and `GTK_IS_FROBBER_CLASS()` type checking functions and `GTK_FROBBER_GET_CLASS()` + * function. + * + * - g_autoptr() support being added for your type, based on the type of your parent class + * + * You can only use this function if your parent type also supports g_autoptr(). + * + * Because the type macro (`GTK_TYPE_FROBBER` in the above example) is not a callable, you must continue to + * manually define this as a macro for yourself. + * + * The declaration of the `_get_type()` function is the first thing emitted by the macro. This allows this macro + * to be used in the usual way with export control and API versioning macros. + * + * If you are writing a library, it is important to note that it is possible to convert a type from using + * G_DECLARE_FINAL_TYPE() to G_DECLARE_DERIVABLE_TYPE() without breaking API or ABI. As a precaution, you + * should therefore use G_DECLARE_FINAL_TYPE() until you are sure that it makes sense for your class to be + * subclassed. Once a class structure has been exposed it is not possible to change its size or remove or + * reorder items without breaking the API and/or ABI. If you want to declare your own class structure, use + * G_DECLARE_DERIVABLE_TYPE(). If you want to declare a class without exposing the class or instance + * structures, use G_DECLARE_FINAL_TYPE(). + * + * If you must use G_DECLARE_DERIVABLE_TYPE() you should be sure to include some padding at the bottom of your + * class structure to leave space for the addition of future virtual functions. + * + * Since: 2.44 + **/ +#define G_DECLARE_DERIVABLE_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName) \ + GType module_obj_name##_get_type (void); \ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + typedef struct _##ModuleObjName ModuleObjName; \ + typedef struct _##ModuleObjName##Class ModuleObjName##Class; \ + struct _##ModuleObjName { ParentName parent_instance; }; \ + \ + _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \ + G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref) \ + \ + G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ + G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) { \ + return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \ + G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ + G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) { \ + return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); } \ + G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) { \ + return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \ + G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * G_DECLARE_INTERFACE: + * @ModuleObjName: The name of the new type, in camel case (like `GtkWidget`) + * @module_obj_name: The name of the new type in lowercase, with words + * separated by `_` (like `gtk_widget`) + * @MODULE: The name of the module, in all caps (like `GTK`) + * @OBJ_NAME: The bare name of the type, in all caps (like `WIDGET`) + * @PrerequisiteName: the name of the prerequisite type, in camel case (like `GtkWidget`) + * + * A convenience macro for emitting the usual declarations in the header file for a #GInterface type. + * + * You might use it in a header as follows: + * + * |[ + * #ifndef _my_model_h_ + * #define _my_model_h_ + * + * #define MY_TYPE_MODEL my_model_get_type () + * GDK_AVAILABLE_IN_3_12 + * G_DECLARE_INTERFACE (MyModel, my_model, MY, MODEL, GObject) + * + * struct _MyModelInterface + * { + * GTypeInterface g_iface; + * + * gpointer (* get_item) (MyModel *model); + * }; + * + * gpointer my_model_get_item (MyModel *model); + * + * ... + * + * #endif + * ]| + * + * And use it as follow in your C file: + * + * |[ + * G_DEFINE_INTERFACE (MyModel, my_model, G_TYPE_OBJECT); + * + * static void + * my_model_default_init (MyModelInterface *iface) + * { + * ... + * } + * ]| + * + * This results in the following things happening: + * + * - the usual `my_model_get_type()` function is declared with a return type of #GType + * + * - the `MyModelInterface` type is defined as a typedef to `struct _MyModelInterface`, + * which is left undefined. You should do this from the header file directly after + * you use the macro. + * + * - the `MY_MODEL()` cast is emitted as `static inline` functions along with + * the `MY_IS_MODEL()` type checking function and `MY_MODEL_GET_IFACE()` function. + * + * - g_autoptr() support being added for your type, based on your prerequisite type. + * + * You can only use this function if your prerequisite type also supports g_autoptr(). + * + * Because the type macro (`MY_TYPE_MODEL` in the above example) is not a callable, you must continue to + * manually define this as a macro for yourself. + * + * The declaration of the `_get_type()` function is the first thing emitted by the macro. This allows this macro + * to be used in the usual way with export control and API versioning macros. + * + * Since: 2.44 + **/ +#define G_DECLARE_INTERFACE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, PrerequisiteName) \ + GType module_obj_name##_get_type (void); \ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ + typedef struct _##ModuleObjName ModuleObjName; \ + typedef struct _##ModuleObjName##Interface ModuleObjName##Interface; \ + \ + _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, PrerequisiteName) \ + \ + G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ + G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ + G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) { \ + return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \ + G_GNUC_END_IGNORE_DEPRECATIONS + +/** + * G_DEFINE_TYPE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words + * separated by `_`. + * @T_P: The #GType of the parent type. + * + * A convenience macro for type implementations, which declares a class + * initialization function, an instance initialization function (see #GTypeInfo + * for information about these) and a static variable named `t_n_parent_class` + * pointing to the parent class. Furthermore, it defines a `*_get_type()` function. + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.4 + */ +#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {}) +/** + * G_DEFINE_TYPE_WITH_CODE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type in lowercase, with words separated by `_`. + * @T_P: The #GType of the parent type. + * @_C_: Custom code that gets inserted in the `*_get_type()` function. + * + * A convenience macro for type implementations. + * + * Similar to G_DEFINE_TYPE(), but allows you to insert custom code into the + * `*_get_type()` function, e.g. interface implementations via G_IMPLEMENT_INTERFACE(). + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.4 + */ +#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() +/** + * G_DEFINE_TYPE_WITH_PRIVATE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words + * separated by `_`. + * @T_P: The #GType of the parent type. + * + * A convenience macro for type implementations, which declares a class + * initialization function, an instance initialization function (see #GTypeInfo + * for information about these), a static variable named `t_n_parent_class` + * pointing to the parent class, and adds private instance data to the type. + * + * Furthermore, it defines a `*_get_type()` function. See G_DEFINE_TYPE_EXTENDED() + * for an example. + * + * Note that private structs added with this macros must have a struct + * name of the form `TN ## Private`. + * + * The private instance data can be retrieved using the automatically generated + * getter function `t_n_get_instance_private()`. + * + * See also: G_ADD_PRIVATE() + * + * Since: 2.38 + */ +#define G_DEFINE_TYPE_WITH_PRIVATE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, G_ADD_PRIVATE (TN)) +/** + * G_DEFINE_ABSTRACT_TYPE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words + * separated by `_`. + * @T_P: The #GType of the parent type. + * + * A convenience macro for type implementations. + * + * Similar to G_DEFINE_TYPE(), but defines an abstract type. + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.4 + */ +#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {}) +/** + * G_DEFINE_ABSTRACT_TYPE_WITH_CODE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words + * separated by `_`. + * @T_P: The #GType of the parent type. + * @_C_: Custom code that gets inserted in the `type_name_get_type()` function. + * + * A convenience macro for type implementations. + * + * Similar to G_DEFINE_TYPE_WITH_CODE(), but defines an abstract type and + * allows you to insert custom code into the `*_get_type()` function, e.g. + * interface implementations via G_IMPLEMENT_INTERFACE(). + * + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.4 + */ +#define G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() +/** + * G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words + * separated by `_`. + * @T_P: The #GType of the parent type. + * + * Similar to G_DEFINE_TYPE_WITH_PRIVATE(), but defines an abstract type. + * + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.38 + */ +#define G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, G_ADD_PRIVATE (TN)) +/** + * G_DEFINE_FINAL_TYPE: + * @TN: the name of the new type, in Camel case + * @t_n: the name of the new type, in lower case, with words + * separated by `_` (snake case) + * @T_P: the #GType of the parent type + * + * A convenience macro for type implementations. + * + * Similar to G_DEFINE_TYPE(), but defines a final type. + * + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.70 + */ +#define G_DEFINE_FINAL_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_FINAL, {}) GLIB_AVAILABLE_MACRO_IN_2_70 +/** + * G_DEFINE_FINAL_TYPE_WITH_CODE: + * @TN: the name of the new type, in Camel case + * @t_n: the name of the new type, in lower case, with words + * separated by `_` (snake case) + * @T_P: the #GType of the parent type + * @_C_: Custom code that gets inserted in the `type_name_get_type()` function. + * + * A convenience macro for type implementations. + * + * Similar to G_DEFINE_TYPE_WITH_CODE(), but defines a final type and + * allows you to insert custom code into the `*_get_type()` function, e.g. + * interface implementations via G_IMPLEMENT_INTERFACE(). + * + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.70 + */ +#define G_DEFINE_FINAL_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_FINAL) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() GLIB_AVAILABLE_MACRO_IN_2_70 +/** + * G_DEFINE_FINAL_TYPE_WITH_PRIVATE: + * @TN: the name of the new type, in Camel case + * @t_n: the name of the new type, in lower case, with words + * separated by `_` (snake case) + * @T_P: the #GType of the parent type + * + * A convenience macro for type implementations. + * + * Similar to G_DEFINE_TYPE_WITH_PRIVATE(), but defines a final type. + * + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Since: 2.70 + */ +#define G_DEFINE_FINAL_TYPE_WITH_PRIVATE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_FINAL, G_ADD_PRIVATE (TN)) GLIB_AVAILABLE_MACRO_IN_2_70 +/** + * G_DEFINE_TYPE_EXTENDED: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words + * separated by `_`. + * @T_P: The #GType of the parent type. + * @_f_: #GTypeFlags to pass to g_type_register_static() + * @_C_: Custom code that gets inserted in the `*_get_type()` function. + * + * The most general convenience macro for type implementations, on which + * G_DEFINE_TYPE(), etc are based. + * + * |[ + * G_DEFINE_TYPE_EXTENDED (GtkGadget, + * gtk_gadget, + * GTK_TYPE_WIDGET, + * 0, + * G_ADD_PRIVATE (GtkGadget) + * G_IMPLEMENT_INTERFACE (TYPE_GIZMO, + * gtk_gadget_gizmo_init)); + * ]| + * + * expands to + * + * |[ + * static void gtk_gadget_init (GtkGadget *self); + * static void gtk_gadget_class_init (GtkGadgetClass *klass); + * static gpointer gtk_gadget_parent_class = NULL; + * static gint GtkGadget_private_offset; + * static void gtk_gadget_class_intern_init (gpointer klass) + * { + * gtk_gadget_parent_class = g_type_class_peek_parent (klass); + * if (GtkGadget_private_offset != 0) + * g_type_class_adjust_private_offset (klass, &GtkGadget_private_offset); + * gtk_gadget_class_init ((GtkGadgetClass*) klass); + * } + * static inline gpointer gtk_gadget_get_instance_private (GtkGadget *self) + * { + * return (G_STRUCT_MEMBER_P (self, GtkGadget_private_offset)); + * } + * + * GType + * gtk_gadget_get_type (void) + * { + * static gsize static_g_define_type_id = 0; + * if (g_once_init_enter (&static_g_define_type_id)) + * { + * GType g_define_type_id = + * g_type_register_static_simple (GTK_TYPE_WIDGET, + * g_intern_static_string ("GtkGadget"), + * sizeof (GtkGadgetClass), + * (GClassInitFunc) gtk_gadget_class_intern_init, + * sizeof (GtkGadget), + * (GInstanceInitFunc) gtk_gadget_init, + * 0); + * { + * GtkGadget_private_offset = + * g_type_add_instance_private (g_define_type_id, sizeof (GtkGadgetPrivate)); + * } + * { + * const GInterfaceInfo g_implement_interface_info = { + * (GInterfaceInitFunc) gtk_gadget_gizmo_init + * }; + * g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info); + * } + * g_once_init_leave (&static_g_define_type_id, g_define_type_id); + * } + * return static_g_define_type_id; + * } + * ]| + * + * The only pieces which have to be manually provided are the definitions of + * the instance and class structure and the definitions of the instance and + * class init functions. + * + * Since: 2.4 + */ +#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() + +/** + * G_DEFINE_INTERFACE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words separated by `_`. + * @T_P: The #GType of the prerequisite type for the interface, or %G_TYPE_INVALID + * for no prerequisite type. + * + * A convenience macro for #GTypeInterface definitions, which declares + * a default vtable initialization function and defines a `*_get_type()` + * function. + * + * The macro expects the interface initialization function to have the + * name `t_n ## _default_init`, and the interface structure to have the + * name `TN ## Interface`. + * + * The initialization function has signature + * `static void t_n ## _default_init (TypeName##Interface *klass);`, rather than + * the full #GInterfaceInitFunc signature, for brevity and convenience. If you + * need to use an initialization function with an `iface_data` argument, you + * must write the #GTypeInterface definitions manually. + * + * Since: 2.24 + */ +#define G_DEFINE_INTERFACE(TN, t_n, T_P) G_DEFINE_INTERFACE_WITH_CODE(TN, t_n, T_P, ;) + +/** + * G_DEFINE_INTERFACE_WITH_CODE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words separated by `_`. + * @T_P: The #GType of the prerequisite type for the interface, or %G_TYPE_INVALID + * for no prerequisite type. + * @_C_: Custom code that gets inserted in the `*_get_type()` function. + * + * A convenience macro for #GTypeInterface definitions. + * + * Similar to G_DEFINE_INTERFACE(), but allows you to insert custom code + * into the `*_get_type()` function, e.g. additional interface implementations + * via G_IMPLEMENT_INTERFACE(), or additional prerequisite types. + * + * See G_DEFINE_TYPE_EXTENDED() for a similar example using + * G_DEFINE_TYPE_WITH_CODE(). + * + * Since: 2.24 + */ +#define G_DEFINE_INTERFACE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P) {_C_;} _G_DEFINE_INTERFACE_EXTENDED_END() + +/** + * G_IMPLEMENT_INTERFACE: + * @TYPE_IFACE: The #GType of the interface to add + * @iface_init: (type GInterfaceInitFunc): The interface init function, of type #GInterfaceInitFunc + * + * A convenience macro to ease interface addition in the `_C_` section + * of G_DEFINE_TYPE_WITH_CODE() or G_DEFINE_ABSTRACT_TYPE_WITH_CODE(). + * See G_DEFINE_TYPE_EXTENDED() for an example. + * + * Note that this macro can only be used together with the `G_DEFINE_TYPE_*` + * macros, since it depends on variable names from those macros. + * + * Since: 2.4 + */ +#define G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init) { \ + const GInterfaceInfo g_implement_interface_info = { \ + (GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \ + }; \ + g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \ +} + +/** + * G_ADD_PRIVATE: + * @TypeName: the name of the type in CamelCase + * + * A convenience macro to ease adding private data to instances of a new type + * in the @_C_ section of G_DEFINE_TYPE_WITH_CODE() or + * G_DEFINE_ABSTRACT_TYPE_WITH_CODE(). + * + * For instance: + * + * |[ + * typedef struct _MyObject MyObject; + * typedef struct _MyObjectClass MyObjectClass; + * + * typedef struct { + * gint foo; + * gint bar; + * } MyObjectPrivate; + * + * G_DEFINE_TYPE_WITH_CODE (MyObject, my_object, G_TYPE_OBJECT, + * G_ADD_PRIVATE (MyObject)) + * ]| + * + * Will add `MyObjectPrivate` as the private data to any instance of the + * `MyObject` type. + * + * `G_DEFINE_TYPE_*` macros will automatically create a private function + * based on the arguments to this macro, which can be used to safely + * retrieve the private data from an instance of the type; for instance: + * + * |[ + * gint + * my_object_get_foo (MyObject *obj) + * { + * MyObjectPrivate *priv = my_object_get_instance_private (obj); + * + * g_return_val_if_fail (MY_IS_OBJECT (obj), 0); + * + * return priv->foo; + * } + * + * void + * my_object_set_bar (MyObject *obj, + * gint bar) + * { + * MyObjectPrivate *priv = my_object_get_instance_private (obj); + * + * g_return_if_fail (MY_IS_OBJECT (obj)); + * + * if (priv->bar != bar) + * priv->bar = bar; + * } + * ]| + * + * Since GLib 2.72, the returned `MyObjectPrivate` pointer is guaranteed to be + * aligned to at least the alignment of the largest basic GLib type (typically + * this is #guint64 or #gdouble). If you need larger alignment for an element in + * the struct, you should allocate it on the heap (aligned), or arrange for your + * `MyObjectPrivate` struct to be appropriately padded. + * + * Note that this macro can only be used together with the `G_DEFINE_TYPE_*` + * macros, since it depends on variable names from those macros. + * + * Also note that private structs added with these macros must have a struct + * name of the form `TypeNamePrivate`. + * + * It is safe to call the `_get_instance_private` function on %NULL or invalid + * objects since it's only adding an offset to the instance pointer. In that + * case the returned pointer must not be dereferenced. + * + * Since: 2.38 + */ +#define G_ADD_PRIVATE(TypeName) { \ + TypeName##_private_offset = \ + g_type_add_instance_private (g_define_type_id, sizeof (TypeName##Private)); \ +} + +/** + * G_PRIVATE_OFFSET: + * @TypeName: the name of the type in CamelCase + * @field: the name of the field in the private data structure + * + * Evaluates to the offset of the @field inside the instance private data + * structure for @TypeName. + * + * Note that this macro can only be used together with the `G_DEFINE_TYPE_*` + * and G_ADD_PRIVATE() macros, since it depends on variable names from + * those macros. + * + * Since: 2.38 + */ +#define G_PRIVATE_OFFSET(TypeName, field) \ + (TypeName##_private_offset + (G_STRUCT_OFFSET (TypeName##Private, field))) + +/** + * G_PRIVATE_FIELD_P: + * @TypeName: the name of the type in CamelCase + * @inst: the instance of @TypeName you wish to access + * @field_name: the name of the field in the private data structure + * + * Evaluates to a pointer to the @field_name inside the @inst private data + * structure for @TypeName. + * + * Note that this macro can only be used together with the `G_DEFINE_TYPE_*` + * and G_ADD_PRIVATE() macros, since it depends on variable names from + * those macros. + * + * Since: 2.38 + */ +#define G_PRIVATE_FIELD_P(TypeName, inst, field_name) \ + G_STRUCT_MEMBER_P (inst, G_PRIVATE_OFFSET (TypeName, field_name)) + +/** + * G_PRIVATE_FIELD: + * @TypeName: the name of the type in CamelCase + * @inst: the instance of @TypeName you wish to access + * @field_type: the type of the field in the private data structure + * @field_name: the name of the field in the private data structure + * + * Evaluates to the @field_name inside the @inst private data + * structure for @TypeName. + * + * Note that this macro can only be used together with the `G_DEFINE_TYPE_*` + * and G_ADD_PRIVATE() macros, since it depends on variable names from + * those macros. + * + * Since: 2.38 + */ +#define G_PRIVATE_FIELD(TypeName, inst, field_type, field_name) \ + G_STRUCT_MEMBER (field_type, inst, G_PRIVATE_OFFSET (TypeName, field_name)) + +/* we need to have this macro under conditional expansion, as it references + * a function that has been added in 2.38. see bug: + * https://bugzilla.gnome.org/show_bug.cgi?id=703191 + */ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +#define _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ +static void type_name##_class_intern_init (gpointer klass) \ +{ \ + type_name##_parent_class = g_type_class_peek_parent (klass); \ + if (TypeName##_private_offset != 0) \ + g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \ + type_name##_class_init ((TypeName##Class*) klass); \ +} + +#else +#define _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ +static void type_name##_class_intern_init (gpointer klass) \ +{ \ + type_name##_parent_class = g_type_class_peek_parent (klass); \ + type_name##_class_init ((TypeName##Class*) klass); \ +} +#endif /* GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 */ + +/* Added for _G_DEFINE_TYPE_EXTENDED_WITH_PRELUDE */ +#define _G_DEFINE_TYPE_EXTENDED_BEGIN_PRE(TypeName, type_name, TYPE_PARENT) \ +\ +static void type_name##_init (TypeName *self); \ +static void type_name##_class_init (TypeName##Class *klass); \ +static GType type_name##_get_type_once (void); \ +static gpointer type_name##_parent_class = NULL; \ +static gint TypeName##_private_offset; \ +\ +_G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ +\ +G_GNUC_UNUSED \ +static inline gpointer \ +type_name##_get_instance_private (TypeName *self) \ +{ \ + return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \ +} \ +\ +GType \ +type_name##_get_type (void) \ +{ \ + static gsize static_g_define_type_id = 0; + /* Prelude goes here */ + +/* Added for _G_DEFINE_TYPE_EXTENDED_WITH_PRELUDE */ +#define _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \ + if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ + g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ + return static_g_define_type_id; \ +} /* closes type_name##_get_type() */ \ +\ +G_NO_INLINE \ +static GType \ +type_name##_get_type_once (void) \ +{ \ + GType g_define_type_id = \ + g_type_register_static_simple (TYPE_PARENT, \ + g_intern_static_string (#TypeName), \ + sizeof (TypeName##Class), \ + (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \ + sizeof (TypeName), \ + (GInstanceInitFunc)(void (*)(void)) type_name##_init, \ + (GTypeFlags) flags); \ + { /* custom code follows */ +#define _G_DEFINE_TYPE_EXTENDED_END() \ + /* following custom code */ \ + } \ + return g_define_type_id; \ +} /* closes type_name##_get_type_once() */ + +/* This was defined before we had G_DEFINE_TYPE_WITH_CODE_AND_PRELUDE, it's simplest + * to keep it. + */ +#define _G_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \ + _G_DEFINE_TYPE_EXTENDED_BEGIN_PRE(TypeName, type_name, TYPE_PARENT) \ + _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \ + +/* Intentionally using (GTypeFlags) 0 instead of G_TYPE_FLAG_NONE here, + * to avoid deprecation warnings with older GLIB_VERSION_MAX_ALLOWED */ +#define _G_DEFINE_INTERFACE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PREREQ) \ +\ +static void type_name##_default_init (TypeName##Interface *klass); \ +\ +GType \ +type_name##_get_type (void) \ +{ \ + static gsize static_g_define_type_id = 0; \ + if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = \ + g_type_register_static_simple (G_TYPE_INTERFACE, \ + g_intern_static_string (#TypeName), \ + sizeof (TypeName##Interface), \ + (GClassInitFunc)(void (*)(void)) type_name##_default_init, \ + 0, \ + (GInstanceInitFunc)NULL, \ + (GTypeFlags) 0); \ + if (TYPE_PREREQ != G_TYPE_INVALID) \ + g_type_interface_add_prerequisite (g_define_type_id, TYPE_PREREQ); \ + { /* custom code follows */ +#define _G_DEFINE_INTERFACE_EXTENDED_END() \ + /* following custom code */ \ + } \ + g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ + return static_g_define_type_id; \ +} /* closes type_name##_get_type() */ + +/** + * G_DEFINE_BOXED_TYPE: + * @TypeName: The name of the new type, in Camel case + * @type_name: The name of the new type, in lowercase, with words + * separated by `_` + * @copy_func: the #GBoxedCopyFunc for the new type + * @free_func: the #GBoxedFreeFunc for the new type + * + * A convenience macro for defining a new custom boxed type. + * + * Using this macro is the recommended way of defining new custom boxed + * types, over calling g_boxed_type_register_static() directly. It defines + * a `type_name_get_type()` function which will return the newly defined + * #GType, enabling lazy instantiation. + * + * You might start by putting declarations in a header as follows: + * + * |[ + * #define MY_TYPE_STRUCT my_struct_get_type () + * GType my_struct_get_type (void) G_GNUC_CONST; + * + * MyStruct * my_struct_new (void); + * void my_struct_free (MyStruct *self); + * MyStruct * my_struct_copy (MyStruct *self); + * ]| + * + * And then use this macro and define your implementation in the source file as + * follows: + * + * |[ + * MyStruct * + * my_struct_new (void) + * { + * // ... your code to allocate a new MyStruct ... + * } + * + * void + * my_struct_free (MyStruct *self) + * { + * // ... your code to free a MyStruct ... + * } + * + * MyStruct * + * my_struct_copy (MyStruct *self) + * { + * // ... your code return a newly allocated copy of a MyStruct ... + * } + * + * G_DEFINE_BOXED_TYPE (MyStruct, my_struct, my_struct_copy, my_struct_free) + * + * void + * foo () + * { + * MyStruct *ms; + * + * ms = my_struct_new (); + * // ... your code ... + * my_struct_free (ms); + * } + * ]| + * + * Since: 2.26 + */ +#define G_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func) G_DEFINE_BOXED_TYPE_WITH_CODE (TypeName, type_name, copy_func, free_func, {}) +/** + * G_DEFINE_BOXED_TYPE_WITH_CODE: + * @TypeName: The name of the new type, in Camel case + * @type_name: The name of the new type, in lowercase, with words + * separated by `_` + * @copy_func: the #GBoxedCopyFunc for the new type + * @free_func: the #GBoxedFreeFunc for the new type + * @_C_: Custom code that gets inserted in the `*_get_type()` function + * + * A convenience macro for boxed type implementations. + * + * Similar to G_DEFINE_BOXED_TYPE(), but allows to insert custom code into the + * `type_name_get_type()` function, e.g. to register value transformations with + * g_value_register_transform_func(), for instance: + * + * |[ + * G_DEFINE_BOXED_TYPE_WITH_CODE (GdkRectangle, gdk_rectangle, + * gdk_rectangle_copy, + * gdk_rectangle_free, + * register_rectangle_transform_funcs (g_define_type_id)) + * ]| + * + * Similarly to the `G_DEFINE_TYPE_*` family of macros, the #GType of the newly + * defined boxed type is exposed in the `g_define_type_id` variable. + * + * Since: 2.26 + */ +#define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() + +/* Only use this in non-C++ on GCC >= 2.7, except for Darwin/ppc64. + * See https://bugzilla.gnome.org/show_bug.cgi?id=647145 + */ +#if !defined (__cplusplus) && (G_GNUC_CHECK_VERSION(2, 7)) && !(defined (__APPLE__) && defined (__ppc64__)) +#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \ +static GType type_name##_get_type_once (void); \ +\ +GType \ +type_name##_get_type (void) \ +{ \ + static gsize static_g_define_type_id = 0; \ + if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ + g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ + return static_g_define_type_id; \ +} \ +\ +G_NO_INLINE \ +static GType \ +type_name##_get_type_once (void) \ +{ \ + GType (* _g_register_boxed) \ + (const gchar *, \ + union \ + { \ + TypeName * (*do_copy_type) (TypeName *); \ + TypeName * (*do_const_copy_type) (const TypeName *); \ + GBoxedCopyFunc do_copy_boxed; \ + } __attribute__((__transparent_union__)), \ + union \ + { \ + void (* do_free_type) (TypeName *); \ + GBoxedFreeFunc do_free_boxed; \ + } __attribute__((__transparent_union__)) \ + ) = g_boxed_type_register_static; \ + GType g_define_type_id = \ + _g_register_boxed (g_intern_static_string (#TypeName), copy_func, free_func); \ + { /* custom code follows */ +#else +#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \ +static GType type_name##_get_type_once (void); \ +\ +GType \ +type_name##_get_type (void) \ +{ \ + static gsize static_g_define_type_id = 0; \ + if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ + g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ + return static_g_define_type_id; \ +} \ +\ +G_NO_INLINE \ +static GType \ +type_name##_get_type_once (void) \ +{ \ + GType g_define_type_id = \ + g_boxed_type_register_static (g_intern_static_string (#TypeName), \ + (GBoxedCopyFunc) copy_func, \ + (GBoxedFreeFunc) free_func); \ + { /* custom code follows */ +#endif /* __GNUC__ */ + +/** + * G_DEFINE_POINTER_TYPE: + * @TypeName: The name of the new type, in Camel case + * @type_name: The name of the new type, in lowercase, with words + * separated by `_` + * + * A convenience macro for pointer type implementations, which defines a + * `type_name_get_type()` function registering the pointer type. + * + * Since: 2.26 + */ +#define G_DEFINE_POINTER_TYPE(TypeName, type_name) G_DEFINE_POINTER_TYPE_WITH_CODE (TypeName, type_name, {}) +/** + * G_DEFINE_POINTER_TYPE_WITH_CODE: + * @TypeName: The name of the new type, in Camel case + * @type_name: The name of the new type, in lowercase, with words + * separated by `_` + * @_C_: Custom code that gets inserted in the `*_get_type()` function + * + * A convenience macro for pointer type implementations. + * Similar to G_DEFINE_POINTER_TYPE(), but allows to insert + * custom code into the `type_name_get_type()` function. + * + * Since: 2.26 + */ +#define G_DEFINE_POINTER_TYPE_WITH_CODE(TypeName, type_name, _C_) _G_DEFINE_POINTER_TYPE_BEGIN (TypeName, type_name) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() + +#define _G_DEFINE_POINTER_TYPE_BEGIN(TypeName, type_name) \ +static GType type_name##_get_type_once (void); \ +\ +GType \ +type_name##_get_type (void) \ +{ \ + static gsize static_g_define_type_id = 0; \ + if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ + g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ + return static_g_define_type_id; \ +} \ +\ +G_NO_INLINE \ +static GType \ +type_name##_get_type_once (void) \ +{ \ + GType g_define_type_id = \ + g_pointer_type_register_static (g_intern_static_string (#TypeName)); \ + { /* custom code follows */ + +/* --- protected (for fundamental type implementations) --- */ +GLIB_AVAILABLE_IN_ALL +GTypePlugin* g_type_get_plugin (GType type); +GLIB_AVAILABLE_IN_ALL +GTypePlugin* g_type_interface_get_plugin (GType instance_type, + GType interface_type); +GLIB_AVAILABLE_IN_ALL +GType g_type_fundamental_next (void); +GLIB_AVAILABLE_IN_ALL +GType g_type_fundamental (GType type_id); +GLIB_AVAILABLE_IN_ALL +GTypeInstance* g_type_create_instance (GType type); +GLIB_AVAILABLE_IN_ALL +void g_type_free_instance (GTypeInstance *instance); + +GLIB_AVAILABLE_IN_ALL +void g_type_add_class_cache_func (gpointer cache_data, + GTypeClassCacheFunc cache_func); +GLIB_AVAILABLE_IN_ALL +void g_type_remove_class_cache_func (gpointer cache_data, + GTypeClassCacheFunc cache_func); +GLIB_AVAILABLE_IN_ALL +void g_type_class_unref_uncached (gpointer g_class); + +GLIB_AVAILABLE_IN_ALL +void g_type_add_interface_check (gpointer check_data, + GTypeInterfaceCheckFunc check_func); +GLIB_AVAILABLE_IN_ALL +void g_type_remove_interface_check (gpointer check_data, + GTypeInterfaceCheckFunc check_func); + +GLIB_AVAILABLE_IN_ALL +GTypeValueTable* g_type_value_table_peek (GType type); + + +/*< private >*/ +GLIB_AVAILABLE_IN_ALL +gboolean g_type_check_instance (GTypeInstance *instance) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +GTypeInstance* g_type_check_instance_cast (GTypeInstance *instance, + GType iface_type); +GLIB_AVAILABLE_IN_ALL +gboolean g_type_check_instance_is_a (GTypeInstance *instance, + GType iface_type) G_GNUC_PURE; +GLIB_AVAILABLE_IN_2_42 +gboolean g_type_check_instance_is_fundamentally_a (GTypeInstance *instance, + GType fundamental_type) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +GTypeClass* g_type_check_class_cast (GTypeClass *g_class, + GType is_a_type); +GLIB_AVAILABLE_IN_ALL +gboolean g_type_check_class_is_a (GTypeClass *g_class, + GType is_a_type) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gboolean g_type_check_is_value_type (GType type) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_type_check_value (const GValue *value) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gboolean g_type_check_value_holds (const GValue *value, + GType type) G_GNUC_PURE; +GLIB_AVAILABLE_IN_ALL +gboolean g_type_test_flags (GType type, + guint flags) G_GNUC_CONST; + + +/* --- debugging functions --- */ +GLIB_AVAILABLE_IN_ALL +const gchar * g_type_name_from_instance (GTypeInstance *instance); +GLIB_AVAILABLE_IN_ALL +const gchar * g_type_name_from_class (GTypeClass *g_class); + + +/* --- implementation bits --- */ +#ifndef G_DISABLE_CAST_CHECKS +# define _G_TYPE_CIC(ip, gt, ct) \ + ((ct*) (void *) g_type_check_instance_cast ((GTypeInstance*) ip, gt)) +# define _G_TYPE_CCC(cp, gt, ct) \ + ((ct*) (void *) g_type_check_class_cast ((GTypeClass*) cp, gt)) +#else /* G_DISABLE_CAST_CHECKS */ +# define _G_TYPE_CIC(ip, gt, ct) ((ct*) ip) +# define _G_TYPE_CCC(cp, gt, ct) ((ct*) cp) +#endif /* G_DISABLE_CAST_CHECKS */ +#define _G_TYPE_CHI(ip) (g_type_check_instance ((GTypeInstance*) ip)) +#define _G_TYPE_CHV(vl) (g_type_check_value ((GValue*) vl)) +#define _G_TYPE_IGC(ip, gt, ct) ((ct*) (((GTypeInstance*) ip)->g_class)) +#define _G_TYPE_IGI(ip, gt, ct) ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt)) +#define _G_TYPE_CIFT(ip, ft) (g_type_check_instance_is_fundamentally_a ((GTypeInstance*) ip, ft)) +#ifdef __GNUC__ +# define _G_TYPE_CIT(ip, gt) (G_GNUC_EXTENSION ({ \ + GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \ + if (!__inst) \ + __r = FALSE; \ + else if (__inst->g_class && __inst->g_class->g_type == __t) \ + __r = TRUE; \ + else \ + __r = g_type_check_instance_is_a (__inst, __t); \ + __r; \ +})) +# define _G_TYPE_CCT(cp, gt) (G_GNUC_EXTENSION ({ \ + GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \ + if (!__class) \ + __r = FALSE; \ + else if (__class->g_type == __t) \ + __r = TRUE; \ + else \ + __r = g_type_check_class_is_a (__class, __t); \ + __r; \ +})) +# define _G_TYPE_CVH(vl, gt) (G_GNUC_EXTENSION ({ \ + const GValue *__val = (const GValue*) vl; GType __t = gt; gboolean __r; \ + if (!__val) \ + __r = FALSE; \ + else if (__val->g_type == __t) \ + __r = TRUE; \ + else \ + __r = g_type_check_value_holds (__val, __t); \ + __r; \ +})) +#else /* !__GNUC__ */ +# define _G_TYPE_CIT(ip, gt) (g_type_check_instance_is_a ((GTypeInstance*) ip, gt)) +# define _G_TYPE_CCT(cp, gt) (g_type_check_class_is_a ((GTypeClass*) cp, gt)) +# define _G_TYPE_CVH(vl, gt) (g_type_check_value_holds ((const GValue*) vl, gt)) +#endif /* !__GNUC__ */ +/** + * G_TYPE_FLAG_RESERVED_ID_BIT: + * + * A bit in the type number that's supposed to be left untouched. + */ +#define G_TYPE_FLAG_RESERVED_ID_BIT ((GType) (1 << 0)) + +G_END_DECLS + +#endif /* __G_TYPE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtypemodule.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtypemodule.h new file mode 100644 index 0000000..881a6f6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtypemodule.h @@ -0,0 +1,302 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#ifndef __G_TYPE_MODULE_H__ +#define __G_TYPE_MODULE_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GTypeModule GTypeModule; +typedef struct _GTypeModuleClass GTypeModuleClass; + +#define G_TYPE_TYPE_MODULE (g_type_module_get_type ()) +#define G_TYPE_MODULE(module) (G_TYPE_CHECK_INSTANCE_CAST ((module), G_TYPE_TYPE_MODULE, GTypeModule)) +#define G_TYPE_MODULE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TYPE_MODULE, GTypeModuleClass)) +#define G_IS_TYPE_MODULE(module) (G_TYPE_CHECK_INSTANCE_TYPE ((module), G_TYPE_TYPE_MODULE)) +#define G_IS_TYPE_MODULE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TYPE_MODULE)) +#define G_TYPE_MODULE_GET_CLASS(module) (G_TYPE_INSTANCE_GET_CLASS ((module), G_TYPE_TYPE_MODULE, GTypeModuleClass)) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTypeModule, g_object_unref) + +/** + * GTypeModule: + * @name: the name of the module + * + * The members of the GTypeModule structure should not + * be accessed directly, except for the @name field. + */ +struct _GTypeModule +{ + GObject parent_instance; + + guint use_count; + GSList *type_infos; + GSList *interface_infos; + + /*< public >*/ + gchar *name; +}; + +/** + * GTypeModuleClass: + * @parent_class: the parent class + * @load: loads the module and registers one or more types using + * g_type_module_register_type(). + * @unload: unloads the module + * + * In order to implement dynamic loading of types based on #GTypeModule, + * the @load and @unload functions in #GTypeModuleClass must be implemented. + */ +struct _GTypeModuleClass +{ + GObjectClass parent_class; + + /*< public >*/ + gboolean (* load) (GTypeModule *module); + void (* unload) (GTypeModule *module); + + /*< private >*/ + /* Padding for future expansion */ + void (*reserved1) (void); + void (*reserved2) (void); + void (*reserved3) (void); + void (*reserved4) (void); +}; + +/** + * G_DEFINE_DYNAMIC_TYPE: + * @TN: The name of the new type, in Camel case. + * @t_n: The name of the new type, in lowercase, with words + * separated by '_'. + * @T_P: The #GType of the parent type. + * + * A convenience macro for dynamic type implementations, which declares a + * class initialization function, an instance initialization function (see + * #GTypeInfo for information about these) and a static variable named + * `t_n`_parent_class pointing to the parent class. + * + * Furthermore, it defines a `*_get_type()` and a static `*_register_type()` + * functions for use in your `module_init()`. + * + * See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example. + * + * Since: 2.14 + */ +#define G_DEFINE_DYNAMIC_TYPE(TN, t_n, T_P) G_DEFINE_DYNAMIC_TYPE_EXTENDED (TN, t_n, T_P, 0, {}) +/** + * G_DEFINE_DYNAMIC_TYPE_EXTENDED: + * @TypeName: The name of the new type, in Camel case. + * @type_name: The name of the new type, in lowercase, with words + * separated by '_'. + * @TYPE_PARENT: The #GType of the parent type. + * @flags: #GTypeFlags to pass to g_type_module_register_type() + * @CODE: Custom code that gets inserted in the *_get_type() function. + * + * A more general version of G_DEFINE_DYNAMIC_TYPE() which + * allows to specify #GTypeFlags and custom code. + * + * |[ + * G_DEFINE_DYNAMIC_TYPE_EXTENDED (GtkGadget, + * gtk_gadget, + * GTK_TYPE_THING, + * 0, + * G_IMPLEMENT_INTERFACE_DYNAMIC (TYPE_GIZMO, + * gtk_gadget_gizmo_init)); + * ]| + * + * expands to + * + * |[ + * static void gtk_gadget_init (GtkGadget *self); + * static void gtk_gadget_class_init (GtkGadgetClass *klass); + * static void gtk_gadget_class_finalize (GtkGadgetClass *klass); + * + * static gpointer gtk_gadget_parent_class = NULL; + * static GType gtk_gadget_type_id = 0; + * + * static void gtk_gadget_class_intern_init (gpointer klass) + * { + * gtk_gadget_parent_class = g_type_class_peek_parent (klass); + * gtk_gadget_class_init ((GtkGadgetClass*) klass); + * } + * + * GType + * gtk_gadget_get_type (void) + * { + * return gtk_gadget_type_id; + * } + * + * static void + * gtk_gadget_register_type (GTypeModule *type_module) + * { + * const GTypeInfo g_define_type_info = { + * sizeof (GtkGadgetClass), + * (GBaseInitFunc) NULL, + * (GBaseFinalizeFunc) NULL, + * (GClassInitFunc) gtk_gadget_class_intern_init, + * (GClassFinalizeFunc) gtk_gadget_class_finalize, + * NULL, // class_data + * sizeof (GtkGadget), + * 0, // n_preallocs + * (GInstanceInitFunc) gtk_gadget_init, + * NULL // value_table + * }; + * gtk_gadget_type_id = g_type_module_register_type (type_module, + * GTK_TYPE_THING, + * "GtkGadget", + * &g_define_type_info, + * (GTypeFlags) flags); + * { + * const GInterfaceInfo g_implement_interface_info = { + * (GInterfaceInitFunc) gtk_gadget_gizmo_init + * }; + * g_type_module_add_interface (type_module, g_define_type_id, TYPE_GIZMO, &g_implement_interface_info); + * } + * } + * ]| + * + * Since: 2.14 + */ +#define G_DEFINE_DYNAMIC_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, CODE) \ +static void type_name##_init (TypeName *self); \ +static void type_name##_class_init (TypeName##Class *klass); \ +static void type_name##_class_finalize (TypeName##Class *klass); \ +static gpointer type_name##_parent_class = NULL; \ +static GType type_name##_type_id = 0; \ +static gint TypeName##_private_offset; \ +\ +_G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ +\ +G_GNUC_UNUSED \ +static inline gpointer \ +type_name##_get_instance_private (TypeName *self) \ +{ \ + return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \ +} \ +\ +GType \ +type_name##_get_type (void) \ +{ \ + return type_name##_type_id; \ +} \ +static void \ +type_name##_register_type (GTypeModule *type_module) \ +{ \ + GType g_define_type_id G_GNUC_UNUSED; \ + const GTypeInfo g_define_type_info = { \ + sizeof (TypeName##Class), \ + (GBaseInitFunc) NULL, \ + (GBaseFinalizeFunc) NULL, \ + (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \ + (GClassFinalizeFunc)(void (*)(void)) type_name##_class_finalize, \ + NULL, /* class_data */ \ + sizeof (TypeName), \ + 0, /* n_preallocs */ \ + (GInstanceInitFunc)(void (*)(void)) type_name##_init, \ + NULL /* value_table */ \ + }; \ + type_name##_type_id = g_type_module_register_type (type_module, \ + TYPE_PARENT, \ + #TypeName, \ + &g_define_type_info, \ + (GTypeFlags) flags); \ + g_define_type_id = type_name##_type_id; \ + { CODE ; } \ +} + +/** + * G_IMPLEMENT_INTERFACE_DYNAMIC: + * @TYPE_IFACE: The #GType of the interface to add + * @iface_init: The interface init function + * + * A convenience macro to ease interface addition in the @_C_ section + * of G_DEFINE_DYNAMIC_TYPE_EXTENDED(). + * + * See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example. + * + * Note that this macro can only be used together with the + * G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable + * names from that macro. + * + * Since: 2.24 + */ +#define G_IMPLEMENT_INTERFACE_DYNAMIC(TYPE_IFACE, iface_init) { \ + const GInterfaceInfo g_implement_interface_info = { \ + (GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \ + }; \ + g_type_module_add_interface (type_module, g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \ +} + +/** + * G_ADD_PRIVATE_DYNAMIC: + * @TypeName: the name of the type in CamelCase + * + * A convenience macro to ease adding private data to instances of a new dynamic + * type in the @_C_ section of G_DEFINE_DYNAMIC_TYPE_EXTENDED(). + * + * See G_ADD_PRIVATE() for details, it is similar but for static types. + * + * Note that this macro can only be used together with the + * G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable + * names from that macro. + * + * Since: 2.38 + */ +#define G_ADD_PRIVATE_DYNAMIC(TypeName) { \ + TypeName##_private_offset = sizeof (TypeName##Private); \ +} + +GLIB_AVAILABLE_IN_ALL +GType g_type_module_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +gboolean g_type_module_use (GTypeModule *module); +GLIB_AVAILABLE_IN_ALL +void g_type_module_unuse (GTypeModule *module); +GLIB_AVAILABLE_IN_ALL +void g_type_module_set_name (GTypeModule *module, + const gchar *name); +GLIB_AVAILABLE_IN_ALL +GType g_type_module_register_type (GTypeModule *module, + GType parent_type, + const gchar *type_name, + const GTypeInfo *type_info, + GTypeFlags flags); +GLIB_AVAILABLE_IN_ALL +void g_type_module_add_interface (GTypeModule *module, + GType instance_type, + GType interface_type, + const GInterfaceInfo *interface_info); +GLIB_AVAILABLE_IN_ALL +GType g_type_module_register_enum (GTypeModule *module, + const gchar *name, + const GEnumValue *const_static_values); +GLIB_AVAILABLE_IN_ALL +GType g_type_module_register_flags (GTypeModule *module, + const gchar *name, + const GFlagsValue *const_static_values); + +G_END_DECLS + +#endif /* __G_TYPE_MODULE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtypeplugin.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtypeplugin.h new file mode 100644 index 0000000..92a7242 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gtypeplugin.h @@ -0,0 +1,136 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2000 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + */ +#ifndef __G_TYPE_PLUGIN_H__ +#define __G_TYPE_PLUGIN_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* --- type macros --- */ +#define G_TYPE_TYPE_PLUGIN (g_type_plugin_get_type ()) +#define G_TYPE_PLUGIN(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TYPE_PLUGIN, GTypePlugin)) +#define G_TYPE_PLUGIN_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), G_TYPE_TYPE_PLUGIN, GTypePluginClass)) +#define G_IS_TYPE_PLUGIN(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TYPE_PLUGIN)) +#define G_IS_TYPE_PLUGIN_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), G_TYPE_TYPE_PLUGIN)) +#define G_TYPE_PLUGIN_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TYPE_PLUGIN, GTypePluginClass)) + + +/* --- typedefs & structures --- */ +typedef struct _GTypePluginClass GTypePluginClass; +/** + * GTypePluginUse: + * @plugin: the #GTypePlugin whose use count should be increased + * + * The type of the @use_plugin function of #GTypePluginClass, which gets called + * to increase the use count of @plugin. + */ +typedef void (*GTypePluginUse) (GTypePlugin *plugin); +/** + * GTypePluginUnuse: + * @plugin: the #GTypePlugin whose use count should be decreased + * + * The type of the @unuse_plugin function of #GTypePluginClass. + */ +typedef void (*GTypePluginUnuse) (GTypePlugin *plugin); +/** + * GTypePluginCompleteTypeInfo: + * @plugin: the #GTypePlugin + * @g_type: the #GType whose info is completed + * @info: the #GTypeInfo struct to fill in + * @value_table: the #GTypeValueTable to fill in + * + * The type of the @complete_type_info function of #GTypePluginClass. + */ +typedef void (*GTypePluginCompleteTypeInfo) (GTypePlugin *plugin, + GType g_type, + GTypeInfo *info, + GTypeValueTable *value_table); +/** + * GTypePluginCompleteInterfaceInfo: + * @plugin: the #GTypePlugin + * @instance_type: the #GType of an instantiatable type to which the interface + * is added + * @interface_type: the #GType of the interface whose info is completed + * @info: the #GInterfaceInfo to fill in + * + * The type of the @complete_interface_info function of #GTypePluginClass. + */ +typedef void (*GTypePluginCompleteInterfaceInfo) (GTypePlugin *plugin, + GType instance_type, + GType interface_type, + GInterfaceInfo *info); +/** + * GTypePlugin: + * + * The GTypePlugin typedef is used as a placeholder + * for objects that implement the GTypePlugin interface. + */ +/** + * GTypePluginClass: + * @use_plugin: Increases the use count of the plugin. + * @unuse_plugin: Decreases the use count of the plugin. + * @complete_type_info: Fills in the #GTypeInfo and + * #GTypeValueTable structs for the type. The structs are initialized + * with `memset(s, 0, sizeof (s))` before calling this function. + * @complete_interface_info: Fills in missing parts of the #GInterfaceInfo + * for the interface. The structs is initialized with + * `memset(s, 0, sizeof (s))` before calling this function. + * + * The #GTypePlugin interface is used by the type system in order to handle + * the lifecycle of dynamically loaded types. + */ +struct _GTypePluginClass +{ + /*< private >*/ + GTypeInterface base_iface; + + /*< public >*/ + GTypePluginUse use_plugin; + GTypePluginUnuse unuse_plugin; + GTypePluginCompleteTypeInfo complete_type_info; + GTypePluginCompleteInterfaceInfo complete_interface_info; +}; + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GType g_type_plugin_get_type (void) G_GNUC_CONST; +GLIB_AVAILABLE_IN_ALL +void g_type_plugin_use (GTypePlugin *plugin); +GLIB_AVAILABLE_IN_ALL +void g_type_plugin_unuse (GTypePlugin *plugin); +GLIB_AVAILABLE_IN_ALL +void g_type_plugin_complete_type_info (GTypePlugin *plugin, + GType g_type, + GTypeInfo *info, + GTypeValueTable *value_table); +GLIB_AVAILABLE_IN_ALL +void g_type_plugin_complete_interface_info (GTypePlugin *plugin, + GType instance_type, + GType interface_type, + GInterfaceInfo *info); + +G_END_DECLS + +#endif /* __G_TYPE_PLUGIN_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvalue.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvalue.h new file mode 100644 index 0000000..d7adca2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvalue.h @@ -0,0 +1,212 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1997-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * gvalue.h: generic GValue functions + */ +#ifndef __G_VALUE_H__ +#define __G_VALUE_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* --- type macros --- */ +/** + * G_TYPE_IS_VALUE: + * @type: A #GType value. + * + * Checks whether the passed in type ID can be used for g_value_init(). + * + * That is, this macro checks whether this type provides an implementation + * of the #GTypeValueTable functions required for a type to create a #GValue of. + * + * Returns: Whether @type is suitable as a #GValue type. + */ +#define G_TYPE_IS_VALUE(type) (g_type_check_is_value_type (type)) +/** + * G_IS_VALUE: + * @value: A #GValue structure. + * + * Checks if @value is a valid and initialized #GValue structure. + * + * Returns: %TRUE on success. + */ +#define G_IS_VALUE(value) (G_TYPE_CHECK_VALUE (value)) +/** + * G_VALUE_TYPE: + * @value: A #GValue structure. + * + * Get the type identifier of @value. + * + * Returns: the #GType. + */ +#define G_VALUE_TYPE(value) (((GValue*) (value))->g_type) +/** + * G_VALUE_TYPE_NAME: + * @value: A #GValue structure. + * + * Gets the type name of @value. + * + * Returns: the type name. + */ +#define G_VALUE_TYPE_NAME(value) (g_type_name (G_VALUE_TYPE (value))) +/** + * G_VALUE_HOLDS: + * @value: A #GValue structure. + * @type: A #GType value. + * + * Checks if @value holds (or contains) a value of @type. + * This macro will also check for @value != %NULL and issue a + * warning if the check fails. + * + * Returns: %TRUE if @value holds the @type. + */ +#define G_VALUE_HOLDS(value,type) (G_TYPE_CHECK_VALUE_TYPE ((value), (type))) + + +/* --- typedefs & structures --- */ +/** + * GValueTransform: + * @src_value: Source value. + * @dest_value: Target value. + * + * The type of value transformation functions which can be registered with + * g_value_register_transform_func(). + * + * @dest_value will be initialized to the correct destination type. + */ +typedef void (*GValueTransform) (const GValue *src_value, + GValue *dest_value); +/** + * GValue: + * + * An opaque structure used to hold different types of values. + * + * The data within the structure has protected scope: it is accessible only + * to functions within a #GTypeValueTable structure, or implementations of + * the g_value_*() API. That is, code portions which implement new fundamental + * types. + * + * #GValue users cannot make any assumptions about how data is stored + * within the 2 element @data union, and the @g_type member should + * only be accessed through the G_VALUE_TYPE() macro. + */ +struct _GValue +{ + /*< private >*/ + GType g_type; + + /* public for GTypeValueTable methods */ + union { + gint v_int; + guint v_uint; + glong v_long; + gulong v_ulong; + gint64 v_int64; + guint64 v_uint64; + gfloat v_float; + gdouble v_double; + gpointer v_pointer; + } data[2]; +}; + + +/* --- prototypes --- */ +GLIB_AVAILABLE_IN_ALL +GValue* g_value_init (GValue *value, + GType g_type); +GLIB_AVAILABLE_IN_ALL +void g_value_copy (const GValue *src_value, + GValue *dest_value); +GLIB_AVAILABLE_IN_ALL +GValue* g_value_reset (GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_unset (GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_instance (GValue *value, + gpointer instance); +GLIB_AVAILABLE_IN_2_42 +void g_value_init_from_instance (GValue *value, + gpointer instance); + + +/* --- private --- */ +GLIB_AVAILABLE_IN_ALL +gboolean g_value_fits_pointer (const GValue *value); +GLIB_AVAILABLE_IN_ALL +gpointer g_value_peek_pointer (const GValue *value); + + +/* --- implementation details --- */ +GLIB_AVAILABLE_IN_ALL +gboolean g_value_type_compatible (GType src_type, + GType dest_type); +GLIB_AVAILABLE_IN_ALL +gboolean g_value_type_transformable (GType src_type, + GType dest_type); +GLIB_AVAILABLE_IN_ALL +gboolean g_value_transform (const GValue *src_value, + GValue *dest_value); +GLIB_AVAILABLE_IN_ALL +void g_value_register_transform_func (GType src_type, + GType dest_type, + GValueTransform transform_func); + +/** + * G_VALUE_NOCOPY_CONTENTS: + * + * If passed to G_VALUE_COLLECT(), allocated data won't be copied + * but used verbatim. This does not affect ref-counted types like + * objects. This does not affect usage of g_value_copy(), the data will + * be copied if it is not ref-counted. + */ +#define G_VALUE_NOCOPY_CONTENTS (1 << 27) + +/** + * G_VALUE_INTERNED_STRING: + * + * For string values, indicates that the string contained is canonical and will + * exist for the duration of the process. See g_value_set_interned_string(). + * + * Since: 2.66 + */ +#define G_VALUE_INTERNED_STRING (1 << 28) GLIB_AVAILABLE_MACRO_IN_2_66 + +/** + * G_VALUE_INIT: + * + * A #GValue must be initialized before it can be used. This macro can + * be used as initializer instead of an explicit `{ 0 }` when declaring + * a variable, but it cannot be assigned to a variable. + * + * |[ + * GValue value = G_VALUE_INIT; + * ]| + * + * Since: 2.30 + */ +#define G_VALUE_INIT { 0, { { 0 } } } + + +G_END_DECLS + +#endif /* __G_VALUE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluearray.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluearray.h new file mode 100644 index 0000000..4655658 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluearray.h @@ -0,0 +1,106 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 2001 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * gvaluearray.h: GLib array type holding GValues + */ +#ifndef __G_VALUE_ARRAY_H__ +#define __G_VALUE_ARRAY_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * G_TYPE_VALUE_ARRAY: + * + * The type ID of the "GValueArray" type which is a boxed type, + * used to pass around pointers to GValueArrays. + * + * Deprecated: 2.32: Use #GArray instead of #GValueArray + */ +#define G_TYPE_VALUE_ARRAY (g_value_array_get_type ()) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(G_TYPE_ARRAY) + +/* --- typedefs & structs --- */ +typedef struct _GValueArray GValueArray; +/** + * GValueArray: + * @n_values: number of values contained in the array + * @values: array of values + * + * A #GValueArray contains an array of #GValue elements. + */ +struct _GValueArray +{ + guint n_values; + GValue *values; + + /*< private >*/ + guint n_prealloced; +}; + +/* --- prototypes --- */ +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GType g_value_array_get_type (void) G_GNUC_CONST; + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValue* g_value_array_get_nth (GValueArray *value_array, + guint index_); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_new (guint n_prealloced); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +void g_value_array_free (GValueArray *value_array); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_copy (const GValueArray *value_array); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_prepend (GValueArray *value_array, + const GValue *value); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_append (GValueArray *value_array, + const GValue *value); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_insert (GValueArray *value_array, + guint index_, + const GValue *value); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_remove (GValueArray *value_array, + guint index_); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_sort (GValueArray *value_array, + GCompareFunc compare_func); + +GLIB_DEPRECATED_IN_2_32_FOR(GArray) +GValueArray* g_value_array_sort_with_data (GValueArray *value_array, + GCompareDataFunc compare_func, + gpointer user_data); + + +G_END_DECLS + +#endif /* __G_VALUE_ARRAY_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluecollector.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluecollector.h new file mode 100644 index 0000000..7e7ae02 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluecollector.h @@ -0,0 +1,290 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * gvaluecollector.h: GValue varargs stubs + */ +/** + * SECTION:value_collection + * @Short_description: Converting varargs to generic values + * @Title: Varargs Value Collection + * + * The macros in this section provide the varargs parsing support needed + * in variadic GObject functions such as g_object_new() or g_object_set(). + * + * They currently support the collection of integral types, floating point + * types and pointers. + */ +#ifndef __G_VALUE_COLLECTOR_H__ +#define __G_VALUE_COLLECTOR_H__ + +#include + +G_BEGIN_DECLS + +/* we may want to add aggregate types here some day, if requested + * by users. the basic C types are covered already, everything + * smaller than an int is promoted to an integer and floats are + * always promoted to doubles for varargs call constructions. + */ +enum /*< skip >*/ +{ + G_VALUE_COLLECT_INT = 'i', + G_VALUE_COLLECT_LONG = 'l', + G_VALUE_COLLECT_INT64 = 'q', + G_VALUE_COLLECT_DOUBLE = 'd', + G_VALUE_COLLECT_POINTER = 'p' +}; + + +/* vararg union holding actual values collected + */ +/** + * GTypeCValue: + * @v_int: the field for holding integer values + * @v_long: the field for holding long integer values + * @v_int64: the field for holding 64 bit integer values + * @v_double: the field for holding floating point values + * @v_pointer: the field for holding pointers + * + * A union holding one collected value. + */ +union _GTypeCValue +{ + gint v_int; + glong v_long; + gint64 v_int64; + gdouble v_double; + gpointer v_pointer; +}; + +/** + * G_VALUE_COLLECT_INIT: + * @value: a #GValue return location. @value must contain only 0 bytes. + * @_value_type: the #GType to use for @value. + * @var_args: the va_list variable; it may be evaluated multiple times + * @flags: flags which are passed on to the collect_value() function of + * the #GTypeValueTable of @value. + * @__error: a #gchar** variable that will be modified to hold a g_new() + * allocated error messages if something fails + * + * Collects a variable argument value from a `va_list`. + * + * We have to implement the varargs collection as a macro, because on some + * systems `va_list` variables cannot be passed by reference. + * + * Since: 2.24 + */ +#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error) \ + G_STMT_START { \ + GTypeValueTable *g_vci_vtab; \ + G_VALUE_COLLECT_INIT2(value, g_vci_vtab, _value_type, var_args, flags, __error); \ +} G_STMT_END + +/** + * G_VALUE_COLLECT_INIT2: + * @value: a #GValue return location. @value must contain only 0 bytes. + * @g_vci_vtab: a #GTypeValueTable pointer that will be set to the value table + * for @_value_type + * @_value_type: the #GType to use for @value. + * @var_args: the va_list variable; it may be evaluated multiple times + * @flags: flags which are passed on to the collect_value() function of + * the #GTypeValueTable of @value. + * @__error: a #gchar** variable that will be modified to hold a g_new() + * allocated error messages if something fails + * + * A variant of G_VALUE_COLLECT_INIT() that provides the #GTypeValueTable + * to the caller. + * + * Since: 2.74 + */ +#define G_VALUE_COLLECT_INIT2(value, g_vci_vtab, _value_type, var_args, flags, __error) \ +G_STMT_START { \ + GValue *g_vci_val = (value); \ + guint g_vci_flags = (flags); \ + const gchar *g_vci_collect_format; \ + GTypeCValue g_vci_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; \ + guint g_vci_n_values = 0; \ + g_vci_vtab = g_type_value_table_peek (_value_type); \ + g_vci_collect_format = g_vci_vtab->collect_format; \ + g_vci_val->g_type = _value_type; /* value_meminit() from gvalue.c */ \ + while (*g_vci_collect_format) \ + { \ + GTypeCValue *g_vci_cvalue = g_vci_cvalues + g_vci_n_values++; \ + \ + switch (*g_vci_collect_format++) \ + { \ + case G_VALUE_COLLECT_INT: \ + g_vci_cvalue->v_int = va_arg ((var_args), gint); \ + break; \ + case G_VALUE_COLLECT_LONG: \ + g_vci_cvalue->v_long = va_arg ((var_args), glong); \ + break; \ + case G_VALUE_COLLECT_INT64: \ + g_vci_cvalue->v_int64 = va_arg ((var_args), gint64); \ + break; \ + case G_VALUE_COLLECT_DOUBLE: \ + g_vci_cvalue->v_double = va_arg ((var_args), gdouble); \ + break; \ + case G_VALUE_COLLECT_POINTER: \ + g_vci_cvalue->v_pointer = va_arg ((var_args), gpointer); \ + break; \ + default: \ + g_assert_not_reached (); \ + } \ + } \ + *(__error) = g_vci_vtab->collect_value (g_vci_val, \ + g_vci_n_values, \ + g_vci_cvalues, \ + g_vci_flags); \ +} G_STMT_END + +/** + * G_VALUE_COLLECT: + * @value: a #GValue return location. @value is supposed to be initialized + * according to the value type to be collected + * @var_args: the va_list variable; it may be evaluated multiple times + * @flags: flags which are passed on to the collect_value() function of + * the #GTypeValueTable of @value. + * @__error: a #gchar** variable that will be modified to hold a g_new() + * allocated error messages if something fails + * + * Collects a variable argument value from a `va_list`. + * + * We have to implement the varargs collection as a macro, because on some systems + * `va_list` variables cannot be passed by reference. + * + * Note: If you are creating the @value argument just before calling this macro, + * you should use the G_VALUE_COLLECT_INIT() variant and pass the uninitialized + * #GValue. That variant is faster than G_VALUE_COLLECT(). + */ +#define G_VALUE_COLLECT(value, var_args, flags, __error) G_STMT_START { \ + GValue *g_vc_value = (value); \ + GType g_vc_value_type = G_VALUE_TYPE (g_vc_value); \ + GTypeValueTable *g_vc_vtable = g_type_value_table_peek (g_vc_value_type); \ + \ + if (g_vc_vtable->value_free) \ + g_vc_vtable->value_free (g_vc_value); \ + memset (g_vc_value->data, 0, sizeof (g_vc_value->data)); \ + \ + G_VALUE_COLLECT_INIT(value, g_vc_value_type, var_args, flags, __error); \ +} G_STMT_END + +/** + * G_VALUE_COLLECT_SKIP: + * @_value_type: the #GType of the value to skip + * @var_args: the va_list variable; it may be evaluated multiple times + * + * Skip an argument of type @_value_type from @var_args. + */ +#define G_VALUE_COLLECT_SKIP(_value_type, var_args) \ +G_STMT_START { \ + GTypeValueTable *g_vcs_vtable = g_type_value_table_peek (_value_type); \ + const gchar *g_vcs_collect_format = g_vcs_vtable->collect_format; \ + \ + while (*g_vcs_collect_format) \ + { \ + switch (*g_vcs_collect_format++) \ + { \ + case G_VALUE_COLLECT_INT: \ + va_arg ((var_args), gint); \ + break; \ + case G_VALUE_COLLECT_LONG: \ + va_arg ((var_args), glong); \ + break; \ + case G_VALUE_COLLECT_INT64: \ + va_arg ((var_args), gint64); \ + break; \ + case G_VALUE_COLLECT_DOUBLE: \ + va_arg ((var_args), gdouble); \ + break; \ + case G_VALUE_COLLECT_POINTER: \ + va_arg ((var_args), gpointer); \ + break; \ + default: \ + g_assert_not_reached (); \ + } \ + } \ +} G_STMT_END + +/** + * G_VALUE_LCOPY: + * @value: a #GValue to store into the @var_args; this must be initialized + * and set + * @var_args: the va_list variable; it may be evaluated multiple times + * @flags: flags which are passed on to the lcopy_value() function of + * the #GTypeValueTable of @value. + * @__error: a #gchar** variable that will be modified to hold a g_new() + * allocated error message if something fails + * + * Stores a value’s value into one or more argument locations from a `va_list`. + * + * This is the inverse of G_VALUE_COLLECT(). + */ +#define G_VALUE_LCOPY(value, var_args, flags, __error) \ +G_STMT_START { \ + const GValue *g_vl_value = (value); \ + guint g_vl_flags = (flags); \ + GType g_vl_value_type = G_VALUE_TYPE (g_vl_value); \ + GTypeValueTable *g_vl_vtable = g_type_value_table_peek (g_vl_value_type); \ + const gchar *g_vl_lcopy_format = g_vl_vtable->lcopy_format; \ + GTypeCValue g_vl_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; \ + guint g_vl_n_values = 0; \ + \ + while (*g_vl_lcopy_format) \ + { \ + GTypeCValue *g_vl_cvalue = g_vl_cvalues + g_vl_n_values++; \ + \ + switch (*g_vl_lcopy_format++) \ + { \ + case G_VALUE_COLLECT_INT: \ + g_vl_cvalue->v_int = va_arg ((var_args), gint); \ + break; \ + case G_VALUE_COLLECT_LONG: \ + g_vl_cvalue->v_long = va_arg ((var_args), glong); \ + break; \ + case G_VALUE_COLLECT_INT64: \ + g_vl_cvalue->v_int64 = va_arg ((var_args), gint64); \ + break; \ + case G_VALUE_COLLECT_DOUBLE: \ + g_vl_cvalue->v_double = va_arg ((var_args), gdouble); \ + break; \ + case G_VALUE_COLLECT_POINTER: \ + g_vl_cvalue->v_pointer = va_arg ((var_args), gpointer); \ + break; \ + default: \ + g_assert_not_reached (); \ + } \ + } \ + *(__error) = g_vl_vtable->lcopy_value (g_vl_value, \ + g_vl_n_values, \ + g_vl_cvalues, \ + g_vl_flags); \ +} G_STMT_END + + +/** + * G_VALUE_COLLECT_FORMAT_MAX_LENGTH: + * + * The maximal number of #GTypeCValues which can be collected for a + * single #GValue. + */ +#define G_VALUE_COLLECT_FORMAT_MAX_LENGTH (8) + +G_END_DECLS + +#endif /* __G_VALUE_COLLECTOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluetypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluetypes.h new file mode 100644 index 0000000..9aa6ba9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/gobject/gvaluetypes.h @@ -0,0 +1,318 @@ +/* GObject - GLib Type, Object, Parameter and Signal Library + * Copyright (C) 1997-1999, 2000-2001 Tim Janik and Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * gvaluetypes.h: GLib default values + */ +#ifndef __G_VALUETYPES_H__ +#define __G_VALUETYPES_H__ + +#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/* --- type macros --- */ +/** + * G_VALUE_HOLDS_CHAR: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_CHAR. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_CHAR(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_CHAR)) +/** + * G_VALUE_HOLDS_UCHAR: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_UCHAR. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_UCHAR(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UCHAR)) +/** + * G_VALUE_HOLDS_BOOLEAN: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_BOOLEAN. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_BOOLEAN(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_BOOLEAN)) +/** + * G_VALUE_HOLDS_INT: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_INT. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_INT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT)) +/** + * G_VALUE_HOLDS_UINT: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_UINT. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_UINT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT)) +/** + * G_VALUE_HOLDS_LONG: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_LONG. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_LONG(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_LONG)) +/** + * G_VALUE_HOLDS_ULONG: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_ULONG. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_ULONG(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ULONG)) +/** + * G_VALUE_HOLDS_INT64: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_INT64. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_INT64(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT64)) +/** + * G_VALUE_HOLDS_UINT64: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_UINT64. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_UINT64(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT64)) +/** + * G_VALUE_HOLDS_FLOAT: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_FLOAT. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_FLOAT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLOAT)) +/** + * G_VALUE_HOLDS_DOUBLE: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_DOUBLE. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_DOUBLE(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_DOUBLE)) +/** + * G_VALUE_HOLDS_STRING: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_STRING. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_STRING(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_STRING)) +/** + * G_VALUE_IS_INTERNED_STRING: + * @value: a valid #GValue structure + * + * Checks whether @value contains a string which is canonical. + * + * Returns: %TRUE if the value contains a string in its canonical + * representation, as returned by g_intern_string(). See also + * g_value_set_interned_string(). + * + * Since: 2.66 + */ +#define G_VALUE_IS_INTERNED_STRING(value) (G_VALUE_HOLDS_STRING (value) && ((value)->data[1].v_uint & G_VALUE_INTERNED_STRING)) GLIB_AVAILABLE_MACRO_IN_2_66 +/** + * G_VALUE_HOLDS_POINTER: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_POINTER. + * + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_POINTER(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_POINTER)) +/** + * G_TYPE_GTYPE: + * + * The type for #GType. + */ +#define G_TYPE_GTYPE (g_gtype_get_type()) +/** + * G_VALUE_HOLDS_GTYPE: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_GTYPE. + * + * Since: 2.12 + * Returns: %TRUE on success. + */ +#define G_VALUE_HOLDS_GTYPE(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_GTYPE)) +/** + * G_VALUE_HOLDS_VARIANT: + * @value: a valid #GValue structure + * + * Checks whether the given #GValue can hold values of type %G_TYPE_VARIANT. + * + * Returns: %TRUE on success. + * + * Since: 2.26 + */ +#define G_VALUE_HOLDS_VARIANT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_VARIANT)) + + +/* --- prototypes --- */ +GLIB_DEPRECATED_IN_2_32_FOR(g_value_set_schar) +void g_value_set_char (GValue *value, + gchar v_char); +GLIB_DEPRECATED_IN_2_32_FOR(g_value_get_schar) +gchar g_value_get_char (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_schar (GValue *value, + gint8 v_char); +GLIB_AVAILABLE_IN_ALL +gint8 g_value_get_schar (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_uchar (GValue *value, + guchar v_uchar); +GLIB_AVAILABLE_IN_ALL +guchar g_value_get_uchar (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_boolean (GValue *value, + gboolean v_boolean); +GLIB_AVAILABLE_IN_ALL +gboolean g_value_get_boolean (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_int (GValue *value, + gint v_int); +GLIB_AVAILABLE_IN_ALL +gint g_value_get_int (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_uint (GValue *value, + guint v_uint); +GLIB_AVAILABLE_IN_ALL +guint g_value_get_uint (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_long (GValue *value, + glong v_long); +GLIB_AVAILABLE_IN_ALL +glong g_value_get_long (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_ulong (GValue *value, + gulong v_ulong); +GLIB_AVAILABLE_IN_ALL +gulong g_value_get_ulong (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_int64 (GValue *value, + gint64 v_int64); +GLIB_AVAILABLE_IN_ALL +gint64 g_value_get_int64 (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_uint64 (GValue *value, + guint64 v_uint64); +GLIB_AVAILABLE_IN_ALL +guint64 g_value_get_uint64 (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_float (GValue *value, + gfloat v_float); +GLIB_AVAILABLE_IN_ALL +gfloat g_value_get_float (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_double (GValue *value, + gdouble v_double); +GLIB_AVAILABLE_IN_ALL +gdouble g_value_get_double (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_string (GValue *value, + const gchar *v_string); +GLIB_AVAILABLE_IN_ALL +void g_value_set_static_string (GValue *value, + const gchar *v_string); +GLIB_AVAILABLE_IN_2_66 +void g_value_set_interned_string (GValue *value, + const gchar *v_string); +GLIB_AVAILABLE_IN_ALL +const gchar * g_value_get_string (const GValue *value); +GLIB_AVAILABLE_IN_ALL +gchar* g_value_dup_string (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_pointer (GValue *value, + gpointer v_pointer); +GLIB_AVAILABLE_IN_ALL +gpointer g_value_get_pointer (const GValue *value); +GLIB_AVAILABLE_IN_ALL +GType g_gtype_get_type (void); +GLIB_AVAILABLE_IN_ALL +void g_value_set_gtype (GValue *value, + GType v_gtype); +GLIB_AVAILABLE_IN_ALL +GType g_value_get_gtype (const GValue *value); +GLIB_AVAILABLE_IN_ALL +void g_value_set_variant (GValue *value, + GVariant *variant); +GLIB_AVAILABLE_IN_ALL +void g_value_take_variant (GValue *value, + GVariant *variant); +GLIB_AVAILABLE_IN_ALL +GVariant* g_value_get_variant (const GValue *value); +GLIB_AVAILABLE_IN_ALL +GVariant* g_value_dup_variant (const GValue *value); + + +/* Convenience for registering new pointer types */ +GLIB_AVAILABLE_IN_ALL +GType g_pointer_type_register_static (const gchar *name); + +/* debugging aid, describe value contents as string */ +GLIB_AVAILABLE_IN_ALL +gchar* g_strdup_value_contents (const GValue *value); + + +GLIB_AVAILABLE_IN_ALL +void g_value_take_string (GValue *value, + gchar *v_string); +GLIB_DEPRECATED_FOR(g_value_take_string) +void g_value_set_string_take_ownership (GValue *value, + gchar *v_string); + + +/* humpf, need a C representable type name for G_TYPE_STRING */ +/** + * gchararray: + * + * A C representable type name for %G_TYPE_STRING. + */ +typedef gchar* gchararray; + + +G_END_DECLS + +#endif /* __G_VALUETYPES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/msvc_recommended_pragmas.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/msvc_recommended_pragmas.h new file mode 100644 index 0000000..051a02a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/glib-2.0/msvc_recommended_pragmas.h @@ -0,0 +1,41 @@ +#ifndef _MSC_VER +#pragma error "This header is for Microsoft VC or clang-cl only." +#endif /* _MSC_VER */ + +/* Make MSVC more pedantic, this is a recommended pragma list + * from _Win32_Programming_ by Rector and Newcomer. + */ +#ifndef __clang__ +#pragma warning(error:4002) /* too many actual parameters for macro */ +#pragma warning(error:4003) /* not enough actual parameters for macro */ +#pragma warning(1:4010) /* single-line comment contains line-continuation character */ +#pragma warning(error:4013) /* 'function' undefined; assuming extern returning int */ +#pragma warning(1:4016) /* no function return type; using int as default */ +#pragma warning(error:4020) /* too many actual parameters */ +#pragma warning(error:4021) /* too few actual parameters */ +#pragma warning(error:4027) /* function declared without formal parameter list */ +#pragma warning(error:4029) /* declared formal parameter list different from definition */ +#pragma warning(error:4033) /* 'function' must return a value */ +#pragma warning(error:4035) /* 'function' : no return value */ +#pragma warning(error:4045) /* array bounds overflow */ +#pragma warning(error:4047) /* different levels of indirection */ +#pragma warning(error:4049) /* terminating line number emission */ +#pragma warning(error:4053) /* An expression of type void was used as an operand */ +#pragma warning(error:4071) /* no function prototype given */ +#pragma warning(disable:4101) /* unreferenced local variable */ +#pragma warning(error:4150) + +/* G_NORETURN */ +#pragma warning(error:4646) /* function declared with __declspec(noreturn) has non-void return type */ +#pragma warning(error:4715) /* 'function': not all control paths return a value */ +#pragma warning(error:4098) /* 'void' function returning a value */ + +#pragma warning(disable:4244) /* No possible loss of data warnings */ +#pragma warning(disable:4305) /* No truncation from int to char warnings */ + +#pragma warning(error:4819) /* The file contains a character that cannot be represented in the current code page */ +#endif /* __clang__ */ + +/* work around Microsoft's premature attempt to deprecate the C-Library */ +#define _CRT_SECURE_NO_WARNINGS +#define _CRT_NONSTDC_NO_WARNINGS diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-aat-layout.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-aat-layout.h new file mode 100644 index 0000000..9af2740 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-aat-layout.h @@ -0,0 +1,795 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#if !defined(HB_AAT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_AAT_LAYOUT_H +#define HB_AAT_LAYOUT_H + +#include "hb.h" + +#include "hb-ot.h" + +HB_BEGIN_DECLS + +/** + * hb_aat_layout_feature_type_t: + * @HB_AAT_LAYOUT_FEATURE_TYPE_INVALID: Initial, unset feature type + * @HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC: [All Typographic Features](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type0) + * @HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES: [Ligatures](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type1) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION: [Cursive Connection](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type2) + * @HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE: [Letter Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type3) + * @HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION: [Vertical Substitution](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type4) + * @HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT: [Linguistic Rearrangement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type5) + * @HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING: [Number Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type6) + * @HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE: [Smart Swash](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type8) + * @HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE: [Diacritics](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type9) + * @HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION: [Vertical Position](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type10) + * @HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS: [Fractions](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type11) + * @HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE: [Overlapping Characters](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type13) + * @HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS: [Typographic Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type14) + * @HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS: [Mathematical Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type15) + * @HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE: [Ornament Sets](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type16) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES: [Character Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type17) + * @HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE: [Design Complexity](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type18) + * @HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS: [Style Options](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type19) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE: [Character Shape](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type20) + * @HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE: [Number Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type21) + * @HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING: [Text Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type22) + * @HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION: [Transliteration](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type23) + * @HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE: [Annotation](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type24) + * @HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE: [Kana Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type25) + * @HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE: [Ideographic Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type26) + * @HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE: [Unicode Decomposition](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type27) + * @HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA: [Ruby Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type28) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE: [CJK Symbol Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type29) + * @HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE: [Ideographic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type30) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE: [CJK Vertical Roman Placement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type31) + * @HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN: [Italic CJK Roman](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type32) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT: [Case Sensitive Layout](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type33) + * @HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA: [Alternate Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type34) + * @HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES: [Stylistic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type35) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES: [Contextual Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type36) + * @HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE: [Lower Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type37) + * @HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE: [Upper Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type38) + * @HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE: [Language Tag](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type39) + * @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE: [CJK Roman Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type103) + * + * The possible feature types defined for AAT shaping, from Apple [Font Feature Registry](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html). + * + * Since: 2.2.0 + */ +typedef enum +{ + HB_AAT_LAYOUT_FEATURE_TYPE_INVALID = 0xFFFF, + + HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC = 0, + HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES = 1, + HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION = 2, + HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE = 3, + HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION = 4, + HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT = 5, + HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING = 6, + HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE = 8, + HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE = 9, + HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION = 10, + HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS = 11, + HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE = 13, + HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS = 14, + HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS = 15, + HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE = 16, + HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES = 17, + HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE = 18, + HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS = 19, + HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE = 20, + HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE = 21, + HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING = 22, + HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION = 23, + HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE = 24, + HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE = 25, + HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE = 26, + HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE = 27, + HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA = 28, + HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE = 29, + HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE = 30, + HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE = 31, + HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN = 32, + HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT = 33, + HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA = 34, + HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES = 35, + HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES = 36, + HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE = 37, + HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE = 38, + HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE = 39, + HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE = 103, + + /*< private >*/ + _HB_AAT_LAYOUT_FEATURE_TYPE_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_aat_layout_feature_type_t; + +/** + * hb_aat_layout_feature_selector_t: + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID: Initial, unset feature selector + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE: Deprecated + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS: Deprecated + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE: Deprecated + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS: Deprecated + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS: Deprecated + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS: Deprecated + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE + * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE + * + * The selectors defined for specifying AAT feature settings. + * + * Since: 2.2.0 + */ +typedef enum +{ + HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID = 0xFFFF, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF = 1, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF = 9, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON = 10, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF = 11, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON = 12, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF = 13, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON = 14, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF = 15, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON = 16, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF = 17, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON = 18, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF = 19, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON = 20, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF = 21, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE = 2, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE = 0, /* deprecated */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS = 1, /* deprecated */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE = 2, /* deprecated */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS = 3, /* deprecated */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS = 4, /* deprecated */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS = 5, /* deprecated */ + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF = 1, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF = 1, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS = 3, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF = 9, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS = 2, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS = 4, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS = 2, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF = 1, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF = 9, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON = 10, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF = 11, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF = 9, + HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON = 10, + HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF = 11, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS = 6, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES = 0, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1 = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2 = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3 = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4 = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5 = 4, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS = 5, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE = 9, + HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS = 10, + HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS = 11, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS = 12, + HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS = 13, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS = 14, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS = 1, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT = 6, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE = 9, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION = 9, + HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION= 10, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA = 1, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS = 2, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF = 5, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA = 0, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA = 1, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF = 3, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE = 5, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE = 5, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE = 1, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN = 0, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN = 1, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF = 3, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF = 3, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF = 3, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF = 5, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON = 6, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF = 7, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON = 8, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF = 9, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON = 10, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF = 11, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON = 12, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF = 13, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON = 14, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF = 15, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON = 16, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF = 17, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON = 18, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF = 19, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON = 20, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF = 21, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON = 22, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF = 23, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON = 24, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF = 25, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON = 26, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF = 27, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON = 28, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF = 29, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON = 30, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF = 31, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON = 32, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF = 33, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON = 34, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF = 35, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON = 36, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF = 37, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON = 38, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF = 39, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON = 40, + HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF = 41, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF = 3, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON = 4, + HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF= 5, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS = 2, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS = 2, + + /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE */ + HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN = 0, + HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN = 1, + HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN = 2, + HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN = 3, + + /*< private >*/ + _HB_AAT_LAYOUT_FEATURE_SELECTOR_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_aat_layout_feature_selector_t; + +HB_EXTERN unsigned int +hb_aat_layout_get_feature_types (hb_face_t *face, + unsigned int start_offset, + unsigned int *feature_count, /* IN/OUT. May be NULL. */ + hb_aat_layout_feature_type_t *features /* OUT. May be NULL. */); + +HB_EXTERN hb_ot_name_id_t +hb_aat_layout_feature_type_get_name_id (hb_face_t *face, + hb_aat_layout_feature_type_t feature_type); + +/** + * hb_aat_layout_feature_selector_info_t: + * @name_id: The selector's name identifier + * @enable: The value to turn the selector on + * @disable: The value to turn the selector off + * + * Structure representing a setting for an #hb_aat_layout_feature_type_t. + */ +typedef struct hb_aat_layout_feature_selector_info_t { + hb_ot_name_id_t name_id; + hb_aat_layout_feature_selector_t enable; + hb_aat_layout_feature_selector_t disable; + /*< private >*/ + unsigned int reserved; +} hb_aat_layout_feature_selector_info_t; + +/** + * HB_AAT_LAYOUT_NO_SELECTOR_INDEX + * + * Used when getting or setting AAT feature selectors. Indicates that + * there is no selector index corresponding to the selector of interest. + * + */ +#define HB_AAT_LAYOUT_NO_SELECTOR_INDEX 0xFFFFu + +HB_EXTERN unsigned int +hb_aat_layout_feature_type_get_selector_infos (hb_face_t *face, + hb_aat_layout_feature_type_t feature_type, + unsigned int start_offset, + unsigned int *selector_count, /* IN/OUT. May be NULL. */ + hb_aat_layout_feature_selector_info_t *selectors, /* OUT. May be NULL. */ + unsigned int *default_index /* OUT. May be NULL. */); + + +/* + * morx/mort + */ + +HB_EXTERN hb_bool_t +hb_aat_layout_has_substitution (hb_face_t *face); + + +/* + * kerx + */ + +HB_EXTERN hb_bool_t +hb_aat_layout_has_positioning (hb_face_t *face); + + +/* + * trak + */ + +HB_EXTERN hb_bool_t +hb_aat_layout_has_tracking (hb_face_t *face); + + +HB_END_DECLS + +#endif /* HB_AAT_LAYOUT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-aat.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-aat.h new file mode 100644 index 0000000..c14313d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-aat.h @@ -0,0 +1,38 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#ifndef HB_AAT_H +#define HB_AAT_H +#define HB_AAT_H_IN + +#include "hb.h" + +#include "hb-aat-layout.h" + +HB_BEGIN_DECLS + +HB_END_DECLS + +#undef HB_AAT_H_IN +#endif /* HB_AAT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-blob.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-blob.h new file mode 100644 index 0000000..4eb4231 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-blob.h @@ -0,0 +1,160 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_BLOB_H +#define HB_BLOB_H + +#include "hb-common.h" + +HB_BEGIN_DECLS + + +/** + * hb_memory_mode_t: + * @HB_MEMORY_MODE_DUPLICATE: HarfBuzz immediately makes a copy of the data. + * @HB_MEMORY_MODE_READONLY: HarfBuzz client will never modify the data, + * and HarfBuzz will never modify the data. + * @HB_MEMORY_MODE_WRITABLE: HarfBuzz client made a copy of the data solely + * for HarfBuzz, so HarfBuzz may modify the data. + * @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: See above + * + * Data type holding the memory modes available to + * client programs. + * + * Regarding these various memory-modes: + * + * - In no case shall the HarfBuzz client modify memory + * that is passed to HarfBuzz in a blob. If there is + * any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used + * such that HarfBuzz makes a copy immediately, + * + * - Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really + * really know what you are doing, + * + * - @HB_MEMORY_MODE_WRITABLE is appropriate if you really made a + * copy of data solely for the purpose of passing to + * HarfBuzz and doing that just once (no reuse!), + * + * - If the font is mmap()ed, it's okay to use + * @HB_MEMORY_READONLY_MAY_MAKE_WRITABLE, however, using that mode + * correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead. + **/ +typedef enum { + HB_MEMORY_MODE_DUPLICATE, + HB_MEMORY_MODE_READONLY, + HB_MEMORY_MODE_WRITABLE, + HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE +} hb_memory_mode_t; + +/** + * hb_blob_t: + * + * Data type for blobs. A blob wraps a chunk of binary + * data and facilitates its lifecycle management between + * a client program and HarfBuzz. + * + **/ +typedef struct hb_blob_t hb_blob_t; + +HB_EXTERN hb_blob_t * +hb_blob_create (const char *data, + unsigned int length, + hb_memory_mode_t mode, + void *user_data, + hb_destroy_func_t destroy); + +HB_EXTERN hb_blob_t * +hb_blob_create_or_fail (const char *data, + unsigned int length, + hb_memory_mode_t mode, + void *user_data, + hb_destroy_func_t destroy); + +HB_EXTERN hb_blob_t * +hb_blob_create_from_file (const char *file_name); + +HB_EXTERN hb_blob_t * +hb_blob_create_from_file_or_fail (const char *file_name); + +/* Always creates with MEMORY_MODE_READONLY. + * Even if the parent blob is writable, we don't + * want the user of the sub-blob to be able to + * modify the parent data as that data may be + * shared among multiple sub-blobs. + */ +HB_EXTERN hb_blob_t * +hb_blob_create_sub_blob (hb_blob_t *parent, + unsigned int offset, + unsigned int length); + +HB_EXTERN hb_blob_t * +hb_blob_copy_writable_or_fail (hb_blob_t *blob); + +HB_EXTERN hb_blob_t * +hb_blob_get_empty (void); + +HB_EXTERN hb_blob_t * +hb_blob_reference (hb_blob_t *blob); + +HB_EXTERN void +hb_blob_destroy (hb_blob_t *blob); + +HB_EXTERN hb_bool_t +hb_blob_set_user_data (hb_blob_t *blob, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + + +HB_EXTERN void * +hb_blob_get_user_data (const hb_blob_t *blob, + hb_user_data_key_t *key); + + +HB_EXTERN void +hb_blob_make_immutable (hb_blob_t *blob); + +HB_EXTERN hb_bool_t +hb_blob_is_immutable (hb_blob_t *blob); + + +HB_EXTERN unsigned int +hb_blob_get_length (hb_blob_t *blob); + +HB_EXTERN const char * +hb_blob_get_data (hb_blob_t *blob, unsigned int *length); + +HB_EXTERN char * +hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length); + +HB_END_DECLS + +#endif /* HB_BLOB_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-buffer.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-buffer.h new file mode 100644 index 0000000..8c17489 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-buffer.h @@ -0,0 +1,799 @@ +/* + * Copyright © 1998-2004 David Turner and Werner Lemberg + * Copyright © 2004,2007,2009 Red Hat, Inc. + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Owen Taylor, Behdad Esfahbod + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_BUFFER_H +#define HB_BUFFER_H + +#include "hb-common.h" +#include "hb-unicode.h" +#include "hb-font.h" + +HB_BEGIN_DECLS + +/** + * hb_glyph_info_t: + * @codepoint: either a Unicode code point (before shaping) or a glyph index + * (after shaping). + * @cluster: the index of the character in the original text that corresponds + * to this #hb_glyph_info_t, or whatever the client passes to + * hb_buffer_add(). More than one #hb_glyph_info_t can have the same + * @cluster value, if they resulted from the same character (e.g. one + * to many glyph substitution), and when more than one character gets + * merged in the same glyph (e.g. many to one glyph substitution) the + * #hb_glyph_info_t will have the smallest cluster value of them. + * By default some characters are merged into the same cluster + * (e.g. combining marks have the same cluster as their bases) + * even if they are separate glyphs, hb_buffer_set_cluster_level() + * allow selecting more fine-grained cluster handling. + * + * The #hb_glyph_info_t is the structure that holds information about the + * glyphs and their relation to input text. + */ +typedef struct hb_glyph_info_t { + hb_codepoint_t codepoint; + /*< private >*/ + hb_mask_t mask; + /*< public >*/ + uint32_t cluster; + + /*< private >*/ + hb_var_int_t var1; + hb_var_int_t var2; +} hb_glyph_info_t; + +/** + * hb_glyph_flags_t: + * @HB_GLYPH_FLAG_UNSAFE_TO_BREAK: Indicates that if input text is broken at the + * beginning of the cluster this glyph is part of, + * then both sides need to be re-shaped, as the + * result might be different. + * On the flip side, it means that when this + * flag is not present, then it is safe to break + * the glyph-run at the beginning of this + * cluster, and the two sides will represent the + * exact same result one would get if breaking + * input text at the beginning of this cluster + * and shaping the two sides separately. + * This can be used to optimize paragraph + * layout, by avoiding re-shaping of each line + * after line-breaking. + * @HB_GLYPH_FLAG_UNSAFE_TO_CONCAT: Indicates that if input text is changed on one + * side of the beginning of the cluster this glyph + * is part of, then the shaping results for the + * other side might change. + * Note that the absence of this flag will NOT by + * itself mean that it IS safe to concat text. + * Only two pieces of text both of which clear of + * this flag can be concatenated safely. + * This can be used to optimize paragraph + * layout, by avoiding re-shaping of each line + * after line-breaking, by limiting the + * reshaping to a small piece around the + * breaking positin only, even if the breaking + * position carries the + * #HB_GLYPH_FLAG_UNSAFE_TO_BREAK or when + * hyphenation or other text transformation + * happens at line-break position, in the following + * way: + * 1. Iterate back from the line-break position + * until the first cluster start position that is + * NOT unsafe-to-concat, 2. shape the segment from + * there till the end of line, 3. check whether the + * resulting glyph-run also is clear of the + * unsafe-to-concat at its start-of-text position; + * if it is, just splice it into place and the line + * is shaped; If not, move on to a position further + * back that is clear of unsafe-to-concat and retry + * from there, and repeat. + * At the start of next line a similar algorithm can + * be implemented. That is: 1. Iterate forward from + * the line-break position until the first cluster + * start position that is NOT unsafe-to-concat, 2. + * shape the segment from beginning of the line to + * that position, 3. check whether the resulting + * glyph-run also is clear of the unsafe-to-concat + * at its end-of-text position; if it is, just splice + * it into place and the beginning is shaped; If not, + * move on to a position further forward that is clear + * of unsafe-to-concat and retry up to there, and repeat. + * A slight complication will arise in the + * implementation of the algorithm above, + * because while our buffer API has a way to + * return flags for position corresponding to + * start-of-text, there is currently no position + * corresponding to end-of-text. This limitation + * can be alleviated by shaping more text than needed + * and looking for unsafe-to-concat flag within text + * clusters. + * The #HB_GLYPH_FLAG_UNSAFE_TO_BREAK flag will + * always imply this flag. + * To use this flag, you must enable the buffer flag + * @HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT during + * shaping, otherwise the buffer flag will not be + * reliably produced. + * Since: 4.0.0 + * @HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL: In scripts that use elongation (Arabic, + Mongolian, Syriac, etc.), this flag signifies + that it is safe to insert a U+0640 TATWEEL + character before this cluster for elongation. + This flag does not determine the + script-specific elongation places, but only + when it is safe to do the elongation without + interrupting text shaping. + Since: 5.1.0 + * @HB_GLYPH_FLAG_DEFINED: All the currently defined flags. + * + * Flags for #hb_glyph_info_t. + * + * Since: 1.5.0 + */ +typedef enum { /*< flags >*/ + HB_GLYPH_FLAG_UNSAFE_TO_BREAK = 0x00000001, + HB_GLYPH_FLAG_UNSAFE_TO_CONCAT = 0x00000002, + HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL = 0x00000004, + + HB_GLYPH_FLAG_DEFINED = 0x00000007 /* OR of all defined flags */ +} hb_glyph_flags_t; + +HB_EXTERN hb_glyph_flags_t +hb_glyph_info_get_glyph_flags (const hb_glyph_info_t *info); + +#define hb_glyph_info_get_glyph_flags(info) \ + ((hb_glyph_flags_t) ((unsigned int) (info)->mask & HB_GLYPH_FLAG_DEFINED)) + + +/** + * hb_glyph_position_t: + * @x_advance: how much the line advances after drawing this glyph when setting + * text in horizontal direction. + * @y_advance: how much the line advances after drawing this glyph when setting + * text in vertical direction. + * @x_offset: how much the glyph moves on the X-axis before drawing it, this + * should not affect how much the line advances. + * @y_offset: how much the glyph moves on the Y-axis before drawing it, this + * should not affect how much the line advances. + * + * The #hb_glyph_position_t is the structure that holds the positions of the + * glyph in both horizontal and vertical directions. All positions in + * #hb_glyph_position_t are relative to the current point. + * + */ +typedef struct hb_glyph_position_t { + hb_position_t x_advance; + hb_position_t y_advance; + hb_position_t x_offset; + hb_position_t y_offset; + + /*< private >*/ + hb_var_int_t var; +} hb_glyph_position_t; + +/** + * hb_segment_properties_t: + * @direction: the #hb_direction_t of the buffer, see hb_buffer_set_direction(). + * @script: the #hb_script_t of the buffer, see hb_buffer_set_script(). + * @language: the #hb_language_t of the buffer, see hb_buffer_set_language(). + * + * The structure that holds various text properties of an #hb_buffer_t. Can be + * set and retrieved using hb_buffer_set_segment_properties() and + * hb_buffer_get_segment_properties(), respectively. + */ +typedef struct hb_segment_properties_t { + hb_direction_t direction; + hb_script_t script; + hb_language_t language; + /*< private >*/ + void *reserved1; + void *reserved2; +} hb_segment_properties_t; + +/** + * HB_SEGMENT_PROPERTIES_DEFAULT: + * + * The default #hb_segment_properties_t of of freshly created #hb_buffer_t. + */ +#define HB_SEGMENT_PROPERTIES_DEFAULT {HB_DIRECTION_INVALID, \ + HB_SCRIPT_INVALID, \ + HB_LANGUAGE_INVALID, \ + (void *) 0, \ + (void *) 0} + +HB_EXTERN hb_bool_t +hb_segment_properties_equal (const hb_segment_properties_t *a, + const hb_segment_properties_t *b); + +HB_EXTERN unsigned int +hb_segment_properties_hash (const hb_segment_properties_t *p); + +HB_EXTERN void +hb_segment_properties_overlay (hb_segment_properties_t *p, + const hb_segment_properties_t *src); + + +/** + * hb_buffer_t: + * + * The main structure holding the input text and its properties before shaping, + * and output glyphs and their information after shaping. + */ + +typedef struct hb_buffer_t hb_buffer_t; + +HB_EXTERN hb_buffer_t * +hb_buffer_create (void); + +HB_EXTERN hb_buffer_t * +hb_buffer_create_similar (const hb_buffer_t *src); + +HB_EXTERN void +hb_buffer_reset (hb_buffer_t *buffer); + + +HB_EXTERN hb_buffer_t * +hb_buffer_get_empty (void); + +HB_EXTERN hb_buffer_t * +hb_buffer_reference (hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_destroy (hb_buffer_t *buffer); + +HB_EXTERN hb_bool_t +hb_buffer_set_user_data (hb_buffer_t *buffer, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + +HB_EXTERN void * +hb_buffer_get_user_data (const hb_buffer_t *buffer, + hb_user_data_key_t *key); + + +/** + * hb_buffer_content_type_t: + * @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer. + * @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping). + * @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping). + * + * The type of #hb_buffer_t contents. + */ +typedef enum { + HB_BUFFER_CONTENT_TYPE_INVALID = 0, + HB_BUFFER_CONTENT_TYPE_UNICODE, + HB_BUFFER_CONTENT_TYPE_GLYPHS +} hb_buffer_content_type_t; + +HB_EXTERN void +hb_buffer_set_content_type (hb_buffer_t *buffer, + hb_buffer_content_type_t content_type); + +HB_EXTERN hb_buffer_content_type_t +hb_buffer_get_content_type (const hb_buffer_t *buffer); + + +HB_EXTERN void +hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, + hb_unicode_funcs_t *unicode_funcs); + +HB_EXTERN hb_unicode_funcs_t * +hb_buffer_get_unicode_funcs (const hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_set_direction (hb_buffer_t *buffer, + hb_direction_t direction); + +HB_EXTERN hb_direction_t +hb_buffer_get_direction (const hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_set_script (hb_buffer_t *buffer, + hb_script_t script); + +HB_EXTERN hb_script_t +hb_buffer_get_script (const hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_set_language (hb_buffer_t *buffer, + hb_language_t language); + + +HB_EXTERN hb_language_t +hb_buffer_get_language (const hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_set_segment_properties (hb_buffer_t *buffer, + const hb_segment_properties_t *props); + +HB_EXTERN void +hb_buffer_get_segment_properties (const hb_buffer_t *buffer, + hb_segment_properties_t *props); + +HB_EXTERN void +hb_buffer_guess_segment_properties (hb_buffer_t *buffer); + + +/** + * hb_buffer_flags_t: + * @HB_BUFFER_FLAG_DEFAULT: the default buffer flag. + * @HB_BUFFER_FLAG_BOT: flag indicating that special handling of the beginning + * of text paragraph can be applied to this buffer. Should usually + * be set, unless you are passing to the buffer only part + * of the text without the full context. + * @HB_BUFFER_FLAG_EOT: flag indicating that special handling of the end of text + * paragraph can be applied to this buffer, similar to + * @HB_BUFFER_FLAG_BOT. + * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: + * flag indication that character with Default_Ignorable + * Unicode property should use the corresponding glyph + * from the font, instead of hiding them (done by + * replacing them with the space glyph and zeroing the + * advance width.) This flag takes precedence over + * @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES. + * @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES: + * flag indication that character with Default_Ignorable + * Unicode property should be removed from glyph string + * instead of hiding them (done by replacing them with the + * space glyph and zeroing the advance width.) + * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes + * precedence over this flag. Since: 1.8.0 + * @HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE: + * flag indicating that a dotted circle should + * not be inserted in the rendering of incorrect + * character sequences (such at <0905 093E>). Since: 2.4.0 + * @HB_BUFFER_FLAG_VERIFY: + * flag indicating that the hb_shape() call and its variants + * should perform various verification processes on the results + * of the shaping operation on the buffer. If the verification + * fails, then either a buffer message is sent, if a message + * handler is installed on the buffer, or a message is written + * to standard error. In either case, the shaping result might + * be modified to show the failed output. Since: 3.4.0 + * @HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT: + * flag indicating that the @HB_GLYPH_FLAG_UNSAFE_TO_CONCAT + * glyph-flag should be produced by the shaper. By default + * it will not be produced since it incurs a cost. Since: 4.0.0 + * @HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL: + * flag indicating that the @HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL + * glyph-flag should be produced by the shaper. By default + * it will not be produced. Since: 5.1.0 + * @HB_BUFFER_FLAG_DEFINED: All currently defined flags: Since: 4.4.0 + * + * Flags for #hb_buffer_t. + * + * Since: 0.9.20 + */ +typedef enum { /*< flags >*/ + HB_BUFFER_FLAG_DEFAULT = 0x00000000u, + HB_BUFFER_FLAG_BOT = 0x00000001u, /* Beginning-of-text */ + HB_BUFFER_FLAG_EOT = 0x00000002u, /* End-of-text */ + HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004u, + HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES = 0x00000008u, + HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE = 0x00000010u, + HB_BUFFER_FLAG_VERIFY = 0x00000020u, + HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT = 0x00000040u, + HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL = 0x00000080u, + + HB_BUFFER_FLAG_DEFINED = 0x000000FFu +} hb_buffer_flags_t; + +HB_EXTERN void +hb_buffer_set_flags (hb_buffer_t *buffer, + hb_buffer_flags_t flags); + +HB_EXTERN hb_buffer_flags_t +hb_buffer_get_flags (const hb_buffer_t *buffer); + +/** + * hb_buffer_cluster_level_t: + * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES: Return cluster values grouped by graphemes into + * monotone order. + * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS: Return cluster values grouped into monotone order. + * @HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: Don't group cluster values. + * @HB_BUFFER_CLUSTER_LEVEL_DEFAULT: Default cluster level, + * equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES. + * + * Data type for holding HarfBuzz's clustering behavior options. The cluster level + * dictates one aspect of how HarfBuzz will treat non-base characters + * during shaping. + * + * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES, non-base + * characters are merged into the cluster of the base character that precedes them. + * + * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS, non-base characters are initially + * assigned their own cluster values, which are not merged into preceding base + * clusters. This allows HarfBuzz to perform additional operations like reorder + * sequences of adjacent marks. + * + * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES is the default, because it maintains + * backward compatibility with older versions of HarfBuzz. New client programs that + * do not need to maintain such backward compatibility are recommended to use + * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS instead of the default. + * + * Since: 0.9.42 + */ +typedef enum { + HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0, + HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1, + HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2, + HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES +} hb_buffer_cluster_level_t; + +HB_EXTERN void +hb_buffer_set_cluster_level (hb_buffer_t *buffer, + hb_buffer_cluster_level_t cluster_level); + +HB_EXTERN hb_buffer_cluster_level_t +hb_buffer_get_cluster_level (const hb_buffer_t *buffer); + +/** + * HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT: + * + * The default code point for replacing invalid characters in a given encoding. + * Set to U+FFFD REPLACEMENT CHARACTER. + * + * Since: 0.9.31 + */ +#define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu + +HB_EXTERN void +hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, + hb_codepoint_t replacement); + +HB_EXTERN hb_codepoint_t +hb_buffer_get_replacement_codepoint (const hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_set_invisible_glyph (hb_buffer_t *buffer, + hb_codepoint_t invisible); + +HB_EXTERN hb_codepoint_t +hb_buffer_get_invisible_glyph (const hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_set_not_found_glyph (hb_buffer_t *buffer, + hb_codepoint_t not_found); + +HB_EXTERN hb_codepoint_t +hb_buffer_get_not_found_glyph (const hb_buffer_t *buffer); + + +/* + * Content API. + */ + +HB_EXTERN void +hb_buffer_clear_contents (hb_buffer_t *buffer); + +HB_EXTERN hb_bool_t +hb_buffer_pre_allocate (hb_buffer_t *buffer, + unsigned int size); + + +HB_EXTERN hb_bool_t +hb_buffer_allocation_successful (hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_reverse (hb_buffer_t *buffer); + +HB_EXTERN void +hb_buffer_reverse_range (hb_buffer_t *buffer, + unsigned int start, unsigned int end); + +HB_EXTERN void +hb_buffer_reverse_clusters (hb_buffer_t *buffer); + + +/* Filling the buffer in */ + +HB_EXTERN void +hb_buffer_add (hb_buffer_t *buffer, + hb_codepoint_t codepoint, + unsigned int cluster); + +HB_EXTERN void +hb_buffer_add_utf8 (hb_buffer_t *buffer, + const char *text, + int text_length, + unsigned int item_offset, + int item_length); + +HB_EXTERN void +hb_buffer_add_utf16 (hb_buffer_t *buffer, + const uint16_t *text, + int text_length, + unsigned int item_offset, + int item_length); + +HB_EXTERN void +hb_buffer_add_utf32 (hb_buffer_t *buffer, + const uint32_t *text, + int text_length, + unsigned int item_offset, + int item_length); + +HB_EXTERN void +hb_buffer_add_latin1 (hb_buffer_t *buffer, + const uint8_t *text, + int text_length, + unsigned int item_offset, + int item_length); + +HB_EXTERN void +hb_buffer_add_codepoints (hb_buffer_t *buffer, + const hb_codepoint_t *text, + int text_length, + unsigned int item_offset, + int item_length); + +HB_EXTERN void +hb_buffer_append (hb_buffer_t *buffer, + const hb_buffer_t *source, + unsigned int start, + unsigned int end); + +HB_EXTERN hb_bool_t +hb_buffer_set_length (hb_buffer_t *buffer, + unsigned int length); + +HB_EXTERN unsigned int +hb_buffer_get_length (const hb_buffer_t *buffer); + +/* Getting glyphs out of the buffer */ + +HB_EXTERN hb_glyph_info_t * +hb_buffer_get_glyph_infos (hb_buffer_t *buffer, + unsigned int *length); + +HB_EXTERN hb_glyph_position_t * +hb_buffer_get_glyph_positions (hb_buffer_t *buffer, + unsigned int *length); + +HB_EXTERN hb_bool_t +hb_buffer_has_positions (hb_buffer_t *buffer); + + +HB_EXTERN void +hb_buffer_normalize_glyphs (hb_buffer_t *buffer); + + +/* + * Serialize + */ + +/** + * hb_buffer_serialize_flags_t: + * @HB_BUFFER_SERIALIZE_FLAG_DEFAULT: serialize glyph names, clusters and positions. + * @HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: do not serialize glyph cluster. + * @HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: do not serialize glyph position information. + * @HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: do no serialize glyph name. + * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: serialize glyph extents. + * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS: serialize glyph flags. Since: 1.5.0 + * @HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES: do not serialize glyph advances, + * glyph offsets will reflect absolute glyph positions. Since: 1.8.0 + * @HB_BUFFER_SERIALIZE_FLAG_DEFINED: All currently defined flags. Since: 4.4.0 + * + * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). + * + * Since: 0.9.20 + */ +typedef enum { /*< flags >*/ + HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u, + HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u, + HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u, + HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u, + HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u, + HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS = 0x00000010u, + HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES = 0x00000020u, + + HB_BUFFER_SERIALIZE_FLAG_DEFINED = 0x0000003Fu +} hb_buffer_serialize_flags_t; + +/** + * hb_buffer_serialize_format_t: + * @HB_BUFFER_SERIALIZE_FORMAT_TEXT: a human-readable, plain text format. + * @HB_BUFFER_SERIALIZE_FORMAT_JSON: a machine-readable JSON format. + * @HB_BUFFER_SERIALIZE_FORMAT_INVALID: invalid format. + * + * The buffer serialization and de-serialization format used in + * hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs(). + * + * Since: 0.9.2 + */ +typedef enum { + HB_BUFFER_SERIALIZE_FORMAT_TEXT = HB_TAG('T','E','X','T'), + HB_BUFFER_SERIALIZE_FORMAT_JSON = HB_TAG('J','S','O','N'), + HB_BUFFER_SERIALIZE_FORMAT_INVALID = HB_TAG_NONE +} hb_buffer_serialize_format_t; + +HB_EXTERN hb_buffer_serialize_format_t +hb_buffer_serialize_format_from_string (const char *str, int len); + +HB_EXTERN const char * +hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format); + +HB_EXTERN const char ** +hb_buffer_serialize_list_formats (void); + +HB_EXTERN unsigned int +hb_buffer_serialize_glyphs (hb_buffer_t *buffer, + unsigned int start, + unsigned int end, + char *buf, + unsigned int buf_size, + unsigned int *buf_consumed, + hb_font_t *font, + hb_buffer_serialize_format_t format, + hb_buffer_serialize_flags_t flags); + +HB_EXTERN unsigned int +hb_buffer_serialize_unicode (hb_buffer_t *buffer, + unsigned int start, + unsigned int end, + char *buf, + unsigned int buf_size, + unsigned int *buf_consumed, + hb_buffer_serialize_format_t format, + hb_buffer_serialize_flags_t flags); + +HB_EXTERN unsigned int +hb_buffer_serialize (hb_buffer_t *buffer, + unsigned int start, + unsigned int end, + char *buf, + unsigned int buf_size, + unsigned int *buf_consumed, + hb_font_t *font, + hb_buffer_serialize_format_t format, + hb_buffer_serialize_flags_t flags); + +HB_EXTERN hb_bool_t +hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, + const char *buf, + int buf_len, + const char **end_ptr, + hb_font_t *font, + hb_buffer_serialize_format_t format); + +HB_EXTERN hb_bool_t +hb_buffer_deserialize_unicode (hb_buffer_t *buffer, + const char *buf, + int buf_len, + const char **end_ptr, + hb_buffer_serialize_format_t format); + + + +/* + * Compare buffers + */ + +/** + * hb_buffer_diff_flags_t: + * @HB_BUFFER_DIFF_FLAG_EQUAL: equal buffers. + * @HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH: buffers with different + * #hb_buffer_content_type_t. + * @HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH: buffers with differing length. + * @HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT: `.notdef` glyph is present in the + * reference buffer. + * @HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT: dotted circle glyph is present + * in the reference buffer. + * @HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH: difference in #hb_glyph_info_t.codepoint + * @HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH: difference in #hb_glyph_info_t.cluster + * @HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH: difference in #hb_glyph_flags_t. + * @HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH: difference in #hb_glyph_position_t. + * + * Flags from comparing two #hb_buffer_t's. + * + * Buffer with different #hb_buffer_content_type_t cannot be meaningfully + * compared in any further detail. + * + * For buffers with differing length, the per-glyph comparison is not + * attempted, though we do still scan reference buffer for dotted circle and + * `.notdef` glyphs. + * + * If the buffers have the same length, we compare them glyph-by-glyph and + * report which aspect(s) of the glyph info/position are different. + * + * Since: 1.5.0 + */ +typedef enum { /*< flags >*/ + HB_BUFFER_DIFF_FLAG_EQUAL = 0x0000, + + /* Buffers with different content_type cannot be meaningfully compared + * in any further detail. */ + HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH = 0x0001, + + /* For buffers with differing length, the per-glyph comparison is not + * attempted, though we do still scan reference for dottedcircle / .notdef + * glyphs. */ + HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH = 0x0002, + + /* We want to know if dottedcircle / .notdef glyphs are present in the + * reference, as we may not care so much about other differences in this + * case. */ + HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT = 0x0004, + HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT = 0x0008, + + /* If the buffers have the same length, we compare them glyph-by-glyph + * and report which aspect(s) of the glyph info/position are different. */ + HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH = 0x0010, + HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH = 0x0020, + HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH = 0x0040, + HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH = 0x0080 + +} hb_buffer_diff_flags_t; + +/* Compare the contents of two buffers, report types of differences. */ +HB_EXTERN hb_buffer_diff_flags_t +hb_buffer_diff (hb_buffer_t *buffer, + hb_buffer_t *reference, + hb_codepoint_t dottedcircle_glyph, + unsigned int position_fuzz); + + +/* + * Debugging. + */ + +/** + * hb_buffer_message_func_t: + * @buffer: An #hb_buffer_t to work upon + * @font: The #hb_font_t the @buffer is shaped with + * @message: `NULL`-terminated message passed to the function + * @user_data: User data pointer passed by the caller + * + * A callback method for #hb_buffer_t. The method gets called with the + * #hb_buffer_t it was set on, the #hb_font_t the buffer is shaped with and a + * message describing what step of the shaping process will be performed. + * Returning `false` from this method will skip this shaping step and move to + * the next one. + * + * Return value: `true` to perform the shaping step, `false` to skip it. + * + * Since: 1.1.3 + */ +typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer, + hb_font_t *font, + const char *message, + void *user_data); + +HB_EXTERN void +hb_buffer_set_message_func (hb_buffer_t *buffer, + hb_buffer_message_func_t func, + void *user_data, hb_destroy_func_t destroy); + + +HB_END_DECLS + +#endif /* HB_BUFFER_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-common.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-common.h new file mode 100644 index 0000000..e92feb9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-common.h @@ -0,0 +1,902 @@ +/* + * Copyright © 2007,2008,2009 Red Hat, Inc. + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_COMMON_H +#define HB_COMMON_H + +#ifndef HB_EXTERN +#define HB_EXTERN extern +#endif + +#ifndef HB_BEGIN_DECLS +# ifdef __cplusplus +# define HB_BEGIN_DECLS extern "C" { +# define HB_END_DECLS } +# else /* !__cplusplus */ +# define HB_BEGIN_DECLS +# define HB_END_DECLS +# endif /* !__cplusplus */ +#endif + +#if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \ + defined (_sgi) || defined (__sun) || defined (sun) || \ + defined (__digital__) || defined (__HP_cc) +# include +#elif defined (_AIX) +# include +#elif defined (_MSC_VER) && _MSC_VER < 1600 +/* VS 2010 (_MSC_VER 1600) has stdint.h */ +typedef __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#elif defined (__KERNEL__) +# include +#else +# include +#endif + +#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +#define HB_DEPRECATED __attribute__((__deprecated__)) +#elif defined(_MSC_VER) && (_MSC_VER >= 1300) +#define HB_DEPRECATED __declspec(deprecated) +#else +#define HB_DEPRECATED +#endif + +#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) +#define HB_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead"))) +#elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) +#define HB_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead")) +#else +#define HB_DEPRECATED_FOR(f) HB_DEPRECATED +#endif + + +HB_BEGIN_DECLS + +/** + * hb_bool_t: + * + * Data type for booleans. + * + **/ +typedef int hb_bool_t; + +/** + * hb_codepoint_t: + * + * Data type for holding Unicode codepoints. Also + * used to hold glyph IDs. + * + **/ +typedef uint32_t hb_codepoint_t; +/** + * hb_position_t: + * + * Data type for holding a single coordinate value. + * Contour points and other multi-dimensional data are + * stored as tuples of #hb_position_t's. + * + **/ +typedef int32_t hb_position_t; +/** + * hb_mask_t: + * + * Data type for bitmasks. + * + **/ +typedef uint32_t hb_mask_t; + +typedef union _hb_var_int_t { + uint32_t u32; + int32_t i32; + uint16_t u16[2]; + int16_t i16[2]; + uint8_t u8[4]; + int8_t i8[4]; +} hb_var_int_t; + +typedef union _hb_var_num_t { + float f; + uint32_t u32; + int32_t i32; + uint16_t u16[2]; + int16_t i16[2]; + uint8_t u8[4]; + int8_t i8[4]; +} hb_var_num_t; + + +/* hb_tag_t */ + +/** + * hb_tag_t: + * + * Data type for tag identifiers. Tags are four + * byte integers, each byte representing a character. + * + * Tags are used to identify tables, design-variation axes, + * scripts, languages, font features, and baselines with + * human-readable names. + * + **/ +typedef uint32_t hb_tag_t; + +/** + * HB_TAG: + * @c1: 1st character of the tag + * @c2: 2nd character of the tag + * @c3: 3rd character of the tag + * @c4: 4th character of the tag + * + * Constructs an #hb_tag_t from four character literals. + * + **/ +#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint32_t)(c1)&0xFF)<<24)|(((uint32_t)(c2)&0xFF)<<16)|(((uint32_t)(c3)&0xFF)<<8)|((uint32_t)(c4)&0xFF))) + +/** + * HB_UNTAG: + * @tag: an #hb_tag_t + * + * Extracts four character literals from an #hb_tag_t. + * + * Since: 0.6.0 + * + **/ +#define HB_UNTAG(tag) (uint8_t)(((tag)>>24)&0xFF), (uint8_t)(((tag)>>16)&0xFF), (uint8_t)(((tag)>>8)&0xFF), (uint8_t)((tag)&0xFF) + +/** + * HB_TAG_NONE: + * + * Unset #hb_tag_t. + */ +#define HB_TAG_NONE HB_TAG(0,0,0,0) +/** + * HB_TAG_MAX: + * + * Maximum possible unsigned #hb_tag_t. + * + * Since: 0.9.26 + */ +#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff) +/** + * HB_TAG_MAX_SIGNED: + * + * Maximum possible signed #hb_tag_t. + * + * Since: 0.9.33 + */ +#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff) + +/* len=-1 means str is NUL-terminated. */ +HB_EXTERN hb_tag_t +hb_tag_from_string (const char *str, int len); + +/* buf should have 4 bytes. */ +HB_EXTERN void +hb_tag_to_string (hb_tag_t tag, char *buf); + + +/** + * hb_direction_t: + * @HB_DIRECTION_INVALID: Initial, unset direction. + * @HB_DIRECTION_LTR: Text is set horizontally from left to right. + * @HB_DIRECTION_RTL: Text is set horizontally from right to left. + * @HB_DIRECTION_TTB: Text is set vertically from top to bottom. + * @HB_DIRECTION_BTT: Text is set vertically from bottom to top. + * + * The direction of a text segment or buffer. + * + * A segment can also be tested for horizontal or vertical + * orientation (irrespective of specific direction) with + * HB_DIRECTION_IS_HORIZONTAL() or HB_DIRECTION_IS_VERTICAL(). + * + */ +typedef enum { + HB_DIRECTION_INVALID = 0, + HB_DIRECTION_LTR = 4, + HB_DIRECTION_RTL, + HB_DIRECTION_TTB, + HB_DIRECTION_BTT +} hb_direction_t; + +/* len=-1 means str is NUL-terminated */ +HB_EXTERN hb_direction_t +hb_direction_from_string (const char *str, int len); + +HB_EXTERN const char * +hb_direction_to_string (hb_direction_t direction); + +/** + * HB_DIRECTION_IS_VALID: + * @dir: #hb_direction_t to test + * + * Tests whether a text direction is valid. + * + **/ +#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4) +/* Direction must be valid for the following */ +/** + * HB_DIRECTION_IS_HORIZONTAL: + * @dir: #hb_direction_t to test + * + * Tests whether a text direction is horizontal. Requires + * that the direction be valid. + * + **/ +#define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4) +/** + * HB_DIRECTION_IS_VERTICAL: + * @dir: #hb_direction_t to test + * + * Tests whether a text direction is vertical. Requires + * that the direction be valid. + * + **/ +#define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6) +/** + * HB_DIRECTION_IS_FORWARD: + * @dir: #hb_direction_t to test + * + * Tests whether a text direction moves forward (from left to right, or from + * top to bottom). Requires that the direction be valid. + * + **/ +#define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4) +/** + * HB_DIRECTION_IS_BACKWARD: + * @dir: #hb_direction_t to test + * + * Tests whether a text direction moves backward (from right to left, or from + * bottom to top). Requires that the direction be valid. + * + **/ +#define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5) +/** + * HB_DIRECTION_REVERSE: + * @dir: #hb_direction_t to reverse + * + * Reverses a text direction. Requires that the direction + * be valid. + * + **/ +#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1)) + + +/* hb_language_t */ + +/** + * hb_language_t: + * + * Data type for languages. Each #hb_language_t corresponds to a BCP 47 + * language tag. + * + */ +typedef const struct hb_language_impl_t *hb_language_t; + +HB_EXTERN hb_language_t +hb_language_from_string (const char *str, int len); + +HB_EXTERN const char * +hb_language_to_string (hb_language_t language); + +/** + * HB_LANGUAGE_INVALID: + * + * An unset #hb_language_t. + * + * Since: 0.6.0 + */ +#define HB_LANGUAGE_INVALID ((hb_language_t) 0) + +HB_EXTERN hb_language_t +hb_language_get_default (void); + +HB_EXTERN hb_bool_t +hb_language_matches (hb_language_t language, + hb_language_t specific); + +/** + * hb_script_t: + * @HB_SCRIPT_COMMON: `Zyyy` + * @HB_SCRIPT_INHERITED: `Zinh` + * @HB_SCRIPT_UNKNOWN: `Zzzz` + * @HB_SCRIPT_ARABIC: `Arab` + * @HB_SCRIPT_ARMENIAN: `Armn` + * @HB_SCRIPT_BENGALI: `Beng` + * @HB_SCRIPT_CYRILLIC: `Cyrl` + * @HB_SCRIPT_DEVANAGARI: `Deva` + * @HB_SCRIPT_GEORGIAN: `Geor` + * @HB_SCRIPT_GREEK: `Grek` + * @HB_SCRIPT_GUJARATI: `Gujr` + * @HB_SCRIPT_GURMUKHI: `Guru` + * @HB_SCRIPT_HANGUL: `Hang` + * @HB_SCRIPT_HAN: `Hani` + * @HB_SCRIPT_HEBREW: `Hebr` + * @HB_SCRIPT_HIRAGANA: `Hira` + * @HB_SCRIPT_KANNADA: `Knda` + * @HB_SCRIPT_KATAKANA: `Kana` + * @HB_SCRIPT_LAO: `Laoo` + * @HB_SCRIPT_LATIN: `Latn` + * @HB_SCRIPT_MALAYALAM: `Mlym` + * @HB_SCRIPT_ORIYA: `Orya` + * @HB_SCRIPT_TAMIL: `Taml` + * @HB_SCRIPT_TELUGU: `Telu` + * @HB_SCRIPT_THAI: `Thai` + * @HB_SCRIPT_TIBETAN: `Tibt` + * @HB_SCRIPT_BOPOMOFO: `Bopo` + * @HB_SCRIPT_BRAILLE: `Brai` + * @HB_SCRIPT_CANADIAN_SYLLABICS: `Cans` + * @HB_SCRIPT_CHEROKEE: `Cher` + * @HB_SCRIPT_ETHIOPIC: `Ethi` + * @HB_SCRIPT_KHMER: `Khmr` + * @HB_SCRIPT_MONGOLIAN: `Mong` + * @HB_SCRIPT_MYANMAR: `Mymr` + * @HB_SCRIPT_OGHAM: `Ogam` + * @HB_SCRIPT_RUNIC: `Runr` + * @HB_SCRIPT_SINHALA: `Sinh` + * @HB_SCRIPT_SYRIAC: `Syrc` + * @HB_SCRIPT_THAANA: `Thaa` + * @HB_SCRIPT_YI: `Yiii` + * @HB_SCRIPT_DESERET: `Dsrt` + * @HB_SCRIPT_GOTHIC: `Goth` + * @HB_SCRIPT_OLD_ITALIC: `Ital` + * @HB_SCRIPT_BUHID: `Buhd` + * @HB_SCRIPT_HANUNOO: `Hano` + * @HB_SCRIPT_TAGALOG: `Tglg` + * @HB_SCRIPT_TAGBANWA: `Tagb` + * @HB_SCRIPT_CYPRIOT: `Cprt` + * @HB_SCRIPT_LIMBU: `Limb` + * @HB_SCRIPT_LINEAR_B: `Linb` + * @HB_SCRIPT_OSMANYA: `Osma` + * @HB_SCRIPT_SHAVIAN: `Shaw` + * @HB_SCRIPT_TAI_LE: `Tale` + * @HB_SCRIPT_UGARITIC: `Ugar` + * @HB_SCRIPT_BUGINESE: `Bugi` + * @HB_SCRIPT_COPTIC: `Copt` + * @HB_SCRIPT_GLAGOLITIC: `Glag` + * @HB_SCRIPT_KHAROSHTHI: `Khar` + * @HB_SCRIPT_NEW_TAI_LUE: `Talu` + * @HB_SCRIPT_OLD_PERSIAN: `Xpeo` + * @HB_SCRIPT_SYLOTI_NAGRI: `Sylo` + * @HB_SCRIPT_TIFINAGH: `Tfng` + * @HB_SCRIPT_BALINESE: `Bali` + * @HB_SCRIPT_CUNEIFORM: `Xsux` + * @HB_SCRIPT_NKO: `Nkoo` + * @HB_SCRIPT_PHAGS_PA: `Phag` + * @HB_SCRIPT_PHOENICIAN: `Phnx` + * @HB_SCRIPT_CARIAN: `Cari` + * @HB_SCRIPT_CHAM: `Cham` + * @HB_SCRIPT_KAYAH_LI: `Kali` + * @HB_SCRIPT_LEPCHA: `Lepc` + * @HB_SCRIPT_LYCIAN: `Lyci` + * @HB_SCRIPT_LYDIAN: `Lydi` + * @HB_SCRIPT_OL_CHIKI: `Olck` + * @HB_SCRIPT_REJANG: `Rjng` + * @HB_SCRIPT_SAURASHTRA: `Saur` + * @HB_SCRIPT_SUNDANESE: `Sund` + * @HB_SCRIPT_VAI: `Vaii` + * @HB_SCRIPT_AVESTAN: `Avst` + * @HB_SCRIPT_BAMUM: `Bamu` + * @HB_SCRIPT_EGYPTIAN_HIEROGLYPHS: `Egyp` + * @HB_SCRIPT_IMPERIAL_ARAMAIC: `Armi` + * @HB_SCRIPT_INSCRIPTIONAL_PAHLAVI: `Phli` + * @HB_SCRIPT_INSCRIPTIONAL_PARTHIAN: `Prti` + * @HB_SCRIPT_JAVANESE: `Java` + * @HB_SCRIPT_KAITHI: `Kthi` + * @HB_SCRIPT_LISU: `Lisu` + * @HB_SCRIPT_MEETEI_MAYEK: `Mtei` + * @HB_SCRIPT_OLD_SOUTH_ARABIAN: `Sarb` + * @HB_SCRIPT_OLD_TURKIC: `Orkh` + * @HB_SCRIPT_SAMARITAN: `Samr` + * @HB_SCRIPT_TAI_THAM: `Lana` + * @HB_SCRIPT_TAI_VIET: `Tavt` + * @HB_SCRIPT_BATAK: `Batk` + * @HB_SCRIPT_BRAHMI: `Brah` + * @HB_SCRIPT_MANDAIC: `Mand` + * @HB_SCRIPT_CHAKMA: `Cakm` + * @HB_SCRIPT_MEROITIC_CURSIVE: `Merc` + * @HB_SCRIPT_MEROITIC_HIEROGLYPHS: `Mero` + * @HB_SCRIPT_MIAO: `Plrd` + * @HB_SCRIPT_SHARADA: `Shrd` + * @HB_SCRIPT_SORA_SOMPENG: `Sora` + * @HB_SCRIPT_TAKRI: `Takr` + * @HB_SCRIPT_BASSA_VAH: `Bass`, Since: 0.9.30 + * @HB_SCRIPT_CAUCASIAN_ALBANIAN: `Aghb`, Since: 0.9.30 + * @HB_SCRIPT_DUPLOYAN: `Dupl`, Since: 0.9.30 + * @HB_SCRIPT_ELBASAN: `Elba`, Since: 0.9.30 + * @HB_SCRIPT_GRANTHA: `Gran`, Since: 0.9.30 + * @HB_SCRIPT_KHOJKI: `Khoj`, Since: 0.9.30 + * @HB_SCRIPT_KHUDAWADI: `Sind`, Since: 0.9.30 + * @HB_SCRIPT_LINEAR_A: `Lina`, Since: 0.9.30 + * @HB_SCRIPT_MAHAJANI: `Mahj`, Since: 0.9.30 + * @HB_SCRIPT_MANICHAEAN: `Mani`, Since: 0.9.30 + * @HB_SCRIPT_MENDE_KIKAKUI: `Mend`, Since: 0.9.30 + * @HB_SCRIPT_MODI: `Modi`, Since: 0.9.30 + * @HB_SCRIPT_MRO: `Mroo`, Since: 0.9.30 + * @HB_SCRIPT_NABATAEAN: `Nbat`, Since: 0.9.30 + * @HB_SCRIPT_OLD_NORTH_ARABIAN: `Narb`, Since: 0.9.30 + * @HB_SCRIPT_OLD_PERMIC: `Perm`, Since: 0.9.30 + * @HB_SCRIPT_PAHAWH_HMONG: `Hmng`, Since: 0.9.30 + * @HB_SCRIPT_PALMYRENE: `Palm`, Since: 0.9.30 + * @HB_SCRIPT_PAU_CIN_HAU: `Pauc`, Since: 0.9.30 + * @HB_SCRIPT_PSALTER_PAHLAVI: `Phlp`, Since: 0.9.30 + * @HB_SCRIPT_SIDDHAM: `Sidd`, Since: 0.9.30 + * @HB_SCRIPT_TIRHUTA: `Tirh`, Since: 0.9.30 + * @HB_SCRIPT_WARANG_CITI: `Wara`, Since: 0.9.30 + * @HB_SCRIPT_AHOM: `Ahom`, Since: 0.9.30 + * @HB_SCRIPT_ANATOLIAN_HIEROGLYPHS: `Hluw`, Since: 0.9.30 + * @HB_SCRIPT_HATRAN: `Hatr`, Since: 0.9.30 + * @HB_SCRIPT_MULTANI: `Mult`, Since: 0.9.30 + * @HB_SCRIPT_OLD_HUNGARIAN: `Hung`, Since: 0.9.30 + * @HB_SCRIPT_SIGNWRITING: `Sgnw`, Since: 0.9.30 + * @HB_SCRIPT_ADLAM: `Adlm`, Since: 1.3.0 + * @HB_SCRIPT_BHAIKSUKI: `Bhks`, Since: 1.3.0 + * @HB_SCRIPT_MARCHEN: `Marc`, Since: 1.3.0 + * @HB_SCRIPT_OSAGE: `Osge`, Since: 1.3.0 + * @HB_SCRIPT_TANGUT: `Tang`, Since: 1.3.0 + * @HB_SCRIPT_NEWA: `Newa`, Since: 1.3.0 + * @HB_SCRIPT_MASARAM_GONDI: `Gonm`, Since: 1.6.0 + * @HB_SCRIPT_NUSHU: `Nshu`, Since: 1.6.0 + * @HB_SCRIPT_SOYOMBO: `Soyo`, Since: 1.6.0 + * @HB_SCRIPT_ZANABAZAR_SQUARE: `Zanb`, Since: 1.6.0 + * @HB_SCRIPT_DOGRA: `Dogr`, Since: 1.8.0 + * @HB_SCRIPT_GUNJALA_GONDI: `Gong`, Since: 1.8.0 + * @HB_SCRIPT_HANIFI_ROHINGYA: `Rohg`, Since: 1.8.0 + * @HB_SCRIPT_MAKASAR: `Maka`, Since: 1.8.0 + * @HB_SCRIPT_MEDEFAIDRIN: `Medf`, Since: 1.8.0 + * @HB_SCRIPT_OLD_SOGDIAN: `Sogo`, Since: 1.8.0 + * @HB_SCRIPT_SOGDIAN: `Sogd`, Since: 1.8.0 + * @HB_SCRIPT_ELYMAIC: `Elym`, Since: 2.4.0 + * @HB_SCRIPT_NANDINAGARI: `Nand`, Since: 2.4.0 + * @HB_SCRIPT_NYIAKENG_PUACHUE_HMONG: `Hmnp`, Since: 2.4.0 + * @HB_SCRIPT_WANCHO: `Wcho`, Since: 2.4.0 + * @HB_SCRIPT_CHORASMIAN: `Chrs`, Since: 2.6.7 + * @HB_SCRIPT_DIVES_AKURU: `Diak`, Since: 2.6.7 + * @HB_SCRIPT_KHITAN_SMALL_SCRIPT: `Kits`, Since: 2.6.7 + * @HB_SCRIPT_YEZIDI: `Yezi`, Since: 2.6.7 + * @HB_SCRIPT_CYPRO_MINOAN: `Cpmn`, Since: 3.0.0 + * @HB_SCRIPT_OLD_UYGHUR: `Ougr`, Since: 3.0.0 + * @HB_SCRIPT_TANGSA: `Tnsa`, Since: 3.0.0 + * @HB_SCRIPT_TOTO: `Toto`, Since: 3.0.0 + * @HB_SCRIPT_VITHKUQI: `Vith`, Since: 3.0.0 + * @HB_SCRIPT_MATH: `Zmth`, Since: 3.4.0 + * @HB_SCRIPT_KAWI: `Kawi`, Since: 5.2.0 + * @HB_SCRIPT_NAG_MUNDARI: `Nagm`, Since: 5.2.0 + * @HB_SCRIPT_INVALID: No script set + * + * Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding + * to the four-letter values defined by [ISO 15924](https://unicode.org/iso15924/). + * + * See also the Script (sc) property of the Unicode Character Database. + * + **/ + +/* https://docs.google.com/spreadsheets/d/1Y90M0Ie3MUJ6UVCRDOypOtijlMDLNNyyLk36T6iMu0o */ +typedef enum +{ + HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'), /*1.1*/ + HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'), /*1.1*/ + HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'), /*5.0*/ + + HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'), /*1.1*/ + HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'), /*1.1*/ + HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'), /*1.1*/ + HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'), /*1.1*/ + HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'), /*1.1*/ + HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'), /*1.1*/ + HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'), /*1.1*/ + HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'), /*1.1*/ + HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'), /*1.1*/ + HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'), /*1.1*/ + HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'), /*1.1*/ + HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'), /*1.1*/ + HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'), /*1.1*/ + HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'), /*1.1*/ + HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'), /*1.1*/ + HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'), /*1.1*/ + HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'), /*1.1*/ + HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'), /*1.1*/ + HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'), /*1.1*/ + HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'), /*1.1*/ + HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'), /*1.1*/ + HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'), /*1.1*/ + + HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'), /*2.0*/ + + HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'), /*3.0*/ + HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'), /*3.0*/ + HB_SCRIPT_CANADIAN_SYLLABICS = HB_TAG ('C','a','n','s'), /*3.0*/ + HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'), /*3.0*/ + HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'), /*3.0*/ + HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'), /*3.0*/ + HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'), /*3.0*/ + HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'), /*3.0*/ + HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'), /*3.0*/ + HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'), /*3.0*/ + HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'), /*3.0*/ + HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'), /*3.0*/ + HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'), /*3.0*/ + HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'), /*3.0*/ + + HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'), /*3.1*/ + HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'), /*3.1*/ + HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'), /*3.1*/ + + HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'), /*3.2*/ + HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'), /*3.2*/ + HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'), /*3.2*/ + HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'), /*3.2*/ + + HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'), /*4.0*/ + HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'), /*4.0*/ + HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'), /*4.0*/ + HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'), /*4.0*/ + HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'), /*4.0*/ + HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'), /*4.0*/ + HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'), /*4.0*/ + + HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'), /*4.1*/ + HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'), /*4.1*/ + HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'), /*4.1*/ + HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'), /*4.1*/ + HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'), /*4.1*/ + HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'), /*4.1*/ + HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'), /*4.1*/ + HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'), /*4.1*/ + + HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'), /*5.0*/ + HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'), /*5.0*/ + HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'), /*5.0*/ + HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'), /*5.0*/ + HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'), /*5.0*/ + + HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'), /*5.1*/ + HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'), /*5.1*/ + HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'), /*5.1*/ + HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'), /*5.1*/ + HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'), /*5.1*/ + HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'), /*5.1*/ + HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'), /*5.1*/ + HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'), /*5.1*/ + HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'), /*5.1*/ + HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'), /*5.1*/ + HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'), /*5.1*/ + + HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'), /*5.2*/ + HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'), /*5.2*/ + HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'), /*5.2*/ + HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'), /*5.2*/ + HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'), /*5.2*/ + HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'), /*5.2*/ + HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'), /*5.2*/ + HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'), /*5.2*/ + HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'), /*5.2*/ + HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'), /*5.2*/ + HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'), /*5.2*/ + HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'), /*5.2*/ + HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'), /*5.2*/ + HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'), /*5.2*/ + HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'), /*5.2*/ + + HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'), /*6.0*/ + HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'), /*6.0*/ + HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'), /*6.0*/ + + HB_SCRIPT_CHAKMA = HB_TAG ('C','a','k','m'), /*6.1*/ + HB_SCRIPT_MEROITIC_CURSIVE = HB_TAG ('M','e','r','c'), /*6.1*/ + HB_SCRIPT_MEROITIC_HIEROGLYPHS = HB_TAG ('M','e','r','o'), /*6.1*/ + HB_SCRIPT_MIAO = HB_TAG ('P','l','r','d'), /*6.1*/ + HB_SCRIPT_SHARADA = HB_TAG ('S','h','r','d'), /*6.1*/ + HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'), /*6.1*/ + HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'), /*6.1*/ + + /* + * Since: 0.9.30 + */ + HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'), /*7.0*/ + HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'), /*7.0*/ + HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'), /*7.0*/ + HB_SCRIPT_ELBASAN = HB_TAG ('E','l','b','a'), /*7.0*/ + HB_SCRIPT_GRANTHA = HB_TAG ('G','r','a','n'), /*7.0*/ + HB_SCRIPT_KHOJKI = HB_TAG ('K','h','o','j'), /*7.0*/ + HB_SCRIPT_KHUDAWADI = HB_TAG ('S','i','n','d'), /*7.0*/ + HB_SCRIPT_LINEAR_A = HB_TAG ('L','i','n','a'), /*7.0*/ + HB_SCRIPT_MAHAJANI = HB_TAG ('M','a','h','j'), /*7.0*/ + HB_SCRIPT_MANICHAEAN = HB_TAG ('M','a','n','i'), /*7.0*/ + HB_SCRIPT_MENDE_KIKAKUI = HB_TAG ('M','e','n','d'), /*7.0*/ + HB_SCRIPT_MODI = HB_TAG ('M','o','d','i'), /*7.0*/ + HB_SCRIPT_MRO = HB_TAG ('M','r','o','o'), /*7.0*/ + HB_SCRIPT_NABATAEAN = HB_TAG ('N','b','a','t'), /*7.0*/ + HB_SCRIPT_OLD_NORTH_ARABIAN = HB_TAG ('N','a','r','b'), /*7.0*/ + HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'), /*7.0*/ + HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'), /*7.0*/ + HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'), /*7.0*/ + HB_SCRIPT_PAU_CIN_HAU = HB_TAG ('P','a','u','c'), /*7.0*/ + HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'), /*7.0*/ + HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'), /*7.0*/ + HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), /*7.0*/ + HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), /*7.0*/ + + HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'), /*8.0*/ + HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'), /*8.0*/ + HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'), /*8.0*/ + HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'), /*8.0*/ + HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'), /*8.0*/ + HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'), /*8.0*/ + + /* + * Since 1.3.0 + */ + HB_SCRIPT_ADLAM = HB_TAG ('A','d','l','m'), /*9.0*/ + HB_SCRIPT_BHAIKSUKI = HB_TAG ('B','h','k','s'), /*9.0*/ + HB_SCRIPT_MARCHEN = HB_TAG ('M','a','r','c'), /*9.0*/ + HB_SCRIPT_OSAGE = HB_TAG ('O','s','g','e'), /*9.0*/ + HB_SCRIPT_TANGUT = HB_TAG ('T','a','n','g'), /*9.0*/ + HB_SCRIPT_NEWA = HB_TAG ('N','e','w','a'), /*9.0*/ + + /* + * Since 1.6.0 + */ + HB_SCRIPT_MASARAM_GONDI = HB_TAG ('G','o','n','m'), /*10.0*/ + HB_SCRIPT_NUSHU = HB_TAG ('N','s','h','u'), /*10.0*/ + HB_SCRIPT_SOYOMBO = HB_TAG ('S','o','y','o'), /*10.0*/ + HB_SCRIPT_ZANABAZAR_SQUARE = HB_TAG ('Z','a','n','b'), /*10.0*/ + + /* + * Since 1.8.0 + */ + HB_SCRIPT_DOGRA = HB_TAG ('D','o','g','r'), /*11.0*/ + HB_SCRIPT_GUNJALA_GONDI = HB_TAG ('G','o','n','g'), /*11.0*/ + HB_SCRIPT_HANIFI_ROHINGYA = HB_TAG ('R','o','h','g'), /*11.0*/ + HB_SCRIPT_MAKASAR = HB_TAG ('M','a','k','a'), /*11.0*/ + HB_SCRIPT_MEDEFAIDRIN = HB_TAG ('M','e','d','f'), /*11.0*/ + HB_SCRIPT_OLD_SOGDIAN = HB_TAG ('S','o','g','o'), /*11.0*/ + HB_SCRIPT_SOGDIAN = HB_TAG ('S','o','g','d'), /*11.0*/ + + /* + * Since 2.4.0 + */ + HB_SCRIPT_ELYMAIC = HB_TAG ('E','l','y','m'), /*12.0*/ + HB_SCRIPT_NANDINAGARI = HB_TAG ('N','a','n','d'), /*12.0*/ + HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = HB_TAG ('H','m','n','p'), /*12.0*/ + HB_SCRIPT_WANCHO = HB_TAG ('W','c','h','o'), /*12.0*/ + + /* + * Since 2.6.7 + */ + HB_SCRIPT_CHORASMIAN = HB_TAG ('C','h','r','s'), /*13.0*/ + HB_SCRIPT_DIVES_AKURU = HB_TAG ('D','i','a','k'), /*13.0*/ + HB_SCRIPT_KHITAN_SMALL_SCRIPT = HB_TAG ('K','i','t','s'), /*13.0*/ + HB_SCRIPT_YEZIDI = HB_TAG ('Y','e','z','i'), /*13.0*/ + + /* + * Since 3.0.0 + */ + HB_SCRIPT_CYPRO_MINOAN = HB_TAG ('C','p','m','n'), /*14.0*/ + HB_SCRIPT_OLD_UYGHUR = HB_TAG ('O','u','g','r'), /*14.0*/ + HB_SCRIPT_TANGSA = HB_TAG ('T','n','s','a'), /*14.0*/ + HB_SCRIPT_TOTO = HB_TAG ('T','o','t','o'), /*14.0*/ + HB_SCRIPT_VITHKUQI = HB_TAG ('V','i','t','h'), /*14.0*/ + + /* + * Since 3.4.0 + */ + HB_SCRIPT_MATH = HB_TAG ('Z','m','t','h'), + + /* + * Since 5.2.0 + */ + HB_SCRIPT_KAWI = HB_TAG ('K','a','w','i'), /*15.0*/ + HB_SCRIPT_NAG_MUNDARI = HB_TAG ('N','a','g','m'), /*15.0*/ + + /* No script set. */ + HB_SCRIPT_INVALID = HB_TAG_NONE, + + /*< private >*/ + + /* Dummy values to ensure any hb_tag_t value can be passed/stored as hb_script_t + * without risking undefined behavior. We have two, for historical reasons. + * HB_TAG_MAX used to be unsigned, but that was invalid Ansi C, so was changed + * to _HB_SCRIPT_MAX_VALUE to be equal to HB_TAG_MAX_SIGNED as well. + * + * See this thread for technicalities: + * + * https://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html + */ + _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX_SIGNED, /*< skip >*/ + _HB_SCRIPT_MAX_VALUE_SIGNED = HB_TAG_MAX_SIGNED /*< skip >*/ + +} hb_script_t; + + +/* Script functions */ + +HB_EXTERN hb_script_t +hb_script_from_iso15924_tag (hb_tag_t tag); + +HB_EXTERN hb_script_t +hb_script_from_string (const char *str, int len); + +HB_EXTERN hb_tag_t +hb_script_to_iso15924_tag (hb_script_t script); + +HB_EXTERN hb_direction_t +hb_script_get_horizontal_direction (hb_script_t script); + + +/* User data */ + +/** + * hb_user_data_key_t: + * + * Data structure for holding user-data keys. + * + **/ +typedef struct hb_user_data_key_t { + /*< private >*/ + char unused; +} hb_user_data_key_t; + +/** + * hb_destroy_func_t: + * @user_data: the data to be destroyed + * + * A virtual method for destroy user-data callbacks. + * + */ +typedef void (*hb_destroy_func_t) (void *user_data); + + +/* Font features and variations. */ + +/** + * HB_FEATURE_GLOBAL_START: + * + * Special setting for #hb_feature_t.start to apply the feature from the start + * of the buffer. + * + * Since: 2.0.0 + */ +#define HB_FEATURE_GLOBAL_START 0 + +/** + * HB_FEATURE_GLOBAL_END: + * + * Special setting for #hb_feature_t.end to apply the feature from to the end + * of the buffer. + * + * Since: 2.0.0 + */ +#define HB_FEATURE_GLOBAL_END ((unsigned int) -1) + +/** + * hb_feature_t: + * @tag: The #hb_tag_t tag of the feature + * @value: The value of the feature. 0 disables the feature, non-zero (usually + * 1) enables the feature. For features implemented as lookup type 3 (like + * 'salt') the @value is a one based index into the alternates. + * @start: the cluster to start applying this feature setting (inclusive). + * @end: the cluster to end applying this feature setting (exclusive). + * + * The #hb_feature_t is the structure that holds information about requested + * feature application. The feature will be applied with the given value to all + * glyphs which are in clusters between @start (inclusive) and @end (exclusive). + * Setting start to #HB_FEATURE_GLOBAL_START and end to #HB_FEATURE_GLOBAL_END + * specifies that the feature always applies to the entire buffer. + */ +typedef struct hb_feature_t { + hb_tag_t tag; + uint32_t value; + unsigned int start; + unsigned int end; +} hb_feature_t; + +HB_EXTERN hb_bool_t +hb_feature_from_string (const char *str, int len, + hb_feature_t *feature); + +HB_EXTERN void +hb_feature_to_string (hb_feature_t *feature, + char *buf, unsigned int size); + +/** + * hb_variation_t: + * @tag: The #hb_tag_t tag of the variation-axis name + * @value: The value of the variation axis + * + * Data type for holding variation data. Registered OpenType + * variation-axis tags are listed in + * [OpenType Axis Tag Registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg). + * + * Since: 1.4.2 + */ +typedef struct hb_variation_t { + hb_tag_t tag; + float value; +} hb_variation_t; + +HB_EXTERN hb_bool_t +hb_variation_from_string (const char *str, int len, + hb_variation_t *variation); + +HB_EXTERN void +hb_variation_to_string (hb_variation_t *variation, + char *buf, unsigned int size); + +/** + * hb_color_t: + * + * Data type for holding color values. Colors are eight bits per + * channel RGB plus alpha transparency. + * + * Since: 2.1.0 + */ +typedef uint32_t hb_color_t; + +/** + * HB_COLOR: + * @b: blue channel value + * @g: green channel value + * @r: red channel value + * @a: alpha channel value + * + * Constructs an #hb_color_t from four integers. + * + * Since: 2.1.0 + */ +#define HB_COLOR(b,g,r,a) ((hb_color_t) HB_TAG ((b),(g),(r),(a))) + +HB_EXTERN uint8_t +hb_color_get_alpha (hb_color_t color); +#define hb_color_get_alpha(color) ((color) & 0xFF) + +HB_EXTERN uint8_t +hb_color_get_red (hb_color_t color); +#define hb_color_get_red(color) (((color) >> 8) & 0xFF) + +HB_EXTERN uint8_t +hb_color_get_green (hb_color_t color); +#define hb_color_get_green(color) (((color) >> 16) & 0xFF) + +HB_EXTERN uint8_t +hb_color_get_blue (hb_color_t color); +#define hb_color_get_blue(color) (((color) >> 24) & 0xFF) + +HB_END_DECLS + +#endif /* HB_COMMON_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-cplusplus.hh b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-cplusplus.hh new file mode 100644 index 0000000..a210ab7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-cplusplus.hh @@ -0,0 +1,221 @@ +/* + * Copyright © 2022 Behdad Esfahbod + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#ifndef HB_CPLUSPLUS_HH +#define HB_CPLUSPLUS_HH + +#include "hb.h" + +HB_BEGIN_DECLS +HB_END_DECLS + +#ifdef __cplusplus + +#include +#include + +#if 0 +#if !(__cplusplus >= 201103L) +#error "HarfBuzz C++ helpers require C++11" +#endif +#endif + +namespace hb { + + +template +struct vtable; + +template +struct shared_ptr +{ + using element_type = T; + + using v = vtable; + + explicit shared_ptr (T *p = nullptr) : p (p) {} + shared_ptr (const shared_ptr &o) : p (v::reference (o.p)) {} + shared_ptr (shared_ptr &&o) : p (o.p) { o.p = nullptr; } + shared_ptr& operator = (const shared_ptr &o) { if (p != o.p) { destroy (); p = o.p; reference (); } return *this; } + shared_ptr& operator = (shared_ptr &&o) { v::destroy (p); p = o.p; o.p = nullptr; return *this; } + ~shared_ptr () { v::destroy (p); p = nullptr; } + + T* get() const { return p; } + + void swap (shared_ptr &o) { std::swap (p, o.p); } + friend void swap (shared_ptr &a, shared_ptr &b) { std::swap (a.p, b.p); } + + operator T * () const { return p; } + T& operator * () const { return *get (); } + T* operator -> () const { return get (); } + operator bool () const { return p; } + bool operator == (const shared_ptr &o) const { return p == o.p; } + bool operator != (const shared_ptr &o) const { return p != o.p; } + + static T* get_empty() { return v::get_empty (); } + T* reference() { return v::reference (p); } + void destroy() { v::destroy (p); } + void set_user_data (hb_user_data_key_t *key, + void *value, + hb_destroy_func_t destroy, + hb_bool_t replace) { v::set_user_data (p, key, value, destroy, replace); } + void * get_user_data (hb_user_data_key_t *key) { return v::get_user_data (p, key); } + + private: + T *p; +}; + +template struct is_shared_ptr : std::false_type {}; +template struct is_shared_ptr> : std::true_type {}; + +template +struct unique_ptr +{ + using element_type = T; + + using v = vtable; + + explicit unique_ptr (T *p = nullptr) : p (p) {} + unique_ptr (const unique_ptr &o) = delete; + unique_ptr (unique_ptr &&o) : p (o.p) { o.p = nullptr; } + unique_ptr& operator = (const unique_ptr &o) = delete; + unique_ptr& operator = (unique_ptr &&o) { v::destroy (p); p = o.p; o.p = nullptr; return *this; } + ~unique_ptr () { v::destroy (p); p = nullptr; } + + T* get() const { return p; } + T* release () { T* v = p; p = nullptr; return v; } + + void swap (unique_ptr &o) { std::swap (p, o.p); } + friend void swap (unique_ptr &a, unique_ptr &b) { std::swap (a.p, b.p); } + + operator T * () const { return p; } + T& operator * () const { return *get (); } + T* operator -> () const { return get (); } + operator bool () { return p; } + + private: + T *p; +}; + +template struct is_unique_ptr : std::false_type {}; +template struct is_unique_ptr> : std::true_type {}; + +template +struct vtable_t +{ + static constexpr auto get_empty = _get_empty; + static constexpr auto reference = _reference; + static constexpr auto destroy = _destroy; + static constexpr auto set_user_data = _set_user_data; + static constexpr auto get_user_data = _get_user_data; +}; + +#define HB_DEFINE_VTABLE(name) \ + template<> \ + struct vtable \ + : vtable_t {} + +HB_DEFINE_VTABLE (buffer); +HB_DEFINE_VTABLE (blob); +HB_DEFINE_VTABLE (face); +HB_DEFINE_VTABLE (font); +HB_DEFINE_VTABLE (font_funcs); +HB_DEFINE_VTABLE (map); +HB_DEFINE_VTABLE (set); +HB_DEFINE_VTABLE (shape_plan); +HB_DEFINE_VTABLE (unicode_funcs); + +#undef HB_DEFINE_VTABLE + + +#ifdef HB_SUBSET_H + +#define HB_DEFINE_VTABLE(name) \ + template<> \ + struct vtable \ + : vtable_t {} + + +HB_DEFINE_VTABLE (subset_input); +HB_DEFINE_VTABLE (subset_plan); + +#undef HB_DEFINE_VTABLE + +#endif + + +} // namespace hb + +/* Workaround for GCC < 7, see: + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480 + * https://stackoverflow.com/a/25594741 */ +namespace std { + + +template +struct hash> +{ + std::size_t operator()(const hb::shared_ptr& v) const noexcept + { + std::size_t h = std::hash{}(v.get ()); + return h; + } +}; + +template +struct hash> +{ + std::size_t operator()(const hb::unique_ptr& v) const noexcept + { + std::size_t h = std::hash{}(v.get ()); + return h; + } +}; + + +} // namespace std + +#endif /* __cplusplus */ + +#endif /* HB_CPLUSPLUS_HH */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-deprecated.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-deprecated.h new file mode 100644 index 0000000..333dc3c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-deprecated.h @@ -0,0 +1,251 @@ +/* + * Copyright © 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_DEPRECATED_H +#define HB_DEPRECATED_H + +#include "hb-common.h" +#include "hb-unicode.h" +#include "hb-font.h" +#include "hb-set.h" + + +/** + * SECTION:hb-deprecated + * @title: hb-deprecated + * @short_description: Deprecated API + * @include: hb.h + * + * These API have been deprecated in favor of newer API, or because they + * were deemed unnecessary. + **/ + + +HB_BEGIN_DECLS + +#ifndef HB_DISABLE_DEPRECATED + + +/** + * HB_SCRIPT_CANADIAN_ABORIGINAL: + * + * Use #HB_SCRIPT_CANADIAN_SYLLABICS instead: + * + * Deprecated: 0.9.20 + */ +#define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS + +/** + * HB_BUFFER_FLAGS_DEFAULT: + * + * Use #HB_BUFFER_FLAG_DEFAULT instead. + * + * Deprecated: 0.9.20 + */ +#define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT +/** + * HB_BUFFER_SERIALIZE_FLAGS_DEFAULT: + * + * Use #HB_BUFFER_SERIALIZE_FLAG_DEFAULT instead. + * + * Deprecated: 0.9.20 + */ +#define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT + +/** + * hb_font_get_glyph_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @unicode: The Unicode code point to query + * @variation_selector: The variation-selector code point to query + * @glyph: (out): The glyph ID retrieved + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the glyph ID for a specified Unicode code point + * font, with an optional variation selector. + * + * Return value: `true` if data found, `false` otherwise + * Deprecated: 1.2.3 + * + **/ +typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data); + +HB_EXTERN HB_DEPRECATED_FOR(hb_font_funcs_set_nominal_glyph_func and hb_font_funcs_set_variation_glyph_func) void +hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_unicode_eastasian_width_func_t: + * @ufuncs: A Unicode-functions structure + * @unicode: The code point to query + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_unicode_funcs_t structure. + * + * Deprecated: 2.0.0 + */ +typedef unsigned int (*hb_unicode_eastasian_width_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode, + void *user_data); + +/** + * hb_unicode_funcs_set_eastasian_width_func: + * @ufuncs: a Unicode-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_eastasian_width_func_t. + * + * Since: 0.9.2 + * Deprecated: 2.0.0 + **/ +HB_EXTERN HB_DEPRECATED void +hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_eastasian_width_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_unicode_eastasian_width: + * @ufuncs: a Unicode-function structure + * @unicode: The code point to query + * + * Don't use. Not used by HarfBuzz. + * + * Since: 0.9.2 + * Deprecated: 2.0.0 + **/ +HB_EXTERN HB_DEPRECATED unsigned int +hb_unicode_eastasian_width (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode); + + +/** + * hb_unicode_decompose_compatibility_func_t: + * @ufuncs: a Unicode function structure + * @u: codepoint to decompose + * @decomposed: address of codepoint array (of length #HB_UNICODE_MAX_DECOMPOSITION_LEN) to write decomposition into + * @user_data: user data pointer as passed to hb_unicode_funcs_set_decompose_compatibility_func() + * + * Fully decompose @u to its Unicode compatibility decomposition. The codepoints of the decomposition will be written to @decomposed. + * The complete length of the decomposition will be returned. + * + * If @u has no compatibility decomposition, zero should be returned. + * + * The Unicode standard guarantees that a buffer of length #HB_UNICODE_MAX_DECOMPOSITION_LEN codepoints will always be sufficient for any + * compatibility decomposition plus an terminating value of 0. Consequently, @decompose must be allocated by the caller to be at least this length. Implementations + * of this function type must ensure that they do not write past the provided array. + * + * Return value: number of codepoints in the full compatibility decomposition of @u, or 0 if no decomposition available. + * + * Deprecated: 2.0.0 + */ +typedef unsigned int (*hb_unicode_decompose_compatibility_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t u, + hb_codepoint_t *decomposed, + void *user_data); + +/** + * HB_UNICODE_MAX_DECOMPOSITION_LEN: + * + * See Unicode 6.1 for details on the maximum decomposition length. + * + * Deprecated: 2.0.0 + */ +#define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */ + +/** + * hb_unicode_funcs_set_decompose_compatibility_func: + * @ufuncs: A Unicode-functions structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_decompose_compatibility_func_t. + * + * + * + * Since: 0.9.2 + * Deprecated: 2.0.0 + **/ +HB_EXTERN HB_DEPRECATED void +hb_unicode_funcs_set_decompose_compatibility_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_decompose_compatibility_func_t func, + void *user_data, hb_destroy_func_t destroy); + +HB_EXTERN HB_DEPRECATED unsigned int +hb_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t u, + hb_codepoint_t *decomposed); + + +/** + * hb_font_get_glyph_v_kerning_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the kerning-adjustment value for a glyph-pair in + * the specified font, for vertical text segments. + * + **/ +typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t; + +/** + * hb_font_funcs_set_glyph_v_kerning_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_v_kerning_func_t. + * + * Since: 0.9.2 + * Deprecated: 2.0.0 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_v_kerning_func_t func, + void *user_data, hb_destroy_func_t destroy); + +HB_EXTERN hb_position_t +hb_font_get_glyph_v_kerning (hb_font_t *font, + hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph); + +#endif + +HB_END_DECLS + +#endif /* HB_DEPRECATED_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-draw.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-draw.h new file mode 100644 index 0000000..c45a532 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-draw.h @@ -0,0 +1,325 @@ +/* + * Copyright © 2019-2020 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_DRAW_H +#define HB_DRAW_H + +#include "hb.h" + +HB_BEGIN_DECLS + + +/** + * hb_draw_state_t + * @path_open: Whether there is an open path + * @path_start_x: X component of the start of current path + * @path_start_y: Y component of the start of current path + * @current_x: X component of current point + * @current_y: Y component of current point + * + * Current drawing state. + * + * Since: 4.0.0 + **/ +typedef struct hb_draw_state_t { + hb_bool_t path_open; + + float path_start_x; + float path_start_y; + + float current_x; + float current_y; + + /*< private >*/ + hb_var_num_t reserved1; + hb_var_num_t reserved2; + hb_var_num_t reserved3; + hb_var_num_t reserved4; + hb_var_num_t reserved5; + hb_var_num_t reserved6; + hb_var_num_t reserved7; +} hb_draw_state_t; + +/** + * HB_DRAW_STATE_DEFAULT: + * + * The default #hb_draw_state_t at the start of glyph drawing. + */ +#define HB_DRAW_STATE_DEFAULT {0, 0.f, 0.f, 0.f, 0.f, {0.}, {0.}, {0.}} + + +/** + * hb_draw_funcs_t: + * + * Glyph draw callbacks. + * + * #hb_draw_move_to_func_t, #hb_draw_line_to_func_t and + * #hb_draw_cubic_to_func_t calls are necessary to be defined but we translate + * #hb_draw_quadratic_to_func_t calls to #hb_draw_cubic_to_func_t if the + * callback isn't defined. + * + * Since: 4.0.0 + **/ + +typedef struct hb_draw_funcs_t hb_draw_funcs_t; + + +/** + * hb_draw_move_to_func_t: + * @dfuncs: draw functions object + * @draw_data: The data accompanying the draw functions + * @st: current draw state + * @to_x: X component of target point + * @to_y: Y component of target point + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_draw_funcs_t to perform a "move-to" draw + * operation. + * + * Since: 4.0.0 + * + **/ +typedef void (*hb_draw_move_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float to_x, float to_y, + void *user_data); + +/** + * hb_draw_line_to_func_t: + * @dfuncs: draw functions object + * @draw_data: The data accompanying the draw functions + * @st: current draw state + * @to_x: X component of target point + * @to_y: Y component of target point + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_draw_funcs_t to perform a "line-to" draw + * operation. + * + * Since: 4.0.0 + * + **/ +typedef void (*hb_draw_line_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float to_x, float to_y, + void *user_data); + +/** + * hb_draw_quadratic_to_func_t: + * @dfuncs: draw functions object + * @draw_data: The data accompanying the draw functions + * @st: current draw state + * @control_x: X component of control point + * @control_y: Y component of control point + * @to_x: X component of target point + * @to_y: Y component of target point + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_draw_funcs_t to perform a "quadratic-to" draw + * operation. + * + * Since: 4.0.0 + * + **/ +typedef void (*hb_draw_quadratic_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float control_x, float control_y, + float to_x, float to_y, + void *user_data); + +/** + * hb_draw_cubic_to_func_t: + * @dfuncs: draw functions object + * @draw_data: The data accompanying the draw functions + * @st: current draw state + * @control1_x: X component of first control point + * @control1_y: Y component of first control point + * @control2_x: X component of second control point + * @control2_y: Y component of second control point + * @to_x: X component of target point + * @to_y: Y component of target point + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_draw_funcs_t to perform a "cubic-to" draw + * operation. + * + * Since: 4.0.0 + * + **/ +typedef void (*hb_draw_cubic_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float control1_x, float control1_y, + float control2_x, float control2_y, + float to_x, float to_y, + void *user_data); + +/** + * hb_draw_close_path_func_t: + * @dfuncs: draw functions object + * @draw_data: The data accompanying the draw functions + * @st: current draw state + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_draw_funcs_t to perform a "close-path" draw + * operation. + * + * Since: 4.0.0 + * + **/ +typedef void (*hb_draw_close_path_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + void *user_data); + +/** + * hb_draw_funcs_set_move_to_func: + * @dfuncs: draw functions object + * @func: (closure user_data) (destroy destroy) (scope notified): move-to callback + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets move-to callback to the draw functions object. + * + * Since: 4.0.0 + **/ +HB_EXTERN void +hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *dfuncs, + hb_draw_move_to_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_draw_funcs_set_line_to_func: + * @dfuncs: draw functions object + * @func: (closure user_data) (destroy destroy) (scope notified): line-to callback + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets line-to callback to the draw functions object. + * + * Since: 4.0.0 + **/ +HB_EXTERN void +hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *dfuncs, + hb_draw_line_to_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_draw_funcs_set_quadratic_to_func: + * @dfuncs: draw functions object + * @func: (closure user_data) (destroy destroy) (scope notified): quadratic-to callback + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets quadratic-to callback to the draw functions object. + * + * Since: 4.0.0 + **/ +HB_EXTERN void +hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *dfuncs, + hb_draw_quadratic_to_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_draw_funcs_set_cubic_to_func: + * @dfuncs: draw functions + * @func: (closure user_data) (destroy destroy) (scope notified): cubic-to callback + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets cubic-to callback to the draw functions object. + * + * Since: 4.0.0 + **/ +HB_EXTERN void +hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *dfuncs, + hb_draw_cubic_to_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_draw_funcs_set_close_path_func: + * @dfuncs: draw functions object + * @func: (closure user_data) (destroy destroy) (scope notified): close-path callback + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets close-path callback to the draw functions object. + * + * Since: 4.0.0 + **/ +HB_EXTERN void +hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *dfuncs, + hb_draw_close_path_func_t func, + void *user_data, hb_destroy_func_t destroy); + + +HB_EXTERN hb_draw_funcs_t * +hb_draw_funcs_create (void); + +HB_EXTERN hb_draw_funcs_t * +hb_draw_funcs_reference (hb_draw_funcs_t *dfuncs); + +HB_EXTERN void +hb_draw_funcs_destroy (hb_draw_funcs_t *dfuncs); + +HB_EXTERN void +hb_draw_funcs_make_immutable (hb_draw_funcs_t *dfuncs); + +HB_EXTERN hb_bool_t +hb_draw_funcs_is_immutable (hb_draw_funcs_t *dfuncs); + + +HB_EXTERN void +hb_draw_move_to (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float to_x, float to_y); + +HB_EXTERN void +hb_draw_line_to (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float to_x, float to_y); + +HB_EXTERN void +hb_draw_quadratic_to (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float control_x, float control_y, + float to_x, float to_y); + +HB_EXTERN void +hb_draw_cubic_to (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float control1_x, float control1_y, + float control2_x, float control2_y, + float to_x, float to_y); + +HB_EXTERN void +hb_draw_close_path (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st); + + +HB_END_DECLS + +#endif /* HB_DRAW_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-face.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-face.h new file mode 100644 index 0000000..38e7104 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-face.h @@ -0,0 +1,181 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_FACE_H +#define HB_FACE_H + +#include "hb-common.h" +#include "hb-blob.h" +#include "hb-set.h" + +HB_BEGIN_DECLS + + +HB_EXTERN unsigned int +hb_face_count (hb_blob_t *blob); + + +/* + * hb_face_t + */ + +/** + * hb_face_t: + * + * Data type for holding font faces. + * + **/ +typedef struct hb_face_t hb_face_t; + +HB_EXTERN hb_face_t * +hb_face_create (hb_blob_t *blob, + unsigned int index); + +/** + * hb_reference_table_func_t: + * @face: an #hb_face_t to reference table for + * @tag: the tag of the table to reference + * @user_data: User data pointer passed by the caller + * + * Callback function for hb_face_create_for_tables(). + * + * Return value: (transfer full): A pointer to the @tag table within @face + * + * Since: 0.9.2 + */ + +typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); + +/* calls destroy() when not needing user_data anymore */ +HB_EXTERN hb_face_t * +hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, + void *user_data, + hb_destroy_func_t destroy); + +HB_EXTERN hb_face_t * +hb_face_get_empty (void); + +HB_EXTERN hb_face_t * +hb_face_reference (hb_face_t *face); + +HB_EXTERN void +hb_face_destroy (hb_face_t *face); + +HB_EXTERN hb_bool_t +hb_face_set_user_data (hb_face_t *face, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + +HB_EXTERN void * +hb_face_get_user_data (const hb_face_t *face, + hb_user_data_key_t *key); + +HB_EXTERN void +hb_face_make_immutable (hb_face_t *face); + +HB_EXTERN hb_bool_t +hb_face_is_immutable (const hb_face_t *face); + + +HB_EXTERN hb_blob_t * +hb_face_reference_table (const hb_face_t *face, + hb_tag_t tag); + +HB_EXTERN hb_blob_t * +hb_face_reference_blob (hb_face_t *face); + +HB_EXTERN void +hb_face_set_index (hb_face_t *face, + unsigned int index); + +HB_EXTERN unsigned int +hb_face_get_index (const hb_face_t *face); + +HB_EXTERN void +hb_face_set_upem (hb_face_t *face, + unsigned int upem); + +HB_EXTERN unsigned int +hb_face_get_upem (const hb_face_t *face); + +HB_EXTERN void +hb_face_set_glyph_count (hb_face_t *face, + unsigned int glyph_count); + +HB_EXTERN unsigned int +hb_face_get_glyph_count (const hb_face_t *face); + +HB_EXTERN unsigned int +hb_face_get_table_tags (const hb_face_t *face, + unsigned int start_offset, + unsigned int *table_count, /* IN/OUT */ + hb_tag_t *table_tags /* OUT */); + + +/* + * Character set. + */ + +HB_EXTERN void +hb_face_collect_unicodes (hb_face_t *face, + hb_set_t *out); + +HB_EXTERN void +hb_face_collect_variation_selectors (hb_face_t *face, + hb_set_t *out); + +HB_EXTERN void +hb_face_collect_variation_unicodes (hb_face_t *face, + hb_codepoint_t variation_selector, + hb_set_t *out); + + +/* + * Builder face. + */ + +HB_EXTERN hb_face_t * +hb_face_builder_create (void); + +HB_EXTERN hb_bool_t +hb_face_builder_add_table (hb_face_t *face, + hb_tag_t tag, + hb_blob_t *blob); + +HB_EXTERN void +hb_face_builder_sort_tables (hb_face_t *face, + const hb_tag_t *tags); + + +HB_END_DECLS + +#endif /* HB_FACE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-font.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-font.h new file mode 100644 index 0000000..e2c3df4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-font.h @@ -0,0 +1,1108 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_FONT_H +#define HB_FONT_H + +#include "hb-common.h" +#include "hb-face.h" +#include "hb-draw.h" + +HB_BEGIN_DECLS + +/** + * hb_font_t: + * + * Data type for holding fonts. + * + */ +typedef struct hb_font_t hb_font_t; + + +/* + * hb_font_funcs_t + */ + +/** + * hb_font_funcs_t: + * + * Data type containing a set of virtual methods used for + * working on #hb_font_t font objects. + * + * HarfBuzz provides a lightweight default function for each of + * the methods in #hb_font_funcs_t. Client programs can implement + * their own replacements for the individual font functions, as + * needed, and replace the default by calling the setter for a + * method. + * + **/ +typedef struct hb_font_funcs_t hb_font_funcs_t; + +HB_EXTERN hb_font_funcs_t * +hb_font_funcs_create (void); + +HB_EXTERN hb_font_funcs_t * +hb_font_funcs_get_empty (void); + +HB_EXTERN hb_font_funcs_t * +hb_font_funcs_reference (hb_font_funcs_t *ffuncs); + +HB_EXTERN void +hb_font_funcs_destroy (hb_font_funcs_t *ffuncs); + +HB_EXTERN hb_bool_t +hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + + +HB_EXTERN void * +hb_font_funcs_get_user_data (const hb_font_funcs_t *ffuncs, + hb_user_data_key_t *key); + + +HB_EXTERN void +hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs); + +HB_EXTERN hb_bool_t +hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs); + + +/* font and glyph extents */ + +/** + * hb_font_extents_t: + * @ascender: The height of typographic ascenders. + * @descender: The depth of typographic descenders. + * @line_gap: The suggested line-spacing gap. + * + * Font-wide extent values, measured in font units. + * + * Note that typically @ascender is positive and @descender + * negative, in coordinate systems that grow up. + **/ +typedef struct hb_font_extents_t { + hb_position_t ascender; + hb_position_t descender; + hb_position_t line_gap; + /*< private >*/ + hb_position_t reserved9; + hb_position_t reserved8; + hb_position_t reserved7; + hb_position_t reserved6; + hb_position_t reserved5; + hb_position_t reserved4; + hb_position_t reserved3; + hb_position_t reserved2; + hb_position_t reserved1; +} hb_font_extents_t; + +/** + * hb_glyph_extents_t: + * @x_bearing: Distance from the x-origin to the left extremum of the glyph. + * @y_bearing: Distance from the top extremum of the glyph to the y-origin. + * @width: Distance from the left extremum of the glyph to the right extremum. + * @height: Distance from the top extremum of the glyph to the bottom extremum. + * + * Glyph extent values, measured in font units. + * + * Note that @height is negative, in coordinate systems that grow up. + **/ +typedef struct hb_glyph_extents_t { + hb_position_t x_bearing; + hb_position_t y_bearing; + hb_position_t width; + hb_position_t height; +} hb_glyph_extents_t; + +/* func types */ + +/** + * hb_font_get_font_extents_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @extents: (out): The font extents retrieved + * @user_data: User data pointer passed by the caller + * + * This method should retrieve the extents for a font. + * + **/ +typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data, + hb_font_extents_t *extents, + void *user_data); + +/** + * hb_font_get_font_h_extents_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the extents for a font, for horizontal-direction + * text segments. Extents must be returned in an #hb_glyph_extents output + * parameter. + * + **/ +typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; + +/** + * hb_font_get_font_v_extents_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the extents for a font, for vertical-direction + * text segments. Extents must be returned in an #hb_glyph_extents output + * parameter. + * + **/ +typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; + + +/** + * hb_font_get_nominal_glyph_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @unicode: The Unicode code point to query + * @glyph: (out): The glyph ID retrieved + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the nominal glyph ID for a specified Unicode code + * point. Glyph IDs must be returned in a #hb_codepoint_t output parameter. + * + * Return value: `true` if data found, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t unicode, + hb_codepoint_t *glyph, + void *user_data); + +/** + * hb_font_get_variation_glyph_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @unicode: The Unicode code point to query + * @variation_selector: The variation-selector code point to query + * @glyph: (out): The glyph ID retrieved + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the glyph ID for a specified Unicode code point + * followed by a specified Variation Selector code point. Glyph IDs must be + * returned in a #hb_codepoint_t output parameter. + * + * Return value: `true` if data found, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph, + void *user_data); + + +/** + * hb_font_get_nominal_glyphs_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @count: number of code points to query + * @first_unicode: The first Unicode code point to query + * @unicode_stride: The stride between successive code points + * @first_glyph: (out): The first glyph ID retrieved + * @glyph_stride: The stride between successive glyph IDs + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the nominal glyph IDs for a sequence of + * Unicode code points. Glyph IDs must be returned in a #hb_codepoint_t + * output parameter. + * + * Return value: the number of code points processed + * + **/ +typedef unsigned int (*hb_font_get_nominal_glyphs_func_t) (hb_font_t *font, void *font_data, + unsigned int count, + const hb_codepoint_t *first_unicode, + unsigned int unicode_stride, + hb_codepoint_t *first_glyph, + unsigned int glyph_stride, + void *user_data); + +/** + * hb_font_get_glyph_advance_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @glyph: The glyph ID to query + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the advance for a specified glyph. The + * method must return an #hb_position_t. + * + * Return value: The advance of @glyph within @font + * + **/ +typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + void *user_data); + +/** + * hb_font_get_glyph_h_advance_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the advance for a specified glyph, in + * horizontal-direction text segments. Advances must be returned in + * an #hb_position_t output parameter. + * + **/ +typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t; + +/** + * hb_font_get_glyph_v_advance_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the advance for a specified glyph, in + * vertical-direction text segments. Advances must be returned in + * an #hb_position_t output parameter. + * + **/ +typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t; + +/** + * hb_font_get_glyph_advances_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @count: The number of glyph IDs in the sequence queried + * @first_glyph: The first glyph ID to query + * @glyph_stride: The stride between successive glyph IDs + * @first_advance: (out): The first advance retrieved + * @advance_stride: The stride between successive advances + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the advances for a sequence of glyphs. + * + **/ +typedef void (*hb_font_get_glyph_advances_func_t) (hb_font_t* font, void* font_data, + unsigned int count, + const hb_codepoint_t *first_glyph, + unsigned glyph_stride, + hb_position_t *first_advance, + unsigned advance_stride, + void *user_data); + +/** + * hb_font_get_glyph_h_advances_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the advances for a sequence of glyphs, in + * horizontal-direction text segments. + * + **/ +typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t; + +/** + * hb_font_get_glyph_v_advances_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the advances for a sequence of glyphs, in + * vertical-direction text segments. + * + **/ +typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t; + +/** + * hb_font_get_glyph_origin_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @glyph: The glyph ID to query + * @x: (out): The X coordinate of the origin + * @y: (out): The Y coordinate of the origin + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the (X,Y) coordinates (in font units) of the + * origin for a glyph. Each coordinate must be returned in an #hb_position_t + * output parameter. + * + * Return value: `true` if data found, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y, + void *user_data); + +/** + * hb_font_get_glyph_h_origin_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the (X,Y) coordinates (in font units) of the + * origin for a glyph, for horizontal-direction text segments. Each + * coordinate must be returned in an #hb_position_t output parameter. + * + **/ +typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t; + +/** + * hb_font_get_glyph_v_origin_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the (X,Y) coordinates (in font units) of the + * origin for a glyph, for vertical-direction text segments. Each coordinate + * must be returned in an #hb_position_t output parameter. + * + **/ +typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t; + +/** + * hb_font_get_glyph_kerning_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @first_glyph: The glyph ID of the first glyph in the glyph pair + * @second_glyph: The glyph ID of the second glyph in the glyph pair + * @user_data: User data pointer passed by the caller + * + * This method should retrieve the kerning-adjustment value for a glyph-pair in + * the specified font, for horizontal text segments. + * + **/ +typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, + void *user_data); +/** + * hb_font_get_glyph_h_kerning_func_t: + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the kerning-adjustment value for a glyph-pair in + * the specified font, for horizontal text segments. + * + **/ +typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t; + + +/** + * hb_font_get_glyph_extents_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @glyph: The glyph ID to query + * @extents: (out): The #hb_glyph_extents_t retrieved + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the extents for a specified glyph. Extents must be + * returned in an #hb_glyph_extents output parameter. + * + * Return value: `true` if data found, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + hb_glyph_extents_t *extents, + void *user_data); + +/** + * hb_font_get_glyph_contour_point_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @glyph: The glyph ID to query + * @point_index: The contour-point index to query + * @x: (out): The X value retrieved for the contour point + * @y: (out): The Y value retrieved for the contour point + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the (X,Y) coordinates (in font units) for a + * specified contour point in a glyph. Each coordinate must be returned as + * an #hb_position_t output parameter. + * + * Return value: `true` if data found, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, unsigned int point_index, + hb_position_t *x, hb_position_t *y, + void *user_data); + + +/** + * hb_font_get_glyph_name_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @glyph: The glyph ID to query + * @name: (out) (array length=size): Name string retrieved for the glyph ID + * @size: Length of the glyph-name string retrieved + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the glyph name that corresponds to a + * glyph ID. The name should be returned in a string output parameter. + * + * Return value: `true` if data found, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + char *name, unsigned int size, + void *user_data); + +/** + * hb_font_get_glyph_from_name_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @name: (array length=len): The name string to query + * @len: The length of the name queried + * @glyph: (out): The glyph ID retrieved + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * This method should retrieve the glyph ID that corresponds to a glyph-name + * string. + * + * Return value: `true` if data found, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data, + const char *name, int len, /* -1 means nul-terminated */ + hb_codepoint_t *glyph, + void *user_data); + +/** + * hb_font_get_glyph_shape_func_t: + * @font: #hb_font_t to work upon + * @font_data: @font user data pointer + * @glyph: The glyph ID to query + * @draw_funcs: The draw functions to send the shape data to + * @draw_data: The data accompanying the draw functions + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. + * + * Since: 4.0.0 + * + **/ +typedef void (*hb_font_get_glyph_shape_func_t) (hb_font_t *font, void *font_data, + hb_codepoint_t glyph, + hb_draw_funcs_t *draw_funcs, void *draw_data, + void *user_data); + + +/* func setters */ + +/** + * hb_font_funcs_set_font_h_extents_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_font_h_extents_func_t. + * + * Since: 1.1.2 + **/ +HB_EXTERN void +hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs, + hb_font_get_font_h_extents_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_font_v_extents_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_font_v_extents_func_t. + * + * Since: 1.1.2 + **/ +HB_EXTERN void +hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs, + hb_font_get_font_v_extents_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_nominal_glyph_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_nominal_glyph_func_t. + * + * Since: 1.2.3 + **/ +HB_EXTERN void +hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs, + hb_font_get_nominal_glyph_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_nominal_glyphs_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_nominal_glyphs_func_t. + * + * Since: 2.0.0 + **/ +HB_EXTERN void +hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs, + hb_font_get_nominal_glyphs_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_variation_glyph_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_variation_glyph_func_t. + * + * Since: 1.2.3 + **/ +HB_EXTERN void +hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs, + hb_font_get_variation_glyph_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_h_advance_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_h_advance_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_h_advance_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_v_advance_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_v_advance_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_v_advance_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_h_advances_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_h_advances_func_t. + * + * Since: 1.8.6 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_h_advances_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_v_advances_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_v_advances_func_t. + * + * Since: 1.8.6 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_v_advances_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_h_origin_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_h_origin_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_h_origin_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_v_origin_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_v_origin_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_v_origin_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_h_kerning_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_h_kerning_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_h_kerning_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_extents_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_extents_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_extents_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_contour_point_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_contour_point_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_contour_point_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_name_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_name_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_name_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_from_name_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_from_name_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_from_name_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_font_funcs_set_glyph_shape_func: + * @ffuncs: A font-function structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_font_get_glyph_shape_func_t. + * + * Since: 4.0.0 + **/ +HB_EXTERN void +hb_font_funcs_set_glyph_shape_func (hb_font_funcs_t *ffuncs, + hb_font_get_glyph_shape_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/* func dispatch */ + +HB_EXTERN hb_bool_t +hb_font_get_h_extents (hb_font_t *font, + hb_font_extents_t *extents); +HB_EXTERN hb_bool_t +hb_font_get_v_extents (hb_font_t *font, + hb_font_extents_t *extents); + +HB_EXTERN hb_bool_t +hb_font_get_nominal_glyph (hb_font_t *font, + hb_codepoint_t unicode, + hb_codepoint_t *glyph); +HB_EXTERN hb_bool_t +hb_font_get_variation_glyph (hb_font_t *font, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph); + +HB_EXTERN unsigned int +hb_font_get_nominal_glyphs (hb_font_t *font, + unsigned int count, + const hb_codepoint_t *first_unicode, + unsigned int unicode_stride, + hb_codepoint_t *first_glyph, + unsigned int glyph_stride); + +HB_EXTERN hb_position_t +hb_font_get_glyph_h_advance (hb_font_t *font, + hb_codepoint_t glyph); +HB_EXTERN hb_position_t +hb_font_get_glyph_v_advance (hb_font_t *font, + hb_codepoint_t glyph); + +HB_EXTERN void +hb_font_get_glyph_h_advances (hb_font_t* font, + unsigned int count, + const hb_codepoint_t *first_glyph, + unsigned glyph_stride, + hb_position_t *first_advance, + unsigned advance_stride); +HB_EXTERN void +hb_font_get_glyph_v_advances (hb_font_t* font, + unsigned int count, + const hb_codepoint_t *first_glyph, + unsigned glyph_stride, + hb_position_t *first_advance, + unsigned advance_stride); + +HB_EXTERN hb_bool_t +hb_font_get_glyph_h_origin (hb_font_t *font, + hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y); +HB_EXTERN hb_bool_t +hb_font_get_glyph_v_origin (hb_font_t *font, + hb_codepoint_t glyph, + hb_position_t *x, hb_position_t *y); + +HB_EXTERN hb_position_t +hb_font_get_glyph_h_kerning (hb_font_t *font, + hb_codepoint_t left_glyph, hb_codepoint_t right_glyph); + +HB_EXTERN hb_bool_t +hb_font_get_glyph_extents (hb_font_t *font, + hb_codepoint_t glyph, + hb_glyph_extents_t *extents); + +HB_EXTERN hb_bool_t +hb_font_get_glyph_contour_point (hb_font_t *font, + hb_codepoint_t glyph, unsigned int point_index, + hb_position_t *x, hb_position_t *y); + +HB_EXTERN hb_bool_t +hb_font_get_glyph_name (hb_font_t *font, + hb_codepoint_t glyph, + char *name, unsigned int size); +HB_EXTERN hb_bool_t +hb_font_get_glyph_from_name (hb_font_t *font, + const char *name, int len, /* -1 means nul-terminated */ + hb_codepoint_t *glyph); + +HB_EXTERN void +hb_font_get_glyph_shape (hb_font_t *font, + hb_codepoint_t glyph, + hb_draw_funcs_t *dfuncs, void *draw_data); + + +/* high-level funcs, with fallback */ + +/* Calls either hb_font_get_nominal_glyph() if variation_selector is 0, + * otherwise calls hb_font_get_variation_glyph(). */ +HB_EXTERN hb_bool_t +hb_font_get_glyph (hb_font_t *font, + hb_codepoint_t unicode, hb_codepoint_t variation_selector, + hb_codepoint_t *glyph); + +HB_EXTERN void +hb_font_get_extents_for_direction (hb_font_t *font, + hb_direction_t direction, + hb_font_extents_t *extents); +HB_EXTERN void +hb_font_get_glyph_advance_for_direction (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + hb_position_t *x, hb_position_t *y); +HB_EXTERN void +hb_font_get_glyph_advances_for_direction (hb_font_t* font, + hb_direction_t direction, + unsigned int count, + const hb_codepoint_t *first_glyph, + unsigned glyph_stride, + hb_position_t *first_advance, + unsigned advance_stride); +HB_EXTERN void +hb_font_get_glyph_origin_for_direction (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + hb_position_t *x, hb_position_t *y); +HB_EXTERN void +hb_font_add_glyph_origin_for_direction (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + hb_position_t *x, hb_position_t *y); +HB_EXTERN void +hb_font_subtract_glyph_origin_for_direction (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + hb_position_t *x, hb_position_t *y); + +HB_EXTERN void +hb_font_get_glyph_kerning_for_direction (hb_font_t *font, + hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, + hb_direction_t direction, + hb_position_t *x, hb_position_t *y); + +HB_EXTERN hb_bool_t +hb_font_get_glyph_extents_for_origin (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + hb_glyph_extents_t *extents); + +HB_EXTERN hb_bool_t +hb_font_get_glyph_contour_point_for_origin (hb_font_t *font, + hb_codepoint_t glyph, unsigned int point_index, + hb_direction_t direction, + hb_position_t *x, hb_position_t *y); + +/* Generates gidDDD if glyph has no name. */ +HB_EXTERN void +hb_font_glyph_to_string (hb_font_t *font, + hb_codepoint_t glyph, + char *s, unsigned int size); +/* Parses gidDDD and uniUUUU strings automatically. */ +HB_EXTERN hb_bool_t +hb_font_glyph_from_string (hb_font_t *font, + const char *s, int len, /* -1 means nul-terminated */ + hb_codepoint_t *glyph); + + +/* + * hb_font_t + */ + +/* Fonts are very light-weight objects */ + +HB_EXTERN hb_font_t * +hb_font_create (hb_face_t *face); + +HB_EXTERN hb_font_t * +hb_font_create_sub_font (hb_font_t *parent); + +HB_EXTERN hb_font_t * +hb_font_get_empty (void); + +HB_EXTERN hb_font_t * +hb_font_reference (hb_font_t *font); + +HB_EXTERN void +hb_font_destroy (hb_font_t *font); + +HB_EXTERN hb_bool_t +hb_font_set_user_data (hb_font_t *font, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + + +HB_EXTERN void * +hb_font_get_user_data (const hb_font_t *font, + hb_user_data_key_t *key); + +HB_EXTERN void +hb_font_make_immutable (hb_font_t *font); + +HB_EXTERN hb_bool_t +hb_font_is_immutable (hb_font_t *font); + +HB_EXTERN unsigned int +hb_font_get_serial (hb_font_t *font); + +HB_EXTERN void +hb_font_changed (hb_font_t *font); + +HB_EXTERN void +hb_font_set_parent (hb_font_t *font, + hb_font_t *parent); + +HB_EXTERN hb_font_t * +hb_font_get_parent (hb_font_t *font); + +HB_EXTERN void +hb_font_set_face (hb_font_t *font, + hb_face_t *face); + +HB_EXTERN hb_face_t * +hb_font_get_face (hb_font_t *font); + + +HB_EXTERN void +hb_font_set_funcs (hb_font_t *font, + hb_font_funcs_t *klass, + void *font_data, + hb_destroy_func_t destroy); + +/* Be *very* careful with this function! */ +HB_EXTERN void +hb_font_set_funcs_data (hb_font_t *font, + void *font_data, + hb_destroy_func_t destroy); + + +HB_EXTERN void +hb_font_set_scale (hb_font_t *font, + int x_scale, + int y_scale); + +HB_EXTERN void +hb_font_get_scale (hb_font_t *font, + int *x_scale, + int *y_scale); + +/* + * A zero value means "no hinting in that direction" + */ +HB_EXTERN void +hb_font_set_ppem (hb_font_t *font, + unsigned int x_ppem, + unsigned int y_ppem); + +HB_EXTERN void +hb_font_get_ppem (hb_font_t *font, + unsigned int *x_ppem, + unsigned int *y_ppem); + +/* + * Point size per EM. Used for optical-sizing in CoreText. + * A value of zero means "not set". + */ +HB_EXTERN void +hb_font_set_ptem (hb_font_t *font, float ptem); + +HB_EXTERN float +hb_font_get_ptem (hb_font_t *font); + +HB_EXTERN void +hb_font_set_synthetic_slant (hb_font_t *font, float slant); + +HB_EXTERN float +hb_font_get_synthetic_slant (hb_font_t *font); + +HB_EXTERN void +hb_font_set_variations (hb_font_t *font, + const hb_variation_t *variations, + unsigned int variations_length); + +HB_EXTERN void +hb_font_set_var_coords_design (hb_font_t *font, + const float *coords, + unsigned int coords_length); + +HB_EXTERN const float * +hb_font_get_var_coords_design (hb_font_t *font, + unsigned int *length); + +HB_EXTERN void +hb_font_set_var_coords_normalized (hb_font_t *font, + const int *coords, /* 2.14 normalized */ + unsigned int coords_length); + +HB_EXTERN const int * +hb_font_get_var_coords_normalized (hb_font_t *font, + unsigned int *length); + +HB_EXTERN void +hb_font_set_var_named_instance (hb_font_t *font, + unsigned instance_index); + + +HB_END_DECLS + +#endif /* HB_FONT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ft.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ft.h new file mode 100644 index 0000000..6a8a7ab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ft.h @@ -0,0 +1,145 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * Copyright © 2015 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_FT_H +#define HB_FT_H + +#include "hb.h" + +#include +#include FT_FREETYPE_H + +HB_BEGIN_DECLS + +/* + * Note: FreeType is not thread-safe. + * Hence, these functions are not either. + */ + +/* + * hb-face from ft-face. + */ + +/* This one creates a new hb-face for given ft-face. + * When the returned hb-face is destroyed, the destroy + * callback is called (if not NULL), with the ft-face passed + * to it. + * + * The client is responsible to make sure that ft-face is + * destroyed after hb-face is destroyed. + * + * Most often you don't want this function. You should use either + * hb_ft_face_create_cached(), or hb_ft_face_create_referenced(). + * In particular, if you are going to pass NULL as destroy, you + * probably should use (the more recent) hb_ft_face_create_referenced() + * instead. + */ +HB_EXTERN hb_face_t * +hb_ft_face_create (FT_Face ft_face, + hb_destroy_func_t destroy); + +/* This version is like hb_ft_face_create(), except that it caches + * the hb-face using the generic pointer of the ft-face. This means + * that subsequent calls to this function with the same ft-face will + * return the same hb-face (correctly referenced). + * + * Client is still responsible for making sure that ft-face is destroyed + * after hb-face is. + */ +HB_EXTERN hb_face_t * +hb_ft_face_create_cached (FT_Face ft_face); + +/* This version is like hb_ft_face_create(), except that it calls + * FT_Reference_Face() on ft-face, as such keeping ft-face alive + * as long as the hb-face is. + * + * This is the most convenient version to use. Use it unless you have + * very good reasons not to. + */ +HB_EXTERN hb_face_t * +hb_ft_face_create_referenced (FT_Face ft_face); + + +/* + * hb-font from ft-face. + */ + +/* + * Note: + * + * Set face size on ft-face before creating hb-font from it. + * Otherwise hb-ft would NOT pick up the font size correctly. + */ + +/* See notes on hb_ft_face_create(). Same issues re lifecycle-management + * apply here. Use hb_ft_font_create_referenced() if you can. */ +HB_EXTERN hb_font_t * +hb_ft_font_create (FT_Face ft_face, + hb_destroy_func_t destroy); + +/* See notes on hb_ft_face_create_referenced() re lifecycle-management + * issues. */ +HB_EXTERN hb_font_t * +hb_ft_font_create_referenced (FT_Face ft_face); + +HB_EXTERN FT_Face +hb_ft_font_get_face (hb_font_t *font); + +HB_EXTERN FT_Face +hb_ft_font_lock_face (hb_font_t *font); + +HB_EXTERN void +hb_ft_font_unlock_face (hb_font_t *font); + +HB_EXTERN void +hb_ft_font_set_load_flags (hb_font_t *font, int load_flags); + +HB_EXTERN int +hb_ft_font_get_load_flags (hb_font_t *font); + +/* Call when size or variations settings on underlying FT_Face changed, + * and you want to update the hb_font_t from it. */ +HB_EXTERN void +hb_ft_font_changed (hb_font_t *font); + +/* Call when size or variations settings on underlying hb_font_t may have + * changed, and you want to update the FT_Face from it. This call is fast + * if nothing changed on hb_font_t. Returns true if changed. */ +HB_EXTERN hb_bool_t +hb_ft_hb_font_changed (hb_font_t *font); + +/* Makes an hb_font_t use FreeType internally to implement font functions. + * Note: this internally creates an FT_Face. Use it when you create your + * hb_face_t using hb_face_create(). */ +HB_EXTERN void +hb_ft_font_set_funcs (hb_font_t *font); + + +HB_END_DECLS + +#endif /* HB_FT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-glib.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-glib.h new file mode 100644 index 0000000..5f04183 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-glib.h @@ -0,0 +1,56 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * Copyright © 2011 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_GLIB_H +#define HB_GLIB_H + +#include "hb.h" + +#include + +HB_BEGIN_DECLS + + +HB_EXTERN hb_script_t +hb_glib_script_to_script (GUnicodeScript script); + +HB_EXTERN GUnicodeScript +hb_glib_script_from_script (hb_script_t script); + + +HB_EXTERN hb_unicode_funcs_t * +hb_glib_get_unicode_funcs (void); + +#if GLIB_CHECK_VERSION(2,31,10) +HB_EXTERN hb_blob_t * +hb_glib_blob_create (GBytes *gbytes); +#endif + +HB_END_DECLS + +#endif /* HB_GLIB_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject-enums.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject-enums.h new file mode 100644 index 0000000..09f0920 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject-enums.h @@ -0,0 +1,120 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +/* + * Copyright (C) 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_GOBJECT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_GOBJECT_ENUMS_H +#define HB_GOBJECT_ENUMS_H + +#include "hb.h" + +#include + +HB_BEGIN_DECLS +HB_EXTERN GType +hb_gobject_aat_layout_feature_type_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_AAT_LAYOUT_FEATURE_TYPE (hb_gobject_aat_layout_feature_type_get_type ()) +HB_EXTERN GType +hb_gobject_aat_layout_feature_selector_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_AAT_LAYOUT_FEATURE_SELECTOR (hb_gobject_aat_layout_feature_selector_get_type ()) +HB_EXTERN GType +hb_gobject_memory_mode_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_MEMORY_MODE (hb_gobject_memory_mode_get_type ()) +HB_EXTERN GType +hb_gobject_glyph_flags_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_GLYPH_FLAGS (hb_gobject_glyph_flags_get_type ()) +HB_EXTERN GType +hb_gobject_buffer_content_type_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE (hb_gobject_buffer_content_type_get_type ()) +HB_EXTERN GType +hb_gobject_buffer_flags_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_BUFFER_FLAGS (hb_gobject_buffer_flags_get_type ()) +HB_EXTERN GType +hb_gobject_buffer_cluster_level_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL (hb_gobject_buffer_cluster_level_get_type ()) +HB_EXTERN GType +hb_gobject_buffer_serialize_flags_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS (hb_gobject_buffer_serialize_flags_get_type ()) +HB_EXTERN GType +hb_gobject_buffer_serialize_format_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT (hb_gobject_buffer_serialize_format_get_type ()) +HB_EXTERN GType +hb_gobject_buffer_diff_flags_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_BUFFER_DIFF_FLAGS (hb_gobject_buffer_diff_flags_get_type ()) +HB_EXTERN GType +hb_gobject_direction_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_DIRECTION (hb_gobject_direction_get_type ()) +HB_EXTERN GType +hb_gobject_script_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_SCRIPT (hb_gobject_script_get_type ()) +HB_EXTERN GType +hb_gobject_ot_color_palette_flags_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS (hb_gobject_ot_color_palette_flags_get_type ()) +HB_EXTERN GType +hb_gobject_ot_layout_glyph_class_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS (hb_gobject_ot_layout_glyph_class_get_type ()) +HB_EXTERN GType +hb_gobject_ot_layout_baseline_tag_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_LAYOUT_BASELINE_TAG (hb_gobject_ot_layout_baseline_tag_get_type ()) +HB_EXTERN GType +hb_gobject_ot_math_constant_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_MATH_CONSTANT (hb_gobject_ot_math_constant_get_type ()) +HB_EXTERN GType +hb_gobject_ot_math_kern_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_MATH_KERN (hb_gobject_ot_math_kern_get_type ()) +HB_EXTERN GType +hb_gobject_ot_math_glyph_part_flags_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_MATH_GLYPH_PART_FLAGS (hb_gobject_ot_math_glyph_part_flags_get_type ()) +HB_EXTERN GType +hb_gobject_ot_meta_tag_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_META_TAG (hb_gobject_ot_meta_tag_get_type ()) +HB_EXTERN GType +hb_gobject_ot_metrics_tag_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_METRICS_TAG (hb_gobject_ot_metrics_tag_get_type ()) +HB_EXTERN GType +hb_gobject_ot_var_axis_flags_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_OT_VAR_AXIS_FLAGS (hb_gobject_ot_var_axis_flags_get_type ()) +HB_EXTERN GType +hb_gobject_style_tag_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_STYLE_TAG (hb_gobject_style_tag_get_type ()) +HB_EXTERN GType +hb_gobject_unicode_general_category_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY (hb_gobject_unicode_general_category_get_type ()) +HB_EXTERN GType +hb_gobject_unicode_combining_class_get_type (void) G_GNUC_CONST; +#define HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS (hb_gobject_unicode_combining_class_get_type ()) + +HB_END_DECLS + +#endif /* HB_GOBJECT_ENUMS_H */ + +/* Generated data ends here */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject-structs.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject-structs.h new file mode 100644 index 0000000..3914a24 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject-structs.h @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2011 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_GOBJECT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_GOBJECT_STRUCTS_H +#define HB_GOBJECT_STRUCTS_H + +#include "hb.h" + +#include + +HB_BEGIN_DECLS + + +/* Object types */ + +HB_EXTERN GType +hb_gobject_blob_get_type (void); +#define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ()) + +HB_EXTERN GType +hb_gobject_buffer_get_type (void); +#define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ()) + +HB_EXTERN GType +hb_gobject_draw_funcs_get_type (void); +#define HB_GOBJECT_TYPE_DRAW_FUNCS (hb_gobject_draw_funcs_get_type ()) + +HB_EXTERN GType +hb_gobject_face_get_type (void); +#define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ()) + +HB_EXTERN GType +hb_gobject_font_get_type (void); +#define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ()) + +HB_EXTERN GType +hb_gobject_font_funcs_get_type (void); +#define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ()) + +HB_EXTERN GType +hb_gobject_set_get_type (void); +#define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ()) + +HB_EXTERN GType +hb_gobject_map_get_type (void); +#define HB_GOBJECT_TYPE_MAP (hb_gobject_map_get_type ()) + +HB_EXTERN GType +hb_gobject_shape_plan_get_type (void); +#define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ()) + +HB_EXTERN GType +hb_gobject_unicode_funcs_get_type (void); +#define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ()) + +/* Value types */ + +HB_EXTERN GType +hb_gobject_feature_get_type (void); +#define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ()) + +HB_EXTERN GType +hb_gobject_glyph_info_get_type (void); +#define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ()) + +HB_EXTERN GType +hb_gobject_glyph_position_get_type (void); +#define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ()) + +HB_EXTERN GType +hb_gobject_segment_properties_get_type (void); +#define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ()) + +HB_EXTERN GType +hb_gobject_user_data_key_get_type (void); +#define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ()) + +HB_EXTERN GType +hb_gobject_ot_math_glyph_variant_get_type (void); +#define HB_GOBJECT_TYPE_OT_MATH_GLYPH_VARIANT (hb_gobject_ot_math_glyph_variant_get_type ()) + +HB_EXTERN GType +hb_gobject_ot_math_glyph_part_get_type (void); +#define HB_GOBJECT_TYPE_OT_MATH_GLYPH_PART (hb_gobject_ot_math_glyph_part_get_type ()) + + +HB_END_DECLS + +#endif /* HB_GOBJECT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject.h new file mode 100644 index 0000000..8891aa0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-gobject.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2011 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_GOBJECT_H +#define HB_GOBJECT_H +#define HB_GOBJECT_H_IN + +#include "hb.h" + +#include "hb-gobject-enums.h" +#include "hb-gobject-structs.h" + +HB_BEGIN_DECLS +HB_END_DECLS + +#undef HB_GOBJECT_H_IN +#endif /* HB_GOBJECT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-map.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-map.h new file mode 100644 index 0000000..3a067c5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-map.h @@ -0,0 +1,124 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_MAP_H +#define HB_MAP_H + +#include "hb-common.h" + +HB_BEGIN_DECLS + + +/** + * HB_MAP_VALUE_INVALID: + * + * Unset #hb_map_t value. + * + * Since: 1.7.7 + */ +#define HB_MAP_VALUE_INVALID ((hb_codepoint_t) -1) + +/** + * hb_map_t: + * + * Data type for holding integer-to-integer hash maps. + * + **/ +typedef struct hb_map_t hb_map_t; + + +HB_EXTERN hb_map_t * +hb_map_create (void); + +HB_EXTERN hb_map_t * +hb_map_get_empty (void); + +HB_EXTERN hb_map_t * +hb_map_reference (hb_map_t *map); + +HB_EXTERN void +hb_map_destroy (hb_map_t *map); + +HB_EXTERN hb_bool_t +hb_map_set_user_data (hb_map_t *map, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + +HB_EXTERN void * +hb_map_get_user_data (const hb_map_t *map, + hb_user_data_key_t *key); + + +/* Returns false if allocation has failed before */ +HB_EXTERN hb_bool_t +hb_map_allocation_successful (const hb_map_t *map); + +HB_EXTERN hb_map_t * +hb_map_copy (const hb_map_t *map); + +HB_EXTERN void +hb_map_clear (hb_map_t *map); + +HB_EXTERN hb_bool_t +hb_map_is_empty (const hb_map_t *map); + +HB_EXTERN unsigned int +hb_map_get_population (const hb_map_t *map); + +HB_EXTERN hb_bool_t +hb_map_is_equal (const hb_map_t *map, + const hb_map_t *other); + +HB_EXTERN unsigned int +hb_map_hash (const hb_map_t *map); + +HB_EXTERN void +hb_map_set (hb_map_t *map, + hb_codepoint_t key, + hb_codepoint_t value); + +HB_EXTERN hb_codepoint_t +hb_map_get (const hb_map_t *map, + hb_codepoint_t key); + +HB_EXTERN void +hb_map_del (hb_map_t *map, + hb_codepoint_t key); + +HB_EXTERN hb_bool_t +hb_map_has (const hb_map_t *map, + hb_codepoint_t key); + + +HB_END_DECLS + +#endif /* HB_MAP_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-color.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-color.h new file mode 100644 index 0000000..d11e07e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-color.h @@ -0,0 +1,146 @@ +/* + * Copyright © 2016 Google, Inc. + * Copyright © 2018 Khaled Hosny + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Sascha Brawer, Behdad Esfahbod + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_COLOR_H +#define HB_OT_COLOR_H + +#include "hb.h" +#include "hb-ot-name.h" + +HB_BEGIN_DECLS + + +/* + * Color palettes. + */ + +HB_EXTERN hb_bool_t +hb_ot_color_has_palettes (hb_face_t *face); + +HB_EXTERN unsigned int +hb_ot_color_palette_get_count (hb_face_t *face); + +HB_EXTERN hb_ot_name_id_t +hb_ot_color_palette_get_name_id (hb_face_t *face, + unsigned int palette_index); + +HB_EXTERN hb_ot_name_id_t +hb_ot_color_palette_color_get_name_id (hb_face_t *face, + unsigned int color_index); + +/** + * hb_ot_color_palette_flags_t: + * @HB_OT_COLOR_PALETTE_FLAG_DEFAULT: Default indicating that there is nothing special + * to note about a color palette. + * @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND: Flag indicating that the color + * palette is appropriate to use when displaying the font on a light background such as white. + * @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND: Flag indicating that the color + * palette is appropriate to use when displaying the font on a dark background such as black. + * + * Flags that describe the properties of color palette. + * + * Since: 2.1.0 + */ +typedef enum { /*< flags >*/ + HB_OT_COLOR_PALETTE_FLAG_DEFAULT = 0x00000000u, + HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND = 0x00000001u, + HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND = 0x00000002u +} hb_ot_color_palette_flags_t; + +HB_EXTERN hb_ot_color_palette_flags_t +hb_ot_color_palette_get_flags (hb_face_t *face, + unsigned int palette_index); + +HB_EXTERN unsigned int +hb_ot_color_palette_get_colors (hb_face_t *face, + unsigned int palette_index, + unsigned int start_offset, + unsigned int *color_count, /* IN/OUT. May be NULL. */ + hb_color_t *colors /* OUT. May be NULL. */); + + +/* + * Color layers. + */ + +HB_EXTERN hb_bool_t +hb_ot_color_has_layers (hb_face_t *face); + +/** + * hb_ot_color_layer_t: + * @glyph: the glyph ID of the layer + * @color_index: the palette color index of the layer + * + * Pairs of glyph and color index. + * + * A color index of 0xFFFF does not refer to a palette + * color, but indicates that the foreground color should + * be used. + * + * Since: 2.1.0 + **/ +typedef struct hb_ot_color_layer_t { + hb_codepoint_t glyph; + unsigned int color_index; +} hb_ot_color_layer_t; + +HB_EXTERN unsigned int +hb_ot_color_glyph_get_layers (hb_face_t *face, + hb_codepoint_t glyph, + unsigned int start_offset, + unsigned int *layer_count, /* IN/OUT. May be NULL. */ + hb_ot_color_layer_t *layers /* OUT. May be NULL. */); + +/* + * SVG + */ + +HB_EXTERN hb_bool_t +hb_ot_color_has_svg (hb_face_t *face); + +HB_EXTERN hb_blob_t * +hb_ot_color_glyph_reference_svg (hb_face_t *face, hb_codepoint_t glyph); + +/* + * PNG: CBDT or sbix + */ + +HB_EXTERN hb_bool_t +hb_ot_color_has_png (hb_face_t *face); + +HB_EXTERN hb_blob_t * +hb_ot_color_glyph_reference_png (hb_font_t *font, hb_codepoint_t glyph); + + +HB_END_DECLS + +#endif /* HB_OT_COLOR_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-deprecated.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-deprecated.h new file mode 100644 index 0000000..5192ff7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-deprecated.h @@ -0,0 +1,141 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_DEPRECATED_H +#define HB_OT_DEPRECATED_H + +#include "hb.h" +#include "hb-ot-name.h" + + +HB_BEGIN_DECLS + +#ifndef HB_DISABLE_DEPRECATED + + +/* https://github.com/harfbuzz/harfbuzz/issues/1734 */ +/** + * HB_MATH_GLYPH_PART_FLAG_EXTENDER: + * + * Use #HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER instead. + * + * Deprecated: 2.5.1 + */ +#define HB_MATH_GLYPH_PART_FLAG_EXTENDER HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER + +/* https://github.com/harfbuzz/harfbuzz/pull/3417 */ +/** + * HB_OT_MATH_SCRIPT: + * + * Use #HB_SCRIPT_MATH or #HB_OT_TAG_MATH_SCRIPT instead. + * + * Previous versions of this documentation recommended passing + * #HB_OT_MATH_SCRIPT to hb_buffer_set_script() to enable math shaping, but this + * usage is no longer supported. Use #HB_SCRIPT_MATH instead. + * + * Since: 1.3.3 + * Deprecated: 3.4.0 + */ +#define HB_OT_MATH_SCRIPT HB_OT_TAG_MATH_SCRIPT + + +/* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */ +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_table_select_script) hb_bool_t +hb_ot_layout_table_choose_script (hb_face_t *face, + hb_tag_t table_tag, + const hb_tag_t *script_tags, + unsigned int *script_index, + hb_tag_t *chosen_script); + +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_script_select_language) hb_bool_t +hb_ot_layout_script_find_language (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + hb_tag_t language_tag, + unsigned int *language_index); + +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) void +hb_ot_tags_from_script (hb_script_t script, + hb_tag_t *script_tag_1, + hb_tag_t *script_tag_2); + +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) hb_tag_t +hb_ot_tag_from_language (hb_language_t language); + + +/** + * HB_OT_VAR_NO_AXIS_INDEX: + * + * Do not use. + * + * Since: 1.4.2 + * Deprecated: 2.2.0 + */ +#define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu + +/** + * hb_ot_var_axis_t: + * @tag: axis tag + * @name_id: axis name identifier + * @min_value: minimum value of the axis + * @default_value: default value of the axis + * @max_value: maximum value of the axis + * + * Use #hb_ot_var_axis_info_t instead. + * + * Since: 1.4.2 + * Deprecated: 2.2.0 + */ +typedef struct hb_ot_var_axis_t { + hb_tag_t tag; + hb_ot_name_id_t name_id; + float min_value; + float default_value; + float max_value; +} hb_ot_var_axis_t; + +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_get_axis_infos) unsigned int +hb_ot_var_get_axes (hb_face_t *face, + unsigned int start_offset, + unsigned int *axes_count /* IN/OUT */, + hb_ot_var_axis_t *axes_array /* OUT */); + +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_find_axis_info) hb_bool_t +hb_ot_var_find_axis (hb_face_t *face, + hb_tag_t axis_tag, + unsigned int *axis_index, + hb_ot_var_axis_t *axis_info); + + +#endif + +HB_END_DECLS + +#endif /* HB_OT_DEPRECATED_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-font.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-font.h new file mode 100644 index 0000000..e7959d1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-font.h @@ -0,0 +1,45 @@ +/* + * Copyright © 2014 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod, Roozbeh Pournader + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_FONT_H +#define HB_OT_FONT_H + +#include "hb.h" + +HB_BEGIN_DECLS + + +HB_EXTERN void +hb_ot_font_set_funcs (hb_font_t *font); + + +HB_END_DECLS + +#endif /* HB_OT_FONT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-layout.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-layout.h new file mode 100644 index 0000000..f7b488f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-layout.h @@ -0,0 +1,503 @@ +/* + * Copyright © 2007,2008,2009 Red Hat, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_LAYOUT_H +#define HB_OT_LAYOUT_H + +#include "hb.h" + +#include "hb-ot-name.h" + +HB_BEGIN_DECLS + + +/** + * HB_OT_TAG_BASE: + * + * OpenType [Baseline Table](https://docs.microsoft.com/en-us/typography/opentype/spec/base). + */ +#define HB_OT_TAG_BASE HB_TAG('B','A','S','E') +/** + * HB_OT_TAG_GDEF: + * + * OpenType [Glyph Definition Table](https://docs.microsoft.com/en-us/typography/opentype/spec/gdef). + */ +#define HB_OT_TAG_GDEF HB_TAG('G','D','E','F') +/** + * HB_OT_TAG_GSUB: + * + * OpenType [Glyph Substitution Table](https://docs.microsoft.com/en-us/typography/opentype/spec/gsub). + */ +#define HB_OT_TAG_GSUB HB_TAG('G','S','U','B') +/** + * HB_OT_TAG_GPOS: + * + * OpenType [Glyph Positioning Table](https://docs.microsoft.com/en-us/typography/opentype/spec/gpos). + */ +#define HB_OT_TAG_GPOS HB_TAG('G','P','O','S') +/** + * HB_OT_TAG_JSTF: + * + * OpenType [Justification Table](https://docs.microsoft.com/en-us/typography/opentype/spec/jstf). + */ +#define HB_OT_TAG_JSTF HB_TAG('J','S','T','F') + + +/* + * Script & Language tags. + */ + +/** + * HB_OT_TAG_DEFAULT_SCRIPT: + * + * OpenType script tag, `DFLT`, for features that are not script-specific. + * + */ +#define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T') +/** + * HB_OT_TAG_DEFAULT_LANGUAGE: + * + * OpenType language tag, `dflt`. Not a valid language tag, but some fonts + * mistakenly use it. + */ +#define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't') + +/** + * HB_OT_MAX_TAGS_PER_SCRIPT: + * + * Maximum number of OpenType tags that can correspond to a give #hb_script_t. + * + * Since: 2.0.0 + **/ +#define HB_OT_MAX_TAGS_PER_SCRIPT 3u +/** + * HB_OT_MAX_TAGS_PER_LANGUAGE: + * + * Maximum number of OpenType tags that can correspond to a give #hb_language_t. + * + * Since: 2.0.0 + **/ +#define HB_OT_MAX_TAGS_PER_LANGUAGE 3u + +HB_EXTERN void +hb_ot_tags_from_script_and_language (hb_script_t script, + hb_language_t language, + unsigned int *script_count /* IN/OUT */, + hb_tag_t *script_tags /* OUT */, + unsigned int *language_count /* IN/OUT */, + hb_tag_t *language_tags /* OUT */); + +HB_EXTERN hb_script_t +hb_ot_tag_to_script (hb_tag_t tag); + +HB_EXTERN hb_language_t +hb_ot_tag_to_language (hb_tag_t tag); + +HB_EXTERN void +hb_ot_tags_to_script_and_language (hb_tag_t script_tag, + hb_tag_t language_tag, + hb_script_t *script /* OUT */, + hb_language_t *language /* OUT */); + + +/* + * GDEF + */ + +HB_EXTERN hb_bool_t +hb_ot_layout_has_glyph_classes (hb_face_t *face); + +/** + * hb_ot_layout_glyph_class_t: + * @HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED: Glyphs not matching the other classifications + * @HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH: Spacing, single characters, capable of accepting marks + * @HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE: Glyphs that represent ligation of multiple characters + * @HB_OT_LAYOUT_GLYPH_CLASS_MARK: Non-spacing, combining glyphs that represent marks + * @HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT: Spacing glyphs that represent part of a single character + * + * The GDEF classes defined for glyphs. + * + **/ +typedef enum { + HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0, + HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH = 1, + HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE = 2, + HB_OT_LAYOUT_GLYPH_CLASS_MARK = 3, + HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT = 4 +} hb_ot_layout_glyph_class_t; + +HB_EXTERN hb_ot_layout_glyph_class_t +hb_ot_layout_get_glyph_class (hb_face_t *face, + hb_codepoint_t glyph); + +HB_EXTERN void +hb_ot_layout_get_glyphs_in_class (hb_face_t *face, + hb_ot_layout_glyph_class_t klass, + hb_set_t *glyphs /* OUT */); + +/* Not that useful. Provides list of attach points for a glyph that a + * client may want to cache */ +HB_EXTERN unsigned int +hb_ot_layout_get_attach_points (hb_face_t *face, + hb_codepoint_t glyph, + unsigned int start_offset, + unsigned int *point_count /* IN/OUT */, + unsigned int *point_array /* OUT */); + +/* Ligature caret positions */ +HB_EXTERN unsigned int +hb_ot_layout_get_ligature_carets (hb_font_t *font, + hb_direction_t direction, + hb_codepoint_t glyph, + unsigned int start_offset, + unsigned int *caret_count /* IN/OUT */, + hb_position_t *caret_array /* OUT */); + + +/* + * GSUB/GPOS feature query and enumeration interface + */ + +/** + * HB_OT_LAYOUT_NO_SCRIPT_INDEX: + * + * Special value for script index indicating unsupported script. + */ +#define HB_OT_LAYOUT_NO_SCRIPT_INDEX 0xFFFFu +/** + * HB_OT_LAYOUT_NO_FEATURE_INDEX: + * + * Special value for feature index indicating unsupported feature. + */ +#define HB_OT_LAYOUT_NO_FEATURE_INDEX 0xFFFFu +/** + * HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX: + * + * Special value for language index indicating default or unsupported language. + */ +#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu +/** + * HB_OT_LAYOUT_NO_VARIATIONS_INDEX: + * + * Special value for variations index indicating unsupported variation. + */ +#define HB_OT_LAYOUT_NO_VARIATIONS_INDEX 0xFFFFFFFFu + +HB_EXTERN unsigned int +hb_ot_layout_table_get_script_tags (hb_face_t *face, + hb_tag_t table_tag, + unsigned int start_offset, + unsigned int *script_count /* IN/OUT */, + hb_tag_t *script_tags /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_layout_table_find_script (hb_face_t *face, + hb_tag_t table_tag, + hb_tag_t script_tag, + unsigned int *script_index /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_layout_table_select_script (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_count, + const hb_tag_t *script_tags, + unsigned int *script_index /* OUT */, + hb_tag_t *chosen_script /* OUT */); + +HB_EXTERN unsigned int +hb_ot_layout_table_get_feature_tags (hb_face_t *face, + hb_tag_t table_tag, + unsigned int start_offset, + unsigned int *feature_count /* IN/OUT */, + hb_tag_t *feature_tags /* OUT */); + +HB_EXTERN unsigned int +hb_ot_layout_script_get_language_tags (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int start_offset, + unsigned int *language_count /* IN/OUT */, + hb_tag_t *language_tags /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_layout_script_select_language (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_count, + const hb_tag_t *language_tags, + unsigned int *language_index /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_layout_language_get_required_feature_index (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int *feature_index /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_layout_language_get_required_feature (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int *feature_index /* OUT */, + hb_tag_t *feature_tag /* OUT */); + +HB_EXTERN unsigned int +hb_ot_layout_language_get_feature_indexes (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int start_offset, + unsigned int *feature_count /* IN/OUT */, + unsigned int *feature_indexes /* OUT */); + +HB_EXTERN unsigned int +hb_ot_layout_language_get_feature_tags (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int start_offset, + unsigned int *feature_count /* IN/OUT */, + hb_tag_t *feature_tags /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_layout_language_find_feature (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + hb_tag_t feature_tag, + unsigned int *feature_index /* OUT */); + +HB_EXTERN unsigned int +hb_ot_layout_feature_get_lookups (hb_face_t *face, + hb_tag_t table_tag, + unsigned int feature_index, + unsigned int start_offset, + unsigned int *lookup_count /* IN/OUT */, + unsigned int *lookup_indexes /* OUT */); + +HB_EXTERN unsigned int +hb_ot_layout_table_get_lookup_count (hb_face_t *face, + hb_tag_t table_tag); + +HB_EXTERN void +hb_ot_layout_collect_features (hb_face_t *face, + hb_tag_t table_tag, + const hb_tag_t *scripts, + const hb_tag_t *languages, + const hb_tag_t *features, + hb_set_t *feature_indexes /* OUT */); + +HB_EXTERN void +hb_ot_layout_collect_lookups (hb_face_t *face, + hb_tag_t table_tag, + const hb_tag_t *scripts, + const hb_tag_t *languages, + const hb_tag_t *features, + hb_set_t *lookup_indexes /* OUT */); + +HB_EXTERN void +hb_ot_layout_lookup_collect_glyphs (hb_face_t *face, + hb_tag_t table_tag, + unsigned int lookup_index, + hb_set_t *glyphs_before, /* OUT. May be NULL */ + hb_set_t *glyphs_input, /* OUT. May be NULL */ + hb_set_t *glyphs_after, /* OUT. May be NULL */ + hb_set_t *glyphs_output /* OUT. May be NULL */); + + +/* Variations support */ + +HB_EXTERN hb_bool_t +hb_ot_layout_table_find_feature_variations (hb_face_t *face, + hb_tag_t table_tag, + const int *coords, + unsigned int num_coords, + unsigned int *variations_index /* out */); + +HB_EXTERN unsigned int +hb_ot_layout_feature_with_variations_get_lookups (hb_face_t *face, + hb_tag_t table_tag, + unsigned int feature_index, + unsigned int variations_index, + unsigned int start_offset, + unsigned int *lookup_count /* IN/OUT */, + unsigned int *lookup_indexes /* OUT */); + + +/* + * GSUB + */ + +HB_EXTERN hb_bool_t +hb_ot_layout_has_substitution (hb_face_t *face); + +HB_EXTERN unsigned +hb_ot_layout_lookup_get_glyph_alternates (hb_face_t *face, + unsigned lookup_index, + hb_codepoint_t glyph, + unsigned start_offset, + unsigned *alternate_count /* IN/OUT */, + hb_codepoint_t *alternate_glyphs /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_layout_lookup_would_substitute (hb_face_t *face, + unsigned int lookup_index, + const hb_codepoint_t *glyphs, + unsigned int glyphs_length, + hb_bool_t zero_context); + +HB_EXTERN void +hb_ot_layout_lookup_substitute_closure (hb_face_t *face, + unsigned int lookup_index, + hb_set_t *glyphs + /*TODO , hb_bool_t inclusive */); + +HB_EXTERN void +hb_ot_layout_lookups_substitute_closure (hb_face_t *face, + const hb_set_t *lookups, + hb_set_t *glyphs); + + +/* + * GPOS + */ + +HB_EXTERN hb_bool_t +hb_ot_layout_has_positioning (hb_face_t *face); + +/* Optical 'size' feature info. Returns true if found. + * https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#size */ +HB_EXTERN hb_bool_t +hb_ot_layout_get_size_params (hb_face_t *face, + unsigned int *design_size, /* OUT. May be NULL */ + unsigned int *subfamily_id, /* OUT. May be NULL */ + hb_ot_name_id_t *subfamily_name_id, /* OUT. May be NULL */ + unsigned int *range_start, /* OUT. May be NULL */ + unsigned int *range_end /* OUT. May be NULL */); + +HB_EXTERN hb_position_t +hb_ot_layout_lookup_get_optical_bound (hb_font_t *font, + unsigned lookup_index, + hb_direction_t direction, + hb_codepoint_t glyph); + + +/* + * GSUB/GPOS + */ + +HB_EXTERN hb_bool_t +hb_ot_layout_feature_get_name_ids (hb_face_t *face, + hb_tag_t table_tag, + unsigned int feature_index, + hb_ot_name_id_t *label_id /* OUT. May be NULL */, + hb_ot_name_id_t *tooltip_id /* OUT. May be NULL */, + hb_ot_name_id_t *sample_id /* OUT. May be NULL */, + unsigned int *num_named_parameters /* OUT. May be NULL */, + hb_ot_name_id_t *first_param_id /* OUT. May be NULL */); + + +HB_EXTERN unsigned int +hb_ot_layout_feature_get_characters (hb_face_t *face, + hb_tag_t table_tag, + unsigned int feature_index, + unsigned int start_offset, + unsigned int *char_count /* IN/OUT. May be NULL */, + hb_codepoint_t *characters /* OUT. May be NULL */); + + +/* + * BASE + */ + +/** + * hb_ot_layout_baseline_tag_t: + * @HB_OT_LAYOUT_BASELINE_TAG_ROMAN: The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek. + * In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise. + * (This would not apply to alphabetic characters that remain upright in vertical writing mode, since these + * characters are not rotated.) + * @HB_OT_LAYOUT_BASELINE_TAG_HANGING: The hanging baseline. In horizontal direction, this is the horizontal + * line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode, + * for Tibetan (or some other similar script) characters rotated 90 degrees clockwise. + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT: Ideographic character face bottom or left edge, + * if the direction is horizontal or vertical, respectively. + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT: Ideographic character face top or right edge, + * if the direction is horizontal or vertical, respectively. + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL: The center of the ideographic character face. Since: 4.0.0 + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: Ideographic em-box bottom or left edge, + * if the direction is horizontal or vertical, respectively. + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: Ideographic em-box top or right edge baseline, + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL: The center of the ideographic em-box. Since: 4.0.0 + * if the direction is horizontal or vertical, respectively. + * @HB_OT_LAYOUT_BASELINE_TAG_MATH: The baseline about which mathematical characters are centered. + * In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered. + * + * Baseline tags from [Baseline Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags) registry. + * + * Since: 2.6.0 + */ +typedef enum { + HB_OT_LAYOUT_BASELINE_TAG_ROMAN = HB_TAG ('r','o','m','n'), + HB_OT_LAYOUT_BASELINE_TAG_HANGING = HB_TAG ('h','a','n','g'), + HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT = HB_TAG ('i','c','f','b'), + HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT = HB_TAG ('i','c','f','t'), + HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL = HB_TAG ('I','c','f','c'), + HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT = HB_TAG ('i','d','e','o'), + HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT = HB_TAG ('i','d','t','p'), + HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL = HB_TAG ('I','d','c','e'), + HB_OT_LAYOUT_BASELINE_TAG_MATH = HB_TAG ('m','a','t','h'), + + /*< private >*/ + _HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_ot_layout_baseline_tag_t; + +HB_EXTERN hb_ot_layout_baseline_tag_t +hb_ot_layout_get_horizontal_baseline_tag_for_script (hb_script_t script); + +HB_EXTERN hb_bool_t +hb_ot_layout_get_baseline (hb_font_t *font, + hb_ot_layout_baseline_tag_t baseline_tag, + hb_direction_t direction, + hb_tag_t script_tag, + hb_tag_t language_tag, + hb_position_t *coord /* OUT. May be NULL. */); + +HB_EXTERN void +hb_ot_layout_get_baseline_with_fallback (hb_font_t *font, + hb_ot_layout_baseline_tag_t baseline_tag, + hb_direction_t direction, + hb_tag_t script_tag, + hb_tag_t language_tag, + hb_position_t *coord /* OUT */); + +HB_END_DECLS + +#endif /* HB_OT_LAYOUT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-math.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-math.h new file mode 100644 index 0000000..1378a06 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-math.h @@ -0,0 +1,333 @@ +/* + * Copyright © 2016 Igalia S.L. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Igalia Author(s): Frédéric Wang + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_MATH_H +#define HB_OT_MATH_H + +#include "hb.h" + +HB_BEGIN_DECLS + + +/* + * MATH + */ + +/** + * HB_OT_TAG_MATH: + * + * OpenType [Mathematical Typesetting Table](https://docs.microsoft.com/en-us/typography/opentype/spec/math). + * + * Since: 1.3.3 + */ +#define HB_OT_TAG_MATH HB_TAG('M','A','T','H') + +/** + * HB_OT_TAG_MATH_SCRIPT: + * + * OpenType script tag, `math`, for features specific to math shaping. + * + * #HB_OT_TAG_MATH_SCRIPT is not a valid #hb_script_t and should only be + * used with functions that accept raw OpenType script tags, such as + * #hb_ot_layout_collect_features. In other cases, #HB_SCRIPT_MATH should be + * used instead. + * + * Since: 3.4.0 + */ +#define HB_OT_TAG_MATH_SCRIPT HB_TAG('m','a','t','h') + +/* Types */ + +/** + * hb_ot_math_constant_t: + * @HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN: scriptPercentScaleDown + * @HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN: scriptScriptPercentScaleDown + * @HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT: delimitedSubFormulaMinHeight + * @HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT: displayOperatorMinHeight + * @HB_OT_MATH_CONSTANT_MATH_LEADING: mathLeading + * @HB_OT_MATH_CONSTANT_AXIS_HEIGHT: axisHeight + * @HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT: accentBaseHeight + * @HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT: flattenedAccentBaseHeight + * @HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN: subscriptShiftDown + * @HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX: subscriptTopMax + * @HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN: subscriptBaselineDropMin + * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP: superscriptShiftUp + * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED: superscriptShiftUpCramped + * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN: superscriptBottomMin + * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX: superscriptBaselineDropMax + * @HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN: subSuperscriptGapMin + * @HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT: superscriptBottomMaxWithSubscript + * @HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT: spaceAfterScript + * @HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN: upperLimitGapMin + * @HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN: upperLimitBaselineRiseMin + * @HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN: lowerLimitGapMin + * @HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN: lowerLimitBaselineDropMin + * @HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP: stackTopShiftUp + * @HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP: stackTopDisplayStyleShiftUp + * @HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN: stackBottomShiftDown + * @HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN: stackBottomDisplayStyleShiftDown + * @HB_OT_MATH_CONSTANT_STACK_GAP_MIN: stackGapMin + * @HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN: stackDisplayStyleGapMin + * @HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP: stretchStackTopShiftUp + * @HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN: stretchStackBottomShiftDown + * @HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN: stretchStackGapAboveMin + * @HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN: stretchStackGapBelowMin + * @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP: fractionNumeratorShiftUp + * @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP: fractionNumeratorDisplayStyleShiftUp + * @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN: fractionDenominatorShiftDown + * @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN: fractionDenominatorDisplayStyleShiftDown + * @HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN: fractionNumeratorGapMin + * @HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN: fractionNumDisplayStyleGapMin + * @HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS: fractionRuleThickness + * @HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN: fractionDenominatorGapMin + * @HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN: fractionDenomDisplayStyleGapMin + * @HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP: skewedFractionHorizontalGap + * @HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP: skewedFractionVerticalGap + * @HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP: overbarVerticalGap + * @HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS: overbarRuleThickness + * @HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER: overbarExtraAscender + * @HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP: underbarVerticalGap + * @HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS: underbarRuleThickness + * @HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER: underbarExtraDescender + * @HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP: radicalVerticalGap + * @HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP: radicalDisplayStyleVerticalGap + * @HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS: radicalRuleThickness + * @HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER: radicalExtraAscender + * @HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE: radicalKernBeforeDegree + * @HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE: radicalKernAfterDegree + * @HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT: radicalDegreeBottomRaisePercent + * + * The 'MATH' table constants, refer to + * [OpenType documentation](https://docs.microsoft.com/en-us/typography/opentype/spec/math#mathconstants-table) + * For more explanations. + * + * Since: 1.3.3 + */ +typedef enum { + HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN = 0, + HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN = 1, + HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT = 2, + HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT = 3, + HB_OT_MATH_CONSTANT_MATH_LEADING = 4, + HB_OT_MATH_CONSTANT_AXIS_HEIGHT = 5, + HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT = 6, + HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT = 7, + HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN = 8, + HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX = 9, + HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN = 10, + HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP = 11, + HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED = 12, + HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN = 13, + HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX = 14, + HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN = 15, + HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT = 16, + HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT = 17, + HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN = 18, + HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN = 19, + HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN = 20, + HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN = 21, + HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP = 22, + HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP = 23, + HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN = 24, + HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN = 25, + HB_OT_MATH_CONSTANT_STACK_GAP_MIN = 26, + HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN = 27, + HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP = 28, + HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN = 29, + HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN = 30, + HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN = 31, + HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP = 32, + HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP = 33, + HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN = 34, + HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN = 35, + HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN = 36, + HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN = 37, + HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS = 38, + HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN = 39, + HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN = 40, + HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP = 41, + HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP = 42, + HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP = 43, + HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS = 44, + HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER = 45, + HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP = 46, + HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS = 47, + HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER = 48, + HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP = 49, + HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP = 50, + HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS = 51, + HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER = 52, + HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE = 53, + HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE = 54, + HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT = 55 +} hb_ot_math_constant_t; + +/** + * hb_ot_math_kern_t: + * @HB_OT_MATH_KERN_TOP_RIGHT: The top right corner of the glyph. + * @HB_OT_MATH_KERN_TOP_LEFT: The top left corner of the glyph. + * @HB_OT_MATH_KERN_BOTTOM_RIGHT: The bottom right corner of the glyph. + * @HB_OT_MATH_KERN_BOTTOM_LEFT: The bottom left corner of the glyph. + * + * The math kerning-table types defined for the four corners + * of a glyph. + * + * Since: 1.3.3 + */ +typedef enum { + HB_OT_MATH_KERN_TOP_RIGHT = 0, + HB_OT_MATH_KERN_TOP_LEFT = 1, + HB_OT_MATH_KERN_BOTTOM_RIGHT = 2, + HB_OT_MATH_KERN_BOTTOM_LEFT = 3 +} hb_ot_math_kern_t; + +/** + * hb_ot_math_kern_entry_t: + * @max_correction_height: The maximum height at which this entry should be used + * @kern_value: The kern value of the entry + * + * Data type to hold math kerning (cut-in) information for a glyph. + * + * Since: 3.4.0 + */ +typedef struct { + hb_position_t max_correction_height; + hb_position_t kern_value; +} hb_ot_math_kern_entry_t; + +/** + * hb_ot_math_glyph_variant_t: + * @glyph: The glyph index of the variant + * @advance: The advance width of the variant + * + * Data type to hold math-variant information for a glyph. + * + * Since: 1.3.3 + */ +typedef struct hb_ot_math_glyph_variant_t { + hb_codepoint_t glyph; + hb_position_t advance; +} hb_ot_math_glyph_variant_t; + +/** + * hb_ot_math_glyph_part_flags_t: + * @HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER: This is an extender glyph part that + * can be repeated to reach the desired length. + * + * Flags for math glyph parts. + * + * Since: 1.3.3 + */ +typedef enum { /*< flags >*/ + HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u /* Extender glyph */ +} hb_ot_math_glyph_part_flags_t; + +/** + * hb_ot_math_glyph_part_t: + * @glyph: The glyph index of the variant part + * @start_connector_length: The length of the connector on the starting side of the variant part + * @end_connector_length: The length of the connector on the ending side of the variant part + * @full_advance: The total advance of the part + * @flags: #hb_ot_math_glyph_part_flags_t flags for the part + * + * Data type to hold information for a "part" component of a math-variant glyph. + * Large variants for stretchable math glyphs (such as parentheses) can be constructed + * on the fly from parts. + * + * Since: 1.3.3 + */ +typedef struct hb_ot_math_glyph_part_t { + hb_codepoint_t glyph; + hb_position_t start_connector_length; + hb_position_t end_connector_length; + hb_position_t full_advance; + hb_ot_math_glyph_part_flags_t flags; +} hb_ot_math_glyph_part_t; + +/* Methods */ + +HB_EXTERN hb_bool_t +hb_ot_math_has_data (hb_face_t *face); + +HB_EXTERN hb_position_t +hb_ot_math_get_constant (hb_font_t *font, + hb_ot_math_constant_t constant); + +HB_EXTERN hb_position_t +hb_ot_math_get_glyph_italics_correction (hb_font_t *font, + hb_codepoint_t glyph); + +HB_EXTERN hb_position_t +hb_ot_math_get_glyph_top_accent_attachment (hb_font_t *font, + hb_codepoint_t glyph); + +HB_EXTERN hb_bool_t +hb_ot_math_is_glyph_extended_shape (hb_face_t *face, + hb_codepoint_t glyph); + +HB_EXTERN hb_position_t +hb_ot_math_get_glyph_kerning (hb_font_t *font, + hb_codepoint_t glyph, + hb_ot_math_kern_t kern, + hb_position_t correction_height); + +HB_EXTERN unsigned int +hb_ot_math_get_glyph_kernings (hb_font_t *font, + hb_codepoint_t glyph, + hb_ot_math_kern_t kern, + unsigned int start_offset, + unsigned int *entries_count, /* IN/OUT */ + hb_ot_math_kern_entry_t *kern_entries /* OUT */); + +HB_EXTERN unsigned int +hb_ot_math_get_glyph_variants (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + unsigned int start_offset, + unsigned int *variants_count, /* IN/OUT */ + hb_ot_math_glyph_variant_t *variants /* OUT */); + +HB_EXTERN hb_position_t +hb_ot_math_get_min_connector_overlap (hb_font_t *font, + hb_direction_t direction); + +HB_EXTERN unsigned int +hb_ot_math_get_glyph_assembly (hb_font_t *font, + hb_codepoint_t glyph, + hb_direction_t direction, + unsigned int start_offset, + unsigned int *parts_count, /* IN/OUT */ + hb_ot_math_glyph_part_t *parts, /* OUT */ + hb_position_t *italics_correction /* OUT */); + + +HB_END_DECLS + +#endif /* HB_OT_MATH_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-meta.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-meta.h new file mode 100644 index 0000000..7748eb4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-meta.h @@ -0,0 +1,72 @@ +/* + * Copyright © 2019 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_META_H +#define HB_OT_META_H + +#include "hb.h" + +HB_BEGIN_DECLS + +/** + * hb_ot_meta_tag_t: + * @HB_OT_META_TAG_DESIGN_LANGUAGES: Design languages. Text, using only + * Basic Latin (ASCII) characters. Indicates languages and/or scripts + * for the user audiences that the font was primarily designed for. + * @HB_OT_META_TAG_SUPPORTED_LANGUAGES: Supported languages. Text, using + * only Basic Latin (ASCII) characters. Indicates languages and/or scripts + * that the font is declared to be capable of supporting. + * + * Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta + * + * Since: 2.6.0 + **/ +typedef enum { +/* + HB_OT_META_TAG_APPL = HB_TAG ('a','p','p','l'), + HB_OT_META_TAG_BILD = HB_TAG ('b','i','l','d'), +*/ + HB_OT_META_TAG_DESIGN_LANGUAGES = HB_TAG ('d','l','n','g'), + HB_OT_META_TAG_SUPPORTED_LANGUAGES = HB_TAG ('s','l','n','g'), + + /*< private >*/ + _HB_OT_META_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_ot_meta_tag_t; + +HB_EXTERN unsigned int +hb_ot_meta_get_entry_tags (hb_face_t *face, + unsigned int start_offset, + unsigned int *entries_count, /* IN/OUT. May be NULL. */ + hb_ot_meta_tag_t *entries /* OUT. May be NULL. */); + +HB_EXTERN hb_blob_t * +hb_ot_meta_reference_entry (hb_face_t *face, hb_ot_meta_tag_t meta_tag); + +HB_END_DECLS + +#endif /* HB_OT_META_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-metrics.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-metrics.h new file mode 100644 index 0000000..30de500 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-metrics.h @@ -0,0 +1,129 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_METRICS_H +#define HB_OT_METRICS_H + +#include "hb.h" +#include "hb-ot-name.h" + +HB_BEGIN_DECLS + + +/** + * hb_ot_metrics_tag_t: + * @HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: horizontal ascender. + * @HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: horizontal descender. + * @HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: horizontal line gap. + * @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: horizontal clipping ascent. + * @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: horizontal clipping descent. + * @HB_OT_METRICS_TAG_VERTICAL_ASCENDER: vertical ascender. + * @HB_OT_METRICS_TAG_VERTICAL_DESCENDER: vertical descender. + * @HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: vertical line gap. + * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: horizontal caret rise. + * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: horizontal caret run. + * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: horizontal caret offset. + * @HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: vertical caret rise. + * @HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: vertical caret run. + * @HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: vertical caret offset. + * @HB_OT_METRICS_TAG_X_HEIGHT: x height. + * @HB_OT_METRICS_TAG_CAP_HEIGHT: cap height. + * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: subscript em x size. + * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: subscript em y size. + * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: subscript em x offset. + * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: subscript em y offset. + * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: superscript em x size. + * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: superscript em y size. + * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: superscript em x offset. + * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: superscript em y offset. + * @HB_OT_METRICS_TAG_STRIKEOUT_SIZE: strikeout size. + * @HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: strikeout offset. + * @HB_OT_METRICS_TAG_UNDERLINE_SIZE: underline size. + * @HB_OT_METRICS_TAG_UNDERLINE_OFFSET: underline offset. + * + * Metric tags corresponding to [MVAR Value + * Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags) + * + * Since: 2.6.0 + **/ +typedef enum { + HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER = HB_TAG ('h','a','s','c'), + HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER = HB_TAG ('h','d','s','c'), + HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP = HB_TAG ('h','l','g','p'), + HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT = HB_TAG ('h','c','l','a'), + HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT = HB_TAG ('h','c','l','d'), + HB_OT_METRICS_TAG_VERTICAL_ASCENDER = HB_TAG ('v','a','s','c'), + HB_OT_METRICS_TAG_VERTICAL_DESCENDER = HB_TAG ('v','d','s','c'), + HB_OT_METRICS_TAG_VERTICAL_LINE_GAP = HB_TAG ('v','l','g','p'), + HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE = HB_TAG ('h','c','r','s'), + HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN = HB_TAG ('h','c','r','n'), + HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET = HB_TAG ('h','c','o','f'), + HB_OT_METRICS_TAG_VERTICAL_CARET_RISE = HB_TAG ('v','c','r','s'), + HB_OT_METRICS_TAG_VERTICAL_CARET_RUN = HB_TAG ('v','c','r','n'), + HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET = HB_TAG ('v','c','o','f'), + HB_OT_METRICS_TAG_X_HEIGHT = HB_TAG ('x','h','g','t'), + HB_OT_METRICS_TAG_CAP_HEIGHT = HB_TAG ('c','p','h','t'), + HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE = HB_TAG ('s','b','x','s'), + HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE = HB_TAG ('s','b','y','s'), + HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET = HB_TAG ('s','b','x','o'), + HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET = HB_TAG ('s','b','y','o'), + HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE = HB_TAG ('s','p','x','s'), + HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE = HB_TAG ('s','p','y','s'), + HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET = HB_TAG ('s','p','x','o'), + HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET = HB_TAG ('s','p','y','o'), + HB_OT_METRICS_TAG_STRIKEOUT_SIZE = HB_TAG ('s','t','r','s'), + HB_OT_METRICS_TAG_STRIKEOUT_OFFSET = HB_TAG ('s','t','r','o'), + HB_OT_METRICS_TAG_UNDERLINE_SIZE = HB_TAG ('u','n','d','s'), + HB_OT_METRICS_TAG_UNDERLINE_OFFSET = HB_TAG ('u','n','d','o'), + + /*< private >*/ + _HB_OT_METRICS_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_ot_metrics_tag_t; + +HB_EXTERN hb_bool_t +hb_ot_metrics_get_position (hb_font_t *font, + hb_ot_metrics_tag_t metrics_tag, + hb_position_t *position /* OUT. May be NULL. */); + +HB_EXTERN void +hb_ot_metrics_get_position_with_fallback (hb_font_t *font, + hb_ot_metrics_tag_t metrics_tag, + hb_position_t *position /* OUT */); + +HB_EXTERN float +hb_ot_metrics_get_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag); + +HB_EXTERN hb_position_t +hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag); + +HB_EXTERN hb_position_t +hb_ot_metrics_get_y_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag); + +HB_END_DECLS + +#endif /* HB_OT_METRICS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-name.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-name.h new file mode 100644 index 0000000..1ea4b55 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-name.h @@ -0,0 +1,158 @@ +/* + * Copyright © 2018 Ebrahim Byagowi. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_NAME_H +#define HB_OT_NAME_H + +#include "hb.h" + +HB_BEGIN_DECLS + + +/** + * hb_ot_name_id_t: + * @HB_OT_NAME_ID_COPYRIGHT: Copyright notice + * @HB_OT_NAME_ID_FONT_FAMILY: Font Family name + * @HB_OT_NAME_ID_FONT_SUBFAMILY: Font Subfamily name + * @HB_OT_NAME_ID_UNIQUE_ID: Unique font identifier + * @HB_OT_NAME_ID_FULL_NAME: Full font name that reflects + * all family and relevant subfamily descriptors + * @HB_OT_NAME_ID_VERSION_STRING: Version string + * @HB_OT_NAME_ID_POSTSCRIPT_NAME: PostScript name for the font + * @HB_OT_NAME_ID_TRADEMARK: Trademark + * @HB_OT_NAME_ID_MANUFACTURER: Manufacturer Name + * @HB_OT_NAME_ID_DESIGNER: Designer + * @HB_OT_NAME_ID_DESCRIPTION: Description + * @HB_OT_NAME_ID_VENDOR_URL: URL of font vendor + * @HB_OT_NAME_ID_DESIGNER_URL: URL of typeface designer + * @HB_OT_NAME_ID_LICENSE: License Description + * @HB_OT_NAME_ID_LICENSE_URL: URL where additional licensing + * information can be found + * @HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY: Typographic Family name + * @HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY: Typographic Subfamily name + * @HB_OT_NAME_ID_MAC_FULL_NAME: Compatible Full Name for MacOS + * @HB_OT_NAME_ID_SAMPLE_TEXT: Sample text + * @HB_OT_NAME_ID_CID_FINDFONT_NAME: PostScript CID findfont name + * @HB_OT_NAME_ID_WWS_FAMILY: WWS Family Name + * @HB_OT_NAME_ID_WWS_SUBFAMILY: WWS Subfamily Name + * @HB_OT_NAME_ID_LIGHT_BACKGROUND: Light Background Palette + * @HB_OT_NAME_ID_DARK_BACKGROUND: Dark Background Palette + * @HB_OT_NAME_ID_VARIATIONS_PS_PREFIX: Variations PostScript Name Prefix + * @HB_OT_NAME_ID_INVALID: Value to represent a nonexistent name ID. + * + * An integral type representing an OpenType 'name' table name identifier. + * There are predefined name IDs, as well as name IDs return from other + * API. These can be used to fetch name strings from a font face. + * + * For more information on these fields, see the + * [OpenType spec](https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids). + * + * Since: 2.0.0 + **/ +enum +{ + HB_OT_NAME_ID_COPYRIGHT = 0, + HB_OT_NAME_ID_FONT_FAMILY = 1, + HB_OT_NAME_ID_FONT_SUBFAMILY = 2, + HB_OT_NAME_ID_UNIQUE_ID = 3, + HB_OT_NAME_ID_FULL_NAME = 4, + HB_OT_NAME_ID_VERSION_STRING = 5, + HB_OT_NAME_ID_POSTSCRIPT_NAME = 6, + HB_OT_NAME_ID_TRADEMARK = 7, + HB_OT_NAME_ID_MANUFACTURER = 8, + HB_OT_NAME_ID_DESIGNER = 9, + HB_OT_NAME_ID_DESCRIPTION = 10, + HB_OT_NAME_ID_VENDOR_URL = 11, + HB_OT_NAME_ID_DESIGNER_URL = 12, + HB_OT_NAME_ID_LICENSE = 13, + HB_OT_NAME_ID_LICENSE_URL = 14, +/*HB_OT_NAME_ID_RESERVED = 15,*/ + HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY = 16, + HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY = 17, + HB_OT_NAME_ID_MAC_FULL_NAME = 18, + HB_OT_NAME_ID_SAMPLE_TEXT = 19, + HB_OT_NAME_ID_CID_FINDFONT_NAME = 20, + HB_OT_NAME_ID_WWS_FAMILY = 21, + HB_OT_NAME_ID_WWS_SUBFAMILY = 22, + HB_OT_NAME_ID_LIGHT_BACKGROUND = 23, + HB_OT_NAME_ID_DARK_BACKGROUND = 24, + HB_OT_NAME_ID_VARIATIONS_PS_PREFIX = 25, + + HB_OT_NAME_ID_INVALID = 0xFFFF +}; + +typedef unsigned int hb_ot_name_id_t; + + +/** + * hb_ot_name_entry_t: + * @name_id: name ID + * @language: language + * + * Structure representing a name ID in a particular language. + * + * Since: 2.1.0 + **/ +typedef struct hb_ot_name_entry_t { + hb_ot_name_id_t name_id; + /*< private >*/ + hb_var_int_t var; + /*< public >*/ + hb_language_t language; +} hb_ot_name_entry_t; + +HB_EXTERN const hb_ot_name_entry_t * +hb_ot_name_list_names (hb_face_t *face, + unsigned int *num_entries /* OUT */); + + +HB_EXTERN unsigned int +hb_ot_name_get_utf8 (hb_face_t *face, + hb_ot_name_id_t name_id, + hb_language_t language, + unsigned int *text_size /* IN/OUT */, + char *text /* OUT */); + +HB_EXTERN unsigned int +hb_ot_name_get_utf16 (hb_face_t *face, + hb_ot_name_id_t name_id, + hb_language_t language, + unsigned int *text_size /* IN/OUT */, + uint16_t *text /* OUT */); + +HB_EXTERN unsigned int +hb_ot_name_get_utf32 (hb_face_t *face, + hb_ot_name_id_t name_id, + hb_language_t language, + unsigned int *text_size /* IN/OUT */, + uint32_t *text /* OUT */); + + +HB_END_DECLS + +#endif /* HB_OT_NAME_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-shape.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-shape.h new file mode 100644 index 0000000..afdff72 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-shape.h @@ -0,0 +1,53 @@ +/* + * Copyright © 2013 Red Hat, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_SHAPE_H +#define HB_OT_SHAPE_H + +#include "hb.h" + +HB_BEGIN_DECLS + +/* TODO port to shape-plan / set. */ +HB_EXTERN void +hb_ot_shape_glyphs_closure (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features, + hb_set_t *glyphs); + +HB_EXTERN void +hb_ot_shape_plan_collect_lookups (hb_shape_plan_t *shape_plan, + hb_tag_t table_tag, + hb_set_t *lookup_indexes /* OUT */); + +HB_END_DECLS + +#endif /* HB_OT_SHAPE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-var.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-var.h new file mode 100644 index 0000000..05147cc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot-var.h @@ -0,0 +1,191 @@ +/* + * Copyright © 2017 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_OT_VAR_H +#define HB_OT_VAR_H + +#include "hb.h" + +HB_BEGIN_DECLS + +/** + * HB_OT_TAG_VAR_AXIS_ITALIC: + * + * Registered tag for the roman/italic axis. + */ +#define HB_OT_TAG_VAR_AXIS_ITALIC HB_TAG('i','t','a','l') + +/** + * HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE: + * + * Registered tag for the optical-size axis. + * Note: The optical-size axis supersedes the OpenType `size` feature. + */ +#define HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE HB_TAG('o','p','s','z') + +/** + * HB_OT_TAG_VAR_AXIS_SLANT: + * + * Registered tag for the slant axis + */ +#define HB_OT_TAG_VAR_AXIS_SLANT HB_TAG('s','l','n','t') + +/** + * HB_OT_TAG_VAR_AXIS_WIDTH: + * + * Registered tag for the width axis. + */ +#define HB_OT_TAG_VAR_AXIS_WIDTH HB_TAG('w','d','t','h') + +/** + * HB_OT_TAG_VAR_AXIS_WEIGHT: + * + * Registered tag for the weight axis. + */ +#define HB_OT_TAG_VAR_AXIS_WEIGHT HB_TAG('w','g','h','t') + + +/* + * fvar / avar + */ + +HB_EXTERN hb_bool_t +hb_ot_var_has_data (hb_face_t *face); + + +/* + * Variation axes. + */ + + +HB_EXTERN unsigned int +hb_ot_var_get_axis_count (hb_face_t *face); + +/** + * hb_ot_var_axis_flags_t: + * @HB_OT_VAR_AXIS_FLAG_HIDDEN: The axis should not be exposed directly in user interfaces. + * + * Flags for #hb_ot_var_axis_info_t. + * + * Since: 2.2.0 + */ +typedef enum { /*< flags >*/ + HB_OT_VAR_AXIS_FLAG_HIDDEN = 0x00000001u, + + /*< private >*/ + _HB_OT_VAR_AXIS_FLAG_MAX_VALUE= HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_ot_var_axis_flags_t; + +/** + * hb_ot_var_axis_info_t: + * @axis_index: Index of the axis in the variation-axis array + * @tag: The #hb_tag_t tag identifying the design variation of the axis + * @name_id: The `name` table Name ID that provides display names for the axis + * @flags: The #hb_ot_var_axis_flags_t flags for the axis + * @min_value: The minimum value on the variation axis that the font covers + * @default_value: The position on the variation axis corresponding to the font's defaults + * @max_value: The maximum value on the variation axis that the font covers + * + * Data type for holding variation-axis values. + * + * The minimum, default, and maximum values are in un-normalized, user scales. + * + * Note: at present, the only flag defined for @flags is + * #HB_OT_VAR_AXIS_FLAG_HIDDEN. + * + * Since: 2.2.0 + */ +typedef struct hb_ot_var_axis_info_t { + unsigned int axis_index; + hb_tag_t tag; + hb_ot_name_id_t name_id; + hb_ot_var_axis_flags_t flags; + float min_value; + float default_value; + float max_value; + /*< private >*/ + unsigned int reserved; +} hb_ot_var_axis_info_t; + +HB_EXTERN unsigned int +hb_ot_var_get_axis_infos (hb_face_t *face, + unsigned int start_offset, + unsigned int *axes_count /* IN/OUT */, + hb_ot_var_axis_info_t *axes_array /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_var_find_axis_info (hb_face_t *face, + hb_tag_t axis_tag, + hb_ot_var_axis_info_t *axis_info); + + +/* + * Named instances. + */ + +HB_EXTERN unsigned int +hb_ot_var_get_named_instance_count (hb_face_t *face); + +HB_EXTERN hb_ot_name_id_t +hb_ot_var_named_instance_get_subfamily_name_id (hb_face_t *face, + unsigned int instance_index); + +HB_EXTERN hb_ot_name_id_t +hb_ot_var_named_instance_get_postscript_name_id (hb_face_t *face, + unsigned int instance_index); + +HB_EXTERN unsigned int +hb_ot_var_named_instance_get_design_coords (hb_face_t *face, + unsigned int instance_index, + unsigned int *coords_length, /* IN/OUT */ + float *coords /* OUT */); + + +/* + * Conversions. + */ + +HB_EXTERN void +hb_ot_var_normalize_variations (hb_face_t *face, + const hb_variation_t *variations, /* IN */ + unsigned int variations_length, + int *coords, /* OUT */ + unsigned int coords_length); + +HB_EXTERN void +hb_ot_var_normalize_coords (hb_face_t *face, + unsigned int coords_length, + const float *design_coords, /* IN */ + int *normalized_coords /* OUT */); + + +HB_END_DECLS + +#endif /* HB_OT_VAR_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot.h new file mode 100644 index 0000000..f2dbaa1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-ot.h @@ -0,0 +1,49 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#ifndef HB_OT_H +#define HB_OT_H +#define HB_OT_H_IN + +#include "hb.h" + +#include "hb-ot-color.h" +#include "hb-ot-deprecated.h" +#include "hb-ot-font.h" +#include "hb-ot-layout.h" +#include "hb-ot-math.h" +#include "hb-ot-meta.h" +#include "hb-ot-metrics.h" +#include "hb-ot-name.h" +#include "hb-ot-shape.h" +#include "hb-ot-var.h" + +HB_BEGIN_DECLS + +HB_END_DECLS + +#undef HB_OT_H_IN +#endif /* HB_OT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-set.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-set.h new file mode 100644 index 0000000..93636ab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-set.h @@ -0,0 +1,200 @@ +/* + * Copyright © 2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_SET_H +#define HB_SET_H + +#include "hb-common.h" + +HB_BEGIN_DECLS + + +/** + * HB_SET_VALUE_INVALID: + * + * Unset #hb_set_t value. + * + * Since: 0.9.21 + */ +#define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1) + +/** + * hb_set_t: + * + * Data type for holding a set of integers. #hb_set_t's are + * used to gather and contain glyph IDs, Unicode code + * points, and various other collections of discrete + * values. + * + **/ +typedef struct hb_set_t hb_set_t; + + +HB_EXTERN hb_set_t * +hb_set_create (void); + +HB_EXTERN hb_set_t * +hb_set_get_empty (void); + +HB_EXTERN hb_set_t * +hb_set_reference (hb_set_t *set); + +HB_EXTERN void +hb_set_destroy (hb_set_t *set); + +HB_EXTERN hb_bool_t +hb_set_set_user_data (hb_set_t *set, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + +HB_EXTERN void * +hb_set_get_user_data (const hb_set_t *set, + hb_user_data_key_t *key); + + +/* Returns false if allocation has failed before */ +HB_EXTERN hb_bool_t +hb_set_allocation_successful (const hb_set_t *set); + +HB_EXTERN hb_set_t * +hb_set_copy (const hb_set_t *set); + +HB_EXTERN void +hb_set_clear (hb_set_t *set); + +HB_EXTERN hb_bool_t +hb_set_is_empty (const hb_set_t *set); + +HB_EXTERN void +hb_set_invert (hb_set_t *set); + +HB_EXTERN hb_bool_t +hb_set_has (const hb_set_t *set, + hb_codepoint_t codepoint); + +HB_EXTERN void +hb_set_add (hb_set_t *set, + hb_codepoint_t codepoint); + +HB_EXTERN void +hb_set_add_range (hb_set_t *set, + hb_codepoint_t first, + hb_codepoint_t last); + +HB_EXTERN void +hb_set_add_sorted_array (hb_set_t *set, + const hb_codepoint_t *sorted_codepoints, + unsigned int num_codepoints); + +HB_EXTERN void +hb_set_del (hb_set_t *set, + hb_codepoint_t codepoint); + +HB_EXTERN void +hb_set_del_range (hb_set_t *set, + hb_codepoint_t first, + hb_codepoint_t last); + +HB_EXTERN hb_bool_t +hb_set_is_equal (const hb_set_t *set, + const hb_set_t *other); + +HB_EXTERN unsigned int +hb_set_hash (const hb_set_t *set); + +HB_EXTERN hb_bool_t +hb_set_is_subset (const hb_set_t *set, + const hb_set_t *larger_set); + +HB_EXTERN void +hb_set_set (hb_set_t *set, + const hb_set_t *other); + +HB_EXTERN void +hb_set_union (hb_set_t *set, + const hb_set_t *other); + +HB_EXTERN void +hb_set_intersect (hb_set_t *set, + const hb_set_t *other); + +HB_EXTERN void +hb_set_subtract (hb_set_t *set, + const hb_set_t *other); + +HB_EXTERN void +hb_set_symmetric_difference (hb_set_t *set, + const hb_set_t *other); + +HB_EXTERN unsigned int +hb_set_get_population (const hb_set_t *set); + +/* Returns HB_SET_VALUE_INVALID if set empty. */ +HB_EXTERN hb_codepoint_t +hb_set_get_min (const hb_set_t *set); + +/* Returns HB_SET_VALUE_INVALID if set empty. */ +HB_EXTERN hb_codepoint_t +hb_set_get_max (const hb_set_t *set); + +/* Pass HB_SET_VALUE_INVALID in to get started. */ +HB_EXTERN hb_bool_t +hb_set_next (const hb_set_t *set, + hb_codepoint_t *codepoint); + +/* Pass HB_SET_VALUE_INVALID in to get started. */ +HB_EXTERN hb_bool_t +hb_set_previous (const hb_set_t *set, + hb_codepoint_t *codepoint); + +/* Pass HB_SET_VALUE_INVALID for first and last to get started. */ +HB_EXTERN hb_bool_t +hb_set_next_range (const hb_set_t *set, + hb_codepoint_t *first, + hb_codepoint_t *last); + +/* Pass HB_SET_VALUE_INVALID for first and last to get started. */ +HB_EXTERN hb_bool_t +hb_set_previous_range (const hb_set_t *set, + hb_codepoint_t *first, + hb_codepoint_t *last); + +/* Pass HB_SET_VALUE_INVALID in to get started. */ +HB_EXTERN unsigned int +hb_set_next_many (const hb_set_t *set, + hb_codepoint_t codepoint, + hb_codepoint_t *out, + unsigned int size); + +HB_END_DECLS + +#endif /* HB_SET_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-shape-plan.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-shape-plan.h new file mode 100644 index 0000000..aaf5cf9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-shape-plan.h @@ -0,0 +1,122 @@ +/* + * Copyright © 2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_SHAPE_PLAN_H +#define HB_SHAPE_PLAN_H + +#include "hb-common.h" +#include "hb-font.h" + +HB_BEGIN_DECLS + +/** + * hb_shape_plan_t: + * + * Data type for holding a shaping plan. + * + * Shape plans contain information about how HarfBuzz will shape a + * particular text segment, based on the segment's properties and the + * capabilities in the font face in use. + * + * Shape plans can be queried about how shaping will perform, given a set + * of specific input parameters (script, language, direction, features, + * etc.). + * + **/ +typedef struct hb_shape_plan_t hb_shape_plan_t; + +HB_EXTERN hb_shape_plan_t * +hb_shape_plan_create (hb_face_t *face, + const hb_segment_properties_t *props, + const hb_feature_t *user_features, + unsigned int num_user_features, + const char * const *shaper_list); + +HB_EXTERN hb_shape_plan_t * +hb_shape_plan_create_cached (hb_face_t *face, + const hb_segment_properties_t *props, + const hb_feature_t *user_features, + unsigned int num_user_features, + const char * const *shaper_list); + +HB_EXTERN hb_shape_plan_t * +hb_shape_plan_create2 (hb_face_t *face, + const hb_segment_properties_t *props, + const hb_feature_t *user_features, + unsigned int num_user_features, + const int *coords, + unsigned int num_coords, + const char * const *shaper_list); + +HB_EXTERN hb_shape_plan_t * +hb_shape_plan_create_cached2 (hb_face_t *face, + const hb_segment_properties_t *props, + const hb_feature_t *user_features, + unsigned int num_user_features, + const int *coords, + unsigned int num_coords, + const char * const *shaper_list); + + +HB_EXTERN hb_shape_plan_t * +hb_shape_plan_get_empty (void); + +HB_EXTERN hb_shape_plan_t * +hb_shape_plan_reference (hb_shape_plan_t *shape_plan); + +HB_EXTERN void +hb_shape_plan_destroy (hb_shape_plan_t *shape_plan); + +HB_EXTERN hb_bool_t +hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + +HB_EXTERN void * +hb_shape_plan_get_user_data (const hb_shape_plan_t *shape_plan, + hb_user_data_key_t *key); + + +HB_EXTERN hb_bool_t +hb_shape_plan_execute (hb_shape_plan_t *shape_plan, + hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features); + +HB_EXTERN const char * +hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan); + + +HB_END_DECLS + +#endif /* HB_SHAPE_PLAN_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-shape.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-shape.h new file mode 100644 index 0000000..922f8c0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-shape.h @@ -0,0 +1,62 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * Copyright © 2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_SHAPE_H +#define HB_SHAPE_H + +#include "hb-common.h" +#include "hb-buffer.h" +#include "hb-font.h" + +HB_BEGIN_DECLS + + +HB_EXTERN void +hb_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features); + +HB_EXTERN hb_bool_t +hb_shape_full (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features, + const char * const *shaper_list); + +HB_EXTERN const char ** +hb_shape_list_shapers (void); + + +HB_END_DECLS + +#endif /* HB_SHAPE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-style.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-style.h new file mode 100644 index 0000000..d17d2da --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-style.h @@ -0,0 +1,81 @@ +/* + * Copyright © 2019 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_STYLE_H +#define HB_STYLE_H + +#include "hb.h" + +HB_BEGIN_DECLS + +/** + * hb_style_tag_t: + * @HB_STYLE_TAG_ITALIC: Used to vary between non-italic and italic. + * A value of 0 can be interpreted as "Roman" (non-italic); a value of 1 can + * be interpreted as (fully) italic. + * @HB_STYLE_TAG_OPTICAL_SIZE: Used to vary design to suit different text sizes. + * Non-zero. Values can be interpreted as text size, in points. + * @HB_STYLE_TAG_SLANT_ANGLE: Used to vary between upright and slanted text. Values + * must be greater than -90 and less than +90. Values can be interpreted as + * the angle, in counter-clockwise degrees, of oblique slant from whatever the + * designer considers to be upright for that font design. Typical right-leaning + * Italic fonts have a negative slant angle (typically around -12) + * @HB_STYLE_TAG_SLANT_RATIO: same as @HB_STYLE_TAG_SLANT_ANGLE expression as ratio. + * Typical right-leaning Italic fonts have a positive slant ratio (typically around 0.2) + * @HB_STYLE_TAG_WIDTH: Used to vary width of text from narrower to wider. + * Non-zero. Values can be interpreted as a percentage of whatever the font + * designer considers “normal width” for that font design. + * @HB_STYLE_TAG_WEIGHT: Used to vary stroke thicknesses or other design details + * to give variation from lighter to blacker. Values can be interpreted in direct + * comparison to values for usWeightClass in the OS/2 table, + * or the CSS font-weight property. + * + * Defined by [OpenType Design-Variation Axis Tag Registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg). + * + * Since: 3.0.0 + **/ +typedef enum +{ + HB_STYLE_TAG_ITALIC = HB_TAG ('i','t','a','l'), + HB_STYLE_TAG_OPTICAL_SIZE = HB_TAG ('o','p','s','z'), + HB_STYLE_TAG_SLANT_ANGLE = HB_TAG ('s','l','n','t'), + HB_STYLE_TAG_SLANT_RATIO = HB_TAG ('S','l','n','t'), + HB_STYLE_TAG_WIDTH = HB_TAG ('w','d','t','h'), + HB_STYLE_TAG_WEIGHT = HB_TAG ('w','g','h','t'), + + /*< private >*/ + _HB_STYLE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_style_tag_t; + + +HB_EXTERN float +hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag); + +HB_END_DECLS + +#endif /* HB_STYLE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-subset-repacker.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-subset-repacker.h new file mode 100644 index 0000000..245cf60 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-subset-repacker.h @@ -0,0 +1,81 @@ +/* + * Copyright © 2022 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +#ifndef HB_SUBSET_REPACKER_H +#define HB_SUBSET_REPACKER_H + +#include "hb.h" + +HB_BEGIN_DECLS + +#ifdef HB_EXPERIMENTAL_API +/* + * struct hb_link_t + * width: offsetSize in bytes + * position: position of the offset field in bytes + * from beginning of subtable + * objidx: index of subtable + */ +struct hb_link_t +{ + unsigned width; + unsigned position; + unsigned objidx; +}; + +typedef struct hb_link_t hb_link_t; + +/* + * struct hb_object_t + * head: start of object data + * tail: end of object data + * num_real_links: num of offset field in the object + * real_links: pointer to array of offset info + * num_virtual_links: num of objects that must be packed + * after current object in the final serialized order + * virtual_links: array of virtual link info + */ +struct hb_object_t +{ + char *head; + char *tail; + unsigned num_real_links; + hb_link_t *real_links; + unsigned num_virtual_links; + hb_link_t *virtual_links; +}; + +typedef struct hb_object_t hb_object_t; + +HB_EXTERN hb_blob_t* +hb_subset_repack_or_fail (hb_tag_t table_tag, + hb_object_t* hb_objects, + unsigned num_hb_objs); + +#endif + +HB_END_DECLS + +#endif /* HB_SUBSET_REPACKER_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-subset.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-subset.h new file mode 100644 index 0000000..6a2c5f6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-subset.h @@ -0,0 +1,229 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Rod Sheeter + */ + +#ifndef HB_SUBSET_H +#define HB_SUBSET_H + +#include "hb.h" + +HB_BEGIN_DECLS + +/** + * hb_subset_input_t: + * + * Things that change based on the input. Characters to keep, etc. + */ + +typedef struct hb_subset_input_t hb_subset_input_t; + +/** + * hb_subset_plan_t: + * + * Contains information about how the subset operation will be executed. + * Such as mappings from the old glyph ids to the new ones in the subset. + */ + +typedef struct hb_subset_plan_t hb_subset_plan_t; + +/** + * hb_subset_flags_t: + * @HB_SUBSET_FLAGS_DEFAULT: all flags at their default value of false. + * @HB_SUBSET_FLAGS_NO_HINTING: If set hinting instructions will be dropped in + * the produced subset. Otherwise hinting instructions will be retained. + * @HB_SUBSET_FLAGS_RETAIN_GIDS: If set glyph indices will not be modified in + * the produced subset. If glyphs are dropped their indices will be retained + * as an empty glyph. + * @HB_SUBSET_FLAGS_DESUBROUTINIZE: If set and subsetting a CFF font the + * subsetter will attempt to remove subroutines from the CFF glyphs. + * @HB_SUBSET_FLAGS_NAME_LEGACY: If set non-unicode name records will be + * retained in the subset. + * @HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG: If set the subsetter will set the + * OVERLAP_SIMPLE flag on each simple glyph. + * @HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED: If set the subsetter will not + * drop unrecognized tables and instead pass them through untouched. + * @HB_SUBSET_FLAGS_NOTDEF_OUTLINE: If set the notdef glyph outline will be + * retained in the final subset. + * @HB_SUBSET_FLAGS_GLYPH_NAMES: If set the PS glyph names will be retained + * in the final subset. + * @HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES: If set then the unicode ranges in + * OS/2 will not be recalculated. + * @HB_SUBSET_FLAGS_PATCH_MODE: If set the subsetter behaviour will be modified + * to produce a subset that is better suited to patching. For example cmap + * subtable format will be kept stable. + * @HB_SUBSET_FLAGS_OMIT_GLYF: If set the subsetter won't actually produce the final + * glyf table bytes. The table directory will include and entry as if the table was + * there but the actual final font blob will be truncated prior to the glyf data. This + * is a useful performance optimization when a font aware binary patching algorithm + * is being used to diff two subsets. + * + * List of boolean properties that can be configured on the subset input. + * + * Since: 2.9.0 + **/ +typedef enum { /*< flags >*/ + HB_SUBSET_FLAGS_DEFAULT = 0x00000000u, + HB_SUBSET_FLAGS_NO_HINTING = 0x00000001u, + HB_SUBSET_FLAGS_RETAIN_GIDS = 0x00000002u, + HB_SUBSET_FLAGS_DESUBROUTINIZE = 0x00000004u, + HB_SUBSET_FLAGS_NAME_LEGACY = 0x00000008u, + HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG = 0x00000010u, + HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 0x00000020u, + HB_SUBSET_FLAGS_NOTDEF_OUTLINE = 0x00000040u, + HB_SUBSET_FLAGS_GLYPH_NAMES = 0x00000080u, + HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES = 0x00000100u, + // Not supported yet: HB_SUBSET_FLAGS_PATCH_MODE = 0x00000200u, + // Not supported yet: HB_SUBSET_FLAGS_OMIT_GLYF = 0x00000400u, +} hb_subset_flags_t; + +/** + * hb_subset_sets_t: + * @HB_SUBSET_SETS_GLYPH_INDEX: the set of glyph indexes to retain in the subset. + * @HB_SUBSET_SETS_UNICODE: the set of unicode codepoints to retain in the subset. + * @HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG: the set of table tags which specifies tables that should not be + * subsetted. + * @HB_SUBSET_SETS_DROP_TABLE_TAG: the set of table tags which specifies tables which will be dropped + * in the subset. + * @HB_SUBSET_SETS_NAME_ID: the set of name ids that will be retained. + * @HB_SUBSET_SETS_NAME_LANG_ID: the set of name lang ids that will be retained. + * @HB_SUBSET_SETS_LAYOUT_FEATURE_TAG: the set of layout feature tags that will be retained + * in the subset. + * @HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG: the set of layout script tags that will be retained + * in the subset. Defaults to all tags. Since: 5.0.0 + * + * List of sets that can be configured on the subset input. + * + * Since: 2.9.1 + **/ +typedef enum { + HB_SUBSET_SETS_GLYPH_INDEX = 0, + HB_SUBSET_SETS_UNICODE, + HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG, + HB_SUBSET_SETS_DROP_TABLE_TAG, + HB_SUBSET_SETS_NAME_ID, + HB_SUBSET_SETS_NAME_LANG_ID, + HB_SUBSET_SETS_LAYOUT_FEATURE_TAG, + HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG, +} hb_subset_sets_t; + +HB_EXTERN hb_subset_input_t * +hb_subset_input_create_or_fail (void); + +HB_EXTERN hb_subset_input_t * +hb_subset_input_reference (hb_subset_input_t *input); + +HB_EXTERN void +hb_subset_input_destroy (hb_subset_input_t *input); + +HB_EXTERN hb_bool_t +hb_subset_input_set_user_data (hb_subset_input_t *input, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + +HB_EXTERN void * +hb_subset_input_get_user_data (const hb_subset_input_t *input, + hb_user_data_key_t *key); + +HB_EXTERN hb_set_t * +hb_subset_input_unicode_set (hb_subset_input_t *input); + +HB_EXTERN hb_set_t * +hb_subset_input_glyph_set (hb_subset_input_t *input); + +HB_EXTERN hb_set_t * +hb_subset_input_set (hb_subset_input_t *input, hb_subset_sets_t set_type); + +HB_EXTERN hb_subset_flags_t +hb_subset_input_get_flags (hb_subset_input_t *input); + +HB_EXTERN void +hb_subset_input_set_flags (hb_subset_input_t *input, + unsigned value); + +#ifdef HB_EXPERIMENTAL_API +#ifndef HB_NO_VAR +HB_EXTERN hb_bool_t +hb_subset_input_pin_axis_to_default (hb_subset_input_t *input, + hb_face_t *face, + hb_tag_t axis_tag); + +HB_EXTERN hb_bool_t +hb_subset_input_pin_axis_location (hb_subset_input_t *input, + hb_face_t *face, + hb_tag_t axis_tag, + float axis_value); +#endif +#endif + +#ifdef HB_EXPERIMENTAL_API + +HB_EXTERN hb_face_t * +hb_subset_preprocess (hb_face_t *source); + +#endif + +HB_EXTERN hb_face_t * +hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input); + +HB_EXTERN hb_face_t * +hb_subset_plan_execute_or_fail (hb_subset_plan_t *plan); + +HB_EXTERN hb_subset_plan_t * +hb_subset_plan_create_or_fail (hb_face_t *face, + const hb_subset_input_t *input); + +HB_EXTERN void +hb_subset_plan_destroy (hb_subset_plan_t *plan); + +HB_EXTERN const hb_map_t* +hb_subset_plan_old_to_new_glyph_mapping (const hb_subset_plan_t *plan); + +HB_EXTERN const hb_map_t* +hb_subset_plan_new_to_old_glyph_mapping (const hb_subset_plan_t *plan); + +HB_EXTERN const hb_map_t* +hb_subset_plan_unicode_to_old_glyph_mapping (const hb_subset_plan_t *plan); + + +HB_EXTERN hb_subset_plan_t * +hb_subset_plan_reference (hb_subset_plan_t *plan); + +HB_EXTERN hb_bool_t +hb_subset_plan_set_user_data (hb_subset_plan_t *plan, + hb_user_data_key_t *key, + void *data, + hb_destroy_func_t destroy, + hb_bool_t replace); + +HB_EXTERN void * +hb_subset_plan_get_user_data (const hb_subset_plan_t *plan, + hb_user_data_key_t *key); + + +HB_END_DECLS + +#endif /* HB_SUBSET_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-unicode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-unicode.h new file mode 100644 index 0000000..faa8d67 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-unicode.h @@ -0,0 +1,643 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * Copyright © 2011 Codethink Limited + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + * Codethink Author(s): Ryan Lortie + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_UNICODE_H +#define HB_UNICODE_H + +#include "hb-common.h" + +HB_BEGIN_DECLS + + +/** + * HB_UNICODE_MAX: + * + * Maximum valid Unicode code point. + * + * Since: 1.9.0 + **/ +#define HB_UNICODE_MAX 0x10FFFFu + + +/** + * hb_unicode_general_category_t: + * @HB_UNICODE_GENERAL_CATEGORY_CONTROL: [Cc] + * @HB_UNICODE_GENERAL_CATEGORY_FORMAT: [Cf] + * @HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED: [Cn] + * @HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE: [Co] + * @HB_UNICODE_GENERAL_CATEGORY_SURROGATE: [Cs] + * @HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER: [Ll] + * @HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER: [Lm] + * @HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER: [Lo] + * @HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER: [Lt] + * @HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER: [Lu] + * @HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK: [Mc] + * @HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK: [Me] + * @HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK: [Mn] + * @HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER: [Nd] + * @HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER: [Nl] + * @HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER: [No] + * @HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION: [Pc] + * @HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION: [Pd] + * @HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION: [Pe] + * @HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION: [Pf] + * @HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION: [Pi] + * @HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION: [Po] + * @HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION: [Ps] + * @HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL: [Sc] + * @HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL: [Sk] + * @HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL: [Sm] + * @HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL: [So] + * @HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR: [Zl] + * @HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR: [Zp] + * @HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR: [Zs] + * + * Data type for the "General_Category" (gc) property from + * the Unicode Character Database. + **/ + +/* Unicode Character Database property: General_Category (gc) */ +typedef enum +{ + HB_UNICODE_GENERAL_CATEGORY_CONTROL, /* Cc */ + HB_UNICODE_GENERAL_CATEGORY_FORMAT, /* Cf */ + HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, /* Cn */ + HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, /* Co */ + HB_UNICODE_GENERAL_CATEGORY_SURROGATE, /* Cs */ + HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, /* Ll */ + HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, /* Lm */ + HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, /* Lo */ + HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, /* Lt */ + HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, /* Lu */ + HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK, /* Mc */ + HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, /* Me */ + HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, /* Mn */ + HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, /* Nd */ + HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, /* Nl */ + HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, /* No */ + HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, /* Pc */ + HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, /* Pd */ + HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, /* Pe */ + HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, /* Pf */ + HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, /* Pi */ + HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, /* Po */ + HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, /* Ps */ + HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, /* Sc */ + HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, /* Sk */ + HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, /* Sm */ + HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, /* So */ + HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, /* Zl */ + HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, /* Zp */ + HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR /* Zs */ +} hb_unicode_general_category_t; + +/** + * hb_unicode_combining_class_t: + * @HB_UNICODE_COMBINING_CLASS_NOT_REORDERED: Spacing and enclosing marks; also many vowel and consonant signs, even if nonspacing + * @HB_UNICODE_COMBINING_CLASS_OVERLAY: Marks which overlay a base letter or symbol + * @HB_UNICODE_COMBINING_CLASS_NUKTA: Diacritic nukta marks in Brahmi-derived scripts + * @HB_UNICODE_COMBINING_CLASS_KANA_VOICING: Hiragana/Katakana voicing marks + * @HB_UNICODE_COMBINING_CLASS_VIRAMA: Viramas + * @HB_UNICODE_COMBINING_CLASS_CCC10: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC11: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC12: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC13: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC14: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC15: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC16: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC17: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC18: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC19: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC20: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC21: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC22: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC23: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC24: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC25: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC26: [Hebrew] + * @HB_UNICODE_COMBINING_CLASS_CCC27: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC28: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC29: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC30: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC31: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC32: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC33: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC34: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC35: [Arabic] + * @HB_UNICODE_COMBINING_CLASS_CCC36: [Syriac] + * @HB_UNICODE_COMBINING_CLASS_CCC84: [Telugu] + * @HB_UNICODE_COMBINING_CLASS_CCC91: [Telugu] + * @HB_UNICODE_COMBINING_CLASS_CCC103: [Thai] + * @HB_UNICODE_COMBINING_CLASS_CCC107: [Thai] + * @HB_UNICODE_COMBINING_CLASS_CCC118: [Lao] + * @HB_UNICODE_COMBINING_CLASS_CCC122: [Lao] + * @HB_UNICODE_COMBINING_CLASS_CCC129: [Tibetan] + * @HB_UNICODE_COMBINING_CLASS_CCC130: [Tibetan] + * @HB_UNICODE_COMBINING_CLASS_CCC133: [Tibetan] + * @HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: Marks attached at the bottom left + * @HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: Marks attached directly below + * @HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: Marks attached directly above + * @HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: Marks attached at the top right + * @HB_UNICODE_COMBINING_CLASS_BELOW_LEFT: Distinct marks at the bottom left + * @HB_UNICODE_COMBINING_CLASS_BELOW: Distinct marks directly below + * @HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: Distinct marks at the bottom right + * @HB_UNICODE_COMBINING_CLASS_LEFT: Distinct marks to the left + * @HB_UNICODE_COMBINING_CLASS_RIGHT: Distinct marks to the right + * @HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT: Distinct marks at the top left + * @HB_UNICODE_COMBINING_CLASS_ABOVE: Distinct marks directly above + * @HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT: Distinct marks at the top right + * @HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: Distinct marks subtending two bases + * @HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: Distinct marks extending above two bases + * @HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT: Greek iota subscript only + * @HB_UNICODE_COMBINING_CLASS_INVALID: Invalid combining class + * + * Data type for the Canonical_Combining_Class (ccc) property + * from the Unicode Character Database. + * + * Note: newer versions of Unicode may add new values. + * Client programs should be ready to handle any value in the 0..254 range + * being returned from hb_unicode_combining_class(). + * + **/ +typedef enum +{ + HB_UNICODE_COMBINING_CLASS_NOT_REORDERED = 0, + HB_UNICODE_COMBINING_CLASS_OVERLAY = 1, + HB_UNICODE_COMBINING_CLASS_NUKTA = 7, + HB_UNICODE_COMBINING_CLASS_KANA_VOICING = 8, + HB_UNICODE_COMBINING_CLASS_VIRAMA = 9, + + /* Hebrew */ + HB_UNICODE_COMBINING_CLASS_CCC10 = 10, + HB_UNICODE_COMBINING_CLASS_CCC11 = 11, + HB_UNICODE_COMBINING_CLASS_CCC12 = 12, + HB_UNICODE_COMBINING_CLASS_CCC13 = 13, + HB_UNICODE_COMBINING_CLASS_CCC14 = 14, + HB_UNICODE_COMBINING_CLASS_CCC15 = 15, + HB_UNICODE_COMBINING_CLASS_CCC16 = 16, + HB_UNICODE_COMBINING_CLASS_CCC17 = 17, + HB_UNICODE_COMBINING_CLASS_CCC18 = 18, + HB_UNICODE_COMBINING_CLASS_CCC19 = 19, + HB_UNICODE_COMBINING_CLASS_CCC20 = 20, + HB_UNICODE_COMBINING_CLASS_CCC21 = 21, + HB_UNICODE_COMBINING_CLASS_CCC22 = 22, + HB_UNICODE_COMBINING_CLASS_CCC23 = 23, + HB_UNICODE_COMBINING_CLASS_CCC24 = 24, + HB_UNICODE_COMBINING_CLASS_CCC25 = 25, + HB_UNICODE_COMBINING_CLASS_CCC26 = 26, + + /* Arabic */ + HB_UNICODE_COMBINING_CLASS_CCC27 = 27, + HB_UNICODE_COMBINING_CLASS_CCC28 = 28, + HB_UNICODE_COMBINING_CLASS_CCC29 = 29, + HB_UNICODE_COMBINING_CLASS_CCC30 = 30, + HB_UNICODE_COMBINING_CLASS_CCC31 = 31, + HB_UNICODE_COMBINING_CLASS_CCC32 = 32, + HB_UNICODE_COMBINING_CLASS_CCC33 = 33, + HB_UNICODE_COMBINING_CLASS_CCC34 = 34, + HB_UNICODE_COMBINING_CLASS_CCC35 = 35, + + /* Syriac */ + HB_UNICODE_COMBINING_CLASS_CCC36 = 36, + + /* Telugu */ + HB_UNICODE_COMBINING_CLASS_CCC84 = 84, + HB_UNICODE_COMBINING_CLASS_CCC91 = 91, + + /* Thai */ + HB_UNICODE_COMBINING_CLASS_CCC103 = 103, + HB_UNICODE_COMBINING_CLASS_CCC107 = 107, + + /* Lao */ + HB_UNICODE_COMBINING_CLASS_CCC118 = 118, + HB_UNICODE_COMBINING_CLASS_CCC122 = 122, + + /* Tibetan */ + HB_UNICODE_COMBINING_CLASS_CCC129 = 129, + HB_UNICODE_COMBINING_CLASS_CCC130 = 130, + HB_UNICODE_COMBINING_CLASS_CCC133 = 132, + + + HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT = 200, + HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW = 202, + HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE = 214, + HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT = 216, + HB_UNICODE_COMBINING_CLASS_BELOW_LEFT = 218, + HB_UNICODE_COMBINING_CLASS_BELOW = 220, + HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT = 222, + HB_UNICODE_COMBINING_CLASS_LEFT = 224, + HB_UNICODE_COMBINING_CLASS_RIGHT = 226, + HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT = 228, + HB_UNICODE_COMBINING_CLASS_ABOVE = 230, + HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT = 232, + HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW = 233, + HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE = 234, + + HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT = 240, + + HB_UNICODE_COMBINING_CLASS_INVALID = 255 +} hb_unicode_combining_class_t; + + +/* + * hb_unicode_funcs_t + */ + +/** + * hb_unicode_funcs_t: + * + * Data type containing a set of virtual methods used for + * accessing various Unicode character properties. + * + * HarfBuzz provides a default function for each of the + * methods in #hb_unicode_funcs_t. Client programs can implement + * their own replacements for the individual Unicode functions, as + * needed, and replace the default by calling the setter for a + * method. + **/ +typedef struct hb_unicode_funcs_t hb_unicode_funcs_t; + + +/* + * just give me the best implementation you've got there. + */ +HB_EXTERN hb_unicode_funcs_t * +hb_unicode_funcs_get_default (void); + + +HB_EXTERN hb_unicode_funcs_t * +hb_unicode_funcs_create (hb_unicode_funcs_t *parent); + +HB_EXTERN hb_unicode_funcs_t * +hb_unicode_funcs_get_empty (void); + +HB_EXTERN hb_unicode_funcs_t * +hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs); + +HB_EXTERN void +hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs); + +HB_EXTERN hb_bool_t +hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs, + hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace); + + +HB_EXTERN void * +hb_unicode_funcs_get_user_data (const hb_unicode_funcs_t *ufuncs, + hb_user_data_key_t *key); + + +HB_EXTERN void +hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs); + +HB_EXTERN hb_bool_t +hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs); + +HB_EXTERN hb_unicode_funcs_t * +hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs); + + +/* + * funcs + */ + +/* typedefs */ + +/** + * hb_unicode_combining_class_func_t: + * @ufuncs: A Unicode-functions structure + * @unicode: The code point to query + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_unicode_funcs_t structure. + * + * This method should retrieve the Canonical Combining Class (ccc) + * property for a specified Unicode code point. + * + * Return value: The #hb_unicode_combining_class_t of @unicode + * + **/ +typedef hb_unicode_combining_class_t (*hb_unicode_combining_class_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode, + void *user_data); + +/** + * hb_unicode_general_category_func_t: + * @ufuncs: A Unicode-functions structure + * @unicode: The code point to query + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_unicode_funcs_t structure. + * + * This method should retrieve the General Category property for + * a specified Unicode code point. + * + * Return value: The #hb_unicode_general_category_t of @unicode + * + **/ +typedef hb_unicode_general_category_t (*hb_unicode_general_category_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode, + void *user_data); + +/** + * hb_unicode_mirroring_func_t: + * @ufuncs: A Unicode-functions structure + * @unicode: The code point to query + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_unicode_funcs_t structure. + * + * This method should retrieve the Bi-Directional Mirroring Glyph + * code point for a specified Unicode code point. + * + * Note: If a code point does not have a specified + * Bi-Directional Mirroring Glyph defined, the method should + * return the original code point. + * + * Return value: The #hb_codepoint_t of the Mirroring Glyph for @unicode + * + **/ +typedef hb_codepoint_t (*hb_unicode_mirroring_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode, + void *user_data); + +/** + * hb_unicode_script_func_t: + * @ufuncs: A Unicode-functions structure + * @unicode: The code point to query + * @user_data: User data pointer passed by the caller + * + * A virtual method for the #hb_unicode_funcs_t structure. + * + * This method should retrieve the Script property for a + * specified Unicode code point. + * + * Return value: The #hb_script_t of @unicode + * + **/ +typedef hb_script_t (*hb_unicode_script_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode, + void *user_data); + +/** + * hb_unicode_compose_func_t: + * @ufuncs: A Unicode-functions structure + * @a: The first code point to compose + * @b: The second code point to compose + * @ab: (out): The composed code point + * @user_data: user data pointer passed by the caller + * + * A virtual method for the #hb_unicode_funcs_t structure. + * + * This method should compose a sequence of two input Unicode code + * points by canonical equivalence, returning the composed code + * point in a #hb_codepoint_t output parameter (if successful). + * The method must return an #hb_bool_t indicating the success + * of the composition. + * + * Return value: `true` is @a,@b composed, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_unicode_compose_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t a, + hb_codepoint_t b, + hb_codepoint_t *ab, + void *user_data); + +/** + * hb_unicode_decompose_func_t: + * @ufuncs: A Unicode-functions structure + * @ab: The code point to decompose + * @a: (out): The first decomposed code point + * @b: (out): The second decomposed code point + * @user_data: user data pointer passed by the caller + * + * A virtual method for the #hb_unicode_funcs_t structure. + * + * This method should decompose an input Unicode code point, + * returning the two decomposed code points in #hb_codepoint_t + * output parameters (if successful). The method must return an + * #hb_bool_t indicating the success of the composition. + * + * Return value: `true` if @ab decomposed, `false` otherwise + * + **/ +typedef hb_bool_t (*hb_unicode_decompose_func_t) (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t ab, + hb_codepoint_t *a, + hb_codepoint_t *b, + void *user_data); + +/* func setters */ + +/** + * hb_unicode_funcs_set_combining_class_func: + * @ufuncs: A Unicode-functions structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_combining_class_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_combining_class_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_unicode_funcs_set_general_category_func: + * @ufuncs: A Unicode-functions structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_general_category_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_general_category_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_unicode_funcs_set_mirroring_func: + * @ufuncs: A Unicode-functions structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_mirroring_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_mirroring_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_unicode_funcs_set_script_func: + * @ufuncs: A Unicode-functions structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_script_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_script_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_unicode_funcs_set_compose_func: + * @ufuncs: A Unicode-functions structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_compose_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_compose_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/** + * hb_unicode_funcs_set_decompose_func: + * @ufuncs: A Unicode-functions structure + * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign + * @user_data: Data to pass to @func + * @destroy: (nullable): The function to call when @user_data is not needed anymore + * + * Sets the implementation function for #hb_unicode_decompose_func_t. + * + * Since: 0.9.2 + **/ +HB_EXTERN void +hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs, + hb_unicode_decompose_func_t func, + void *user_data, hb_destroy_func_t destroy); + +/* accessors */ + +/** + * hb_unicode_combining_class: + * @ufuncs: The Unicode-functions structure + * @unicode: The code point to query + * + * Retrieves the Canonical Combining Class (ccc) property + * of code point @unicode. + * + * Return value: The #hb_unicode_combining_class_t of @unicode + * + * Since: 0.9.2 + **/ +HB_EXTERN hb_unicode_combining_class_t +hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode); + +/** + * hb_unicode_general_category: + * @ufuncs: The Unicode-functions structure + * @unicode: The code point to query + * + * Retrieves the General Category (gc) property + * of code point @unicode. + * + * Return value: The #hb_unicode_general_category_t of @unicode + * + * Since: 0.9.2 + **/ +HB_EXTERN hb_unicode_general_category_t +hb_unicode_general_category (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode); + +/** + * hb_unicode_mirroring: + * @ufuncs: The Unicode-functions structure + * @unicode: The code point to query + * + * Retrieves the Bi-directional Mirroring Glyph code + * point defined for code point @unicode. + * + * Return value: The #hb_codepoint_t of the Mirroring Glyph for @unicode + * + * Since: 0.9.2 + **/ +HB_EXTERN hb_codepoint_t +hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode); + +/** + * hb_unicode_script: + * @ufuncs: The Unicode-functions structure + * @unicode: The code point to query + * + * Retrieves the #hb_script_t script to which code + * point @unicode belongs. + * + * Return value: The #hb_script_t of @unicode + * + * Since: 0.9.2 + **/ +HB_EXTERN hb_script_t +hb_unicode_script (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t unicode); + +HB_EXTERN hb_bool_t +hb_unicode_compose (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t a, + hb_codepoint_t b, + hb_codepoint_t *ab); + +HB_EXTERN hb_bool_t +hb_unicode_decompose (hb_unicode_funcs_t *ufuncs, + hb_codepoint_t ab, + hb_codepoint_t *a, + hb_codepoint_t *b); + +HB_END_DECLS + +#endif /* HB_UNICODE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-version.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-version.h new file mode 100644 index 0000000..8d6ec66 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb-version.h @@ -0,0 +1,95 @@ +/* + * Copyright © 2011 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR) +#error "Include instead." +#endif + +#ifndef HB_VERSION_H +#define HB_VERSION_H + +#include "hb-common.h" + +HB_BEGIN_DECLS + + +/** + * HB_VERSION_MAJOR: + * + * The major component of the library version available at compile-time. + */ +#define HB_VERSION_MAJOR 5 +/** + * HB_VERSION_MINOR: + * + * The minor component of the library version available at compile-time. + */ +#define HB_VERSION_MINOR 3 +/** + * HB_VERSION_MICRO: + * + * The micro component of the library version available at compile-time. + */ +#define HB_VERSION_MICRO 1 + +/** + * HB_VERSION_STRING: + * + * A string literal containing the library version available at compile-time. + */ +#define HB_VERSION_STRING "5.3.1" + +/** + * HB_VERSION_ATLEAST: + * @major: the major component of the version number + * @minor: the minor component of the version number + * @micro: the micro component of the version number + * + * Tests the library version at compile-time against a minimum value, + * as three integer components. + */ +#define HB_VERSION_ATLEAST(major,minor,micro) \ + ((major)*10000+(minor)*100+(micro) <= \ + HB_VERSION_MAJOR*10000+HB_VERSION_MINOR*100+HB_VERSION_MICRO) + + +HB_EXTERN void +hb_version (unsigned int *major, + unsigned int *minor, + unsigned int *micro); + +HB_EXTERN const char * +hb_version_string (void); + +HB_EXTERN hb_bool_t +hb_version_atleast (unsigned int major, + unsigned int minor, + unsigned int micro); + + +HB_END_DECLS + +#endif /* HB_VERSION_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb.h new file mode 100644 index 0000000..360686c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/harfbuzz/hb.h @@ -0,0 +1,50 @@ +/* + * Copyright © 2009 Red Hat, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Red Hat Author(s): Behdad Esfahbod + */ + +#ifndef HB_H +#define HB_H +#define HB_H_IN + +#include "hb-blob.h" +#include "hb-buffer.h" +#include "hb-common.h" +#include "hb-deprecated.h" +#include "hb-draw.h" +#include "hb-face.h" +#include "hb-font.h" +#include "hb-map.h" +#include "hb-set.h" +#include "hb-shape.h" +#include "hb-shape-plan.h" +#include "hb-style.h" +#include "hb-unicode.h" +#include "hb-version.h" + +HB_BEGIN_DECLS +HB_END_DECLS + +#undef HB_H_IN +#endif /* HB_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jconfig.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jconfig.h new file mode 100644 index 0000000..1377e3c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jconfig.h @@ -0,0 +1,25 @@ +#define JPEG_LIB_VERSION 62 +#define LIBJPEG_TURBO_VERSION 4.1.1 +#define LIBJPEG_TURBO_VERSION_NUMBER 4001001 + +/* #undef C_ARITH_CODING_SUPPORTED */ +/* #undef D_ARITH_CODING_SUPPORTED */ +#define MEM_SRCDST_SUPPORTED +#define WITH_SIMD + +#define BITS_IN_JSAMPLE 8 /* use 8 or 12 */ + +#undef RIGHT_SHIFT_IS_UNSIGNED + +/* Define "boolean" as unsigned char, not int, per Windows custom */ +#ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ +typedef unsigned char boolean; +#endif +#define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ + +/* Define "INT32" as int, not long, per Windows custom */ +#if !(defined(_BASETSD_H_) || defined(_BASETSD_H)) /* don't conflict if basetsd.h already read */ +typedef short INT16; +typedef signed int INT32; +#endif +#define XMD_H /* prevent jmorecfg.h from redefining it */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jerror.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jerror.h new file mode 100644 index 0000000..17bccf8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jerror.h @@ -0,0 +1,335 @@ +/* + * jerror.h + * + * This file was part of the Independent JPEG Group's software: + * Copyright (C) 1994-1997, Thomas G. Lane. + * Modified 1997-2009 by Guido Vollbeding. + * libjpeg-turbo Modifications: + * Copyright (C) 2014, 2017, 2021-2022, D. R. Commander. + * For conditions of distribution and use, see the accompanying README.ijg + * file. + * + * This file defines the error and message codes for the JPEG library. + * Edit this file to add new codes, or to translate the message strings to + * some other language. + * A set of error-reporting macros are defined too. Some applications using + * the JPEG library may wish to include this file to get the error codes + * and/or the macros. + */ + +/* + * To define the enum list of message codes, include this file without + * defining macro JMESSAGE. To create a message string table, include it + * again with a suitable JMESSAGE definition (see jerror.c for an example). + */ +#ifndef JMESSAGE +#ifndef JERROR_H +/* First time through, define the enum list */ +#define JMAKE_ENUM_LIST +#else +/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */ +#define JMESSAGE(code,string) +#endif /* JERROR_H */ +#endif /* JMESSAGE */ + +#ifdef JMAKE_ENUM_LIST + +typedef enum { + +#define JMESSAGE(code,string) code , + +#endif /* JMAKE_ENUM_LIST */ + +JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */ + +/* For maintenance convenience, list is alphabetical by message code name */ +#if JPEG_LIB_VERSION < 70 +JMESSAGE(JERR_ARITH_NOTIMPL, "Sorry, arithmetic coding is not implemented") +#endif +JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix") +JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix") +JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode") +JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS") +#if JPEG_LIB_VERSION >= 70 +JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request") +#endif +JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range") +JMESSAGE(JERR_BAD_DCTSIZE, "IDCT output block size %d not supported") +#if JPEG_LIB_VERSION >= 70 +JMESSAGE(JERR_BAD_DROP_SAMPLING, + "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c") +#endif +JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition") +JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace") +JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace") +JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length") +JMESSAGE(JERR_BAD_LIB_VERSION, + "Wrong JPEG library version: library is %d, caller expects %d") +JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan") +JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d") +JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d") +JMESSAGE(JERR_BAD_PROGRESSION, + "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d") +JMESSAGE(JERR_BAD_PROG_SCRIPT, + "Invalid progressive parameters at scan script entry %d") +JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors") +JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d") +JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d") +JMESSAGE(JERR_BAD_STRUCT_SIZE, + "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u") +JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access") +JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small") +JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here") +JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet") +JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d") +JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request") +JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d") +JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x") +JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d") +JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d") +JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)") +JMESSAGE(JERR_EMS_READ, "Read from EMS failed") +JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed") +JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan") +JMESSAGE(JERR_FILE_READ, "Input file read error") +JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?") +JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet") +JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow") +JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry") +JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels") +JMESSAGE(JERR_INPUT_EMPTY, "Empty input file") +JMESSAGE(JERR_INPUT_EOF, "Premature end of input file") +JMESSAGE(JERR_MISMATCHED_QUANT_TABLE, + "Cannot transcode due to multiple use of quantization table %d") +JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data") +JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change") +JMESSAGE(JERR_NOTIMPL, "Requested features are incompatible") +JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time") +#if JPEG_LIB_VERSION >= 70 +JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined") +#endif +JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported") +JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined") +JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image") +JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined") +JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x") +JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)") +JMESSAGE(JERR_QUANT_COMPONENTS, + "Cannot quantize more than %d color components") +JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors") +JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors") +JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers") +JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker") +JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x") +JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers") +JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF") +JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s") +JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file") +JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file") +JMESSAGE(JERR_TFILE_WRITE, + "Write failed on temporary file --- out of disk space?") +JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines") +JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x") +JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up") +JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation") +JMESSAGE(JERR_XMS_READ, "Read from XMS failed") +JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed") +JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT_SHORT) +JMESSAGE(JMSG_VERSION, JVERSION) +JMESSAGE(JTRC_16BIT_TABLES, + "Caution: quantization tables are too coarse for baseline JPEG") +JMESSAGE(JTRC_ADOBE, + "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d") +JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u") +JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u") +JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x") +JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x") +JMESSAGE(JTRC_DQT, "Define Quantization Table %d precision %d") +JMESSAGE(JTRC_DRI, "Define Restart Interval %u") +JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u") +JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u") +JMESSAGE(JTRC_EOI, "End Of Image") +JMESSAGE(JTRC_HUFFBITS, " %3d %3d %3d %3d %3d %3d %3d %3d") +JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d %d") +JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE, + "Warning: thumbnail image size does not match data length %u") +JMESSAGE(JTRC_JFIF_EXTENSION, "JFIF extension marker: type 0x%02x, length %u") +JMESSAGE(JTRC_JFIF_THUMBNAIL, " with %d x %d thumbnail image") +JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u") +JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x") +JMESSAGE(JTRC_QUANTVALS, " %4u %4u %4u %4u %4u %4u %4u %4u") +JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors") +JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors") +JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization") +JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d") +JMESSAGE(JTRC_RST, "RST%d") +JMESSAGE(JTRC_SMOOTH_NOTIMPL, + "Smoothing not supported with nonstandard sampling ratios") +JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d") +JMESSAGE(JTRC_SOF_COMPONENT, " Component %d: %dhx%dv q=%d") +JMESSAGE(JTRC_SOI, "Start of Image") +JMESSAGE(JTRC_SOS, "Start Of Scan: %d components") +JMESSAGE(JTRC_SOS_COMPONENT, " Component %d: dc=%d ac=%d") +JMESSAGE(JTRC_SOS_PARAMS, " Ss=%d, Se=%d, Ah=%d, Al=%d") +JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s") +JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s") +JMESSAGE(JTRC_THUMB_JPEG, + "JFIF extension marker: JPEG-compressed thumbnail image, length %u") +JMESSAGE(JTRC_THUMB_PALETTE, + "JFIF extension marker: palette thumbnail image, length %u") +JMESSAGE(JTRC_THUMB_RGB, + "JFIF extension marker: RGB thumbnail image, length %u") +JMESSAGE(JTRC_UNKNOWN_IDS, + "Unrecognized component IDs %d %d %d, assuming YCbCr") +JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u") +JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u") +JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d") +#if JPEG_LIB_VERSION >= 70 +JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code") +#endif +JMESSAGE(JWRN_BOGUS_PROGRESSION, + "Inconsistent progression sequence for component %d coefficient %d") +JMESSAGE(JWRN_EXTRANEOUS_DATA, + "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x") +JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment") +JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code") +JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d") +JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file") +JMESSAGE(JWRN_MUST_RESYNC, + "Corrupt JPEG data: found marker 0x%02x instead of RST%d") +JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG") +JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines") +#if JPEG_LIB_VERSION < 70 +JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request") +#if defined(C_ARITH_CODING_SUPPORTED) || defined(D_ARITH_CODING_SUPPORTED) +JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined") +JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code") +#endif +#endif +JMESSAGE(JERR_BAD_PARAM, "Bogus parameter") +JMESSAGE(JERR_BAD_PARAM_VALUE, "Bogus parameter value") + +JMESSAGE(JERR_UNSUPPORTED_SUSPEND, "I/O suspension not supported in scan optimization") +JMESSAGE(JWRN_BOGUS_ICC, "Corrupt JPEG data: bad ICC marker") +#if JPEG_LIB_VERSION < 70 +JMESSAGE(JERR_BAD_DROP_SAMPLING, + "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c") +#endif + +#ifdef JMAKE_ENUM_LIST + + JMSG_LASTMSGCODE +} J_MESSAGE_CODE; + +#undef JMAKE_ENUM_LIST +#endif /* JMAKE_ENUM_LIST */ + +/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */ +#undef JMESSAGE + + +#ifndef JERROR_H +#define JERROR_H + +/* Macros to simplify using the error and trace message stuff */ +/* The first parameter is either type of cinfo pointer */ + +/* Fatal errors (print message and exit) */ +#define ERREXIT(cinfo,code) \ + ((cinfo)->err->msg_code = (code), \ + (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) +#define ERREXIT1(cinfo,code,p1) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) +#define ERREXIT2(cinfo,code,p1,p2) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) +#define ERREXIT3(cinfo,code,p1,p2,p3) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (cinfo)->err->msg_parm.i[2] = (p3), \ + (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) +#define ERREXIT4(cinfo,code,p1,p2,p3,p4) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (cinfo)->err->msg_parm.i[2] = (p3), \ + (cinfo)->err->msg_parm.i[3] = (p4), \ + (*(cinfo)->err->error_exit) ((j_common_ptr)(cinfo))) +#define ERREXIT6(cinfo, code, p1, p2, p3, p4, p5, p6) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (cinfo)->err->msg_parm.i[2] = (p3), \ + (cinfo)->err->msg_parm.i[3] = (p4), \ + (cinfo)->err->msg_parm.i[4] = (p5), \ + (cinfo)->err->msg_parm.i[5] = (p6), \ + (*(cinfo)->err->error_exit) ((j_common_ptr)(cinfo))) +#define ERREXITS(cinfo, code, str) \ + ((cinfo)->err->msg_code = (code), \ + strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ + (cinfo)->err->msg_parm.s[JMSG_STR_PARM_MAX - 1] = '\0', \ + (*(cinfo)->err->error_exit) ((j_common_ptr)(cinfo))) + +#define MAKESTMT(stuff) do { stuff } while (0) + +/* Nonfatal errors (we can keep going, but the data is probably corrupt) */ +#define WARNMS(cinfo,code) \ + ((cinfo)->err->msg_code = (code), \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) +#define WARNMS1(cinfo,code,p1) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) +#define WARNMS2(cinfo,code,p1,p2) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) + +/* Informational/debugging messages */ +#define TRACEMS(cinfo,lvl,code) \ + ((cinfo)->err->msg_code = (code), \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) +#define TRACEMS1(cinfo,lvl,code,p1) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) +#define TRACEMS2(cinfo,lvl,code,p1,p2) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) +#define TRACEMS3(cinfo,lvl,code,p1,p2,p3) \ + MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ + _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \ + (cinfo)->err->msg_code = (code); \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) +#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4) \ + MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ + _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ + (cinfo)->err->msg_code = (code); \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) +#define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5) \ + MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ + _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ + _mp[4] = (p5); \ + (cinfo)->err->msg_code = (code); \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) +#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8) \ + MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ + _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ + _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \ + (cinfo)->err->msg_code = (code); \ + (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) +#define TRACEMSS(cinfo,lvl,code,str) \ + ((cinfo)->err->msg_code = (code), \ + strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ + (cinfo)->err->msg_parm.s[JMSG_STR_PARM_MAX - 1] = '\0', \ + (*(cinfo)->err->emit_message) ((j_common_ptr)(cinfo), (lvl))) + +#endif /* JERROR_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jmorecfg.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jmorecfg.h new file mode 100644 index 0000000..f5533ae --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jmorecfg.h @@ -0,0 +1,386 @@ +/* + * jmorecfg.h + * + * This file was part of the Independent JPEG Group's software: + * Copyright (C) 1991-1997, Thomas G. Lane. + * Modified 1997-2009 by Guido Vollbeding. + * libjpeg-turbo Modifications: + * Copyright (C) 2009, 2011, 2014-2015, 2018, 2020, D. R. Commander. + * For conditions of distribution and use, see the accompanying README.ijg + * file. + * + * This file contains additional configuration options that customize the + * JPEG software for special applications or support machine-dependent + * optimizations. Most users will not need to touch this file. + */ + +/* prevents conflicts */ +#if defined(__MINGW32__) +#include /* typedefs INT16 and INT32 */ + +#define HAVE_BOOLEAN +#endif + +/* + * Maximum number of components (color channels) allowed in JPEG image. + * To meet the letter of Rec. ITU-T T.81 | ISO/IEC 10918-1, set this to 255. + * However, darn few applications need more than 4 channels (maybe 5 for CMYK + + * alpha mask). We recommend 10 as a reasonable compromise; use 4 if you are + * really short on memory. (Each allowed component costs a hundred or so + * bytes of storage, whether actually used in an image or not.) + */ + +#define MAX_COMPONENTS 10 /* maximum number of image components */ + + +/* + * Basic data types. + * You may need to change these if you have a machine with unusual data + * type sizes; for example, "char" not 8 bits, "short" not 16 bits, + * or "long" not 32 bits. We don't care whether "int" is 16 or 32 bits, + * but it had better be at least 16. + */ + +/* Representation of a single sample (pixel element value). + * We frequently allocate large arrays of these, so it's important to keep + * them small. But if you have memory to burn and access to char or short + * arrays is very slow on your hardware, you might want to change these. + */ + +#if BITS_IN_JSAMPLE == 8 +/* JSAMPLE should be the smallest type that will hold the values 0..255. + */ + +typedef unsigned char JSAMPLE; +#define GETJSAMPLE(value) ((int)(value)) + +#define MAXJSAMPLE 255 +#define CENTERJSAMPLE 128 + +#endif /* BITS_IN_JSAMPLE == 8 */ + + +#if BITS_IN_JSAMPLE == 12 +/* JSAMPLE should be the smallest type that will hold the values 0..4095. + * On nearly all machines "short" will do nicely. + */ + +typedef short JSAMPLE; +#define GETJSAMPLE(value) ((int)(value)) + +#define MAXJSAMPLE 4095 +#define CENTERJSAMPLE 2048 + +#endif /* BITS_IN_JSAMPLE == 12 */ + + +/* Representation of a DCT frequency coefficient. + * This should be a signed value of at least 16 bits; "short" is usually OK. + * Again, we allocate large arrays of these, but you can change to int + * if you have memory to burn and "short" is really slow. + */ + +typedef short JCOEF; + + +/* Compressed datastreams are represented as arrays of JOCTET. + * These must be EXACTLY 8 bits wide, at least once they are written to + * external storage. Note that when using the stdio data source/destination + * managers, this is also the data type passed to fread/fwrite. + */ + +typedef unsigned char JOCTET; +#define GETJOCTET(value) (value) + + +#ifndef _BASETSD_H_ /* basestd.h from mingw-w64 defines UINT8, UINT16, INT16, INT32 */ +/* These typedefs are used for various table entries and so forth. + * They must be at least as wide as specified; but making them too big + * won't cost a huge amount of memory, so we don't provide special + * extraction code like we did for JSAMPLE. (In other words, these + * typedefs live at a different point on the speed/space tradeoff curve.) + */ + +/* UINT8 must hold at least the values 0..255. */ + +typedef unsigned char UINT8; + +/* UINT16 must hold at least the values 0..65535. */ + +typedef unsigned short UINT16; + +/* INT16 must hold at least the values -32768..32767. */ + +#ifndef XMD_H /* X11/xmd.h correctly defines INT16 */ +typedef short INT16; +#endif + +/* INT32 must hold at least signed 32-bit values. + * + * NOTE: The INT32 typedef dates back to libjpeg v5 (1994.) Integers were + * sometimes 16-bit back then (MS-DOS), which is why INT32 is typedef'd to + * long. It also wasn't common (or at least as common) in 1994 for INT32 to be + * defined by platform headers. Since then, however, INT32 is defined in + * several other common places: + * + * Xmd.h (X11 header) typedefs INT32 to int on 64-bit platforms and long on + * 32-bit platforms (i.e always a 32-bit signed type.) + * + * basetsd.h (Win32 header) typedefs INT32 to int (always a 32-bit signed type + * on modern platforms.) + * + * qglobal.h (Qt header) typedefs INT32 to int (always a 32-bit signed type on + * modern platforms.) + * + * This is a recipe for conflict, since "long" and "int" aren't always + * compatible types. Since the definition of INT32 has technically been part + * of the libjpeg API for more than 20 years, we can't remove it, but we do not + * use it internally any longer. We instead define a separate type (JLONG) + * for internal use, which ensures that internal behavior will always be the + * same regardless of any external headers that may be included. + */ + +#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */ +#ifndef QGLOBAL_H /* Qt defines it in qglobal.h */ +typedef long INT32; +#endif +#endif +#endif + +/* Datatype used for image dimensions. The JPEG standard only supports + * images up to 64K*64K due to 16-bit fields in SOF markers. Therefore + * "unsigned int" is sufficient on all machines. However, if you need to + * handle larger images and you don't mind deviating from the spec, you + * can change this datatype. (Note that changing this datatype will + * potentially require modifying the SIMD code. The x86-64 SIMD extensions, + * in particular, assume a 32-bit JDIMENSION.) + */ + +typedef unsigned int JDIMENSION; + +#define JPEG_MAX_DIMENSION 65500L /* a tad under 64K to prevent overflows */ + + +/* These macros are used in all function definitions and extern declarations. + * You could modify them if you need to change function linkage conventions; + * in particular, you'll need to do that to make the library a Windows DLL. + * Another application is to make all functions global for use with debuggers + * or code profilers that require it. + */ + +/* a function called through method pointers: */ +#define METHODDEF(type) static type +/* a function used only in its module: */ +#define LOCAL(type) static type +/* a function referenced thru EXTERNs: */ +#define GLOBAL(type) type +/* a reference to a GLOBAL function: */ +#define EXTERN(type) extern type + + +/* Originally, this macro was used as a way of defining function prototypes + * for both modern compilers as well as older compilers that did not support + * prototype parameters. libjpeg-turbo has never supported these older, + * non-ANSI compilers, but the macro is still included because there is some + * software out there that uses it. + */ + +#define JMETHOD(type, methodname, arglist) type (*methodname) arglist + + +/* libjpeg-turbo no longer supports platforms that have far symbols (MS-DOS), + * but again, some software relies on this macro. + */ + +#undef FAR +#define FAR + + +/* + * On a few systems, type boolean and/or its values FALSE, TRUE may appear + * in standard header files. Or you may have conflicts with application- + * specific header files that you want to include together with these files. + * Defining HAVE_BOOLEAN before including jpeglib.h should make it work. + */ + +#ifndef HAVE_BOOLEAN +typedef int boolean; +#endif +#ifndef FALSE /* in case these macros already exist */ +#define FALSE 0 /* values of boolean */ +#endif +#ifndef TRUE +#define TRUE 1 +#endif + + +/* + * The remaining options affect code selection within the JPEG library, + * but they don't need to be visible to most applications using the library. + * To minimize application namespace pollution, the symbols won't be + * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined. + */ + +#ifdef JPEG_INTERNALS +#define JPEG_INTERNAL_OPTIONS +#endif + +#ifdef JPEG_INTERNAL_OPTIONS + + +/* + * These defines indicate whether to include various optional functions. + * Undefining some of these symbols will produce a smaller but less capable + * library. Note that you can leave certain source files out of the + * compilation/linking process if you've #undef'd the corresponding symbols. + * (You may HAVE to do that if your compiler doesn't like null source files.) + */ + +/* Capability options common to encoder and decoder: */ + +#define DCT_ISLOW_SUPPORTED /* accurate integer method */ +#define DCT_IFAST_SUPPORTED /* less accurate int method [legacy feature] */ +#define DCT_FLOAT_SUPPORTED /* floating-point method [legacy feature] */ + +/* Encoder capability options: */ + +#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ +#define C_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/ +#define ENTROPY_OPT_SUPPORTED /* Optimization of entropy coding parms? */ +/* Note: if you selected 12-bit data precision, it is dangerous to turn off + * ENTROPY_OPT_SUPPORTED. The standard Huffman tables are only good for 8-bit + * precision, so jchuff.c normally uses entropy optimization to compute + * usable tables for higher precision. If you don't want to do optimization, + * you'll have to supply different default Huffman tables. + * The exact same statements apply for progressive JPEG: the default tables + * don't work for progressive mode. (This may get fixed, however.) + */ +#define INPUT_SMOOTHING_SUPPORTED /* Input image smoothing option? */ + +/* Decoder capability options: */ + +#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ +#define D_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/ +#define SAVE_MARKERS_SUPPORTED /* jpeg_save_markers() needed? */ +#define BLOCK_SMOOTHING_SUPPORTED /* Block smoothing? (Progressive only) */ +#define IDCT_SCALING_SUPPORTED /* Output rescaling via IDCT? */ +#undef UPSAMPLE_SCALING_SUPPORTED /* Output rescaling at upsample stage? */ +#define UPSAMPLE_MERGING_SUPPORTED /* Fast path for sloppy upsampling? */ +#define QUANT_1PASS_SUPPORTED /* 1-pass color quantization? */ +#define QUANT_2PASS_SUPPORTED /* 2-pass color quantization? */ + +/* more capability options later, no doubt */ + + +/* + * The RGB_RED, RGB_GREEN, RGB_BLUE, and RGB_PIXELSIZE macros are a vestigial + * feature of libjpeg. The idea was that, if an application developer needed + * to compress from/decompress to a BGR/BGRX/RGBX/XBGR/XRGB buffer, they could + * change these macros, rebuild libjpeg, and link their application statically + * with it. In reality, few people ever did this, because there were some + * severe restrictions involved (cjpeg and djpeg no longer worked properly, + * compressing/decompressing RGB JPEGs no longer worked properly, and the color + * quantizer wouldn't work with pixel sizes other than 3.) Furthermore, since + * all of the O/S-supplied versions of libjpeg were built with the default + * values of RGB_RED, RGB_GREEN, RGB_BLUE, and RGB_PIXELSIZE, many applications + * have come to regard these values as immutable. + * + * The libjpeg-turbo colorspace extensions provide a much cleaner way of + * compressing from/decompressing to buffers with arbitrary component orders + * and pixel sizes. Thus, we do not support changing the values of RGB_RED, + * RGB_GREEN, RGB_BLUE, or RGB_PIXELSIZE. In addition to the restrictions + * listed above, changing these values will also break the SIMD extensions and + * the regression tests. + */ + +#define RGB_RED 0 /* Offset of Red in an RGB scanline element */ +#define RGB_GREEN 1 /* Offset of Green */ +#define RGB_BLUE 2 /* Offset of Blue */ +#define RGB_PIXELSIZE 3 /* JSAMPLEs per RGB scanline element */ + +#define JPEG_NUMCS 17 + +#define EXT_RGB_RED 0 +#define EXT_RGB_GREEN 1 +#define EXT_RGB_BLUE 2 +#define EXT_RGB_PIXELSIZE 3 + +#define EXT_RGBX_RED 0 +#define EXT_RGBX_GREEN 1 +#define EXT_RGBX_BLUE 2 +#define EXT_RGBX_PIXELSIZE 4 + +#define EXT_BGR_RED 2 +#define EXT_BGR_GREEN 1 +#define EXT_BGR_BLUE 0 +#define EXT_BGR_PIXELSIZE 3 + +#define EXT_BGRX_RED 2 +#define EXT_BGRX_GREEN 1 +#define EXT_BGRX_BLUE 0 +#define EXT_BGRX_PIXELSIZE 4 + +#define EXT_XBGR_RED 3 +#define EXT_XBGR_GREEN 2 +#define EXT_XBGR_BLUE 1 +#define EXT_XBGR_PIXELSIZE 4 + +#define EXT_XRGB_RED 1 +#define EXT_XRGB_GREEN 2 +#define EXT_XRGB_BLUE 3 +#define EXT_XRGB_PIXELSIZE 4 + +static const int rgb_red[JPEG_NUMCS] = { + -1, -1, RGB_RED, -1, -1, -1, EXT_RGB_RED, EXT_RGBX_RED, + EXT_BGR_RED, EXT_BGRX_RED, EXT_XBGR_RED, EXT_XRGB_RED, + EXT_RGBX_RED, EXT_BGRX_RED, EXT_XBGR_RED, EXT_XRGB_RED, + -1 +}; + +static const int rgb_green[JPEG_NUMCS] = { + -1, -1, RGB_GREEN, -1, -1, -1, EXT_RGB_GREEN, EXT_RGBX_GREEN, + EXT_BGR_GREEN, EXT_BGRX_GREEN, EXT_XBGR_GREEN, EXT_XRGB_GREEN, + EXT_RGBX_GREEN, EXT_BGRX_GREEN, EXT_XBGR_GREEN, EXT_XRGB_GREEN, + -1 +}; + +static const int rgb_blue[JPEG_NUMCS] = { + -1, -1, RGB_BLUE, -1, -1, -1, EXT_RGB_BLUE, EXT_RGBX_BLUE, + EXT_BGR_BLUE, EXT_BGRX_BLUE, EXT_XBGR_BLUE, EXT_XRGB_BLUE, + EXT_RGBX_BLUE, EXT_BGRX_BLUE, EXT_XBGR_BLUE, EXT_XRGB_BLUE, + -1 +}; + +static const int rgb_pixelsize[JPEG_NUMCS] = { + -1, -1, RGB_PIXELSIZE, -1, -1, -1, EXT_RGB_PIXELSIZE, EXT_RGBX_PIXELSIZE, + EXT_BGR_PIXELSIZE, EXT_BGRX_PIXELSIZE, EXT_XBGR_PIXELSIZE, EXT_XRGB_PIXELSIZE, + EXT_RGBX_PIXELSIZE, EXT_BGRX_PIXELSIZE, EXT_XBGR_PIXELSIZE, EXT_XRGB_PIXELSIZE, + -1 +}; + +/* Definitions for speed-related optimizations. */ + +/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying + * two 16-bit shorts is faster than multiplying two ints. Define MULTIPLIER + * as short on such a machine. MULTIPLIER must be at least 16 bits wide. + */ + +#ifndef MULTIPLIER +#ifndef WITH_SIMD +#define MULTIPLIER int /* type for fastest integer multiply */ +#else +#define MULTIPLIER short /* prefer 16-bit with SIMD for parellelism */ +#endif +#endif + + +/* FAST_FLOAT should be either float or double, whichever is done faster + * by your compiler. (Note that this type is only used in the floating point + * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.) + */ + +#ifndef FAST_FLOAT +#define FAST_FLOAT float +#endif + +#endif /* JPEG_INTERNAL_OPTIONS */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jpeglib.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jpeglib.h new file mode 100644 index 0000000..16260d4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/jpeglib.h @@ -0,0 +1,1210 @@ +/* + * jpeglib.h + * + * This file was part of the Independent JPEG Group's software: + * Copyright (C) 1991-1998, Thomas G. Lane. + * Modified 2002-2009 by Guido Vollbeding. + * libjpeg-turbo Modifications: + * Copyright (C) 2009-2011, 2013-2014, 2016-2017, 2020, D. R. Commander. + * Copyright (C) 2015, Google, Inc. + * mozjpeg Modifications: + * Copyright (C) 2014, Mozilla Corporation. + * For conditions of distribution and use, see the accompanying README.ijg + * file. + * + * This file defines the application interface for the JPEG library. + * Most applications using the library need only include this file, + * and perhaps jerror.h if they want to know the exact error codes. + */ + +#ifndef JPEGLIB_H +#define JPEGLIB_H + +/* + * First we include the configuration files that record how this + * installation of the JPEG library is set up. jconfig.h can be + * generated automatically for many systems. jmorecfg.h contains + * manual configuration options that most people need not worry about. + */ + +#ifndef JCONFIG_INCLUDED /* in case jinclude.h already did */ +#include "jconfig.h" /* widely used configuration options */ +#endif +#include "jmorecfg.h" /* seldom changed options */ + + +#ifdef __cplusplus +#ifndef DONT_USE_EXTERN_C +extern "C" { +#endif +#endif + + +/* Various constants determining the sizes of things. + * All of these are specified by the JPEG standard, so don't change them + * if you want to be compatible. + */ + +#define DCTSIZE 8 /* The basic DCT block is 8x8 samples */ +#define DCTSIZE2 64 /* DCTSIZE squared; # of elements in a block */ +#define NUM_QUANT_TBLS 4 /* Quantization tables are numbered 0..3 */ +#define NUM_HUFF_TBLS 4 /* Huffman tables are numbered 0..3 */ +#define NUM_ARITH_TBLS 16 /* Arith-coding tables are numbered 0..15 */ +#define MAX_COMPS_IN_SCAN 4 /* JPEG limit on # of components in one scan */ +#define MAX_SAMP_FACTOR 4 /* JPEG limit on sampling factors */ +/* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard; + * the PostScript DCT filter can emit files with many more than 10 blocks/MCU. + * If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU + * to handle it. We even let you do this from the jconfig.h file. However, + * we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe + * sometimes emits noncompliant files doesn't mean you should too. + */ +#define C_MAX_BLOCKS_IN_MCU 10 /* compressor's limit on blocks per MCU */ +#ifndef D_MAX_BLOCKS_IN_MCU +#define D_MAX_BLOCKS_IN_MCU 10 /* decompressor's limit on blocks per MCU */ +#endif + + +/* Data structures for images (arrays of samples and of DCT coefficients). + */ + +typedef JSAMPLE *JSAMPROW; /* ptr to one image row of pixel samples. */ +typedef JSAMPROW *JSAMPARRAY; /* ptr to some rows (a 2-D sample array) */ +typedef JSAMPARRAY *JSAMPIMAGE; /* a 3-D sample array: top index is color */ + +typedef JCOEF JBLOCK[DCTSIZE2]; /* one block of coefficients */ +typedef JBLOCK *JBLOCKROW; /* pointer to one row of coefficient blocks */ +typedef JBLOCKROW *JBLOCKARRAY; /* a 2-D array of coefficient blocks */ +typedef JBLOCKARRAY *JBLOCKIMAGE; /* a 3-D array of coefficient blocks */ + +typedef JCOEF *JCOEFPTR; /* useful in a couple of places */ + + +/* Types for JPEG compression parameters and working tables. */ + + +/* DCT coefficient quantization tables. */ + +typedef struct { + /* This array gives the coefficient quantizers in natural array order + * (not the zigzag order in which they are stored in a JPEG DQT marker). + * CAUTION: IJG versions prior to v6a kept this array in zigzag order. + */ + UINT16 quantval[DCTSIZE2]; /* quantization step for each coefficient */ + /* This field is used only during compression. It's initialized FALSE when + * the table is created, and set TRUE when it's been output to the file. + * You could suppress output of a table by setting this to TRUE. + * (See jpeg_suppress_tables for an example.) + */ + boolean sent_table; /* TRUE when table has been output */ +} JQUANT_TBL; + + +/* Huffman coding tables. */ + +typedef struct { + /* These two fields directly represent the contents of a JPEG DHT marker */ + UINT8 bits[17]; /* bits[k] = # of symbols with codes of */ + /* length k bits; bits[0] is unused */ + UINT8 huffval[256]; /* The symbols, in order of incr code length */ + /* This field is used only during compression. It's initialized FALSE when + * the table is created, and set TRUE when it's been output to the file. + * You could suppress output of a table by setting this to TRUE. + * (See jpeg_suppress_tables for an example.) + */ + boolean sent_table; /* TRUE when table has been output */ +} JHUFF_TBL; + + +/* Basic info about one component (color channel). */ + +typedef struct { + /* These values are fixed over the whole image. */ + /* For compression, they must be supplied by parameter setup; */ + /* for decompression, they are read from the SOF marker. */ + int component_id; /* identifier for this component (0..255) */ + int component_index; /* its index in SOF or cinfo->comp_info[] */ + int h_samp_factor; /* horizontal sampling factor (1..4) */ + int v_samp_factor; /* vertical sampling factor (1..4) */ + int quant_tbl_no; /* quantization table selector (0..3) */ + /* These values may vary between scans. */ + /* For compression, they must be supplied by parameter setup; */ + /* for decompression, they are read from the SOS marker. */ + /* The decompressor output side may not use these variables. */ + int dc_tbl_no; /* DC entropy table selector (0..3) */ + int ac_tbl_no; /* AC entropy table selector (0..3) */ + + /* Remaining fields should be treated as private by applications. */ + + /* These values are computed during compression or decompression startup: */ + /* Component's size in DCT blocks. + * Any dummy blocks added to complete an MCU are not counted; therefore + * these values do not depend on whether a scan is interleaved or not. + */ + JDIMENSION width_in_blocks; + JDIMENSION height_in_blocks; + /* Size of a DCT block in samples. Always DCTSIZE for compression. + * For decompression this is the size of the output from one DCT block, + * reflecting any scaling we choose to apply during the IDCT step. + * Values from 1 to 16 are supported. + * Note that different components may receive different IDCT scalings. + */ +#if JPEG_LIB_VERSION >= 70 + int DCT_h_scaled_size; + int DCT_v_scaled_size; +#else + int DCT_scaled_size; +#endif + /* The downsampled dimensions are the component's actual, unpadded number + * of samples at the main buffer (preprocessing/compression interface), thus + * downsampled_width = ceil(image_width * Hi/Hmax) + * and similarly for height. For decompression, IDCT scaling is included, so + * downsampled_width = ceil(image_width * Hi/Hmax * DCT_[h_]scaled_size/DCTSIZE) + */ + JDIMENSION downsampled_width; /* actual width in samples */ + JDIMENSION downsampled_height; /* actual height in samples */ + /* This flag is used only for decompression. In cases where some of the + * components will be ignored (eg grayscale output from YCbCr image), + * we can skip most computations for the unused components. + */ + boolean component_needed; /* do we need the value of this component? */ + + /* These values are computed before starting a scan of the component. */ + /* The decompressor output side may not use these variables. */ + int MCU_width; /* number of blocks per MCU, horizontally */ + int MCU_height; /* number of blocks per MCU, vertically */ + int MCU_blocks; /* MCU_width * MCU_height */ + int MCU_sample_width; /* MCU width in samples, MCU_width*DCT_[h_]scaled_size */ + int last_col_width; /* # of non-dummy blocks across in last MCU */ + int last_row_height; /* # of non-dummy blocks down in last MCU */ + + /* Saved quantization table for component; NULL if none yet saved. + * See jdinput.c comments about the need for this information. + * This field is currently used only for decompression. + */ + JQUANT_TBL *quant_table; + + /* Private per-component storage for DCT or IDCT subsystem. */ + void *dct_table; +} jpeg_component_info; + + +/* The script for encoding a multiple-scan file is an array of these: */ + +typedef struct { + int comps_in_scan; /* number of components encoded in this scan */ + int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */ + int Ss, Se; /* progressive JPEG spectral selection parms */ + int Ah, Al; /* progressive JPEG successive approx. parms */ +} jpeg_scan_info; + +/* The decompressor can save APPn and COM markers in a list of these: */ + +typedef struct jpeg_marker_struct *jpeg_saved_marker_ptr; + +struct jpeg_marker_struct { + jpeg_saved_marker_ptr next; /* next in list, or NULL */ + UINT8 marker; /* marker code: JPEG_COM, or JPEG_APP0+n */ + unsigned int original_length; /* # bytes of data in the file */ + unsigned int data_length; /* # bytes of data saved at data[] */ + JOCTET *data; /* the data contained in the marker */ + /* the marker length word is not counted in data_length or original_length */ +}; + +/* Known color spaces. */ + +#define JCS_EXTENSIONS 1 +#define JCS_ALPHA_EXTENSIONS 1 + +typedef enum { + JCS_UNKNOWN, /* error/unspecified */ + JCS_GRAYSCALE, /* monochrome */ + JCS_RGB, /* red/green/blue as specified by the RGB_RED, + RGB_GREEN, RGB_BLUE, and RGB_PIXELSIZE macros */ + JCS_YCbCr, /* Y/Cb/Cr (also known as YUV) */ + JCS_CMYK, /* C/M/Y/K */ + JCS_YCCK, /* Y/Cb/Cr/K */ + JCS_EXT_RGB, /* red/green/blue */ + JCS_EXT_RGBX, /* red/green/blue/x */ + JCS_EXT_BGR, /* blue/green/red */ + JCS_EXT_BGRX, /* blue/green/red/x */ + JCS_EXT_XBGR, /* x/blue/green/red */ + JCS_EXT_XRGB, /* x/red/green/blue */ + /* When out_color_space it set to JCS_EXT_RGBX, JCS_EXT_BGRX, JCS_EXT_XBGR, + or JCS_EXT_XRGB during decompression, the X byte is undefined, and in + order to ensure the best performance, libjpeg-turbo can set that byte to + whatever value it wishes. Use the following colorspace constants to + ensure that the X byte is set to 0xFF, so that it can be interpreted as an + opaque alpha channel. */ + JCS_EXT_RGBA, /* red/green/blue/alpha */ + JCS_EXT_BGRA, /* blue/green/red/alpha */ + JCS_EXT_ABGR, /* alpha/blue/green/red */ + JCS_EXT_ARGB, /* alpha/red/green/blue */ + JCS_RGB565 /* 5-bit red/6-bit green/5-bit blue */ +} J_COLOR_SPACE; + +/* DCT/IDCT algorithm options. */ + +typedef enum { + JDCT_ISLOW, /* accurate integer method */ + JDCT_IFAST, /* less accurate integer method [legacy feature] */ + JDCT_FLOAT /* floating-point method [legacy feature] */ +} J_DCT_METHOD; + +#ifndef JDCT_DEFAULT /* may be overridden in jconfig.h */ +#define JDCT_DEFAULT JDCT_ISLOW +#endif +#ifndef JDCT_FASTEST /* may be overridden in jconfig.h */ +#define JDCT_FASTEST JDCT_IFAST +#endif + +/* Dithering options for decompression. */ + +typedef enum { + JDITHER_NONE, /* no dithering */ + JDITHER_ORDERED, /* simple ordered dither */ + JDITHER_FS /* Floyd-Steinberg error diffusion dither */ +} J_DITHER_MODE; + + +/* These 32-bit GUIDs and the corresponding jpeg_*_get_*_param()/ + * jpeg_*_set_*_param() functions allow for extending the libjpeg API without + * breaking backward ABI compatibility. The actual parameters are stored in + * the opaque jpeg_comp_master and jpeg_decomp_master structs. + */ + +/* Boolean extension parameters */ + +typedef enum { + JBOOLEAN_OPTIMIZE_SCANS = 0x680C061E, /* TRUE=optimize progressive coding scans */ + JBOOLEAN_TRELLIS_QUANT = 0xC5122033, /* TRUE=use trellis quantization */ + JBOOLEAN_TRELLIS_QUANT_DC = 0x339D4C0C, /* TRUE=use trellis quant for DC coefficient */ + JBOOLEAN_TRELLIS_EOB_OPT = 0xD7F73780, /* TRUE=optimize for sequences of EOB */ + JBOOLEAN_USE_LAMBDA_WEIGHT_TBL = 0x339DB65F, /* TRUE=use lambda weighting table */ + JBOOLEAN_USE_SCANS_IN_TRELLIS = 0xFD841435, /* TRUE=use scans in trellis optimization */ + JBOOLEAN_TRELLIS_Q_OPT = 0xE12AE269, /* TRUE=optimize quant table in trellis loop */ + JBOOLEAN_OVERSHOOT_DERINGING = 0x3F4BBBF9 /* TRUE=preprocess input to reduce ringing of edges on white background */ +} J_BOOLEAN_PARAM; + +/* Floating point parameters */ + +typedef enum { + JFLOAT_LAMBDA_LOG_SCALE1 = 0x5B61A599, + JFLOAT_LAMBDA_LOG_SCALE2 = 0xB9BBAE03, + JFLOAT_TRELLIS_DELTA_DC_WEIGHT = 0x13775453 +} J_FLOAT_PARAM; + +/* Integer parameters */ + +typedef enum { + JINT_COMPRESS_PROFILE = 0xE9918625, /* compression profile */ + JINT_TRELLIS_FREQ_SPLIT = 0x6FAFF127, /* splitting point for frequency in trellis quantization */ + JINT_TRELLIS_NUM_LOOPS = 0xB63EBF39, /* number of trellis loops */ + JINT_BASE_QUANT_TBL_IDX = 0x44492AB1, /* base quantization table index */ + JINT_DC_SCAN_OPT_MODE = 0x0BE7AD3C /* DC scan optimization mode */ +} J_INT_PARAM; + + +/* Values for the JINT_COMPRESS_PROFILE parameter (32-bit GUIDs) */ + +enum { + JCP_MAX_COMPRESSION = 0x5D083AAD, /* best compression ratio (progressive, all mozjpeg extensions) */ + JCP_FASTEST = 0x2AEA5CB4 /* libjpeg[-turbo] defaults (baseline, no mozjpeg extensions) */ +}; + + +/* Common fields between JPEG compression and decompression master structs. */ + +#define jpeg_common_fields \ + struct jpeg_error_mgr *err; /* Error handler module */\ + struct jpeg_memory_mgr *mem; /* Memory manager module */\ + struct jpeg_progress_mgr *progress; /* Progress monitor, or NULL if none */\ + void *client_data; /* Available for use by application */\ + boolean is_decompressor; /* So common code can tell which is which */\ + int global_state /* For checking call sequence validity */ + +/* Routines that are to be used by both halves of the library are declared + * to receive a pointer to this structure. There are no actual instances of + * jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct. + */ +struct jpeg_common_struct { + jpeg_common_fields; /* Fields common to both master struct types */ + /* Additional fields follow in an actual jpeg_compress_struct or + * jpeg_decompress_struct. All three structs must agree on these + * initial fields! (This would be a lot cleaner in C++.) + */ +}; + +typedef struct jpeg_common_struct *j_common_ptr; +typedef struct jpeg_compress_struct *j_compress_ptr; +typedef struct jpeg_decompress_struct *j_decompress_ptr; + + +/* Master record for a compression instance */ + +struct jpeg_compress_struct { + jpeg_common_fields; /* Fields shared with jpeg_decompress_struct */ + + /* Destination for compressed data */ + struct jpeg_destination_mgr *dest; + + /* Description of source image --- these fields must be filled in by + * outer application before starting compression. in_color_space must + * be correct before you can even call jpeg_set_defaults(). + */ + + JDIMENSION image_width; /* input image width */ + JDIMENSION image_height; /* input image height */ + int input_components; /* # of color components in input image */ + J_COLOR_SPACE in_color_space; /* colorspace of input image */ + + double input_gamma; /* image gamma of input image */ + + /* Compression parameters --- these fields must be set before calling + * jpeg_start_compress(). We recommend calling jpeg_set_defaults() to + * initialize everything to reasonable defaults, then changing anything + * the application specifically wants to change. That way you won't get + * burnt when new parameters are added. Also note that there are several + * helper routines to simplify changing parameters. + */ + +#if JPEG_LIB_VERSION >= 70 + unsigned int scale_num, scale_denom; /* fraction by which to scale image */ + + JDIMENSION jpeg_width; /* scaled JPEG image width */ + JDIMENSION jpeg_height; /* scaled JPEG image height */ + /* Dimensions of actual JPEG image that will be written to file, + * derived from input dimensions by scaling factors above. + * These fields are computed by jpeg_start_compress(). + * You can also use jpeg_calc_jpeg_dimensions() to determine these values + * in advance of calling jpeg_start_compress(). + */ +#endif + + int data_precision; /* bits of precision in image data */ + + int num_components; /* # of color components in JPEG image */ + J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */ + + jpeg_component_info *comp_info; + /* comp_info[i] describes component that appears i'th in SOF */ + + JQUANT_TBL *quant_tbl_ptrs[NUM_QUANT_TBLS]; +#if JPEG_LIB_VERSION >= 70 + int q_scale_factor[NUM_QUANT_TBLS]; +#endif + /* ptrs to coefficient quantization tables, or NULL if not defined, + * and corresponding scale factors (percentage, initialized 100). + */ + + JHUFF_TBL *dc_huff_tbl_ptrs[NUM_HUFF_TBLS]; + JHUFF_TBL *ac_huff_tbl_ptrs[NUM_HUFF_TBLS]; + /* ptrs to Huffman coding tables, or NULL if not defined */ + + UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */ + UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */ + UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */ + + int num_scans; /* # of entries in scan_info array */ + const jpeg_scan_info *scan_info; /* script for multi-scan file, or NULL */ + /* The default value of scan_info is NULL, which causes a single-scan + * sequential JPEG file to be emitted. To create a multi-scan file, + * set num_scans and scan_info to point to an array of scan definitions. + */ + + boolean raw_data_in; /* TRUE=caller supplies downsampled data */ + boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */ + boolean optimize_coding; /* TRUE=optimize entropy encoding parms */ + boolean CCIR601_sampling; /* TRUE=first samples are cosited */ +#if JPEG_LIB_VERSION >= 70 + boolean do_fancy_downsampling; /* TRUE=apply fancy downsampling */ +#endif + int smoothing_factor; /* 1..100, or 0 for no input smoothing */ + J_DCT_METHOD dct_method; /* DCT algorithm selector */ + + /* The restart interval can be specified in absolute MCUs by setting + * restart_interval, or in MCU rows by setting restart_in_rows + * (in which case the correct restart_interval will be figured + * for each scan). + */ + unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */ + int restart_in_rows; /* if > 0, MCU rows per restart interval */ + + /* Parameters controlling emission of special markers. */ + + boolean write_JFIF_header; /* should a JFIF marker be written? */ + UINT8 JFIF_major_version; /* What to write for the JFIF version number */ + UINT8 JFIF_minor_version; + /* These three values are not used by the JPEG code, merely copied */ + /* into the JFIF APP0 marker. density_unit can be 0 for unknown, */ + /* 1 for dots/inch, or 2 for dots/cm. Note that the pixel aspect */ + /* ratio is defined by X_density/Y_density even when density_unit=0. */ + UINT8 density_unit; /* JFIF code for pixel size units */ + UINT16 X_density; /* Horizontal pixel density */ + UINT16 Y_density; /* Vertical pixel density */ + boolean write_Adobe_marker; /* should an Adobe marker be written? */ + + /* State variable: index of next scanline to be written to + * jpeg_write_scanlines(). Application may use this to control its + * processing loop, e.g., "while (next_scanline < image_height)". + */ + + JDIMENSION next_scanline; /* 0 .. image_height-1 */ + + /* Remaining fields are known throughout compressor, but generally + * should not be touched by a surrounding application. + */ + + /* + * These fields are computed during compression startup + */ + boolean progressive_mode; /* TRUE if scan script uses progressive mode */ + int max_h_samp_factor; /* largest h_samp_factor */ + int max_v_samp_factor; /* largest v_samp_factor */ + +#if JPEG_LIB_VERSION >= 70 + int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */ + int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */ +#endif + + JDIMENSION total_iMCU_rows; /* # of iMCU rows to be input to coef ctlr */ + /* The coefficient controller receives data in units of MCU rows as defined + * for fully interleaved scans (whether the JPEG file is interleaved or not). + * There are v_samp_factor * DCTSIZE sample rows of each component in an + * "iMCU" (interleaved MCU) row. + */ + + /* + * These fields are valid during any one scan. + * They describe the components and MCUs actually appearing in the scan. + */ + int comps_in_scan; /* # of JPEG components in this scan */ + jpeg_component_info *cur_comp_info[MAX_COMPS_IN_SCAN]; + /* *cur_comp_info[i] describes component that appears i'th in SOS */ + + JDIMENSION MCUs_per_row; /* # of MCUs across the image */ + JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */ + + int blocks_in_MCU; /* # of DCT blocks per MCU */ + int MCU_membership[C_MAX_BLOCKS_IN_MCU]; + /* MCU_membership[i] is index in cur_comp_info of component owning */ + /* i'th block in an MCU */ + + int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */ + +#if JPEG_LIB_VERSION >= 80 + int block_size; /* the basic DCT block size: 1..16 */ + const int *natural_order; /* natural-order position array */ + int lim_Se; /* min( Se, DCTSIZE2-1 ) */ +#endif + + /* + * Links to compression subobjects (methods and private variables of modules) + */ + struct jpeg_comp_master *master; + struct jpeg_c_main_controller *main; + struct jpeg_c_prep_controller *prep; + struct jpeg_c_coef_controller *coef; + struct jpeg_marker_writer *marker; + struct jpeg_color_converter *cconvert; + struct jpeg_downsampler *downsample; + struct jpeg_forward_dct *fdct; + struct jpeg_entropy_encoder *entropy; + jpeg_scan_info *script_space; /* workspace for jpeg_simple_progression */ + int script_space_size; +}; + +typedef void (*jpeg_idct_method) (j_decompress_ptr cinfo, jpeg_component_info *compptr, JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col); +typedef void (*jpeg_idct_method_selector) (j_decompress_ptr cinfo, jpeg_component_info *compptr, jpeg_idct_method * set_idct_method, int * set_idct_category); + +/* Master record for a decompression instance */ + +struct jpeg_decompress_struct { + jpeg_common_fields; /* Fields shared with jpeg_compress_struct */ + + /* Source of compressed data */ + struct jpeg_source_mgr *src; + + /* Basic description of image --- filled in by jpeg_read_header(). */ + /* Application may inspect these values to decide how to process image. */ + + JDIMENSION image_width; /* nominal image width (from SOF marker) */ + JDIMENSION image_height; /* nominal image height */ + int num_components; /* # of color components in JPEG image */ + J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */ + + /* Decompression processing parameters --- these fields must be set before + * calling jpeg_start_decompress(). Note that jpeg_read_header() initializes + * them to default values. + */ + + J_COLOR_SPACE out_color_space; /* colorspace for output */ + + unsigned int scale_num, scale_denom; /* fraction by which to scale image */ + + double output_gamma; /* image gamma wanted in output */ + + boolean buffered_image; /* TRUE=multiple output passes */ + boolean raw_data_out; /* TRUE=downsampled data wanted */ + + J_DCT_METHOD dct_method; /* IDCT algorithm selector */ + boolean do_fancy_upsampling; /* TRUE=apply fancy upsampling */ + boolean do_block_smoothing; /* TRUE=apply interblock smoothing */ + + boolean quantize_colors; /* TRUE=colormapped output wanted */ + /* the following are ignored if not quantize_colors: */ + J_DITHER_MODE dither_mode; /* type of color dithering to use */ + boolean two_pass_quantize; /* TRUE=use two-pass color quantization */ + int desired_number_of_colors; /* max # colors to use in created colormap */ + /* these are significant only in buffered-image mode: */ + boolean enable_1pass_quant; /* enable future use of 1-pass quantizer */ + boolean enable_external_quant;/* enable future use of external colormap */ + boolean enable_2pass_quant; /* enable future use of 2-pass quantizer */ + + /* Description of actual output image that will be returned to application. + * These fields are computed by jpeg_start_decompress(). + * You can also use jpeg_calc_output_dimensions() to determine these values + * in advance of calling jpeg_start_decompress(). + */ + + JDIMENSION output_width; /* scaled image width */ + JDIMENSION output_height; /* scaled image height */ + int out_color_components; /* # of color components in out_color_space */ + int output_components; /* # of color components returned */ + /* output_components is 1 (a colormap index) when quantizing colors; + * otherwise it equals out_color_components. + */ + int rec_outbuf_height; /* min recommended height of scanline buffer */ + /* If the buffer passed to jpeg_read_scanlines() is less than this many rows + * high, space and time will be wasted due to unnecessary data copying. + * Usually rec_outbuf_height will be 1 or 2, at most 4. + */ + + /* When quantizing colors, the output colormap is described by these fields. + * The application can supply a colormap by setting colormap non-NULL before + * calling jpeg_start_decompress; otherwise a colormap is created during + * jpeg_start_decompress or jpeg_start_output. + * The map has out_color_components rows and actual_number_of_colors columns. + */ + int actual_number_of_colors; /* number of entries in use */ + JSAMPARRAY colormap; /* The color map as a 2-D pixel array */ + + /* State variables: these variables indicate the progress of decompression. + * The application may examine these but must not modify them. + */ + + /* Row index of next scanline to be read from jpeg_read_scanlines(). + * Application may use this to control its processing loop, e.g., + * "while (output_scanline < output_height)". + */ + JDIMENSION output_scanline; /* 0 .. output_height-1 */ + + /* Current input scan number and number of iMCU rows completed in scan. + * These indicate the progress of the decompressor input side. + */ + int input_scan_number; /* Number of SOS markers seen so far */ + JDIMENSION input_iMCU_row; /* Number of iMCU rows completed */ + + /* The "output scan number" is the notional scan being displayed by the + * output side. The decompressor will not allow output scan/row number + * to get ahead of input scan/row, but it can fall arbitrarily far behind. + */ + int output_scan_number; /* Nominal scan number being displayed */ + JDIMENSION output_iMCU_row; /* Number of iMCU rows read */ + + /* Current progression status. coef_bits[c][i] indicates the precision + * with which component c's DCT coefficient i (in zigzag order) is known. + * It is -1 when no data has yet been received, otherwise it is the point + * transform (shift) value for the most recent scan of the coefficient + * (thus, 0 at completion of the progression). + * This pointer is NULL when reading a non-progressive file. + */ + int (*coef_bits)[DCTSIZE2]; /* -1 or current Al value for each coef */ + + /* Internal JPEG parameters --- the application usually need not look at + * these fields. Note that the decompressor output side may not use + * any parameters that can change between scans. + */ + + /* Quantization and Huffman tables are carried forward across input + * datastreams when processing abbreviated JPEG datastreams. + */ + + JQUANT_TBL *quant_tbl_ptrs[NUM_QUANT_TBLS]; + /* ptrs to coefficient quantization tables, or NULL if not defined */ + + JHUFF_TBL *dc_huff_tbl_ptrs[NUM_HUFF_TBLS]; + JHUFF_TBL *ac_huff_tbl_ptrs[NUM_HUFF_TBLS]; + /* ptrs to Huffman coding tables, or NULL if not defined */ + + /* These parameters are never carried across datastreams, since they + * are given in SOF/SOS markers or defined to be reset by SOI. + */ + + int data_precision; /* bits of precision in image data */ + + jpeg_component_info *comp_info; + /* comp_info[i] describes component that appears i'th in SOF */ + +#if JPEG_LIB_VERSION >= 80 + boolean is_baseline; /* TRUE if Baseline SOF0 encountered */ +#endif + boolean progressive_mode; /* TRUE if SOFn specifies progressive mode */ + boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */ + + UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */ + UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */ + UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */ + + unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */ + + /* These fields record data obtained from optional markers recognized by + * the JPEG library. + */ + boolean saw_JFIF_marker; /* TRUE iff a JFIF APP0 marker was found */ + /* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */ + UINT8 JFIF_major_version; /* JFIF version number */ + UINT8 JFIF_minor_version; + UINT8 density_unit; /* JFIF code for pixel size units */ + UINT16 X_density; /* Horizontal pixel density */ + UINT16 Y_density; /* Vertical pixel density */ + boolean saw_Adobe_marker; /* TRUE iff an Adobe APP14 marker was found */ + UINT8 Adobe_transform; /* Color transform code from Adobe marker */ + + boolean CCIR601_sampling; /* TRUE=first samples are cosited */ + + /* Aside from the specific data retained from APPn markers known to the + * library, the uninterpreted contents of any or all APPn and COM markers + * can be saved in a list for examination by the application. + */ + jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */ + + /* Remaining fields are known throughout decompressor, but generally + * should not be touched by a surrounding application. + */ + + /* + * These fields are computed during decompression startup + */ + int max_h_samp_factor; /* largest h_samp_factor */ + int max_v_samp_factor; /* largest v_samp_factor */ + +#if JPEG_LIB_VERSION >= 70 + int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */ + int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */ +#else + int min_DCT_scaled_size; /* smallest DCT_scaled_size of any component */ +#endif + + JDIMENSION total_iMCU_rows; /* # of iMCU rows in image */ + /* The coefficient controller's input and output progress is measured in + * units of "iMCU" (interleaved MCU) rows. These are the same as MCU rows + * in fully interleaved JPEG scans, but are used whether the scan is + * interleaved or not. We define an iMCU row as v_samp_factor DCT block + * rows of each component. Therefore, the IDCT output contains + * v_samp_factor*DCT_[v_]scaled_size sample rows of a component per iMCU row. + */ + + JSAMPLE *sample_range_limit; /* table for fast range-limiting */ + + /* + * These fields are valid during any one scan. + * They describe the components and MCUs actually appearing in the scan. + * Note that the decompressor output side must not use these fields. + */ + int comps_in_scan; /* # of JPEG components in this scan */ + jpeg_component_info *cur_comp_info[MAX_COMPS_IN_SCAN]; + /* *cur_comp_info[i] describes component that appears i'th in SOS */ + + JDIMENSION MCUs_per_row; /* # of MCUs across the image */ + JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */ + + int blocks_in_MCU; /* # of DCT blocks per MCU */ + int MCU_membership[D_MAX_BLOCKS_IN_MCU]; + /* MCU_membership[i] is index in cur_comp_info of component owning */ + /* i'th block in an MCU */ + + int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */ + +#if JPEG_LIB_VERSION >= 80 + /* These fields are derived from Se of first SOS marker. + */ + int block_size; /* the basic DCT block size: 1..16 */ + const int *natural_order; /* natural-order position array for entropy decode */ + int lim_Se; /* min( Se, DCTSIZE2-1 ) for entropy decode */ +#endif + + /* This field is shared between entropy decoder and marker parser. + * It is either zero or the code of a JPEG marker that has been + * read from the data source, but has not yet been processed. + */ + int unread_marker; + + /* + * Links to decompression subobjects (methods, private variables of modules) + */ + struct jpeg_decomp_master *master; + struct jpeg_d_main_controller *main; + struct jpeg_d_coef_controller *coef; + struct jpeg_d_post_controller *post; + struct jpeg_input_controller *inputctl; + struct jpeg_marker_reader *marker; + struct jpeg_entropy_decoder *entropy; + struct jpeg_inverse_dct *idct; + struct jpeg_upsampler *upsample; + struct jpeg_color_deconverter *cconvert; + struct jpeg_color_quantizer *cquantize; +}; + + +/* "Object" declarations for JPEG modules that may be supplied or called + * directly by the surrounding application. + * As with all objects in the JPEG library, these structs only define the + * publicly visible methods and state variables of a module. Additional + * private fields may exist after the public ones. + */ + + +/* Error handler object */ + +struct jpeg_error_mgr { + /* Error exit handler: does not return to caller */ + void (*error_exit) (j_common_ptr cinfo); + /* Conditionally emit a trace or warning message */ + void (*emit_message) (j_common_ptr cinfo, int msg_level); + /* Routine that actually outputs a trace or error message */ + void (*output_message) (j_common_ptr cinfo); + /* Format a message string for the most recent JPEG error or message */ + void (*format_message) (j_common_ptr cinfo, char *buffer); +#define JMSG_LENGTH_MAX 200 /* recommended size of format_message buffer */ + /* Reset error state variables at start of a new image */ + void (*reset_error_mgr) (j_common_ptr cinfo); + + /* The message ID code and any parameters are saved here. + * A message can have one string parameter or up to 8 int parameters. + */ + int msg_code; +#define JMSG_STR_PARM_MAX 80 + union { + int i[8]; + char s[JMSG_STR_PARM_MAX]; + } msg_parm; + + /* Standard state variables for error facility */ + + int trace_level; /* max msg_level that will be displayed */ + + /* For recoverable corrupt-data errors, we emit a warning message, + * but keep going unless emit_message chooses to abort. emit_message + * should count warnings in num_warnings. The surrounding application + * can check for bad data by seeing if num_warnings is nonzero at the + * end of processing. + */ + long num_warnings; /* number of corrupt-data warnings */ + + /* These fields point to the table(s) of error message strings. + * An application can change the table pointer to switch to a different + * message list (typically, to change the language in which errors are + * reported). Some applications may wish to add additional error codes + * that will be handled by the JPEG library error mechanism; the second + * table pointer is used for this purpose. + * + * First table includes all errors generated by JPEG library itself. + * Error code 0 is reserved for a "no such error string" message. + */ + const char * const *jpeg_message_table; /* Library errors */ + int last_jpeg_message; /* Table contains strings 0..last_jpeg_message */ + /* Second table can be added by application (see cjpeg/djpeg for example). + * It contains strings numbered first_addon_message..last_addon_message. + */ + const char * const *addon_message_table; /* Non-library errors */ + int first_addon_message; /* code for first string in addon table */ + int last_addon_message; /* code for last string in addon table */ +}; + + +/* Progress monitor object */ + +struct jpeg_progress_mgr { + void (*progress_monitor) (j_common_ptr cinfo); + + long pass_counter; /* work units completed in this pass */ + long pass_limit; /* total number of work units in this pass */ + int completed_passes; /* passes completed so far */ + int total_passes; /* total number of passes expected */ +}; + + +/* Data destination object for compression */ + +struct jpeg_destination_mgr { + JOCTET *next_output_byte; /* => next byte to write in buffer */ + size_t free_in_buffer; /* # of byte spaces remaining in buffer */ + + void (*init_destination) (j_compress_ptr cinfo); + boolean (*empty_output_buffer) (j_compress_ptr cinfo); + void (*term_destination) (j_compress_ptr cinfo); +}; + + +/* Data source object for decompression */ + +struct jpeg_source_mgr { + const JOCTET *next_input_byte; /* => next byte to read from buffer */ + size_t bytes_in_buffer; /* # of bytes remaining in buffer */ + + void (*init_source) (j_decompress_ptr cinfo); + boolean (*fill_input_buffer) (j_decompress_ptr cinfo); + void (*skip_input_data) (j_decompress_ptr cinfo, long num_bytes); + boolean (*resync_to_restart) (j_decompress_ptr cinfo, int desired); + void (*term_source) (j_decompress_ptr cinfo); +}; + + +/* Memory manager object. + * Allocates "small" objects (a few K total), "large" objects (tens of K), + * and "really big" objects (virtual arrays with backing store if needed). + * The memory manager does not allow individual objects to be freed; rather, + * each created object is assigned to a pool, and whole pools can be freed + * at once. This is faster and more convenient than remembering exactly what + * to free, especially where malloc()/free() are not too speedy. + * NB: alloc routines never return NULL. They exit to error_exit if not + * successful. + */ + +#define JPOOL_PERMANENT 0 /* lasts until master record is destroyed */ +#define JPOOL_IMAGE 1 /* lasts until done with image/datastream */ +#define JPOOL_NUMPOOLS 2 + +typedef struct jvirt_sarray_control *jvirt_sarray_ptr; +typedef struct jvirt_barray_control *jvirt_barray_ptr; + + +struct jpeg_memory_mgr { + /* Method pointers */ + void *(*alloc_small) (j_common_ptr cinfo, int pool_id, size_t sizeofobject); + void *(*alloc_large) (j_common_ptr cinfo, int pool_id, + size_t sizeofobject); + JSAMPARRAY (*alloc_sarray) (j_common_ptr cinfo, int pool_id, + JDIMENSION samplesperrow, JDIMENSION numrows); + JBLOCKARRAY (*alloc_barray) (j_common_ptr cinfo, int pool_id, + JDIMENSION blocksperrow, JDIMENSION numrows); + jvirt_sarray_ptr (*request_virt_sarray) (j_common_ptr cinfo, int pool_id, + boolean pre_zero, + JDIMENSION samplesperrow, + JDIMENSION numrows, + JDIMENSION maxaccess); + jvirt_barray_ptr (*request_virt_barray) (j_common_ptr cinfo, int pool_id, + boolean pre_zero, + JDIMENSION blocksperrow, + JDIMENSION numrows, + JDIMENSION maxaccess); + void (*realize_virt_arrays) (j_common_ptr cinfo); + JSAMPARRAY (*access_virt_sarray) (j_common_ptr cinfo, jvirt_sarray_ptr ptr, + JDIMENSION start_row, JDIMENSION num_rows, + boolean writable); + JBLOCKARRAY (*access_virt_barray) (j_common_ptr cinfo, jvirt_barray_ptr ptr, + JDIMENSION start_row, JDIMENSION num_rows, + boolean writable); + void (*free_pool) (j_common_ptr cinfo, int pool_id); + void (*self_destruct) (j_common_ptr cinfo); + + /* Limit on memory allocation for this JPEG object. (Note that this is + * merely advisory, not a guaranteed maximum; it only affects the space + * used for virtual-array buffers.) May be changed by outer application + * after creating the JPEG object. + */ + long max_memory_to_use; + + /* Maximum allocation request accepted by alloc_large. */ + long max_alloc_chunk; +}; + + +/* Routine signature for application-supplied marker processing methods. + * Need not pass marker code since it is stored in cinfo->unread_marker. + */ +typedef boolean (*jpeg_marker_parser_method) (j_decompress_ptr cinfo); + + +/* Originally, this macro was used as a way of defining function prototypes + * for both modern compilers as well as older compilers that did not support + * prototype parameters. libjpeg-turbo has never supported these older, + * non-ANSI compilers, but the macro is still included because there is some + * software out there that uses it. + */ + +#define JPP(arglist) arglist + + +/* Default error-management setup */ +EXTERN(struct jpeg_error_mgr *) jpeg_std_error (struct jpeg_error_mgr *err); + +/* Initialization of JPEG compression objects. + * jpeg_create_compress() and jpeg_create_decompress() are the exported + * names that applications should call. These expand to calls on + * jpeg_CreateCompress and jpeg_CreateDecompress with additional information + * passed for version mismatch checking. + * NB: you must set up the error-manager BEFORE calling jpeg_create_xxx. + */ +#define jpeg_create_compress(cinfo) \ + jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \ + (size_t) sizeof(struct jpeg_compress_struct)) +#define jpeg_create_decompress(cinfo) \ + jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \ + (size_t) sizeof(struct jpeg_decompress_struct)) +EXTERN(void) jpeg_CreateCompress (j_compress_ptr cinfo, int version, + size_t structsize); +EXTERN(void) jpeg_CreateDecompress (j_decompress_ptr cinfo, int version, + size_t structsize); +/* Destruction of JPEG compression objects */ +EXTERN(void) jpeg_destroy_compress (j_compress_ptr cinfo); +EXTERN(void) jpeg_destroy_decompress (j_decompress_ptr cinfo); + +/* Standard data source and destination managers: stdio streams. */ +/* Caller is responsible for opening the file before and closing after. */ +EXTERN(void) jpeg_stdio_dest (j_compress_ptr cinfo, FILE *outfile); +EXTERN(void) jpeg_stdio_src (j_decompress_ptr cinfo, FILE *infile); + +#if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED) +/* Data source and destination managers: memory buffers. */ +EXTERN(void) jpeg_mem_dest (j_compress_ptr cinfo, unsigned char **outbuffer, + unsigned long *outsize); +EXTERN(void) jpeg_mem_src (j_decompress_ptr cinfo, + const unsigned char *inbuffer, unsigned long insize); +#endif + +/* Default parameter setup for compression */ +EXTERN(void) jpeg_set_defaults (j_compress_ptr cinfo); +/* Compression parameter setup aids */ +EXTERN(void) jpeg_set_colorspace (j_compress_ptr cinfo, + J_COLOR_SPACE colorspace); +EXTERN(void) jpeg_default_colorspace (j_compress_ptr cinfo); +EXTERN(void) jpeg_set_quality (j_compress_ptr cinfo, int quality, + boolean force_baseline); +EXTERN(void) jpeg_set_linear_quality (j_compress_ptr cinfo, int scale_factor, + boolean force_baseline); +#if JPEG_LIB_VERSION >= 70 +EXTERN(void) jpeg_default_qtables (j_compress_ptr cinfo, + boolean force_baseline); +#endif +EXTERN(void) jpeg_add_quant_table (j_compress_ptr cinfo, int which_tbl, + const unsigned int *basic_table, + int scale_factor, boolean force_baseline); +EXTERN(int) jpeg_quality_scaling (int quality); +EXTERN(float) jpeg_float_quality_scaling (float quality); +EXTERN(void) jpeg_simple_progression (j_compress_ptr cinfo); +EXTERN(void) jpeg_suppress_tables (j_compress_ptr cinfo, boolean suppress); +EXTERN(JQUANT_TBL *) jpeg_alloc_quant_table (j_common_ptr cinfo); +EXTERN(JHUFF_TBL *) jpeg_alloc_huff_table (j_common_ptr cinfo); + +/* Main entry points for compression */ +EXTERN(void) jpeg_start_compress (j_compress_ptr cinfo, + boolean write_all_tables); +EXTERN(JDIMENSION) jpeg_write_scanlines (j_compress_ptr cinfo, + JSAMPARRAY scanlines, + JDIMENSION num_lines); +EXTERN(void) jpeg_finish_compress (j_compress_ptr cinfo); + +#if JPEG_LIB_VERSION >= 70 +/* Precalculate JPEG dimensions for current compression parameters. */ +EXTERN(void) jpeg_calc_jpeg_dimensions (j_compress_ptr cinfo); +#endif + +/* Replaces jpeg_write_scanlines when writing raw downsampled data. */ +EXTERN(JDIMENSION) jpeg_write_raw_data (j_compress_ptr cinfo, JSAMPIMAGE data, + JDIMENSION num_lines); + +/* Write a special marker. See libjpeg.txt concerning safe usage. */ +EXTERN(void) jpeg_write_marker (j_compress_ptr cinfo, int marker, + const JOCTET *dataptr, unsigned int datalen); +/* Same, but piecemeal. */ +EXTERN(void) jpeg_write_m_header (j_compress_ptr cinfo, int marker, + unsigned int datalen); +EXTERN(void) jpeg_write_m_byte (j_compress_ptr cinfo, int val); + +/* Alternate compression function: just write an abbreviated table file */ +EXTERN(void) jpeg_write_tables (j_compress_ptr cinfo); + +/* Write ICC profile. See libjpeg.txt for usage information. */ +EXTERN(void) jpeg_write_icc_profile(j_compress_ptr cinfo, + const JOCTET *icc_data_ptr, + unsigned int icc_data_len); + + +/* Decompression startup: read start of JPEG datastream to see what's there */ +EXTERN(int) jpeg_read_header (j_decompress_ptr cinfo, boolean require_image); +/* Return value is one of: */ +#define JPEG_SUSPENDED 0 /* Suspended due to lack of input data */ +#define JPEG_HEADER_OK 1 /* Found valid image datastream */ +#define JPEG_HEADER_TABLES_ONLY 2 /* Found valid table-specs-only datastream */ +/* If you pass require_image = TRUE (normal case), you need not check for + * a TABLES_ONLY return code; an abbreviated file will cause an error exit. + * JPEG_SUSPENDED is only possible if you use a data source module that can + * give a suspension return (the stdio source module doesn't). + */ + +/* Main entry points for decompression */ +EXTERN(boolean) jpeg_start_decompress (j_decompress_ptr cinfo); +EXTERN(JDIMENSION) jpeg_read_scanlines (j_decompress_ptr cinfo, + JSAMPARRAY scanlines, + JDIMENSION max_lines); +EXTERN(JDIMENSION) jpeg_skip_scanlines (j_decompress_ptr cinfo, + JDIMENSION num_lines); +EXTERN(void) jpeg_crop_scanline (j_decompress_ptr cinfo, JDIMENSION *xoffset, + JDIMENSION *width); +EXTERN(boolean) jpeg_finish_decompress (j_decompress_ptr cinfo); + +/* Replaces jpeg_read_scanlines when reading raw downsampled data. */ +EXTERN(JDIMENSION) jpeg_read_raw_data (j_decompress_ptr cinfo, JSAMPIMAGE data, + JDIMENSION max_lines); + +/* Additional entry points for buffered-image mode. */ +EXTERN(boolean) jpeg_has_multiple_scans (const j_decompress_ptr cinfo); +EXTERN(boolean) jpeg_start_output (j_decompress_ptr cinfo, int scan_number); +EXTERN(boolean) jpeg_finish_output (j_decompress_ptr cinfo); +EXTERN(boolean) jpeg_input_complete (const j_decompress_ptr cinfo); +EXTERN(void) jpeg_new_colormap (j_decompress_ptr cinfo); +EXTERN(int) jpeg_consume_input (j_decompress_ptr cinfo); +/* Return value is one of: */ +/* #define JPEG_SUSPENDED 0 Suspended due to lack of input data */ +#define JPEG_REACHED_SOS 1 /* Reached start of new scan */ +#define JPEG_REACHED_EOI 2 /* Reached end of image */ +#define JPEG_ROW_COMPLETED 3 /* Completed one iMCU row */ +#define JPEG_SCAN_COMPLETED 4 /* Completed last iMCU row of a scan */ + +/* Precalculate output dimensions for current decompression parameters. */ +#if JPEG_LIB_VERSION >= 80 +EXTERN(void) jpeg_core_output_dimensions (j_decompress_ptr cinfo); +#endif +EXTERN(void) jpeg_calc_output_dimensions (j_decompress_ptr cinfo); + +/* Control saving of COM and APPn markers into marker_list. */ +EXTERN(void) jpeg_save_markers (j_decompress_ptr cinfo, int marker_code, + unsigned int length_limit); + +/* Install a special processing method for COM or APPn markers. */ +EXTERN(void) jpeg_set_marker_processor (j_decompress_ptr cinfo, + int marker_code, + jpeg_marker_parser_method routine); + +/* Read or write raw DCT coefficients --- useful for lossless transcoding. */ +EXTERN(jvirt_barray_ptr *) jpeg_read_coefficients (j_decompress_ptr cinfo); +EXTERN(void) jpeg_write_coefficients (j_compress_ptr cinfo, + jvirt_barray_ptr *coef_arrays); +EXTERN(void) jpeg_copy_critical_parameters (const j_decompress_ptr srcinfo, + j_compress_ptr dstinfo); + +/* If you choose to abort compression or decompression before completing + * jpeg_finish_(de)compress, then you need to clean up to release memory, + * temporary files, etc. You can just call jpeg_destroy_(de)compress + * if you're done with the JPEG object, but if you want to clean it up and + * reuse it, call this: + */ +EXTERN(void) jpeg_abort_compress (j_compress_ptr cinfo); +EXTERN(void) jpeg_abort_decompress (j_decompress_ptr cinfo); + +/* Generic versions of jpeg_abort and jpeg_destroy that work on either + * flavor of JPEG object. These may be more convenient in some places. + */ +EXTERN(void) jpeg_abort (j_common_ptr cinfo); +EXTERN(void) jpeg_destroy (j_common_ptr cinfo); + +/* Default restart-marker-resync procedure for use by data source modules */ +EXTERN(boolean) jpeg_resync_to_restart (j_decompress_ptr cinfo, int desired); + +/* Accessor functions for extension parameters */ +#define JPEG_C_PARAM_SUPPORTED 1 +EXTERN(boolean) jpeg_c_bool_param_supported (const j_compress_ptr cinfo, + J_BOOLEAN_PARAM param); +EXTERN(void) jpeg_c_set_bool_param (j_compress_ptr cinfo, + J_BOOLEAN_PARAM param, boolean value); +EXTERN(boolean) jpeg_c_get_bool_param (const j_compress_ptr cinfo, + J_BOOLEAN_PARAM param); + +EXTERN(boolean) jpeg_c_float_param_supported (const j_compress_ptr cinfo, + J_FLOAT_PARAM param); +EXTERN(void) jpeg_c_set_float_param (j_compress_ptr cinfo, J_FLOAT_PARAM param, + float value); +EXTERN(float) jpeg_c_get_float_param (const j_compress_ptr cinfo, + J_FLOAT_PARAM param); + +EXTERN(boolean) jpeg_c_int_param_supported (const j_compress_ptr cinfo, + J_INT_PARAM param); +EXTERN(void) jpeg_c_set_int_param (j_compress_ptr cinfo, J_INT_PARAM param, + int value); +EXTERN(int) jpeg_c_get_int_param (const j_compress_ptr cinfo, J_INT_PARAM param); +/* Read ICC profile. See libjpeg.txt for usage information. */ +EXTERN(boolean) jpeg_read_icc_profile(j_decompress_ptr cinfo, + JOCTET **icc_data_ptr, + unsigned int *icc_data_len); + +/* + * Permit users to replace the IDCT method dynamically. + * The selector callback is called after the default idct implementation was choosen, + * and is able to override it. + */ +EXTERN(void) jpeg_set_idct_method_selector (j_decompress_ptr cinfo, jpeg_idct_method_selector selector); + +/* These marker codes are exported since applications and data source modules + * are likely to want to use them. + */ + +#define JPEG_RST0 0xD0 /* RST0 marker code */ +#define JPEG_EOI 0xD9 /* EOI marker code */ +#define JPEG_APP0 0xE0 /* APP0 marker code */ +#define JPEG_COM 0xFE /* COM marker code */ + + +/* If we have a brain-damaged compiler that emits warnings (or worse, errors) + * for structure definitions that are never filled in, keep it quiet by + * supplying dummy definitions for the various substructures. + */ + +#ifdef INCOMPLETE_TYPES_BROKEN +#ifndef JPEG_INTERNALS /* will be defined in jpegint.h */ +struct jvirt_sarray_control { long dummy; }; +struct jvirt_barray_control { long dummy; }; +struct jpeg_comp_master { long dummy; }; +struct jpeg_c_main_controller { long dummy; }; +struct jpeg_c_prep_controller { long dummy; }; +struct jpeg_c_coef_controller { long dummy; }; +struct jpeg_marker_writer { long dummy; }; +struct jpeg_color_converter { long dummy; }; +struct jpeg_downsampler { long dummy; }; +struct jpeg_forward_dct { long dummy; }; +struct jpeg_entropy_encoder { long dummy; }; +struct jpeg_decomp_master { long dummy; }; +struct jpeg_d_main_controller { long dummy; }; +struct jpeg_d_coef_controller { long dummy; }; +struct jpeg_d_post_controller { long dummy; }; +struct jpeg_input_controller { long dummy; }; +struct jpeg_marker_reader { long dummy; }; +struct jpeg_entropy_decoder { long dummy; }; +struct jpeg_inverse_dct { long dummy; }; +struct jpeg_upsampler { long dummy; }; +struct jpeg_color_deconverter { long dummy; }; +struct jpeg_color_quantizer { long dummy; }; +#endif /* JPEG_INTERNALS */ +#endif /* INCOMPLETE_TYPES_BROKEN */ + + +/* + * The JPEG library modules define JPEG_INTERNALS before including this file. + * The internal structure declarations are read only when that is true. + * Applications using the library should not include jpegint.h, but may wish + * to include jerror.h. + */ + +#ifdef JPEG_INTERNALS +#include "jpegint.h" /* fetch private declarations */ +#include "jerror.h" /* fetch error codes too */ +#endif + +#ifdef __cplusplus +#ifndef DONT_USE_EXTERN_C +} +#endif +#endif + +#endif /* JPEGLIB_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/lcms2.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/lcms2.h new file mode 100644 index 0000000..5e0aa33 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/lcms2.h @@ -0,0 +1,1942 @@ +//--------------------------------------------------------------------------------- +// +// Little Color Management System +// Copyright (c) 1998-2022 Marti Maria Saguer +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//--------------------------------------------------------------------------------- +// +// Version 2.13.1 +// + +#ifndef _lcms2_H + +// ********** Configuration toggles **************************************** + +// Uncomment this one if you are using big endian machines +// #define CMS_USE_BIG_ENDIAN 1 + +// Uncomment this one if your compiler/machine does NOT support the +// "long long" type. +// #define CMS_DONT_USE_INT64 1 + +// Uncomment this if your compiler doesn't work with fast floor function +// #define CMS_DONT_USE_FAST_FLOOR 1 + +// Uncomment this line if you want lcms to use the black point tag in profile, +// if commented, lcms will compute the black point by its own. +// It is safer to leave it commented out +// #define CMS_USE_PROFILE_BLACK_POINT_TAG 1 + +// Uncomment this line if you are compiling as C++ and want a C++ API +// #define CMS_USE_CPP_API + +// Uncomment this line if you need strict CGATS syntax. Makes CGATS files to +// require "KEYWORD" on undefined identifiers, keep it commented out unless needed +// #define CMS_STRICT_CGATS 1 + +// Uncomment to get rid of the tables for "half" float support +// #define CMS_NO_HALF_SUPPORT 1 + +// Uncomment to get rid of pthreads/windows dependency +// #define CMS_NO_PTHREADS 1 + +// Uncomment this for special windows mutex initialization (see lcms2_internal.h) +// #define CMS_RELY_ON_WINDOWS_STATIC_MUTEX_INIT + +// Uncomment this to remove the "register" storage class +// #define CMS_NO_REGISTER_KEYWORD 1 + +// ********** End of configuration toggles ****************************** + +// Needed for streams +#include + +// Needed for portability (C99 per 7.1.2) +#include +#include +#include + +#ifndef CMS_USE_CPP_API +# ifdef __cplusplus +extern "C" { +# endif +#endif + +// Version/release +#define LCMS_VERSION 2131 + +// I will give the chance of redefining basic types for compilers that are not fully C99 compliant +#ifndef CMS_BASIC_TYPES_ALREADY_DEFINED + +// Base types +typedef unsigned char cmsUInt8Number; // That is guaranteed by the C99 spec +typedef signed char cmsInt8Number; // That is guaranteed by the C99 spec + +#if CHAR_BIT != 8 +# error "Unable to find 8 bit type, unsupported compiler" +#endif + +// IEEE float storage numbers +typedef float cmsFloat32Number; +typedef double cmsFloat64Number; + +// 16-bit base types +#if (USHRT_MAX == 65535U) + typedef unsigned short cmsUInt16Number; +#elif (UINT_MAX == 65535U) + typedef unsigned int cmsUInt16Number; +#else +# error "Unable to find 16 bits unsigned type, unsupported compiler" +#endif + +#if (SHRT_MAX == 32767) + typedef short cmsInt16Number; +#elif (INT_MAX == 32767) + typedef int cmsInt16Number; +#else +# error "Unable to find 16 bits signed type, unsupported compiler" +#endif + +// 32-bit base type +#if (UINT_MAX == 4294967295U) + typedef unsigned int cmsUInt32Number; +#elif (ULONG_MAX == 4294967295U) + typedef unsigned long cmsUInt32Number; +#else +# error "Unable to find 32 bit unsigned type, unsupported compiler" +#endif + +#if (INT_MAX == +2147483647) + typedef int cmsInt32Number; +#elif (LONG_MAX == +2147483647) + typedef long cmsInt32Number; +#else +# error "Unable to find 32 bit signed type, unsupported compiler" +#endif + +// 64-bit base types +#ifndef CMS_DONT_USE_INT64 +# if (ULONG_MAX == 18446744073709551615U) + typedef unsigned long cmsUInt64Number; +# elif (ULLONG_MAX == 18446744073709551615U) + typedef unsigned long long cmsUInt64Number; +# else +# define CMS_DONT_USE_INT64 1 +# endif +# if (LONG_MAX == +9223372036854775807) + typedef long cmsInt64Number; +# elif (LLONG_MAX == +9223372036854775807) + typedef long long cmsInt64Number; +# else +# define CMS_DONT_USE_INT64 1 +# endif +#endif +#endif + +// Handle "register" keyword +#if defined(CMS_NO_REGISTER_KEYWORD) && !defined(CMS_DLL) && !defined(CMS_DLL_BUILD) +# define CMSREGISTER +#else +# define CMSREGISTER register +#endif + +// In the case 64 bit numbers are not supported by the compiler +#ifdef CMS_DONT_USE_INT64 + typedef cmsUInt32Number cmsUInt64Number[2]; + typedef cmsInt32Number cmsInt64Number[2]; +#endif + +// Derivative types +typedef cmsUInt32Number cmsSignature; +typedef cmsUInt16Number cmsU8Fixed8Number; +typedef cmsInt32Number cmsS15Fixed16Number; +typedef cmsUInt32Number cmsU16Fixed16Number; + +// Boolean type, which will be using the native integer +typedef int cmsBool; + +// Try to detect windows +#if defined (_WIN32) || defined(_WIN64) || defined(WIN32) || defined(_WIN32_) +# define CMS_IS_WINDOWS_ 1 +#endif + +#ifdef _MSC_VER +# define CMS_IS_WINDOWS_ 1 +#endif + +#ifdef __BORLANDC__ +# define CMS_IS_WINDOWS_ 1 +#endif + +// Try to detect big endian platforms. This list can be endless, so primarily rely on the configure script +// on Unix-like systems, and allow it to be set on the compiler command line using +// -DCMS_USE_BIG_ENDIAN or something similar +#ifdef CMS_USE_BIG_ENDIAN // set at compiler command line takes overall precedence + +# if CMS_USE_BIG_ENDIAN == 0 +# undef CMS_USE_BIG_ENDIAN +# endif + +#else // CMS_USE_BIG_ENDIAN + +# ifdef WORDS_BIGENDIAN // set by configure (or explicitly on compiler command line) +# define CMS_USE_BIG_ENDIAN 1 +# else // WORDS_BIGENDIAN +// Fall back to platform/compiler specific tests +# if defined(__sgi__) || defined(__sgi) || defined(sparc) +# define CMS_USE_BIG_ENDIAN 1 +# endif + +# if defined(__s390__) || defined(__s390x__) +# define CMS_USE_BIG_ENDIAN 1 +# endif + +# ifdef macintosh +# ifdef __BIG_ENDIAN__ +# define CMS_USE_BIG_ENDIAN 1 +# endif +# ifdef __LITTLE_ENDIAN__ +# undef CMS_USE_BIG_ENDIAN +# endif +# endif +# endif // WORDS_BIGENDIAN + +# if defined(_HOST_BIG_ENDIAN) || defined(__BIG_ENDIAN__) +# define CMS_USE_BIG_ENDIAN 1 +# endif + +#endif // CMS_USE_BIG_ENDIAN + + +// Calling convention -- this is hardly platform and compiler dependent +#ifdef CMS_IS_WINDOWS_ +# if defined(CMS_DLL) || defined(CMS_DLL_BUILD) +# ifdef __BORLANDC__ +# define CMSEXPORT __stdcall _export +# define CMSAPI +# else +# define CMSEXPORT __stdcall +# ifdef CMS_DLL_BUILD +# define CMSAPI __declspec(dllexport) +# else +# define CMSAPI __declspec(dllimport) +# endif +# endif +# else +# define CMSEXPORT +# define CMSAPI +# endif +#else // not Windows +# ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY +# define CMSEXPORT +# define CMSAPI __attribute__((visibility("default"))) +# else +# define CMSEXPORT +# define CMSAPI +# endif +#endif // CMS_IS_WINDOWS_ + +#ifdef HasTHREADS +# if HasTHREADS == 1 +# undef CMS_NO_PTHREADS +# else +# define CMS_NO_PTHREADS 1 +# endif +#endif + +// Some common definitions +#define cmsMAX_PATH 256 + +#ifndef FALSE +# define FALSE 0 +#endif +#ifndef TRUE +# define TRUE 1 +#endif + +// D50 XYZ normalized to Y=1.0 +#define cmsD50X 0.9642 +#define cmsD50Y 1.0 +#define cmsD50Z 0.8249 + +// V4 perceptual black +#define cmsPERCEPTUAL_BLACK_X 0.00336 +#define cmsPERCEPTUAL_BLACK_Y 0.0034731 +#define cmsPERCEPTUAL_BLACK_Z 0.00287 + +// Definitions in ICC spec +#define cmsMagicNumber 0x61637370 // 'acsp' +#define lcmsSignature 0x6c636d73 // 'lcms' + + +// Base ICC type definitions +typedef enum { + cmsSigChromaticityType = 0x6368726D, // 'chrm' + cmsSigColorantOrderType = 0x636C726F, // 'clro' + cmsSigColorantTableType = 0x636C7274, // 'clrt' + cmsSigCrdInfoType = 0x63726469, // 'crdi' + cmsSigCurveType = 0x63757276, // 'curv' + cmsSigDataType = 0x64617461, // 'data' + cmsSigDictType = 0x64696374, // 'dict' + cmsSigDateTimeType = 0x6474696D, // 'dtim' + cmsSigDeviceSettingsType = 0x64657673, // 'devs' + cmsSigLut16Type = 0x6d667432, // 'mft2' + cmsSigLut8Type = 0x6d667431, // 'mft1' + cmsSigLutAtoBType = 0x6d414220, // 'mAB ' + cmsSigLutBtoAType = 0x6d424120, // 'mBA ' + cmsSigMeasurementType = 0x6D656173, // 'meas' + cmsSigMultiLocalizedUnicodeType = 0x6D6C7563, // 'mluc' + cmsSigMultiProcessElementType = 0x6D706574, // 'mpet' + cmsSigNamedColorType = 0x6E636f6C, // 'ncol' -- DEPRECATED! + cmsSigNamedColor2Type = 0x6E636C32, // 'ncl2' + cmsSigParametricCurveType = 0x70617261, // 'para' + cmsSigProfileSequenceDescType = 0x70736571, // 'pseq' + cmsSigProfileSequenceIdType = 0x70736964, // 'psid' + cmsSigResponseCurveSet16Type = 0x72637332, // 'rcs2' + cmsSigS15Fixed16ArrayType = 0x73663332, // 'sf32' + cmsSigScreeningType = 0x7363726E, // 'scrn' + cmsSigSignatureType = 0x73696720, // 'sig ' + cmsSigTextType = 0x74657874, // 'text' + cmsSigTextDescriptionType = 0x64657363, // 'desc' + cmsSigU16Fixed16ArrayType = 0x75663332, // 'uf32' + cmsSigUcrBgType = 0x62666420, // 'bfd ' + cmsSigUInt16ArrayType = 0x75693136, // 'ui16' + cmsSigUInt32ArrayType = 0x75693332, // 'ui32' + cmsSigUInt64ArrayType = 0x75693634, // 'ui64' + cmsSigUInt8ArrayType = 0x75693038, // 'ui08' + cmsSigVcgtType = 0x76636774, // 'vcgt' + cmsSigViewingConditionsType = 0x76696577, // 'view' + cmsSigXYZType = 0x58595A20 // 'XYZ ' + + +} cmsTagTypeSignature; + +// Base ICC tag definitions +typedef enum { + cmsSigAToB0Tag = 0x41324230, // 'A2B0' + cmsSigAToB1Tag = 0x41324231, // 'A2B1' + cmsSigAToB2Tag = 0x41324232, // 'A2B2' + cmsSigBlueColorantTag = 0x6258595A, // 'bXYZ' + cmsSigBlueMatrixColumnTag = 0x6258595A, // 'bXYZ' + cmsSigBlueTRCTag = 0x62545243, // 'bTRC' + cmsSigBToA0Tag = 0x42324130, // 'B2A0' + cmsSigBToA1Tag = 0x42324131, // 'B2A1' + cmsSigBToA2Tag = 0x42324132, // 'B2A2' + cmsSigCalibrationDateTimeTag = 0x63616C74, // 'calt' + cmsSigCharTargetTag = 0x74617267, // 'targ' + cmsSigChromaticAdaptationTag = 0x63686164, // 'chad' + cmsSigChromaticityTag = 0x6368726D, // 'chrm' + cmsSigColorantOrderTag = 0x636C726F, // 'clro' + cmsSigColorantTableTag = 0x636C7274, // 'clrt' + cmsSigColorantTableOutTag = 0x636C6F74, // 'clot' + cmsSigColorimetricIntentImageStateTag = 0x63696973, // 'ciis' + cmsSigCopyrightTag = 0x63707274, // 'cprt' + cmsSigCrdInfoTag = 0x63726469, // 'crdi' + cmsSigDataTag = 0x64617461, // 'data' + cmsSigDateTimeTag = 0x6474696D, // 'dtim' + cmsSigDeviceMfgDescTag = 0x646D6E64, // 'dmnd' + cmsSigDeviceModelDescTag = 0x646D6464, // 'dmdd' + cmsSigDeviceSettingsTag = 0x64657673, // 'devs' + cmsSigDToB0Tag = 0x44324230, // 'D2B0' + cmsSigDToB1Tag = 0x44324231, // 'D2B1' + cmsSigDToB2Tag = 0x44324232, // 'D2B2' + cmsSigDToB3Tag = 0x44324233, // 'D2B3' + cmsSigBToD0Tag = 0x42324430, // 'B2D0' + cmsSigBToD1Tag = 0x42324431, // 'B2D1' + cmsSigBToD2Tag = 0x42324432, // 'B2D2' + cmsSigBToD3Tag = 0x42324433, // 'B2D3' + cmsSigGamutTag = 0x67616D74, // 'gamt' + cmsSigGrayTRCTag = 0x6b545243, // 'kTRC' + cmsSigGreenColorantTag = 0x6758595A, // 'gXYZ' + cmsSigGreenMatrixColumnTag = 0x6758595A, // 'gXYZ' + cmsSigGreenTRCTag = 0x67545243, // 'gTRC' + cmsSigLuminanceTag = 0x6C756d69, // 'lumi' + cmsSigMeasurementTag = 0x6D656173, // 'meas' + cmsSigMediaBlackPointTag = 0x626B7074, // 'bkpt' + cmsSigMediaWhitePointTag = 0x77747074, // 'wtpt' + cmsSigNamedColorTag = 0x6E636f6C, // 'ncol' // Deprecated by the ICC + cmsSigNamedColor2Tag = 0x6E636C32, // 'ncl2' + cmsSigOutputResponseTag = 0x72657370, // 'resp' + cmsSigPerceptualRenderingIntentGamutTag = 0x72696730, // 'rig0' + cmsSigPreview0Tag = 0x70726530, // 'pre0' + cmsSigPreview1Tag = 0x70726531, // 'pre1' + cmsSigPreview2Tag = 0x70726532, // 'pre2' + cmsSigProfileDescriptionTag = 0x64657363, // 'desc' + cmsSigProfileDescriptionMLTag = 0x6473636d, // 'dscm' + cmsSigProfileSequenceDescTag = 0x70736571, // 'pseq' + cmsSigProfileSequenceIdTag = 0x70736964, // 'psid' + cmsSigPs2CRD0Tag = 0x70736430, // 'psd0' + cmsSigPs2CRD1Tag = 0x70736431, // 'psd1' + cmsSigPs2CRD2Tag = 0x70736432, // 'psd2' + cmsSigPs2CRD3Tag = 0x70736433, // 'psd3' + cmsSigPs2CSATag = 0x70733273, // 'ps2s' + cmsSigPs2RenderingIntentTag = 0x70733269, // 'ps2i' + cmsSigRedColorantTag = 0x7258595A, // 'rXYZ' + cmsSigRedMatrixColumnTag = 0x7258595A, // 'rXYZ' + cmsSigRedTRCTag = 0x72545243, // 'rTRC' + cmsSigSaturationRenderingIntentGamutTag = 0x72696732, // 'rig2' + cmsSigScreeningDescTag = 0x73637264, // 'scrd' + cmsSigScreeningTag = 0x7363726E, // 'scrn' + cmsSigTechnologyTag = 0x74656368, // 'tech' + cmsSigUcrBgTag = 0x62666420, // 'bfd ' + cmsSigViewingCondDescTag = 0x76756564, // 'vued' + cmsSigViewingConditionsTag = 0x76696577, // 'view' + cmsSigVcgtTag = 0x76636774, // 'vcgt' + cmsSigMetaTag = 0x6D657461, // 'meta' + cmsSigArgyllArtsTag = 0x61727473 // 'arts' + +} cmsTagSignature; + + +// ICC Technology tag +typedef enum { + cmsSigDigitalCamera = 0x6463616D, // 'dcam' + cmsSigFilmScanner = 0x6673636E, // 'fscn' + cmsSigReflectiveScanner = 0x7273636E, // 'rscn' + cmsSigInkJetPrinter = 0x696A6574, // 'ijet' + cmsSigThermalWaxPrinter = 0x74776178, // 'twax' + cmsSigElectrophotographicPrinter = 0x6570686F, // 'epho' + cmsSigElectrostaticPrinter = 0x65737461, // 'esta' + cmsSigDyeSublimationPrinter = 0x64737562, // 'dsub' + cmsSigPhotographicPaperPrinter = 0x7270686F, // 'rpho' + cmsSigFilmWriter = 0x6670726E, // 'fprn' + cmsSigVideoMonitor = 0x7669646D, // 'vidm' + cmsSigVideoCamera = 0x76696463, // 'vidc' + cmsSigProjectionTelevision = 0x706A7476, // 'pjtv' + cmsSigCRTDisplay = 0x43525420, // 'CRT ' + cmsSigPMDisplay = 0x504D4420, // 'PMD ' + cmsSigAMDisplay = 0x414D4420, // 'AMD ' + cmsSigPhotoCD = 0x4B504344, // 'KPCD' + cmsSigPhotoImageSetter = 0x696D6773, // 'imgs' + cmsSigGravure = 0x67726176, // 'grav' + cmsSigOffsetLithography = 0x6F666673, // 'offs' + cmsSigSilkscreen = 0x73696C6B, // 'silk' + cmsSigFlexography = 0x666C6578, // 'flex' + cmsSigMotionPictureFilmScanner = 0x6D706673, // 'mpfs' + cmsSigMotionPictureFilmRecorder = 0x6D706672, // 'mpfr' + cmsSigDigitalMotionPictureCamera = 0x646D7063, // 'dmpc' + cmsSigDigitalCinemaProjector = 0x64636A70 // 'dcpj' + +} cmsTechnologySignature; + + +// ICC Color spaces +typedef enum { + cmsSigXYZData = 0x58595A20, // 'XYZ ' + cmsSigLabData = 0x4C616220, // 'Lab ' + cmsSigLuvData = 0x4C757620, // 'Luv ' + cmsSigYCbCrData = 0x59436272, // 'YCbr' + cmsSigYxyData = 0x59787920, // 'Yxy ' + cmsSigRgbData = 0x52474220, // 'RGB ' + cmsSigGrayData = 0x47524159, // 'GRAY' + cmsSigHsvData = 0x48535620, // 'HSV ' + cmsSigHlsData = 0x484C5320, // 'HLS ' + cmsSigCmykData = 0x434D594B, // 'CMYK' + cmsSigCmyData = 0x434D5920, // 'CMY ' + cmsSigMCH1Data = 0x4D434831, // 'MCH1' + cmsSigMCH2Data = 0x4D434832, // 'MCH2' + cmsSigMCH3Data = 0x4D434833, // 'MCH3' + cmsSigMCH4Data = 0x4D434834, // 'MCH4' + cmsSigMCH5Data = 0x4D434835, // 'MCH5' + cmsSigMCH6Data = 0x4D434836, // 'MCH6' + cmsSigMCH7Data = 0x4D434837, // 'MCH7' + cmsSigMCH8Data = 0x4D434838, // 'MCH8' + cmsSigMCH9Data = 0x4D434839, // 'MCH9' + cmsSigMCHAData = 0x4D434841, // 'MCHA' + cmsSigMCHBData = 0x4D434842, // 'MCHB' + cmsSigMCHCData = 0x4D434843, // 'MCHC' + cmsSigMCHDData = 0x4D434844, // 'MCHD' + cmsSigMCHEData = 0x4D434845, // 'MCHE' + cmsSigMCHFData = 0x4D434846, // 'MCHF' + cmsSigNamedData = 0x6e6d636c, // 'nmcl' + cmsSig1colorData = 0x31434C52, // '1CLR' + cmsSig2colorData = 0x32434C52, // '2CLR' + cmsSig3colorData = 0x33434C52, // '3CLR' + cmsSig4colorData = 0x34434C52, // '4CLR' + cmsSig5colorData = 0x35434C52, // '5CLR' + cmsSig6colorData = 0x36434C52, // '6CLR' + cmsSig7colorData = 0x37434C52, // '7CLR' + cmsSig8colorData = 0x38434C52, // '8CLR' + cmsSig9colorData = 0x39434C52, // '9CLR' + cmsSig10colorData = 0x41434C52, // 'ACLR' + cmsSig11colorData = 0x42434C52, // 'BCLR' + cmsSig12colorData = 0x43434C52, // 'CCLR' + cmsSig13colorData = 0x44434C52, // 'DCLR' + cmsSig14colorData = 0x45434C52, // 'ECLR' + cmsSig15colorData = 0x46434C52, // 'FCLR' + cmsSigLuvKData = 0x4C75764B // 'LuvK' + +} cmsColorSpaceSignature; + +// ICC Profile Class +typedef enum { + cmsSigInputClass = 0x73636E72, // 'scnr' + cmsSigDisplayClass = 0x6D6E7472, // 'mntr' + cmsSigOutputClass = 0x70727472, // 'prtr' + cmsSigLinkClass = 0x6C696E6B, // 'link' + cmsSigAbstractClass = 0x61627374, // 'abst' + cmsSigColorSpaceClass = 0x73706163, // 'spac' + cmsSigNamedColorClass = 0x6e6d636c // 'nmcl' + +} cmsProfileClassSignature; + +// ICC Platforms +typedef enum { + cmsSigMacintosh = 0x4150504C, // 'APPL' + cmsSigMicrosoft = 0x4D534654, // 'MSFT' + cmsSigSolaris = 0x53554E57, // 'SUNW' + cmsSigSGI = 0x53474920, // 'SGI ' + cmsSigTaligent = 0x54474E54, // 'TGNT' + cmsSigUnices = 0x2A6E6978 // '*nix' // From argyll -- Not official + +} cmsPlatformSignature; + +// Reference gamut +#define cmsSigPerceptualReferenceMediumGamut 0x70726d67 //'prmg' + +// For cmsSigColorimetricIntentImageStateTag +#define cmsSigSceneColorimetryEstimates 0x73636F65 //'scoe' +#define cmsSigSceneAppearanceEstimates 0x73617065 //'sape' +#define cmsSigFocalPlaneColorimetryEstimates 0x66706365 //'fpce' +#define cmsSigReflectionHardcopyOriginalColorimetry 0x72686F63 //'rhoc' +#define cmsSigReflectionPrintOutputColorimetry 0x72706F63 //'rpoc' + +// Multi process elements types +typedef enum { + cmsSigCurveSetElemType = 0x63767374, //'cvst' + cmsSigMatrixElemType = 0x6D617466, //'matf' + cmsSigCLutElemType = 0x636C7574, //'clut' + + cmsSigBAcsElemType = 0x62414353, // 'bACS' + cmsSigEAcsElemType = 0x65414353, // 'eACS' + + // Custom from here, not in the ICC Spec + cmsSigXYZ2LabElemType = 0x6C327820, // 'l2x ' + cmsSigLab2XYZElemType = 0x78326C20, // 'x2l ' + cmsSigNamedColorElemType = 0x6E636C20, // 'ncl ' + cmsSigLabV2toV4 = 0x32203420, // '2 4 ' + cmsSigLabV4toV2 = 0x34203220, // '4 2 ' + + // Identities + cmsSigIdentityElemType = 0x69646E20, // 'idn ' + + // Float to floatPCS + cmsSigLab2FloatPCS = 0x64326C20, // 'd2l ' + cmsSigFloatPCS2Lab = 0x6C326420, // 'l2d ' + cmsSigXYZ2FloatPCS = 0x64327820, // 'd2x ' + cmsSigFloatPCS2XYZ = 0x78326420, // 'x2d ' + cmsSigClipNegativesElemType = 0x636c7020 // 'clp ' + +} cmsStageSignature; + +// Types of CurveElements +typedef enum { + + cmsSigFormulaCurveSeg = 0x70617266, // 'parf' + cmsSigSampledCurveSeg = 0x73616D66, // 'samf' + cmsSigSegmentedCurve = 0x63757266 // 'curf' + +} cmsCurveSegSignature; + +// Used in ResponseCurveType +#define cmsSigStatusA 0x53746141 //'StaA' +#define cmsSigStatusE 0x53746145 //'StaE' +#define cmsSigStatusI 0x53746149 //'StaI' +#define cmsSigStatusT 0x53746154 //'StaT' +#define cmsSigStatusM 0x5374614D //'StaM' +#define cmsSigDN 0x444E2020 //'DN ' +#define cmsSigDNP 0x444E2050 //'DN P' +#define cmsSigDNN 0x444E4E20 //'DNN ' +#define cmsSigDNNP 0x444E4E50 //'DNNP' + +// Device attributes, currently defined values correspond to the low 4 bytes +// of the 8 byte attribute quantity +#define cmsReflective 0 +#define cmsTransparency 1 +#define cmsGlossy 0 +#define cmsMatte 2 + +// Common structures in ICC tags +typedef struct { + cmsUInt32Number len; + cmsUInt32Number flag; + cmsUInt8Number data[1]; + +} cmsICCData; + +// ICC date time +typedef struct { + cmsUInt16Number year; + cmsUInt16Number month; + cmsUInt16Number day; + cmsUInt16Number hours; + cmsUInt16Number minutes; + cmsUInt16Number seconds; + +} cmsDateTimeNumber; + +// ICC XYZ +typedef struct { + cmsS15Fixed16Number X; + cmsS15Fixed16Number Y; + cmsS15Fixed16Number Z; + +} cmsEncodedXYZNumber; + + +// Profile ID as computed by MD5 algorithm +typedef union { + cmsUInt8Number ID8[16]; + cmsUInt16Number ID16[8]; + cmsUInt32Number ID32[4]; + +} cmsProfileID; + + +// ---------------------------------------------------------------------------------------------- +// ICC profile internal base types. Strictly, shouldn't be declared in this header, but maybe +// somebody want to use this info for accessing profile header directly, so here it is. + +// Profile header -- it is 32-bit aligned, so no issues are expected on alignment +typedef struct { + cmsUInt32Number size; // Profile size in bytes + cmsSignature cmmId; // CMM for this profile + cmsUInt32Number version; // Format version number + cmsProfileClassSignature deviceClass; // Type of profile + cmsColorSpaceSignature colorSpace; // Color space of data + cmsColorSpaceSignature pcs; // PCS, XYZ or Lab only + cmsDateTimeNumber date; // Date profile was created + cmsSignature magic; // Magic Number to identify an ICC profile + cmsPlatformSignature platform; // Primary Platform + cmsUInt32Number flags; // Various bit settings + cmsSignature manufacturer; // Device manufacturer + cmsUInt32Number model; // Device model number + cmsUInt64Number attributes; // Device attributes + cmsUInt32Number renderingIntent;// Rendering intent + cmsEncodedXYZNumber illuminant; // Profile illuminant + cmsSignature creator; // Profile creator + cmsProfileID profileID; // Profile ID using MD5 + cmsInt8Number reserved[28]; // Reserved for future use + +} cmsICCHeader; + +// ICC base tag +typedef struct { + cmsTagTypeSignature sig; + cmsInt8Number reserved[4]; + +} cmsTagBase; + +// A tag entry in directory +typedef struct { + cmsTagSignature sig; // The tag signature + cmsUInt32Number offset; // Start of tag + cmsUInt32Number size; // Size in bytes + +} cmsTagEntry; + +// ---------------------------------------------------------------------------------------------- + +// Little CMS specific typedefs + +typedef void* cmsHANDLE ; // Generic handle +typedef void* cmsHPROFILE; // Opaque typedefs to hide internals +typedef void* cmsHTRANSFORM; + +#define cmsMAXCHANNELS 16 // Maximum number of channels in ICC profiles + +// Format of pixel is defined by one cmsUInt32Number, using bit fields as follows +// +// 2 1 0 +// 4 3 2 10987 6 5 4 3 2 1 098 7654 321 +// M A O TTTTT U Y F P X S EEE CCCC BBB +// +// M: Premultiplied alpha (only works when extra samples is 1) +// A: Floating point -- With this flag we can differentiate 16 bits as float and as int +// O: Optimized -- previous optimization already returns the final 8-bit value +// T: Pixeltype +// F: Flavor 0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla) +// P: Planar? 0=Chunky, 1=Planar +// X: swap 16 bps endianness? +// S: Do swap? ie, BGR, KYMC +// E: Extra samples +// C: Channels (Samples per pixel) +// B: bytes per sample +// Y: Swap first - changes ABGR to BGRA and KCMY to CMYK + +#define PREMUL_SH(m) ((m) << 23) +#define FLOAT_SH(a) ((a) << 22) +#define OPTIMIZED_SH(s) ((s) << 21) +#define COLORSPACE_SH(s) ((s) << 16) +#define SWAPFIRST_SH(s) ((s) << 14) +#define FLAVOR_SH(s) ((s) << 13) +#define PLANAR_SH(p) ((p) << 12) +#define ENDIAN16_SH(e) ((e) << 11) +#define DOSWAP_SH(e) ((e) << 10) +#define EXTRA_SH(e) ((e) << 7) +#define CHANNELS_SH(c) ((c) << 3) +#define BYTES_SH(b) (b) + +// These macros unpack format specifiers into integers +#define T_PREMUL(m) (((m)>>23)&1) +#define T_FLOAT(a) (((a)>>22)&1) +#define T_OPTIMIZED(o) (((o)>>21)&1) +#define T_COLORSPACE(s) (((s)>>16)&31) +#define T_SWAPFIRST(s) (((s)>>14)&1) +#define T_FLAVOR(s) (((s)>>13)&1) +#define T_PLANAR(p) (((p)>>12)&1) +#define T_ENDIAN16(e) (((e)>>11)&1) +#define T_DOSWAP(e) (((e)>>10)&1) +#define T_EXTRA(e) (((e)>>7)&7) +#define T_CHANNELS(c) (((c)>>3)&15) +#define T_BYTES(b) ((b)&7) + + +// Pixel types +#define PT_ANY 0 // Don't check colorspace + // 1 & 2 are reserved +#define PT_GRAY 3 +#define PT_RGB 4 +#define PT_CMY 5 +#define PT_CMYK 6 +#define PT_YCbCr 7 +#define PT_YUV 8 // Lu'v' +#define PT_XYZ 9 +#define PT_Lab 10 +#define PT_YUVK 11 // Lu'v'K +#define PT_HSV 12 +#define PT_HLS 13 +#define PT_Yxy 14 +#define PT_MCH1 15 +#define PT_MCH2 16 +#define PT_MCH3 17 +#define PT_MCH4 18 +#define PT_MCH5 19 +#define PT_MCH6 20 +#define PT_MCH7 21 +#define PT_MCH8 22 +#define PT_MCH9 23 +#define PT_MCH10 24 +#define PT_MCH11 25 +#define PT_MCH12 26 +#define PT_MCH13 27 +#define PT_MCH14 28 +#define PT_MCH15 29 +#define PT_LabV2 30 // Identical to PT_Lab, but using the V2 old encoding + +// Some (not all!) representations + +#ifndef TYPE_RGB_8 // TYPE_RGB_8 is a very common identifier, so don't include ours + // if user has it already defined. + +#define TYPE_GRAY_8 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)) +#define TYPE_GRAY_8_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)|FLAVOR_SH(1)) +#define TYPE_GRAY_16 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)) +#define TYPE_GRAY_16_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|FLAVOR_SH(1)) +#define TYPE_GRAY_16_SE (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_GRAYA_8 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)) +#define TYPE_GRAYA_8_PREMUL (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PREMUL_SH(1)) +#define TYPE_GRAYA_16 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)) +#define TYPE_GRAYA_16_PREMUL (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PREMUL_SH(1)) +#define TYPE_GRAYA_16_SE (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_GRAYA_8_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_GRAYA_16_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PLANAR_SH(1)) + +#define TYPE_RGB_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_RGB_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_BGR_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_BGR_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1)) +#define TYPE_RGB_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_RGB_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_RGB_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_BGR_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_BGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) +#define TYPE_BGR_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +#define TYPE_RGBA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_RGBA_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PREMUL_SH(1)) +#define TYPE_RGBA_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_RGBA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_RGBA_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PREMUL_SH(1)) +#define TYPE_RGBA_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_RGBA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +#define TYPE_ARGB_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_ARGB_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) +#define TYPE_ARGB_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1)) +#define TYPE_ARGB_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)) +#define TYPE_ARGB_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)|PREMUL_SH(1)) + +#define TYPE_ABGR_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_ABGR_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PREMUL_SH(1)) +#define TYPE_ABGR_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1)) +#define TYPE_ABGR_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_ABGR_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PREMUL_SH(1)) +#define TYPE_ABGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) +#define TYPE_ABGR_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +#define TYPE_BGRA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_BGRA_8_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) +#define TYPE_BGRA_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1)) +#define TYPE_BGRA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_BGRA_16_PREMUL (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) +#define TYPE_BGRA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) + +#define TYPE_CMY_8 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_CMY_8_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_CMY_16 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_CMY_16_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_CMY_16_SE (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +#define TYPE_CMYK_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)) +#define TYPE_CMYKA_8 (COLORSPACE_SH(PT_CMYK)|EXTRA_SH(1)|CHANNELS_SH(4)|BYTES_SH(1)) +#define TYPE_CMYK_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)) +#define TYPE_YUVK_8 TYPE_CMYK_8_REV +#define TYPE_CMYK_8_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_CMYK_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)) +#define TYPE_CMYK_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)) +#define TYPE_YUVK_16 TYPE_CMYK_16_REV +#define TYPE_CMYK_16_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_CMYK_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)) + +#define TYPE_KYMC_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +#define TYPE_KCMY_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)|SWAPFIRST_SH(1)) + +#define TYPE_CMYK5_8 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1)) +#define TYPE_CMYK5_16 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)) +#define TYPE_CMYK5_16_SE (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC5_8 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC5_16 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC5_16_SE (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK6_8 (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1)) +#define TYPE_CMYK6_8_PLANAR (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_CMYK6_16 (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)) +#define TYPE_CMYK6_16_PLANAR (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_CMYK6_16_SE (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_CMYK7_8 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1)) +#define TYPE_CMYK7_16 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)) +#define TYPE_CMYK7_16_SE (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC7_8 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC7_16 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC7_16_SE (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK8_8 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1)) +#define TYPE_CMYK8_16 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)) +#define TYPE_CMYK8_16_SE (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC8_8 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC8_16 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC8_16_SE (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK9_8 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1)) +#define TYPE_CMYK9_16 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)) +#define TYPE_CMYK9_16_SE (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC9_8 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC9_16 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC9_16_SE (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK10_8 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1)) +#define TYPE_CMYK10_16 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)) +#define TYPE_CMYK10_16_SE (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC10_8 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC10_16 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC10_16_SE (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK11_8 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1)) +#define TYPE_CMYK11_16 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)) +#define TYPE_CMYK11_16_SE (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC11_8 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC11_16 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC11_16_SE (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK12_8 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1)) +#define TYPE_CMYK12_16 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)) +#define TYPE_CMYK12_16_SE (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC12_8 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC12_16 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC12_16_SE (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +// Colorimetric +#define TYPE_XYZ_16 (COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_Lab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_LabV2_8 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1)) + +#define TYPE_ALab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_ALabV2_8 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_Lab_16 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_LabV2_16 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_Yxy_16 (COLORSPACE_SH(PT_Yxy)|CHANNELS_SH(3)|BYTES_SH(2)) + +// YCbCr +#define TYPE_YCbCr_8 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_YCbCr_8_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_YCbCr_16 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_YCbCr_16_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_YCbCr_16_SE (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// YUV +#define TYPE_YUV_8 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_YUV_8_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_YUV_16 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_YUV_16_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_YUV_16_SE (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// HLS +#define TYPE_HLS_8 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_HLS_8_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_HLS_16 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_HLS_16_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_HLS_16_SE (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// HSV +#define TYPE_HSV_8 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_HSV_8_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_HSV_16 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_HSV_16_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_HSV_16_SE (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// Named color index. Only 16 bits is allowed (don't check colorspace) +#define TYPE_NAMED_COLOR_INDEX (CHANNELS_SH(1)|BYTES_SH(2)) + +// Float formatters. +#define TYPE_XYZ_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(4)) +#define TYPE_Lab_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(4)) +#define TYPE_LabA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)) +#define TYPE_GRAY_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)) +#define TYPE_GRAYA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)|EXTRA_SH(1)) +#define TYPE_GRAYA_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)|EXTRA_SH(1)|PREMUL_SH(1)) +#define TYPE_RGB_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)) + +#define TYPE_RGBA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)) +#define TYPE_RGBA_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|PREMUL_SH(1)) +#define TYPE_ARGB_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|SWAPFIRST_SH(1)) +#define TYPE_ARGB_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|SWAPFIRST_SH(1)|PREMUL_SH(1)) +#define TYPE_BGR_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)) +#define TYPE_BGRA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_BGRA_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1)) +#define TYPE_ABGR_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)) +#define TYPE_ABGR_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|PREMUL_SH(1)) + +#define TYPE_CMYK_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(4)) + +// Floating point formatters. +// NOTE THAT 'BYTES' FIELD IS SET TO ZERO ON DLB because 8 bytes overflows the bitfield +#define TYPE_XYZ_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(0)) +#define TYPE_Lab_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(0)) +#define TYPE_GRAY_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(0)) +#define TYPE_RGB_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)) +#define TYPE_BGR_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)|DOSWAP_SH(1)) +#define TYPE_CMYK_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(0)) + +// IEEE 754-2008 "half" +#define TYPE_GRAY_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)) +#define TYPE_RGB_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_RGBA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_CMYK_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)) + +#define TYPE_RGBA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_ARGB_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)) +#define TYPE_BGR_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_BGRA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_ABGR_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) + +#endif + +// Colorspaces +typedef struct { + cmsFloat64Number X; + cmsFloat64Number Y; + cmsFloat64Number Z; + + } cmsCIEXYZ; + +typedef struct { + cmsFloat64Number x; + cmsFloat64Number y; + cmsFloat64Number Y; + + } cmsCIExyY; + +typedef struct { + cmsFloat64Number L; + cmsFloat64Number a; + cmsFloat64Number b; + + } cmsCIELab; + +typedef struct { + cmsFloat64Number L; + cmsFloat64Number C; + cmsFloat64Number h; + + } cmsCIELCh; + +typedef struct { + cmsFloat64Number J; + cmsFloat64Number C; + cmsFloat64Number h; + + } cmsJCh; + +typedef struct { + cmsCIEXYZ Red; + cmsCIEXYZ Green; + cmsCIEXYZ Blue; + + } cmsCIEXYZTRIPLE; + +typedef struct { + cmsCIExyY Red; + cmsCIExyY Green; + cmsCIExyY Blue; + + } cmsCIExyYTRIPLE; + +// Illuminant types for structs below +#define cmsILLUMINANT_TYPE_UNKNOWN 0x0000000 +#define cmsILLUMINANT_TYPE_D50 0x0000001 +#define cmsILLUMINANT_TYPE_D65 0x0000002 +#define cmsILLUMINANT_TYPE_D93 0x0000003 +#define cmsILLUMINANT_TYPE_F2 0x0000004 +#define cmsILLUMINANT_TYPE_D55 0x0000005 +#define cmsILLUMINANT_TYPE_A 0x0000006 +#define cmsILLUMINANT_TYPE_E 0x0000007 +#define cmsILLUMINANT_TYPE_F8 0x0000008 + +typedef struct { + cmsUInt32Number Observer; // 0 = unknown, 1=CIE 1931, 2=CIE 1964 + cmsCIEXYZ Backing; // Value of backing + cmsUInt32Number Geometry; // 0=unknown, 1=45/0, 0/45 2=0d, d/0 + cmsFloat64Number Flare; // 0..1.0 + cmsUInt32Number IlluminantType; + + } cmsICCMeasurementConditions; + +typedef struct { + cmsCIEXYZ IlluminantXYZ; // Not the same struct as CAM02, + cmsCIEXYZ SurroundXYZ; // This is for storing the tag + cmsUInt32Number IlluminantType; // viewing condition + + } cmsICCViewingConditions; + +// Get LittleCMS version (for shared objects) ----------------------------------------------------------------------------- + +CMSAPI int CMSEXPORT cmsGetEncodedCMMversion(void); + +// Support of non-standard functions -------------------------------------------------------------------------------------- + +CMSAPI int CMSEXPORT cmsstrcasecmp(const char* s1, const char* s2); +CMSAPI long int CMSEXPORT cmsfilelength(FILE* f); + + +// Context handling -------------------------------------------------------------------------------------------------------- + +// Each context holds its owns globals and its own plug-ins. There is a global context with the id = 0 for lecacy compatibility +// though using the global context is not recommended. Proper context handling makes lcms more thread-safe. + +typedef struct _cmsContext_struct* cmsContext; + +CMSAPI cmsContext CMSEXPORT cmsCreateContext(void* Plugin, void* UserData); +CMSAPI void CMSEXPORT cmsDeleteContext(cmsContext ContextID); +CMSAPI cmsContext CMSEXPORT cmsDupContext(cmsContext ContextID, void* NewUserData); +CMSAPI void* CMSEXPORT cmsGetContextUserData(cmsContext ContextID); + +// Plug-In registering -------------------------------------------------------------------------------------------------- + +CMSAPI cmsBool CMSEXPORT cmsPlugin(void* Plugin); +CMSAPI cmsBool CMSEXPORT cmsPluginTHR(cmsContext ContextID, void* Plugin); +CMSAPI void CMSEXPORT cmsUnregisterPlugins(void); +CMSAPI void CMSEXPORT cmsUnregisterPluginsTHR(cmsContext ContextID); + +// Error logging ---------------------------------------------------------------------------------------------------------- + +// There is no error handling at all. When a function fails, it returns proper value. +// For example, all create functions does return NULL on failure. Other may return FALSE. +// It may be interesting, for the developer, to know why the function is failing. +// for that reason, lcms2 does offer a logging function. This function will get +// an ENGLISH string with some clues on what is going wrong. You can show this +// info to the end user if you wish, or just create some sort of log on disk. +// The logging function should NOT terminate the program, as this obviously can leave +// unfreed resources. It is the programmer's responsibility to check each function +// return code to make sure it didn't fail. + +#define cmsERROR_UNDEFINED 0 +#define cmsERROR_FILE 1 +#define cmsERROR_RANGE 2 +#define cmsERROR_INTERNAL 3 +#define cmsERROR_NULL 4 +#define cmsERROR_READ 5 +#define cmsERROR_SEEK 6 +#define cmsERROR_WRITE 7 +#define cmsERROR_UNKNOWN_EXTENSION 8 +#define cmsERROR_COLORSPACE_CHECK 9 +#define cmsERROR_ALREADY_DEFINED 10 +#define cmsERROR_BAD_SIGNATURE 11 +#define cmsERROR_CORRUPTION_DETECTED 12 +#define cmsERROR_NOT_SUITABLE 13 + +// Error logger is called with the ContextID when a message is raised. This gives the +// chance to know which thread is responsible of the warning and any environment associated +// with it. Non-multithreading applications may safely ignore this parameter. +// Note that under certain special circumstances, ContextID may be NULL. +typedef void (* cmsLogErrorHandlerFunction)(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text); + +// Allows user to set any specific logger +CMSAPI void CMSEXPORT cmsSetLogErrorHandler(cmsLogErrorHandlerFunction Fn); +CMSAPI void CMSEXPORT cmsSetLogErrorHandlerTHR(cmsContext ContextID, cmsLogErrorHandlerFunction Fn); + +// Conversions -------------------------------------------------------------------------------------------------------------- + +// Returns pointers to constant structs +CMSAPI const cmsCIEXYZ* CMSEXPORT cmsD50_XYZ(void); +CMSAPI const cmsCIExyY* CMSEXPORT cmsD50_xyY(void); + +// Colorimetric space conversions +CMSAPI void CMSEXPORT cmsXYZ2xyY(cmsCIExyY* Dest, const cmsCIEXYZ* Source); +CMSAPI void CMSEXPORT cmsxyY2XYZ(cmsCIEXYZ* Dest, const cmsCIExyY* Source); +CMSAPI void CMSEXPORT cmsXYZ2Lab(const cmsCIEXYZ* WhitePoint, cmsCIELab* Lab, const cmsCIEXYZ* xyz); +CMSAPI void CMSEXPORT cmsLab2XYZ(const cmsCIEXYZ* WhitePoint, cmsCIEXYZ* xyz, const cmsCIELab* Lab); +CMSAPI void CMSEXPORT cmsLab2LCh(cmsCIELCh*LCh, const cmsCIELab* Lab); +CMSAPI void CMSEXPORT cmsLCh2Lab(cmsCIELab* Lab, const cmsCIELCh* LCh); + +// Encoding /Decoding on PCS +CMSAPI void CMSEXPORT cmsLabEncoded2Float(cmsCIELab* Lab, const cmsUInt16Number wLab[3]); +CMSAPI void CMSEXPORT cmsLabEncoded2FloatV2(cmsCIELab* Lab, const cmsUInt16Number wLab[3]); +CMSAPI void CMSEXPORT cmsFloat2LabEncoded(cmsUInt16Number wLab[3], const cmsCIELab* Lab); +CMSAPI void CMSEXPORT cmsFloat2LabEncodedV2(cmsUInt16Number wLab[3], const cmsCIELab* Lab); +CMSAPI void CMSEXPORT cmsXYZEncoded2Float(cmsCIEXYZ* fxyz, const cmsUInt16Number XYZ[3]); +CMSAPI void CMSEXPORT cmsFloat2XYZEncoded(cmsUInt16Number XYZ[3], const cmsCIEXYZ* fXYZ); + +// DeltaE metrics +CMSAPI cmsFloat64Number CMSEXPORT cmsDeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); +CMSAPI cmsFloat64Number CMSEXPORT cmsCIE94DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); +CMSAPI cmsFloat64Number CMSEXPORT cmsBFDdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); +CMSAPI cmsFloat64Number CMSEXPORT cmsCMCdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number l, cmsFloat64Number c); +CMSAPI cmsFloat64Number CMSEXPORT cmsCIE2000DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number Kl, cmsFloat64Number Kc, cmsFloat64Number Kh); + +// Temperature <-> Chromaticity (Black body) +CMSAPI cmsBool CMSEXPORT cmsWhitePointFromTemp(cmsCIExyY* WhitePoint, cmsFloat64Number TempK); +CMSAPI cmsBool CMSEXPORT cmsTempFromWhitePoint(cmsFloat64Number* TempK, const cmsCIExyY* WhitePoint); + +// Chromatic adaptation +CMSAPI cmsBool CMSEXPORT cmsAdaptToIlluminant(cmsCIEXYZ* Result, const cmsCIEXYZ* SourceWhitePt, + const cmsCIEXYZ* Illuminant, + const cmsCIEXYZ* Value); + +// CIECAM02 --------------------------------------------------------------------------------------------------- + +// Viewing conditions. Please note those are CAM model viewing conditions, and not the ICC tag viewing +// conditions, which I'm naming cmsICCViewingConditions to make differences evident. Unfortunately, the tag +// cannot deal with surround La, Yb and D value so is basically useless to store CAM02 viewing conditions. + + +#define AVG_SURROUND 1 +#define DIM_SURROUND 2 +#define DARK_SURROUND 3 +#define CUTSHEET_SURROUND 4 + +#define D_CALCULATE (-1) + +typedef struct { + cmsCIEXYZ whitePoint; + cmsFloat64Number Yb; + cmsFloat64Number La; + cmsUInt32Number surround; + cmsFloat64Number D_value; + + } cmsViewingConditions; + +CMSAPI cmsHANDLE CMSEXPORT cmsCIECAM02Init(cmsContext ContextID, const cmsViewingConditions* pVC); +CMSAPI void CMSEXPORT cmsCIECAM02Done(cmsHANDLE hModel); +CMSAPI void CMSEXPORT cmsCIECAM02Forward(cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut); +CMSAPI void CMSEXPORT cmsCIECAM02Reverse(cmsHANDLE hModel, const cmsJCh* pIn, cmsCIEXYZ* pOut); + + +// Tone curves ----------------------------------------------------------------------------------------- + +// This describes a curve segment. For a table of supported types, see the manual. User can increase the number of +// available types by using a proper plug-in. Parametric segments allow 10 parameters at most + +typedef struct { + cmsFloat32Number x0, x1; // Domain; for x0 < x <= x1 + cmsInt32Number Type; // Parametric type, Type == 0 means sampled segment. Negative values are reserved + cmsFloat64Number Params[10]; // Parameters if Type != 0 + cmsUInt32Number nGridPoints; // Number of grid points if Type == 0 + cmsFloat32Number* SampledPoints; // Points to an array of floats if Type == 0 + +} cmsCurveSegment; + +// The internal representation is none of your business. +typedef struct _cms_curve_struct cmsToneCurve; + +CMSAPI cmsToneCurve* CMSEXPORT cmsBuildSegmentedToneCurve(cmsContext ContextID, cmsUInt32Number nSegments, const cmsCurveSegment Segments[]); +CMSAPI cmsToneCurve* CMSEXPORT cmsBuildParametricToneCurve(cmsContext ContextID, cmsInt32Number Type, const cmsFloat64Number Params[]); +CMSAPI cmsToneCurve* CMSEXPORT cmsBuildGamma(cmsContext ContextID, cmsFloat64Number Gamma); +CMSAPI cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurve16(cmsContext ContextID, cmsUInt32Number nEntries, const cmsUInt16Number values[]); +CMSAPI cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurveFloat(cmsContext ContextID, cmsUInt32Number nEntries, const cmsFloat32Number values[]); +CMSAPI void CMSEXPORT cmsFreeToneCurve(cmsToneCurve* Curve); +CMSAPI void CMSEXPORT cmsFreeToneCurveTriple(cmsToneCurve* Curve[3]); +CMSAPI cmsToneCurve* CMSEXPORT cmsDupToneCurve(const cmsToneCurve* Src); +CMSAPI cmsToneCurve* CMSEXPORT cmsReverseToneCurve(const cmsToneCurve* InGamma); +CMSAPI cmsToneCurve* CMSEXPORT cmsReverseToneCurveEx(cmsUInt32Number nResultSamples, const cmsToneCurve* InGamma); +CMSAPI cmsToneCurve* CMSEXPORT cmsJoinToneCurve(cmsContext ContextID, const cmsToneCurve* X, const cmsToneCurve* Y, cmsUInt32Number nPoints); +CMSAPI cmsBool CMSEXPORT cmsSmoothToneCurve(cmsToneCurve* Tab, cmsFloat64Number lambda); +CMSAPI cmsFloat32Number CMSEXPORT cmsEvalToneCurveFloat(const cmsToneCurve* Curve, cmsFloat32Number v); +CMSAPI cmsUInt16Number CMSEXPORT cmsEvalToneCurve16(const cmsToneCurve* Curve, cmsUInt16Number v); +CMSAPI cmsBool CMSEXPORT cmsIsToneCurveMultisegment(const cmsToneCurve* InGamma); +CMSAPI cmsBool CMSEXPORT cmsIsToneCurveLinear(const cmsToneCurve* Curve); +CMSAPI cmsBool CMSEXPORT cmsIsToneCurveMonotonic(const cmsToneCurve* t); +CMSAPI cmsBool CMSEXPORT cmsIsToneCurveDescending(const cmsToneCurve* t); +CMSAPI cmsInt32Number CMSEXPORT cmsGetToneCurveParametricType(const cmsToneCurve* t); +CMSAPI cmsFloat64Number CMSEXPORT cmsEstimateGamma(const cmsToneCurve* t, cmsFloat64Number Precision); +CMSAPI cmsFloat64Number* CMSEXPORT cmsGetToneCurveParams(const cmsToneCurve* t); + +// Tone curve tabular estimation +CMSAPI cmsUInt32Number CMSEXPORT cmsGetToneCurveEstimatedTableEntries(const cmsToneCurve* t); +CMSAPI const cmsUInt16Number* CMSEXPORT cmsGetToneCurveEstimatedTable(const cmsToneCurve* t); + + +// Implements pipelines of multi-processing elements ------------------------------------------------------------- + +// Nothing to see here, move along +typedef struct _cmsPipeline_struct cmsPipeline; +typedef struct _cmsStage_struct cmsStage; + +// Those are hi-level pipelines +CMSAPI cmsPipeline* CMSEXPORT cmsPipelineAlloc(cmsContext ContextID, cmsUInt32Number InputChannels, cmsUInt32Number OutputChannels); +CMSAPI void CMSEXPORT cmsPipelineFree(cmsPipeline* lut); +CMSAPI cmsPipeline* CMSEXPORT cmsPipelineDup(const cmsPipeline* Orig); + +CMSAPI cmsContext CMSEXPORT cmsGetPipelineContextID(const cmsPipeline* lut); +CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineInputChannels(const cmsPipeline* lut); +CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineOutputChannels(const cmsPipeline* lut); + +CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineStageCount(const cmsPipeline* lut); +CMSAPI cmsStage* CMSEXPORT cmsPipelineGetPtrToFirstStage(const cmsPipeline* lut); +CMSAPI cmsStage* CMSEXPORT cmsPipelineGetPtrToLastStage(const cmsPipeline* lut); + +CMSAPI void CMSEXPORT cmsPipelineEval16(const cmsUInt16Number In[], cmsUInt16Number Out[], const cmsPipeline* lut); +CMSAPI void CMSEXPORT cmsPipelineEvalFloat(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsPipeline* lut); +CMSAPI cmsBool CMSEXPORT cmsPipelineEvalReverseFloat(cmsFloat32Number Target[], cmsFloat32Number Result[], cmsFloat32Number Hint[], const cmsPipeline* lut); +CMSAPI cmsBool CMSEXPORT cmsPipelineCat(cmsPipeline* l1, const cmsPipeline* l2); +CMSAPI cmsBool CMSEXPORT cmsPipelineSetSaveAs8bitsFlag(cmsPipeline* lut, cmsBool On); + +// Where to place/locate the stages in the pipeline chain +typedef enum { cmsAT_BEGIN, cmsAT_END } cmsStageLoc; + +CMSAPI cmsBool CMSEXPORT cmsPipelineInsertStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage* mpe); +CMSAPI void CMSEXPORT cmsPipelineUnlinkStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage** mpe); + +// This function is quite useful to analyze the structure of a Pipeline and retrieve the Stage elements +// that conform the Pipeline. It should be called with the Pipeline, the number of expected elements and +// then a list of expected types followed with a list of double pointers to Stage elements. If +// the function founds a match with current pipeline, it fills the pointers and returns TRUE +// if not, returns FALSE without touching anything. +CMSAPI cmsBool CMSEXPORT cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, cmsUInt32Number n, ...); + +// Matrix has double precision and CLUT has only float precision. That is because an ICC profile can encode +// matrices with far more precision that CLUTS +CMSAPI cmsStage* CMSEXPORT cmsStageAllocIdentity(cmsContext ContextID, cmsUInt32Number nChannels); +CMSAPI cmsStage* CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Number nChannels, cmsToneCurve* const Curves[]); +CMSAPI cmsStage* CMSEXPORT cmsStageAllocMatrix(cmsContext ContextID, cmsUInt32Number Rows, cmsUInt32Number Cols, const cmsFloat64Number* Matrix, const cmsFloat64Number* Offset); + +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); + +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); +CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); + +CMSAPI cmsStage* CMSEXPORT cmsStageDup(cmsStage* mpe); +CMSAPI void CMSEXPORT cmsStageFree(cmsStage* mpe); +CMSAPI cmsStage* CMSEXPORT cmsStageNext(const cmsStage* mpe); + +CMSAPI cmsUInt32Number CMSEXPORT cmsStageInputChannels(const cmsStage* mpe); +CMSAPI cmsUInt32Number CMSEXPORT cmsStageOutputChannels(const cmsStage* mpe); +CMSAPI cmsStageSignature CMSEXPORT cmsStageType(const cmsStage* mpe); +CMSAPI void* CMSEXPORT cmsStageData(const cmsStage* mpe); +CMSAPI cmsContext CMSEXPORT cmsGetStageContextID(const cmsStage* mpe); + +// Sampling +typedef cmsInt32Number (* cmsSAMPLER16) (CMSREGISTER const cmsUInt16Number In[], + CMSREGISTER cmsUInt16Number Out[], + CMSREGISTER void * Cargo); + +typedef cmsInt32Number (* cmsSAMPLERFLOAT)(CMSREGISTER const cmsFloat32Number In[], + CMSREGISTER cmsFloat32Number Out[], + CMSREGISTER void * Cargo); + +// Use this flag to prevent changes being written to destination +#define SAMPLER_INSPECT 0x01000000 + +// For CLUT only +CMSAPI cmsBool CMSEXPORT cmsStageSampleCLut16bit(cmsStage* mpe, cmsSAMPLER16 Sampler, void* Cargo, cmsUInt32Number dwFlags); +CMSAPI cmsBool CMSEXPORT cmsStageSampleCLutFloat(cmsStage* mpe, cmsSAMPLERFLOAT Sampler, void* Cargo, cmsUInt32Number dwFlags); + +// Slicers +CMSAPI cmsBool CMSEXPORT cmsSliceSpace16(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], + cmsSAMPLER16 Sampler, void * Cargo); + +CMSAPI cmsBool CMSEXPORT cmsSliceSpaceFloat(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], + cmsSAMPLERFLOAT Sampler, void * Cargo); + +// Multilocalized Unicode management --------------------------------------------------------------------------------------- + +typedef struct _cms_MLU_struct cmsMLU; + +#define cmsNoLanguage "\0\0" +#define cmsNoCountry "\0\0" + +CMSAPI cmsMLU* CMSEXPORT cmsMLUalloc(cmsContext ContextID, cmsUInt32Number nItems); +CMSAPI void CMSEXPORT cmsMLUfree(cmsMLU* mlu); +CMSAPI cmsMLU* CMSEXPORT cmsMLUdup(const cmsMLU* mlu); + +CMSAPI cmsBool CMSEXPORT cmsMLUsetASCII(cmsMLU* mlu, + const char LanguageCode[3], const char CountryCode[3], + const char* ASCIIString); +CMSAPI cmsBool CMSEXPORT cmsMLUsetWide(cmsMLU* mlu, + const char LanguageCode[3], const char CountryCode[3], + const wchar_t* WideString); + +CMSAPI cmsUInt32Number CMSEXPORT cmsMLUgetASCII(const cmsMLU* mlu, + const char LanguageCode[3], const char CountryCode[3], + char* Buffer, cmsUInt32Number BufferSize); + +CMSAPI cmsUInt32Number CMSEXPORT cmsMLUgetWide(const cmsMLU* mlu, + const char LanguageCode[3], const char CountryCode[3], + wchar_t* Buffer, cmsUInt32Number BufferSize); + +CMSAPI cmsBool CMSEXPORT cmsMLUgetTranslation(const cmsMLU* mlu, + const char LanguageCode[3], const char CountryCode[3], + char ObtainedLanguage[3], char ObtainedCountry[3]); + +CMSAPI cmsUInt32Number CMSEXPORT cmsMLUtranslationsCount(const cmsMLU* mlu); + +CMSAPI cmsBool CMSEXPORT cmsMLUtranslationsCodes(const cmsMLU* mlu, + cmsUInt32Number idx, + char LanguageCode[3], + char CountryCode[3]); + +// Undercolorremoval & black generation ------------------------------------------------------------------------------------- + +typedef struct { + cmsToneCurve* Ucr; + cmsToneCurve* Bg; + cmsMLU* Desc; + +} cmsUcrBg; + +// Screening ---------------------------------------------------------------------------------------------------------------- + +#define cmsPRINTER_DEFAULT_SCREENS 0x0001 +#define cmsFREQUENCE_UNITS_LINES_CM 0x0000 +#define cmsFREQUENCE_UNITS_LINES_INCH 0x0002 + +#define cmsSPOT_UNKNOWN 0 +#define cmsSPOT_PRINTER_DEFAULT 1 +#define cmsSPOT_ROUND 2 +#define cmsSPOT_DIAMOND 3 +#define cmsSPOT_ELLIPSE 4 +#define cmsSPOT_LINE 5 +#define cmsSPOT_SQUARE 6 +#define cmsSPOT_CROSS 7 + +typedef struct { + cmsFloat64Number Frequency; + cmsFloat64Number ScreenAngle; + cmsUInt32Number SpotShape; + +} cmsScreeningChannel; + +typedef struct { + cmsUInt32Number Flag; + cmsUInt32Number nChannels; + cmsScreeningChannel Channels[cmsMAXCHANNELS]; + +} cmsScreening; + + +// Named color ----------------------------------------------------------------------------------------------------------------- + +typedef struct _cms_NAMEDCOLORLIST_struct cmsNAMEDCOLORLIST; + +CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsAllocNamedColorList(cmsContext ContextID, + cmsUInt32Number n, + cmsUInt32Number ColorantCount, + const char* Prefix, const char* Suffix); + +CMSAPI void CMSEXPORT cmsFreeNamedColorList(cmsNAMEDCOLORLIST* v); +CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsDupNamedColorList(const cmsNAMEDCOLORLIST* v); +CMSAPI cmsBool CMSEXPORT cmsAppendNamedColor(cmsNAMEDCOLORLIST* v, const char* Name, + cmsUInt16Number PCS[3], + cmsUInt16Number Colorant[cmsMAXCHANNELS]); + +CMSAPI cmsUInt32Number CMSEXPORT cmsNamedColorCount(const cmsNAMEDCOLORLIST* v); +CMSAPI cmsInt32Number CMSEXPORT cmsNamedColorIndex(const cmsNAMEDCOLORLIST* v, const char* Name); + +CMSAPI cmsBool CMSEXPORT cmsNamedColorInfo(const cmsNAMEDCOLORLIST* NamedColorList, cmsUInt32Number nColor, + char* Name, + char* Prefix, + char* Suffix, + cmsUInt16Number* PCS, + cmsUInt16Number* Colorant); + +// Retrieve named color list from transform +CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsGetNamedColorList(cmsHTRANSFORM xform); + +// Profile sequence ----------------------------------------------------------------------------------------------------- + +// Profile sequence descriptor. Some fields come from profile sequence descriptor tag, others +// come from Profile Sequence Identifier Tag +typedef struct { + + cmsSignature deviceMfg; + cmsSignature deviceModel; + cmsUInt64Number attributes; + cmsTechnologySignature technology; + cmsProfileID ProfileID; + cmsMLU* Manufacturer; + cmsMLU* Model; + cmsMLU* Description; + +} cmsPSEQDESC; + +typedef struct { + + cmsUInt32Number n; + cmsContext ContextID; + cmsPSEQDESC* seq; + +} cmsSEQ; + +CMSAPI cmsSEQ* CMSEXPORT cmsAllocProfileSequenceDescription(cmsContext ContextID, cmsUInt32Number n); +CMSAPI cmsSEQ* CMSEXPORT cmsDupProfileSequenceDescription(const cmsSEQ* pseq); +CMSAPI void CMSEXPORT cmsFreeProfileSequenceDescription(cmsSEQ* pseq); + +// Dictionaries -------------------------------------------------------------------------------------------------------- + +typedef struct _cmsDICTentry_struct { + + struct _cmsDICTentry_struct* Next; + + cmsMLU *DisplayName; + cmsMLU *DisplayValue; + wchar_t* Name; + wchar_t* Value; + +} cmsDICTentry; + +CMSAPI cmsHANDLE CMSEXPORT cmsDictAlloc(cmsContext ContextID); +CMSAPI void CMSEXPORT cmsDictFree(cmsHANDLE hDict); +CMSAPI cmsHANDLE CMSEXPORT cmsDictDup(cmsHANDLE hDict); + +CMSAPI cmsBool CMSEXPORT cmsDictAddEntry(cmsHANDLE hDict, const wchar_t* Name, const wchar_t* Value, const cmsMLU *DisplayName, const cmsMLU *DisplayValue); +CMSAPI const cmsDICTentry* CMSEXPORT cmsDictGetEntryList(cmsHANDLE hDict); +CMSAPI const cmsDICTentry* CMSEXPORT cmsDictNextEntry(const cmsDICTentry* e); + +// Access to Profile data ---------------------------------------------------------------------------------------------- +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateProfilePlaceholder(cmsContext ContextID); + +CMSAPI cmsContext CMSEXPORT cmsGetProfileContextID(cmsHPROFILE hProfile); +CMSAPI cmsInt32Number CMSEXPORT cmsGetTagCount(cmsHPROFILE hProfile); +CMSAPI cmsTagSignature CMSEXPORT cmsGetTagSignature(cmsHPROFILE hProfile, cmsUInt32Number n); +CMSAPI cmsBool CMSEXPORT cmsIsTag(cmsHPROFILE hProfile, cmsTagSignature sig); + +// Read and write pre-formatted data +CMSAPI void* CMSEXPORT cmsReadTag(cmsHPROFILE hProfile, cmsTagSignature sig); +CMSAPI cmsBool CMSEXPORT cmsWriteTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data); +CMSAPI cmsBool CMSEXPORT cmsLinkTag(cmsHPROFILE hProfile, cmsTagSignature sig, cmsTagSignature dest); +CMSAPI cmsTagSignature CMSEXPORT cmsTagLinkedTo(cmsHPROFILE hProfile, cmsTagSignature sig); + +// Read and write raw data +CMSAPI cmsUInt32Number CMSEXPORT cmsReadRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, void* Buffer, cmsUInt32Number BufferSize); +CMSAPI cmsBool CMSEXPORT cmsWriteRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data, cmsUInt32Number Size); + +// Access header data +#define cmsEmbeddedProfileFalse 0x00000000 +#define cmsEmbeddedProfileTrue 0x00000001 +#define cmsUseAnywhere 0x00000000 +#define cmsUseWithEmbeddedDataOnly 0x00000002 + +CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderFlags(cmsHPROFILE hProfile); +CMSAPI void CMSEXPORT cmsGetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number* Flags); +CMSAPI void CMSEXPORT cmsGetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID); +CMSAPI cmsBool CMSEXPORT cmsGetHeaderCreationDateTime(cmsHPROFILE hProfile, struct tm *Dest); +CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderRenderingIntent(cmsHPROFILE hProfile); + +CMSAPI void CMSEXPORT cmsSetHeaderFlags(cmsHPROFILE hProfile, cmsUInt32Number Flags); +CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderManufacturer(cmsHPROFILE hProfile); +CMSAPI void CMSEXPORT cmsSetHeaderManufacturer(cmsHPROFILE hProfile, cmsUInt32Number manufacturer); +CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderCreator(cmsHPROFILE hProfile); +CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderModel(cmsHPROFILE hProfile); +CMSAPI void CMSEXPORT cmsSetHeaderModel(cmsHPROFILE hProfile, cmsUInt32Number model); +CMSAPI void CMSEXPORT cmsSetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number Flags); +CMSAPI void CMSEXPORT cmsSetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID); +CMSAPI void CMSEXPORT cmsSetHeaderRenderingIntent(cmsHPROFILE hProfile, cmsUInt32Number RenderingIntent); + +CMSAPI cmsColorSpaceSignature + CMSEXPORT cmsGetPCS(cmsHPROFILE hProfile); +CMSAPI void CMSEXPORT cmsSetPCS(cmsHPROFILE hProfile, cmsColorSpaceSignature pcs); +CMSAPI cmsColorSpaceSignature + CMSEXPORT cmsGetColorSpace(cmsHPROFILE hProfile); +CMSAPI void CMSEXPORT cmsSetColorSpace(cmsHPROFILE hProfile, cmsColorSpaceSignature sig); +CMSAPI cmsProfileClassSignature + CMSEXPORT cmsGetDeviceClass(cmsHPROFILE hProfile); +CMSAPI void CMSEXPORT cmsSetDeviceClass(cmsHPROFILE hProfile, cmsProfileClassSignature sig); +CMSAPI void CMSEXPORT cmsSetProfileVersion(cmsHPROFILE hProfile, cmsFloat64Number Version); +CMSAPI cmsFloat64Number CMSEXPORT cmsGetProfileVersion(cmsHPROFILE hProfile); + +CMSAPI cmsUInt32Number CMSEXPORT cmsGetEncodedICCversion(cmsHPROFILE hProfile); +CMSAPI void CMSEXPORT cmsSetEncodedICCversion(cmsHPROFILE hProfile, cmsUInt32Number Version); + +// How profiles may be used +#define LCMS_USED_AS_INPUT 0 +#define LCMS_USED_AS_OUTPUT 1 +#define LCMS_USED_AS_PROOF 2 + +CMSAPI cmsBool CMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection); +CMSAPI cmsBool CMSEXPORT cmsIsMatrixShaper(cmsHPROFILE hProfile); +CMSAPI cmsBool CMSEXPORT cmsIsCLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection); + +// Translate form/to our notation to ICC +CMSAPI cmsColorSpaceSignature CMSEXPORT _cmsICCcolorSpace(int OurNotation); +CMSAPI int CMSEXPORT _cmsLCMScolorSpace(cmsColorSpaceSignature ProfileSpace); + +CMSAPI cmsUInt32Number CMSEXPORT cmsChannelsOf(cmsColorSpaceSignature ColorSpace); + +// Build a suitable formatter for the colorspace of this profile. nBytes=1 means 8 bits, nBytes=2 means 16 bits. +CMSAPI cmsUInt32Number CMSEXPORT cmsFormatterForColorspaceOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat); +CMSAPI cmsUInt32Number CMSEXPORT cmsFormatterForPCSOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat); + + +// Localized info +typedef enum { + cmsInfoDescription = 0, + cmsInfoManufacturer = 1, + cmsInfoModel = 2, + cmsInfoCopyright = 3 +} cmsInfoType; + +CMSAPI cmsUInt32Number CMSEXPORT cmsGetProfileInfo(cmsHPROFILE hProfile, cmsInfoType Info, + const char LanguageCode[3], const char CountryCode[3], + wchar_t* Buffer, cmsUInt32Number BufferSize); + +CMSAPI cmsUInt32Number CMSEXPORT cmsGetProfileInfoASCII(cmsHPROFILE hProfile, cmsInfoType Info, + const char LanguageCode[3], const char CountryCode[3], + char* Buffer, cmsUInt32Number BufferSize); + +// IO handlers ---------------------------------------------------------------------------------------------------------- + +typedef struct _cms_io_handler cmsIOHANDLER; + +CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromFile(cmsContext ContextID, const char* FileName, const char* AccessMode); +CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromStream(cmsContext ContextID, FILE* Stream); +CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromMem(cmsContext ContextID, void *Buffer, cmsUInt32Number size, const char* AccessMode); +CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromNULL(cmsContext ContextID); +CMSAPI cmsIOHANDLER* CMSEXPORT cmsGetProfileIOhandler(cmsHPROFILE hProfile); +CMSAPI cmsBool CMSEXPORT cmsCloseIOhandler(cmsIOHANDLER* io); + +// MD5 message digest -------------------------------------------------------------------------------------------------- + +CMSAPI cmsBool CMSEXPORT cmsMD5computeID(cmsHPROFILE hProfile); + +// Profile high level functions ------------------------------------------------------------------------------------------ + +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess); +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFileTHR(cmsContext ContextID, const char *ICCProfile, const char *sAccess); +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess); +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromStreamTHR(cmsContext ContextID, FILE* ICCProfile, const char* sAccess); +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromMem(const void * MemPtr, cmsUInt32Number dwSize); +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromMemTHR(cmsContext ContextID, const void * MemPtr, cmsUInt32Number dwSize); +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromIOhandlerTHR(cmsContext ContextID, cmsIOHANDLER* io); +CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromIOhandler2THR(cmsContext ContextID, cmsIOHANDLER* io, cmsBool write); +CMSAPI cmsBool CMSEXPORT cmsCloseProfile(cmsHPROFILE hProfile); + +CMSAPI cmsBool CMSEXPORT cmsSaveProfileToFile(cmsHPROFILE hProfile, const char* FileName); +CMSAPI cmsBool CMSEXPORT cmsSaveProfileToStream(cmsHPROFILE hProfile, FILE* Stream); +CMSAPI cmsBool CMSEXPORT cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, cmsUInt32Number* BytesNeeded); +CMSAPI cmsUInt32Number CMSEXPORT cmsSaveProfileToIOhandler(cmsHPROFILE hProfile, cmsIOHANDLER* io); + +// Predefined virtual profiles ------------------------------------------------------------------------------------------ + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateRGBProfileTHR(cmsContext ContextID, + const cmsCIExyY* WhitePoint, + const cmsCIExyYTRIPLE* Primaries, + cmsToneCurve* const TransferFunction[3]); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateRGBProfile(const cmsCIExyY* WhitePoint, + const cmsCIExyYTRIPLE* Primaries, + cmsToneCurve* const TransferFunction[3]); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateGrayProfileTHR(cmsContext ContextID, + const cmsCIExyY* WhitePoint, + const cmsToneCurve* TransferFunction); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateGrayProfile(const cmsCIExyY* WhitePoint, + const cmsToneCurve* TransferFunction); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLinkTHR(cmsContext ContextID, + cmsColorSpaceSignature ColorSpace, + cmsToneCurve* const TransferFunctions[]); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLink(cmsColorSpaceSignature ColorSpace, + cmsToneCurve* const TransferFunctions[]); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLinkTHR(cmsContext ContextID, + cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLink(cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit); + + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab2ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint); +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab2Profile(const cmsCIExyY* WhitePoint); +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab4ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint); +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab4Profile(const cmsCIExyY* WhitePoint); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateXYZProfileTHR(cmsContext ContextID); +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateXYZProfile(void); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfileTHR(cmsContext ContextID); +CMSAPI cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfile(void); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfileTHR(cmsContext ContextID, + cmsUInt32Number nLUTPoints, + cmsFloat64Number Bright, + cmsFloat64Number Contrast, + cmsFloat64Number Hue, + cmsFloat64Number Saturation, + cmsUInt32Number TempSrc, + cmsUInt32Number TempDest); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfile(cmsUInt32Number nLUTPoints, + cmsFloat64Number Bright, + cmsFloat64Number Contrast, + cmsFloat64Number Hue, + cmsFloat64Number Saturation, + cmsUInt32Number TempSrc, + cmsUInt32Number TempDest); + +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateNULLProfileTHR(cmsContext ContextID); +CMSAPI cmsHPROFILE CMSEXPORT cmsCreateNULLProfile(void); + +// Converts a transform to a devicelink profile +CMSAPI cmsHPROFILE CMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, cmsFloat64Number Version, cmsUInt32Number dwFlags); + +// Intents ---------------------------------------------------------------------------------------------- + +// ICC Intents +#define INTENT_PERCEPTUAL 0 +#define INTENT_RELATIVE_COLORIMETRIC 1 +#define INTENT_SATURATION 2 +#define INTENT_ABSOLUTE_COLORIMETRIC 3 + +// Non-ICC intents +#define INTENT_PRESERVE_K_ONLY_PERCEPTUAL 10 +#define INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC 11 +#define INTENT_PRESERVE_K_ONLY_SATURATION 12 +#define INTENT_PRESERVE_K_PLANE_PERCEPTUAL 13 +#define INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC 14 +#define INTENT_PRESERVE_K_PLANE_SATURATION 15 + +// Call with NULL as parameters to get the intent count +CMSAPI cmsUInt32Number CMSEXPORT cmsGetSupportedIntents(cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions); +CMSAPI cmsUInt32Number CMSEXPORT cmsGetSupportedIntentsTHR(cmsContext ContextID, cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions); + +// Flags + +#define cmsFLAGS_NOCACHE 0x0040 // Inhibit 1-pixel cache +#define cmsFLAGS_NOOPTIMIZE 0x0100 // Inhibit optimizations +#define cmsFLAGS_NULLTRANSFORM 0x0200 // Don't transform anyway + +// Proofing flags +#define cmsFLAGS_GAMUTCHECK 0x1000 // Out of Gamut alarm +#define cmsFLAGS_SOFTPROOFING 0x4000 // Do softproofing + +// Misc +#define cmsFLAGS_BLACKPOINTCOMPENSATION 0x2000 +#define cmsFLAGS_NOWHITEONWHITEFIXUP 0x0004 // Don't fix scum dot +#define cmsFLAGS_HIGHRESPRECALC 0x0400 // Use more memory to give better accuracy +#define cmsFLAGS_LOWRESPRECALC 0x0800 // Use less memory to minimize resources + +// For devicelink creation +#define cmsFLAGS_8BITS_DEVICELINK 0x0008 // Create 8 bits devicelinks +#define cmsFLAGS_GUESSDEVICECLASS 0x0020 // Guess device class (for transform2devicelink) +#define cmsFLAGS_KEEP_SEQUENCE 0x0080 // Keep profile sequence for devicelink creation + +// Specific to a particular optimizations +#define cmsFLAGS_FORCE_CLUT 0x0002 // Force CLUT optimization +#define cmsFLAGS_CLUT_POST_LINEARIZATION 0x0001 // create postlinearization tables if possible +#define cmsFLAGS_CLUT_PRE_LINEARIZATION 0x0010 // create prelinearization tables if possible + +// Specific to unbounded mode +#define cmsFLAGS_NONEGATIVES 0x8000 // Prevent negative numbers in floating point transforms + +// Copy alpha channels when transforming +#define cmsFLAGS_COPY_ALPHA 0x04000000 // Alpha channels are copied on cmsDoTransform() + +// Fine-tune control over number of gridpoints +#define cmsFLAGS_GRIDPOINTS(n) (((n) & 0xFF) << 16) + +// CRD special +#define cmsFLAGS_NODEFAULTRESOURCEDEF 0x01000000 + +// Transforms --------------------------------------------------------------------------------------------------- + +CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateTransformTHR(cmsContext ContextID, + cmsHPROFILE Input, + cmsUInt32Number InputFormat, + cmsHPROFILE Output, + cmsUInt32Number OutputFormat, + cmsUInt32Number Intent, + cmsUInt32Number dwFlags); + +CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateTransform(cmsHPROFILE Input, + cmsUInt32Number InputFormat, + cmsHPROFILE Output, + cmsUInt32Number OutputFormat, + cmsUInt32Number Intent, + cmsUInt32Number dwFlags); + +CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransformTHR(cmsContext ContextID, + cmsHPROFILE Input, + cmsUInt32Number InputFormat, + cmsHPROFILE Output, + cmsUInt32Number OutputFormat, + cmsHPROFILE Proofing, + cmsUInt32Number Intent, + cmsUInt32Number ProofingIntent, + cmsUInt32Number dwFlags); + +CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransform(cmsHPROFILE Input, + cmsUInt32Number InputFormat, + cmsHPROFILE Output, + cmsUInt32Number OutputFormat, + cmsHPROFILE Proofing, + cmsUInt32Number Intent, + cmsUInt32Number ProofingIntent, + cmsUInt32Number dwFlags); + +CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransformTHR(cmsContext ContextID, + cmsHPROFILE hProfiles[], + cmsUInt32Number nProfiles, + cmsUInt32Number InputFormat, + cmsUInt32Number OutputFormat, + cmsUInt32Number Intent, + cmsUInt32Number dwFlags); + + +CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransform(cmsHPROFILE hProfiles[], + cmsUInt32Number nProfiles, + cmsUInt32Number InputFormat, + cmsUInt32Number OutputFormat, + cmsUInt32Number Intent, + cmsUInt32Number dwFlags); + + +CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateExtendedTransform(cmsContext ContextID, + cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[], + cmsBool BPC[], + cmsUInt32Number Intents[], + cmsFloat64Number AdaptationStates[], + cmsHPROFILE hGamutProfile, + cmsUInt32Number nGamutPCSposition, + cmsUInt32Number InputFormat, + cmsUInt32Number OutputFormat, + cmsUInt32Number dwFlags); + +CMSAPI void CMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform); + +CMSAPI void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, + const void * InputBuffer, + void * OutputBuffer, + cmsUInt32Number Size); + +CMSAPI void CMSEXPORT cmsDoTransformStride(cmsHTRANSFORM Transform, // Deprecated + const void * InputBuffer, + void * OutputBuffer, + cmsUInt32Number Size, + cmsUInt32Number Stride); + +CMSAPI void CMSEXPORT cmsDoTransformLineStride(cmsHTRANSFORM Transform, + const void* InputBuffer, + void* OutputBuffer, + cmsUInt32Number PixelsPerLine, + cmsUInt32Number LineCount, + cmsUInt32Number BytesPerLineIn, + cmsUInt32Number BytesPerLineOut, + cmsUInt32Number BytesPerPlaneIn, + cmsUInt32Number BytesPerPlaneOut); + + +CMSAPI void CMSEXPORT cmsSetAlarmCodes(const cmsUInt16Number NewAlarm[cmsMAXCHANNELS]); +CMSAPI void CMSEXPORT cmsGetAlarmCodes(cmsUInt16Number NewAlarm[cmsMAXCHANNELS]); + + +CMSAPI void CMSEXPORT cmsSetAlarmCodesTHR(cmsContext ContextID, + const cmsUInt16Number AlarmCodes[cmsMAXCHANNELS]); +CMSAPI void CMSEXPORT cmsGetAlarmCodesTHR(cmsContext ContextID, + cmsUInt16Number AlarmCodes[cmsMAXCHANNELS]); + + + +// Adaptation state for absolute colorimetric intent +CMSAPI cmsFloat64Number CMSEXPORT cmsSetAdaptationState(cmsFloat64Number d); +CMSAPI cmsFloat64Number CMSEXPORT cmsSetAdaptationStateTHR(cmsContext ContextID, cmsFloat64Number d); + + + +// Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed +CMSAPI cmsContext CMSEXPORT cmsGetTransformContextID(cmsHTRANSFORM hTransform); + +// Grab the input/output formats +CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformInputFormat(cmsHTRANSFORM hTransform); +CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformOutputFormat(cmsHTRANSFORM hTransform); + +// For backwards compatibility +CMSAPI cmsBool CMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform, + cmsUInt32Number InputFormat, + cmsUInt32Number OutputFormat); + + + +// PostScript ColorRenderingDictionary and ColorSpaceArray ---------------------------------------------------- + +typedef enum { cmsPS_RESOURCE_CSA, cmsPS_RESOURCE_CRD } cmsPSResourceType; + +// lcms2 unified method to access postscript color resources +CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptColorResource(cmsContext ContextID, + cmsPSResourceType Type, + cmsHPROFILE hProfile, + cmsUInt32Number Intent, + cmsUInt32Number dwFlags, + cmsIOHANDLER* io); + +CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptCSA(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen); +CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptCRD(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen); + + +// IT8.7 / CGATS.17-200x handling ----------------------------------------------------------------------------- + +CMSAPI cmsHANDLE CMSEXPORT cmsIT8Alloc(cmsContext ContextID); +CMSAPI void CMSEXPORT cmsIT8Free(cmsHANDLE hIT8); + +// Tables +CMSAPI cmsUInt32Number CMSEXPORT cmsIT8TableCount(cmsHANDLE hIT8); +CMSAPI cmsInt32Number CMSEXPORT cmsIT8SetTable(cmsHANDLE hIT8, cmsUInt32Number nTable); + +// Persistence +CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromFile(cmsContext ContextID, const char* cFileName); +CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromMem(cmsContext ContextID, const void *Ptr, cmsUInt32Number len); +// CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromIOhandler(cmsContext ContextID, cmsIOHANDLER* io); + +CMSAPI cmsBool CMSEXPORT cmsIT8SaveToFile(cmsHANDLE hIT8, const char* cFileName); +CMSAPI cmsBool CMSEXPORT cmsIT8SaveToMem(cmsHANDLE hIT8, void *MemPtr, cmsUInt32Number* BytesNeeded); + +// Properties +CMSAPI const char* CMSEXPORT cmsIT8GetSheetType(cmsHANDLE hIT8); +CMSAPI cmsBool CMSEXPORT cmsIT8SetSheetType(cmsHANDLE hIT8, const char* Type); + +CMSAPI cmsBool CMSEXPORT cmsIT8SetComment(cmsHANDLE hIT8, const char* cComment); + +CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyStr(cmsHANDLE hIT8, const char* cProp, const char *Str); +CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyDbl(cmsHANDLE hIT8, const char* cProp, cmsFloat64Number Val); +CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyHex(cmsHANDLE hIT8, const char* cProp, cmsUInt32Number Val); +CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char* SubKey, const char *Buffer); +CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyUncooked(cmsHANDLE hIT8, const char* Key, const char* Buffer); + + +CMSAPI const char* CMSEXPORT cmsIT8GetProperty(cmsHANDLE hIT8, const char* cProp); +CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetPropertyDbl(cmsHANDLE hIT8, const char* cProp); +CMSAPI const char* CMSEXPORT cmsIT8GetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char *SubKey); +CMSAPI cmsUInt32Number CMSEXPORT cmsIT8EnumProperties(cmsHANDLE hIT8, char ***PropertyNames); +CMSAPI cmsUInt32Number CMSEXPORT cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char* cProp, const char ***SubpropertyNames); + +// Datasets +CMSAPI const char* CMSEXPORT cmsIT8GetDataRowCol(cmsHANDLE hIT8, int row, int col); +CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataRowColDbl(cmsHANDLE hIT8, int row, int col); + +CMSAPI cmsBool CMSEXPORT cmsIT8SetDataRowCol(cmsHANDLE hIT8, int row, int col, + const char* Val); + +CMSAPI cmsBool CMSEXPORT cmsIT8SetDataRowColDbl(cmsHANDLE hIT8, int row, int col, + cmsFloat64Number Val); + +CMSAPI const char* CMSEXPORT cmsIT8GetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample); + + +CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataDbl(cmsHANDLE hIT8, const char* cPatch, const char* cSample); + +CMSAPI cmsBool CMSEXPORT cmsIT8SetData(cmsHANDLE hIT8, const char* cPatch, + const char* cSample, + const char *Val); + +CMSAPI cmsBool CMSEXPORT cmsIT8SetDataDbl(cmsHANDLE hIT8, const char* cPatch, + const char* cSample, + cmsFloat64Number Val); + +CMSAPI int CMSEXPORT cmsIT8FindDataFormat(cmsHANDLE hIT8, const char* cSample); +CMSAPI cmsBool CMSEXPORT cmsIT8SetDataFormat(cmsHANDLE hIT8, int n, const char *Sample); +CMSAPI int CMSEXPORT cmsIT8EnumDataFormat(cmsHANDLE hIT8, char ***SampleNames); + +CMSAPI const char* CMSEXPORT cmsIT8GetPatchName(cmsHANDLE hIT8, int nPatch, char* buffer); +CMSAPI int CMSEXPORT cmsIT8GetPatchByName(cmsHANDLE hIT8, const char *cPatch); + +// The LABEL extension +CMSAPI int CMSEXPORT cmsIT8SetTableByLabel(cmsHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType); + +CMSAPI cmsBool CMSEXPORT cmsIT8SetIndexColumn(cmsHANDLE hIT8, const char* cSample); + +// Formatter for double +CMSAPI void CMSEXPORT cmsIT8DefineDblFormat(cmsHANDLE hIT8, const char* Formatter); + +// Gamut boundary description routines ------------------------------------------------------------------------------ + +CMSAPI cmsHANDLE CMSEXPORT cmsGBDAlloc(cmsContext ContextID); +CMSAPI void CMSEXPORT cmsGBDFree(cmsHANDLE hGBD); +CMSAPI cmsBool CMSEXPORT cmsGDBAddPoint(cmsHANDLE hGBD, const cmsCIELab* Lab); +CMSAPI cmsBool CMSEXPORT cmsGDBCompute(cmsHANDLE hGDB, cmsUInt32Number dwFlags); +CMSAPI cmsBool CMSEXPORT cmsGDBCheckPoint(cmsHANDLE hGBD, const cmsCIELab* Lab); + +// Feature detection ---------------------------------------------------------------------------------------------- + +// Estimate the black point +CMSAPI cmsBool CMSEXPORT cmsDetectBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags); +CMSAPI cmsBool CMSEXPORT cmsDetectDestinationBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags); + +// Estimate total area coverage +CMSAPI cmsFloat64Number CMSEXPORT cmsDetectTAC(cmsHPROFILE hProfile); + +// Estimate gamma space, always positive. Returns -1 on error. +CMSAPI cmsFloat64Number CMSEXPORT cmsDetectRGBProfileGamma(cmsHPROFILE hProfile, cmsFloat64Number threshold); + +// Poor man's gamut mapping +CMSAPI cmsBool CMSEXPORT cmsDesaturateLab(cmsCIELab* Lab, + double amax, double amin, + double bmax, double bmin); + +#ifndef CMS_USE_CPP_API +# ifdef __cplusplus + } +# endif +#endif + +#define _lcms2_H +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/lcms2_plugin.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/lcms2_plugin.h new file mode 100644 index 0000000..27fdb6a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/lcms2_plugin.h @@ -0,0 +1,680 @@ +//--------------------------------------------------------------------------------- +// +// Little Color Management System +// Copyright (c) 1998-2022 Marti Maria Saguer +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//--------------------------------------------------------------------------------- +// +// This is the plug-in header file. Normal LittleCMS clients should not use it. +// It is provided for plug-in writers that may want to access the support +// functions to do low level operations. All plug-in related structures +// are defined here. Including this file forces to include the standard API too. + +#ifndef _lcms_plugin_H + +// Deal with Microsoft's attempt at deprecating C standard runtime functions +#ifdef _MSC_VER +# if (_MSC_VER >= 1400) +# ifndef _CRT_SECURE_NO_DEPRECATE +# define _CRT_SECURE_NO_DEPRECATE +# endif +# ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS +# endif +# endif +#endif + +#ifndef _lcms2_H +#include "lcms2.h" +#endif + +// We need some standard C functions. +#include +#include +#include +#include +#include + + +#ifndef CMS_USE_CPP_API +# ifdef __cplusplus +extern "C" { +# endif +#endif + +// Vector & Matrix operations ----------------------------------------------------------------------- + +// Axis of the matrix/array. No specific meaning at all. +#define VX 0 +#define VY 1 +#define VZ 2 + +// Vectors +typedef struct { + cmsFloat64Number n[3]; + + } cmsVEC3; + +// 3x3 Matrix +typedef struct { + cmsVEC3 v[3]; + + } cmsMAT3; + +CMSAPI void CMSEXPORT _cmsVEC3init(cmsVEC3* r, cmsFloat64Number x, cmsFloat64Number y, cmsFloat64Number z); +CMSAPI void CMSEXPORT _cmsVEC3minus(cmsVEC3* r, const cmsVEC3* a, const cmsVEC3* b); +CMSAPI void CMSEXPORT _cmsVEC3cross(cmsVEC3* r, const cmsVEC3* u, const cmsVEC3* v); +CMSAPI cmsFloat64Number CMSEXPORT _cmsVEC3dot(const cmsVEC3* u, const cmsVEC3* v); +CMSAPI cmsFloat64Number CMSEXPORT _cmsVEC3length(const cmsVEC3* a); +CMSAPI cmsFloat64Number CMSEXPORT _cmsVEC3distance(const cmsVEC3* a, const cmsVEC3* b); + +CMSAPI void CMSEXPORT _cmsMAT3identity(cmsMAT3* a); +CMSAPI cmsBool CMSEXPORT _cmsMAT3isIdentity(const cmsMAT3* a); +CMSAPI void CMSEXPORT _cmsMAT3per(cmsMAT3* r, const cmsMAT3* a, const cmsMAT3* b); +CMSAPI cmsBool CMSEXPORT _cmsMAT3inverse(const cmsMAT3* a, cmsMAT3* b); +CMSAPI cmsBool CMSEXPORT _cmsMAT3solve(cmsVEC3* x, cmsMAT3* a, cmsVEC3* b); +CMSAPI void CMSEXPORT _cmsMAT3eval(cmsVEC3* r, const cmsMAT3* a, const cmsVEC3* v); + + +// MD5 low level ------------------------------------------------------------------------------------- + +CMSAPI cmsHANDLE CMSEXPORT cmsMD5alloc(cmsContext ContextID); +CMSAPI void CMSEXPORT cmsMD5add(cmsHANDLE Handle, const cmsUInt8Number* buf, cmsUInt32Number len); +CMSAPI void CMSEXPORT cmsMD5finish(cmsProfileID* ProfileID, cmsHANDLE Handle); + +// Error logging ------------------------------------------------------------------------------------- + +CMSAPI void CMSEXPORT cmsSignalError(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *ErrorText, ...); + +// Memory management ---------------------------------------------------------------------------------- + +CMSAPI void* CMSEXPORT _cmsMalloc(cmsContext ContextID, cmsUInt32Number size); +CMSAPI void* CMSEXPORT _cmsMallocZero(cmsContext ContextID, cmsUInt32Number size); +CMSAPI void* CMSEXPORT _cmsCalloc(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size); +CMSAPI void* CMSEXPORT _cmsRealloc(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize); +CMSAPI void CMSEXPORT _cmsFree(cmsContext ContextID, void* Ptr); +CMSAPI void* CMSEXPORT _cmsDupMem(cmsContext ContextID, const void* Org, cmsUInt32Number size); + +// I/O handler ---------------------------------------------------------------------------------- + +struct _cms_io_handler { + + void* stream; // Associated stream, which is implemented differently depending on media. + + cmsContext ContextID; + cmsUInt32Number UsedSpace; + cmsUInt32Number ReportedSize; + char PhysicalFile[cmsMAX_PATH]; + + cmsUInt32Number (* Read)(struct _cms_io_handler* iohandler, void *Buffer, + cmsUInt32Number size, + cmsUInt32Number count); + cmsBool (* Seek)(struct _cms_io_handler* iohandler, cmsUInt32Number offset); + cmsBool (* Close)(struct _cms_io_handler* iohandler); + cmsUInt32Number (* Tell)(struct _cms_io_handler* iohandler); + cmsBool (* Write)(struct _cms_io_handler* iohandler, cmsUInt32Number size, + const void* Buffer); +}; + +// Endianness adjust functions +CMSAPI cmsUInt16Number CMSEXPORT _cmsAdjustEndianess16(cmsUInt16Number Word); +CMSAPI cmsUInt32Number CMSEXPORT _cmsAdjustEndianess32(cmsUInt32Number Value); +CMSAPI void CMSEXPORT _cmsAdjustEndianess64(cmsUInt64Number* Result, cmsUInt64Number* QWord); + +// Helper IO functions +CMSAPI cmsBool CMSEXPORT _cmsReadUInt8Number(cmsIOHANDLER* io, cmsUInt8Number* n); +CMSAPI cmsBool CMSEXPORT _cmsReadUInt16Number(cmsIOHANDLER* io, cmsUInt16Number* n); +CMSAPI cmsBool CMSEXPORT _cmsReadUInt32Number(cmsIOHANDLER* io, cmsUInt32Number* n); +CMSAPI cmsBool CMSEXPORT _cmsReadFloat32Number(cmsIOHANDLER* io, cmsFloat32Number* n); +CMSAPI cmsBool CMSEXPORT _cmsReadUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n); +CMSAPI cmsBool CMSEXPORT _cmsRead15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number* n); +CMSAPI cmsBool CMSEXPORT _cmsReadXYZNumber(cmsIOHANDLER* io, cmsCIEXYZ* XYZ); +CMSAPI cmsBool CMSEXPORT _cmsReadUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, cmsUInt16Number* Array); + +CMSAPI cmsBool CMSEXPORT _cmsWriteUInt8Number(cmsIOHANDLER* io, cmsUInt8Number n); +CMSAPI cmsBool CMSEXPORT _cmsWriteUInt16Number(cmsIOHANDLER* io, cmsUInt16Number n); +CMSAPI cmsBool CMSEXPORT _cmsWriteUInt32Number(cmsIOHANDLER* io, cmsUInt32Number n); +CMSAPI cmsBool CMSEXPORT _cmsWriteFloat32Number(cmsIOHANDLER* io, cmsFloat32Number n); +CMSAPI cmsBool CMSEXPORT _cmsWriteUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n); +CMSAPI cmsBool CMSEXPORT _cmsWrite15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number n); +CMSAPI cmsBool CMSEXPORT _cmsWriteXYZNumber(cmsIOHANDLER* io, const cmsCIEXYZ* XYZ); +CMSAPI cmsBool CMSEXPORT _cmsWriteUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, const cmsUInt16Number* Array); + +// ICC base tag +typedef struct { + cmsTagTypeSignature sig; + cmsInt8Number reserved[4]; + +} _cmsTagBase; + +// Type base helper functions +CMSAPI cmsTagTypeSignature CMSEXPORT _cmsReadTypeBase(cmsIOHANDLER* io); +CMSAPI cmsBool CMSEXPORT _cmsWriteTypeBase(cmsIOHANDLER* io, cmsTagTypeSignature sig); + +// Alignment functions +CMSAPI cmsBool CMSEXPORT _cmsReadAlignment(cmsIOHANDLER* io); +CMSAPI cmsBool CMSEXPORT _cmsWriteAlignment(cmsIOHANDLER* io); + +// To deal with text streams. 2K at most +CMSAPI cmsBool CMSEXPORT _cmsIOPrintf(cmsIOHANDLER* io, const char* frm, ...); + +// Fixed point helper functions +CMSAPI cmsFloat64Number CMSEXPORT _cms8Fixed8toDouble(cmsUInt16Number fixed8); +CMSAPI cmsUInt16Number CMSEXPORT _cmsDoubleTo8Fixed8(cmsFloat64Number val); + +CMSAPI cmsFloat64Number CMSEXPORT _cms15Fixed16toDouble(cmsS15Fixed16Number fix32); +CMSAPI cmsS15Fixed16Number CMSEXPORT _cmsDoubleTo15Fixed16(cmsFloat64Number v); + +// Date/time helper functions +CMSAPI void CMSEXPORT _cmsEncodeDateTimeNumber(cmsDateTimeNumber *Dest, const struct tm *Source); +CMSAPI void CMSEXPORT _cmsDecodeDateTimeNumber(const cmsDateTimeNumber *Source, struct tm *Dest); + +//---------------------------------------------------------------------------------------------------------- + +// Shared callbacks for user data +typedef void (* _cmsFreeUserDataFn)(cmsContext ContextID, void* Data); +typedef void* (* _cmsDupUserDataFn)(cmsContext ContextID, const void* Data); + +//---------------------------------------------------------------------------------------------------------- + +// Plug-in foundation +#define cmsPluginMagicNumber 0x61637070 // 'acpp' + +#define cmsPluginMemHandlerSig 0x6D656D48 // 'memH' +#define cmsPluginInterpolationSig 0x696E7048 // 'inpH' +#define cmsPluginParametricCurveSig 0x70617248 // 'parH' +#define cmsPluginFormattersSig 0x66726D48 // 'frmH +#define cmsPluginTagTypeSig 0x74797048 // 'typH' +#define cmsPluginTagSig 0x74616748 // 'tagH' +#define cmsPluginRenderingIntentSig 0x696E7448 // 'intH' +#define cmsPluginMultiProcessElementSig 0x6D706548 // 'mpeH' +#define cmsPluginOptimizationSig 0x6F707448 // 'optH' +#define cmsPluginTransformSig 0x7A666D48 // 'xfmH' +#define cmsPluginMutexSig 0x6D747A48 // 'mtxH' + +typedef struct _cmsPluginBaseStruct { + + cmsUInt32Number Magic; // 'acpp' signature + cmsUInt32Number ExpectedVersion; // Expected version of LittleCMS + cmsUInt32Number Type; // Type of plug-in + struct _cmsPluginBaseStruct* Next; // For multiple plugin definition. NULL for end of list. + +} cmsPluginBase; + +// Maximum number of types in a plugin array +#define MAX_TYPES_IN_LCMS_PLUGIN 20 + +//---------------------------------------------------------------------------------------------------------- + +// Memory handler. Each new plug-in type replaces current behaviour + +typedef void* (* _cmsMallocFnPtrType)(cmsContext ContextID, cmsUInt32Number size); +typedef void (* _cmsFreeFnPtrType)(cmsContext ContextID, void *Ptr); +typedef void* (* _cmsReallocFnPtrType)(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize); + +typedef void* (* _cmsMalloZerocFnPtrType)(cmsContext ContextID, cmsUInt32Number size); +typedef void* (* _cmsCallocFnPtrType)(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size); +typedef void* (* _cmsDupFnPtrType)(cmsContext ContextID, const void* Org, cmsUInt32Number size); + +typedef struct { + + cmsPluginBase base; + + // Required + _cmsMallocFnPtrType MallocPtr; + _cmsFreeFnPtrType FreePtr; + _cmsReallocFnPtrType ReallocPtr; + + // Optional + _cmsMalloZerocFnPtrType MallocZeroPtr; + _cmsCallocFnPtrType CallocPtr; + _cmsDupFnPtrType DupPtr; + +} cmsPluginMemHandler; + + +// ------------------------------------------------------------------------------------------------------------------ + +// Interpolation. 16 bits and floating point versions. +struct _cms_interp_struc; + +// Interpolation callbacks + +// 16 bits forward interpolation. This function performs precision-limited linear interpolation +// and is supposed to be quite fast. Implementation may be tetrahedral or trilinear, and plug-ins may +// choose to implement any other interpolation algorithm. +typedef void (* _cmsInterpFn16)(CMSREGISTER const cmsUInt16Number Input[], + CMSREGISTER cmsUInt16Number Output[], + CMSREGISTER const struct _cms_interp_struc* p); + +// Floating point forward interpolation. Full precision interpolation using floats. This is not a +// time critical function. Implementation may be tetrahedral or trilinear, and plug-ins may +// choose to implement any other interpolation algorithm. +typedef void (* _cmsInterpFnFloat)(cmsFloat32Number const Input[], + cmsFloat32Number Output[], + const struct _cms_interp_struc* p); + + + +// This type holds a pointer to an interpolator that can be either 16 bits or float +typedef union { + _cmsInterpFn16 Lerp16; // Forward interpolation in 16 bits + _cmsInterpFnFloat LerpFloat; // Forward interpolation in floating point +} cmsInterpFunction; + +// Flags for interpolator selection +#define CMS_LERP_FLAGS_16BITS 0x0000 // The default +#define CMS_LERP_FLAGS_FLOAT 0x0001 // Requires different implementation +#define CMS_LERP_FLAGS_TRILINEAR 0x0100 // Hint only + + +#define MAX_INPUT_DIMENSIONS 15 + +typedef struct _cms_interp_struc { // Used on all interpolations. Supplied by lcms2 when calling the interpolation function + + cmsContext ContextID; // The calling thread + + cmsUInt32Number dwFlags; // Keep original flags + cmsUInt32Number nInputs; // != 1 only in 3D interpolation + cmsUInt32Number nOutputs; // != 1 only in 3D interpolation + + cmsUInt32Number nSamples[MAX_INPUT_DIMENSIONS]; // Valid on all kinds of tables + cmsUInt32Number Domain[MAX_INPUT_DIMENSIONS]; // Domain = nSamples - 1 + + cmsUInt32Number opta[MAX_INPUT_DIMENSIONS]; // Optimization for 3D CLUT. This is the number of nodes premultiplied for each + // dimension. For example, in 7 nodes, 7, 7^2 , 7^3, 7^4, etc. On non-regular + // Samplings may vary according of the number of nodes for each dimension. + + const void *Table; // Points to the actual interpolation table + cmsInterpFunction Interpolation; // Points to the function to do the interpolation + + } cmsInterpParams; + +// Interpolators factory +typedef cmsInterpFunction (* cmsInterpFnFactory)(cmsUInt32Number nInputChannels, cmsUInt32Number nOutputChannels, cmsUInt32Number dwFlags); + +// The plug-in +typedef struct { + cmsPluginBase base; + + // Points to a user-supplied function which implements the factory + cmsInterpFnFactory InterpolatorsFactory; + +} cmsPluginInterpolation; + +//---------------------------------------------------------------------------------------------------------- + +// Parametric curves. A negative type means same function but analytically inverted. Max. number of params is 10 + +// Evaluator callback for user-supplied parametric curves. May implement more than one type +typedef cmsFloat64Number (* cmsParametricCurveEvaluator)(cmsInt32Number Type, const cmsFloat64Number Params[10], cmsFloat64Number R); + +// Plug-in may implement an arbitrary number of parametric curves +typedef struct { + cmsPluginBase base; + + cmsUInt32Number nFunctions; // Number of supported functions + cmsUInt32Number FunctionTypes[MAX_TYPES_IN_LCMS_PLUGIN]; // The identification types + cmsUInt32Number ParameterCount[MAX_TYPES_IN_LCMS_PLUGIN]; // Number of parameters for each function + + cmsParametricCurveEvaluator Evaluator; // The evaluator + +} cmsPluginParametricCurves; +//---------------------------------------------------------------------------------------------------------- + +// Formatters. This plug-in adds new handlers, replacing them if they already exist. Formatters dealing with +// cmsFloat32Number (bps = 4) or double (bps = 0) types are requested via FormatterFloat callback. Others come across +// Formatter16 callback + +struct _cmstransform_struct; + +typedef cmsUInt8Number* (* cmsFormatter16)(CMSREGISTER struct _cmstransform_struct* CMMcargo, + CMSREGISTER cmsUInt16Number Values[], + CMSREGISTER cmsUInt8Number* Buffer, + CMSREGISTER cmsUInt32Number Stride); + +typedef cmsUInt8Number* (* cmsFormatterFloat)(struct _cmstransform_struct* CMMcargo, + cmsFloat32Number Values[], + cmsUInt8Number* Buffer, + cmsUInt32Number Stride); + +// This type holds a pointer to a formatter that can be either 16 bits or cmsFloat32Number +typedef union { + cmsFormatter16 Fmt16; + cmsFormatterFloat FmtFloat; + +} cmsFormatter; + +#define CMS_PACK_FLAGS_16BITS 0x0000 +#define CMS_PACK_FLAGS_FLOAT 0x0001 + +typedef enum { cmsFormatterInput=0, cmsFormatterOutput=1 } cmsFormatterDirection; + +typedef cmsFormatter (* cmsFormatterFactory)(cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8 + cmsFormatterDirection Dir, + cmsUInt32Number dwFlags); // precision + +// Plug-in may implement an arbitrary number of formatters +typedef struct { + cmsPluginBase base; + cmsFormatterFactory FormattersFactory; + +} cmsPluginFormatters; + +//---------------------------------------------------------------------------------------------------------- + +// Tag type handler. Each type is free to return anything it wants, and it is up to the caller to +// know in advance what is the type contained in the tag. +typedef struct _cms_typehandler_struct { + + cmsTagTypeSignature Signature; // The signature of the type + + // Allocates and reads items + void * (* ReadPtr)(struct _cms_typehandler_struct* self, + cmsIOHANDLER* io, + cmsUInt32Number* nItems, + cmsUInt32Number SizeOfTag); + + // Writes n Items + cmsBool (* WritePtr)(struct _cms_typehandler_struct* self, + cmsIOHANDLER* io, + void* Ptr, + cmsUInt32Number nItems); + + // Duplicate an item or array of items + void* (* DupPtr)(struct _cms_typehandler_struct* self, + const void *Ptr, + cmsUInt32Number n); + + // Free all resources + void (* FreePtr)(struct _cms_typehandler_struct* self, + void *Ptr); + + // Additional parameters used by the calling thread + cmsContext ContextID; + cmsUInt32Number ICCVersion; + +} cmsTagTypeHandler; + +// Each plug-in implements a single type +typedef struct { + cmsPluginBase base; + cmsTagTypeHandler Handler; + +} cmsPluginTagType; + +//---------------------------------------------------------------------------------------------------------- + +// This is the tag plugin, which identifies tags. For writing, a pointer to function is provided. +// This function should return the desired type for this tag, given the version of profile +// and the data being serialized. +typedef struct { + + cmsUInt32Number ElemCount; // If this tag needs an array, how many elements should keep + + // For reading. + cmsUInt32Number nSupportedTypes; // In how many types this tag can come (MAX_TYPES_IN_LCMS_PLUGIN maximum) + cmsTagTypeSignature SupportedTypes[MAX_TYPES_IN_LCMS_PLUGIN]; + + // For writing + cmsTagTypeSignature (* DecideType)(cmsFloat64Number ICCVersion, const void *Data); + +} cmsTagDescriptor; + +// Plug-in implements a single tag +typedef struct { + cmsPluginBase base; + + cmsTagSignature Signature; + cmsTagDescriptor Descriptor; + +} cmsPluginTag; + +//---------------------------------------------------------------------------------------------------------- + +// Custom intents. This function should join all profiles specified in the array in +// a single LUT. Any custom intent in the chain redirects to custom function. If more than +// one custom intent is found, the one located first is invoked. Usually users should use only one +// custom intent, so mixing custom intents in same multiprofile transform is not supported. + +typedef cmsPipeline* (* cmsIntentFn)( cmsContext ContextID, + cmsUInt32Number nProfiles, + cmsUInt32Number Intents[], + cmsHPROFILE hProfiles[], + cmsBool BPC[], + cmsFloat64Number AdaptationStates[], + cmsUInt32Number dwFlags); + + +// Each plug-in defines a single intent number. +typedef struct { + cmsPluginBase base; + cmsUInt32Number Intent; + cmsIntentFn Link; + char Description[256]; + +} cmsPluginRenderingIntent; + + +// The default ICC intents (perceptual, saturation, rel.col and abs.col) +CMSAPI cmsPipeline* CMSEXPORT _cmsDefaultICCintents(cmsContext ContextID, + cmsUInt32Number nProfiles, + cmsUInt32Number Intents[], + cmsHPROFILE hProfiles[], + cmsBool BPC[], + cmsFloat64Number AdaptationStates[], + cmsUInt32Number dwFlags); + + +//---------------------------------------------------------------------------------------------------------- + +// Pipelines, Multi Process Elements. + +typedef void (* _cmsStageEvalFn) (const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage* mpe); +typedef void*(* _cmsStageDupElemFn) (cmsStage* mpe); +typedef void (* _cmsStageFreeElemFn) (cmsStage* mpe); + + +// This function allocates a generic MPE +CMSAPI cmsStage* CMSEXPORT _cmsStageAllocPlaceholder(cmsContext ContextID, + cmsStageSignature Type, + cmsUInt32Number InputChannels, + cmsUInt32Number OutputChannels, + _cmsStageEvalFn EvalPtr, // Points to fn that evaluates the element (always in floating point) + _cmsStageDupElemFn DupElemPtr, // Points to a fn that duplicates the stage + _cmsStageFreeElemFn FreePtr, // Points to a fn that sets the element free + void* Data); // A generic pointer to whatever memory needed by the element +typedef struct { + cmsPluginBase base; + cmsTagTypeHandler Handler; + +} cmsPluginMultiProcessElement; + + +// Data kept in "Element" member of cmsStage + +// Curves +typedef struct { + cmsUInt32Number nCurves; + cmsToneCurve** TheCurves; + +} _cmsStageToneCurvesData; + +// Matrix +typedef struct { + cmsFloat64Number* Double; // floating point for the matrix + cmsFloat64Number* Offset; // The offset + +} _cmsStageMatrixData; + +// CLUT +typedef struct { + + union { // Can have only one of both representations at same time + cmsUInt16Number* T; // Points to the table 16 bits table + cmsFloat32Number* TFloat; // Points to the cmsFloat32Number table + + } Tab; + + cmsInterpParams* Params; + cmsUInt32Number nEntries; + cmsBool HasFloatValues; + +} _cmsStageCLutData; + + +//---------------------------------------------------------------------------------------------------------- +// Optimization. Using this plug-in, additional optimization strategies may be implemented. +// The function should return TRUE if any optimization is done on the LUT, this terminates +// the optimization search. Or FALSE if it is unable to optimize and want to give a chance +// to the rest of optimizers. + +typedef cmsBool (* _cmsOPToptimizeFn)(cmsPipeline** Lut, + cmsUInt32Number Intent, + cmsUInt32Number* InputFormat, + cmsUInt32Number* OutputFormat, + cmsUInt32Number* dwFlags); + +// Pipeline Evaluator (in 16 bits) +typedef void (* _cmsPipelineEval16Fn)(CMSREGISTER const cmsUInt16Number In[], + CMSREGISTER cmsUInt16Number Out[], + const void* Data); + +// Pipeline Evaluator (in floating point) +typedef void (* _cmsPipelineEvalFloatFn)(const cmsFloat32Number In[], + cmsFloat32Number Out[], + const void* Data); + + +// This function may be used to set the optional evaluator and a block of private data. If private data is being used, an optional +// duplicator and free functions should also be specified in order to duplicate the LUT construct. Use NULL to inhibit such functionality. + +CMSAPI void CMSEXPORT _cmsPipelineSetOptimizationParameters(cmsPipeline* Lut, + _cmsPipelineEval16Fn Eval16, + void* PrivateData, + _cmsFreeUserDataFn FreePrivateDataFn, + _cmsDupUserDataFn DupPrivateDataFn); + +typedef struct { + cmsPluginBase base; + + // Optimize entry point + _cmsOPToptimizeFn OptimizePtr; + +} cmsPluginOptimization; + +//---------------------------------------------------------------------------------------------------------- +// Full xform + +typedef struct { + cmsUInt32Number BytesPerLineIn; + cmsUInt32Number BytesPerLineOut; + cmsUInt32Number BytesPerPlaneIn; + cmsUInt32Number BytesPerPlaneOut; + +} cmsStride; + +typedef void (* _cmsTransformFn)(struct _cmstransform_struct *CMMcargo, // Legacy function, handles just ONE scanline. + const void* InputBuffer, + void* OutputBuffer, + cmsUInt32Number Size, + cmsUInt32Number Stride); // Stride in bytes to the next plana in planar formats + + +typedef void (*_cmsTransform2Fn)(struct _cmstransform_struct *CMMcargo, + const void* InputBuffer, + void* OutputBuffer, + cmsUInt32Number PixelsPerLine, + cmsUInt32Number LineCount, + const cmsStride* Stride); + +typedef cmsBool (* _cmsTransformFactory)(_cmsTransformFn* xform, + void** UserData, + _cmsFreeUserDataFn* FreePrivateDataFn, + cmsPipeline** Lut, + cmsUInt32Number* InputFormat, + cmsUInt32Number* OutputFormat, + cmsUInt32Number* dwFlags); + +typedef cmsBool (* _cmsTransform2Factory)(_cmsTransform2Fn* xform, + void** UserData, + _cmsFreeUserDataFn* FreePrivateDataFn, + cmsPipeline** Lut, + cmsUInt32Number* InputFormat, + cmsUInt32Number* OutputFormat, + cmsUInt32Number* dwFlags); + + +// Retrieve user data as specified by the factory +CMSAPI void CMSEXPORT _cmsSetTransformUserData(struct _cmstransform_struct *CMMcargo, void* ptr, _cmsFreeUserDataFn FreePrivateDataFn); +CMSAPI void * CMSEXPORT _cmsGetTransformUserData(struct _cmstransform_struct *CMMcargo); + + +// Retrieve formatters +CMSAPI void CMSEXPORT _cmsGetTransformFormatters16 (struct _cmstransform_struct *CMMcargo, cmsFormatter16* FromInput, cmsFormatter16* ToOutput); +CMSAPI void CMSEXPORT _cmsGetTransformFormattersFloat(struct _cmstransform_struct *CMMcargo, cmsFormatterFloat* FromInput, cmsFormatterFloat* ToOutput); + +// Retrieve original flags +CMSAPI cmsUInt32Number CMSEXPORT _cmsGetTransformFlags(struct _cmstransform_struct* CMMcargo); + +typedef struct { + cmsPluginBase base; + + // Transform entry point + union { + _cmsTransformFactory legacy_xform; + _cmsTransform2Factory xform; + } factories; + +} cmsPluginTransform; + +//---------------------------------------------------------------------------------------------------------- +// Mutex + +typedef void* (* _cmsCreateMutexFnPtrType)(cmsContext ContextID); +typedef void (* _cmsDestroyMutexFnPtrType)(cmsContext ContextID, void* mtx); +typedef cmsBool (* _cmsLockMutexFnPtrType)(cmsContext ContextID, void* mtx); +typedef void (* _cmsUnlockMutexFnPtrType)(cmsContext ContextID, void* mtx); + +typedef struct { + cmsPluginBase base; + + _cmsCreateMutexFnPtrType CreateMutexPtr; + _cmsDestroyMutexFnPtrType DestroyMutexPtr; + _cmsLockMutexFnPtrType LockMutexPtr; + _cmsUnlockMutexFnPtrType UnlockMutexPtr; + +} cmsPluginMutex; + +CMSAPI void* CMSEXPORT _cmsCreateMutex(cmsContext ContextID); +CMSAPI void CMSEXPORT _cmsDestroyMutex(cmsContext ContextID, void* mtx); +CMSAPI cmsBool CMSEXPORT _cmsLockMutex(cmsContext ContextID, void* mtx); +CMSAPI void CMSEXPORT _cmsUnlockMutex(cmsContext ContextID, void* mtx); + + +#ifndef CMS_USE_CPP_API +# ifdef __cplusplus + } +# endif +#endif + +#define _lcms_plugin_H +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/_stdint.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/_stdint.h new file mode 100644 index 0000000..80ecf41 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/_stdint.h @@ -0,0 +1,2 @@ +/* This file is generated automatically by configure */ +#include diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-byte-order.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-byte-order.h new file mode 100644 index 0000000..4dc6d94 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-byte-order.h @@ -0,0 +1,48 @@ +/*! \file exif-byte-order.h + * \brief Defines the ExifByteOrder enum and the associated functions. + */ +/* + * Copyright (c) 2002 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_BYTE_ORDER_H +#define LIBEXIF_EXIF_BYTE_ORDER_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! Which byte order to use */ +typedef enum { + /*! Big-endian byte order */ + EXIF_BYTE_ORDER_MOTOROLA, + /*! Little-endian byte order */ + EXIF_BYTE_ORDER_INTEL +} ExifByteOrder; + +/*! Return a short, localized, textual name for the given byte order. + * \param[in] order byte order + * \return localized textual name of the byte order, or NULL if unknown + */ +const char *exif_byte_order_get_name (ExifByteOrder order); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_BYTE_ORDER_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-content.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-content.h new file mode 100644 index 0000000..6d14582 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-content.h @@ -0,0 +1,181 @@ +/*! \file exif-content.h + * \brief Handling EXIF IFDs + */ +/* + * Copyright (c) 2001 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_CONTENT_H +#define LIBEXIF_EXIF_CONTENT_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! Holds all EXIF tags in a single IFD */ +typedef struct _ExifContent ExifContent; +typedef struct _ExifContentPrivate ExifContentPrivate; + +#include +#include +#include +#include +#include + +struct _ExifContent +{ + ExifEntry **entries; + unsigned int count; + + /*! Data containing this content */ + ExifData *parent; + + ExifContentPrivate *priv; +}; + +/* Lifecycle */ + +/*! Reserve memory for and initialize a new #ExifContent. + * + * \return new allocated #ExifContent, or NULL on error + * + * \see exif_content_new_mem, exif_content_unref + */ +ExifContent *exif_content_new (void); + +/*! Reserve memory for and initialize new #ExifContent using the specified + * memory allocator. + * + * \return new allocated #ExifContent, or NULL on error + * + * \see exif_content_new, exif_content_unref + */ +ExifContent *exif_content_new_mem (ExifMem *); + +/*! Increase reference counter for #ExifContent. + * + * \param[in] content #ExifContent + * + * \see exif_content_unref + */ +void exif_content_ref (ExifContent *content); + +/*! Decrease reference counter for #ExifContent. + * When the reference count drops to zero, free the content. + * + * \param[in] content #ExifContent + */ +void exif_content_unref (ExifContent *content); + +/*! Actually free the #ExifContent. + * + * \deprecated Should not be called directly. Use #exif_content_ref and + * #exif_content_unref instead. + * + * \param[in] content #ExifContent + */ +void exif_content_free (ExifContent *content); + +/*! Add an EXIF tag to an IFD. + * If this tag already exists in the IFD, this function does nothing. + * \pre The "tag" member of the entry must be set on entry. + * + * \param[out] c IFD + * \param[in] entry EXIF entry to add + */ +void exif_content_add_entry (ExifContent *c, ExifEntry *entry); + +/*! Remove an EXIF tag from an IFD. + * If this tag does not exist in the IFD, this function does nothing. + * + * \param[out] c IFD + * \param[in] e EXIF entry to remove + */ +void exif_content_remove_entry (ExifContent *c, ExifEntry *e); + +/*! Return the #ExifEntry in this IFD corresponding to the given tag. + * This is a pointer into a member of the #ExifContent array and must NOT be + * freed or unrefed by the caller. + * + * \param[in] content EXIF content for an IFD + * \param[in] tag EXIF tag to return + * \return #ExifEntry of the tag, or NULL on error + */ +ExifEntry *exif_content_get_entry (ExifContent *content, ExifTag tag); + +/*! Fix the IFD to bring it into specification. Call #exif_entry_fix on + * each entry in this IFD to fix existing entries, create any new entries + * that are mandatory in this IFD but do not yet exist, and remove any + * entries that are not allowed in this IFD. + * + * \param[in,out] c EXIF content for an IFD + */ +void exif_content_fix (ExifContent *c); + +typedef void (* ExifContentForeachEntryFunc) (ExifEntry *, void *user_data); + +/*! Executes function on each EXIF tag in this IFD in turn. + * The tags will not necessarily be visited in numerical order. + * + * \param[in,out] content IFD over which to iterate + * \param[in] func function to call for each entry + * \param[in] user_data data to pass into func on each call + */ +void exif_content_foreach_entry (ExifContent *content, + ExifContentForeachEntryFunc func, + void *user_data); + +/*! Return the IFD number in which the given #ExifContent is found. + * + * \param[in] c an #ExifContent* + * \return IFD number, or #EXIF_IFD_COUNT on error + */ +ExifIfd exif_content_get_ifd (ExifContent *c); + +/*! Return a textual representation of the EXIF data for a tag. + * + * \param[in] c #ExifContent* for an IFD + * \param[in] t #ExifTag to return + * \param[out] v char* buffer in which to store value + * \param[in] m unsigned int length of the buffer v + * \return the v pointer, or NULL on error + */ +#define exif_content_get_value(c,t,v,m) \ + (exif_content_get_entry (c,t) ? \ + exif_entry_get_value (exif_content_get_entry (c,t),v,m) : NULL) + +/*! Dump contents of the IFD to stdout. + * This is intended for diagnostic purposes only. + * + * \param[in] content IFD data + * \param[in] indent how many levels deep to indent the data + */ +void exif_content_dump (ExifContent *content, unsigned int indent); + +/*! Set the log message object for this IFD. + * + * \param[in] content IFD + * \param[in] log #ExifLog* + */ +void exif_content_log (ExifContent *content, ExifLog *log); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_CONTENT_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-data-type.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-data-type.h new file mode 100644 index 0000000..573e488 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-data-type.h @@ -0,0 +1,46 @@ +/* exif-data-tag.h + * + * Copyright (c) 2005 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_DATA_TYPE_H +#define LIBEXIF_EXIF_DATA_TYPE_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! Represents the type of image data to which the EXIF data applies. + * The EXIF tags have different constraints depending on the type of + * image data. + */ +typedef enum { + EXIF_DATA_TYPE_UNCOMPRESSED_CHUNKY = 0, + EXIF_DATA_TYPE_UNCOMPRESSED_PLANAR, + EXIF_DATA_TYPE_UNCOMPRESSED_YCC, + EXIF_DATA_TYPE_COMPRESSED, + EXIF_DATA_TYPE_COUNT, + + EXIF_DATA_TYPE_UNKNOWN = EXIF_DATA_TYPE_COUNT +} ExifDataType; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_DATA_TYPE_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-data.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-data.h new file mode 100644 index 0000000..c60371c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-data.h @@ -0,0 +1,267 @@ +/*! \file exif-data.h + * \brief Defines the ExifData type and the associated functions. + */ +/* + * \author Lutz Mueller + * \date 2001-2005 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_DATA_H +#define LIBEXIF_EXIF_DATA_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include +#include +#include +#include + +/*! Represents the entire EXIF data found in an image */ +typedef struct _ExifData ExifData; +typedef struct _ExifDataPrivate ExifDataPrivate; + +#include +#include +#include + +/*! Represents the entire EXIF data found in an image */ +struct _ExifData +{ + /*! Data for each IFD */ + ExifContent *ifd[EXIF_IFD_COUNT]; + + /*! Pointer to thumbnail image, or NULL if not available */ + unsigned char *data; + + /*! Number of bytes in thumbnail image at \c data */ + unsigned int size; + + ExifDataPrivate *priv; +}; + +/*! Allocate a new #ExifData. The #ExifData contains an empty + * #ExifContent for each IFD and the default set of options, + * which has #EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS + * and #EXIF_DATA_OPTION_FOLLOW_SPECIFICATION set. + * + * \return allocated #ExifData, or NULL on error + */ +ExifData *exif_data_new (void); + +/*! Allocate a new #ExifData using the given memory allocator. + * The #ExifData contains an empty #ExifContent for each IFD and the default + * set of options, which has #EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS and + * #EXIF_DATA_OPTION_FOLLOW_SPECIFICATION set. + * + * \return allocated #ExifData, or NULL on error + */ +ExifData *exif_data_new_mem (ExifMem *); + +/*! Allocate a new #ExifData and load EXIF data from a JPEG file. + * Uses an #ExifLoader internally to do the loading. + * + * \param[in] path filename including path + * \return allocated #ExifData, or NULL on error + */ +ExifData *exif_data_new_from_file (const char *path); + +/*! Allocate a new #ExifData and load EXIF data from a memory buffer. + * + * \param[in] data pointer to raw JPEG or EXIF data + * \param[in] size number of bytes of data at data + * \return allocated #ExifData, or NULL on error + */ +ExifData *exif_data_new_from_data (const unsigned char *data, + unsigned int size); + +/*! Load the #ExifData structure from the raw JPEG or EXIF data in the given + * memory buffer. If the EXIF data contains a recognized MakerNote, it is + * loaded and stored as well for later retrieval by #exif_data_get_mnote_data. + * If the #EXIF_DATA_OPTION_FOLLOW_SPECIFICATION option has been set on this + * #ExifData, then the tags are automatically fixed after loading (by calling + * #exif_data_fix). + * + * \param[in,out] data EXIF data + * \param[in] d pointer to raw JPEG or EXIF data + * \param[in] size number of bytes of data at d + */ +void exif_data_load_data (ExifData *data, const unsigned char *d, + unsigned int size); + +/*! Store raw EXIF data representing the #ExifData structure into a memory + * buffer. The buffer is allocated by this function and must subsequently be + * freed by the caller using the matching free function as used by the #ExifMem + * in use by this #ExifData. + * + * \param[in] data EXIF data + * \param[out] d pointer to buffer pointer containing raw EXIF data on return + * \param[out] ds pointer to variable to hold the number of bytes of + * data at d, or set to 0 on error + */ +void exif_data_save_data (ExifData *data, unsigned char **d, + unsigned int *ds); + +void exif_data_ref (ExifData *data); +void exif_data_unref (ExifData *data); +void exif_data_free (ExifData *data); + +/*! Return the byte order in use by this EXIF structure. + * + * \param[in] data EXIF data + * \return byte order + */ +ExifByteOrder exif_data_get_byte_order (ExifData *data); + +/*! Set the byte order to use for this EXIF data. If any tags already exist + * (including MakerNote tags) they are are converted to the specified byte + * order. + * + * \param[in,out] data EXIF data + * \param[in] order byte order + */ +void exif_data_set_byte_order (ExifData *data, ExifByteOrder order); + +/*! Return the MakerNote data out of the EXIF data. Only certain + * MakerNote formats that are recognized by libexif are supported. + * The pointer references a member of the #ExifData structure and must NOT be + * freed by the caller. + * + * \param[in] d EXIF data + * \return MakerNote data, or NULL if not found or not supported + */ +ExifMnoteData *exif_data_get_mnote_data (ExifData *d); + +/*! Fix the EXIF data to bring it into specification. Call #exif_content_fix + * on each IFD to fix existing entries, create any new entries that are + * mandatory but do not yet exist, and remove any entries that are not + * allowed. + * + * \param[in,out] d EXIF data + */ +void exif_data_fix (ExifData *d); + +typedef void (* ExifDataForeachContentFunc) (ExifContent *, void *user_data); + +/*! Execute a function on each IFD in turn. + * + * \param[in] data EXIF data over which to iterate + * \param[in] func function to call for each entry + * \param[in] user_data data to pass into func on each call + */ +void exif_data_foreach_content (ExifData *data, + ExifDataForeachContentFunc func, + void *user_data); + +/*! Options to configure the behaviour of #ExifData */ +typedef enum { + /*! Act as though unknown tags are not present */ + EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS = 1 << 0, + + /*! Fix the EXIF tags to follow the spec */ + EXIF_DATA_OPTION_FOLLOW_SPECIFICATION = 1 << 1, + + /*! Leave the MakerNote alone, which could cause it to be corrupted */ + EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE = 1 << 2 +} ExifDataOption; + +/*! Return a short textual description of the given #ExifDataOption. + * + * \param[in] o option + * \return localized textual description of the option, + * or NULL if unknown + */ +const char *exif_data_option_get_name (ExifDataOption o); + +/*! Return a verbose textual description of the given #ExifDataOption. + * + * \param[in] o option + * \return verbose localized textual description of the option, + * or NULL if unknown + */ +const char *exif_data_option_get_description (ExifDataOption o); + +/*! Set the given option on the given #ExifData. + * + * \param[in] d EXIF data + * \param[in] o option + */ +void exif_data_set_option (ExifData *d, ExifDataOption o); + +/*! Clear the given option on the given #ExifData. + * + * \param[in] d EXIF data + * \param[in] o option + */ +void exif_data_unset_option (ExifData *d, ExifDataOption o); + +/*! Set the data type for the given #ExifData. + * + * \param[in] d EXIF data + * \param[in] dt data type + */ +void exif_data_set_data_type (ExifData *d, ExifDataType dt); + +/*! Return the data type for the given #ExifData. + * + * \param[in] d EXIF data + * \return data type, or #EXIF_DATA_TYPE_UNKNOWN on error + */ +ExifDataType exif_data_get_data_type (ExifData *d); + +/*! Dump all EXIF data to stdout. + * This is intended for diagnostic purposes only. + * + * \param[in] data EXIF data + */ +void exif_data_dump (ExifData *data); + +/*! Set the log message object for all IFDs. + * + * \param[in] data EXIF data + * \param[in] log #ExifLog + */ +void exif_data_log (ExifData *data, ExifLog *log); + +/*! Return an #ExifEntry for the given tag if found in any IFD. + * Each IFD is searched in turn and the first containing a tag with + * this number is returned. + * + * \param[in] d #ExifData + * \param[in] t #ExifTag + * \return #ExifEntry* if found, else NULL if not found + */ +#define exif_data_get_entry(d,t) \ + (exif_content_get_entry(d->ifd[EXIF_IFD_0],t) ? \ + exif_content_get_entry(d->ifd[EXIF_IFD_0],t) : \ + exif_content_get_entry(d->ifd[EXIF_IFD_1],t) ? \ + exif_content_get_entry(d->ifd[EXIF_IFD_1],t) : \ + exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) ? \ + exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) : \ + exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) ? \ + exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) : \ + exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) ? \ + exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) : NULL) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_DATA_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-entry.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-entry.h new file mode 100644 index 0000000..d8f6fd8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-entry.h @@ -0,0 +1,186 @@ +/*! \file exif-entry.h + * \brief Handling EXIF entries + */ +/* + * Copyright (c) 2001 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_ENTRY_H +#define LIBEXIF_EXIF_ENTRY_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! Data found in one EXIF tag. + * The #exif_entry_get_value function can provide access to the + * formatted contents, or the struct members can be used directly to + * access the raw contents. + */ +typedef struct _ExifEntry ExifEntry; +typedef struct _ExifEntryPrivate ExifEntryPrivate; + +#include +#include +#include + +/*! Data found in one EXIF tag */ +struct _ExifEntry { + /*! EXIF tag for this entry */ + ExifTag tag; + + /*! Type of data in this entry */ + ExifFormat format; + + /*! Number of elements in the array, if this is an array entry. + * Contains 1 for non-array data types. */ + unsigned long components; + + /*! Pointer to the raw EXIF data for this entry. It is allocated + * by #exif_entry_initialize and is NULL beforehand. Data contained + * here may be manipulated using the functions in exif-utils.h */ + unsigned char *data; + + /*! Number of bytes in the buffer at \c data. This must be no less + * than exif_format_get_size(format)*components */ + unsigned int size; + + /*! #ExifContent containing this entry. + * \see exif_entry_get_ifd */ + ExifContent *parent; + + /*! Internal data to be used by libexif itself */ + ExifEntryPrivate *priv; +}; + +/* Lifecycle */ + +/*! Reserve memory for and initialize a new #ExifEntry. + * No memory is allocated for the \c data element of the returned #ExifEntry. + * + * \return new allocated #ExifEntry, or NULL on error + * + * \see exif_entry_new_mem, exif_entry_unref + */ +ExifEntry *exif_entry_new (void); + +/*! Reserve memory for and initialize new #ExifEntry using the specified + * memory allocator. + * No memory is allocated for the \c data element of the returned #ExifEntry. + * + * \return new allocated #ExifEntry, or NULL on error + * + * \see exif_entry_new, exif_entry_unref + */ +ExifEntry *exif_entry_new_mem (ExifMem *); + +/*! Increase reference counter for #ExifEntry. + * + * \param[in] entry #ExifEntry + * + * \see exif_entry_unref + */ +void exif_entry_ref (ExifEntry *entry); + +/*! Decrease reference counter for #ExifEntry. + * When the reference count drops to zero, free the entry. + * + * \param[in] entry #ExifEntry + */ +void exif_entry_unref (ExifEntry *entry); + +/*! Actually free the #ExifEntry. + * + * \deprecated Should not be called directly. Use #exif_entry_ref and + * #exif_entry_unref instead. + * + * \param[in] entry EXIF entry + */ +void exif_entry_free (ExifEntry *entry); + +/*! Initialize an empty #ExifEntry with default data in the correct format + * for the given tag. If the entry is already initialized, this function + * does nothing. + * This call allocates memory for the \c data element of the given #ExifEntry. + * That memory is freed at the same time as the #ExifEntry. + * + * \param[out] e entry to initialize + * \param[in] tag tag number to initialize as + */ +void exif_entry_initialize (ExifEntry *e, ExifTag tag); + +/*! Fix the type or format of the given EXIF entry to bring it into spec. + * If the data for this EXIF tag is in of the wrong type or is in an invalid + * format according to the EXIF specification, then it is converted to make it + * valid. This may involve, for example, converting an EXIF_FORMAT_LONG into a + * EXIF_FORMAT_SHORT. If the tag is unknown, its value is untouched. + * + * \note Unfortunately, some conversions are to a type with a more restricted + * range, which could have the side effect that the converted data becomes + * invalid. This is unlikely as the range of each tag in the standard is + * designed to encompass all likely data. + * + * \param[in,out] entry EXIF entry + */ +void exif_entry_fix (ExifEntry *entry); + + +/* For your convenience */ + +/*! Return a localized textual representation of the value of the EXIF entry. + * This is meant for display to the user. The format of each tag is subject + * to change between locales and in newer versions of libexif. Users who + * require the tag data in an unambiguous form should access the data members + * of the #ExifEntry structure directly. + * + * \warning The character set of the returned string may be in + * the encoding of the current locale or the native encoding + * of the camera. + * \bug The EXIF_TAG_XP_* tags are currently always returned in UTF-8, + * regardless of locale, and code points above U+FFFF are not + * supported. + * + * \param[in] entry EXIF entry + * \param[out] val buffer in which to store value; if entry is valid and + * maxlen > 0 then this string will be NUL-terminated + * \param[in] maxlen length of the buffer val + * \return val pointer + */ +const char *exif_entry_get_value (ExifEntry *entry, char *val, + unsigned int maxlen); + +/*! Dump text representation of #ExifEntry to stdout. + * This is intended for diagnostic purposes only. + * + * \param[in] entry EXIF tag data + * \param[in] indent how many levels deep to indent the data + */ +void exif_entry_dump (ExifEntry *entry, unsigned int indent); + +/*! Return the IFD number of the given #ExifEntry + * + * \param[in] e an #ExifEntry* + * \return #ExifIfd, or #EXIF_IFD_COUNT on error + */ +#define exif_entry_get_ifd(e) ((e)?exif_content_get_ifd((e)->parent):EXIF_IFD_COUNT) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_ENTRY_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-format.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-format.h new file mode 100644 index 0000000..8706b84 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-format.h @@ -0,0 +1,65 @@ +/*! \file exif-format.h + * \brief Handling native EXIF data types + */ +/* + * + * Copyright (c) 2001 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_FORMAT_H +#define LIBEXIF_EXIF_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! EXIF tag data formats */ +typedef enum { + EXIF_FORMAT_BYTE = 1, + EXIF_FORMAT_ASCII = 2, + EXIF_FORMAT_SHORT = 3, + EXIF_FORMAT_LONG = 4, + EXIF_FORMAT_RATIONAL = 5, + EXIF_FORMAT_SBYTE = 6, + EXIF_FORMAT_UNDEFINED = 7, + EXIF_FORMAT_SSHORT = 8, + EXIF_FORMAT_SLONG = 9, + EXIF_FORMAT_SRATIONAL = 10, + EXIF_FORMAT_FLOAT = 11, + EXIF_FORMAT_DOUBLE = 12 +} ExifFormat; + +/*! Return a textual representation of the given EXIF data type. + * + * \param[in] format EXIF data format + * \return localized textual name, or NULL if unknown + */ +const char *exif_format_get_name (ExifFormat format); + +/*! Return the raw size of the given EXIF data type. + * + * \param[in] format EXIF data format + * \return size in bytes + */ +unsigned char exif_format_get_size (ExifFormat format); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_FORMAT_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-ifd.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-ifd.h new file mode 100644 index 0000000..2b7a782 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-ifd.h @@ -0,0 +1,51 @@ +/* exif-ifd.h + * + * Copyright (c) 2002 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_IFD_H +#define LIBEXIF_EXIF_IFD_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! Possible EXIF Image File Directories */ +typedef enum { + EXIF_IFD_0 = 0, /*!< */ + EXIF_IFD_1, /*!< */ + EXIF_IFD_EXIF, /*!< */ + EXIF_IFD_GPS, /*!< */ + EXIF_IFD_INTEROPERABILITY, /*!< */ + EXIF_IFD_COUNT /*!< Not a real value, just (max_value + 1). */ +} ExifIfd; + +/*! Return a textual name of the given IFD. The name is a short, unique, + * non-localized text string containing only US-ASCII alphanumeric + * characters. + * + * \param[in] ifd IFD + * \return textual name of the IFD, or NULL if unknown + */ +const char *exif_ifd_get_name (ExifIfd ifd); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_IFD_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-loader.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-loader.h new file mode 100644 index 0000000..581a925 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-loader.h @@ -0,0 +1,128 @@ +/*! \file exif-loader.h + * \brief Defines the ExifLoader type + */ +/* + * Copyright (c) 2003 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_LOADER_H +#define LIBEXIF_EXIF_LOADER_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! Data used by the loader interface */ +typedef struct _ExifLoader ExifLoader; + +/*! Allocate a new #ExifLoader. + * + * \return allocated ExifLoader + */ +ExifLoader *exif_loader_new (void); + +/*! Allocate a new #ExifLoader using the specified memory allocator. + * + * \param[in] mem the ExifMem + * \return allocated ExifLoader + */ +ExifLoader *exif_loader_new_mem (ExifMem *mem); + +/*! Increase the refcount of the #ExifLoader. + * + * \param[in] loader the ExifLoader to increase the refcount of. + */ +void exif_loader_ref (ExifLoader *loader); + +/*! Decrease the refcount of the #ExifLoader. + * If the refcount reaches 0, the loader is freed. + * + * \param[in] loader ExifLoader for which to decrease the refcount + */ +void exif_loader_unref (ExifLoader *loader); + +/*! Load a file into the given #ExifLoader from the filesystem. + * The relevant data is copied in raw form into the #ExifLoader. + * + * \param[in] loader loader to write to + * \param[in] fname path to the file to read + */ +void exif_loader_write_file (ExifLoader *loader, const char *fname); + +/*! Load a buffer into the #ExifLoader from a memory buffer. + * The relevant data is copied in raw form into the #ExifLoader. + * + * \param[in] loader loader to write to + * \param[in] buf buffer to read from + * \param[in] sz size of the buffer + * \return 1 while EXIF data is read (or while there is still hope that + * there will be EXIF data later on), 0 otherwise. + */ +unsigned char exif_loader_write (ExifLoader *loader, unsigned char *buf, unsigned int sz); + +/*! Free any data previously loaded and reset the #ExifLoader to its + * newly-initialized state. + * + * \param[in] loader the loader + */ +void exif_loader_reset (ExifLoader *loader); + +/*! Create an #ExifData from the data in the loader. The loader must + * already contain data from a previous call to #exif_loader_write_file + * or #exif_loader_write. + * + * \note The #ExifData returned is created using its default options, which + * may take effect before the data is returned. If other options are desired, + * an #ExifData must be created explicitly and data extracted from the loader + * using #exif_loader_get_buf instead. + * + * \param[in] loader the loader + * \return allocated ExifData + * + * \see exif_loader_get_buf + */ +ExifData *exif_loader_get_data (ExifLoader *loader); + +/*! Return the raw data read by the loader. The returned pointer is only + * guaranteed to be valid until the next call to a function modifying + * this #ExifLoader. Either or both of buf and buf_size may be NULL on + * entry, in which case that value is not returned. + * + * \param[in] loader the loader + * \param[out] buf read-only pointer to the data read by the loader, or NULL + * in case of error + * \param[out] buf_size size of the data at buf, or 0 in case of error + */ +void exif_loader_get_buf (ExifLoader *loader, const unsigned char **buf, + unsigned int *buf_size); + +/*! Set the log message object used by this #ExifLoader. + * \param[in] loader the loader + * \param[in] log #ExifLog + */ +void exif_loader_log (ExifLoader *loader, ExifLog *log); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_LOADER_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-log.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-log.h new file mode 100644 index 0000000..cd8698e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-log.h @@ -0,0 +1,116 @@ +/*! \file exif-log.h + * \brief Log message infrastructure + */ +/* + * Copyright (c) 2004 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_LOG_H +#define LIBEXIF_EXIF_LOG_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include + +/*! State maintained by the logging interface */ +typedef struct _ExifLog ExifLog; + +/*! Create a new logging instance. + * \see exif_log_free + * + * \return new instance of #ExifLog + */ +ExifLog *exif_log_new (void); +ExifLog *exif_log_new_mem (ExifMem *); +void exif_log_ref (ExifLog *log); +void exif_log_unref (ExifLog *log); + +/*! Delete instance of #ExifLog. + * \see exif_log_new + * + * \param[in] log #ExifLog + * \return new instance of #ExifLog + */ +void exif_log_free (ExifLog *log); + +typedef enum { + EXIF_LOG_CODE_NONE, + EXIF_LOG_CODE_DEBUG, + EXIF_LOG_CODE_NO_MEMORY, + EXIF_LOG_CODE_CORRUPT_DATA +} ExifLogCode; + +/*! Return a textual description of the given class of error log. + * + * \param[in] code logging message class + * \return textual description of the log class, or NULL if unknown + */ +const char *exif_log_code_get_title (ExifLogCode code); + +/*! Return a verbose description of the given class of error log. + * + * \param[in] code logging message class + * \return verbose description of the log class, or NULL if unknown + */ +const char *exif_log_code_get_message (ExifLogCode code); + +/*! Log callback function prototype. + */ +typedef void (* ExifLogFunc) (ExifLog *log, ExifLogCode, const char *domain, + const char *format, va_list args, void *data); + +/*! Register log callback function. + * Calls to the log callback function are purely for diagnostic purposes. + * + * \param[in] log logging state variable + * \param[in] func callback function to set + * \param[in] data data to pass into callback function + */ +void exif_log_set_func (ExifLog *log, ExifLogFunc func, void *data); + +#ifndef NO_VERBOSE_TAG_STRINGS +void exif_log (ExifLog *log, ExifLogCode, const char *domain, + const char *format, ...) +#ifdef __GNUC__ + __attribute__((__format__(printf,4,5))) +#endif +; +#else +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define exif_log(...) do { } while (0) +#elif defined(__GNUC__) +#define exif_log(x...) do { } while (0) +#else +#define exif_log (void) +#endif +#endif + +void exif_logv (ExifLog *log, ExifLogCode, const char *domain, + const char *format, va_list args); + +/* For your convenience */ +#define EXIF_LOG_NO_MEMORY(l,d,s) exif_log ((l), EXIF_LOG_CODE_NO_MEMORY, (d), "Could not allocate %lu byte(s).", (unsigned long)(s)) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_LOG_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-mem.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-mem.h new file mode 100644 index 0000000..b7a9c21 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-mem.h @@ -0,0 +1,91 @@ +/*! \file exif-mem.h + * \brief Define the ExifMem data type and the associated functions. + * ExifMem defines the memory management functions used within libexif. + */ +/* exif-mem.h + * + * Copyright (c) 2003 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_MEM_H +#define LIBEXIF_EXIF_MEM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/*! Should work like calloc() + * + * \param[in] s the size of the block to allocate. + * \return the allocated memory and initialized. + */ +typedef void * (* ExifMemAllocFunc) (ExifLong s); + +/*! Should work like realloc() + * + * \param[in] p the pointer to reallocate + * \param[in] s the size of the reallocated block + * \return allocated memory + */ +typedef void * (* ExifMemReallocFunc) (void *p, ExifLong s); + +/*! Free method for ExifMem + * + * \param[in] p the pointer to free + * \return the freed pointer + */ +typedef void (* ExifMemFreeFunc) (void *p); + +/*! ExifMem define a memory allocator */ +typedef struct _ExifMem ExifMem; + +/*! Create a new ExifMem + * + * \param[in] a the allocator function + * \param[in] r the reallocator function + * \param[in] f the free function + * \return allocated #ExifMem, or NULL on error + */ +ExifMem *exif_mem_new (ExifMemAllocFunc a, ExifMemReallocFunc r, + ExifMemFreeFunc f); +/*! Refcount an ExifMem + */ +void exif_mem_ref (ExifMem *); + +/*! Unrefcount an ExifMem. + * If the refcount reaches 0, the ExifMem is freed + */ +void exif_mem_unref (ExifMem *); + +void *exif_mem_alloc (ExifMem *m, ExifLong s); +void *exif_mem_realloc (ExifMem *m, void *p, ExifLong s); +void exif_mem_free (ExifMem *m, void *p); + +/*! Create a new ExifMem with default values for your convenience + * + * \return return a new default ExifMem + */ +ExifMem *exif_mem_new_default (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_MEM_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-mnote-data.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-mnote-data.h new file mode 100644 index 0000000..24b1a4b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-mnote-data.h @@ -0,0 +1,122 @@ +/*! \file exif-mnote-data.h + * \brief Handling EXIF MakerNote tags + */ +/* + * Copyright (c) 2003 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_MNOTE_DATA_H +#define LIBEXIF_EXIF_MNOTE_DATA_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include + +/*! Data found in the MakerNote tag */ +typedef struct _ExifMnoteData ExifMnoteData; + +void exif_mnote_data_ref (ExifMnoteData *); +void exif_mnote_data_unref (ExifMnoteData *); + +/*! Load the MakerNote data from a memory buffer. + * + * \param[in] d MakerNote data + * \param[in] buf pointer to raw MakerNote tag data + * \param[in] buf_size number of bytes of data at buf + */ +void exif_mnote_data_load (ExifMnoteData *d, const unsigned char *buf, + unsigned int buf_size); + +/*! + * Save the raw MakerNote data into a memory buffer. The buffer is + * allocated by this function and must subsequently be freed by the + * caller. + * + * \param[in,out] d extract the data from this structure + * \param[out] buf pointer to buffer pointer containing MakerNote data on return + * \param[out] buf_size pointer to the size of the buffer + */ +void exif_mnote_data_save (ExifMnoteData *d, unsigned char **buf, + unsigned int *buf_size); + +/*! Return the number of tags in the MakerNote. + * + * \param[in] d MakerNote data + * \return number of tags, or 0 if no MakerNote or the type is not supported + */ +unsigned int exif_mnote_data_count (ExifMnoteData *d); + +/*! Return the MakerNote tag number for the tag at the specified index within + * the MakerNote. + * + * \param[in] d MakerNote data + * \param[in] n index of the entry within the MakerNote data + * \return MakerNote tag number + */ +unsigned int exif_mnote_data_get_id (ExifMnoteData *d, unsigned int n); + +/*! Returns textual name of the given MakerNote tag. The name is a short, + * unique (within this type of MakerNote), non-localized text string + * containing only US-ASCII alphanumeric characters. + * + * \param[in] d MakerNote data + * \param[in] n index of the entry within the MakerNote data + * \return textual name of the tag or NULL on error + */ +const char *exif_mnote_data_get_name (ExifMnoteData *d, unsigned int n); + +/*! Returns textual title of the given MakerNote tag. + * The title is a short, localized textual description of the tag. + * + * \param[in] d MakerNote data + * \param[in] n index of the entry within the MakerNote data + * \return textual name of the tag or NULL on error + */ +const char *exif_mnote_data_get_title (ExifMnoteData *d, unsigned int n); + +/*! Returns verbose textual description of the given MakerNote tag. + * + * \param[in] d MakerNote data + * \param[in] n index of the entry within the MakerNote data + * \return textual description of the tag or NULL on error + */ +const char *exif_mnote_data_get_description (ExifMnoteData *d, unsigned int n); + +/*! Return a textual representation of the value of the MakerNote entry. + * + * \warning The character set of the returned string may be in + * the encoding of the current locale or the native encoding + * of the camera. + * + * \param[in] d MakerNote data + * \param[in] n index of the entry within the MakerNote data + * \param[out] val buffer in which to store value + * \param[in] maxlen length of the buffer val + * \return val pointer, or NULL on error + */ +char *exif_mnote_data_get_value (ExifMnoteData *d, unsigned int n, char *val, unsigned int maxlen); + +void exif_mnote_data_log (ExifMnoteData *, ExifLog *); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_MNOTE_DATA_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-tag.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-tag.h new file mode 100644 index 0000000..7840273 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-tag.h @@ -0,0 +1,307 @@ +/*! \file exif-tag.h + * \brief Handling EXIF tags + */ +/* + * Copyright (c) 2001 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_TAG_H +#define LIBEXIF_EXIF_TAG_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include + +/*! EXIF tags */ +typedef enum { + EXIF_TAG_INTEROPERABILITY_INDEX = 0x0001, + EXIF_TAG_INTEROPERABILITY_VERSION = 0x0002, + EXIF_TAG_NEW_SUBFILE_TYPE = 0x00fe, + EXIF_TAG_IMAGE_WIDTH = 0x0100, + EXIF_TAG_IMAGE_LENGTH = 0x0101, + EXIF_TAG_BITS_PER_SAMPLE = 0x0102, + EXIF_TAG_COMPRESSION = 0x0103, + EXIF_TAG_PHOTOMETRIC_INTERPRETATION = 0x0106, + EXIF_TAG_FILL_ORDER = 0x010a, + EXIF_TAG_DOCUMENT_NAME = 0x010d, + EXIF_TAG_IMAGE_DESCRIPTION = 0x010e, + EXIF_TAG_MAKE = 0x010f, + EXIF_TAG_MODEL = 0x0110, + EXIF_TAG_STRIP_OFFSETS = 0x0111, + EXIF_TAG_ORIENTATION = 0x0112, + EXIF_TAG_SAMPLES_PER_PIXEL = 0x0115, + EXIF_TAG_ROWS_PER_STRIP = 0x0116, + EXIF_TAG_STRIP_BYTE_COUNTS = 0x0117, + EXIF_TAG_X_RESOLUTION = 0x011a, + EXIF_TAG_Y_RESOLUTION = 0x011b, + EXIF_TAG_PLANAR_CONFIGURATION = 0x011c, + EXIF_TAG_RESOLUTION_UNIT = 0x0128, + EXIF_TAG_TRANSFER_FUNCTION = 0x012d, + EXIF_TAG_SOFTWARE = 0x0131, + EXIF_TAG_DATE_TIME = 0x0132, + EXIF_TAG_ARTIST = 0x013b, + EXIF_TAG_WHITE_POINT = 0x013e, + EXIF_TAG_PRIMARY_CHROMATICITIES = 0x013f, + EXIF_TAG_SUB_IFDS = 0x014a, + EXIF_TAG_TRANSFER_RANGE = 0x0156, + EXIF_TAG_JPEG_PROC = 0x0200, + EXIF_TAG_JPEG_INTERCHANGE_FORMAT = 0x0201, + EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = 0x0202, + EXIF_TAG_YCBCR_COEFFICIENTS = 0x0211, + EXIF_TAG_YCBCR_SUB_SAMPLING = 0x0212, + EXIF_TAG_YCBCR_POSITIONING = 0x0213, + EXIF_TAG_REFERENCE_BLACK_WHITE = 0x0214, + EXIF_TAG_XML_PACKET = 0x02bc, + EXIF_TAG_RELATED_IMAGE_FILE_FORMAT = 0x1000, + EXIF_TAG_RELATED_IMAGE_WIDTH = 0x1001, + EXIF_TAG_RELATED_IMAGE_LENGTH = 0x1002, + EXIF_TAG_IMAGE_DEPTH = 0x80e5, + EXIF_TAG_CFA_REPEAT_PATTERN_DIM = 0x828d, + EXIF_TAG_CFA_PATTERN = 0x828e, + EXIF_TAG_BATTERY_LEVEL = 0x828f, + EXIF_TAG_COPYRIGHT = 0x8298, + EXIF_TAG_EXPOSURE_TIME = 0x829a, + EXIF_TAG_FNUMBER = 0x829d, + EXIF_TAG_IPTC_NAA = 0x83bb, + EXIF_TAG_IMAGE_RESOURCES = 0x8649, + EXIF_TAG_EXIF_IFD_POINTER = 0x8769, + EXIF_TAG_INTER_COLOR_PROFILE = 0x8773, + EXIF_TAG_EXPOSURE_PROGRAM = 0x8822, + EXIF_TAG_SPECTRAL_SENSITIVITY = 0x8824, + EXIF_TAG_GPS_INFO_IFD_POINTER = 0x8825, + EXIF_TAG_ISO_SPEED_RATINGS = 0x8827, + EXIF_TAG_OECF = 0x8828, + EXIF_TAG_TIME_ZONE_OFFSET = 0x882a, + EXIF_TAG_SENSITIVITY_TYPE = 0x8830, + EXIF_TAG_STANDARD_OUTPUT_SENSITIVITY = 0x8831, + EXIF_TAG_RECOMMENDED_EXPOSURE_INDEX = 0x8832, + EXIF_TAG_ISO_SPEED = 0x8833, + EXIF_TAG_ISO_SPEEDLatitudeYYY = 0x8834, + EXIF_TAG_ISO_SPEEDLatitudeZZZ = 0x8835, + EXIF_TAG_EXIF_VERSION = 0x9000, + EXIF_TAG_DATE_TIME_ORIGINAL = 0x9003, + EXIF_TAG_DATE_TIME_DIGITIZED = 0x9004, + EXIF_TAG_OFFSET_TIME = 0x9010, + EXIF_TAG_OFFSET_TIME_ORIGINAL = 0x9011, + EXIF_TAG_OFFSET_TIME_DIGITIZED = 0x9012, + EXIF_TAG_COMPONENTS_CONFIGURATION = 0x9101, + EXIF_TAG_COMPRESSED_BITS_PER_PIXEL = 0x9102, + EXIF_TAG_SHUTTER_SPEED_VALUE = 0x9201, + EXIF_TAG_APERTURE_VALUE = 0x9202, + EXIF_TAG_BRIGHTNESS_VALUE = 0x9203, + EXIF_TAG_EXPOSURE_BIAS_VALUE = 0x9204, + EXIF_TAG_MAX_APERTURE_VALUE = 0x9205, + EXIF_TAG_SUBJECT_DISTANCE = 0x9206, + EXIF_TAG_METERING_MODE = 0x9207, + EXIF_TAG_LIGHT_SOURCE = 0x9208, + EXIF_TAG_FLASH = 0x9209, + EXIF_TAG_FOCAL_LENGTH = 0x920a, + EXIF_TAG_SUBJECT_AREA = 0x9214, + EXIF_TAG_TIFF_EP_STANDARD_ID = 0x9216, + EXIF_TAG_MAKER_NOTE = 0x927c, + EXIF_TAG_USER_COMMENT = 0x9286, + EXIF_TAG_SUB_SEC_TIME = 0x9290, + EXIF_TAG_SUB_SEC_TIME_ORIGINAL = 0x9291, + EXIF_TAG_SUB_SEC_TIME_DIGITIZED = 0x9292, + EXIF_TAG_XP_TITLE = 0x9c9b, + EXIF_TAG_XP_COMMENT = 0x9c9c, + EXIF_TAG_XP_AUTHOR = 0x9c9d, + EXIF_TAG_XP_KEYWORDS = 0x9c9e, + EXIF_TAG_XP_SUBJECT = 0x9c9f, + EXIF_TAG_FLASH_PIX_VERSION = 0xa000, + EXIF_TAG_COLOR_SPACE = 0xa001, + EXIF_TAG_PIXEL_X_DIMENSION = 0xa002, + EXIF_TAG_PIXEL_Y_DIMENSION = 0xa003, + EXIF_TAG_RELATED_SOUND_FILE = 0xa004, + EXIF_TAG_INTEROPERABILITY_IFD_POINTER = 0xa005, + EXIF_TAG_FLASH_ENERGY = 0xa20b, + EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE = 0xa20c, + EXIF_TAG_FOCAL_PLANE_X_RESOLUTION = 0xa20e, + EXIF_TAG_FOCAL_PLANE_Y_RESOLUTION = 0xa20f, + EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT = 0xa210, + EXIF_TAG_SUBJECT_LOCATION = 0xa214, + EXIF_TAG_EXPOSURE_INDEX = 0xa215, + EXIF_TAG_SENSING_METHOD = 0xa217, + EXIF_TAG_FILE_SOURCE = 0xa300, + EXIF_TAG_SCENE_TYPE = 0xa301, + EXIF_TAG_NEW_CFA_PATTERN = 0xa302, + EXIF_TAG_CUSTOM_RENDERED = 0xa401, + EXIF_TAG_EXPOSURE_MODE = 0xa402, + EXIF_TAG_WHITE_BALANCE = 0xa403, + EXIF_TAG_DIGITAL_ZOOM_RATIO = 0xa404, + EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM = 0xa405, + EXIF_TAG_SCENE_CAPTURE_TYPE = 0xa406, + EXIF_TAG_GAIN_CONTROL = 0xa407, + EXIF_TAG_CONTRAST = 0xa408, + EXIF_TAG_SATURATION = 0xa409, + EXIF_TAG_SHARPNESS = 0xa40a, + EXIF_TAG_DEVICE_SETTING_DESCRIPTION = 0xa40b, + EXIF_TAG_SUBJECT_DISTANCE_RANGE = 0xa40c, + EXIF_TAG_IMAGE_UNIQUE_ID = 0xa420, + EXIF_TAG_CAMERA_OWNER_NAME = 0xa430, + EXIF_TAG_BODY_SERIAL_NUMBER = 0xa431, + EXIF_TAG_LENS_SPECIFICATION = 0xa432, + EXIF_TAG_LENS_MAKE = 0xa433, + EXIF_TAG_LENS_MODEL = 0xa434, + EXIF_TAG_LENS_SERIAL_NUMBER = 0xa435, + EXIF_TAG_COMPOSITE_IMAGE = 0xa460, + EXIF_TAG_SOURCE_IMAGE_NUMBER_OF_COMPOSITE_IMAGE = 0xa461, + EXIF_TAG_SOURCE_EXPOSURE_TIMES_OF_COMPOSITE_IMAGE = 0xa462, + EXIF_TAG_GAMMA = 0xa500, + EXIF_TAG_PRINT_IMAGE_MATCHING = 0xc4a5, + EXIF_TAG_PADDING = 0xea1c +} ExifTag; + +/* GPS tags overlap with above ones. */ +#define EXIF_TAG_GPS_VERSION_ID 0x0000 +#define EXIF_TAG_GPS_LATITUDE_REF 0x0001 /* INTEROPERABILITY_INDEX */ +#define EXIF_TAG_GPS_LATITUDE 0x0002 /* INTEROPERABILITY_VERSION */ +#define EXIF_TAG_GPS_LONGITUDE_REF 0x0003 +#define EXIF_TAG_GPS_LONGITUDE 0x0004 +#define EXIF_TAG_GPS_ALTITUDE_REF 0x0005 +#define EXIF_TAG_GPS_ALTITUDE 0x0006 +#define EXIF_TAG_GPS_TIME_STAMP 0x0007 +#define EXIF_TAG_GPS_SATELLITES 0x0008 +#define EXIF_TAG_GPS_STATUS 0x0009 +#define EXIF_TAG_GPS_MEASURE_MODE 0x000a +#define EXIF_TAG_GPS_DOP 0x000b +#define EXIF_TAG_GPS_SPEED_REF 0x000c +#define EXIF_TAG_GPS_SPEED 0x000d +#define EXIF_TAG_GPS_TRACK_REF 0x000e +#define EXIF_TAG_GPS_TRACK 0x000f +#define EXIF_TAG_GPS_IMG_DIRECTION_REF 0x0010 +#define EXIF_TAG_GPS_IMG_DIRECTION 0x0011 +#define EXIF_TAG_GPS_MAP_DATUM 0x0012 +#define EXIF_TAG_GPS_DEST_LATITUDE_REF 0x0013 +#define EXIF_TAG_GPS_DEST_LATITUDE 0x0014 +#define EXIF_TAG_GPS_DEST_LONGITUDE_REF 0x0015 +#define EXIF_TAG_GPS_DEST_LONGITUDE 0x0016 +#define EXIF_TAG_GPS_DEST_BEARING_REF 0x0017 +#define EXIF_TAG_GPS_DEST_BEARING 0x0018 +#define EXIF_TAG_GPS_DEST_DISTANCE_REF 0x0019 +#define EXIF_TAG_GPS_DEST_DISTANCE 0x001a +#define EXIF_TAG_GPS_PROCESSING_METHOD 0x001b +#define EXIF_TAG_GPS_AREA_INFORMATION 0x001c +#define EXIF_TAG_GPS_DATE_STAMP 0x001d +#define EXIF_TAG_GPS_DIFFERENTIAL 0x001e +#define EXIF_TAG_GPS_H_POSITIONING_ERROR 0x001f + +/*! What level of support a tag enjoys in the EXIF standard */ +typedef enum { + /*! The meaning of this tag is unknown */ + EXIF_SUPPORT_LEVEL_UNKNOWN = 0, + + /*! This tag is not allowed in the given IFD */ + EXIF_SUPPORT_LEVEL_NOT_RECORDED, + + /*! This tag is mandatory in the given IFD */ + EXIF_SUPPORT_LEVEL_MANDATORY, + + /*! This tag is optional in the given IFD */ + EXIF_SUPPORT_LEVEL_OPTIONAL +} ExifSupportLevel; + +/*! Return the tag ID given its unique textual name. + * + * \param[in] name tag name + * \return tag ID, or 0 if tag not found + * \note The tag not found value cannot be distinguished from a legitimate + * tag number 0. + */ +ExifTag exif_tag_from_name (const char *name); + +/*! Return a textual name of the given tag when found in the given IFD. The + * name is a short, unique, non-localized text string containing only + * US-ASCII alphanumeric characters. + * + * \param[in] tag EXIF tag + * \param[in] ifd IFD + * \return textual name of the tag, or NULL if the tag is unknown + */ +const char *exif_tag_get_name_in_ifd (ExifTag tag, ExifIfd ifd); + +/*! Return a textual title of the given tag when found in the given IFD. + * The title is a short, localized description of the tag. + * + * \param[in] tag EXIF tag + * \param[in] ifd IFD + * \return textual title of the tag, or NULL if the tag is unknown + */ +const char *exif_tag_get_title_in_ifd (ExifTag tag, ExifIfd ifd); + +/*! Return a verbose textual description of the given tag when found in the + * given IFD. The description is a verbose, localized description of the tag. + * + * \param[in] tag EXIF tag + * \param[in] ifd IFD + * \return textual description of the tag, or NULL if the tag is unknown + */ +const char *exif_tag_get_description_in_ifd (ExifTag tag, ExifIfd ifd); + +/*! Return whether the given tag is mandatory or not in the given IFD and + * data type according to the EXIF specification. If the IFD given is + * EXIF_IFD_COUNT, the result is EXIF_SUPPORT_LEVEL_UNKNOWN. If the data + * type is EXIF_DATA_TYPE_UNKNOWN, the result is + * EXIF_SUPPORT_LEVEL_UNKNOWN unless the support level is the same for + * all data types. + * + * \param[in] tag EXIF tag + * \param[in] ifd IFD or EXIF_IFD_COUNT + * \param[in] t data type or EXIF_DATA_TYPE_UNKNOWN + * \return the level of support for this tag + */ +ExifSupportLevel exif_tag_get_support_level_in_ifd (ExifTag tag, ExifIfd ifd, + ExifDataType t); + +/* Don't use these functions. They are here for compatibility only. */ + +/*! \deprecated Use #exif_tag_get_name_in_ifd instead */ +const char *exif_tag_get_name (ExifTag tag); + +/*! \deprecated Use #exif_tag_get_title_in_ifd instead */ +const char *exif_tag_get_title (ExifTag tag); + +/*! \deprecated Use #exif_tag_get_description_in_ifd instead */ +const char *exif_tag_get_description (ExifTag tag); + + +/* For now, do not use these functions. */ + +/*! \internal */ +ExifTag exif_tag_table_get_tag (unsigned int n); + +/*! \internal */ +const char *exif_tag_table_get_name (unsigned int n); + +/*! \internal */ +unsigned int exif_tag_table_count (void); + + +/* Don't use these definitions. They are here for compatibility only. */ + +/*! \deprecated Use EXIF_TAG_PRINT_IMAGE_MATCHING instead. */ +#define EXIF_TAG_UNKNOWN_C4A5 EXIF_TAG_PRINT_IMAGE_MATCHING + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_TAG_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-utils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-utils.h new file mode 100644 index 0000000..db757ff --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libexif/exif-utils.h @@ -0,0 +1,194 @@ +/*! \file exif-utils.h + * \brief EXIF data manipulation functions and types + */ +/* + * Copyright (c) 2001 Lutz Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + */ + +#ifndef LIBEXIF_EXIF_UTILS_H +#define LIBEXIF_EXIF_UTILS_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include +#include + + +/* If these definitions don't work for you, please let us fix the + * macro generating _stdint.h */ + +/*! EXIF Unsigned Byte data type */ +typedef unsigned char ExifByte; /* 1 byte */ + +/*! EXIF Signed Byte data type */ +typedef signed char ExifSByte; /* 1 byte */ + +/*! EXIF Text String data type */ +typedef char * ExifAscii; + +/*! EXIF Unsigned Short data type */ +typedef uint16_t ExifShort; /* 2 bytes */ + +/*! EXIF Signed Short data type */ +typedef int16_t ExifSShort; /* 2 bytes */ + +/*! EXIF Unsigned Long data type */ +typedef uint32_t ExifLong; /* 4 bytes */ + +/*! EXIF Signed Long data type */ +typedef int32_t ExifSLong; /* 4 bytes */ + +/*! EXIF Unsigned Rational data type */ +typedef struct {ExifLong numerator; ExifLong denominator;} ExifRational; + +typedef char ExifUndefined; /* 1 byte */ + +/*! EXIF Signed Rational data type */ +typedef struct {ExifSLong numerator; ExifSLong denominator;} ExifSRational; + + +/*! Retrieve an #ExifShort value from memory. + * + * \param[in] b pointer to raw EXIF value in memory + * \param[in] order byte order of raw value + * \return value + */ +ExifShort exif_get_short (const unsigned char *b, ExifByteOrder order); + +/*! Retrieve an #ExifSShort value from memory. + * + * \param[in] b pointer to raw EXIF value in memory + * \param[in] order byte order of raw value + * \return value + */ +ExifSShort exif_get_sshort (const unsigned char *b, ExifByteOrder order); + +/*! Retrieve an #ExifLong value from memory. + * + * \param[in] b pointer to raw EXIF value in memory + * \param[in] order byte order of raw value + * \return value + */ +ExifLong exif_get_long (const unsigned char *b, ExifByteOrder order); + +/*! Retrieve an #ExifSLong value from memory. + * + * \param[in] b pointer to raw EXIF value in memory + * \param[in] order byte order of raw value + * \return value + */ +ExifSLong exif_get_slong (const unsigned char *b, ExifByteOrder order); + +/*! Retrieve an #ExifRational value from memory. + * + * \param[in] b pointer to raw EXIF value in memory + * \param[in] order byte order of raw value + * \return value + */ +ExifRational exif_get_rational (const unsigned char *b, ExifByteOrder order); + +/*! Retrieve an #ExifSRational value from memory. + * + * \param[in] b pointer to raw EXIF value in memory + * \param[in] order byte order of raw value + * \return value + */ +ExifSRational exif_get_srational (const unsigned char *b, ExifByteOrder order); + +/*! Store an ExifShort value into memory in EXIF format. + * + * \param[out] b buffer in which to write raw value + * \param[in] order byte order to use + * \param[in] value data value to store + */ +void exif_set_short (unsigned char *b, ExifByteOrder order, + ExifShort value); + +/*! Store an ExifSShort value into memory in EXIF format. + * + * \param[out] b buffer in which to write raw value + * \param[in] order byte order to use + * \param[in] value data value to store + */ +void exif_set_sshort (unsigned char *b, ExifByteOrder order, + ExifSShort value); + +/*! Store an ExifLong value into memory in EXIF format. + * + * \param[out] b buffer in which to write raw value + * \param[in] order byte order to use + * \param[in] value data value to store + */ +void exif_set_long (unsigned char *b, ExifByteOrder order, + ExifLong value); + +/*! Store an ExifSLong value into memory in EXIF format. + * + * \param[out] b buffer in which to write raw value + * \param[in] order byte order to use + * \param[in] value data value to store + */ +void exif_set_slong (unsigned char *b, ExifByteOrder order, + ExifSLong value); + +/*! Store an ExifRational value into memory in EXIF format. + * + * \param[out] b buffer in which to write raw value + * \param[in] order byte order to use + * \param[in] value data value to store + */ +void exif_set_rational (unsigned char *b, ExifByteOrder order, + ExifRational value); + +/*! Store an ExifSRational value into memory in EXIF format. + * + * \param[out] b buffer in which to write raw value + * \param[in] order byte order to use + * \param[in] value data value to store + */ +void exif_set_srational (unsigned char *b, ExifByteOrder order, + ExifSRational value); + +/*! \internal */ +void exif_convert_utf16_to_utf8 (char *out, const unsigned char *in, int maxlen); + +/* Please do not use this function outside of the library. */ + +/*! \internal */ +void exif_array_set_byte_order (ExifFormat, unsigned char *, unsigned int, + ExifByteOrder o_orig, ExifByteOrder o_new); + +#undef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) + +#undef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) + +/* For compatibility with older versions */ + +/*! \deprecated Use EXIF_TAG_SUB_SEC_TIME instead. */ +#define EXIF_TAG_SUBSEC_TIME EXIF_TAG_SUB_SEC_TIME + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* !defined(LIBEXIF_EXIF_UTILS_H) */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-blob.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-blob.h new file mode 100644 index 0000000..f6e4fa4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-blob.h @@ -0,0 +1,39 @@ +#ifndef GSF_BLOB_H +#define GSF_BLOB_H + +#include + +G_BEGIN_DECLS + +#define GSF_BLOB_TYPE (gsf_blob_get_type ()) +#define GSF_BLOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSF_BLOB_TYPE, GsfBlob)) +#define GSF_BLOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSF_BLOB_TYPE, GsfBlobClass)) +#define GSF_IS_BLOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSF_BLOB_TYPE)) +#define GSF_IS_BLOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSF_BLOB_TYPE)) +#define GSF_BLOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSF_BLOB_TYPE, GsfBlobClass)) + +/* Deprecated old typo */ +#define GSF_TYPE_BLOB (gsf_blob_get_type ()) + +typedef struct _GsfBlobClass GsfBlobClass; +typedef struct _GsfBlobPrivate GsfBlobPrivate; + +struct _GsfBlob { + GObject object; + GsfBlobPrivate *priv; +}; + +GType gsf_blob_get_type (void); +/* void gsf_blob_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfBlob *gsf_blob_new (gsize size, + gconstpointer data_to_copy, + GError **error); + +gsize gsf_blob_get_size (GsfBlob const *blob); + +gconstpointer gsf_blob_peek_data (GsfBlob const *blob); + +G_END_DECLS + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-clip-data.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-clip-data.h new file mode 100644 index 0000000..5a4edca --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-clip-data.h @@ -0,0 +1,72 @@ +#ifndef GSF_CLIP_DATA_H +#define GSF_CLIP_DATA_H + +#include + +G_BEGIN_DECLS + +/** + * GsfClipFormat: + * @GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD: Windows clipboard format + * @GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD: Macintosh clipboard format + * @GSF_CLIP_FORMAT_GUID: GUID that contains a format identifier + * @GSF_CLIP_FORMAT_NO_DATA: No clipboard data + * @GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME: Custom clipboard format + * @GSF_CLIP_FORMAT_UNKNOWN: Unknown clipboard type or invalid data + */ + +typedef enum { + GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD = -1, + GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD = -2, + GSF_CLIP_FORMAT_GUID = -3, + GSF_CLIP_FORMAT_NO_DATA = 0, + GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME = 1, /* in the file it's actually any positive integer */ + GSF_CLIP_FORMAT_UNKNOWN /* this is our own value for unknown types or invalid data */ +} GsfClipFormat; + +typedef enum { + GSF_CLIP_FORMAT_WINDOWS_ERROR = -1, /* our own value */ + GSF_CLIP_FORMAT_WINDOWS_UNKNOWN = -2, /* our own value */ + GSF_CLIP_FORMAT_WINDOWS_METAFILE = 3, /* CF_METAFILEPICT */ + GSF_CLIP_FORMAT_WINDOWS_DIB = 8, /* CF_DIB */ + GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE = 14 /* CF_ENHMETAFILE */ +} GsfClipFormatWindows; + +#define GSF_TYPE_CLIP_DATA (gsf_clip_data_get_type ()) +#define GSF_CLIP_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSF_TYPE_CLIP_DATA, GsfClipData)) +#define GSF_CLIP_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSF_TYPE_CLIP_DATA, GsfClipDataClass)) +#define GSF_IS_CLIP_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSF_TYPE_CLIP_DATA)) +#define GSF_IS_CLIP_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSF_TYPE_CLIP_DATA)) +#define GSF_CLIP_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSF_TYPE_CLIP_DATA, GsfClipDataClass)) + +typedef struct _GsfClipData GsfClipData; +typedef struct _GsfClipDataClass GsfClipDataClass; +typedef struct _GsfClipDataPrivate GsfClipDataPrivate; + +struct _GsfClipData { + GObject object; + + GsfClipDataPrivate *priv; +}; + +GType gsf_clip_data_get_type (void); +/* void gsf_clip_data_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfClipData *gsf_clip_data_new (GsfClipFormat format, + GsfBlob *data_blob); + +GsfClipFormat gsf_clip_data_get_format (GsfClipData *clip_data); + +GsfBlob *gsf_clip_data_get_data_blob (GsfClipData *clip_data); + +GsfClipFormatWindows gsf_clip_data_get_windows_clipboard_format (GsfClipData *clip_data, + GError **error); + +gconstpointer gsf_clip_data_peek_real_data (GsfClipData *clip_data, + gsize *ret_size, + GError **error); + + +G_END_DECLS + +#endif /* GSF_CLIP_DATA_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-doc-meta-data.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-doc-meta-data.h new file mode 100644 index 0000000..60f1592 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-doc-meta-data.h @@ -0,0 +1,66 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-doc-meta-data.h: get, set, remove custom meta properties associated with documents + * + * Copyright (C) 2002-2006 Dom Lachowicz (cinamod@hotmail.com) + * Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_DOC_META_DATA_H +#define GSF_DOC_META_DATA_H + +#include + +G_BEGIN_DECLS + +#define GSF_DOC_META_DATA_TYPE (gsf_doc_meta_data_get_type ()) +#define GSF_DOC_META_DATA(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_DOC_META_DATA_TYPE, GsfDocMetaData)) +#define IS_GSF_DOC_META_DATA(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_DOC_META_DATA_TYPE)) + +GType gsf_doc_meta_data_get_type (void); +/* void gsf_doc_meta_data_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfDocMetaData *gsf_doc_meta_data_new (void); +GsfDocProp *gsf_doc_meta_data_lookup (GsfDocMetaData const *meta, + char const *name); +void gsf_doc_meta_data_insert (GsfDocMetaData *meta, + char *name, GValue *value); +void gsf_doc_meta_data_remove (GsfDocMetaData *meta, + char const *name); +GsfDocProp *gsf_doc_meta_data_steal (GsfDocMetaData *meta, + char const *name); +void gsf_doc_meta_data_store (GsfDocMetaData *meta, + GsfDocProp *prop); +void gsf_doc_meta_data_foreach (GsfDocMetaData const *meta, + GHFunc func, gpointer user_data); +gsize gsf_doc_meta_data_size (GsfDocMetaData const *meta); +void gsf_doc_meta_dump (GsfDocMetaData const *meta); + +GType gsf_doc_prop_get_type (void); +GsfDocProp *gsf_doc_prop_new (char *name); +void gsf_doc_prop_free (GsfDocProp *prop); +char const *gsf_doc_prop_get_name (GsfDocProp const *prop); +GValue const *gsf_doc_prop_get_val (GsfDocProp const *prop); +void gsf_doc_prop_set_val (GsfDocProp *prop, GValue *val); +GValue *gsf_doc_prop_swap_val (GsfDocProp *prop, GValue *val); +char const *gsf_doc_prop_get_link (GsfDocProp const *prop); +void gsf_doc_prop_set_link (GsfDocProp *prop, char *link); +void gsf_doc_prop_dump (GsfDocProp const *prop); + +G_END_DECLS + +#endif /* GSF_DOC_META_DATA_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-docprop-vector.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-docprop-vector.h new file mode 100644 index 0000000..69c1952 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-docprop-vector.h @@ -0,0 +1,51 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-docprop-vectors.h: A type implementing OLE Document Property vectors + * + * Copyright (C) 2004-2006 Frank Chiulli (fc-linux@cox.net) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_DOCPROP_VECTOR_H +#define GSF_DOCPROP_VECTOR_H + +#include + +G_BEGIN_DECLS + +#define GSF_DOCPROP_VECTOR_TYPE (gsf_docprop_vector_get_type ()) +#define GSF_DOCPROP_VECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST((o), GSF_DOCPROP_VECTOR, GsfDocPropVector)) +#define IS_GSF_DOCPROP_VECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), GSF_DOCPROP_VECTOR_TYPE)) + +typedef struct _GsfDocPropVector GsfDocPropVector; +GType gsf_docprop_vector_get_type (void); +/* void gsf_docprop_vector_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfDocPropVector *gsf_docprop_vector_new (void); +void gsf_docprop_vector_append (GsfDocPropVector *vector, GValue *value); +gchar *gsf_docprop_vector_as_string (GsfDocPropVector const *vector); + +#define VAL_IS_GSF_DOCPROP_VECTOR(v) (G_TYPE_CHECK_VALUE_TYPE((v), GSF_DOCPROP_VECTOR_TYPE)) +GsfDocPropVector *gsf_value_get_docprop_vector (GValue const *value); + +G_DEPRECATED_FOR(gsf_value_get_docprop_array) +GValueArray *gsf_value_get_docprop_varray (GValue const *value); + +GArray *gsf_value_get_docprop_array (GValue const *value); + +G_END_DECLS + +#endif /* GSF_DOCPROP_VECTOR_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-fwd.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-fwd.h new file mode 100644 index 0000000..64abbbe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-fwd.h @@ -0,0 +1,115 @@ +/* + * gsf-fwd.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * Copyright (C) 2013 Morten Welinder (terra@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_FWD_H +#define GSF_FWD_H + +#include +#include + +G_BEGIN_DECLS + +/** + * GsfInput: + * + * Class representing an input stream. + */ +typedef struct _GsfInput GsfInput; + +/** + * GsfInfile: + * + * Class representing an input file. + */ +typedef struct _GsfInfile GsfInfile; + +/** + * GsfOutput: + * + * Class representing an output stream, counterpart to #GsfInput. + */ +typedef struct _GsfOutput GsfOutput; + +/** + * GsfOutfile: + * + * Class representing an output file, counterpart to #GsfInfile. + */ +typedef struct _GsfOutfile GsfOutfile; + +/** + * GsfDocProp: + * + * Class representing a properties of a document. + */ +typedef struct _GsfDocProp GsfDocProp; + +/** + * GsfDocMetaData: + * + * Class representing information about a document, such as creator and time of + * last modification. + */ +typedef struct _GsfDocMetaData GsfDocMetaData; + +/** + * GsfTimestamp: + * @date : #GDate in local timezone + * @seconds : #glong number of seconds since @date. + * @time_zone : possibly blank #GString of the timezone + * @timet : as from g_date_time_to_unix. + * + * A point in time. + */ +typedef struct _GsfTimestamp GsfTimestamp; + +/** + * gsf_off_t: + * + * Data type to represent offsets (positions) within a data stream. + * + * FIXME: + * gsf_off_t is really supposed to be the widest type off_t can be configured + * to on the platform + */ +typedef gint64 gsf_off_t; + +/** + * GSF_OFF_T_FORMAT: + * + * The printf(3) conversion specifier to be used for printing values of type + * #gsf_off_t. + */ +#define GSF_OFF_T_FORMAT G_GINT64_FORMAT + +typedef struct _GsfXMLIn GsfXMLIn; +typedef struct _GsfXMLInDoc GsfXMLInDoc; +typedef struct _GsfXMLInNode GsfXMLInNode; +typedef struct _GsfXMLInNS GsfXMLInNS; +typedef struct _GsfXMLBlob GsfXMLBlob; +typedef struct _GsfXMLOut GsfXMLOut; +typedef struct _GsfXMLOutClass GsfXMLOutClass; + +typedef struct _GsfBlob GsfBlob; + +G_END_DECLS + +#endif /* GSF_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-impl-utils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-impl-utils.h new file mode 100644 index 0000000..0e92e0b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-impl-utils.h @@ -0,0 +1,149 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-impl-utils.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_IMPL_UTILS_H +#define GSF_IMPL_UTILS_H + +#include +#include + +G_BEGIN_DECLS + +/* kept for compatibility reasons */ +#define GSF_PARAM_STATIC G_PARAM_STATIC_STRINGS + +/*************************************************************************/ + +#define GSF_CLASS_FULL(name, prefix, base_init, base_finalize, \ + class_init, class_finalize, instance_init, parent_type, \ + abstract, interface_decl) \ +GType \ +prefix ## _get_type (void) \ +{ \ + static GType type = 0; \ + if (G_UNLIKELY (type == 0)) { \ + static GTypeInfo const object_info = { \ + sizeof (name ## Class), \ + (GBaseInitFunc) base_init, \ + (GBaseFinalizeFunc) base_finalize, \ + (GClassInitFunc) class_init, \ + (GClassFinalizeFunc) class_finalize, \ + NULL, /* class_data */ \ + sizeof (name), \ + 0, /* n_preallocs */ \ + (GInstanceInitFunc) instance_init, \ + NULL \ + }; \ + type = g_type_register_static (parent_type, #name, \ + &object_info, (GTypeFlags) abstract); \ + interface_decl \ + } \ + return type; \ +} + +/** + * GSF_CLASS: + * @name: Name of the class. + * @prefix: Symbol prefix designating the namespace to be used for + * implementing the class. + * @class_init: Initialisation function of type #GClassInitFunc for the class. + * @instance_init: Initialisation function of type #GInstanceInitFunc + * for an instance of the class. + * @parent: Parent class to this class. + * + * Set up a GSF class. + * + */ +#define GSF_CLASS(name, prefix, class_init, instance_init, parent) \ + GSF_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \ + instance_init, parent, 0, {}) +#define GSF_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent) \ + GSF_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \ + instance_init, parent, G_TYPE_FLAG_ABSTRACT, {}) + +#define GSF_INTERFACE_FULL(type, init_func, iface_type) { \ + static GInterfaceInfo const iface = { \ + (GInterfaceInitFunc) init_func, NULL, NULL }; \ + g_type_add_interface_static (type, iface_type, &iface); \ +} + +#define GSF_INTERFACE(init_func, iface_type) \ + GSF_INTERFACE_FULL(type, init_func, iface_type) + +/*************************************************************************/ + +#define GSF_DYNAMIC_CLASS_FULL(name, prefix, base_init, base_finalize, \ + class_init, class_finalize, instance_init, parent_type, \ + abstract, interface_decl) \ +static GType prefix ## _type; \ + \ +GType prefix ## _get_type (void); \ +void prefix ## _register_type (GTypeModule *module); \ + \ +GType \ +prefix ## _get_type (void) \ +{ \ + g_return_val_if_fail (prefix ## _type != 0, 0); \ + return prefix ## _type; \ +} \ +void \ +prefix ## _register_type (GTypeModule *module) \ +{ \ + GTypeInfo const type_info = { \ + sizeof (name ## Class), \ + (GBaseInitFunc) base_init, \ + (GBaseFinalizeFunc) base_finalize, \ + (GClassInitFunc) class_init, \ + (GClassFinalizeFunc) class_finalize, \ + NULL, /* class_data */ \ + sizeof (name), \ + 0, /* n_preallocs */ \ + (GInstanceInitFunc) instance_init, \ + NULL \ + }; \ + GType type; \ + \ + g_return_if_fail (prefix ## _type == 0); \ + \ + prefix ## _type = type = g_type_module_register_type (module, \ + parent_type, #name, &type_info, (GTypeFlags) abstract); \ + interface_decl \ +} + +#define GSF_DYNAMIC_CLASS(name, prefix, class_init, instance_init, parent) \ + GSF_DYNAMIC_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \ + instance_init, parent, 0, {}) +#define GSF_DYNAMIC_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent) \ + GSF_DYNAMIC_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \ + instance_init, parent, G_TYPE_FLAG_ABSTRACT, {}) + +#define GSF_DYNAMIC_INTERFACE_FULL(type, init_func, iface_type, module) { \ + GInterfaceInfo const iface = { \ + (GInterfaceInitFunc) init_func, NULL, NULL }; \ + g_type_module_add_interface (module, type, iface_type, &iface); \ +} + +#define GSF_DYNAMIC_INTERFACE(init_func, iface_type, module) \ + GSF_DYNAMIC_INTERFACE_FULL(type, init_func, iface_type, module) + +G_END_DECLS + +#endif /* GSF_IMPL_UTILS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-impl.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-impl.h new file mode 100644 index 0000000..80df3e3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-impl.h @@ -0,0 +1,50 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-infile-impl.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INFILE_IMPL_H +#define GSF_INFILE_IMPL_H + +#include +#include +#include + +G_BEGIN_DECLS + +struct _GsfInfile { + GsfInput parent; +}; + +typedef struct { + GsfInputClass input_class; + int (*num_children) (GsfInfile *infile); + char const *(*name_by_index) (GsfInfile *infile, int i); + GsfInput *(*child_by_index) (GsfInfile *infile, + int i, GError **err); + GsfInput *(*child_by_name) (GsfInfile *infile, + char const *name, GError **err); +} GsfInfileClass; + +#define GSF_INFILE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSF_INFILE_TYPE, GsfInfileClass)) +#define GSF_IS_INFILE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_INFILE_TYPE)) + +G_END_DECLS + +#endif /* GSF_INFILE_IMPL_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-msole.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-msole.h new file mode 100644 index 0000000..f2aaa8f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-msole.h @@ -0,0 +1,45 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-infile-msole.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INFILE_MSOLE_H +#define GSF_INFILE_MSOLE_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GsfInfileMSOle GsfInfileMSOle; + +#define GSF_INFILE_MSOLE_TYPE (gsf_infile_msole_get_type ()) +#define GSF_INFILE_MSOLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_MSOLE_TYPE, GsfInfileMSOle)) +#define GSF_IS_INFILE_MSOLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_MSOLE_TYPE)) + +GType gsf_infile_msole_get_type (void); +/* void gsf_infile_msole_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInfile *gsf_infile_msole_new (GsfInput *source, GError **err); +gboolean gsf_infile_msole_get_class_id (GsfInfileMSOle const *ole, + guint8 *res); + +G_END_DECLS + +#endif /* GSF_INFILE_MSOLE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-msvba.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-msvba.h new file mode 100644 index 0000000..39087e1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-msvba.h @@ -0,0 +1,49 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-infile-msvba.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INFILE_MSVBA_H +#define GSF_INFILE_MSVBA_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GsfInfileMSVBA GsfInfileMSVBA; + +#define GSF_INFILE_MSVBA_TYPE (gsf_infile_msvba_get_type ()) +#define GSF_INFILE_MSVBA(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_MSVBA_TYPE, GsfInfileMSVBA)) +#define GSF_IS_INFILE_MSVBA(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_MSVBA_TYPE)) + +GType gsf_infile_msvba_get_type (void); +/* void gsf_infile_msvba_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInfile *gsf_infile_msvba_new (GsfInfile *source, GError **err); +GHashTable *gsf_infile_msvba_get_modules (GsfInfileMSVBA const *vba_stream); +GHashTable *gsf_infile_msvba_steal_modules (GsfInfileMSVBA *vba_stream); +guint8 *gsf_vba_inflate (GsfInput *input, gsf_off_t offset, int *size, gboolean add_null_terminator); + +/* Utility */ +GsfInfileMSVBA *gsf_input_find_vba (GsfInput *input, GError **err); + +G_END_DECLS + +#endif /* GSF_INFILE_MSVBA_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-stdio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-stdio.h new file mode 100644 index 0000000..2912dba --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-stdio.h @@ -0,0 +1,43 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-infile-stdio.h: + * + * Copyright (C) 2004-2006 Novell, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INFILE_STDIO_H +#define GSF_INFILE_STDIO_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GsfInfileStdio GsfInfileStdio; + +#define GSF_INFILE_STDIO_TYPE (gsf_infile_stdio_get_type ()) +#define GSF_INFILE_STDIO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_STDIO_TYPE, GsfInfileStdio)) +#define GSF_IS_INFILE_STDIO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_STDIO_TYPE)) + +GType gsf_infile_stdio_get_type (void); +/* void gsf_infile_stdio_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInfile *gsf_infile_stdio_new (char const *root, GError **err); + +G_END_DECLS + +#endif /* GSF_INFILE_STDIO_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-tar.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-tar.h new file mode 100644 index 0000000..bc4f4f6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-tar.h @@ -0,0 +1,40 @@ +/* + * gsf-infile-tar.h: + * + * Copyright (C) 2008 Morten Welinder (terra@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INFILE_TAR_H +#define GSF_INFILE_TAR_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GsfInfileTar GsfInfileTar; + +#define GSF_INFILE_TAR_TYPE (gsf_infile_tar_get_type ()) +#define GSF_INFILE_TAR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_TAR_TYPE, GsfInfileTar)) +#define GSF_IS_INFILE_TAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_TAR_TYPE)) + +GType gsf_infile_tar_get_type (void); +GsfInfile *gsf_infile_tar_new (GsfInput *source, GError **err); + +G_END_DECLS + +#endif /* GSF_INFILE_TAR_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-zip.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-zip.h new file mode 100644 index 0000000..b71c4aa --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile-zip.h @@ -0,0 +1,43 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-infile-zip.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INFILE_ZIP_H +#define GSF_INFILE_ZIP_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GsfInfileZip GsfInfileZip; + +#define GSF_INFILE_ZIP_TYPE (gsf_infile_zip_get_type ()) +#define GSF_INFILE_ZIP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_ZIP_TYPE, GsfInfileZip)) +#define GSF_IS_INFILE_ZIP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_ZIP_TYPE)) + +GType gsf_infile_zip_get_type (void); +/* void gsf_infile_zip_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInfile *gsf_infile_zip_new (GsfInput *source, GError **err); + +G_END_DECLS + +#endif /* GSF_INFILE_ZIP_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile.h new file mode 100644 index 0000000..12d84bc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-infile.h @@ -0,0 +1,46 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-infile.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INFILE_H +#define GSF_INFILE_H + +#include + +G_BEGIN_DECLS + +#define GSF_INFILE_TYPE (gsf_infile_get_type ()) +#define GSF_INFILE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_TYPE, GsfInfile)) +#define GSF_IS_INFILE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_TYPE)) + +GType gsf_infile_get_type (void); +/* void gsf_infile_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +int gsf_infile_num_children (GsfInfile *infile); +char const *gsf_infile_name_by_index (GsfInfile *infile, int i); +GsfInput *gsf_infile_child_by_index (GsfInfile *infile, int i); +GsfInput *gsf_infile_child_by_name (GsfInfile *infile, char const *name); +GsfInput *gsf_infile_child_by_vname (GsfInfile *infile, ...); +GsfInput *gsf_infile_child_by_aname (GsfInfile *infile, char const *names[]); +GsfInput *gsf_infile_child_by_vaname (GsfInfile *infile, va_list names); + +G_END_DECLS + +#endif /* GSF_INFILE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-bzip.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-bzip.h new file mode 100644 index 0000000..1bae9d9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-bzip.h @@ -0,0 +1,34 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-bzip.h: wrapper to uncompress to bzipped output + * + * Copyright (C) 2003-2006 Dom Lachowicz (cinamod@hotmail.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_BZIP_H +#define GSF_INPUT_BZIP_H + +#include +#include + +G_BEGIN_DECLS + +GsfInput *gsf_input_memory_new_from_bzip (GsfInput *source, GError **err); + +G_END_DECLS + +#endif /* GSF_INPUT_BZIP_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-gio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-gio.h new file mode 100644 index 0000000..a98d021 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-gio.h @@ -0,0 +1,44 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-gio.h: + * + * Copyright (C) 2007 Dom Lachowicz + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_GIO_H +#define GSF_INPUT_GIO_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_GIO_TYPE (gsf_input_gio_get_type ()) +#define GSF_INPUT_GIO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_GIO_TYPE, GsfInputGio)) +#define GSF_IS_INPUT_GIO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_GIO_TYPE)) + +typedef struct _GsfInputGio GsfInputGio; + +GType gsf_input_gio_get_type (void); +GsfInput *gsf_input_gio_new (GFile *file, GError **err); +GsfInput *gsf_input_gio_new_for_path (char const *path, GError **err); +GsfInput *gsf_input_gio_new_for_uri (char const *uri, GError **err); + +G_END_DECLS + +#endif /* GSF_INPUT_GIO_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-gzip.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-gzip.h new file mode 100644 index 0000000..e9ba3ac --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-gzip.h @@ -0,0 +1,43 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-gzip.h: wrapper to uncompress gzipped input + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_GZIP_H +#define GSF_INPUT_GZIP_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_GZIP_TYPE (gsf_input_gzip_get_type ()) +#define GSF_INPUT_GZIP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_GZIP_TYPE, GsfInputGZip)) +#define GSF_IS_INPUT_GZIP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_GZIP_TYPE)) + +typedef struct _GsfInputGZip GsfInputGZip; + +GType gsf_input_gzip_get_type (void); +/* void gsf_input_gzip_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInput *gsf_input_gzip_new (GsfInput *source, GError **err); + +G_END_DECLS + +#endif /* GSF_INPUT_GZIP_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-http.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-http.h new file mode 100644 index 0000000..0f58308 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-http.h @@ -0,0 +1,45 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-http.h: + * + * Copyright (C) 2006 Michael Lawrence (lawremi@iastate.edu) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef __GSF_INPUT_HTTP_H__ +#define __GSF_INPUT_HTTP_H__ + +#include +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_HTTP_TYPE (gsf_input_http_get_type()) +#define GSF_INPUT_HTTP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GSF_INPUT_HTTP_TYPE, GsfInputHTTP)) +#define GSF_IS_INPUT_HTTP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GSF_INPUT_HTTP_TYPE)) + +typedef struct _GsfInputHTTP GsfInputHTTP; + +GType gsf_input_http_get_type (void); +/* void gsf_input_http_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInput *gsf_input_http_new (gchar const *url, GError **error); +gchar *gsf_input_http_get_url (GsfInputHTTP *input); +gchar *gsf_input_http_get_content_type (GsfInputHTTP *input); + +G_END_DECLS + +#endif /* __GSF_INPUT_HTTP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-impl.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-impl.h new file mode 100644 index 0000000..c8fb6c4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-impl.h @@ -0,0 +1,73 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-impl.h: implementation details of GsfInput + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_IMPL_H +#define GSF_INPUT_IMPL_H + +#include + +#include + +G_BEGIN_DECLS + +struct _GsfInput { + GObject g_object; + + gsf_off_t size, cur_offset; + char *name; + GsfInfile *container; +}; + +typedef struct { + GObjectClass g_object_class; + + GsfInput *(*Dup) (GsfInput *input, GError **err); + const guint8 *(*Read) (GsfInput *input, size_t num_bytes, + guint8 *optional_buffer); + gboolean (*Seek) (GsfInput *input, gsf_off_t offset, + GSeekType whence); + GsfInput *(*OpenSibling) (GsfInput const *input, + char const *name, GError **err); + + /* Padding for future expansion */ + void (*_gsf_reserved0) (void); + void (*_gsf_reserved1) (void); + void (*_gsf_reserved2) (void); + void (*_gsf_reserved3) (void); +} GsfInputClass; + +#define GSF_INPUT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSF_INPUT_TYPE, GsfInputClass)) +#define GSF_IS_INPUT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_INPUT_TYPE)) + +/* protected */ +gboolean gsf_input_set_name (GsfInput *input, char const *name); +gboolean gsf_input_set_name_from_filename (GsfInput *input, char const *filename); +gboolean gsf_input_set_container (GsfInput *input, GsfInfile *container); +gboolean gsf_input_set_size (GsfInput *input, gsf_off_t size); +gboolean gsf_input_set_modtime (GsfInput *input, GDateTime *modtime); +gboolean gsf_input_seek_emulate (GsfInput *input, gsf_off_t pos); + +gboolean gsf_input_set_modtime_from_stat (GsfInput *input, + const struct stat *st); + +G_END_DECLS + +#endif /* GSF_INPUT_IMPL_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-iochannel.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-iochannel.h new file mode 100644 index 0000000..4d2f2ea --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-iochannel.h @@ -0,0 +1,35 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-iochannel.h: interface for use by the structured file layer to read data from IO channels + * + * Copyright (C) 2002-2006 Rodrigo Moya (rodrigo@gnome-db.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_IOCHANNEL_H +#define GSF_INPUT_IOCHANNEL_H + +#include +#include + +G_BEGIN_DECLS + +GsfInput *gsf_input_memory_new_from_iochannel (GIOChannel *channel, + GError **error); + +G_END_DECLS + +#endif /* GSF_INPUT_IOCHANNEL_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-memory.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-memory.h new file mode 100644 index 0000000..be94b1a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-memory.h @@ -0,0 +1,46 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-memory.h: interface for used by the ole layer to read raw data + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_MEMORY_H +#define GSF_INPUT_MEMORY_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_MEMORY_TYPE (gsf_input_memory_get_type ()) +#define GSF_INPUT_MEMORY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_MEMORY_TYPE, GsfInputMemory)) +#define GSF_IS_INPUT_MEMORY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_MEMORY_TYPE)) + +typedef struct _GsfInputMemory GsfInputMemory; + +GType gsf_input_memory_get_type (void); +/* void gsf_input_memory_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInput *gsf_input_memory_new (guint8 const *buf, gsf_off_t length, + gboolean needs_free); +GsfInput *gsf_input_memory_new_clone (guint8 const *buf, gsf_off_t length); +GsfInput *gsf_input_mmap_new (char const *filename, GError **err); + +G_END_DECLS + +#endif /* GSF_INPUT_MEMORY_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-proxy.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-proxy.h new file mode 100644 index 0000000..9c27467 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-proxy.h @@ -0,0 +1,46 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-proxy.h: proxy object (with its own current position) + * + * Copyright (C) 2004-2006 Morten Welinder (terra@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_PROXY_H +#define GSF_INPUT_PROXY_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_PROXY_TYPE (gsf_input_proxy_get_type ()) +#define GSF_INPUT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_PROXY_TYPE, GsfInputProxy)) +#define GSF_IS_INPUT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_PROXY_TYPE)) + +typedef struct _GsfInputProxy GsfInputProxy; + +GType gsf_input_proxy_get_type (void); +/* void gsf_input_proxy_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInput *gsf_input_proxy_new (GsfInput *source); +GsfInput *gsf_input_proxy_new_section (GsfInput *source, + gsf_off_t offset, + gsf_off_t size); + +G_END_DECLS + +#endif /* GSF_INPUT_PROXY_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-stdio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-stdio.h new file mode 100644 index 0000000..b3c75f9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-stdio.h @@ -0,0 +1,48 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-stdio.h: interface for use by the structured file layer to read raw data + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_STDIO_H +#define GSF_INPUT_STDIO_H + +#include +#include + +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_STDIO_TYPE (gsf_input_stdio_get_type ()) +#define GSF_INPUT_STDIO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_STDIO_TYPE, GsfInputStdio)) +#define GSF_IS_INPUT_STDIO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_STDIO_TYPE)) + +typedef struct _GsfInputStdio GsfInputStdio; + +GType gsf_input_stdio_get_type (void); +/* void gsf_input_stdio_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfInput *gsf_input_stdio_new (char const *filename, GError **err); + +GsfInput *gsf_input_stdio_new_FILE (char const *filename, FILE *file, + gboolean keep_open); + +G_END_DECLS + +#endif /* GSF_INPUT_STDIO_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-textline.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-textline.h new file mode 100644 index 0000000..2d30fb4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input-textline.h @@ -0,0 +1,46 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input-textline.h: a utility wrapper to pull in text, line by line. + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_TEXTLINE_H +#define GSF_INPUT_TEXTLINE_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_TEXTLINE_TYPE (gsf_input_textline_get_type ()) +#define GSF_INPUT_TEXTLINE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_TEXTLINE_TYPE, GsfInputTextline)) +#define GSF_IS_INPUT_TEXTLINE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_TEXTLINE_TYPE)) + +typedef struct _GsfInputTextline GsfInputTextline; + +GType gsf_input_textline_get_type (void); +/* void gsf_input_textline_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + + +GsfInput *gsf_input_textline_new (GsfInput *source); +unsigned char *gsf_input_textline_ascii_gets (GsfInputTextline *textline); +guint8 *gsf_input_textline_utf8_gets (GsfInputTextline *textline); + +G_END_DECLS + +#endif /* GSF_INPUT_TEXTLINE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input.h new file mode 100644 index 0000000..a0ef79b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-input.h @@ -0,0 +1,69 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-input.h: abstract interface for reading data + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_INPUT_H +#define GSF_INPUT_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_INPUT_TYPE (gsf_input_get_type ()) +#define GSF_INPUT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_TYPE, GsfInput)) +#define GSF_IS_INPUT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_TYPE)) + +GType gsf_input_get_type (void); +/* void gsf_input_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +char const *gsf_input_name (GsfInput *input); +GsfInfile *gsf_input_container (GsfInput *input); + +GsfInput *gsf_input_dup (GsfInput *input, GError **err); +GsfInput *gsf_input_sibling (GsfInput const *input, char const *name, GError **err); +gsf_off_t gsf_input_size (GsfInput *input); +gboolean gsf_input_eof (GsfInput *input); +guint8 const *gsf_input_read (GsfInput *input, size_t num_bytes, + guint8 *optional_buffer); +/* For bindings _only_! */ +guint8 * gsf_input_read0 (GsfInput *input, size_t num_bytes, + size_t *bytes_read); + +gsf_off_t gsf_input_remaining (GsfInput *input); +gsf_off_t gsf_input_tell (GsfInput *input); +gboolean gsf_input_seek (GsfInput *input, + gsf_off_t offset, GSeekType whence); + +GDateTime * gsf_input_get_modtime (GsfInput *input); + +/* Utilities */ +gboolean gsf_input_copy (GsfInput *input, GsfOutput *output); +GsfInput *gsf_input_uncompress (GsfInput *src); + +GQuark gsf_input_error_id (void); +#ifndef GSF_DISABLE_DEPRECATED +/* deprecated in 1.12.0, use gsf_input_error_id */ +GQuark gsf_input_error (void); +#endif /* GSF_DISABLE_DEPRECATED */ + +G_END_DECLS + +#endif /* GSF_INPUT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-libxml.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-libxml.h new file mode 100644 index 0000000..139883e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-libxml.h @@ -0,0 +1,225 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-libxml.h: Utility wrappers for using gsf with libxml + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_LIBXML_H +#define GSF_LIBXML_H + +#include +#include + +G_BEGIN_DECLS + +/****************************************************************************/ +/* GSF wrappers for libxml2 */ +xmlParserCtxt *gsf_xml_parser_context (GsfInput *input); +#if 0 + /* this is cleaner, tack it on for 2.0 */ + xmlSAXHandlerPtr sax, gpointer user); +#endif +int gsf_xmlDocFormatDump (GsfOutput *output, + xmlDoc *cur, + char const *encoding, + gboolean format); + +typedef gboolean (*GsfXMLProbeFunc) (const xmlChar *name, + const xmlChar *prefix, + const xmlChar *URI, + int nb_namespaces, + const xmlChar **namespaces, + int nb_attributes, + int nb_defaulted, + const xmlChar **attributes); +gboolean gsf_xml_probe (GsfInput *input, + GsfXMLProbeFunc func); + +/****************************************************************************/ +/* Simplified wrapper to SAX based xml import */ + +/** + * GsfXMLContent: + * @GSF_XML_NO_CONTENT: node has no cstr contents + * @GSF_XML_CONTENT: node has cstr contents + * @GSF_XML_SHARED_CONTENT: node has contents that is shared with children + * @GSF_XML_2ND: node is second or later occurrence + * + * Controls the handling of character data within a parser node. + */ + +typedef enum { + GSF_XML_NO_CONTENT = FALSE, + GSF_XML_CONTENT, + GSF_XML_SHARED_CONTENT, + GSF_XML_2ND /* Second definition */ +} GsfXMLContent; +typedef gboolean (*GsfXMLInUnknownFunc) (GsfXMLIn *xin, + xmlChar const *elem, xmlChar const **attrs); +typedef void (*GsfXMLInExtDtor) (GsfXMLIn *xin, gpointer old_state); + +struct _GsfXMLIn { + /* public state : read only */ + gpointer user_state; + GString *content; + GsfXMLInDoc const *doc; + GsfXMLInNode const *node; /* current node (not on the stack) */ + /*< private >*/ + GSList *node_stack; /* stack of GsfXMLInNode */ +}; + +struct _GsfXMLInNode { + char const *id; /* unique in the entire tree */ + int ns_id; + char const *name; + char const *parent_id; + void (*start) (GsfXMLIn *xin, xmlChar const **attrs); + void (*end) (GsfXMLIn *xin, GsfXMLBlob *unknown); + + union { + int v_int; + gboolean v_bool; + gpointer v_blob; + char const *v_str; + } user_data; + GsfXMLContent has_content; + + unsigned int check_children_for_ns : 1; + unsigned int share_children_with_parent : 1; +}; + +struct _GsfXMLInNS { + char const *uri; + unsigned ns_id; +}; + +#define GSF_XML_IN_NS(id, uri) \ +{ uri, id } +#define GSF_XML_IN_NS_END \ +{ NULL, 0 } + +#define GSF_XML_IN_NODE_FULL(parent_id, id, ns, name, has_content, \ + share_children_with_parent, check_ns, start, end, user) \ +{ \ + #id, ns, name, #parent_id, start, end, { user }, has_content, \ + check_ns, share_children_with_parent, \ +} + +#define GSF_XML_IN_NODE(parent_id, id, ns, name, has_content, start, end) \ + GSF_XML_IN_NODE_FULL(parent_id, id, ns, name, has_content, \ + FALSE, FALSE, start, end, 0) +#define GSF_XML_IN_NODE_END \ + { NULL, 0, NULL, NULL, NULL, NULL, { 0 }, GSF_XML_NO_CONTENT, FALSE, FALSE } + +GType gsf_xml_in_doc_get_type (void); +GsfXMLInDoc *gsf_xml_in_doc_new (GsfXMLInNode const *nodes, GsfXMLInNS const *ns); +void gsf_xml_in_doc_free (GsfXMLInDoc *doc); +gboolean gsf_xml_in_doc_parse (GsfXMLInDoc *doc, GsfInput *input, + gpointer user_state); +void gsf_xml_in_doc_add_nodes (GsfXMLInDoc *doc, + GsfXMLInNode const *nodes); +void gsf_xml_in_doc_set_unknown_handler (GsfXMLInDoc *doc, + GsfXMLInUnknownFunc handler); + +void gsf_xml_in_push_state (GsfXMLIn *xin, GsfXMLInDoc const *doc, + gpointer new_state, GsfXMLInExtDtor dtor, + xmlChar const **attrs); + +GsfInput *gsf_xml_in_get_input (GsfXMLIn const *xin); +char const *gsf_xml_in_check_ns (GsfXMLIn const *xin, char const *str, + unsigned int ns_id); +gboolean gsf_xml_in_namecmp (GsfXMLIn const *xin, char const *str, + unsigned int ns_id, char const *name); +void gsf_xml_in_set_silent_unknowns (GsfXMLIn *xin, gboolean silent); + +GType gsf_xml_in_ns_get_type (void); + +/****************************************************************************/ +/* Simplified GSF based xml export (does not use libxml) */ + +struct _GsfXMLOutClass { + GObjectClass base; + + /*< private >*/ + /* Padding for future expansion */ + void (*_gsf_reserved1) (void); + void (*_gsf_reserved2) (void); + void (*_gsf_reserved3) (void); + void (*_gsf_reserved4) (void); +}; + +struct _GsfXMLOut { + GObject base; + GsfOutput *output; + + /*< private >*/ + struct _GsfXMLOutPrivate *priv; +}; + +#define GSF_XML_OUT_TYPE (gsf_xml_out_get_type ()) +#define GSF_XML_OUT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_XML_OUT_TYPE, GsfXMLOut)) +#define GSF_IS_XML_OUT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_XML_OUT_TYPE)) + +GType gsf_xml_out_get_type (void); +/* void gsf_xml_out_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfXMLOut *gsf_xml_out_new (GsfOutput *output); + +void gsf_xml_out_set_doc_type (GsfXMLOut *xout, char const *type); +void gsf_xml_out_start_element (GsfXMLOut *xout, char const *id); +char const *gsf_xml_out_end_element (GsfXMLOut *xout); + +gboolean gsf_xml_out_get_pretty_print (GsfXMLOut *xout); +gboolean gsf_xml_out_set_pretty_print (GsfXMLOut *xout, gboolean pp); + +void gsf_xml_out_simple_element (GsfXMLOut *xout, char const *id, + char const *content); +void gsf_xml_out_simple_int_element (GsfXMLOut *xout, char const *id, + int val); +void gsf_xml_out_simple_float_element (GsfXMLOut *xout, char const *id, + double val, int precision); + +void gsf_xml_out_add_cstr_unchecked (GsfXMLOut *xout, char const *id, + char const *val_utf8); +void gsf_xml_out_add_cstr (GsfXMLOut *xout, char const *id, + char const *val_utf8); +void gsf_xml_out_add_bool (GsfXMLOut *xout, char const *id, + gboolean val); +void gsf_xml_out_add_int (GsfXMLOut *xout, char const *id, + int val); +void gsf_xml_out_add_uint (GsfXMLOut *xout, char const *id, + unsigned int val); +void gsf_xml_out_add_float (GsfXMLOut *xout, char const *id, + double val, int precision); +void gsf_xml_out_add_color (GsfXMLOut *xout, char const *id, + unsigned int r, unsigned int g, unsigned int b); +void gsf_xml_out_add_base64 (GsfXMLOut *xout, char const *id, + guint8 const *data, unsigned int len); +void gsf_xml_out_add_enum (GsfXMLOut *xout, char const *id, + GType etype, gint val); +void gsf_xml_out_add_gvalue (GsfXMLOut *xout, char const *id, + GValue const *val); + +/****************************************************************************/ +/* Some general utilities */ +gboolean gsf_xml_gvalue_from_str (GValue *res, GType t, char const *str); +GsfOutput *gsf_xml_out_get_output (GsfXMLOut const *xout); + +G_END_DECLS + +#endif /* GSF_LIBXML_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-meta-names.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-meta-names.h new file mode 100644 index 0000000..fa716d6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-meta-names.h @@ -0,0 +1,482 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-meta-names.h: a list of gsf-meta-names to "generically" represent + * all diversly available implementation-specific + * meta-names. + * + * Author: Veerapuram Varadhan (vvaradhan@novell.com) + * Jody Goldberg (jody@gnome.org) + * + * Copyright (C) 2004-2006 Novell, Inc + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +#ifndef GSF_META_NAMES_H +#define GSF_META_NAMES_H + +/* The namespace follow this classification: + * "dc:" - Dublin Core tags + * "gsf:" - Gnumeric only tags + * "meta:" - OpenDocument tags shared with Gnumeric + * "msole:" - OLE tags + */ + +/****** Namespace - dc: ******/ + +/** + * GSF_META_NAME_CREATOR: + * + * (String) An entity primarily responsible for making the content of the + * resource typically a person, organization, or service. + * + * 1.14.0 Moved from "gsf" to "dc". + */ +#define GSF_META_NAME_CREATOR "dc:creator" + +/** + * GSF_META_NAME_DATE_MODIFIED: + * + * (GsfTimestamp) The last time this document was saved. + * + * 1.14.0 Moved from dc:date-modified to dc:date. + */ +#define GSF_META_NAME_DATE_MODIFIED "dc:date" + +/** + * GSF_META_NAME_DESCRIPTION: + * + * (String) An account of the content of the resource. + */ +#define GSF_META_NAME_DESCRIPTION "dc:description" + +/** + * GSF_META_NAME_KEYWORDS: + * + * (GsfDocPropVector of String) Searchable, indexable keywords. Similar to PDF + * keywords or HTML's meta block. + */ +#define GSF_META_NAME_KEYWORDS "dc:keywords" + +/** + * GSF_META_NAME_LANGUAGE: + * + * (String) The locale language of the intellectual content of the resource + * (basically xx_YY form for us). + * 1.14.0 Clarified that this is unique from _NAME_CODEPAGE in msole + */ +#define GSF_META_NAME_LANGUAGE "dc:language" + +/** + * GSF_META_NAME_CODEPAGE: + * + * (UnsignedShort) The MS codepage to encode strings for metadata + * 1.14.0 Clarified that this is unique from _NAME_CODEPAGE in msole + */ +#define GSF_META_NAME_CODEPAGE "msole:codepage" + +/** + * GSF_META_NAME_SUBJECT: + * + * (String) The topic of the content of the resource, + * typically including keywords. + */ +#define GSF_META_NAME_SUBJECT "dc:subject" + +/** + * GSF_META_NAME_TITLE: + * + * (String) A formal name given to the resource. + */ +#define GSF_META_NAME_TITLE "dc:title" + + +/****** Namespace - gsf: ******/ + +/** + * GSF_META_NAME_BYTE_COUNT: + * + * (Integer) Count of bytes in the document. + */ +#define GSF_META_NAME_BYTE_COUNT "gsf:byte-count" + +/** + * GSF_META_NAME_CASE_SENSITIVE: + * + * (Unsigned Integer) Identifier representing the case-sensitiveness. + * of what ?? why is it an integer ?? + */ +#define GSF_META_NAME_CASE_SENSITIVE "gsf:case-sensitivity" + +/** + * GSF_META_NAME_CATEGORY: + * + * (String) Category of the document. example??? + */ +#define GSF_META_NAME_CATEGORY "gsf:category" + +/** + * GSF_META_NAME_CELL_COUNT: + * + * (Integer) Count of cells in the spread-sheet document, if appropriate. + */ +#define GSF_META_NAME_CELL_COUNT "gsf:cell-count" + +/** + * GSF_META_NAME_CHARACTER_COUNT: + * + * (Integer) Count of characters in the document. + * + * TODO See how to sync this with ODF's document-statistic + */ +#define GSF_META_NAME_CHARACTER_COUNT "gsf:character-count" + +/** + * GSF_META_NAME_DICTIONARY: + * + * (None) Reserved name (PID) for Dictionary + */ +#define GSF_META_NAME_DICTIONARY "gsf:dictionary" + +/** + * GSF_META_NAME_DOCUMENT_PARTS: + * + * (Vector of strings) Names of the 'interesting' parts of the document. In + * spreadsheets this is a list of the sheet names, and the named expressions. + * From MSOLE + */ +#define GSF_META_NAME_DOCUMENT_PARTS "gsf:document-parts" + +/** + * GSF_META_NAME_HEADING_PAIRS: + * + * (Vector of string value pairs stored in alternating elements) Store the + * counts of objects in the document as names 'worksheet' and count '4' + * From MSOLE + */ +#define GSF_META_NAME_HEADING_PAIRS "gsf:heading-pairs" + +/** + * GSF_META_NAME_HIDDEN_SLIDE_COUNT: + * + * (Integer) Count of hidden-slides in the presentation document. + */ +#define GSF_META_NAME_HIDDEN_SLIDE_COUNT "gsf:hidden-slide-count" + +/** + * GSF_META_NAME_IMAGE_COUNT: + * + * (Integer) Count of images in the document, if appropriate. + */ +#define GSF_META_NAME_IMAGE_COUNT "gsf:image-count" + +/** + * GSF_META_NAME_LAST_SAVED_BY: + * + * (String) The entity that made the last change to the document, typically a + * person, organization, or service. + */ +#define GSF_META_NAME_LAST_SAVED_BY "gsf:last-saved-by" + +/** + * GSF_META_NAME_LINKS_DIRTY: + * + * (Boolean) ??????? + */ +#define GSF_META_NAME_LINKS_DIRTY "gsf:links-dirty" + +/** + * GSF_META_NAME_LOCALE_SYSTEM_DEFAULT: + * + * (Unsigned Integer) Identifier representing the default system locale. + */ +#define GSF_META_NAME_LOCALE_SYSTEM_DEFAULT "gsf:default-locale" + +/** + * GSF_META_NAME_MANAGER: + * + * (String) Name of the manager of "CREATOR" entity. + */ +#define GSF_META_NAME_MANAGER "gsf:manager" + +/** + * GSF_META_NAME_PRESENTATION_FORMAT: + * + * (String) Type of presentation, like "On-screen Show", "SlideView" etc. + */ +#define GSF_META_NAME_PRESENTATION_FORMAT "gsf:presentation-format" + +/** + * GSF_META_NAME_SCALE: + * + * (Boolean) ????? + */ +#define GSF_META_NAME_SCALE "gsf:scale" + +/** + * GSF_META_NAME_SECURITY: + * + * (Integer) Level of security. + * + * + * + * + * LevelValue + * + * + * None0 + * Password protected1 + * Read-only recommended2 + * Read-only enforced3 + * Locked for annotations4 + * + */ +#define GSF_META_NAME_SECURITY "gsf:security" + +/** + * GSF_META_NAME_THUMBNAIL: + * + * (GsfClipData) Thumbnail data of the document, typically a + * preview image of the document. + */ +#define GSF_META_NAME_THUMBNAIL "gsf:thumbnail" + +/** + * GSF_META_NAME_LINE_COUNT: + * + * (Integer) Count of liness in the document. + */ +#define GSF_META_NAME_LINE_COUNT "gsf:line-count" + +/** + * GSF_META_NAME_MM_CLIP_COUNT: + * + * (Integer) Count of "multi-media" clips in the document. + */ +#define GSF_META_NAME_MM_CLIP_COUNT "gsf:MM-clip-count" + +/** + * GSF_META_NAME_NOTE_COUNT: + * + * (Integer) Count of "notes" in the document. + */ +#define GSF_META_NAME_NOTE_COUNT "gsf:note-count" + +/** + * GSF_META_NAME_OBJECT_COUNT: + * + * (Integer) Count of objects (OLE and other graphics) in the document, if + * appropriate. + */ +#define GSF_META_NAME_OBJECT_COUNT "gsf:object-count" + +/** + * GSF_META_NAME_PAGE_COUNT: + * + * (Integer) Count of pages in the document, if appropriate. + */ +#define GSF_META_NAME_PAGE_COUNT "gsf:page-count" + +/** + * GSF_META_NAME_PARAGRAPH_COUNT: + * + * (Integer) Count of paragraphs in the document, if appropriate. + */ +#define GSF_META_NAME_PARAGRAPH_COUNT "gsf:paragraph-count" + +/** + * GSF_META_NAME_SLIDE_COUNT: + * + * (Integer) Count of slides in the presentation document. + */ +#define GSF_META_NAME_SLIDE_COUNT "gsf:slide-count" + +/** + * GSF_META_NAME_SPREADSHEET_COUNT: + * + * (Integer) Count of pages in the document, if appropriate. + */ +#define GSF_META_NAME_SPREADSHEET_COUNT "gsf:spreadsheet-count" + +/** + * GSF_META_NAME_TABLE_COUNT: + * + * (Integer) Count of tables in the document, if appropriate. + */ +#define GSF_META_NAME_TABLE_COUNT "gsf:table-count" + +/** + * GSF_META_NAME_WORD_COUNT: + * + * (Integer) Count of words in the document. + */ +#define GSF_META_NAME_WORD_COUNT "gsf:word-count" + + +/****** Namespace - msole: ******/ + +/** + * GSF_META_NAME_MSOLE_UNKNOWN_17: + * + * (Unknown) User-defined name + */ +#define GSF_META_NAME_MSOLE_UNKNOWN_17 "msole:unknown-doc-17" + +/** + * GSF_META_NAME_MSOLE_UNKNOWN_18: + * + * (Unknown) User-defined name + */ +#define GSF_META_NAME_MSOLE_UNKNOWN_18 "msole:unknown-doc-18" + +/** + * GSF_META_NAME_MSOLE_UNKNOWN_19: + * + * (Boolean) User-defined name + */ +#define GSF_META_NAME_MSOLE_UNKNOWN_19 "msole:unknown-doc-19" + +/** + * GSF_META_NAME_MSOLE_UNKNOWN_20: + * + * (Unknown) User-defined name + */ +#define GSF_META_NAME_MSOLE_UNKNOWN_20 "msole:unknown-doc-20" + +/** + * GSF_META_NAME_MSOLE_UNKNOWN_21: + * + * (Unknown) User-defined name + */ +#define GSF_META_NAME_MSOLE_UNKNOWN_21 "msole:unknown-doc-21" + +/** + * GSF_META_NAME_MSOLE_UNKNOWN_22: + * + * (Boolean) User-defined name + */ +#define GSF_META_NAME_MSOLE_UNKNOWN_22 "msole:unknown-doc-22" + +/** + * GSF_META_NAME_MSOLE_UNKNOWN_23: + * + * (i4) User-defined name + */ +#define GSF_META_NAME_MSOLE_UNKNOWN_23 "msole:unknown-doc-23" + + +/****** Namespace - meta: ******/ + +/** + * GSF_META_NAME_DATE_CREATED: + * + * (Date as ISO String) A date associated with an event in the life cycle of + * the resource (creation/publication date). + * Moved from gsf:date-created to meta:creation-date. This way can be used correctly + * by OpenDocument and Gnumeric. + */ +#define GSF_META_NAME_DATE_CREATED "meta:creation-date" + +/** + * GSF_META_NAME_EDITING_DURATION: + * + * (Date as ISO String) The total-time taken until the last modification. + * Moved from "gsf" to "meta". This way can be used correctly by OpenDocument + * and Gnumeric. + */ +#define GSF_META_NAME_EDITING_DURATION "meta:editing-duration" + +/** + * GSF_META_NAME_GENERATOR: + * + * (String) The application that generated this document. AbiWord, Gnumeric, + * etc... + * + * 1.14.0 Moved from "gsf" to "meta". + */ +#define GSF_META_NAME_GENERATOR "meta:generator" + +/** + * GSF_META_NAME_KEYWORD: + * + * (String) Searchable, indexable keywords. Similar to PDF keywords or HTML's + * meta block. + */ +#define GSF_META_NAME_KEYWORD "meta:keyword" + +/** + * GSF_META_NAME_INITIAL_CREATOR: + * + * (String) Specifies the name of the person who created the document + * initially. + * 1.14.0 Moved from "gsf" to "meta". + */ +#define GSF_META_NAME_INITIAL_CREATOR "meta:initial-creator" + +/** + * GSF_META_NAME_COMPANY: + * + * (String) Name of the company/organization that the "CREATOR" entity is + * associated with. + * + * 1.14.1 Moved from "gsf:company" to "dc:publisher". + */ +#define GSF_META_NAME_COMPANY "dc:publisher" + +/** + * GSF_META_NAME_PRINT_DATE: + * + * (GsfTimestamp) Specifies the date and time when the document was last + * printed. + */ +#define GSF_META_NAME_PRINT_DATE "meta:print-date" + +/** + * GSF_META_NAME_LAST_PRINTED: + * + * (GSF_META_NAME_HEADING_PAIRS) The last time this document was printed. + * + * 1.14.0 Moved from "gsf" to "dc". + * 1.14.1 Moved back to "gsf" from "dc". + */ +#define GSF_META_NAME_LAST_PRINTED "gsf:last-printed" + +/** + * GSF_META_NAME_PRINTED_BY: + * + * (String) Specifies the name of the last person who printed the document. + * + * 1.14.0 Moved from "gsf" to "meta". + */ +#define GSF_META_NAME_PRINTED_BY "meta:printed-by" + +/** + * GSF_META_NAME_REVISION_COUNT: + * + * (Integer) Count of revision on the document, if appropriate. + * Moved from gsf:revision-count to meta:editing-cycles. This way can be used + * correctly by OpenDocument and Gnumeric. + */ +#define GSF_META_NAME_REVISION_COUNT "meta:editing-cycles" + +/** + * GSF_META_NAME_TEMPLATE: + * + * (String) The template file that is been used to generate this document. + * + * 1.14.0 Moved from "gsf" to "meta" + */ +#define GSF_META_NAME_TEMPLATE "meta:template" + +#endif /* GSF_META_NAMES_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-msole-utils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-msole-utils.h new file mode 100644 index 0000000..4ad266f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-msole-utils.h @@ -0,0 +1,70 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-msole-utils.h: various tools for handling MS OLE files + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_MSOLE_UTILS_H +#define GSF_MSOLE_UTILS_H + +#include + +G_BEGIN_DECLS + +GError *gsf_doc_meta_data_read_from_msole (GsfDocMetaData *accum, + GsfInput *in); +gboolean gsf_doc_meta_data_write_to_msole (GsfDocMetaData const *meta_data, + GsfOutput *out, + gboolean doc_not_component); + +#ifndef GSF_DISABLE_DEPRECATED +G_DEPRECATED_FOR (gsf_doc_meta_data_read_from_msole) +GError *gsf_msole_metadata_read (GsfInput *in, + GsfDocMetaData *accum); +G_DEPRECATED_FOR (gsf_doc_meta_data_write_to_msole) +gboolean gsf_msole_metadata_write (GsfOutput *out, + GsfDocMetaData const *meta_data, + gboolean doc_not_component); +#endif + +guint gsf_msole_lid_for_language (char const *lang); +guint gsf_msole_codepage_to_lid (int codepage); +int gsf_msole_lid_to_codepage (guint lid); +gchar *gsf_msole_lid_to_codepage_str (guint lid); +char const *gsf_msole_language_for_lid (guint lid); + +int gsf_msole_iconv_win_codepage (void) ; +GIConv gsf_msole_iconv_open_for_import (int codepage) ; +GIConv gsf_msole_iconv_open_for_export (void) ; + +GIConv gsf_msole_iconv_open_codepage_for_import (char const *to, int codepage); +GIConv gsf_msole_iconv_open_codepages_for_export (int codepage_to, char const *from); +GIConv gsf_msole_iconv_open_codepage_for_export (int codepage_to); + +GByteArray *gsf_msole_inflate (GsfInput *input, gsf_off_t offset); + +typedef struct GsfMSOleSortingKey_ GsfMSOleSortingKey; +GType gsf_msole_sorting_key_get_type (void); +GsfMSOleSortingKey *gsf_msole_sorting_key_new (const char *name); +void gsf_msole_sorting_key_free (GsfMSOleSortingKey *sk); +int gsf_msole_sorting_key_cmp (const GsfMSOleSortingKey *a, + const GsfMSOleSortingKey *b); + +G_END_DECLS + +#endif /* GSF_MSOLE_UTILS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-open-pkg-utils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-open-pkg-utils.h new file mode 100644 index 0000000..6ce0111 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-open-pkg-utils.h @@ -0,0 +1,95 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-open-pkg-utils.h: Utilities for handling Open Package zip files + * from MS Office 2007 or XPS. + * + * Copyright (C) 2006-2008 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OPEN_PKG_UTILS_H +#define GSF_OPEN_PKG_UTILS_H + +#include + +G_BEGIN_DECLS + +typedef struct _GsfOpenPkgRel GsfOpenPkgRel; +typedef struct _GsfOpenPkgRels GsfOpenPkgRels; +typedef void (*GsfOpenPkgIter)(GsfInput *opkg, + GsfOpenPkgRel const *rel, + gpointer user_data); + +gboolean gsf_open_pkg_rel_is_extern (GsfOpenPkgRel const *rel); +char const *gsf_open_pkg_rel_get_target (GsfOpenPkgRel const *rel); +char const *gsf_open_pkg_rel_get_type (GsfOpenPkgRel const *rel); + +GsfOpenPkgRel *gsf_open_pkg_lookup_rel_by_type (GsfInput *opkg, char const *type); +GsfOpenPkgRel *gsf_open_pkg_lookup_rel_by_id (GsfInput *opkg, char const *id); +void gsf_open_pkg_foreach_rel (GsfInput *opkg, + GsfOpenPkgIter func, + gpointer user_data); +GsfInput *gsf_open_pkg_open_rel (GsfInput *opkg, GsfOpenPkgRel const *rel, + GError **err); + +GsfInput *gsf_open_pkg_open_rel_by_type (GsfInput *opkg, char const *type, + GError **err); +GsfInput *gsf_open_pkg_open_rel_by_id (GsfInput *opkg, char const *id, + GError **err); +GError *gsf_open_pkg_parse_rel_by_id (GsfXMLIn *xin, char const *id, + GsfXMLInNode const *dtd, + GsfXMLInNS const *ns); + +/* DEPRECATED in 1.14.6 */ +#ifndef GSF_DISABLE_DEPRECATED +G_DEPRECATED_FOR (gsf_open_pkg_open_rel_by_id) +GsfInput *gsf_open_pkg_get_rel_by_type (GsfInput *opkg, char const *type); +G_DEPRECATED_FOR (gsf_open_pkg_open_rel_by_id) +GsfInput *gsf_open_pkg_get_rel_by_id (GsfInput *opkg, char const *id); +#endif + +typedef struct _GsfOutfileOpenPkg GsfOutfileOpenPkg; + +#define GSF_OUTFILE_OPEN_PKG_TYPE (gsf_outfile_open_pkg_get_type ()) +#define GSF_OUTFILE_OPEN_PKG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_OPEN_PKG_TYPE, GsfOutfileOpenPkg)) +#define GSF_IS_OUTFILE_OPEN_PKG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_OPEN_PKG_TYPE)) + +GType gsf_outfile_open_pkg_get_type (void); +/* void gsf_outfile_open_pkg_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutfile *gsf_outfile_open_pkg_new (GsfOutfile *sink); +void gsf_outfile_open_pkg_set_sink (GsfOutfileOpenPkg *open_pkg, + GsfOutput *sink); +void gsf_outfile_open_pkg_set_content_type (GsfOutfileOpenPkg *open_pkg, + char const *content_type); + +char const *gsf_outfile_open_pkg_relate (GsfOutfileOpenPkg *child, + GsfOutfileOpenPkg *parent, + char const *type); +GsfOutput *gsf_outfile_open_pkg_add_rel (GsfOutfile *dir, + char const *name, + char const *content_type, + GsfOutfile *parent, + char const *type); +char const *gsf_outfile_open_pkg_add_extern_rel (GsfOutfileOpenPkg *parent, + char const *target, + char const *content_type); + +gint gsf_open_pkg_error_id (void); + +G_END_DECLS + +#endif /* GSF_OPEN_PKG_UTILS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-opendoc-utils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-opendoc-utils.h new file mode 100644 index 0000000..d4c2aec --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-opendoc-utils.h @@ -0,0 +1,162 @@ +/* + * gsf-opendoc-utils.h: Handle the application neutral portions of OpenDocument + * + * Author: Luciano Wolf (luciano.wolf@indt.org.br) + * + * Copyright (C) 2005-2006 INdT - Instituto Nokia de Tecnologia + * http://www.indt.org.br + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OPENDOC_UTILS_H +#define GSF_OPENDOC_UTILS_H + +#include +#include + +G_BEGIN_DECLS + +/****************************************************************************/ + +typedef struct { + GsfXMLOutClass base; + + /*< private >*/ + /* Padding for future expansion */ + void (*_gsf_reserved1) (void); + void (*_gsf_reserved2) (void); + void (*_gsf_reserved3) (void); + void (*_gsf_reserved4) (void); +} GsfODFOutClass; + +typedef struct _GsfODFOut GsfODFOut; +struct _GsfODFOut { + GsfXMLOut base; + /*< private >*/ + struct _GsfODFOutPrivate *priv; +}; + +#define GSF_ODF_OUT_TYPE (gsf_odf_out_get_type ()) +#define GSF_ODF_OUT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_ODF_OUT_TYPE, GsfODFOut)) +#define GSF_IS_ODF_OUT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_ODF_OUT_TYPE)) + +GType gsf_odf_out_get_type (void); + +int gsf_odf_out_get_version (GsfODFOut *oout); +char *gsf_odf_out_get_version_string (GsfODFOut *oout); + +/****************************************************************************/ + +enum { + OO_NS_OFFICE, + OO_NS_STYLE, + OO_NS_TEXT, + OO_NS_TABLE, + OO_NS_DRAW, + OO_NS_NUMBER, + OO_NS_CHART, + OO_NS_DR3D, + OO_NS_FORM, + OO_NS_SCRIPT, + OO_NS_CONFIG, + OO_NS_MATH, + OO_NS_FO, + OO_NS_DC, + OO_NS_META, + OO_NS_XLINK, + OO_NS_SVG, + + /* new in 2.0 */ + OO_NS_OOO, + OO_NS_OOOW, + OO_NS_OOOC, + OO_NS_DOM, + OO_NS_XFORMS, + OO_NS_XSD, + OO_NS_XSI, + + OO_NS_PRESENT, /* added in gsf-1.14.8 */ + + /* new in 3.0 */ + OO_NS_RPT, + OO_NS_OF, + OO_NS_RDFA, + OO_NS_FIELD, + OO_NS_FORMX, + + /* Other OpenDocument 1.1 */ + OO_NS_ANIM, + OO_NS_DATASTYLE, + OO_NS_MANIFEST, + OO_NS_SMIL, + + /* Symphony 1.3 */ + OO_LOTUS_NS_PRODTOOLS, + + /* KOffice 1.6.3 */ + OO_KDE_NS_KOFFICE, + + /*CleverAge ODF Add-in for Microsoft Office 3.0.5224.0 (11.0.8302)*/ + OO_CLEVERAGE_NS_DC, + + /* Microsoft Excel Formulas */ + OO_MS_NS_MSOXL, + + /* Gnumeric ODF extensions */ + OO_GNUM_NS_EXT, + + /* New in ODF 3.2 */ + OO_NS_GRDDL, + OO_NS_XHTML, + OO_NS_TABLE_OOO, + + /* New in ODF 3.3 */ + OO_NS_CHART_OOO, + + /* New in LOCALC */ + OO_NS_LOCALC_EXT, + OO_NS_LOCALC_EXT2 +}; + +GsfXMLInNS const *gsf_odf_get_ns (void); +char const *gsf_odf_get_version_string (void); +short gsf_odf_get_version (void); + +GError *gsf_doc_meta_data_read_from_odf (GsfDocMetaData *md, GsfInput *input); +void gsf_doc_meta_data_odf_subtree (GsfDocMetaData *md, GsfXMLIn *doc); +gboolean gsf_doc_meta_data_write_to_odf (GsfDocMetaData const *md, gpointer output); + + +/* For 1.15.x s/opendoc/odf/ and s/ooo/odf/ */ +#ifndef GSF_DISABLE_DEPRECATED +extern GsfXMLInNS gsf_ooo_ns[]; /* use get_gsf_ooo_ns instead */ +G_DEPRECATED_FOR (gsf_odf_get_ns) +GsfXMLInNS *get_gsf_ooo_ns (void); +G_DEPRECATED_FOR (gsf_odf_get_version_string) +char const *get_gsf_odf_version_string (void); +G_DEPRECATED_FOR (gsf_odf_get_version) +short get_gsf_odf_version (void); +G_DEPRECATED_FOR (gsf_doc_meta_data_read_from_odf) +GError *gsf_opendoc_metadata_read (GsfInput *input, GsfDocMetaData *md); +G_DEPRECATED_FOR (gsf_doc_meta_data_odf_subtree) +void gsf_opendoc_metadata_subtree (GsfXMLIn *doc, GsfDocMetaData *md); +G_DEPRECATED_FOR (gsf_doc_meta_data_write_to_odf) +gboolean gsf_opendoc_metadata_write (gpointer output, GsfDocMetaData const *md); +#endif + +G_END_DECLS + +#endif /* GSF_OPENDOC_UTILS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-impl.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-impl.h new file mode 100644 index 0000000..8a857e2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-impl.h @@ -0,0 +1,46 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-outfile-impl.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTFILE_IMPL_H +#define GSF_OUTFILE_IMPL_H + +#include + +G_BEGIN_DECLS + +struct _GsfOutfile { + GsfOutput parent; +}; + +typedef struct { + GsfOutputClass output_class; + GsfOutput *(*new_child) (GsfOutfile *outfile, + char const *name, gboolean is_dir, + char const *first_property_name, + va_list args); +} GsfOutfileClass; + +#define GSF_OUTFILE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSF_OUTFILE_TYPE, GsfOutfileClass)) +#define GSF_IS_OUTFILE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_OUTFILE_TYPE)) + +G_END_DECLS + +#endif /* GSF_OUTFILE_IMPL_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-msole.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-msole.h new file mode 100644 index 0000000..d60e497 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-msole.h @@ -0,0 +1,47 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-outfile-msole.h: interface for creating OLE files + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTFILE_MSOLE_H +#define GSF_OUTFILE_MSOLE_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GsfOutfileMSOle GsfOutfileMSOle; + +#define GSF_OUTFILE_MSOLE_TYPE (gsf_outfile_msole_get_type ()) +#define GSF_OUTFILE_MSOLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_MSOLE_TYPE, GsfOutfileMSOle)) +#define GSF_IS_OUTFILE_MSOLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_MSOLE_TYPE)) + +GType gsf_outfile_msole_get_type (void); +/* void gsf_outfile_msole_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutfile *gsf_outfile_msole_new (GsfOutput *sink); +GsfOutfile *gsf_outfile_msole_new_full (GsfOutput *sink, + guint bb_size, guint sb_size); +gboolean gsf_outfile_msole_set_class_id (GsfOutfileMSOle *ole, + guint8 const *clsid); + +G_END_DECLS + +#endif /* GSF_OUTFILE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-stdio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-stdio.h new file mode 100644 index 0000000..5c87d33 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-stdio.h @@ -0,0 +1,49 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-outfile-stdio.h: write a directory tree + * + * Copyright (C) 2004-2006 Novell, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTFILE_STDIO_H +#define GSF_OUTFILE_STDIO_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GsfOutfileStdio GsfOutfileStdio; + +#define GSF_OUTFILE_STDIO_TYPE (gsf_outfile_stdio_get_type ()) +#define GSF_OUTFILE_STDIO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_STDIO_TYPE, GsfOutfileStdio)) +#define GSF_IS_OUTFILE_STDIO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_STDIO_TYPE)) + +GType gsf_outfile_stdio_get_type (void); +/* void gsf_outfile_stdio_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutfile *gsf_outfile_stdio_new (char const *root, GError **err); +GsfOutfile *gsf_outfile_stdio_new_full (char const *root, GError **err, + char const *first_property_name, + ...); /* G_GNUC_NULL_TERMINATED */ +GsfOutfile *gsf_outfile_stdio_new_valist (char const *root, GError **err, + char const *first_property_name, + va_list var_args); + +G_END_DECLS + +#endif /* GSF_OUTFILE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-zip.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-zip.h new file mode 100644 index 0000000..eac9117 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile-zip.h @@ -0,0 +1,61 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-outfile-zip.h: interface for zip archive output. + * + * Copyright (C) 2002-2006 Jon K Hellan (hellan@acm.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTFILE_ZIP_H +#define GSF_OUTFILE_ZIP_H + +#include +#include + +G_BEGIN_DECLS + +typedef enum { + GSF_ZIP_STORED = 0, /* supported for export */ + GSF_ZIP_SHRUNK = 1, + GSF_ZIP_REDUCEDx1 = 2, + GSF_ZIP_REDUCEDx2 = 3, + GSF_ZIP_REDUCEDx3 = 4, + GSF_ZIP_REDUCEDx4 = 5, + GSF_ZIP_IMPLODED = 6, + GSF_ZIP_TOKENIZED = 7, + GSF_ZIP_DEFLATED = 8, /* supported for export */ + GSF_ZIP_DEFLATED_BETTER = 9, + GSF_ZIP_IMPLODED_BETTER = 10 +} GsfZipCompressionMethod; + +typedef struct _GsfOutfileZip GsfOutfileZip; + +#define GSF_OUTFILE_ZIP_TYPE (gsf_outfile_zip_get_type ()) +#define GSF_OUTFILE_ZIP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_ZIP_TYPE, GsfOutfileZip)) +#define GSF_IS_OUTFILE_ZIP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_ZIP_TYPE)) + +GType gsf_outfile_zip_get_type (void); +/* void gsf_outfile_zip_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutfile *gsf_outfile_zip_new (GsfOutput *sink, GError **err); + +/* Deprecated. Has no effect. */ +gboolean gsf_outfile_zip_set_compression_method (GsfOutfileZip *zip, + GsfZipCompressionMethod method); + +G_END_DECLS + +#endif /* GSF_OUTFILE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile.h new file mode 100644 index 0000000..8ecf098 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-outfile.h @@ -0,0 +1,49 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-outfile.h: interface for creating structured files + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTFILE_H +#define GSF_OUTFILE_H + +#include + +G_BEGIN_DECLS + +#define GSF_OUTFILE_TYPE (gsf_outfile_get_type ()) +#define GSF_OUTFILE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_TYPE, GsfOutfile)) +#define GSF_IS_OUTFILE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_TYPE)) + +GType gsf_outfile_get_type (void); +/* void gsf_outfile_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutput *gsf_outfile_new_child (GsfOutfile *outfile, + char const *name, gboolean is_dir); +GsfOutput *gsf_outfile_new_child_full (GsfOutfile *outfile, + char const *name, gboolean is_dir, + char const *first_property_name, + ...); +GsfOutput *gsf_outfile_new_child_varg (GsfOutfile *outfile, + char const *name, gboolean is_dir, + char const *first_property_name, + va_list args); + +G_END_DECLS + +#endif /* GSF_OUTFILE_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-bzip.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-bzip.h new file mode 100644 index 0000000..e650cee --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-bzip.h @@ -0,0 +1,43 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-bzip.h: wrapper to compress to bzipped output + * + * Copyright (C) 2003-2006 Dom Lachowicz (cinamod@hotmail.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_BZIP_H +#define GSF_OUTPUT_BZIP_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_OUTPUT_BZIP_TYPE (gsf_output_bzip_get_type ()) +#define GSF_OUTPUT_BZIP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_BZIP_TYPE, GsfOutputBzip)) +#define GSF_IS_OUTPUT_BZIP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_BZIP_TYPE)) + +typedef struct _GsfOutputBzip GsfOutputBzip; + +GType gsf_output_bzip_get_type (void); +/* void gsf_output_bzip_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutput *gsf_output_bzip_new (GsfOutput *sink, GError **err); + +G_END_DECLS + +#endif /* GSF_OUTPUT_BZIP_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-csv.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-csv.h new file mode 100644 index 0000000..27d2f30 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-csv.h @@ -0,0 +1,84 @@ +/* + * gsf-output-csv.h: a GsfOutput to write .csv style files. + * + * Copyright (C) 2005-2006 Morten Welinder (terra@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_CSV_H +#define GSF_OUTPUT_CSV_H + +#include +#include + +G_BEGIN_DECLS + +/** + * GsfOutputCsvQuotingMode: + * @GSF_OUTPUT_CSV_QUOTING_MODE_NEVER: never add quotes around fields + * @GSF_OUTPUT_CSV_QUOTING_MODE_AUTO: add quotes around fields when needed + * @GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS: always add quotes around fields + * + * Controls when to add quotes around fields. + */ +typedef enum { + GSF_OUTPUT_CSV_QUOTING_MODE_NEVER, + GSF_OUTPUT_CSV_QUOTING_MODE_AUTO, + GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS +} GsfOutputCsvQuotingMode; + +GType gsf_output_csv_quoting_mode_get_type (void); +/* void gsf_output_csv_quoting_mode_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +#define GSF_OUTPUT_CSV_QUOTING_MODE_TYPE (gsf_output_csv_quoting_mode_get_type ()) + +typedef struct { + GsfOutput output; + + GsfOutput *sink; + + char *quote; + size_t quote_len; + GsfOutputCsvQuotingMode quoting_mode; + char *quoting_triggers; + + char *eol; + size_t eol_len; + char *separator; + size_t separator_len; + gboolean fields_on_line; + + GString *buf; +} GsfOutputCsv; + +#define GSF_OUTPUT_CSV_TYPE (gsf_output_csv_get_type ()) +#define GSF_OUTPUT_CSV(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_CSV_TYPE, GsfOutputCsv)) +#define GSF_IS_OUTPUT_CSV(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_CSV_TYPE)) +GType gsf_output_csv_get_type (void); +/* void gsf_output_csv_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +gboolean gsf_output_csv_write_field (GsfOutputCsv *csv, + char const *field, + size_t len); +gboolean gsf_output_csv_write_eol (GsfOutputCsv *csv); + +typedef struct { + GsfOutputClass output_class; +} GsfOutputCsvClass; + +G_END_DECLS + +#endif /* GSF_OUTPUT_CSV_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-gio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-gio.h new file mode 100644 index 0000000..569bd91 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-gio.h @@ -0,0 +1,44 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-gio.h: + * + * Copyright (C) 2007 Dom Lachowicz + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_GIO_H +#define GSF_OUTPUT_GIO_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define GSF_OUTPUT_GIO_TYPE (gsf_output_gio_get_type ()) +#define GSF_OUTPUT_GIO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_GIO_TYPE, GsfOutputGio)) +#define GSF_IS_OUTPUT_GIO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_GIO_TYPE)) + +typedef struct _GsfOutputGio GsfOutputGio; + +GType gsf_output_gio_get_type (void); +GsfOutput *gsf_output_gio_new (GFile *file); +GsfOutput *gsf_output_gio_new_for_path (char const *path, GError **err); +GsfOutput *gsf_output_gio_new_for_uri (char const *uri, GError **err); + +G_END_DECLS + +#endif /* GSF_OUTPUT_GIO_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-gzip.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-gzip.h new file mode 100644 index 0000000..a7eb72d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-gzip.h @@ -0,0 +1,43 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-gzip.h: wrapper to compress to gzipped output + * + * Copyright (C) 2002-2006 Jon K Hellan (hellan@acm.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_GZIP_H +#define GSF_OUTPUT_GZIP_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_OUTPUT_GZIP_TYPE (gsf_output_gzip_get_type ()) +#define GSF_OUTPUT_GZIP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_GZIP_TYPE, GsfOutputGZip)) +#define GSF_IS_OUTPUT_GZIP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_GZIP_TYPE)) + +typedef struct _GsfOutputGZip GsfOutputGZip; + +GType gsf_output_gzip_get_type (void); +/* void gsf_output_gzip_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutput *gsf_output_gzip_new (GsfOutput *sink, GError **err); + +G_END_DECLS + +#endif /* GSF_OUTPUT_GZIP_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-iconv.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-iconv.h new file mode 100644 index 0000000..21f8773 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-iconv.h @@ -0,0 +1,47 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-iconv.h: wrapper to convert character sets. + * + * Copyright (C) 2005-2006 Morten Welinder (terra@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_ICONV_H +#define GSF_OUTPUT_ICONV_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct { + GsfOutputClass output_class; +} GsfOutputIconvClass; + +#define GSF_OUTPUT_ICONV_TYPE (gsf_output_iconv_get_type ()) +#define GSF_OUTPUT_ICONV(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_ICONV_TYPE, GsfOutputIconv)) +#define GSF_IS_OUTPUT_ICONV(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_ICONV_TYPE)) + +typedef struct _GsfOutputIconv GsfOutputIconv; + +GType gsf_output_iconv_get_type (void); +/* void gsf_output_iconv_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutput *gsf_output_iconv_new (GsfOutput *sink, char const *dst, char const *src); + +G_END_DECLS + +#endif /* GSF_OUTPUT_ICONV_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-impl.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-impl.h new file mode 100644 index 0000000..c3ba763 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-impl.h @@ -0,0 +1,37 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-impl.h: interface for storing data + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_IMPL_H +#define GSF_OUTPUT_IMPL_H + +#include + +G_BEGIN_DECLS + +/* protected */ +gboolean gsf_output_set_name (GsfOutput *output, char const *name); +gboolean gsf_output_set_name_from_filename (GsfOutput *output, char const *filename); +gboolean gsf_output_set_container (GsfOutput *output, GsfOutfile *container); +gboolean gsf_output_set_modtime (GsfOutput *output, GDateTime *modtime); + +G_END_DECLS + +#endif /* GSF_OUTPUT_IMPL_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-iochannel.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-iochannel.h new file mode 100644 index 0000000..2538fe2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-iochannel.h @@ -0,0 +1,43 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-iochannel.h + * + * Copyright (C) 2002-2006 Dom Lachowicz (cinamod@hotmail.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_IOCHANNEL_H +#define GSF_OUTPUT_IOCHANNEL_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_OUTPUT_IOCHANNEL_TYPE (gsf_output_iochannel_get_type ()) +#define GSF_OUTPUT_IOCHANNEL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_IOCHANNEL_TYPE, GsfOutputIOChannel)) +#define GSF_IS_OUTPUT_IOCHANNEL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_IOCHANNEL_TYPE)) + +typedef struct _GsfOutputIOChannel GsfOutputIOChannel; + +GType gsf_output_iochannel_get_type (void); +/* void gsf_output_iochannel_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutput *gsf_output_iochannel_new (GIOChannel * channel); + +G_END_DECLS + +#endif /* GSF_OUTPUT_IOCHANNEL_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-memory.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-memory.h new file mode 100644 index 0000000..1054fa3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-memory.h @@ -0,0 +1,45 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-memory.h + * + * Copyright (C) 2002-2006 Dom Lachowicz (cinamod@hotmail.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_MEMORY_H +#define GSF_OUTPUT_MEMORY_H + +#include +#include + +G_BEGIN_DECLS + +#define GSF_OUTPUT_MEMORY_TYPE (gsf_output_memory_get_type ()) +#define GSF_OUTPUT_MEMORY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_MEMORY_TYPE, GsfOutputMemory)) +#define GSF_IS_OUTPUT_MEMORY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_MEMORY_TYPE)) + +typedef struct _GsfOutputMemory GsfOutputMemory; + +GType gsf_output_memory_get_type (void); +/* void gsf_output_memory_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutput *gsf_output_memory_new (void); +const guint8* gsf_output_memory_get_bytes (GsfOutputMemory * mem); +guint8* gsf_output_memory_steal_bytes (GsfOutputMemory * mem); + +G_END_DECLS + +#endif /* GSF_OUTPUT_MEMORY_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-stdio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-stdio.h new file mode 100644 index 0000000..36b2d90 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output-stdio.h @@ -0,0 +1,52 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output-stdio.h: stdio based output + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_STDIO_H +#define GSF_OUTPUT_STDIO_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define GSF_OUTPUT_STDIO_TYPE (gsf_output_stdio_get_type ()) +#define GSF_OUTPUT_STDIO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_STDIO_TYPE, GsfOutputStdio)) +#define GSF_IS_OUTPUT_STDIO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_STDIO_TYPE)) + +typedef struct _GsfOutputStdio GsfOutputStdio; + +GType gsf_output_stdio_get_type (void); +/* void gsf_output_stdio_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfOutput *gsf_output_stdio_new (char const *filename, GError **err); +GsfOutput *gsf_output_stdio_new_full (char const *filename, GError **err, + char const *first_property_name, + ...); /* G_GNUC_NULL_TERMINATED */ +GsfOutput *gsf_output_stdio_new_valist (char const *filename, GError **err, + char const *first_property_name, + va_list var_args); +GsfOutput *gsf_output_stdio_new_FILE (char const *filename, FILE *file, + gboolean keep_open); + +G_END_DECLS + +#endif /* GSF_OUTPUT_STDIO_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output.h new file mode 100644 index 0000000..f47bcc0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-output.h @@ -0,0 +1,99 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-output.h: interface for storing data + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_OUTPUT_H +#define GSF_OUTPUT_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct { + GObjectClass g_object_class; + + gboolean (*Close) (GsfOutput *output); + gboolean (*Seek) (GsfOutput *output, + gsf_off_t offset, GSeekType whence); + gboolean (*Write) (GsfOutput *output, + size_t num_bytes, guint8 const *data); + gsf_off_t (*Vprintf) (GsfOutput *output, + char const *format, va_list args) + G_GNUC_PRINTF (2, 0); +} GsfOutputClass; +#define GSF_OUTPUT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSF_OUTPUT_TYPE, GsfOutputClass)) +#define GSF_IS_OUTPUT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_OUTPUT_TYPE)) + +struct _GsfOutput { + GObject g_object; + + /*< protected >*/ + gsf_off_t cur_size, cur_offset; + char *name; + GObject *wrapped_by; + GsfOutfile *container; + GError *err; + gboolean is_closed; + + char *printf_buf; + int printf_buf_size; +}; +#define GSF_OUTPUT_TYPE (gsf_output_get_type ()) +#define GSF_OUTPUT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_TYPE, GsfOutput)) +#define GSF_IS_OUTPUT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_TYPE)) + +GType gsf_output_get_type (void); +/* void gsf_output_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +char const *gsf_output_name (GsfOutput const *output); +GsfOutfile *gsf_output_container (GsfOutput const *output); + +GError const *gsf_output_error (GsfOutput const *output); +gboolean gsf_output_set_error (GsfOutput *output, + gint code, + char const *format, + ...) G_GNUC_PRINTF (3, 4); + +gsf_off_t gsf_output_size (GsfOutput *output); +gboolean gsf_output_close (GsfOutput *output); +gboolean gsf_output_is_closed (GsfOutput const *output); +gsf_off_t gsf_output_tell (GsfOutput *output); +gboolean gsf_output_seek (GsfOutput *output, + gsf_off_t offset, GSeekType whence); +gboolean gsf_output_write (GsfOutput *output, + size_t num_bytes, guint8 const *data); + +gboolean gsf_output_wrap (GObject *wrapper, GsfOutput *wrapee); +gboolean gsf_output_unwrap (GObject *wrapper, GsfOutput *wrapee); + +GDateTime * gsf_output_get_modtime (GsfOutput *output); + +GQuark gsf_output_error_id (void); + +gboolean gsf_output_printf (GsfOutput *output, char const *format, + ...) G_GNUC_PRINTF (2, 3); +gsf_off_t gsf_output_vprintf (GsfOutput *output, char const *format, + va_list args) G_GNUC_PRINTF (2, 0); +gboolean gsf_output_puts (GsfOutput *output, char const *line); + +G_END_DECLS + +#endif /* GSF_OUTPUT_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-shared-memory.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-shared-memory.h new file mode 100644 index 0000000..15c06ae --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-shared-memory.h @@ -0,0 +1,51 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-shared-memory.h + * + * Copyright (C) 2002-2006 Morten Welinder (terra@diku.dk) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_SHARED_MEMORY_H +#define GSF_SHARED_MEMORY_H + +#include + +G_BEGIN_DECLS + +#define GSF_SHARED_MEMORY_TYPE (gsf_shared_memory_get_type ()) +#define GSF_SHARED_MEMORY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_SHARED_MEMORY_TYPE, GsfSharedMemory)) +#define GSF_IS_SHARED_MEMORY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_SHARED_MEMORY_TYPE)) + +typedef struct _GsfSharedMemory GsfSharedMemory; +struct _GsfSharedMemory { + GObject g_object; + void *buf; + gsf_off_t size; + + gboolean needs_free; + gboolean needs_unmap; +}; + +GType gsf_shared_memory_get_type (void); +/* void gsf_shared_memory_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfSharedMemory *gsf_shared_memory_new (void *buf, gsf_off_t size, gboolean needs_free); +GsfSharedMemory *gsf_shared_memory_mmapped_new (void *buf, gsf_off_t size); + +G_END_DECLS + +#endif /* GSF_SHARED_MEMORY_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-structured-blob.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-structured-blob.h new file mode 100644 index 0000000..aef5237 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-structured-blob.h @@ -0,0 +1,45 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-structured-blob.h: Utility storage to blob in/out a tree of data + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_STRUCTURED_BLOB_H +#define GSF_STRUCTURED_BLOB_H + +#include + +G_BEGIN_DECLS + +#define GSF_STRUCTURED_BLOB_TYPE (gsf_structured_blob_get_type ()) +#define GSF_STRUCTURED_BLOB(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_STRUCTURED_BLOB_TYPE, GsfStructuredBlob)) +#define GSF_IS_STRUCTURED_BLOB(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_STRUCTURED_BLOB_TYPE)) + +typedef struct _GsfStructuredBlob GsfStructuredBlob; + +/* inherits from GsfInfile */ +GType gsf_structured_blob_get_type (void); +/* void gsf_structured_blob_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfStructuredBlob *gsf_structured_blob_read (GsfInput *input); +gboolean gsf_structured_blob_write (GsfStructuredBlob *blob, + GsfOutfile *container); + +G_END_DECLS + +#endif /* GSF_STRUCTURED_BLOB_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-timestamp.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-timestamp.h new file mode 100644 index 0000000..915dc1e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-timestamp.h @@ -0,0 +1,70 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-timestamp.h: A useful little type for metadata, contains a superset of + * all the features it would be nice to have. + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_TIMESTAMP_H +#define GSF_TIMESTAMP_H + +#include + +G_BEGIN_DECLS + +#define GSF_TIMESTAMP_TYPE (gsf_timestamp_get_type ()) +#define VAL_IS_GSF_TIMESTAMP(v) (G_TYPE_CHECK_VALUE_TYPE((v), GSF_TIMESTAMP_TYPE)) + +struct _GsfTimestamp { + GDate date; /* In local timezone */ + glong seconds; /* time of day */ + GString time_zone; /* possibly blank */ + + guint32 timet; +}; + +GType gsf_timestamp_get_type (void); +/* void gsf_timestamp_register_type (GTypeModule *module); glib dynamic types are not thread safe */ + +GsfTimestamp *gsf_timestamp_new (void); + +GsfTimestamp *gsf_timestamp_copy (GsfTimestamp const *stamp); +void gsf_timestamp_free (GsfTimestamp *stamp); +int gsf_timestamp_load_from_string (GsfTimestamp *stamp, char const *spec); +char *gsf_timestamp_as_string (GsfTimestamp const *stamp); +guint gsf_timestamp_hash (GsfTimestamp const *stamp); +gboolean gsf_timestamp_equal (GsfTimestamp const *a, + GsfTimestamp const *b); + +void gsf_timestamp_set_time (GsfTimestamp *stamp, guint64 t); + +void gsf_timestamp_to_value (GsfTimestamp const *stamp, GValue *value); + +/* Deprecated */ +#ifndef GSF_DISABLE_DEPRECATED +G_DEPRECATED_FOR(gsf_timestamp_to_value) +void gsf_value_set_timestamp (GValue *value, GsfTimestamp const *stamp); +G_DEPRECATED_FOR(gsf_timestamp_load_from_string) +int gsf_timestamp_from_string (char const *spec, GsfTimestamp *stamp); +G_DEPRECATED_FOR(gsf_timestamp_load_from_string) +int gsf_timestamp_parse (char const *spec, GsfTimestamp *stamp); +#endif + +G_END_DECLS + +#endif /* GSF_TIMESTAMP_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-utils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-utils.h new file mode 100644 index 0000000..ab4d0c2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf-utils.h @@ -0,0 +1,346 @@ +/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * gsf-utils.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef GSF_UTILS_H +#define GSF_UTILS_H + +#include + +G_BEGIN_DECLS + +/* Do this the ugly way so that we don't have to worry about alignment */ + +/** + * GSF_LE_GET_GUINT8: + * @p: pointer to storage + * + * Interpret binary data as an unsigned 8-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GUINT8(p) (*(guint8 const *)(p)) + +/** + * GSF_LE_GET_GUINT16: + * @p: pointer to storage + * + * Interpret binary data as an unsigned 16-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GUINT16(p) \ + (guint16)((((guint8 const *)(p))[0] << 0) | \ + (((guint8 const *)(p))[1] << 8)) + +/** + * GSF_LE_GET_GUINT32: + * @p: pointer to storage + * + * Interpret binary data as an unsigned 32-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GUINT32(p) \ + (guint32)(((guint32)((guint8 const *)(p))[0] << 0) | \ + ((guint32)((guint8 const *)(p))[1] << 8) | \ + ((guint32)((guint8 const *)(p))[2] << 16) | \ + ((guint32)((guint8 const *)(p))[3] << 24)) + +/** + * GSF_LE_GET_GUINT64: + * @p: pointer to storage + * + * Interpret binary data as an unsigned 64-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GUINT64(p) (gsf_le_get_guint64 (p)) + +/** + * GSF_LE_GET_GINT8: + * @p: pointer to storage + * + * Interpret binary data as a signed 8-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GINT8(p) ((gint8)GSF_LE_GET_GUINT8(p)) + +/** + * GSF_LE_GET_GINT16: + * @p: pointer to storage + * + * Interpret binary data as a signed 16-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GINT16(p) ((gint16)GSF_LE_GET_GUINT16(p)) + +/** + * GSF_LE_GET_GINT32: + * @p: pointer to storage + * + * Interpret binary data as a signed 32-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GINT32(p) ((gint32)GSF_LE_GET_GUINT32(p)) + +/** + * GSF_LE_GET_GINT64: + * @p: pointer to storage + * + * Interpret binary data as a signed 64-bit integer in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_GINT64(p) ((gint64)GSF_LE_GET_GUINT64(p)) + +/** + * GSF_LE_GET_FLOAT: + * @p: pointer to storage + * + * Interpret binary data as a float in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_FLOAT(p) (gsf_le_get_float (p)) + +/** + * GSF_LE_GET_DOUBLE: + * @p: pointer to storage + * + * Interpret binary data as a double in little endian order. + * + * Returns: interpreted data + */ +#define GSF_LE_GET_DOUBLE(p) (gsf_le_get_double (p)) + +guint64 gsf_le_get_guint64 (void const *p); +float gsf_le_get_float (void const *p); +double gsf_le_get_double (void const *p); + +/** + * GSF_LE_SET_GUINT8: + * @p: pointer to storage + * @dat: 8-bit unsigned integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GUINT8(p, dat) \ + (*((guint8 *)(p)) = ((dat) & 0xff)) + +/** + * GSF_LE_SET_GUINT16: + * @p: pointer to storage + * @dat: 16-bit unsigned integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GUINT16(p, dat) \ + ((*((guint8 *)(p) + 0) = (guint8)((guint16)(dat)) & 0xff), \ + (*((guint8 *)(p) + 1) = (guint8)((guint16)(dat) >> 8) & 0xff)) + +/** + * GSF_LE_SET_GUINT32: + * @p: pointer to storage + * @dat: 32-bit unsigned integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GUINT32(p, dat) \ + ((*((guint8 *)(p) + 0) = (guint8)((guint32)(dat)) & 0xff), \ + (*((guint8 *)(p) + 1) = (guint8)((guint32)(dat) >> 8) & 0xff), \ + (*((guint8 *)(p) + 2) = (guint8)((guint32)(dat) >> 16) & 0xff), \ + (*((guint8 *)(p) + 3) = (guint8)((guint32)(dat) >> 24) & 0xff)) + +/** + * GSF_LE_SET_GUINT64: + * @p: pointer to storage + * @dat: 64-bit unsigned integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GUINT64(p, dat) \ + ((*((guint8 *)(p) + 0) = (guint8)((guint64)(dat)) & 0xff), \ + (*((guint8 *)(p) + 1) = (guint8)((guint64)(dat) >> 8) & 0xff), \ + (*((guint8 *)(p) + 2) = (guint8)((guint64)(dat) >> 16) & 0xff), \ + (*((guint8 *)(p) + 3) = (guint8)((guint64)(dat) >> 24) & 0xff), \ + (*((guint8 *)(p) + 4) = (guint8)((guint64)(dat) >> 32) & 0xff), \ + (*((guint8 *)(p) + 5) = (guint8)((guint64)(dat) >> 40) & 0xff), \ + (*((guint8 *)(p) + 6) = (guint8)((guint64)(dat) >> 48) & 0xff), \ + (*((guint8 *)(p) + 7) = (guint8)((guint64)(dat) >> 56) & 0xff)) + +/** + * GSF_LE_SET_GINT8: + * @p: pointer to storage + * @dat: 8-bit signed integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GINT8(p,dat) GSF_LE_SET_GUINT8((p),(dat)) + +/** + * GSF_LE_SET_GINT16: + * @p: pointer to storage + * @dat: 16-bit signed integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GINT16(p,dat) GSF_LE_SET_GUINT16((p),(dat)) + +/** + * GSF_LE_SET_GINT32: + * @p: pointer to storage + * @dat: 32-bit signed integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GINT32(p,dat) GSF_LE_SET_GUINT32((p),(dat)) + +/** + * GSF_LE_SET_GINT64: + * @p: pointer to storage + * @dat: 64-bit signed integer + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_GINT64(p,dat) GSF_LE_SET_GUINT64((p),(dat)) + +/** + * GSF_LE_SET_FLOAT: + * @p: pointer to storage + * @dat: float to be stored + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_FLOAT(p,dat) gsf_le_set_float((p),(dat)) + +/** + * GSF_LE_SET_DOUBLE: + * @p: pointer to storage + * @dat: double to be stored + * + * Store @dat in little endian order in memory pointed to by @p. + */ +#define GSF_LE_SET_DOUBLE(p,dat) gsf_le_set_double((p),(dat)) + +void gsf_le_set_float (void *p, float f); +void gsf_le_set_double (void *p, double d); + +void gsf_init (void); +void gsf_shutdown (void); +void gsf_init_dynamic (GTypeModule *module); +void gsf_shutdown_dynamic (GTypeModule *module); +gboolean gsf_debug_flag (const char *flag); + +/* Debugging utilities */ +void gsf_mem_dump (guint8 const *ptr, size_t len); +void gsf_input_dump (GsfInput *input, gboolean dump_as_hex); + +/* base64 encoding utilities */ +guint8 *gsf_base64_encode_simple (guint8 const *data, size_t len); +size_t gsf_base64_encode_close (guint8 const *in, size_t inlen, + gboolean break_lines, guint8 *out, + int *state, guint *save); +size_t gsf_base64_encode_step (guint8 const *in, size_t len, + gboolean break_lines, guint8 *out, + int *state, guint *save); + +size_t gsf_base64_decode_simple (guint8 *data, size_t len); +size_t gsf_base64_decode_step (guint8 const *in, size_t len, + guint8 *out, int *state, guint *save); + + +/* For putting filenames into error messages. */ +char *gsf_filename_to_utf8 (char const *filename, gboolean quoted); + +/* Some version checking */ + +/** + * libgsf_major_version: + * + * Major version number of libgsf, indicating the ABI version. + */ +extern int libgsf_major_version; + +/** + * libgsf_minor_version: + * + * Minor (secondary) version number of libgsf, indicating the API version. + */ +extern int libgsf_minor_version; + +/** + * libgsf_micro_version: + * + * Micro (tertiary) version number of libgsf, indicating bug fixes. + */ +extern int libgsf_micro_version; + +char const *gsf_extension_pointer (char const * path); +void gsf_iconv_close (GIConv handle); + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS +G_DEPRECATED +void gsf_property_settings_collect_valist (GType object_type, + GParameter **p_params, + size_t *p_n_params, + const gchar *first_property_name, + va_list var_args); +G_DEPRECATED +void gsf_property_settings_collect (GType object_type, + GParameter **p_params, + size_t *p_n_params, + const gchar *first_property_name, + ...); +G_DEPRECATED +const GParameter *gsf_property_settings_find (const char *name, + const GParameter *params, + size_t n_params); +G_DEPRECATED +void gsf_property_settings_free (GParameter *params, + size_t n_params); +G_GNUC_END_IGNORE_DEPRECATIONS + + + +/* Errors */ + +#define GSF_ERROR (gsf_error_quark ()) + +/** + * GsfError: + * @GSF_ERROR_OUT_OF_MEMORY: Memory allocation failed + * @GSF_ERROR_INVALID_DATA: Invalid data encountered (e.g. not enough data) + */ + +typedef enum { + GSF_ERROR_OUT_OF_MEMORY, + GSF_ERROR_INVALID_DATA +} GsfError; + +GQuark gsf_error_quark (void); + + +G_END_DECLS + +#endif /* GSF_UTILS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf.h new file mode 100644 index 0000000..95209be --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libgsf-1/gsf/gsf.h @@ -0,0 +1,98 @@ +/* + * gsf.h: + * + * Copyright (C) 2002-2006 Jody Goldberg (jody@gnome.org) + * Copyright (C) 2013 Morten Welinder (terra@gnome.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2.1 of the GNU Lesser General Public + * License as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +/* + * Rules for header inclusion: + * + * 1. Applications should include gsf/gsf.h only and require libgsf 1.14.26 + * Prior to 1.14.26 the practice was to include specific headers. That + * still ought to work, but is deprecated. + * + * 2. gsf/gsf-foo.c should include , then , + * then . No further gsf headers should be needed. + * + * 3. gsf/gsf-foo.h should include . It must not include + * or (which isn't even installed). If + * a super-class is needed, include also the header for that class. + * For convenience, classes derived from Gsf{In,Out}{put,file} should + * include the relevant header too. + * + * 4. Rules 2 and 3 do not apply to headers that are not installed. + */ + +#ifndef GSF_H +#define GSF_H + +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif /* GSF_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif.h new file mode 100644 index 0000000..464581f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif.h @@ -0,0 +1,1513 @@ +/* + * HEIF codec. + * Copyright (c) 2017 struktur AG, Dirk Farin + * + * This file is part of libheif. + * + * libheif is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * libheif 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libheif. If not, see . + */ + +#ifndef LIBHEIF_HEIF_H +#define LIBHEIF_HEIF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include + + +// API versions table +// +// release depth.rep dec.options enc.options heif_reader heif_writer col.profile +// ----------------------------------------------------------------------------------------- +// 1.0 1 1 N/A N/A N/A N/A +// 1.1 1 1 N/A N/A 1 N/A +// 1.3 1 1 1 1 1 N/A +// 1.4 1 1 1 1 1 1 +// 1.7 1 2 1 1 1 1 +// 1.9.2 1 2 2 1 1 1 +// 1.10 1 2 3 1 1 1 +// 1.11 1 2 4 1 1 1 +// 1.13 1 3 4 1 1 1 + + +#if defined(_MSC_VER) && !defined(LIBHEIF_STATIC_BUILD) +#ifdef LIBHEIF_EXPORTS +#define LIBHEIF_API __declspec(dllexport) +#else +#define LIBHEIF_API __declspec(dllimport) +#endif +#elif defined(HAVE_VISIBILITY) && HAVE_VISIBILITY +#ifdef LIBHEIF_EXPORTS +#define LIBHEIF_API __attribute__((__visibility__("default"))) +#else +#define LIBHEIF_API +#endif +#else +#define LIBHEIF_API +#endif + +#define heif_fourcc(a, b, c, d) ((a<<24) | (b<<16) | (c<<8) | d) + + +/* === version numbers === */ + +// Version string of linked libheif library. +LIBHEIF_API const char* heif_get_version(void); +// Numeric version of linked libheif library, encoded as 0xHHMMLL00 = HH.MM.LL. +LIBHEIF_API uint32_t heif_get_version_number(void); + +// Numeric part "HH" from above. +LIBHEIF_API int heif_get_version_number_major(void); +// Numeric part "MM" from above. +LIBHEIF_API int heif_get_version_number_minor(void); +// Numeric part "LL" from above. +LIBHEIF_API int heif_get_version_number_maintenance(void); + +// Helper macros to check for given versions of libheif at compile time. +#define LIBHEIF_MAKE_VERSION(h, m, l) ((h) << 24 | (m) << 16 | (l) << 8) +#define LIBHEIF_HAVE_VERSION(h, m, l) (LIBHEIF_NUMERIC_VERSION >= LIBHEIF_MAKE_VERSION(h, m, l)) + +struct heif_context; +struct heif_image_handle; +struct heif_image; + + +enum heif_error_code +{ + // Everything ok, no error occurred. + heif_error_Ok = 0, + + // Input file does not exist. + heif_error_Input_does_not_exist = 1, + + // Error in input file. Corrupted or invalid content. + heif_error_Invalid_input = 2, + + // Input file type is not supported. + heif_error_Unsupported_filetype = 3, + + // Image requires an unsupported decoder feature. + heif_error_Unsupported_feature = 4, + + // Library API has been used in an invalid way. + heif_error_Usage_error = 5, + + // Could not allocate enough memory. + heif_error_Memory_allocation_error = 6, + + // The decoder plugin generated an error + heif_error_Decoder_plugin_error = 7, + + // The encoder plugin generated an error + heif_error_Encoder_plugin_error = 8, + + // Error during encoding or when writing to the output + heif_error_Encoding_error = 9, + + // Application has asked for a color profile type that does not exist + heif_error_Color_profile_does_not_exist = 10 +}; + + +enum heif_suberror_code +{ + // no further information available + heif_suberror_Unspecified = 0, + + // --- Invalid_input --- + + // End of data reached unexpectedly. + heif_suberror_End_of_data = 100, + + // Size of box (defined in header) is wrong + heif_suberror_Invalid_box_size = 101, + + // Mandatory 'ftyp' box is missing + heif_suberror_No_ftyp_box = 102, + + heif_suberror_No_idat_box = 103, + + heif_suberror_No_meta_box = 104, + + heif_suberror_No_hdlr_box = 105, + + heif_suberror_No_hvcC_box = 106, + + heif_suberror_No_pitm_box = 107, + + heif_suberror_No_ipco_box = 108, + + heif_suberror_No_ipma_box = 109, + + heif_suberror_No_iloc_box = 110, + + heif_suberror_No_iinf_box = 111, + + heif_suberror_No_iprp_box = 112, + + heif_suberror_No_iref_box = 113, + + heif_suberror_No_pict_handler = 114, + + // An item property referenced in the 'ipma' box is not existing in the 'ipco' container. + heif_suberror_Ipma_box_references_nonexisting_property = 115, + + // No properties have been assigned to an item. + heif_suberror_No_properties_assigned_to_item = 116, + + // Image has no (compressed) data + heif_suberror_No_item_data = 117, + + // Invalid specification of image grid (tiled image) + heif_suberror_Invalid_grid_data = 118, + + // Tile-images in a grid image are missing + heif_suberror_Missing_grid_images = 119, + + heif_suberror_Invalid_clean_aperture = 120, + + // Invalid specification of overlay image + heif_suberror_Invalid_overlay_data = 121, + + // Overlay image completely outside of visible canvas area + heif_suberror_Overlay_image_outside_of_canvas = 122, + + heif_suberror_Auxiliary_image_type_unspecified = 123, + + heif_suberror_No_or_invalid_primary_item = 124, + + heif_suberror_No_infe_box = 125, + + heif_suberror_Unknown_color_profile_type = 126, + + heif_suberror_Wrong_tile_image_chroma_format = 127, + + heif_suberror_Invalid_fractional_number = 128, + + heif_suberror_Invalid_image_size = 129, + + heif_suberror_Invalid_pixi_box = 130, + + heif_suberror_No_av1C_box = 131, + + heif_suberror_Wrong_tile_image_pixel_depth = 132, + + heif_suberror_Unknown_NCLX_color_primaries = 133, + + heif_suberror_Unknown_NCLX_transfer_characteristics = 134, + + heif_suberror_Unknown_NCLX_matrix_coefficients = 135, + + + // --- Memory_allocation_error --- + + // A security limit preventing unreasonable memory allocations was exceeded by the input file. + // Please check whether the file is valid. If it is, contact us so that we could increase the + // security limits further. + heif_suberror_Security_limit_exceeded = 1000, + + + // --- Usage_error --- + + // An item ID was used that is not present in the file. + heif_suberror_Nonexisting_item_referenced = 2000, // also used for Invalid_input + + // An API argument was given a NULL pointer, which is not allowed for that function. + heif_suberror_Null_pointer_argument = 2001, + + // Image channel referenced that does not exist in the image + heif_suberror_Nonexisting_image_channel_referenced = 2002, + + // The version of the passed plugin is not supported. + heif_suberror_Unsupported_plugin_version = 2003, + + // The version of the passed writer is not supported. + heif_suberror_Unsupported_writer_version = 2004, + + // The given (encoder) parameter name does not exist. + heif_suberror_Unsupported_parameter = 2005, + + // The value for the given parameter is not in the valid range. + heif_suberror_Invalid_parameter_value = 2006, + + + // --- Unsupported_feature --- + + // Image was coded with an unsupported compression method. + heif_suberror_Unsupported_codec = 3000, + + // Image is specified in an unknown way, e.g. as tiled grid image (which is supported) + heif_suberror_Unsupported_image_type = 3001, + + heif_suberror_Unsupported_data_version = 3002, + + // The conversion of the source image to the requested chroma / colorspace is not supported. + heif_suberror_Unsupported_color_conversion = 3003, + + heif_suberror_Unsupported_item_construction_method = 3004, + + + // --- Encoder_plugin_error --- + + heif_suberror_Unsupported_bit_depth = 4000, + + + // --- Encoding_error --- + + heif_suberror_Cannot_write_output_data = 5000, +}; + + +struct heif_error +{ + // main error category + enum heif_error_code code; + + // more detailed error code + enum heif_suberror_code subcode; + + // textual error message (is always defined, you do not have to check for NULL) + const char* message; +}; + + +typedef uint32_t heif_item_id; + + + +// ========================= library initialization ====================== + +// You should call heif_init() when you start using libheif and heif_deinit() when you are finished. +// These calls are reference counted. Each call to heif_init() should be matched by one call to heif_deinit(). +// For backwards compatibility, it is not really necessary to call heif_init(), but if you don't, the plugins +// registered by default may not be freed correctly. +// However, this should not be mixed, i.e. one part of your program does use heif_init()/heif_deinit() and another doesn't. +// If in doubt, enclose everything with init/deinit. + +struct heif_init_params { + int version; + + // currently no parameters +}; + + +// You may pass nullptr to get default parameters. Currently, no parameters are supported. +LIBHEIF_API +struct heif_error heif_init(struct heif_init_params*); + +LIBHEIF_API +void heif_deinit(); + + +// ========================= file type check ====================== + +enum heif_filetype_result +{ + heif_filetype_no, + heif_filetype_yes_supported, // it is heif and can be read by libheif + heif_filetype_yes_unsupported, // it is heif, but cannot be read by libheif + heif_filetype_maybe // not sure whether it is an heif, try detection with more input data +}; + +// input data should be at least 12 bytes +LIBHEIF_API +enum heif_filetype_result heif_check_filetype(const uint8_t* data, int len); + + +// DEPRECATED, use heif_brand2 instead +enum heif_brand +{ + heif_unknown_brand, + heif_heic, // the usual HEIF images + heif_heix, // 10bit images, or anything that uses h265 with range extension + heif_hevc, heif_hevx, // brands for image sequences + heif_heim, // multiview + heif_heis, // scalable + heif_hevm, // multiview sequence + heif_hevs, // scalable sequence + heif_mif1, // image, any coding algorithm + heif_msf1, // sequence, any coding algorithm + heif_avif, + heif_avis +}; + +// input data should be at least 12 bytes +// DEPRECATED, use heif_read_main_brand() instead +LIBHEIF_API +enum heif_brand heif_main_brand(const uint8_t* data, int len); + + +typedef uint32_t heif_brand2; + +// input data should be at least 12 bytes +LIBHEIF_API +heif_brand2 heif_read_main_brand(const uint8_t* data, int len); + +// 'brand_fourcc' must be 4 character long, but need not be 0-terminated +LIBHEIF_API +heif_brand2 heif_fourcc_to_brand(const char* brand_fourcc); + +// the output buffer must be at least 4 bytes long +LIBHEIF_API +void heif_brand_to_fourcc(heif_brand2 brand, char* out_fourcc); + +// 'brand_fourcc' must be 4 character long, but need not be 0-terminated +// returns 1 if file includes the brand, and 0 if it does not +// returns -1 if the provided data is not sufficient +// (you should input at least as many bytes as indicated in the first 4 bytes of the file, usually ~50 bytes will do) +// returns -2 on other errors +LIBHEIF_API +int heif_has_compatible_brand(const uint8_t* data, int len, const char* brand_fourcc); + +// Returns an array of compatible brands. The array is allocated by this function and has to be freed with 'heif_free_list_of_compatible_brands()'. +// The number of entries is returned in out_size. +LIBHEIF_API +struct heif_error heif_list_compatible_brands(const uint8_t* data, int len, heif_brand2** out_brands, int* out_size); + +LIBHEIF_API +void heif_free_list_of_compatible_brands(heif_brand2* brands_list); + + +// Returns one of these MIME types: +// - image/heic HEIF file using h265 compression +// - image/heif HEIF file using any other compression +// - image/heic-sequence HEIF image sequence using h265 compression +// - image/heif-sequence HEIF image sequence using any other compression +// - image/jpeg JPEG image +// - image/png PNG image +// If the format could not be detected, an empty string is returned. +// +// Provide at least 12 bytes of input. With less input, its format might not +// be detected. You may also provide more input to increase detection accuracy. +// +// Note that JPEG and PNG images cannot be decoded by libheif even though the +// formats are detected by this function. +LIBHEIF_API +const char* heif_get_file_mime_type(const uint8_t* data, int len); + + + +// ========================= heif_context ========================= +// A heif_context represents a HEIF file that has been read. +// In the future, you will also be able to add pictures to a heif_context +// and write it into a file again. + + +// Allocate a new context for reading HEIF files. +// Has to be freed again with heif_context_free(). +LIBHEIF_API +struct heif_context* heif_context_alloc(void); + +// Free a previously allocated HEIF context. You should not free a context twice. +LIBHEIF_API +void heif_context_free(struct heif_context*); + + +struct heif_reading_options; + +enum heif_reader_grow_status +{ + heif_reader_grow_status_size_reached, // requested size has been reached, we can read until this point + heif_reader_grow_status_timeout, // size has not been reached yet, but it may still grow further + heif_reader_grow_status_size_beyond_eof // size has not been reached and never will. The file has grown to its full size +}; + +struct heif_reader +{ + // API version supported by this reader + int reader_api_version; + + // --- version 1 functions --- + int64_t (* get_position)(void* userdata); + + // The functions read(), and seek() return 0 on success. + // Generally, libheif will make sure that we do not read past the file size. + int (* read)(void* data, + size_t size, + void* userdata); + + int (* seek)(int64_t position, + void* userdata); + + // When calling this function, libheif wants to make sure that it can read the file + // up to 'target_size'. This is useful when the file is currently downloaded and may + // grow with time. You may, for example, extract the image sizes even before the actual + // compressed image data has been completely downloaded. + // + // Even if your input files will not grow, you will have to implement at least + // detection whether the target_size is above the (fixed) file length + // (in this case, return 'size_beyond_eof'). + enum heif_reader_grow_status (* wait_for_file_size)(int64_t target_size, void* userdata); +}; + + +// Read a HEIF file from a named disk file. +// The heif_reading_options should currently be set to NULL. +LIBHEIF_API +struct heif_error heif_context_read_from_file(struct heif_context*, const char* filename, + const struct heif_reading_options*); + +// Read a HEIF file stored completely in memory. +// The heif_reading_options should currently be set to NULL. +// DEPRECATED: use heif_context_read_from_memory_without_copy() instead. +LIBHEIF_API +struct heif_error heif_context_read_from_memory(struct heif_context*, + const void* mem, size_t size, + const struct heif_reading_options*); + +// Same as heif_context_read_from_memory() except that the provided memory is not copied. +// That means, you will have to keep the memory area alive as long as you use the heif_context. +LIBHEIF_API +struct heif_error heif_context_read_from_memory_without_copy(struct heif_context*, + const void* mem, size_t size, + const struct heif_reading_options*); + +LIBHEIF_API +struct heif_error heif_context_read_from_reader(struct heif_context*, + const struct heif_reader* reader, + void* userdata, + const struct heif_reading_options*); + +// Number of top-level images in the HEIF file. This does not include the thumbnails or the +// tile images that are composed to an image grid. You can get access to the thumbnails via +// the main image handle. +LIBHEIF_API +int heif_context_get_number_of_top_level_images(struct heif_context* ctx); + +LIBHEIF_API +int heif_context_is_top_level_image_ID(struct heif_context* ctx, heif_item_id id); + +// Fills in image IDs into the user-supplied int-array 'ID_array', preallocated with 'count' entries. +// Function returns the total number of IDs filled into the array. +LIBHEIF_API +int heif_context_get_list_of_top_level_image_IDs(struct heif_context* ctx, + heif_item_id* ID_array, + int count); + +LIBHEIF_API +struct heif_error heif_context_get_primary_image_ID(struct heif_context* ctx, heif_item_id* id); + +// Get a handle to the primary image of the HEIF file. +// This is the image that should be displayed primarily when there are several images in the file. +LIBHEIF_API +struct heif_error heif_context_get_primary_image_handle(struct heif_context* ctx, + struct heif_image_handle**); + +// Get the handle for a specific top-level image from an image ID. +LIBHEIF_API +struct heif_error heif_context_get_image_handle(struct heif_context* ctx, + heif_item_id id, + struct heif_image_handle**); + +// Print information about the boxes of a HEIF file to file descriptor. +// This is for debugging and informational purposes only. You should not rely on +// the output having a specific format. At best, you should not use this at all. +LIBHEIF_API +void heif_context_debug_dump_boxes_to_file(struct heif_context* ctx, int fd); + + +LIBHEIF_API +void heif_context_set_maximum_image_size_limit(struct heif_context* ctx, int maximum_width); + +LIBHEIF_API +void heif_context_set_max_decoding_threads(struct heif_context* ctx, int max_threads); + + +// ========================= heif_image_handle ========================= + +// An heif_image_handle is a handle to a logical image in the HEIF file. +// To get the actual pixel data, you have to decode the handle to an heif_image. +// An heif_image_handle also gives you access to the thumbnails and Exif data +// associated with an image. + +// Once you obtained an heif_image_handle, you can already release the heif_context, +// since it is internally ref-counted. + +// Release image handle. +LIBHEIF_API +void heif_image_handle_release(const struct heif_image_handle*); + +// Check whether the given image_handle is the primary image of the file. +LIBHEIF_API +int heif_image_handle_is_primary_image(const struct heif_image_handle* handle); + +// Get the resolution of an image. +LIBHEIF_API +int heif_image_handle_get_width(const struct heif_image_handle* handle); + +LIBHEIF_API +int heif_image_handle_get_height(const struct heif_image_handle* handle); + +LIBHEIF_API +int heif_image_handle_has_alpha_channel(const struct heif_image_handle*); + +LIBHEIF_API +int heif_image_handle_is_premultiplied_alpha(const struct heif_image_handle*); + +// Returns -1 on error, e.g. if this information is not present in the image. +LIBHEIF_API +int heif_image_handle_get_luma_bits_per_pixel(const struct heif_image_handle*); + +// Returns -1 on error, e.g. if this information is not present in the image. +LIBHEIF_API +int heif_image_handle_get_chroma_bits_per_pixel(const struct heif_image_handle*); + +// Get the image width from the 'ispe' box. This is the original image size without +// any transformations applied to it. Do not use this unless you know exactly what +// you are doing. +LIBHEIF_API +int heif_image_handle_get_ispe_width(const struct heif_image_handle* handle); + +LIBHEIF_API +int heif_image_handle_get_ispe_height(const struct heif_image_handle* handle); + + +// ------------------------- depth images ------------------------- + +LIBHEIF_API +int heif_image_handle_has_depth_image(const struct heif_image_handle*); + +LIBHEIF_API +int heif_image_handle_get_number_of_depth_images(const struct heif_image_handle* handle); + +LIBHEIF_API +int heif_image_handle_get_list_of_depth_image_IDs(const struct heif_image_handle* handle, + heif_item_id* ids, int count); + +LIBHEIF_API +struct heif_error heif_image_handle_get_depth_image_handle(const struct heif_image_handle* handle, + heif_item_id depth_image_id, + struct heif_image_handle** out_depth_handle); + + +enum heif_depth_representation_type +{ + heif_depth_representation_type_uniform_inverse_Z = 0, + heif_depth_representation_type_uniform_disparity = 1, + heif_depth_representation_type_uniform_Z = 2, + heif_depth_representation_type_nonuniform_disparity = 3 +}; + +struct heif_depth_representation_info +{ + uint8_t version; + + // version 1 fields + + uint8_t has_z_near; + uint8_t has_z_far; + uint8_t has_d_min; + uint8_t has_d_max; + + double z_near; + double z_far; + double d_min; + double d_max; + + enum heif_depth_representation_type depth_representation_type; + uint32_t disparity_reference_view; + + uint32_t depth_nonlinear_representation_model_size; + uint8_t* depth_nonlinear_representation_model; + + // version 2 fields below +}; + + +LIBHEIF_API +void heif_depth_representation_info_free(const struct heif_depth_representation_info* info); + +// Returns true when there is depth_representation_info available +// Note 1: depth_image_id is currently unused because we support only one depth channel per image, but +// you should still provide the correct ID for future compatibility. +// Note 2: Because of an API bug before v1.11.0, the function also works when 'handle' is the handle of the depth image. +// However, you should pass the handle of the main image. Please adapt your code if needed. +LIBHEIF_API +int heif_image_handle_get_depth_image_representation_info(const struct heif_image_handle* handle, + heif_item_id depth_image_id, + const struct heif_depth_representation_info** out); + + + +// ------------------------- thumbnails ------------------------- + +// List the number of thumbnails assigned to this image handle. Usually 0 or 1. +LIBHEIF_API +int heif_image_handle_get_number_of_thumbnails(const struct heif_image_handle* handle); + +LIBHEIF_API +int heif_image_handle_get_list_of_thumbnail_IDs(const struct heif_image_handle* handle, + heif_item_id* ids, int count); + +// Get the image handle of a thumbnail image. +LIBHEIF_API +struct heif_error heif_image_handle_get_thumbnail(const struct heif_image_handle* main_image_handle, + heif_item_id thumbnail_id, + struct heif_image_handle** out_thumbnail_handle); + + +// ------------------------- auxiliary images ------------------------- + +#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA (1UL<<1) +#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH (2UL<<1) + +// List the number of auxiliary images assigned to this image handle. +LIBHEIF_API +int heif_image_handle_get_number_of_auxiliary_images(const struct heif_image_handle* handle, + int aux_filter); + +LIBHEIF_API +int heif_image_handle_get_list_of_auxiliary_image_IDs(const struct heif_image_handle* handle, + int aux_filter, + heif_item_id* ids, int count); + +// You are responsible to deallocate the returned buffer with heif_image_handle_free_auxiliary_types(). +LIBHEIF_API +struct heif_error heif_image_handle_get_auxiliary_type(const struct heif_image_handle* handle, + const char** out_type); + +LIBHEIF_API +void heif_image_handle_free_auxiliary_types(const struct heif_image_handle* handle, + const char** out_type); + +// Get the image handle of an auxiliary image. +LIBHEIF_API +struct heif_error heif_image_handle_get_auxiliary_image_handle(const struct heif_image_handle* main_image_handle, + heif_item_id auxiliary_id, + struct heif_image_handle** out_auxiliary_handle); + + +// ------------------------- metadata (Exif / XMP) ------------------------- + +// How many metadata blocks are attached to an image. Usually, the only metadata is +// an "Exif" block. +LIBHEIF_API +int heif_image_handle_get_number_of_metadata_blocks(const struct heif_image_handle* handle, + const char* type_filter); + +// 'type_filter' can be used to get only metadata of specific types, like "Exif". +// If 'type_filter' is NULL, it will return all types of metadata IDs. +LIBHEIF_API +int heif_image_handle_get_list_of_metadata_block_IDs(const struct heif_image_handle* handle, + const char* type_filter, + heif_item_id* ids, int count); + +// Return a string indicating the type of the metadata, as specified in the HEIF file. +// Exif data will have the type string "Exif". +// This string will be valid until the next call to a libheif function. +// You do not have to free this string. +LIBHEIF_API +const char* heif_image_handle_get_metadata_type(const struct heif_image_handle* handle, + heif_item_id metadata_id); + +LIBHEIF_API +const char* heif_image_handle_get_metadata_content_type(const struct heif_image_handle* handle, + heif_item_id metadata_id); + +// Get the size of the raw metadata, as stored in the HEIF file. +LIBHEIF_API +size_t heif_image_handle_get_metadata_size(const struct heif_image_handle* handle, + heif_item_id metadata_id); + +// 'out_data' must point to a memory area of the size reported by heif_image_handle_get_metadata_size(). +// The data is returned exactly as stored in the HEIF file. +// For Exif data, you probably have to skip the first four bytes of the data, since they +// indicate the offset to the start of the TIFF header of the Exif data. +LIBHEIF_API +struct heif_error heif_image_handle_get_metadata(const struct heif_image_handle* handle, + heif_item_id metadata_id, + void* out_data); + +enum heif_color_profile_type +{ + heif_color_profile_type_not_present = 0, + heif_color_profile_type_nclx = heif_fourcc('n', 'c', 'l', 'x'), + heif_color_profile_type_rICC = heif_fourcc('r', 'I', 'C', 'C'), + heif_color_profile_type_prof = heif_fourcc('p', 'r', 'o', 'f') +}; + + +// Returns 'heif_color_profile_type_not_present' if there is no color profile. +// If there is an ICC profile and an NCLX profile, the ICC profile is returned. +// TODO: we need a new API for this function as images can contain both NCLX and ICC at the same time. +// However, you can still use heif_image_handle_get_raw_color_profile() and +// heif_image_handle_get_nclx_color_profile() to access both profiles. +LIBHEIF_API +enum heif_color_profile_type heif_image_handle_get_color_profile_type(const struct heif_image_handle* handle); + +LIBHEIF_API +size_t heif_image_handle_get_raw_color_profile_size(const struct heif_image_handle* handle); + +// Returns 'heif_error_Color_profile_does_not_exist' when there is no ICC profile. +LIBHEIF_API +struct heif_error heif_image_handle_get_raw_color_profile(const struct heif_image_handle* handle, + void* out_data); + + +enum heif_color_primaries +{ + heif_color_primaries_ITU_R_BT_709_5 = 1, // g=0.3;0.6, b=0.15;0.06, r=0.64;0.33, w=0.3127,0.3290 + heif_color_primaries_unspecified = 2, + heif_color_primaries_ITU_R_BT_470_6_System_M = 4, + heif_color_primaries_ITU_R_BT_470_6_System_B_G = 5, + heif_color_primaries_ITU_R_BT_601_6 = 6, + heif_color_primaries_SMPTE_240M = 7, + heif_color_primaries_generic_film = 8, + heif_color_primaries_ITU_R_BT_2020_2_and_2100_0 = 9, + heif_color_primaries_SMPTE_ST_428_1 = 10, + heif_color_primaries_SMPTE_RP_431_2 = 11, + heif_color_primaries_SMPTE_EG_432_1 = 12, + heif_color_primaries_EBU_Tech_3213_E = 22 +}; + +enum heif_transfer_characteristics +{ + heif_transfer_characteristic_ITU_R_BT_709_5 = 1, + heif_transfer_characteristic_unspecified = 2, + heif_transfer_characteristic_ITU_R_BT_470_6_System_M = 4, + heif_transfer_characteristic_ITU_R_BT_470_6_System_B_G = 5, + heif_transfer_characteristic_ITU_R_BT_601_6 = 6, + heif_transfer_characteristic_SMPTE_240M = 7, + heif_transfer_characteristic_linear = 8, + heif_transfer_characteristic_logarithmic_100 = 9, + heif_transfer_characteristic_logarithmic_100_sqrt10 = 10, + heif_transfer_characteristic_IEC_61966_2_4 = 11, + heif_transfer_characteristic_ITU_R_BT_1361 = 12, + heif_transfer_characteristic_IEC_61966_2_1 = 13, + heif_transfer_characteristic_ITU_R_BT_2020_2_10bit = 14, + heif_transfer_characteristic_ITU_R_BT_2020_2_12bit = 15, + heif_transfer_characteristic_ITU_R_BT_2100_0_PQ = 16, + heif_transfer_characteristic_SMPTE_ST_428_1 = 17, + heif_transfer_characteristic_ITU_R_BT_2100_0_HLG = 18 +}; + +enum heif_matrix_coefficients +{ + heif_matrix_coefficients_RGB_GBR = 0, + heif_matrix_coefficients_ITU_R_BT_709_5 = 1, // TODO: or 709-6 according to h.273 + heif_matrix_coefficients_unspecified = 2, + heif_matrix_coefficients_US_FCC_T47 = 4, + heif_matrix_coefficients_ITU_R_BT_470_6_System_B_G = 5, + heif_matrix_coefficients_ITU_R_BT_601_6 = 6, // TODO: or 601-7 according to h.273 + heif_matrix_coefficients_SMPTE_240M = 7, + heif_matrix_coefficients_YCgCo = 8, + heif_matrix_coefficients_ITU_R_BT_2020_2_non_constant_luminance = 9, + heif_matrix_coefficients_ITU_R_BT_2020_2_constant_luminance = 10, + heif_matrix_coefficients_SMPTE_ST_2085 = 11, + heif_matrix_coefficients_chromaticity_derived_non_constant_luminance = 12, + heif_matrix_coefficients_chromaticity_derived_constant_luminance = 13, + heif_matrix_coefficients_ICtCp = 14 +}; + +struct heif_color_profile_nclx +{ + // === version 1 fields + + uint8_t version; + + enum heif_color_primaries color_primaries; + enum heif_transfer_characteristics transfer_characteristics; + enum heif_matrix_coefficients matrix_coefficients; + uint8_t full_range_flag; + + // --- decoded values (not used when saving nclx) + + float color_primary_red_x, color_primary_red_y; + float color_primary_green_x, color_primary_green_y; + float color_primary_blue_x, color_primary_blue_y; + float color_primary_white_x, color_primary_white_y; +}; + +LIBHEIF_API +struct heif_error heif_nclx_color_profile_set_color_primaries(struct heif_color_profile_nclx* nclx, uint16_t cp); + +LIBHEIF_API +struct heif_error heif_nclx_color_profile_set_transfer_characteristics(struct heif_color_profile_nclx* nclx, uint16_t transfer_characteristics); + +LIBHEIF_API +struct heif_error heif_nclx_color_profile_set_matrix_coefficients(struct heif_color_profile_nclx* nclx, uint16_t matrix_coefficients); + +// Returns 'heif_error_Color_profile_does_not_exist' when there is no NCLX profile. +// TODO: This function does currently not return an NCLX profile if it is stored in the image bitstream. +// Only NCLX profiles stored as colr boxes are returned. This may change in the future. +LIBHEIF_API +struct heif_error heif_image_handle_get_nclx_color_profile(const struct heif_image_handle* handle, + struct heif_color_profile_nclx** out_data); + +// Returned color profile has 'version' field set to the maximum allowed. +// Do not fill values for higher versions as these might be outside the allocated structure size. +// May return NULL. +LIBHEIF_API +struct heif_color_profile_nclx* heif_nclx_color_profile_alloc(); + +LIBHEIF_API +void heif_nclx_color_profile_free(struct heif_color_profile_nclx* nclx_profile); + + +LIBHEIF_API +enum heif_color_profile_type heif_image_get_color_profile_type(const struct heif_image* image); + +LIBHEIF_API +size_t heif_image_get_raw_color_profile_size(const struct heif_image* image); + +LIBHEIF_API +struct heif_error heif_image_get_raw_color_profile(const struct heif_image* image, + void* out_data); + +LIBHEIF_API +struct heif_error heif_image_get_nclx_color_profile(const struct heif_image* image, + struct heif_color_profile_nclx** out_data); + + + +// ========================= heif_image ========================= + +// An heif_image contains a decoded pixel image in various colorspaces, chroma formats, +// and bit depths. + +// Note: when converting images to an interleaved chroma format, the resulting +// image contains only a single channel of type channel_interleaved with, e.g., 3 bytes per pixel, +// containing the interleaved R,G,B values. + +// Planar RGB images are specified as heif_colorspace_RGB / heif_chroma_444. + +enum heif_compression_format +{ + heif_compression_undefined = 0, + heif_compression_HEVC = 1, + heif_compression_AVC = 2, + heif_compression_JPEG = 3, + heif_compression_AV1 = 4 +}; + +enum heif_chroma +{ + heif_chroma_undefined = 99, + heif_chroma_monochrome = 0, + heif_chroma_420 = 1, + heif_chroma_422 = 2, + heif_chroma_444 = 3, + heif_chroma_interleaved_RGB = 10, + heif_chroma_interleaved_RGBA = 11, + heif_chroma_interleaved_RRGGBB_BE = 12, + heif_chroma_interleaved_RRGGBBAA_BE = 13, + heif_chroma_interleaved_RRGGBB_LE = 14, + heif_chroma_interleaved_RRGGBBAA_LE = 15 +}; + +// DEPRECATED ENUM NAMES +#define heif_chroma_interleaved_24bit heif_chroma_interleaved_RGB +#define heif_chroma_interleaved_32bit heif_chroma_interleaved_RGBA + + +enum heif_colorspace +{ + heif_colorspace_undefined = 99, + heif_colorspace_YCbCr = 0, + heif_colorspace_RGB = 1, + heif_colorspace_monochrome = 2 +}; + +enum heif_channel +{ + heif_channel_Y = 0, + heif_channel_Cb = 1, + heif_channel_Cr = 2, + heif_channel_R = 3, + heif_channel_G = 4, + heif_channel_B = 5, + heif_channel_Alpha = 6, + heif_channel_interleaved = 10 +}; + + +enum heif_progress_step +{ + heif_progress_step_total = 0, + heif_progress_step_load_tile = 1 +}; + + +struct heif_decoding_options +{ + uint8_t version; + + // version 1 options + + // Ignore geometric transformations like cropping, rotation, mirroring. + // Default: false (do not ignore). + uint8_t ignore_transformations; + + void (* start_progress)(enum heif_progress_step step, int max_progress, void* progress_user_data); + + void (* on_progress)(enum heif_progress_step step, int progress, void* progress_user_data); + + void (* end_progress)(enum heif_progress_step step, void* progress_user_data); + + void* progress_user_data; + + // version 2 options + + uint8_t convert_hdr_to_8bit; + + // version 3 options + + // When enabled, an error is returned for invalid input. Otherwise, it will try its best and + // add decoding warnings to the decoded heif_image. Default is non-strict. + uint8_t strict_decoding; +}; + + +// Allocate decoding options and fill with default values. +// Note: you should always get the decoding options through this function since the +// option structure may grow in size in future versions. +LIBHEIF_API +struct heif_decoding_options* heif_decoding_options_alloc(); + +LIBHEIF_API +void heif_decoding_options_free(struct heif_decoding_options*); + +// Decode an heif_image_handle into the actual pixel image and also carry out +// all geometric transformations specified in the HEIF file (rotation, cropping, mirroring). +// +// If colorspace or chroma is set to heif_colorspace_undefined or heif_chroma_undefined, +// respectively, the original colorspace is taken. +// Decoding options may be NULL. If you want to supply options, always use +// heif_decoding_options_alloc() to get the structure. +LIBHEIF_API +struct heif_error heif_decode_image(const struct heif_image_handle* in_handle, + struct heif_image** out_img, + enum heif_colorspace colorspace, + enum heif_chroma chroma, + const struct heif_decoding_options* options); + +// Get the colorspace format of the image. +LIBHEIF_API +enum heif_colorspace heif_image_get_colorspace(const struct heif_image*); + +// Get the chroma format of the image. +LIBHEIF_API +enum heif_chroma heif_image_get_chroma_format(const struct heif_image*); + +// Get width of the given image channel in pixels. Returns -1 if a non-existing +// channel was given. +LIBHEIF_API +int heif_image_get_width(const struct heif_image*, enum heif_channel channel); + +// Get height of the given image channel in pixels. Returns -1 if a non-existing +// channel was given. +LIBHEIF_API +int heif_image_get_height(const struct heif_image*, enum heif_channel channel); + +// Get the width of the main channel (Y in YCbCr, or any in RGB). +LIBHEIF_API +int heif_image_get_primary_width(const struct heif_image*); + +LIBHEIF_API +int heif_image_get_primary_height(const struct heif_image*); + +LIBHEIF_API +struct heif_error heif_image_crop(struct heif_image* img, + int left, int right, int top, int bottom); + +// Get the number of bits per pixel in the given image channel. Returns -1 if +// a non-existing channel was given. +// Note that the number of bits per pixel may be different for each color channel. +// This function returns the number of bits used for storage of each pixel. +// Especially for HDR images, this is probably not what you want. Have a look at +// heif_image_get_bits_per_pixel_range() instead. +LIBHEIF_API +int heif_image_get_bits_per_pixel(const struct heif_image*, enum heif_channel channel); + + +// Get the number of bits per pixel in the given image channel. This function returns +// the number of bits used for representing the pixel value, which might be smaller +// than the number of bits used in memory. +// For example, in 12bit HDR images, this function returns '12', while still 16 bits +// are reserved for storage. For interleaved RGBA with 12 bit, this function also returns +// '12', not '48' or '64' (heif_image_get_bits_per_pixel returns 64 in this case). +LIBHEIF_API +int heif_image_get_bits_per_pixel_range(const struct heif_image*, enum heif_channel channel); + +LIBHEIF_API +int heif_image_has_channel(const struct heif_image*, enum heif_channel channel); + +// Get a pointer to the actual pixel data. +// The 'out_stride' is returned as "bytes per line". +// When out_stride is NULL, no value will be written. +// Returns NULL if a non-existing channel was given. +LIBHEIF_API +const uint8_t* heif_image_get_plane_readonly(const struct heif_image*, + enum heif_channel channel, + int* out_stride); + +LIBHEIF_API +uint8_t* heif_image_get_plane(struct heif_image*, + enum heif_channel channel, + int* out_stride); + + +struct heif_scaling_options; + +// Currently, heif_scaling_options is not defined yet. Pass a NULL pointer. +LIBHEIF_API +struct heif_error heif_image_scale_image(const struct heif_image* input, + struct heif_image** output, + int width, int height, + const struct heif_scaling_options* options); + +// The color profile is not attached to the image handle because we might need it +// for color space transform and encoding. +LIBHEIF_API +struct heif_error heif_image_set_raw_color_profile(struct heif_image* image, + const char* profile_type_fourcc_string, + const void* profile_data, + const size_t profile_size); + +LIBHEIF_API +struct heif_error heif_image_set_nclx_color_profile(struct heif_image* image, + const struct heif_color_profile_nclx* color_profile); + + +// TODO: this function does not make any sense yet, since we currently cannot modify existing HEIF files. +//LIBHEIF_API +//void heif_image_remove_color_profile(struct heif_image* image); + +// Fills the image decoding warnings into the provided 'out_warnings' array. +// The size of the array has to be provided in max_output_buffer_entries. +// If max_output_buffer_entries==0, the number of decoder warnings is returned. +// The function fills the warnings into the provided buffer, starting with 'first_warning_idx'. +// It returns the number of warnings filled into the buffer. +// Note: you can iterate through all warnings by using 'max_output_buffer_entries=1' and iterate 'first_warning_idx'. +LIBHEIF_API +int heif_image_get_decoding_warnings(struct heif_image* image, + int first_warning_idx, + struct heif_error* out_warnings, + int max_output_buffer_entries); + +// This function is only for decoder plugin implementors. +LIBHEIF_API +void heif_image_add_decoding_warning(struct heif_image* image, + struct heif_error err); + +// Release heif_image. +LIBHEIF_API +void heif_image_release(const struct heif_image*); + + +// ==================================================================================================== +// Encoding API + +LIBHEIF_API +struct heif_error heif_context_write_to_file(struct heif_context*, + const char* filename); + +struct heif_writer +{ + // API version supported by this writer + int writer_api_version; + + // --- version 1 functions --- + struct heif_error (* write)(struct heif_context* ctx, // TODO: why do we need this parameter? + const void* data, + size_t size, + void* userdata); +}; + +LIBHEIF_API +struct heif_error heif_context_write(struct heif_context*, + struct heif_writer* writer, + void* userdata); + + +// ----- encoder ----- + +// The encoder used for actually encoding an image. +struct heif_encoder; + +// A description of the encoder's capabilities and name. +struct heif_encoder_descriptor; + +// A configuration parameter of the encoder. Each encoder implementation may have a different +// set of parameters. For the most common settings (e.q. quality), special functions to set +// the parameters are provided. +struct heif_encoder_parameter; + + +// Get a list of available encoders. You can filter the encoders by compression format and name. +// Use format_filter==heif_compression_undefined and name_filter==NULL as wildcards. +// The returned list of encoders is sorted by their priority (which is a plugin property). +// Note: to get the actual encoder from the descriptors returned here, use heif_context_get_encoder(). +LIBHEIF_API +int heif_context_get_encoder_descriptors(struct heif_context*, // TODO: why do we need this parameter? + enum heif_compression_format format_filter, + const char* name_filter, + const struct heif_encoder_descriptor** out_encoders, + int count); + +// Return a long, descriptive name of the encoder (including version information). +LIBHEIF_API +const char* heif_encoder_descriptor_get_name(const struct heif_encoder_descriptor*); + +// Return a short, symbolic name for identifying the encoder. +// This name should stay constant over different encoder versions. +LIBHEIF_API +const char* heif_encoder_descriptor_get_id_name(const struct heif_encoder_descriptor*); + +LIBHEIF_API +enum heif_compression_format +heif_encoder_descriptor_get_compression_format(const struct heif_encoder_descriptor*); + +LIBHEIF_API +int heif_encoder_descriptor_supports_lossy_compression(const struct heif_encoder_descriptor*); + +LIBHEIF_API +int heif_encoder_descriptor_supports_lossless_compression(const struct heif_encoder_descriptor*); + + +// Get an encoder instance that can be used to actually encode images from a descriptor. +LIBHEIF_API +struct heif_error heif_context_get_encoder(struct heif_context* context, + const struct heif_encoder_descriptor*, + struct heif_encoder** out_encoder); + +// Quick check whether there is a decoder available for the given format. +// Note that the decoder still may not be able to decode all variants of that format. +// You will have to query that further (todo) or just try to decode and check the returned error. +LIBHEIF_API +int heif_have_decoder_for_format(enum heif_compression_format format); + +// Quick check whether there is an enoder available for the given format. +// Note that the encoder may be limited to a certain subset of features (e.g. only 8 bit, only lossy). +// You will have to query the specific capabilities further. +LIBHEIF_API +int heif_have_encoder_for_format(enum heif_compression_format format); + +// Get an encoder for the given compression format. If there are several encoder plugins +// for this format, the encoder with the highest plugin priority will be returned. +LIBHEIF_API +struct heif_error heif_context_get_encoder_for_format(struct heif_context* context, + enum heif_compression_format format, + struct heif_encoder**); + +// You have to release the encoder after use. +LIBHEIF_API +void heif_encoder_release(struct heif_encoder*); + +// Get the encoder name from the encoder itself. +LIBHEIF_API +const char* heif_encoder_get_name(const struct heif_encoder*); + + +// --- Encoder Parameters --- + +// Libheif supports settings parameters through specialized functions and through +// generic functions by parameter name. Sometimes, the same parameter can be set +// in both ways. +// We consider it best practice to use the generic parameter functions only in +// dynamically generated user interfaces, as no guarantees are made that some specific +// parameter names are supported by all plugins. + + +// Set a 'quality' factor (0-100). How this is mapped to actual encoding parameters is +// encoder dependent. +LIBHEIF_API +struct heif_error heif_encoder_set_lossy_quality(struct heif_encoder*, int quality); + +LIBHEIF_API +struct heif_error heif_encoder_set_lossless(struct heif_encoder*, int enable); + +// level should be between 0 (= none) to 4 (= full) +LIBHEIF_API +struct heif_error heif_encoder_set_logging_level(struct heif_encoder*, int level); + +// Get a generic list of encoder parameters. +// Each encoder may define its own, additional set of parameters. +// You do not have to free the returned list. +LIBHEIF_API +const struct heif_encoder_parameter* const* heif_encoder_list_parameters(struct heif_encoder*); + +// Return the parameter name. +LIBHEIF_API +const char* heif_encoder_parameter_get_name(const struct heif_encoder_parameter*); + + +enum heif_encoder_parameter_type +{ + heif_encoder_parameter_type_integer = 1, + heif_encoder_parameter_type_boolean = 2, + heif_encoder_parameter_type_string = 3 +}; + +// Return the parameter type. +LIBHEIF_API +enum heif_encoder_parameter_type heif_encoder_parameter_get_type(const struct heif_encoder_parameter*); + +// DEPRECATED. Use heif_encoder_parameter_get_valid_integer_values() instead. +LIBHEIF_API +struct heif_error heif_encoder_parameter_get_valid_integer_range(const struct heif_encoder_parameter*, + int* have_minimum_maximum, + int* minimum, int* maximum); + +// If integer is limited by a range, have_minimum and/or have_maximum will be != 0 and *minimum, *maximum is set. +// If integer is limited by a fixed set of values, *num_valid_values will be >0 and *out_integer_array is set. +LIBHEIF_API +struct heif_error heif_encoder_parameter_get_valid_integer_values(const struct heif_encoder_parameter*, + int* have_minimum, int* have_maximum, + int* minimum, int* maximum, + int* num_valid_values, + const int** out_integer_array); + +LIBHEIF_API +struct heif_error heif_encoder_parameter_get_valid_string_values(const struct heif_encoder_parameter*, + const char* const** out_stringarray); + + +LIBHEIF_API +struct heif_error heif_encoder_set_parameter_integer(struct heif_encoder*, + const char* parameter_name, + int value); + +LIBHEIF_API +struct heif_error heif_encoder_get_parameter_integer(struct heif_encoder*, + const char* parameter_name, + int* value); + +// TODO: name should be changed to heif_encoder_get_valid_integer_parameter_range +LIBHEIF_API // DEPRECATED. +struct heif_error heif_encoder_parameter_integer_valid_range(struct heif_encoder*, + const char* parameter_name, + int* have_minimum_maximum, + int* minimum, int* maximum); + +LIBHEIF_API +struct heif_error heif_encoder_set_parameter_boolean(struct heif_encoder*, + const char* parameter_name, + int value); + +LIBHEIF_API +struct heif_error heif_encoder_get_parameter_boolean(struct heif_encoder*, + const char* parameter_name, + int* value); + +LIBHEIF_API +struct heif_error heif_encoder_set_parameter_string(struct heif_encoder*, + const char* parameter_name, + const char* value); + +LIBHEIF_API +struct heif_error heif_encoder_get_parameter_string(struct heif_encoder*, + const char* parameter_name, + char* value, int value_size); + +// returns a NULL-terminated list of valid strings or NULL if all values are allowed +LIBHEIF_API +struct heif_error heif_encoder_parameter_string_valid_values(struct heif_encoder*, + const char* parameter_name, + const char* const** out_stringarray); + +LIBHEIF_API +struct heif_error heif_encoder_parameter_integer_valid_values(struct heif_encoder*, + const char* parameter_name, + int* have_minimum, int* have_maximum, + int* minimum, int* maximum, + int* num_valid_values, + const int** out_integer_array); + +// Set a parameter of any type to the string value. +// Integer values are parsed from the string. +// Boolean values can be "true"/"false"/"1"/"0" +// +// x265 encoder specific note: +// When using the x265 encoder, you may pass any of its parameters by +// prefixing the parameter name with 'x265:'. Hence, to set the 'ctu' parameter, +// you will have to set 'x265:ctu' in libheif. +// Note that there is no checking for valid parameters when using the prefix. +LIBHEIF_API +struct heif_error heif_encoder_set_parameter(struct heif_encoder*, + const char* parameter_name, + const char* value); + +// Get the current value of a parameter of any type as a human readable string. +// The returned string is compatible with heif_encoder_set_parameter(). +LIBHEIF_API +struct heif_error heif_encoder_get_parameter(struct heif_encoder*, + const char* parameter_name, + char* value_ptr, int value_size); + +// Query whether a specific parameter has a default value. +LIBHEIF_API +int heif_encoder_has_default(struct heif_encoder*, + const char* parameter_name); + + +struct heif_encoding_options +{ + uint8_t version; + + // version 1 options + + uint8_t save_alpha_channel; // default: true + + // version 2 options + + // Crops heif images with a grid wrapper instead of a 'clap' transform. + // Results in slightly larger file size. + // Default: on. + uint8_t macOS_compatibility_workaround; + + // version 3 options + + uint8_t save_two_colr_boxes_when_ICC_and_nclx_available; // default: false + + // version 4 options + + // Set this to the NCLX parameters to be used in the output image or set to NULL + // when the same parameters as in the input image should be used. + struct heif_color_profile_nclx* output_nclx_profile; + + uint8_t macOS_compatibility_workaround_no_nclx_profile; +}; + +LIBHEIF_API +struct heif_encoding_options* heif_encoding_options_alloc(); + +LIBHEIF_API +void heif_encoding_options_free(struct heif_encoding_options*); + + +// Compress the input image. +// Returns a handle to the coded image in 'out_image_handle' unless out_image_handle = NULL. +// 'options' should be NULL for now. +// The first image added to the context is also automatically set the primary image, but +// you can change the primary image later with heif_context_set_primary_image(). +LIBHEIF_API +struct heif_error heif_context_encode_image(struct heif_context*, + const struct heif_image* image, + struct heif_encoder* encoder, + const struct heif_encoding_options* options, + struct heif_image_handle** out_image_handle); + +LIBHEIF_API +struct heif_error heif_context_set_primary_image(struct heif_context*, + struct heif_image_handle* image_handle); + +// Encode the 'image' as a scaled down thumbnail image. +// The image is scaled down to fit into a square area of width 'bbox_size'. +// If the input image is already so small that it fits into this bounding box, no thumbnail +// image is encoded and NULL is returned in 'out_thumb_image_handle'. +// No error is returned in this case. +// The encoded thumbnail is automatically assigned to the 'master_image_handle'. Hence, you +// do not have to call heif_context_assign_thumbnail(). +LIBHEIF_API +struct heif_error heif_context_encode_thumbnail(struct heif_context*, + const struct heif_image* image, + const struct heif_image_handle* master_image_handle, + struct heif_encoder* encoder, + const struct heif_encoding_options* options, + int bbox_size, + struct heif_image_handle** out_thumb_image_handle); + +// Assign 'thumbnail_image' as the thumbnail image of 'master_image'. +LIBHEIF_API +struct heif_error heif_context_assign_thumbnail(struct heif_context*, + const struct heif_image_handle* master_image, + const struct heif_image_handle* thumbnail_image); + +// Add EXIF metadata to an image. +LIBHEIF_API +struct heif_error heif_context_add_exif_metadata(struct heif_context*, + const struct heif_image_handle* image_handle, + const void* data, int size); + +// Add XMP metadata to an image. +LIBHEIF_API +struct heif_error heif_context_add_XMP_metadata(struct heif_context*, + const struct heif_image_handle* image_handle, + const void* data, int size); + +// Add generic, proprietary metadata to an image. You have to specify an 'item_type' that will +// identify your metadata. 'content_type' can be an additional type, or it can be NULL. +// For example, this function can be used to add IPTC metadata (IIM stream, not XMP) to an image. +// Even not standard, we propose to store IPTC data with item type="iptc", content_type=NULL. +LIBHEIF_API +struct heif_error heif_context_add_generic_metadata(struct heif_context* ctx, + const struct heif_image_handle* image_handle, + const void* data, int size, + const char* item_type, const char* content_type); + +// --- heif_image allocation + +// Create a new image of the specified resolution and colorspace. +// Note: no memory for the actual image data is reserved yet. You have to use +// heif_image_add_plane() to add the image planes required by your colorspace/chroma. +LIBHEIF_API +struct heif_error heif_image_create(int width, int height, + enum heif_colorspace colorspace, + enum heif_chroma chroma, + struct heif_image** out_image); + +// The indicated bit_depth corresponds to the bit depth per channel. +// I.e. for interleaved formats like RRGGBB, the bit_depth would be, e.g., 10 bit instead +// of 30 bits or 3*16=48 bits. +// For backward compatibility, one can also specify 24bits for RGB and 32bits for RGBA, +// instead of the preferred 8 bits. +LIBHEIF_API +struct heif_error heif_image_add_plane(struct heif_image* image, + enum heif_channel channel, + int width, int height, int bit_depth); + +// Signal that the image is premultiplied by the alpha pixel values. +LIBHEIF_API +void heif_image_set_premultiplied_alpha(struct heif_image* image, + int is_premultiplied_alpha); + +LIBHEIF_API +int heif_image_is_premultiplied_alpha(struct heif_image* image); + + + +// --- register plugins + +struct heif_decoder_plugin; +struct heif_encoder_plugin; + +// DEPRECATED. Use heif_register_decoder_plugin(const struct heif_decoder_plugin*) instead. +LIBHEIF_API +struct heif_error heif_register_decoder(struct heif_context* heif, const struct heif_decoder_plugin*); + +LIBHEIF_API +struct heif_error heif_register_decoder_plugin(const struct heif_decoder_plugin*); + +LIBHEIF_API +struct heif_error heif_register_encoder_plugin(const struct heif_encoder_plugin*); + +// DEPRECATED, typo in function name +LIBHEIF_API +int heif_encoder_descriptor_supportes_lossy_compression(const struct heif_encoder_descriptor*); + +// DEPRECATED, typo in function name +LIBHEIF_API +int heif_encoder_descriptor_supportes_lossless_compression(const struct heif_encoder_descriptor*); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_cxx.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_cxx.h new file mode 100644 index 0000000..7a1665e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_cxx.h @@ -0,0 +1,1338 @@ +/* + * C++ interface to libheif + * Copyright (c) 2018 struktur AG, Dirk Farin + * + * This file is part of libheif. + * + * libheif is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * libheif 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libheif. If not, see . + */ + +#ifndef LIBHEIF_HEIF_CXX_H +#define LIBHEIF_HEIF_CXX_H + +#include +#include +#include + +extern "C" { +#include +} + + +namespace heif { + + class Error + { + public: + Error() + { + m_code = heif_error_Ok; + m_subcode = heif_suberror_Unspecified; + m_message = "Ok"; + } + + Error(const heif_error& err) + { + m_code = err.code; + m_subcode = err.subcode; + m_message = err.message; + } + + Error(heif_error_code code, heif_suberror_code subcode, const std::string& msg) + { + m_code = code; + m_subcode = subcode; + m_message = msg; + } + + const std::string& get_message() const + { return m_message; } + + heif_error_code get_code() const + { return m_code; } + + heif_suberror_code get_subcode() const + { return m_subcode; } + + operator bool() const + { return m_code != heif_error_Ok; } + + private: + heif_error_code m_code; + heif_suberror_code m_subcode; + std::string m_message; + }; + + + class ImageHandle; + + class Image; + + class Encoder; + + class EncoderParameter; + + class EncoderDescriptor; + + + class Context + { + public: + Context(); + + class ReadingOptions + { + }; + + // throws Error + void read_from_file(const std::string& filename, const ReadingOptions& opts = ReadingOptions()); + + // DEPRECATED. Use read_from_memory_without_copy() instead. + // throws Error + void read_from_memory(const void* mem, size_t size, const ReadingOptions& opts = ReadingOptions()); + + // throws Error + void read_from_memory_without_copy(const void* mem, size_t size, const ReadingOptions& opts = ReadingOptions()); + + class Reader + { + public: + virtual ~Reader() = default; + + virtual int64_t get_position() const = 0; + + virtual int read(void* data, size_t size) = 0; + + virtual int seek(int64_t position) = 0; + + virtual heif_reader_grow_status wait_for_file_size(int64_t target_size) = 0; + }; + + // throws Error + void read_from_reader(Reader&, const ReadingOptions& opts = ReadingOptions()); + + int get_number_of_top_level_images() const noexcept; + + bool is_top_level_image_ID(heif_item_id id) const noexcept; + + std::vector get_list_of_top_level_image_IDs() const noexcept; + + // throws Error + heif_item_id get_primary_image_ID() const; + + // throws Error + ImageHandle get_primary_image_handle() const; + + ImageHandle get_image_handle(heif_item_id id) const; + + + class EncodingOptions : public heif_encoding_options + { + public: + EncodingOptions(); + }; + + // throws Error + ImageHandle encode_image(const Image& img, Encoder& encoder, + const EncodingOptions& options = EncodingOptions()); + + // throws Error + void set_primary_image(ImageHandle& new_primary_image_handle); + + // throws Error + ImageHandle encode_thumbnail(const Image& image, + const ImageHandle& master_image, + Encoder& encoder, + const EncodingOptions&, + int bbox_size); + + // throws Error + void assign_thumbnail(const ImageHandle& thumbnail_image, + const ImageHandle& master_image); + + // throws Error + void add_exif_metadata(const ImageHandle& master_image, + const void* data, int size); + + // throws Error + void add_XMP_metadata(const ImageHandle& master_image, + const void* data, int size); + + class Writer + { + public: + virtual ~Writer() = default; + + virtual heif_error write(const void* data, size_t size) = 0; + }; + + // throws Error + void write(Writer&); + + // throws Error + void write_to_file(const std::string& filename) const; + + private: + std::shared_ptr m_context; + + friend struct ::heif_error heif_writer_trampoline_write(struct heif_context* ctx, + const void* data, + size_t size, + void* userdata); + + //static Context wrap_without_releasing(heif_context*); // internal use in friend function only + }; + + + class ImageHandle + { + public: + ImageHandle() = default; + + ImageHandle(heif_image_handle* handle); + + bool empty() const noexcept + { return !m_image_handle; } + + bool is_primary_image() const noexcept; + + int get_width() const noexcept; + + int get_height() const noexcept; + + bool has_alpha_channel() const noexcept; + + bool is_premultiplied_alpha() const noexcept; + + int get_luma_bits_per_pixel() const noexcept; + + int get_chroma_bits_per_pixel() const noexcept; + + int get_ispe_width() const noexcept; + + int get_ispe_height() const noexcept; + + // ------------------------- depth images ------------------------- + + // TODO + + // ------------------------- thumbnails ------------------------- + + int get_number_of_thumbnails() const noexcept; + + std::vector get_list_of_thumbnail_IDs() const noexcept; + + // throws Error + ImageHandle get_thumbnail(heif_item_id id); + + // ------------------------- metadata (Exif / XMP) ------------------------- + + // Can optionally be filtered by type ("Exif" / "XMP") + std::vector get_list_of_metadata_block_IDs(const char* type_filter = nullptr) const noexcept; + + std::string get_metadata_type(heif_item_id metadata_id) const noexcept; + + std::string get_metadata_content_type(heif_item_id metadata_id) const noexcept; + + // throws error + std::vector get_metadata(heif_item_id) const; + + + class DecodingOptions + { + }; + + // throws Error + Image decode_image(heif_colorspace colorspace, heif_chroma chroma, + const DecodingOptions& options = DecodingOptions()); + + + heif_image_handle* get_raw_image_handle() noexcept + { return m_image_handle.get(); } + + const heif_image_handle* get_raw_image_handle() const noexcept + { return m_image_handle.get(); } + + private: + std::shared_ptr m_image_handle; + }; + + + class ColorProfile_nclx + { + public: + ColorProfile_nclx(); + + ~ColorProfile_nclx(); + + heif_color_primaries get_color_primaries() const; + + heif_transfer_characteristics get_transfer_characteristics() const; + + heif_matrix_coefficients get_matrix_coefficients() const; + + bool is_full_range() const; + + void set_color_primaties(heif_color_primaries cp); + + void set_transfer_characteristics(heif_transfer_characteristics tc); + + void set_matrix_coefficients(heif_matrix_coefficients mc); + + void set_full_range_flag(bool is_full_range); + + private: + ColorProfile_nclx(heif_color_profile_nclx* nclx) + { mProfile = nclx; } + + heif_color_profile_nclx* mProfile; + + friend class Image; + }; + + + class Image + { + public: + Image() = default; + + Image(heif_image* image); + + + // throws Error + void create(int width, int height, + enum heif_colorspace colorspace, + enum heif_chroma chroma); + + // throws Error + void add_plane(enum heif_channel channel, + int width, int height, int bit_depth); + + heif_colorspace get_colorspace() const noexcept; + + heif_chroma get_chroma_format() const noexcept; + + int get_width(enum heif_channel channel) const noexcept; + + int get_height(enum heif_channel channel) const noexcept; + + int get_bits_per_pixel(enum heif_channel channel) const noexcept; + + int get_bits_per_pixel_range(enum heif_channel channel) const noexcept; + + bool has_channel(enum heif_channel channel) const noexcept; + + const uint8_t* get_plane(enum heif_channel channel, int* out_stride) const noexcept; + + uint8_t* get_plane(enum heif_channel channel, int* out_stride) noexcept; + + // throws Error + void set_nclx_color_profile(const ColorProfile_nclx&); + + // throws Error + ColorProfile_nclx get_nclx_color_profile() const; + + heif_color_profile_type get_color_profile_type() const; + + // throws Error + std::vector get_raw_color_profile() const; + + void set_raw_color_profile(heif_color_profile_type type, + const std::vector& data); + + bool is_premultiplied_alpha() const noexcept; + + void set_premultiplied_alpha(bool is_premultiplied_alpha) noexcept; + + class ScalingOptions + { + }; + + // throws Error + Image scale_image(int width, int height, + const ScalingOptions& options = ScalingOptions()) const; + + private: + std::shared_ptr m_image; + + friend class Context; + }; + + + class EncoderDescriptor + { + public: + static std::vector + get_encoder_descriptors(enum heif_compression_format format_filter, + const char* name_filter) noexcept; + + std::string get_name() const noexcept; + + std::string get_id_name() const noexcept; + + enum heif_compression_format get_compression_format() const noexcept; + + bool supportes_lossy_compression() const noexcept; + + bool supportes_lossless_compression() const noexcept; + + + // throws Error + Encoder get_encoder() const; + + + private: + EncoderDescriptor(const struct heif_encoder_descriptor* descr) : m_descriptor(descr) + {} + + const struct heif_encoder_descriptor* m_descriptor = nullptr; + }; + + + class EncoderParameter + { + public: + std::string get_name() const noexcept; + + enum heif_encoder_parameter_type get_type() const noexcept; + + bool is_integer() const noexcept; + + // Returns 'true' if the integer range is limited. + bool get_valid_integer_range(int& out_minimum, int& out_maximum); + + bool is_boolean() const noexcept; + + bool is_string() const noexcept; + + std::vector get_valid_string_values() const; + + private: + EncoderParameter(const heif_encoder_parameter*); + + const struct heif_encoder_parameter* m_parameter; + + friend class Encoder; + }; + + + class Encoder + { + public: + // throws Error + Encoder(enum heif_compression_format format); + + // throws Error + void set_lossy_quality(int quality); + + // throws Error + void set_lossless(bool enable_lossless); + + std::vector list_parameters() const noexcept; + + void set_integer_parameter(const std::string& parameter_name, int value); + + int get_integer_parameter(const std::string& parameter_name) const; + + void set_boolean_parameter(const std::string& parameter_name, bool value); + + bool get_boolean_parameter(const std::string& parameter_name) const; + + void set_string_parameter(const std::string& parameter_name, const std::string& value); + + std::string get_string_parameter(const std::string& parameter_name) const; + + void set_parameter(const std::string& parameter_name, const std::string& parameter_value); + + std::string get_parameter(const std::string& parameter_name) const; + + private: + Encoder(struct heif_encoder*) noexcept; + + std::shared_ptr m_encoder; + + friend class EncoderDescriptor; + + friend class Context; + }; + + + // ========================================================================================== + // IMPLEMENTATION + // ========================================================================================== + + inline Context::Context() + { + heif_context* ctx = heif_context_alloc(); + m_context = std::shared_ptr(ctx, + [](heif_context* c) { heif_context_free(c); }); + } + + inline void Context::read_from_file(const std::string& filename, const ReadingOptions& /*opts*/) + { + Error err = Error(heif_context_read_from_file(m_context.get(), filename.c_str(), NULL)); + if (err) { + throw err; + } + } + + inline void Context::read_from_memory(const void* mem, size_t size, const ReadingOptions& /*opts*/) + { + Error err = Error(heif_context_read_from_memory(m_context.get(), mem, size, NULL)); + if (err) { + throw err; + } + } + + inline void Context::read_from_memory_without_copy(const void* mem, size_t size, const ReadingOptions& /*opts*/) + { + Error err = Error(heif_context_read_from_memory_without_copy(m_context.get(), mem, size, NULL)); + if (err) { + throw err; + } + } + + + inline int64_t heif_reader_trampoline_get_position(void* userdata) + { + Context::Reader* reader = (Context::Reader*) userdata; + return reader->get_position(); + } + + inline int heif_reader_trampoline_read(void* data, size_t size, void* userdata) + { + Context::Reader* reader = (Context::Reader*) userdata; + return reader->read(data, size); + } + + inline int heif_reader_trampoline_seek(int64_t position, void* userdata) + { + Context::Reader* reader = (Context::Reader*) userdata; + return reader->seek(position); + } + + inline heif_reader_grow_status heif_reader_trampoline_wait_for_file_size(int64_t target_size, void* userdata) + { + Context::Reader* reader = (Context::Reader*) userdata; + return reader->wait_for_file_size(target_size); + } + + + static struct heif_reader heif_reader_trampoline = + { + 1, + heif_reader_trampoline_get_position, + heif_reader_trampoline_read, + heif_reader_trampoline_seek, + heif_reader_trampoline_wait_for_file_size + }; + + inline void Context::read_from_reader(Reader& reader, const ReadingOptions& /*opts*/) + { + Error err = Error(heif_context_read_from_reader(m_context.get(), &heif_reader_trampoline, + &reader, NULL)); + if (err) { + throw err; + } + } + + + inline int Context::get_number_of_top_level_images() const noexcept + { + return heif_context_get_number_of_top_level_images(m_context.get()); + } + + inline bool Context::is_top_level_image_ID(heif_item_id id) const noexcept + { + return heif_context_is_top_level_image_ID(m_context.get(), id); + } + + inline std::vector Context::get_list_of_top_level_image_IDs() const noexcept + { + int num = get_number_of_top_level_images(); + std::vector IDs(num); + heif_context_get_list_of_top_level_image_IDs(m_context.get(), IDs.data(), num); + return IDs; + } + + inline heif_item_id Context::get_primary_image_ID() const + { + heif_item_id id; + Error err = Error(heif_context_get_primary_image_ID(m_context.get(), &id)); + if (err) { + throw err; + } + return id; + } + + inline ImageHandle Context::get_primary_image_handle() const + { + heif_image_handle* handle; + Error err = Error(heif_context_get_primary_image_handle(m_context.get(), &handle)); + if (err) { + throw err; + } + + return ImageHandle(handle); + } + + inline ImageHandle Context::get_image_handle(heif_item_id id) const + { + struct heif_image_handle* handle; + Error err = Error(heif_context_get_image_handle(m_context.get(), id, &handle)); + if (err) { + throw err; + } + return ImageHandle(handle); + } + +#if 0 + inline Context Context::wrap_without_releasing(heif_context* ctx) { + Context context; + context.m_context = std::shared_ptr(ctx, + [] (heif_context*) { /* NOP */ }); + return context; + } +#endif + + inline struct ::heif_error heif_writer_trampoline_write(struct heif_context* ctx, + const void* data, + size_t size, + void* userdata) + { + Context::Writer* writer = (Context::Writer*) userdata; + + (void) ctx; + + //Context context = Context::wrap_without_releasing(ctx); + //return writer->write(context, data, size); + return writer->write(data, size); + } + + static struct heif_writer heif_writer_trampoline = + { + 1, + &heif_writer_trampoline_write + }; + + inline void Context::write(Writer& writer) + { + Error err = Error(heif_context_write(m_context.get(), &heif_writer_trampoline, &writer)); + if (err) { + throw err; + } + } + + inline void Context::write_to_file(const std::string& filename) const + { + Error err = Error(heif_context_write_to_file(m_context.get(), filename.c_str())); + if (err) { + throw err; + } + } + + + inline ImageHandle::ImageHandle(heif_image_handle* handle) + { + if (handle != nullptr) { + m_image_handle = std::shared_ptr(handle, + [](heif_image_handle* h) { heif_image_handle_release(h); }); + } + } + + inline bool ImageHandle::is_primary_image() const noexcept + { + return heif_image_handle_is_primary_image(m_image_handle.get()) != 0; + } + + inline int ImageHandle::get_width() const noexcept + { + return heif_image_handle_get_width(m_image_handle.get()); + } + + inline int ImageHandle::get_height() const noexcept + { + return heif_image_handle_get_height(m_image_handle.get()); + } + + inline bool ImageHandle::has_alpha_channel() const noexcept + { + return heif_image_handle_has_alpha_channel(m_image_handle.get()) != 0; + } + + inline bool ImageHandle::is_premultiplied_alpha() const noexcept + { + return heif_image_handle_is_premultiplied_alpha(m_image_handle.get()) != 0; + } + + inline int ImageHandle::get_luma_bits_per_pixel() const noexcept + { + return heif_image_handle_get_luma_bits_per_pixel(m_image_handle.get()); + } + + inline int ImageHandle::get_chroma_bits_per_pixel() const noexcept + { + return heif_image_handle_get_chroma_bits_per_pixel(m_image_handle.get()); + } + + inline int ImageHandle::get_ispe_width() const noexcept + { + return heif_image_handle_get_ispe_width(m_image_handle.get()); + } + + inline int ImageHandle::get_ispe_height() const noexcept + { + return heif_image_handle_get_ispe_height(m_image_handle.get()); + } + + // ------------------------- depth images ------------------------- + + // TODO + + // ------------------------- thumbnails ------------------------- + + inline int ImageHandle::get_number_of_thumbnails() const noexcept + { + return heif_image_handle_get_number_of_thumbnails(m_image_handle.get()); + } + + inline std::vector ImageHandle::get_list_of_thumbnail_IDs() const noexcept + { + int num = get_number_of_thumbnails(); + std::vector IDs(num); + heif_image_handle_get_list_of_thumbnail_IDs(m_image_handle.get(), IDs.data(), num); + return IDs; + } + + inline ImageHandle ImageHandle::get_thumbnail(heif_item_id id) + { + heif_image_handle* handle; + Error err = Error(heif_image_handle_get_thumbnail(m_image_handle.get(), id, &handle)); + if (err) { + throw err; + } + + return ImageHandle(handle); + } + + inline Image ImageHandle::decode_image(heif_colorspace colorspace, heif_chroma chroma, + const DecodingOptions& /*options*/) + { + heif_image* out_img; + Error err = Error(heif_decode_image(m_image_handle.get(), + &out_img, + colorspace, + chroma, + nullptr)); //const struct heif_decoding_options* options); + if (err) { + throw err; + } + + return Image(out_img); + } + + + inline std::vector ImageHandle::get_list_of_metadata_block_IDs(const char* type_filter) const noexcept + { + int nBlocks = heif_image_handle_get_number_of_metadata_blocks(m_image_handle.get(), + type_filter); + std::vector ids(nBlocks); + int n = heif_image_handle_get_list_of_metadata_block_IDs(m_image_handle.get(), + type_filter, + ids.data(), nBlocks); + (void) n; + //assert(n==nBlocks); + return ids; + } + + inline std::string ImageHandle::get_metadata_type(heif_item_id metadata_id) const noexcept + { + return heif_image_handle_get_metadata_type(m_image_handle.get(), metadata_id); + } + + inline std::string ImageHandle::get_metadata_content_type(heif_item_id metadata_id) const noexcept + { + return heif_image_handle_get_metadata_content_type(m_image_handle.get(), metadata_id); + } + + inline std::vector ImageHandle::get_metadata(heif_item_id metadata_id) const + { + size_t data_size = heif_image_handle_get_metadata_size(m_image_handle.get(), + metadata_id); + + std::vector data(data_size); + + Error err = Error(heif_image_handle_get_metadata(m_image_handle.get(), + metadata_id, + data.data())); + if (err) { + throw err; + } + + return data; + } + + + inline ColorProfile_nclx::ColorProfile_nclx() + { + mProfile = heif_nclx_color_profile_alloc(); + } + + inline ColorProfile_nclx::~ColorProfile_nclx() + { + heif_nclx_color_profile_free(mProfile); + } + + inline heif_color_primaries ColorProfile_nclx::get_color_primaries() const + { return mProfile->color_primaries; } + + inline heif_transfer_characteristics ColorProfile_nclx::get_transfer_characteristics() const + { return mProfile->transfer_characteristics; } + + inline heif_matrix_coefficients ColorProfile_nclx::get_matrix_coefficients() const + { return mProfile->matrix_coefficients; } + + inline bool ColorProfile_nclx::is_full_range() const + { return mProfile->full_range_flag; } + + inline void ColorProfile_nclx::set_color_primaties(heif_color_primaries cp) + { mProfile->color_primaries = cp; } + + inline void ColorProfile_nclx::set_transfer_characteristics(heif_transfer_characteristics tc) + { mProfile->transfer_characteristics = tc; } + + inline void ColorProfile_nclx::set_matrix_coefficients(heif_matrix_coefficients mc) + { mProfile->matrix_coefficients = mc; } + + inline void ColorProfile_nclx::set_full_range_flag(bool is_full_range) + { mProfile->full_range_flag = is_full_range; } + + + inline Image::Image(heif_image* image) + { + m_image = std::shared_ptr(image, + [](heif_image* h) { heif_image_release(h); }); + } + + + inline void Image::create(int width, int height, + enum heif_colorspace colorspace, + enum heif_chroma chroma) + { + heif_image* image; + Error err = Error(heif_image_create(width, height, colorspace, chroma, &image)); + if (err) { + m_image.reset(); + throw err; + } + else { + m_image = std::shared_ptr(image, + [](heif_image* h) { heif_image_release(h); }); + } + } + + inline void Image::add_plane(enum heif_channel channel, + int width, int height, int bit_depth) + { + Error err = Error(heif_image_add_plane(m_image.get(), channel, width, height, bit_depth)); + if (err) { + throw err; + } + } + + inline heif_colorspace Image::get_colorspace() const noexcept + { + return heif_image_get_colorspace(m_image.get()); + } + + inline heif_chroma Image::get_chroma_format() const noexcept + { + return heif_image_get_chroma_format(m_image.get()); + } + + inline int Image::get_width(enum heif_channel channel) const noexcept + { + return heif_image_get_width(m_image.get(), channel); + } + + inline int Image::get_height(enum heif_channel channel) const noexcept + { + return heif_image_get_height(m_image.get(), channel); + } + + inline int Image::get_bits_per_pixel(enum heif_channel channel) const noexcept + { + return heif_image_get_bits_per_pixel(m_image.get(), channel); + } + + inline int Image::get_bits_per_pixel_range(enum heif_channel channel) const noexcept + { + return heif_image_get_bits_per_pixel_range(m_image.get(), channel); + } + + inline bool Image::has_channel(enum heif_channel channel) const noexcept + { + return heif_image_has_channel(m_image.get(), channel); + } + + inline const uint8_t* Image::get_plane(enum heif_channel channel, int* out_stride) const noexcept + { + return heif_image_get_plane_readonly(m_image.get(), channel, out_stride); + } + + inline uint8_t* Image::get_plane(enum heif_channel channel, int* out_stride) noexcept + { + return heif_image_get_plane(m_image.get(), channel, out_stride); + } + + inline void Image::set_nclx_color_profile(const ColorProfile_nclx& nclx) + { + Error err = Error(heif_image_set_nclx_color_profile(m_image.get(), nclx.mProfile)); + if (err) { + throw err; + } + } + + // throws Error + inline ColorProfile_nclx Image::get_nclx_color_profile() const + { + heif_color_profile_nclx* nclx = nullptr; + Error err = Error(heif_image_get_nclx_color_profile(m_image.get(), &nclx)); + if (err) { + throw err; + } + + return ColorProfile_nclx(nclx); + } + + + inline heif_color_profile_type Image::get_color_profile_type() const + { + return heif_image_get_color_profile_type(m_image.get()); + } + + // throws Error + inline std::vector Image::get_raw_color_profile() const + { + auto size = heif_image_get_raw_color_profile_size(m_image.get()); + std::vector profile(size); + heif_image_get_raw_color_profile(m_image.get(), profile.data()); + return profile; + } + + inline void Image::set_raw_color_profile(heif_color_profile_type type, + const std::vector& data) + { + const char* profile_type = nullptr; + switch (type) { + case heif_color_profile_type_prof: + profile_type = "prof"; + break; + case heif_color_profile_type_rICC: + profile_type = "rICC"; + break; + default: + throw Error(heif_error_code::heif_error_Usage_error, + heif_suberror_Unspecified, + "invalid raw color profile type"); + break; + } + + Error err = Error(heif_image_set_raw_color_profile(m_image.get(), profile_type, + data.data(), data.size())); + if (err) { + throw err; + } + } + + inline bool Image::is_premultiplied_alpha() const noexcept + { + return heif_image_is_premultiplied_alpha(m_image.get()) != 0; + } + + inline void Image::set_premultiplied_alpha(bool is_premultiplied_alpha) noexcept + { + heif_image_set_premultiplied_alpha(m_image.get(), is_premultiplied_alpha); + } + + inline Image Image::scale_image(int width, int height, + const ScalingOptions&) const + { + heif_image* img; + Error err = Error(heif_image_scale_image(m_image.get(), &img, width, height, + nullptr)); // TODO: scaling options not defined yet + if (err) { + throw err; + } + + return Image(img); + } + + + inline std::vector + EncoderDescriptor::get_encoder_descriptors(enum heif_compression_format format_filter, + const char* name_filter) noexcept + { + int maxDescriptors = 10; + int nDescriptors; + for (;;) { + const struct heif_encoder_descriptor** descriptors; + descriptors = new const heif_encoder_descriptor* [maxDescriptors]; + + nDescriptors = heif_context_get_encoder_descriptors(nullptr, + format_filter, + name_filter, + descriptors, + maxDescriptors); + if (nDescriptors < maxDescriptors) { + std::vector outDescriptors; + outDescriptors.reserve(nDescriptors); + for (int i = 0; i < nDescriptors; i++) { + outDescriptors.push_back(EncoderDescriptor(descriptors[i])); + } + + delete[] descriptors; + + return outDescriptors; + } + else { + delete[] descriptors; + maxDescriptors *= 2; + } + } + } + + + inline std::string EncoderDescriptor::get_name() const noexcept + { + return heif_encoder_descriptor_get_name(m_descriptor); + } + + inline std::string EncoderDescriptor::get_id_name() const noexcept + { + return heif_encoder_descriptor_get_id_name(m_descriptor); + } + + inline enum heif_compression_format EncoderDescriptor::get_compression_format() const noexcept + { + return heif_encoder_descriptor_get_compression_format(m_descriptor); + } + + inline bool EncoderDescriptor::supportes_lossy_compression() const noexcept + { + return heif_encoder_descriptor_supportes_lossy_compression(m_descriptor); + } + + inline bool EncoderDescriptor::supportes_lossless_compression() const noexcept + { + return heif_encoder_descriptor_supportes_lossless_compression(m_descriptor); + } + + inline Encoder EncoderDescriptor::get_encoder() const + { + heif_encoder* encoder; + Error err = Error(heif_context_get_encoder(nullptr, m_descriptor, &encoder)); + if (err) { + throw err; + } + + return Encoder(encoder); + } + + + inline Encoder::Encoder(enum heif_compression_format format) + { + heif_encoder* encoder; + Error err = Error(heif_context_get_encoder_for_format(nullptr, format, &encoder)); + if (err) { + throw err; + } + + m_encoder = std::shared_ptr(encoder, + [](heif_encoder* e) { heif_encoder_release(e); }); + } + + inline Encoder::Encoder(struct heif_encoder* encoder) noexcept + { + m_encoder = std::shared_ptr(encoder, + [](heif_encoder* e) { heif_encoder_release(e); }); + } + + + inline EncoderParameter::EncoderParameter(const heif_encoder_parameter* param) + : m_parameter(param) + { + } + + inline std::string EncoderParameter::get_name() const noexcept + { + return heif_encoder_parameter_get_name(m_parameter); + } + + inline enum heif_encoder_parameter_type EncoderParameter::get_type() const noexcept + { + return heif_encoder_parameter_get_type(m_parameter); + } + + inline bool EncoderParameter::is_integer() const noexcept + { + return get_type() == heif_encoder_parameter_type_integer; + } + + inline bool EncoderParameter::get_valid_integer_range(int& out_minimum, int& out_maximum) + { + int have_minimum_maximum; + Error err = Error(heif_encoder_parameter_get_valid_integer_range(m_parameter, + &have_minimum_maximum, + &out_minimum, &out_maximum)); + if (err) { + throw err; + } + + return have_minimum_maximum; + } + + inline bool EncoderParameter::is_boolean() const noexcept + { + return get_type() == heif_encoder_parameter_type_boolean; + } + + inline bool EncoderParameter::is_string() const noexcept + { + return get_type() == heif_encoder_parameter_type_string; + } + + inline std::vector EncoderParameter::get_valid_string_values() const + { + const char* const* stringarray; + Error err = Error(heif_encoder_parameter_get_valid_string_values(m_parameter, + &stringarray)); + if (err) { + throw err; + } + + std::vector values; + for (int i = 0; stringarray[i]; i++) { + values.push_back(stringarray[i]); + } + + return values; + } + + inline std::vector Encoder::list_parameters() const noexcept + { + std::vector parameters; + + for (const struct heif_encoder_parameter* const* params = heif_encoder_list_parameters(m_encoder.get()); + *params; + params++) { + parameters.push_back(EncoderParameter(*params)); + } + + return parameters; + } + + + inline void Encoder::set_lossy_quality(int quality) + { + Error err = Error(heif_encoder_set_lossy_quality(m_encoder.get(), quality)); + if (err) { + throw err; + } + } + + inline void Encoder::set_lossless(bool enable_lossless) + { + Error err = Error(heif_encoder_set_lossless(m_encoder.get(), enable_lossless)); + if (err) { + throw err; + } + } + + inline void Encoder::set_integer_parameter(const std::string& parameter_name, int value) + { + Error err = Error(heif_encoder_set_parameter_integer(m_encoder.get(), parameter_name.c_str(), value)); + if (err) { + throw err; + } + } + + inline int Encoder::get_integer_parameter(const std::string& parameter_name) const + { + int value; + Error err = Error(heif_encoder_get_parameter_integer(m_encoder.get(), parameter_name.c_str(), &value)); + if (err) { + throw err; + } + return value; + } + + inline void Encoder::set_boolean_parameter(const std::string& parameter_name, bool value) + { + Error err = Error(heif_encoder_set_parameter_boolean(m_encoder.get(), parameter_name.c_str(), value)); + if (err) { + throw err; + } + } + + inline bool Encoder::get_boolean_parameter(const std::string& parameter_name) const + { + int value; + Error err = Error(heif_encoder_get_parameter_boolean(m_encoder.get(), parameter_name.c_str(), &value)); + if (err) { + throw err; + } + return value; + } + + inline void Encoder::set_string_parameter(const std::string& parameter_name, const std::string& value) + { + Error err = Error(heif_encoder_set_parameter_string(m_encoder.get(), parameter_name.c_str(), value.c_str())); + if (err) { + throw err; + } + } + + inline std::string Encoder::get_string_parameter(const std::string& parameter_name) const + { + const int max_size = 250; + char value[max_size]; + Error err = Error(heif_encoder_get_parameter_string(m_encoder.get(), parameter_name.c_str(), + value, max_size)); + if (err) { + throw err; + } + return value; + } + + inline void Encoder::set_parameter(const std::string& parameter_name, const std::string& parameter_value) + { + Error err = Error(heif_encoder_set_parameter(m_encoder.get(), parameter_name.c_str(), + parameter_value.c_str())); + if (err) { + throw err; + } + } + + inline std::string Encoder::get_parameter(const std::string& parameter_name) const + { + const int max_size = 250; + char value[max_size]; + Error err = Error(heif_encoder_get_parameter(m_encoder.get(), parameter_name.c_str(), + value, max_size)); + if (err) { + throw err; + } + return value; + } + + inline void Context::set_primary_image(ImageHandle& new_primary_image_handle) + { + Error err = Error(heif_context_set_primary_image(m_context.get(), + new_primary_image_handle.get_raw_image_handle())); + if (err) { + throw err; + } + } + + + inline Context::EncodingOptions::EncodingOptions() + { + // TODO: this is a bit hacky. It would be better to have an API function to set + // the options to default values. But I do not see any reason for that apart from + // this use-case. + + struct heif_encoding_options* default_options = heif_encoding_options_alloc(); + *static_cast(this) = *default_options; // copy over all options + heif_encoding_options_free(default_options); + } + + + inline ImageHandle Context::encode_image(const Image& img, Encoder& encoder, + const EncodingOptions& options) + { + struct heif_image_handle* image_handle; + + Error err = Error(heif_context_encode_image(m_context.get(), + img.m_image.get(), + encoder.m_encoder.get(), + &options, + &image_handle)); + if (err) { + throw err; + } + + return ImageHandle(image_handle); + } + + + inline ImageHandle Context::encode_thumbnail(const Image& image, + const ImageHandle& master_image_handle, + Encoder& encoder, + const EncodingOptions& options, + int bbox_size) + { + struct heif_image_handle* thumb_image_handle; + + Error err = Error(heif_context_encode_thumbnail(m_context.get(), + image.m_image.get(), + master_image_handle.get_raw_image_handle(), + encoder.m_encoder.get(), + &options, + bbox_size, + &thumb_image_handle)); + if (err) { + throw err; + } + + return ImageHandle(thumb_image_handle); + } + + + inline void Context::assign_thumbnail(const ImageHandle& thumbnail_image, + const ImageHandle& master_image) + { + Error err = Error(heif_context_assign_thumbnail(m_context.get(), + thumbnail_image.get_raw_image_handle(), + master_image.get_raw_image_handle())); + if (err) { + throw err; + } + } + + inline void Context::add_exif_metadata(const ImageHandle& master_image, + const void* data, int size) + { + Error err = Error(heif_context_add_exif_metadata(m_context.get(), + master_image.get_raw_image_handle(), + data, size)); + if (err) { + throw err; + } + } + + inline void Context::add_XMP_metadata(const ImageHandle& master_image, + const void* data, int size) + { + Error err = Error(heif_context_add_XMP_metadata(m_context.get(), + master_image.get_raw_image_handle(), + data, size)); + if (err) { + throw err; + } + } +} + + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_plugin.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_plugin.h new file mode 100644 index 0000000..f7a4fde --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_plugin.h @@ -0,0 +1,298 @@ +/* + * HEIF codec. + * Copyright (c) 2017 struktur AG, Dirk Farin + * + * This file is part of libheif. + * + * libheif is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * libheif 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libheif. If not, see . + */ + +#ifndef LIBHEIF_HEIF_PLUGIN_H +#define LIBHEIF_HEIF_PLUGIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + + +// ==================================================================================================== +// This file is for codec plugin developers only. +// ==================================================================================================== + +// API versions table +// +// release decoder encoder enc.params +// ----------------------------------------- +// 1.0 1 N/A N/A +// 1.1 1 1 1 +// 1.4 1 1 2 +// 1.8 1 2 2 +// 1.13 2 3 2 + + +// ==================================================================================================== +// Decoder plugin API +// In order to decode images in other formats than HEVC, additional compression codecs can be +// added as plugins. A plugin has to implement the functions specified in heif_decoder_plugin +// and the plugin has to be registered to the libheif library using heif_register_decoder(). + +struct heif_decoder_plugin +{ + // API version supported by this plugin (see table above for supported versions) + int plugin_api_version; + + + // --- version 1 functions --- + + // Human-readable name of the plugin + const char* (* get_plugin_name)(); + + // Global plugin initialization (may be NULL) + void (* init_plugin)(); + + // Global plugin deinitialization (may be NULL) + void (* deinit_plugin)(); + + // Query whether the plugin supports decoding of the given format + // Result is a priority value. The plugin with the largest value wins. + // Default priority is 100. + int (* does_support_format)(enum heif_compression_format format); + + // Create a new decoder context for decoding an image + struct heif_error (* new_decoder)(void** decoder); + + // Free the decoder context (heif_image can still be used after destruction) + void (* free_decoder)(void* decoder); + + // Push more data into the decoder. This can be called multiple times. + // This may not be called after any decode_*() function has been called. + struct heif_error (* push_data)(void* decoder, const void* data, size_t size); + + + // --- After pushing the data into the decoder, the decode functions may be called only once. + + struct heif_error (* decode_image)(void* decoder, struct heif_image** out_img); + + + // --- version 2 functions will follow below ... --- + + void (*set_strict_decoding)(void* decoder, int flag); + + // If not NULL, this can provide a specialized function to convert YCbCr to sRGB, because + // only the codec itself knows how to interpret the chroma samples and their locations. + /* + struct heif_error (*convert_YCbCr_to_sRGB)(void* decoder, + struct heif_image* in_YCbCr_img, + struct heif_image** out_sRGB_img); + + */ + + // Reset decoder, such that we can feed in new data for another image. + // void (*reset_image)(void* decoder); +}; + + +enum heif_encoded_data_type +{ + heif_encoded_data_type_HEVC_header = 1, + heif_encoded_data_type_HEVC_image = 2, + heif_encoded_data_type_HEVC_depth_SEI = 3 +}; + + +// Specifies the class of the input image content. +// The encoder may want to encode different classes with different parameters +// (e.g. always encode alpha lossless) +enum heif_image_input_class +{ + heif_image_input_class_normal = 1, + heif_image_input_class_alpha = 2, + heif_image_input_class_depth = 3, + heif_image_input_class_thumbnail = 4 +}; + + +struct heif_encoder_plugin +{ + // API version supported by this plugin (see table above for supported versions) + int plugin_api_version; + + + // --- version 1 functions --- + + // The compression format generated by this plugin. + enum heif_compression_format compression_format; + + // Short name of the encoder that can be used as command line parameter when selecting an encoder. + // Hence, it should stay stable and not contain any version numbers that will change. + const char* id_name; + + // Default priority is 100. + int priority; + + + // Feature support + int supports_lossy_compression; + int supports_lossless_compression; + + + // Human-readable name of the plugin + const char* (* get_plugin_name)(); + + // Global plugin initialization (may be NULL) + void (* init_plugin)(); + + // Global plugin cleanup (may be NULL). + // Free data that was allocated in init_plugin() + void (* cleanup_plugin)(); + + // Create a new decoder context for decoding an image + struct heif_error (* new_encoder)(void** encoder); + + // Free the decoder context (heif_image can still be used after destruction) + void (* free_encoder)(void* encoder); + + struct heif_error (* set_parameter_quality)(void* encoder, int quality); + + struct heif_error (* get_parameter_quality)(void* encoder, int* quality); + + struct heif_error (* set_parameter_lossless)(void* encoder, int lossless); + + struct heif_error (* get_parameter_lossless)(void* encoder, int* lossless); + + struct heif_error (* set_parameter_logging_level)(void* encoder, int logging); + + struct heif_error (* get_parameter_logging_level)(void* encoder, int* logging); + + const struct heif_encoder_parameter** (* list_parameters)(void* encoder); + + struct heif_error (* set_parameter_integer)(void* encoder, const char* name, int value); + + struct heif_error (* get_parameter_integer)(void* encoder, const char* name, int* value); + + struct heif_error (* set_parameter_boolean)(void* encoder, const char* name, int value); + + struct heif_error (* get_parameter_boolean)(void* encoder, const char* name, int* value); + + struct heif_error (* set_parameter_string)(void* encoder, const char* name, const char* value); + + struct heif_error (* get_parameter_string)(void* encoder, const char* name, char* value, int value_size); + + // Replace the input colorspace/chroma with the one that is supported by the encoder and that + // comes as close to the input colorspace/chroma as possible. + void (* query_input_colorspace)(enum heif_colorspace* inout_colorspace, + enum heif_chroma* inout_chroma); + + // Encode an image. + // After pushing an image into the encoder, you should call get_compressed_data() to + // get compressed data until it returns a NULL data pointer. + struct heif_error (* encode_image)(void* encoder, const struct heif_image* image, + enum heif_image_input_class image_class); + + // Get a packet of decoded data. The data format depends on the codec. + // For HEVC, each packet shall contain exactly one NAL, starting with the NAL header without startcode. + struct heif_error (* get_compressed_data)(void* encoder, uint8_t** data, int* size, + enum heif_encoded_data_type* type); + + + // --- version 2 --- + + void (* query_input_colorspace2)(void* encoder, + enum heif_colorspace* inout_colorspace, + enum heif_chroma* inout_chroma); + + // --- version 3 --- + + // The encoded image size may be different from the input frame size, e.g. because + // of required rounding, or a required minimum size. Use this function to return + // the encoded size for a given input image size. + void (* query_encoded_size)(void* encoder, uint32_t input_width, uint32_t input_height, + uint32_t* encoded_width, uint32_t* encoded_height); + + // --- version 4 functions will follow below ... --- +}; + + +// Names for standard parameters. These should only be used by the encoder plugins. +#define heif_encoder_parameter_name_quality "quality" +#define heif_encoder_parameter_name_lossless "lossless" + +// For use only by the encoder plugins. +// Application programs should use the access functions. +// NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding) +struct heif_encoder_parameter +{ + int version; // current version: 2 + + // --- version 1 fields --- + + const char* name; + enum heif_encoder_parameter_type type; + + union + { + struct + { + int default_value; + + uint8_t have_minimum_maximum; // bool + int minimum; + int maximum; + + int* valid_values; + int num_valid_values; + } integer; + + struct + { + const char* default_value; + + const char* const* valid_values; + } string; // NOLINT + + struct + { + int default_value; + } boolean; + }; + + // --- version 2 fields + + int has_default; +}; + + +extern struct heif_error heif_error_ok; +extern struct heif_error heif_error_unsupported_parameter; +extern struct heif_error heif_error_invalid_parameter_value; + +#define HEIF_WARN_OR_FAIL(strict, image, cmd, cleanupBlock) \ +{ struct heif_error e = cmd; \ + if (e.code != heif_error_Ok) { \ + if (strict) { \ + cleanupBlock \ + return e; \ + } \ + else { \ + heif_image_add_decoding_warning(image, e); \ + } \ + } \ +} +#ifdef __cplusplus +} +#endif + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_version.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_version.h new file mode 100644 index 0000000..68b11ee --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libheif/heif_version.h @@ -0,0 +1,36 @@ +/* + * HEIF codec. + * Copyright (c) 2017 struktur AG, Dirk Farin + * + * This file is part of libheif. + * + * libheif is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * libheif 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libheif. If not, see . + */ + +/* heif_version.h + * + * This file was generated by autoconf when libheif was built. + * + * DO NOT EDIT THIS FILE. + */ +#ifndef LIBHEIF_HEIF_VERSION_H +#define LIBHEIF_HEIF_VERSION_H + +/* Numeric representation of the version */ +#define LIBHEIF_NUMERIC_VERSION ((1<<24) | (13<<16) | (0<<8) | 0) + +/* Version string */ +#define LIBHEIF_VERSION "1.13.0" + +#endif // LIBHEIF_HEIF_VERSION_H diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libimagequant.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libimagequant.h new file mode 100644 index 0000000..977a411 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libimagequant.h @@ -0,0 +1,111 @@ +/* + * http://pngquant.org + */ + +#ifndef LIBIMAGEQUANT_H +#define LIBIMAGEQUANT_H + +#ifndef LIQ_EXPORT +#define LIQ_EXPORT extern +#endif + +#define LIQ_VERSION 20401 +#define LIQ_VERSION_STRING "2.4.1" + +#ifndef LIQ_PRIVATE +#if defined(__GNUC__) || defined (__llvm__) +#define LIQ_PRIVATE __attribute__((visibility("hidden"))) +#else +#define LIQ_PRIVATE +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct liq_attr liq_attr; +typedef struct liq_image liq_image; +typedef struct liq_result liq_result; + +typedef struct liq_color { + unsigned char r, g, b, a; +} liq_color; + +typedef struct liq_palette { + unsigned int count; + liq_color entries[256]; +} liq_palette; + +typedef enum liq_error { + LIQ_OK = 0, + LIQ_QUALITY_TOO_LOW = 99, + LIQ_VALUE_OUT_OF_RANGE = 100, + LIQ_OUT_OF_MEMORY, + LIQ_NOT_READY, + LIQ_BITMAP_NOT_AVAILABLE, + LIQ_BUFFER_TOO_SMALL, + LIQ_INVALID_POINTER, +} liq_error; + +enum liq_ownership {LIQ_OWN_ROWS=4, LIQ_OWN_PIXELS=8}; + +LIQ_EXPORT liq_attr* liq_attr_create(void); +LIQ_EXPORT liq_attr* liq_attr_create_with_allocator(void* (*malloc)(size_t), void (*free)(void*)); +LIQ_EXPORT liq_attr* liq_attr_copy(liq_attr *orig); +LIQ_EXPORT void liq_attr_destroy(liq_attr *attr); + +LIQ_EXPORT liq_error liq_set_max_colors(liq_attr* attr, int colors); +LIQ_EXPORT int liq_get_max_colors(const liq_attr* attr); +LIQ_EXPORT liq_error liq_set_speed(liq_attr* attr, int speed); +LIQ_EXPORT int liq_get_speed(const liq_attr* attr); +LIQ_EXPORT liq_error liq_set_min_opacity(liq_attr* attr, int min); +LIQ_EXPORT int liq_get_min_opacity(const liq_attr* attr); +LIQ_EXPORT liq_error liq_set_min_posterization(liq_attr* attr, int bits); +LIQ_EXPORT int liq_get_min_posterization(const liq_attr* attr); +LIQ_EXPORT liq_error liq_set_quality(liq_attr* attr, int minimum, int maximum); +LIQ_EXPORT int liq_get_min_quality(const liq_attr* attr); +LIQ_EXPORT int liq_get_max_quality(const liq_attr* attr); +LIQ_EXPORT void liq_set_last_index_transparent(liq_attr* attr, int is_last); + +typedef void liq_log_callback_function(const liq_attr*, const char *message, void* user_info); +typedef void liq_log_flush_callback_function(const liq_attr*, void* user_info); +LIQ_EXPORT void liq_set_log_callback(liq_attr*, liq_log_callback_function*, void* user_info); +LIQ_EXPORT void liq_set_log_flush_callback(liq_attr*, liq_log_flush_callback_function*, void* user_info); + +LIQ_EXPORT liq_image *liq_image_create_rgba_rows(liq_attr *attr, void* rows[], int width, int height, double gamma); +LIQ_EXPORT liq_image *liq_image_create_rgba(liq_attr *attr, void* bitmap, int width, int height, double gamma); + +typedef void liq_image_get_rgba_row_callback(liq_color row_out[], int row, int width, void* user_info); +LIQ_EXPORT liq_image *liq_image_create_custom(liq_attr *attr, liq_image_get_rgba_row_callback *row_callback, void* user_info, int width, int height, double gamma); + +LIQ_EXPORT liq_error liq_image_set_memory_ownership(liq_image *image, int ownership_flags); +LIQ_EXPORT liq_error liq_image_add_fixed_color(liq_image *img, liq_color color); +LIQ_EXPORT int liq_image_get_width(const liq_image *img); +LIQ_EXPORT int liq_image_get_height(const liq_image *img); +LIQ_EXPORT void liq_image_destroy(liq_image *img); + +LIQ_EXPORT liq_result *liq_quantize_image(liq_attr *options, liq_image *input_image); +LIQ_EXPORT liq_error liq_image_quantize(liq_image *const input_image, liq_attr *const options, liq_result **result); + +LIQ_EXPORT liq_error liq_set_dithering_level(liq_result *res, float dither_level); +LIQ_EXPORT liq_error liq_set_output_gamma(liq_result* res, double gamma); +LIQ_EXPORT double liq_get_output_gamma(const liq_result *result); + +LIQ_EXPORT const liq_palette *liq_get_palette(liq_result *result); + +LIQ_EXPORT liq_error liq_write_remapped_image(liq_result *result, liq_image *input_image, void *buffer, size_t buffer_size); +LIQ_EXPORT liq_error liq_write_remapped_image_rows(liq_result *result, liq_image *input_image, unsigned char **row_pointers); + +LIQ_EXPORT double liq_get_quantization_error(liq_result *result); +LIQ_EXPORT int liq_get_quantization_quality(liq_result *result); + +LIQ_EXPORT void liq_result_destroy(liq_result *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libintl.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libintl.h new file mode 100644 index 0000000..557a72e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libintl.h @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2008 Tor Lillqvist + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; see the file COPYING.LIB.txt. If + * not, write to the Free Software Foundation, Inc., 51 Franklin + * Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +#ifndef LC_MESSAGES +# define LC_MESSAGES 1729 /* Use same value as in GNU gettext */ +#endif + +/* Define this to make configure checks successfully find gettext in libintl. + * This will cause the AM_GNU_GETTEXT([external]) macro to successfully detect + * that gettext is in -lintl, not in libc, and needs #include */ +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +# define __GNU_GETTEXT_SUPPORTED_REVISION +#endif + +#if defined(__has_attribute) +# define PROXY_LIBINTL_HAS_GNUC_FORMAT __has_attribute(__format_arg__) +#else +# define PROXY_LIBINTL_HAS_GNUC_FORMAT (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)) +#endif + +#if PROXY_LIBINTL_HAS_GNUC_FORMAT +# define PROXY_LIBINTL_GNUC_FORMAT(arg_idx) __attribute__((__format_arg__(arg_idx))) +#else +# define PROXY_LIBINTL_GNUC_FORMAT(arg_idx) +#endif + +#define gettext g_libintl_gettext +#define dgettext g_libintl_dgettext +#define dcgettext g_libintl_dcgettext +#define ngettext g_libintl_ngettext +#define dngettext g_libintl_dngettext +#define dcngettext g_libintl_dcngettext +#define textdomain g_libintl_textdomain +#define bindtextdomain g_libintl_bindtextdomain +#define bind_textdomain_codeset g_libintl_bind_textdomain_codeset + +/* Define G_INTL_STATIC_COMPILATION to link statically */ +#if defined(_WIN32) && !defined(G_INTL_STATIC_COMPILATION) +/* Export when producing library, import when linking against library */ +# ifdef G_INTL_COMPILATION +# define G_INTL_EXPORT __declspec(dllexport) +# elif defined(_MSC_VER) +# define G_INTL_EXPORT __declspec(dllimport) +# else +# define G_INTL_EXPORT extern +# endif +#else +# define G_INTL_EXPORT extern +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +G_INTL_EXPORT char *g_libintl_gettext (const char *msgid) PROXY_LIBINTL_GNUC_FORMAT (1); + +G_INTL_EXPORT char *g_libintl_dgettext (const char *domainname, + const char *msgid) PROXY_LIBINTL_GNUC_FORMAT (2); + +G_INTL_EXPORT char *g_libintl_dcgettext (const char *domainname, + const char *msgid, + int category) PROXY_LIBINTL_GNUC_FORMAT (2); + +G_INTL_EXPORT char *g_libintl_ngettext (const char *msgid1, + const char *msgid2, + unsigned long int n) PROXY_LIBINTL_GNUC_FORMAT (1) PROXY_LIBINTL_GNUC_FORMAT (2); + +G_INTL_EXPORT char *g_libintl_dngettext (const char *domainname, + const char *msgid1, + const char *msgid2, + unsigned long int n) PROXY_LIBINTL_GNUC_FORMAT (2) PROXY_LIBINTL_GNUC_FORMAT (3); + +G_INTL_EXPORT char *g_libintl_dcngettext (const char *domainname, + const char *msgid1, + const char *msgid2, + unsigned long int n, + int category) PROXY_LIBINTL_GNUC_FORMAT (2) PROXY_LIBINTL_GNUC_FORMAT (3); + +G_INTL_EXPORT char *g_libintl_textdomain (const char *domainname); + +G_INTL_EXPORT char *g_libintl_bindtextdomain (const char *domainname, + const char *dirname); + +G_INTL_EXPORT char *g_libintl_bind_textdomain_codeset (const char *domainname, + const char *codeset); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBINTL_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/png.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/png.h new file mode 100644 index 0000000..5fb494f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/png.h @@ -0,0 +1,3247 @@ + +/* png.h - header file for PNG reference library + * + * libpng version 1.6.38 - September 14, 2022 + * + * Copyright (c) 2018-2022 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 versions 1.6.36, December 2018, through 1.6.38, September 2022: + * Cosmin Truta + * See also "Contributing Authors", below. + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE + * ========================================= + * + * PNG Reference Library License version 2 + * --------------------------------------- + * + * * Copyright (c) 1995-2022 The PNG Reference Library Authors. + * * Copyright (c) 2018-2022 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 event 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.38 16 10638 16.so.16.38[.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.38" +#define PNG_HEADER_VERSION_STRING " libpng version 1.6.38 - September 14, 2022\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 38 + +/* This should be zero for a public release, or non-zero for a + * development version. [Deprecated] + */ +#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 10638 /* 1.6.38 */ + +/* 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_38; + +/* 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 explanation 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 calculations. 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/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/pngconf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/pngconf.h new file mode 100644 index 0000000..89d28f8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/pngconf.h @@ -0,0 +1,623 @@ + +/* pngconf.h - machine-configurable file for libpng + * + * libpng version 1.6.38 + * + * Copyright (c) 2018-2022 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(_WIN32) || defined(__WIN32__) || defined(__NT__) || \ + 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/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/pnglibconf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/pnglibconf.h new file mode 100644 index 0000000..0132e83 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libpng16/pnglibconf.h @@ -0,0 +1,219 @@ +/* pnglibconf.h - library build configuration */ + +/* libpng version 1.6.38 */ + +/* Copyright (c) 2018-2022 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 0x12bf +#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/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-cairo.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-cairo.h new file mode 100644 index 0000000..fe791fc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-cairo.h @@ -0,0 +1,391 @@ +/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set sw=4 sts=4 expandtab: */ +/* + rsvg-cairo.h: SAX-based renderer for SVG files using cairo + + Copyright (C) 2005 Red Hat, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + Author: Carl Worth +*/ + +#if !defined (__RSVG_RSVG_H_INSIDE__) && !defined (RSVG_COMPILATION) +#warning "Including directly is deprecated." +#endif + +#ifndef RSVG_CAIRO_H +#define RSVG_CAIRO_H + +#include + +G_BEGIN_DECLS + +/** + * rsvg_handle_render_cairo: + * @handle: A [class@Rsvg.Handle] + * @cr: A Cairo context + * + * Draws a loaded SVG handle to a Cairo context. Please try to use + * [method@Rsvg.Handle.render_document] instead, which allows you to pick the size + * at which the document will be rendered. + * + * Historically this function has picked a size by itself, based on the following rules: + * + * * If the SVG document has both `width` and `height` + * attributes with physical units (px, in, cm, mm, pt, pc) or font-based units (em, + * ex), the function computes the size directly based on the dots-per-inch (DPI) you + * have configured with [method@Rsvg.Handle.set_dpi]. This is the same approach as + * [method@Rsvg.Handle.get_intrinsic_size_in_pixels]. + * + * * Otherwise, if there is a `viewBox` attribute and both + * `width` and `height` are set to + * `100%` (or if they don't exist at all and thus default to 100%), + * the function uses the width and height of the `viewBox` as a pixel size. This + * produces a rendered document with the correct aspect ratio. + * + * * Otherwise, this function computes the extents of every graphical object in the SVG + * document to find the total extents. This is moderately expensive, but no more expensive + * than rendering the whole document, for example. + * + * * This function cannot deal with percentage-based units for `width` + * and `height` because there is no viewport against which they could + * be resolved; that is why it will compute the extents of objects in that case. This + * is why we recommend that you use [method@Rsvg.Handle.render_document] instead, which takes + * in a viewport and follows the sizing policy from the web platform. + * + * Drawing will occur with respect to the @cr's current transformation: for example, if + * the @cr has a rotated current transformation matrix, the whole SVG will be rotated in + * the rendered version. + * + * This function depends on the [class@Rsvg.Handle]'s DPI to compute dimensions in + * pixels, so you should call [method@Rsvg.Handle.set_dpi] beforehand. + * + * Note that @cr must be a Cairo context that is not in an error state, that is, + * `cairo_status()` must return `CAIRO_STATUS_SUCCESS` for it. Cairo can set a + * context to be in an error state in various situations, for example, if it was + * passed an invalid matrix or if it was created for an invalid surface. + * + * Returns: `TRUE` if drawing succeeded; `FALSE` otherwise. + * Since: 2.14 + * + * Deprecated: 2.52. Please use [method@Rsvg.Handle.render_document] instead; that function lets + * you pass a viewport and obtain a good error message. + */ +RSVG_DEPRECATED_FOR(rsvg_handle_render_document) +gboolean rsvg_handle_render_cairo (RsvgHandle *handle, cairo_t *cr); + +/** + * rsvg_handle_render_cairo_sub: + * @handle: A [class@Rsvg.Handle] + * @cr: A Cairo context + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass `NULL` to render the whole SVG. + * + * Renders a single SVG element in the same place as for a whole SVG document (a "subset" + * of the document). Please try to use [method@Rsvg.Handle.render_layer] instead, which allows + * you to pick the size at which the document with the layer will be rendered. + * + * This is equivalent to [method@Rsvg.Handle.render_cairo], but it renders only a single + * element and its children, as if they composed an individual layer in the SVG. + * + * Historically this function has picked a size for the whole document by itself, based + * on the following rules: + * + * * If the SVG document has both `width` and `height` + * attributes with physical units (px, in, cm, mm, pt, pc) or font-based units (em, + * ex), the function computes the size directly based on the dots-per-inch (DPI) you + * have configured with [method@Rsvg.Handle.set_dpi]. This is the same approach as + * [method@Rsvg.Handle.get_intrinsic_size_in_pixels]. + * + * * Otherwise, if there is a `viewBox` attribute and both + * `width` and `height` are set to + * `100%` (or if they don't exist at all and thus default to 100%), + * the function uses the width and height of the `viewBox` as a pixel size. This + * produces a rendered document with the correct aspect ratio. + * + * * Otherwise, this function computes the extents of every graphical object in the SVG + * document to find the total extents. This is moderately expensive, but no more expensive + * than rendering the whole document, for example. + * + * * This function cannot deal with percentage-based units for `width` + * and `height` because there is no viewport against which they could + * be resolved; that is why it will compute the extents of objects in that case. This + * is why we recommend that you use [method@Rsvg.Handle.render_layer] instead, which takes + * in a viewport and follows the sizing policy from the web platform. + * + * Drawing will occur with respect to the @cr's current transformation: for example, if + * the @cr has a rotated current transformation matrix, the whole SVG will be rotated in + * the rendered version. + * + * This function depends on the [class@Rsvg.Handle]'s DPI to compute dimensions in + * pixels, so you should call [method@Rsvg.Handle.set_dpi] beforehand. + * + * Note that @cr must be a Cairo context that is not in an error state, that is, + * `cairo_status()` must return `CAIRO_STATUS_SUCCESS` for it. Cairo can set a + * context to be in an error state in various situations, for example, if it was + * passed an invalid matrix or if it was created for an invalid surface. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * Returns: `TRUE` if drawing succeeded; `FALSE` otherwise. + * Since: 2.14 + * + * Deprecated: 2.52. Please use [method@Rsvg.Handle.render_layer] instead; that function lets + * you pass a viewport and obtain a good error message. + */ +RSVG_DEPRECATED_FOR(rsvg_handle_render_layer) +gboolean rsvg_handle_render_cairo_sub (RsvgHandle *handle, cairo_t *cr, const char *id); + +/** + * rsvg_handle_render_document: + * @handle: An [class@Rsvg.Handle] + * @cr: A Cairo context + * @viewport: Viewport size at which the whole SVG would be fitted. + * @error: return location for a `GError` + * + * Renders the whole SVG document fitted to a viewport. + * + * The @viewport gives the position and size at which the whole SVG document will be + * rendered. The document is scaled proportionally to fit into this viewport. + * + * The @cr must be in a `CAIRO_STATUS_SUCCESS` state, or this function will not + * render anything, and instead will return an error. + * + * Returns: `TRUE` on success, `FALSE` on error. Errors are returned + * in the @error argument. + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * Panics: this function will panic if the @handle is not fully-loaded. + * + * Since: 2.46 + */ +RSVG_API +gboolean rsvg_handle_render_document (RsvgHandle *handle, + cairo_t *cr, + const RsvgRectangle *viewport, + GError **error); + +/** + * rsvg_handle_get_geometry_for_layer: + * @handle: An [class@Rsvg.Handle] + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass `NULL` to compute the geometry for the + * whole SVG. + * @viewport: Viewport size at which the whole SVG would be fitted. + * @out_ink_rect: (out)(optional): Place to store the ink rectangle of the element. + * @out_logical_rect: (out)(optional): Place to store the logical rectangle of the element. + * @error: return location for a `GError` + * + * Computes the ink rectangle and logical rectangle of an SVG element, or the + * whole SVG, as if the whole SVG were rendered to a specific viewport. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * The "ink rectangle" is the bounding box that would be painted + * for fully-stroked and filled elements. + * + * The "logical rectangle" just takes into account the unstroked + * paths and text outlines. + * + * Note that these bounds are not minimum bounds; for example, + * clipping paths are not taken into account. + * + * You can pass `NULL` for the @id if you want to measure all + * the elements in the SVG, i.e. to measure everything from the + * root element. + * + * This operation is not constant-time, as it involves going through all + * the child elements. + * + * Returns: `TRUE` if the geometry could be obtained, or `FALSE` on error. Errors + * are returned in the @error argument. + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * Panics: this function will panic if the @handle is not fully-loaded. + * + * Since: 2.46 + */ +RSVG_API +gboolean rsvg_handle_get_geometry_for_layer (RsvgHandle *handle, + const char *id, + const RsvgRectangle *viewport, + RsvgRectangle *out_ink_rect, + RsvgRectangle *out_logical_rect, + GError **error); + +/** + * rsvg_handle_render_layer: + * @handle: An [class@Rsvg.Handle] + * @cr: A Cairo context + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass `NULL` to render the whole SVG document tree. + * @viewport: Viewport size at which the whole SVG would be fitted. + * @error: return location for a `GError` + * + * Renders a single SVG element in the same place as for a whole SVG document. + * + * The @viewport gives the position and size at which the whole SVG document would be + * rendered. The document is scaled proportionally to fit into this viewport; hence the + * individual layer may be smaller than this. + * + * This is equivalent to [method@Rsvg.Handle.render_document], but it renders only a + * single element and its children, as if they composed an individual layer in + * the SVG. The element is rendered with the same transformation matrix as it + * has within the whole SVG document. Applications can use this to re-render a + * single element and repaint it on top of a previously-rendered document, for + * example. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * You can pass `NULL` for the @id if you want to render all + * the elements in the SVG, i.e. to render everything from the + * root element. + * + * Returns: `TRUE` on success, `FALSE` on error. Errors are returned + * in the @error argument. + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * Panics: this function will panic if the @handle is not fully-loaded. + * + * Since: 2.46 + */ +RSVG_API +gboolean rsvg_handle_render_layer (RsvgHandle *handle, + cairo_t *cr, + const char *id, + const RsvgRectangle *viewport, + GError **error); + +/** + * rsvg_handle_get_geometry_for_element: + * @handle: An [class@Rsvg.Handle] + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass `NULL` to compute the geometry for the + * whole SVG. + * @out_ink_rect: (out)(optional): Place to store the ink rectangle of the element. + * @out_logical_rect: (out)(optional): Place to store the logical rectangle of the element. + * @error: return location for a `GError` + * + * Computes the ink rectangle and logical rectangle of a single SVG element. + * + * While `rsvg_handle_get_geometry_for_layer` computes the geometry of an SVG element subtree with + * its transformation matrix, this other function will compute the element's geometry + * as if it were being rendered under an identity transformation by itself. That is, + * the resulting geometry is as if the element got extracted by itself from the SVG. + * + * This function is the counterpart to `rsvg_handle_render_element`. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * The "ink rectangle" is the bounding box that would be painted + * for fully- stroked and filled elements. + * + * The "logical rectangle" just takes into account the unstroked + * paths and text outlines. + * + * Note that these bounds are not minimum bounds; for example, + * clipping paths are not taken into account. + * + * You can pass `NULL` for the @id if you want to measure all + * the elements in the SVG, i.e. to measure everything from the + * root element. + * + * This operation is not constant-time, as it involves going through all + * the child elements. + * + * Returns: `TRUE` if the geometry could be obtained, or `FALSE` on error. Errors + * are returned in the @error argument. + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * Panics: this function will panic if the @handle is not fully-loaded. + * + * Since: 2.46 + */ +RSVG_API +gboolean rsvg_handle_get_geometry_for_element (RsvgHandle *handle, + const char *id, + RsvgRectangle *out_ink_rect, + RsvgRectangle *out_logical_rect, + GError **error); + +/** + * rsvg_handle_render_element: + * @handle: An [class@Rsvg.Handle] + * @cr: A Cairo context + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass `NULL` to render the whole SVG document tree. + * @element_viewport: Viewport size in which to fit the element + * @error: return location for a `GError` + * + * Renders a single SVG element to a given viewport. + * + * This function can be used to extract individual element subtrees and render them, + * scaled to a given @element_viewport. This is useful for applications which have + * reusable objects in an SVG and want to render them individually; for example, an + * SVG full of icons that are meant to be be rendered independently of each other. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * You can pass `NULL` for the @id if you want to render all + * the elements in the SVG, i.e. to render everything from the + * root element. + * + * The `element_viewport` gives the position and size at which the named element will + * be rendered. FIXME: mention proportional scaling. + * + * Returns: `TRUE` on success, `FALSE` on error. Errors are returned + * in the @error argument. + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * Panics: this function will panic if the @handle is not fully-loaded. + * + * Since: 2.46 + */ +RSVG_API +gboolean rsvg_handle_render_element (RsvgHandle *handle, + cairo_t *cr, + const char *id, + const RsvgRectangle *element_viewport, + GError **error); + +G_END_DECLS + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-features.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-features.h new file mode 100644 index 0000000..00762ab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-features.h @@ -0,0 +1,184 @@ +#if !defined (__RSVG_RSVG_H_INSIDE__) && !defined (RSVG_COMPILATION) +#warning "Including directly is deprecated." +#endif + +#ifndef RSVG_FEATURES_H +#define RSVG_FEATURES_H + +/** + * rsvg-features: + * + * Check for the version of librsvg being used. + * + * Librsvg provides a few C macros that C and C++ programs can use to + * check the version being used at compile-time, that is, the API that + * the program expects to have. This is useful for programs that need + * to conditionally compile code with `#ifdef` blocks + * depending on the version of librsvg that may be available during + * compilation. + * + * Librsvg also provides a few global constants that can be used to + * check the version of librsvg being used at run-time. This is + * useful to know which version of librsvg is actually being used on + * the system where the program is running. + */ + +/** + * LIBRSVG_MAJOR_VERSION: + * + * This is a C macro that expands to a number with the major version + * of librsvg against which your program is compiled. + * + * For example, for librsvg-2.3.4, the major version is 2. + * + * C programs can use this as a compile-time check for the required + * version, but note that generally it is a better idea to do + * compile-time checks by calling [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/) + * in your build scripts. + * + * Note: for a run-time check on the version of librsvg that your + * program is running with (e.g. the version which the linker used for + * your program), or for programs not written in C, use + * `rsvg_major_version` instead. + */ + +/** + * LIBRSVG_MINOR_VERSION: + * + * This is a C macro that expands to a number with the minor version + * of librsvg against which your program is compiled. + * + * For example, for librsvg-2.3.4, the minor version is 3. + * + * C programs can use this as a compile-time check for the required + * version, but note that generally it is a better idea to do + * compile-time checks by calling [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/) + * in your build scripts. + * + * Note: for a run-time check on the version of librsvg that your + * program is running with (e.g. the version which the linker used for + * your program), or for programs not written in C, use + * `rsvg_minor_version` instead. + */ + +/** + * LIBRSVG_MICRO_VERSION: + * + * This is a C macro that expands to a number with the micro version + * of librsvg against which your program is compiled. + * + * For example, for librsvg-2.3.4, the micro version is 4. + * + * C programs can use this as a compile-time check for the required + * version, but note that generally it is a better idea to do + * compile-time checks by calling [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/) + * in your build scripts. + * + * Note: for a run-time check on the version of librsvg that your + * program is running with (e.g. the version which the linker used for + * your program), or for programs not written in C, use + * `rsvg_micro_version` instead. + */ + +/** + * LIBRSVG_VERSION: + * + * This is a C macro that expands to a string with the version of + * librsvg against which your program is compiled. + * + * For example, for librsvg-2.3.4, this macro expands to + * `"2.3.4"`. + * + * C programs can use this as a compile-time check for the required + * version, but note that generally it is a better idea to do + * compile-time checks by calling [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/) + * in your build scripts. + * + * Note: for a run-time check on the version of librsvg that your + * program is running with (e.g. the version which the linker used for + * your program), or for programs not written in C, use + * `rsvg_version` instead. + */ + +/** + * LIBRSVG_CHECK_VERSION: + * @major: component for the major version to check + * @minor: component for the minor version to check + * @micro: component for the micro version to check + * + * This C macro returns `TRUE` if the the version of librsvg being + * compiled against is the same or newer than the specified version. + * + * Note that this a compile-time check for C programs. If you want a + * run-time check for the version of librsvg being used, or if you are + * using another programming language, see the variables + * `rsvg_major_version`, `rsvg_minor_version`, `rsvg_micro_version` + * instead. + */ +#define LIBRSVG_CHECK_VERSION(major,minor,micro) \ + (LIBRSVG_MAJOR_VERSION > (major) || \ + (LIBRSVG_MAJOR_VERSION == (major) && LIBRSVG_MINOR_VERSION > (minor)) || \ + (LIBRSVG_MAJOR_VERSION == (major) && LIBRSVG_MINOR_VERSION == (minor) && LIBRSVG_MICRO_VERSION >= (micro))) + +#ifndef __GI_SCANNER__ +#define LIBRSVG_HAVE_SVGZ (TRUE) +#define LIBRSVG_HAVE_CSS (TRUE) + +#define LIBRSVG_CHECK_FEATURE(FEATURE) (defined(LIBRSVG_HAVE_##FEATURE) && LIBRSVG_HAVE_##FEATURE) +#endif + +#ifndef __GTK_DOC_IGNORE__ + +/* + * On Windows builds, we need to decorate variables that are exposed in the public API + * so that they can be properly exported and linked to, for DLL builds + */ +#ifndef RSVG_VAR +# ifdef G_PLATFORM_WIN32 +# ifndef RSVG_STATIC +# ifdef RSVG_COMPILATION +# define RSVG_VAR extern __declspec (dllexport) +# else /* RSVG_COMPILATION */ +# define RSVG_VAR extern __declspec (dllimport) +# endif /* !RSVG_COMPILATION */ +# else /* !RSVG_STATIC */ +# define RSVG_VAR extern +# endif /* RSVG_STATIC */ +# else /* G_PLATFORM_WIN32 */ +# define RSVG_VAR extern +# endif /* !G_PLATFORM_WIN32 */ +#endif + +#endif /* __GTK_DOC_IGNORE__ */ + +/** + * rsvg_major_version: + * + * Major version of the library. For example, for version 2.3.4, the major + * version will be 2. + * + * Since: 2.52 + */ +RSVG_VAR const guint rsvg_major_version; + +/** + * rsvg_minor_version: + * + * Minor version of the library. For example, for version 2.3.4, the minor + * version will be 3. + * + * Since: 2.52 + */ +RSVG_VAR const guint rsvg_minor_version; + +/** + * rsvg_micro_version: + * + * Micro version of the library. For example, for version 2.3.4, the micro + * version will be 4. + * + * Since: 2.52 + */ +RSVG_VAR const guint rsvg_micro_version; + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-version.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-version.h new file mode 100644 index 0000000..7b17732 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg-version.h @@ -0,0 +1,13 @@ +#if !defined (__RSVG_RSVG_H_INSIDE__) && !defined (RSVG_COMPILATION) +#warning "Including directly is deprecated." +#endif + +#ifndef RSVG_VERSION_H +#define RSVG_VERSION_H + +#define LIBRSVG_MAJOR_VERSION (2) +#define LIBRSVG_MINOR_VERSION (55) +#define LIBRSVG_MICRO_VERSION (1) +#define LIBRSVG_VERSION "2.55.1" + +#endif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg.h new file mode 100644 index 0000000..9640023 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/librsvg-2.0/librsvg/rsvg.h @@ -0,0 +1,1454 @@ +/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set sw=4 sts=4 expandtab: */ +/* + rsvg.h: SAX-based renderer for SVG files into a GdkPixbuf. + + Copyright (C) 2000 Eazel, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + Author: Raph Levien +*/ + +#ifndef RSVG_H +#define RSVG_H + +#define __RSVG_RSVG_H_INSIDE__ + +#include +#include + +#include +#include + +G_BEGIN_DECLS + +#ifndef __GTK_DOC_IGNORE__ + +/* Override to export public/semi-public APIs */ +#ifndef RSVG_API +# define RSVG_API +#endif + +#if defined(RSVG_DISABLE_DEPRECATION_WARNINGS) || !GLIB_CHECK_VERSION (2, 31, 0) +#define RSVG_DEPRECATED RSVG_API +#define RSVG_DEPRECATED_FOR(f) RSVG_API +#else +#define RSVG_DEPRECATED G_DEPRECATED RSVG_API +#define RSVG_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) RSVG_API +#endif + +#endif /* __GTK_DOC_IGNORE__ */ + +/** + * RsvgError: + * @RSVG_ERROR_FAILED: the request failed + * + * An enumeration representing possible errors + */ +typedef enum { + RSVG_ERROR_FAILED +} RsvgError; + +#define RSVG_ERROR (rsvg_error_quark ()) + +/** + * rsvg_error_quark: + * + * The error domain for RSVG + * + * Returns: The error domain + */ +RSVG_API +GQuark rsvg_error_quark (void) G_GNUC_CONST; + +RSVG_API +GType rsvg_error_get_type (void); +#define RSVG_TYPE_ERROR (rsvg_error_get_type()) + +/** + * RsvgHandle: + * + * [class@Rsvg.Handle] loads an SVG document into memory. + * + * This is the main entry point into the librsvg library. An [class@Rsvg.Handle] is an + * object that represents SVG data in memory. Your program creates an + * [class@Rsvg.Handle] from an SVG file, or from a memory buffer that contains SVG data, + * or in the most general form, from a `GInputStream` that will provide SVG data. + * + * Librsvg can load SVG images and render them to Cairo surfaces, + * using a mixture of SVG's [static mode] and [secure static mode]. + * Librsvg does not do animation nor scripting, and can load + * references to external data only in some situations; see below. + * + * Librsvg supports reading [SVG 1.1](https://www.w3.org/TR/SVG11/) data, and is gradually + * adding support for features in [SVG 2](https://www.w3.org/TR/SVG2/). Librsvg also + * supports SVGZ files, which are just an SVG stream compressed with the GZIP algorithm. + * + * [static mode]: https://www.w3.org/TR/SVG2/conform.html#static-mode + * [secure static mode]: https://www.w3.org/TR/SVG2/conform.html#secure-static-mode + * + * # The "base file" and resolving references to external files + * + * When you load an SVG, librsvg needs to know the location of the "base file" + * for it. This is so that librsvg can determine the location of referenced + * entities. For example, say you have an SVG in `/foo/bar/foo.svg` + * and that it has an image element like this: + * + * ``` + * + * ``` + * + * In this case, librsvg needs to know the location of the toplevel + * `/foo/bar/foo.svg` so that it can generate the appropriate + * reference to `/foo/bar/resources/foo.png`. + * + * ## Security and locations of referenced files + * + * When processing an SVG, librsvg will only load referenced files if they are + * in the same directory as the base file, or in a subdirectory of it. That is, + * if the base file is `/foo/bar/baz.svg`, then librsvg will + * only try to load referenced files (from SVG's + * `` element, for example, or from content + * included through XML entities) if those files are in `/foo/bar/` or in `/foo/bar/\/.../`. + * This is so that malicious SVG files cannot include files that are in a directory above. + * + * The full set of rules for deciding which URLs may be loaded is as follows; + * they are applied in order. A referenced URL will not be loaded as soon as + * one of these rules fails: + * + * 1. All `data:` URLs may be loaded. These are sometimes used + * to include raster image data, encoded as base-64, directly in an SVG file. + * + * 2. All other URL schemes in references require a base URL. For + * example, this means that if you load an SVG with + * [ctor@Rsvg.Handle.new_from_data] without calling [method@Rsvg.Handle.set_base_uri], + * then any referenced files will not be allowed (e.g. raster images to be + * loaded from other files will not work). + * + * 3. If referenced URLs are absolute, rather than relative, then they must + * have the same scheme as the base URL. For example, if the base URL has a + * `file` scheme, then all URL references inside the SVG must + * also have the `file` scheme, or be relative references which + * will be resolved against the base URL. + * + * 4. If referenced URLs have a `resource` scheme, that is, + * if they are included into your binary program with GLib's resource + * mechanism, they are allowed to be loaded (provided that the base URL is + * also a `resource`, per the previous rule). + * + * 5. Otherwise, non-`file` schemes are not allowed. For + * example, librsvg will not load `http` resources, to keep + * malicious SVG data from "phoning home". + * + * 6. A relative URL must resolve to the same directory as the base URL, or to + * one of its subdirectories. Librsvg will canonicalize filenames, by + * removing ".." path components and resolving symbolic links, to decide whether + * files meet these conditions. + * + * # Loading an SVG with GIO + * + * This is the easiest and most resource-efficient way of loading SVG data into + * an [class@Rsvg.Handle]. + * + * If you have a `GFile` that stands for an SVG file, you can simply call + * [ctor@Rsvg.Handle.new_from_gfile_sync] to load an [class@Rsvg.Handle] from it. + * + * Alternatively, if you have a `GInputStream`, you can use + * [ctor@Rsvg.Handle.new_from_stream_sync]. + * + * Both of those methods allow specifying a `GCancellable`, so the loading + * process can be cancelled from another thread. + * + * ## Loading an SVG from memory + * + * If you already have SVG data in a byte buffer in memory, you can create a + * memory input stream with [ctor@Gio.MemoryInputStream.new_from_data] and feed that + * to [ctor@Rsvg.Handle.new_from_stream_sync]. + * + * Note that in this case, it is important that you specify the base_file for + * the in-memory SVG data. Librsvg uses the base_file to resolve links to + * external content, like raster images. + * + * # Loading an SVG without GIO + * + * You can load an [class@Rsvg.Handle] from a simple filename or URI with + * [ctor@Rsvg.Handle.new_from_file]. Note that this is a blocking operation; there + * is no way to cancel it if loading a remote URI takes a long time. Also, note that + * this method does not let you specify [flags@Rsvg.HandleFlags]. + * + * Otherwise, loading an SVG without GIO is not recommended, since librsvg will + * need to buffer your entire data internally before actually being able to + * parse it. The deprecated way of doing this is by creating a handle with + * [ctor@Rsvg.Handle.new] or [ctor@Rsvg.Handle.new_with_flags], and then using + * [method@Rsvg.Handle.write] and [method@Rsvg.Handle.close] to feed the handle with SVG data. + * Still, please try to use the GIO stream functions instead. + * + * # Resolution of the rendered image (dots per inch, or DPI) + * + * SVG images can contain dimensions like "`5cm`" or + * "`2pt`" that must be converted from physical units into + * device units. To do this, librsvg needs to know the actual dots per inch + * (DPI) of your target device. You can call [method@Rsvg.Handle.set_dpi] or + * [method@Rsvg.Handle.set_dpi_x_y] on an [class@Rsvg.Handle] to set the DPI before rendering + * it. + * + * # Rendering + * + * The preferred way to render a whole SVG document is to use + * [method@Rsvg.Handle.render_document]. Please see its documentation for + * details. + * + * # API ordering + * + * Due to the way the librsvg API evolved over time, an [class@Rsvg.Handle] object is available + * for use as soon as it is constructed. However, not all of its methods can be + * called at any time. For example, an [class@Rsvg.Handle] just constructed with [ctor@Rsvg.Handle.new] + * is not loaded yet, and it does not make sense to call [method@Rsvg.Handle.render_document] on it + * just at that point. + * + * The documentation for the available methods in [class@Rsvg.Handle] may mention that a particular + * method is only callable on a "fully loaded handle". This means either: + * + * * The handle was loaded with [method@Rsvg.Handle.write] and [method@Rsvg.Handle.close], and + * those functions returned no errors. + * + * * The handle was loaded with [method@Rsvg.Handle.read_stream_sync] and that function + * returned no errors. + * + * Before librsvg 2.46, the library did not fully verify that a handle was in a + * fully loaded state for the methods that require it. To preserve + * compatibility with old code which inadvertently called the API without + * checking for errors, or which called some methods outside of the expected + * order, librsvg will just emit a `g_critical()` message in those cases. + * + * New methods introduced in librsvg 2.46 and later will check for the correct + * ordering, and panic if they are called out of order. This will abort + * the program as if it had a failed assertion. + */ + +/***** Begin documentation for RsvgHandle properties *****/ + +/** + * RsvgHandle:flags: + * + * Flags from [flags@Rsvg.HandleFlags]. + * + * Since: 2.36 + */ + +/** + * RsvgHandle:dpi-x: + * + * Horizontal resolution in dots per inch. + */ + +/** + * RsvgHandle:dpi-y: + * + * Horizontal resolution in dots per inch. + */ + +/** + * RsvgHandle:base-uri: (attributes org.gtk.Property.get=rsvg_handle_get_base_uri org.gtk.Property.set=rsvg_handle_set_base_uri) + * + * Base URI, to be used to resolve relative references for resources. See the section + * "Security and locations of referenced files" for details. + */ + +/** + * RsvgHandle:width: + * + * Width, in pixels, of the rendered SVG after calling the size callback + * as specified by [method@Rsvg.Handle.set_size_callback]. + * + * Deprecated: 2.46. For historical reasons, this property is of integer type, + * which cannot give the exact size of SVG images that are not pixel-aligned. + * Moreover, reading each of the size properties causes the size of the SVG to + * be recomputed, so reading both the `width` and + * `height` properties will cause two such computations. + * Please use [method@Rsvg.Handle.get_intrinsic_dimensions] instead. + */ + +/** + * RsvgHandle:height: + * + * Height, in pixels, of the rendered SVG after calling the size callback + * as specified by [method@Rsvg.Handle.set_size_callback]. + * + * Deprecated: 2.46. For historical reasons, this property is of integer type, + * which cannot give the exact size of SVG images that are not pixel-aligned. + * Moreover, reading each of the size properties causes the size of the SVG to + * be recomputed, so reading both the `width` and + * `height` properties will cause two such computations. + * Please use [method@Rsvg.Handle.get_intrinsic_dimensions] instead. + */ + +/** + * RsvgHandle:em: + * + * Exact width, in pixels, of the rendered SVG before calling the size callback + * as specified by [method@Rsvg.Handle.set_size_callback]. + * + * Deprecated: 2.46. Reading each of the size properties causes the size of the + * SVG to be recomputed, so reading both the `em` and + * `ex` properties will cause two such computations. Please + * use [method@Rsvg.Handle.get_intrinsic_dimensions] instead. + */ + +/** + * RsvgHandle:ex: + * + * Exact height, in pixels, of the rendered SVG before calling the size callback + * as specified by [method@Rsvg.Handle.set_size_callback]. + * + * Deprecated: 2.46. Reading each of the size properties causes the size of the + * SVG to be recomputed, so reading both the `em` and + * `ex` properties will cause two such computations. Please + * use [method@Rsvg.Handle.get_intrinsic_dimensions] instead. + */ + +/** + * RsvgHandle:title: + * + * SVG's title. + * + * Deprecated: 2.36. Reading this property always returns `NULL`. + */ + +/** + * RsvgHandle:desc: + * + * SVG's description. + * + * Deprecated: 2.36. Reading this property always returns `NULL`. + */ + +/** + * RsvgHandle:metadata: + * + * SVG's metadata + * + * Deprecated: 2.36. Reading this property always returns `NULL`. + */ + +/***** End documentation for RsvgHandle properties *****/ + +#define RSVG_TYPE_HANDLE (rsvg_handle_get_type ()) +#define RSVG_HANDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RSVG_TYPE_HANDLE, RsvgHandle)) +#define RSVG_HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RSVG_TYPE_HANDLE, RsvgHandleClass)) +#define RSVG_IS_HANDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RSVG_TYPE_HANDLE)) +#define RSVG_IS_HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RSVG_TYPE_HANDLE)) +#define RSVG_HANDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RSVG_TYPE_HANDLE, RsvgHandleClass)) + +RSVG_API +GType rsvg_handle_get_type (void); + +typedef struct _RsvgHandle RsvgHandle; +typedef struct _RsvgHandleClass RsvgHandleClass; +typedef struct _RsvgDimensionData RsvgDimensionData; +typedef struct _RsvgPositionData RsvgPositionData; +typedef struct _RsvgRectangle RsvgRectangle; + +/** + * RsvgHandleClass: + * @parent: parent class + * + * Class structure for [class@Rsvg.Handle]. + */ +struct _RsvgHandleClass { + GObjectClass parent; + + /*< private >*/ + gpointer _abi_padding[15]; +}; + +struct _RsvgHandle { + GObject parent; + + /*< private >*/ + + gpointer _abi_padding[16]; +}; + +/** + * RsvgDimensionData: + * @width: SVG's width, in pixels + * @height: SVG's height, in pixels + * @em: SVG's original width, unmodified by `RsvgSizeFunc` + * @ex: SVG's original height, unmodified by `RsvgSizeFunc` + * + * Dimensions of an SVG image from [method@Rsvg.Handle.get_dimensions], or an + * individual element from [method@Rsvg.Handle.get_dimensions_sub]. Please see + * the deprecation documentation for those functions. + * + * Deprecated: 2.46. Use [method@Rsvg.Handle.get_intrinsic_size_in_pixels] or + * [method@Rsvg.Handle.get_geometry_for_layer] instead. + */ +struct _RsvgDimensionData { + int width; + int height; + gdouble em; + gdouble ex; +}; + +/** + * RsvgPositionData: + * @x: position on the x axis + * @y: position on the y axis + * + * Position of an SVG fragment from [method@Rsvg.Handle.get_position_sub]. Please + * the deprecation documentation for that function. + * + * Deprecated: 2.46. Use [method@Rsvg.Handle.get_geometry_for_layer] instead. + */ +struct _RsvgPositionData { + int x; + int y; +}; + +/** + * RsvgRectangle: + * @x: X coordinate of the left side of the rectangle + * @y: Y coordinate of the the top side of the rectangle + * @width: width of the rectangle + * @height: height of the rectangle + * + * A data structure for holding a rectangle. + * + * Since: 2.46 + */ +struct _RsvgRectangle { + double x; + double y; + double width; + double height; +}; + +/** + * rsvg_cleanup: + * + * This function does nothing. + * + * Since: 2.36 + * Deprecated: 2.46: No-op. This function should not be called from normal programs. + */ +RSVG_DEPRECATED +void rsvg_cleanup (void); + +/** + * rsvg_set_default_dpi: + * @dpi: Dots Per Inch (aka Pixels Per Inch) + * + * Do not use this function. Create an [class@Rsvg.Handle] and call + * [method@Rsvg.Handle.set_dpi] on it instead. + * + * Since: 2.8 + * + * Deprecated: 2.42.3: This function used to set a global default DPI. However, + * it only worked if it was called before any [class@Rsvg.Handle] objects had been + * created; it would not work after that. To avoid global mutable state, please + * use [method@Rsvg.Handle.set_dpi] instead. + */ +RSVG_DEPRECATED +void rsvg_set_default_dpi (double dpi); + +/** + * rsvg_set_default_dpi_x_y: + * @dpi_x: Dots Per Inch (aka Pixels Per Inch) + * @dpi_y: Dots Per Inch (aka Pixels Per Inch) + * + * Do not use this function. Create an [class@Rsvg.Handle] and call + * [method@Rsvg.Handle.set_dpi_x_y] on it instead. + * + * Since: 2.8 + * + * Deprecated: 2.42.3: This function used to set a global default DPI. However, + * it only worked if it was called before any [class@Rsvg.Handle] objects had been + * created; it would not work after that. To avoid global mutable state, please + * use [method@Rsvg.Handle.set_dpi] instead. + */ +RSVG_DEPRECATED +void rsvg_set_default_dpi_x_y (double dpi_x, double dpi_y); + +/** + * rsvg_handle_set_dpi: + * @handle: An [class@Rsvg.Handle] + * @dpi: Dots Per Inch (i.e. as Pixels Per Inch) + * + * Sets the DPI at which the @handle will be rendered. Common values are + * 75, 90, and 300 DPI. + * + * Passing a number <= 0 to @dpi will reset the DPI to whatever the default + * value happens to be, but since [id@rsvg_set_default_dpi] is deprecated, please + * do not pass values <= 0 to this function. + * + * Since: 2.8 + */ +RSVG_API +void rsvg_handle_set_dpi (RsvgHandle *handle, double dpi); + +/** + * rsvg_handle_set_dpi_x_y: + * @handle: An [class@Rsvg.Handle] + * @dpi_x: Dots Per Inch (i.e. Pixels Per Inch) + * @dpi_y: Dots Per Inch (i.e. Pixels Per Inch) + * + * Sets the DPI at which the @handle will be rendered. Common values are + * 75, 90, and 300 DPI. + * + * Passing a number <= 0 to @dpi will reset the DPI to whatever the default + * value happens to be, but since [id@rsvg_set_default_dpi_x_y] is deprecated, + * please do not pass values <= 0 to this function. + * + * Since: 2.8 + */ +RSVG_API +void rsvg_handle_set_dpi_x_y (RsvgHandle *handle, double dpi_x, double dpi_y); + +/** + * rsvg_handle_new: + * + * Returns a new rsvg handle. Must be freed with [method@GObject.Object.unref]. This + * handle can be used to load an image. + * + * The preferred way of loading SVG data into the returned [class@Rsvg.Handle] is with + * [method@Rsvg.Handle.read_stream_sync]. + * + * The deprecated way of loading SVG data is with [method@Rsvg.Handle.write] and + * [method@Rsvg.Handle.close]; note that these require buffering the entire file + * internally, and for this reason it is better to use the stream functions: + * [ctor@Rsvg.Handle.new_from_stream_sync], [method@Rsvg.Handle.read_stream_sync], or + * [ctor@Rsvg.Handle.new_from_gfile_sync]. + * + * After loading the [class@Rsvg.Handle] with data, you can render it using Cairo or get + * a GdkPixbuf from it. When finished, free the handle with [method@GObject.Object.unref]. No + * more than one image can be loaded with one handle. + * + * Note that this function creates an [class@Rsvg.Handle] with no flags set. If you + * require any of [flags@Rsvg.HandleFlags] to be set, use any of + * [ctor@Rsvg.Handle.new_with_flags], [ctor@Rsvg.Handle.new_from_stream_sync], or + * [ctor@Rsvg.Handle.new_from_gfile_sync]. + * + * Returns: (transfer full): A new [class@Rsvg.Handle] with no flags set. + **/ +RSVG_API +RsvgHandle *rsvg_handle_new (void); + +/** + * rsvg_handle_write: + * @handle: an [class@Rsvg.Handle] + * @buf: (array length=count) (element-type guchar): pointer to svg data + * @count: length of the @buf buffer in bytes + * @error: return location for a `GError` + * + * Loads the next @count bytes of the image. You can call this function multiple + * times until the whole document is consumed; then you must call [method@Rsvg.Handle.close] + * to actually parse the document. + * + * Before calling this function for the first time, you may need to call + * [method@Rsvg.Handle.set_base_uri] or [method@Rsvg.Handle.set_base_gfile] to set the "base + * file" for resolving references to external resources. SVG elements like + * `` which reference external resources will be + * resolved relative to the location you specify with those functions. + * + * Returns: `TRUE` on success, or `FALSE` on error. + * + * Deprecated: 2.46. Use [method@Rsvg.Handle.read_stream_sync] or the constructor + * functions [ctor@Rsvg.Handle.new_from_gfile_sync] or + * [ctor@Rsvg.Handle.new_from_stream_sync]. This function is deprecated because it + * will accumulate data from the @buf in memory until [method@Rsvg.Handle.close] gets + * called. To avoid a big temporary buffer, use the suggested functions, which + * take a `GFile` or a `GInputStream` and do not require a temporary buffer. + **/ +RSVG_DEPRECATED_FOR(rsvg_handle_read_stream_sync) +gboolean rsvg_handle_write (RsvgHandle *handle, + const guchar *buf, + gsize count, + GError **error); + +/** + * rsvg_handle_close: + * @handle: a [class@Rsvg.Handle] + * @error: return location for a `GError` + * + * This is used after calling [method@Rsvg.Handle.write] to indicate that there is no more data + * to consume, and to start the actual parsing of the SVG document. The only reason to + * call this function is if you use use [method@Rsvg.Handle.write] to feed data into the @handle; + * if you use the other methods like [ctor@Rsvg.Handle.new_from_file] or + * [method@Rsvg.Handle.read_stream_sync], then you do not need to call this function. + * + * This will return `TRUE` if the loader closed successfully and the + * SVG data was parsed correctly. Note that @handle isn't freed until + * [method@GObject.Object.unref] is called. + * + * Returns: `TRUE` on success, or `FALSE` on error. + * + * Deprecated: 2.46. Use [method@Rsvg.Handle.read_stream_sync] or the constructor + * functions [ctor@Rsvg.Handle.new_from_gfile_sync] or + * [ctor@Rsvg.Handle.new_from_stream_sync]. See the deprecation notes for + * [method@Rsvg.Handle.write] for more information. + **/ +RSVG_DEPRECATED_FOR(rsvg_handle_read_stream_sync) +gboolean rsvg_handle_close (RsvgHandle *handle, GError **error); + +/** + * rsvg_handle_get_pixbuf: + * @handle: An [class@Rsvg.Handle] + * + * Returns the pixbuf loaded by @handle. The pixbuf returned will be reffed, so + * the caller of this function must assume that ref. + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * This function depends on the [class@Rsvg.Handle]'s dots-per-inch value (DPI) to compute the + * "natural size" of the document in pixels, so you should call [method@Rsvg.Handle.set_dpi] + * beforehand. + * + * Returns: (transfer full) (nullable): A pixbuf, or %NULL on error. + * during rendering. + **/ +RSVG_API +GdkPixbuf *rsvg_handle_get_pixbuf (RsvgHandle *handle); + +/** + * rsvg_handle_get_pixbuf_sub: + * @handle: An #RsvgHandle + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass `NULL` to use the whole SVG. + * + * Creates a `GdkPixbuf` the same size as the entire SVG loaded into @handle, but + * only renders the sub-element that has the specified @id (and all its + * sub-sub-elements recursively). If @id is `NULL`, this function renders the + * whole SVG. + * + * This function depends on the [class@Rsvg.Handle]'s dots-per-inch value (DPI) to compute the + * "natural size" of the document in pixels, so you should call [method@Rsvg.Handle.set_dpi] + * beforehand. + * + * If you need to render an image which is only big enough to fit a particular + * sub-element of the SVG, consider using [method@Rsvg.Handle.render_element]. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * Returns: (transfer full) (nullable): a pixbuf, or `NULL` if an error occurs + * during rendering. + * + * Since: 2.14 + **/ +RSVG_API +GdkPixbuf *rsvg_handle_get_pixbuf_sub (RsvgHandle *handle, const char *id); + +/** + * rsvg_handle_get_base_uri: (attributes org.gtk.Method.get_property=base-uri) + * @handle: A [class@Rsvg.Handle] + * + * Gets the base uri for this [class@Rsvg.Handle]. + * + * Returns: the base uri, possibly null + * Since: 2.8 + */ +RSVG_API +const char *rsvg_handle_get_base_uri (RsvgHandle *handle); + +/** + * rsvg_handle_set_base_uri: (attributes org.gtk.Method.set_property=base-uri) + * @handle: A [class@Rsvg.Handle] + * @base_uri: The base uri + * + * Set the base URI for this SVG. + * + * Note: This function may only be called before [method@Rsvg.Handle.write] or + * [method@Rsvg.Handle.read_stream_sync] have been called. + * + * Since: 2.9 + */ +RSVG_API +void rsvg_handle_set_base_uri (RsvgHandle *handle, const char *base_uri); + +/** + * rsvg_handle_get_dimensions: + * @handle: A [class@Rsvg.Handle] + * @dimension_data: (out): A place to store the SVG's size + * + * Get the SVG's size. Do not call from within the size_func callback, because + * an infinite loop will occur. + * + * This function depends on the [class@Rsvg.Handle]'s DPI to compute dimensions in + * pixels, so you should call [method@Rsvg.Handle.set_dpi] beforehand. + * + * Deprecated: 2.52. Use [method@Rsvg.Handle.get_intrinsic_size_in_pixels] instead. This + * function is deprecated because it is not able to return exact fractional dimensions, + * only integer pixels. + * + * Since: 2.14 + */ +RSVG_DEPRECATED_FOR(rsvg_handle_get_intrinsic_size_in_pixels) +void rsvg_handle_get_dimensions (RsvgHandle *handle, RsvgDimensionData *dimension_data); + +/** + * rsvg_handle_get_dimensions_sub: + * @handle: A [class@Rsvg.Handle] + * @dimension_data: (out): A place to store the SVG's size + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass `NULL` to use the whole SVG. + * + * Get the size of a subelement of the SVG file. Do not call from within the + * size_func callback, because an infinite loop will occur. + * + * This function depends on the [class@Rsvg.Handle]'s DPI to compute dimensions in + * pixels, so you should call [method@Rsvg.Handle.set_dpi] beforehand. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * Returns: `TRUE` if the dimensions could be obtained, `FALSE` if there was an error. + * + * Deprecated: 2.46. Use [method@Rsvg.Handle.get_geometry_for_layer] instead. + * + * Since: 2.22 + */ +RSVG_DEPRECATED_FOR(rsvg_handle_get_geometry_for_layer) +gboolean rsvg_handle_get_dimensions_sub (RsvgHandle *handle, + RsvgDimensionData *dimension_data, + const char *id); + +/** + * rsvg_handle_get_position_sub: + * @handle: A [class@Rsvg.Handle] + * @position_data: (out): A place to store the SVG fragment's position. + * @id: (nullable): An element's id within the SVG, starting with "#" (a single + * hash character), for example, `#layer1`. This notation corresponds to a + * URL's fragment ID. Alternatively, pass %NULL to use the whole SVG. + * + * Get the position of a subelement of the SVG file. Do not call from within + * the size_func callback, because an infinite loop will occur. + * + * This function depends on the [class@Rsvg.Handle]'s DPI to compute dimensions in + * pixels, so you should call [method@Rsvg.Handle.set_dpi] beforehand. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * Returns: `TRUE` if the position could be obtained, `FALSE` if there was an error. + * + * Deprecated: 2.46. Use [method@Rsvg.Handle.get_geometry_for_layer] instead. This function is + * deprecated since it is not able to return exact floating-point positions, only integer + * pixels. + * + * Since: 2.22 + */ +RSVG_DEPRECATED_FOR(rsvg_handle_get_geometry_for_layer) +gboolean rsvg_handle_get_position_sub (RsvgHandle *handle, + RsvgPositionData *position_data, + const char *id); + +/** + * rsvg_handle_has_sub: + * @handle: a [class@Rsvg.Handle] + * @id: An element's id within the SVG, starting with "#" (a single hash + * character), for example, `#layer1`. This notation corresponds to a URL's + * fragment ID. + * + * Checks whether the element @id exists in the SVG document. + * + * Element IDs should look like an URL fragment identifier; for example, pass + * `#foo` (hash `foo`) to get the geometry of the element that + * has an `id="foo"` attribute. + * + * Returns: `TRUE` if @id exists in the SVG document, `FALSE` otherwise. + * + * Since: 2.22 + */ +RSVG_API +gboolean rsvg_handle_has_sub (RsvgHandle *handle, const char *id); + +/** + * RsvgUnit: + * @RSVG_UNIT_PERCENT: percentage values; where 1.0 means 100%. + * @RSVG_UNIT_PX: pixels + * @RSVG_UNIT_EM: em, or the current font size + * @RSVG_UNIT_EX: x-height of the current font + * @RSVG_UNIT_IN: inches + * @RSVG_UNIT_CM: centimeters + * @RSVG_UNIT_MM: millimeters + * @RSVG_UNIT_PT: points, or 1/72 inch + * @RSVG_UNIT_PC: picas, or 1/6 inch (12 points) + * + * Units for the `RsvgLength` struct. These have the same meaning as [CSS length + * units](https://www.w3.org/TR/CSS21/syndata.html#length-units). + */ +typedef enum { + RSVG_UNIT_PERCENT, + RSVG_UNIT_PX, + RSVG_UNIT_EM, + RSVG_UNIT_EX, + RSVG_UNIT_IN, + RSVG_UNIT_CM, + RSVG_UNIT_MM, + RSVG_UNIT_PT, + RSVG_UNIT_PC +} RsvgUnit; + +/** + * RsvgLength: + * @length: numeric part of the length + * @unit: unit part of the length + * + * `RsvgLength` values are used in [method@Rsvg.Handle.get_intrinsic_dimensions], for + * example, to return the CSS length values of the `width` and + * `height` attributes of an `` element. + * + * This is equivalent to [CSS lengths](https://www.w3.org/TR/CSS21/syndata.html#length-units). + * + * It is up to the calling application to convert lengths in non-pixel units + * (i.e. those where the @unit field is not `RSVG_UNIT_PX`) into something + * meaningful to the application. For example, if your application knows the + * dots-per-inch (DPI) it is using, it can convert lengths with @unit in + * `RSVG_UNIT_IN` or other physical units. + */ +typedef struct { + double length; + RsvgUnit unit; +} RsvgLength; + +/** + * rsvg_handle_get_intrinsic_dimensions: + * @handle: An [class@Rsvg.Handle] + * @out_has_width: (out)(optional): Will be set to `TRUE`; see below. + * @out_width: (out)(optional): Will be set to the computed value of the `width` property in the toplevel SVG. + * @out_has_height: (out)(optional): Will be set to `TRUE`; see below. + * @out_height: (out)(optional): Will be set to the computed value of the `height` property in the toplevel SVG. + * @out_has_viewbox: (out)(optional): Will be set to `TRUE` if the toplevel SVG has a `viewBox` attribute + * @out_viewbox: (out)(optional): Will be set to the value of the `viewBox` attribute in the toplevel SVG + * + * In simple terms, queries the `width`, `height`, and `viewBox` attributes in an SVG document. + * + * If you are calling this function to compute a scaling factor to render the SVG, + * consider simply using [method@Rsvg.Handle.render_document] instead; it will do the + * scaling computations automatically. + * + * Before librsvg 2.54.0, the `out_has_width` and `out_has_height` arguments would be set to true or false + * depending on whether the SVG document actually had `width` and `height` attributes, respectively. + * + * However, since librsvg 2.54.0, `width` and `height` are now [geometry + * properties](https://www.w3.org/TR/SVG2/geometry.html) per the SVG2 specification; they + * are not plain attributes. SVG2 made it so that the initial value of those properties + * is `auto`, which is equivalent to specifing a value of `100%`. In this sense, even SVG + * documents which lack `width` or `height` attributes semantically have to make them + * default to `100%`. This is why since librsvg 2.54.0, `out_has_width` and + * `out_has_heigth` are always returned as `TRUE`, since with SVG2 all documents *have* a + * default width and height of `100%`. + * + * As an example, the following SVG element has a `width` of 100 pixels and a `height` of 400 pixels, but no `viewBox`. This + * function will return those sizes in `out_width` and `out_height`, and set `out_has_viewbox` to `FALSE`. + * + * ``` + * + * ``` + * + * Conversely, the following element has a `viewBox`, but no `width` or `height`. This function will + * set `out_has_viewbox` to `TRUE`, and it will also set `out_has_width` and `out_has_height` to `TRUE` but + * return both length values as `100%`. + * + * ``` + * + * ``` + * + * Note that the `RsvgLength` return values have `RsvgUnits` in them; you should + * not assume that they are always in pixels. For example, the following SVG element + * will return width and height values whose `units` fields are `RSVG_UNIT_MM`. + * + * ``` + * + * ``` + * + * API ordering: This function must be called on a fully-loaded @handle. See + * the section "[API ordering](class.Handle.html#api-ordering)" for details. + * + * Panics: this function will panic if the @handle is not fully-loaded. + * + * Since: 2.46 + */ +RSVG_API +void rsvg_handle_get_intrinsic_dimensions (RsvgHandle *handle, + gboolean *out_has_width, + RsvgLength *out_width, + gboolean *out_has_height, + RsvgLength *out_height, + gboolean *out_has_viewbox, + RsvgRectangle *out_viewbox); + +/** + * rsvg_handle_get_intrinsic_size_in_pixels: + * @handle: An [class@Rsvg.Handle] + * @out_width: (out)(optional): Will be set to the computed width; you should round this up to get integer pixels. + * @out_height: (out)(optional): Will be set to the computed height; you should round this up to get integer pixels. + * + * Converts an SVG document's intrinsic dimensions to pixels, and returns the result. + * + * This function is able to extract the size in pixels from an SVG document if the + * document has both `width` and `height` attributes + * with physical units (px, in, cm, mm, pt, pc) or font-based units (em, ex). For + * physical units, the dimensions are normalized to pixels using the dots-per-inch (DPI) + * value set previously with [method@Rsvg.Handle.set_dpi]. For font-based units, this function + * uses the computed value of the `font-size` property for the toplevel + * `` element. In those cases, this function returns `TRUE`. + * + * This function is not able to extract the size in pixels directly from the intrinsic + * dimensions of the SVG document if the `width` or + * `height` are in percentage units (or if they do not exist, in which + * case the SVG spec mandates that they default to 100%), as these require a + * viewport to be resolved to a final size. In this case, the + * function returns `FALSE`. + * + * For example, the following document fragment has intrinsic dimensions that will resolve + * to 20x30 pixels. + * + * ``` + * + * ``` + * + * Similarly, if the DPI is set to 96, this document will resolve to 192×288 pixels (i.e. 96×2 × 96×3). + * + * ``` + * + * ``` + * + * The dimensions of the following documents cannot be resolved to pixels directly, and + * this function would return `FALSE` for them: + * + * ``` + * + * + * + * + * + * ``` + * + * Instead of querying an SVG document's size, applications are encouraged to render SVG + * documents to a size chosen by the application, by passing a suitably-sized viewport to + * [method@Rsvg.Handle.render_document]. + * + * Returns: `TRUE` if the dimensions could be converted directly to pixels; in this case + * @out_width and @out_height will be set accordingly. Note that the dimensions are + * floating-point numbers, so your application can know the exact size of an SVG document. + * To get integer dimensions, you should use `ceil()` to round up to the nearest integer + * (just using `round()`, may may chop off pixels with fractional coverage). If the + * dimensions cannot be converted to pixels, returns `FALSE` and puts 0.0 in both + * @out_width and @out_height. + * + * Since: 2.52 + */ +RSVG_API +gboolean rsvg_handle_get_intrinsic_size_in_pixels (RsvgHandle *handle, + gdouble *out_width, + gdouble *out_height); + +/* GIO APIs */ + +/** + * RsvgHandleFlags: + * @RSVG_HANDLE_FLAGS_NONE: No flags are set. + * @RSVG_HANDLE_FLAG_UNLIMITED: Disable safety limits in the XML parser. Libxml2 has + * [several limits](https://gitlab.gnome.org/GNOME/libxml2/blob/master/include/libxml/parserInternals.h) + * designed to keep malicious XML content from consuming too much memory while parsing. + * For security reasons, this should only be used for trusted input! Since: 2.40.3 + * @RSVG_HANDLE_FLAG_KEEP_IMAGE_DATA: Use this if the Cairo surface to which you are + * rendering is a PDF, PostScript, SVG, or Win32 Printing surface. This will make librsvg + * and Cairo use the original, compressed data for images in the final output, instead of + * passing uncompressed images. For example, this will make the a resulting PDF file + * smaller and faster. Please see [the Cairo + * documentation](https://www.cairographics.org/manual/cairo-cairo-surface-t.html#cairo-surface-set-mime-data) + * for details. + * + * Configuration flags for an [class@Rsvg.Handle]. Note that not all of [class@Rsvg.Handle]'s + * constructors let you specify flags. For this reason, [ctor@Rsvg.Handle.new_from_gfile_sync] + * and [ctor@Rsvg.Handle.new_from_stream_sync] are the preferred ways to create a handle. + * + * Since: 2.40.3 + */ +typedef enum /*< flags >*/ +{ + RSVG_HANDLE_FLAGS_NONE = 0, + RSVG_HANDLE_FLAG_UNLIMITED = 1 << 0, + RSVG_HANDLE_FLAG_KEEP_IMAGE_DATA = 1 << 1 +} RsvgHandleFlags; + +RSVG_API +GType rsvg_handle_flags_get_type (void); +#define RSVG_TYPE_HANDLE_FLAGS (rsvg_handle_flags_get_type()) + +/** + * rsvg_handle_new_with_flags: + * @flags: flags from [flags@Rsvg.HandleFlags] + * + * Creates a new [class@Rsvg.Handle] with flags @flags. After calling this function, + * you can feed the resulting handle with SVG data by using + * [method@Rsvg.Handle.read_stream_sync]. + * + * Returns: (transfer full): a new [class@Rsvg.Handle] + * + * Since: 2.36 + **/ +RSVG_API +RsvgHandle *rsvg_handle_new_with_flags (RsvgHandleFlags flags); + +/** + * rsvg_handle_set_base_gfile: + * @handle: a [class@Rsvg.Handle] + * @base_file: a `GFile` + * + * Set the base URI for @handle from @file. + * + * Note: This function may only be called before [method@Rsvg.Handle.write] or + * [method@Rsvg.Handle.read_stream_sync] have been called. + * + * Since: 2.32 + */ +RSVG_API +void rsvg_handle_set_base_gfile (RsvgHandle *handle, + GFile *base_file); + +/** + * rsvg_handle_read_stream_sync: + * @handle: a [class@Rsvg.Handle] + * @stream: a `GInputStream` + * @cancellable: (nullable): a `GCancellable`, or `NULL` + * @error: return location for a `GError` + * + * Reads @stream and writes the data from it to @handle. + * + * Before calling this function, you may need to call [method@Rsvg.Handle.set_base_uri] + * or [method@Rsvg.Handle.set_base_gfile] to set the "base file" for resolving + * references to external resources. SVG elements like + * `` which reference external resources will be + * resolved relative to the location you specify with those functions. + * + * If @cancellable is not `NULL`, then the operation can be cancelled by + * triggering the cancellable object from another thread. If the + * operation was cancelled, the error `G_IO_ERROR_CANCELLED` will be + * returned. + * + * Returns: `TRUE` if reading @stream succeeded, or `FALSE` otherwise + * with @error filled in + * + * Since: 2.32 + */ +RSVG_API +gboolean rsvg_handle_read_stream_sync (RsvgHandle *handle, + GInputStream *stream, + GCancellable *cancellable, + GError **error); + +/** + * rsvg_handle_new_from_gfile_sync: + * @file: a `GFile` + * @flags: flags from [flags@Rsvg.HandleFlags] + * @cancellable: (nullable): a `GCancellable`, or `NULL` + * @error: return location for a `GError` + * + * Creates a new [class@Rsvg.Handle] for @file. + * + * This function sets the "base file" of the handle to be @file itself, so SVG + * elements like `` which reference external + * resources will be resolved relative to the location of @file. + * + * If @cancellable is not `NULL`, then the operation can be cancelled by + * triggering the cancellable object from another thread. If the + * operation was cancelled, the error `G_IO_ERROR_CANCELLED` will be + * returned in @error. + * + * Returns: (transfer full) (nullable): a new [class@Rsvg.Handle] on success, or `NULL` with @error filled in + * + * Since: 2.32 + */ +RSVG_API +RsvgHandle *rsvg_handle_new_from_gfile_sync (GFile *file, + RsvgHandleFlags flags, + GCancellable *cancellable, + GError **error); + +/** + * rsvg_handle_new_from_stream_sync: + * @input_stream: a `GInputStream` + * @base_file: (nullable): a `GFile`, or `NULL` + * @flags: flags from [flags@Rsvg.HandleFlags] + * @cancellable: (nullable): a `GCancellable`, or `NULL` + * @error: return location for a `GError` + * + * Creates a new [class@Rsvg.Handle] for @stream. + * + * This function sets the "base file" of the handle to be @base_file if + * provided. SVG elements like `` which reference + * external resources will be resolved relative to the location of @base_file. + * + * If @cancellable is not `NULL`, then the operation can be cancelled by + * triggering the cancellable object from another thread. If the + * operation was cancelled, the error `G_IO_ERROR_CANCELLED` will be + * returned in @error. + * + * Returns: (transfer full) (nullable): a new [class@Rsvg.Handle] on success, or `NULL` with @error filled in + * + * Since: 2.32 + */ +RSVG_API +RsvgHandle *rsvg_handle_new_from_stream_sync (GInputStream *input_stream, + GFile *base_file, + RsvgHandleFlags flags, + GCancellable *cancellable, + GError **error); + +/** + * rsvg_handle_new_from_data: + * @data: (array length=data_len): The SVG data + * @data_len: The length of @data, in bytes + * @error: return location for a `GError` + * + * Loads the SVG specified by @data. Note that this function creates an + * [class@Rsvg.Handle] without a base URL, and without any [flags@Rsvg.HandleFlags]. If you + * need these, use [ctor@Rsvg.Handle.new_from_stream_sync] instead by creating + * a [class@Gio.MemoryInputStream] from your data. + * + * Returns: (transfer full) (nullable): A [class@Rsvg.Handle] or `NULL` if an error occurs. + * Since: 2.14 + */ +RSVG_API +RsvgHandle *rsvg_handle_new_from_data (const guint8 *data, gsize data_len, GError **error); + +/** + * rsvg_handle_new_from_file: + * @filename: The file name to load, or a URI. + * @error: return location for a `GError` + * + * Loads the SVG specified by @file_name. Note that this function, like + * [ctor@Rsvg.Handle.new], does not specify any loading flags for the resulting + * handle. If you require the use of [flags@Rsvg.HandleFlags], use + * [ctor@Rsvg.Handle.new_from_gfile_sync]. + * + * Returns: (transfer full) (nullable): A [class@Rsvg.Handle] or `NULL` if an error occurs. + * Since: 2.14 + */ +RSVG_API +RsvgHandle *rsvg_handle_new_from_file (const gchar *filename, GError **error); + +/** + * rsvg_handle_set_stylesheet: + * @handle: A [class@Rsvg.Handle]. + * @css: (array length=css_len): String with CSS data; must be valid UTF-8. + * @css_len: Length of the @css data in bytes. + * @error: return location for a `GError` + * + * Sets a CSS stylesheet to use for an SVG document. + * + * The @css_len argument is mandatory; this function will not compute the length + * of the @css string. This is because a provided stylesheet, which the calling + * program could read from a file, can have nul characters in it. + * + * During the CSS cascade, the specified stylesheet will be used with a "User" + * [origin](https://drafts.csswg.org/css-cascade-3/#cascading-origins). + * + * Note that `@import` rules will not be resolved, except for `data:` URLs. + * + * Returns: `TRUE` on success, `FALSE` on error. Errors are returned + * in the @error argument. + * + * Since: 2.48 + */ +RSVG_API +gboolean rsvg_handle_set_stylesheet (RsvgHandle *handle, + const guint8 *css, + gsize css_len, + GError **error); + +#ifndef __GTK_DOC_IGNORE__ +/** + * rsvg_handle_internal_set_testing: + * @handle: a [class@Rsvg.Handle] + * @testing: Whether to enable testing mode + * + * Do not call this function. This is intended for librsvg's internal + * test suite only. + **/ +RSVG_API +void rsvg_handle_internal_set_testing (RsvgHandle *handle, gboolean testing); +#endif /* __GTK_DOC_IGNORE__ */ + +/* BEGIN deprecated APIs. Do not use! */ + +/** + * rsvg_init: + * + * This function does nothing. + * + * Since: 2.9 + * Deprecated: 2.36: There is no need to initialize librsvg. + **/ +RSVG_DEPRECATED_FOR(g_type_init) +void rsvg_init (void); + +/** + * rsvg_term: + * + * This function does nothing. + * + * Since: 2.9 + * Deprecated: 2.36: There is no need to de-initialize librsvg. + **/ +RSVG_DEPRECATED +void rsvg_term (void); + +/** + * rsvg_handle_free: + * @handle: An [class@Rsvg.Handle] + * + * Frees @handle. + * Deprecated: Use [method@GObject.Object.unref] instead. + **/ +RSVG_DEPRECATED_FOR(g_object_unref) +void rsvg_handle_free (RsvgHandle *handle); + +/** + * RsvgSizeFunc: + * @width: (out): the width of the SVG + * @height: (out): the height of the SVG + * @user_data: user data + * + * Function to let a user of the library specify the SVG's dimensions + * + * See the documentation for [method@Rsvg.Handle.set_size_callback] for an example, and + * for the reasons for deprecation. + * + * Deprecated: 2.14. Use [method@Rsvg.Handle.render_document] instead, which lets you specify + * a viewport size in which to render the SVG document. + */ +typedef void (*RsvgSizeFunc) (gint * width, gint * height, gpointer user_data); + +/** + * rsvg_handle_set_size_callback: + * @handle: An [class@Rsvg.Handle] + * @size_func: (nullable): A sizing function, or `NULL` + * @user_data: User data to pass to @size_func, or `NULL` + * @user_data_destroy: Function to be called to destroy the data passed in @user_data, + * or `NULL`. + * + * Sets the sizing function for the @handle, which can be used to override the + * size that librsvg computes for SVG images. The @size_func is called from the + * following functions: + * + * * [method@Rsvg.Handle.get_dimensions] + * * [method@Rsvg.Handle.get_dimensions_sub] + * * [method@Rsvg.Handle.get_position_sub] + * * [method@Rsvg.Handle.render_cairo] + * * [method@Rsvg.Handle.render_cairo_sub] + * + * Librsvg computes the size of the SVG being rendered, and passes it to the + * @size_func, which may then modify these values to set the final size of the + * generated image. + * + * Deprecated: 2.14. Use [method@Rsvg.Handle.render_document] instead. + * This function was deprecated because when the @size_func is used, it makes it + * unclear when the librsvg functions which call the @size_func will use the + * size computed originally, or the callback-specified size, or whether it + * refers to the whole SVG or to just a sub-element of it. It is easier, and + * unambiguous, to use code similar to the example above. + **/ +RSVG_DEPRECATED +void rsvg_handle_set_size_callback (RsvgHandle *handle, + RsvgSizeFunc size_func, + gpointer user_data, + GDestroyNotify user_data_destroy); + +/* GdkPixbuf convenience API */ + +/** + * rsvg-pixbuf: + * + * Years ago, GNOME and GTK used the gdk-pixbuf library as a general mechanism to load + * raster images into memory (PNG, JPEG, etc.) and pass them around. The general idiom + * was, "load this image file and give me a `GdkPixbuf` object", which is basically a pixel + * buffer. Librsvg supports this kind of interface to load and render SVG documents, but + * it is deprecated in favor of rendering to Cairo contexts. + */ + +/** + * rsvg_pixbuf_from_file: + * @filename: A file name + * @error: return location for a `GError` + * + * Loads a new `GdkPixbuf` from @filename and returns it. The caller must + * assume the reference to the reurned pixbuf. If an error occurred, @error is + * set and `NULL` is returned. + * + * Returns: (transfer full) (nullable): A pixbuf, or %NULL on error. + * Deprecated: Use [ctor@Rsvg.Handle.new_from_file] and [method@Rsvg.Handle.render_document] instead. + **/ +RSVG_DEPRECATED +GdkPixbuf *rsvg_pixbuf_from_file (const gchar *filename, + GError **error); + +/** + * rsvg_pixbuf_from_file_at_zoom: + * @filename: A file name + * @x_zoom: The horizontal zoom factor + * @y_zoom: The vertical zoom factor + * @error: return location for a `GError` + * + * Loads a new `GdkPixbuf` from @filename and returns it. This pixbuf is scaled + * from the size indicated by the file by a factor of @x_zoom and @y_zoom. The + * caller must assume the reference to the returned pixbuf. If an error + * occurred, @error is set and `NULL` is returned. + * + * Returns: (transfer full) (nullable): A pixbuf, or %NULL on error. + * Deprecated: Use [ctor@Rsvg.Handle.new_from_file] and [method@Rsvg.Handle.render_document] instead. + **/ +RSVG_DEPRECATED +GdkPixbuf *rsvg_pixbuf_from_file_at_zoom (const gchar *filename, + double x_zoom, + double y_zoom, + GError **error); + +/** + * rsvg_pixbuf_from_file_at_size: + * @filename: A file name + * @width: The new width, or -1 + * @height: The new height, or -1 + * @error: return location for a `GError` + * + * Loads a new `GdkPixbuf` from @filename and returns it. This pixbuf is scaled + * from the size indicated to the new size indicated by @width and @height. If + * both of these are -1, then the default size of the image being loaded is + * used. The caller must assume the reference to the returned pixbuf. If an + * error occurred, @error is set and `NULL` is returned. + * + * Returns: (transfer full) (nullable): A pixbuf, or %NULL on error. + * Deprecated: Use [ctor@Rsvg.Handle.new_from_file] and [method@Rsvg.Handle.render_document] instead. + **/ +RSVG_DEPRECATED +GdkPixbuf *rsvg_pixbuf_from_file_at_size (const gchar *filename, + gint width, + gint height, + GError **error); + +/** + * rsvg_pixbuf_from_file_at_max_size: + * @filename: A file name + * @max_width: The requested max width + * @max_height: The requested max height + * @error: return location for a `GError` + * + * Loads a new `GdkPixbuf` from @filename and returns it. This pixbuf is uniformly + * scaled so that the it fits into a rectangle of size `max_width * max_height`. The + * caller must assume the reference to the returned pixbuf. If an error occurred, + * @error is set and `NULL` is returned. + * + * Returns: (transfer full) (nullable): A pixbuf, or %NULL on error. + * Deprecated: Use [ctor@Rsvg.Handle.new_from_file] and [method@Rsvg.Handle.render_document] instead. + **/ +RSVG_DEPRECATED +GdkPixbuf *rsvg_pixbuf_from_file_at_max_size (const gchar *filename, + gint max_width, + gint max_height, + GError **error); +/** + * rsvg_pixbuf_from_file_at_zoom_with_max: + * @filename: A file name + * @x_zoom: The horizontal zoom factor + * @y_zoom: The vertical zoom factor + * @max_width: The requested max width + * @max_height: The requested max height + * @error: return location for a `GError` + * + * Loads a new `GdkPixbuf` from @filename and returns it. This pixbuf is scaled + * from the size indicated by the file by a factor of @x_zoom and @y_zoom. If the + * resulting pixbuf would be larger than max_width/max_heigh it is uniformly scaled + * down to fit in that rectangle. The caller must assume the reference to the + * returned pixbuf. If an error occurred, @error is set and `NULL` is returned. + * + * Returns: (transfer full) (nullable): A pixbuf, or %NULL on error. + * Deprecated: Use [ctor@Rsvg.Handle.new_from_file] and [method@Rsvg.Handle.render_document] instead. + **/ +RSVG_DEPRECATED +GdkPixbuf *rsvg_pixbuf_from_file_at_zoom_with_max (const gchar *filename, + double x_zoom, + double y_zoom, + gint max_width, + gint max_height, + GError **error); + +/** + * rsvg_handle_get_title: + * @handle: An [class@Rsvg.Handle] + * + * Returns: (nullable): This function always returns `NULL`. + * + * Since: 2.4 + * + * Deprecated: 2.36. Librsvg does not read the metadata/desc/title elements; + * this function always returns `NULL`. + */ +RSVG_DEPRECATED +const char *rsvg_handle_get_title (RsvgHandle *handle); + +/** + * rsvg_handle_get_desc: + * @handle: An [class@Rsvg.Handle] + * + * Returns: (nullable): This function always returns `NULL`. + * + * Since: 2.4 + * + * Deprecated: 2.36. Librsvg does not read the metadata/desc/title elements; + * this function always returns `NULL`. + */ +RSVG_DEPRECATED +const char *rsvg_handle_get_desc (RsvgHandle *handle); + +/** + * rsvg_handle_get_metadata: + * @handle: An [class@Rsvg.Handle] + * + * Returns: (nullable): This function always returns `NULL`. + * + * Since: 2.9 + * + * Deprecated: 2.36. Librsvg does not read the metadata/desc/title elements; + * this function always returns `NULL`. + */ +RSVG_DEPRECATED +const char *rsvg_handle_get_metadata (RsvgHandle *handle); + +/* END deprecated APIs. */ + +G_END_DECLS + +#include +#include +#include + +#undef __RSVG_RSVG_H_INSIDE__ + +#endif /* RSVG_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/HTMLparser.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/HTMLparser.h new file mode 100644 index 0000000..1d4fec2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/HTMLparser.h @@ -0,0 +1,306 @@ +/* + * Summary: interface for an HTML 4.0 non-verifying parser + * Description: this module implements an HTML 4.0 non-verifying parser + * with API compatible with the XML parser ones. It should + * be able to parse "real world" HTML, even if severely + * broken from a specification point of view. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __HTML_PARSER_H__ +#define __HTML_PARSER_H__ +#include +#include + +#ifdef LIBXML_HTML_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Most of the back-end structures from XML and HTML are shared. + */ +typedef xmlParserCtxt htmlParserCtxt; +typedef xmlParserCtxtPtr htmlParserCtxtPtr; +typedef xmlParserNodeInfo htmlParserNodeInfo; +typedef xmlSAXHandler htmlSAXHandler; +typedef xmlSAXHandlerPtr htmlSAXHandlerPtr; +typedef xmlParserInput htmlParserInput; +typedef xmlParserInputPtr htmlParserInputPtr; +typedef xmlDocPtr htmlDocPtr; +typedef xmlNodePtr htmlNodePtr; + +/* + * Internal description of an HTML element, representing HTML 4.01 + * and XHTML 1.0 (which share the same structure). + */ +typedef struct _htmlElemDesc htmlElemDesc; +typedef htmlElemDesc *htmlElemDescPtr; +struct _htmlElemDesc { + const char *name; /* The tag name */ + char startTag; /* Whether the start tag can be implied */ + char endTag; /* Whether the end tag can be implied */ + char saveEndTag; /* Whether the end tag should be saved */ + char empty; /* Is this an empty element ? */ + char depr; /* Is this a deprecated element ? */ + char dtd; /* 1: only in Loose DTD, 2: only Frameset one */ + char isinline; /* is this a block 0 or inline 1 element */ + const char *desc; /* the description */ + +/* NRK Jan.2003 + * New fields encapsulating HTML structure + * + * Bugs: + * This is a very limited representation. It fails to tell us when + * an element *requires* subelements (we only have whether they're + * allowed or not), and it doesn't tell us where CDATA and PCDATA + * are allowed. Some element relationships are not fully represented: + * these are flagged with the word MODIFIER + */ + const char** subelts; /* allowed sub-elements of this element */ + const char* defaultsubelt; /* subelement for suggested auto-repair + if necessary or NULL */ + const char** attrs_opt; /* Optional Attributes */ + const char** attrs_depr; /* Additional deprecated attributes */ + const char** attrs_req; /* Required attributes */ +}; + +/* + * Internal description of an HTML entity. + */ +typedef struct _htmlEntityDesc htmlEntityDesc; +typedef htmlEntityDesc *htmlEntityDescPtr; +struct _htmlEntityDesc { + unsigned int value; /* the UNICODE value for the character */ + const char *name; /* The entity name */ + const char *desc; /* the description */ +}; + +/* + * There is only few public functions. + */ +XMLPUBFUN const htmlElemDesc * XMLCALL + htmlTagLookup (const xmlChar *tag); +XMLPUBFUN const htmlEntityDesc * XMLCALL + htmlEntityLookup(const xmlChar *name); +XMLPUBFUN const htmlEntityDesc * XMLCALL + htmlEntityValueLookup(unsigned int value); + +XMLPUBFUN int XMLCALL + htmlIsAutoClosed(htmlDocPtr doc, + htmlNodePtr elem); +XMLPUBFUN int XMLCALL + htmlAutoCloseTag(htmlDocPtr doc, + const xmlChar *name, + htmlNodePtr elem); +XMLPUBFUN const htmlEntityDesc * XMLCALL + htmlParseEntityRef(htmlParserCtxtPtr ctxt, + const xmlChar **str); +XMLPUBFUN int XMLCALL + htmlParseCharRef(htmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + htmlParseElement(htmlParserCtxtPtr ctxt); + +XMLPUBFUN htmlParserCtxtPtr XMLCALL + htmlNewParserCtxt(void); + +XMLPUBFUN htmlParserCtxtPtr XMLCALL + htmlCreateMemoryParserCtxt(const char *buffer, + int size); + +XMLPUBFUN int XMLCALL + htmlParseDocument(htmlParserCtxtPtr ctxt); +XMLPUBFUN htmlDocPtr XMLCALL + htmlSAXParseDoc (const xmlChar *cur, + const char *encoding, + htmlSAXHandlerPtr sax, + void *userData); +XMLPUBFUN htmlDocPtr XMLCALL + htmlParseDoc (const xmlChar *cur, + const char *encoding); +XMLPUBFUN htmlDocPtr XMLCALL + htmlSAXParseFile(const char *filename, + const char *encoding, + htmlSAXHandlerPtr sax, + void *userData); +XMLPUBFUN htmlDocPtr XMLCALL + htmlParseFile (const char *filename, + const char *encoding); +XMLPUBFUN int XMLCALL + UTF8ToHtml (unsigned char *out, + int *outlen, + const unsigned char *in, + int *inlen); +XMLPUBFUN int XMLCALL + htmlEncodeEntities(unsigned char *out, + int *outlen, + const unsigned char *in, + int *inlen, int quoteChar); +XMLPUBFUN int XMLCALL + htmlIsScriptAttribute(const xmlChar *name); +XMLPUBFUN int XMLCALL + htmlHandleOmittedElem(int val); + +#ifdef LIBXML_PUSH_ENABLED +/** + * Interfaces for the Push mode. + */ +XMLPUBFUN htmlParserCtxtPtr XMLCALL + htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, + void *user_data, + const char *chunk, + int size, + const char *filename, + xmlCharEncoding enc); +XMLPUBFUN int XMLCALL + htmlParseChunk (htmlParserCtxtPtr ctxt, + const char *chunk, + int size, + int terminate); +#endif /* LIBXML_PUSH_ENABLED */ + +XMLPUBFUN void XMLCALL + htmlFreeParserCtxt (htmlParserCtxtPtr ctxt); + +/* + * New set of simpler/more flexible APIs + */ +/** + * xmlParserOption: + * + * This is the set of XML parser options that can be passed down + * to the xmlReadDoc() and similar calls. + */ +typedef enum { + HTML_PARSE_RECOVER = 1<<0, /* Relaxed parsing */ + HTML_PARSE_NODEFDTD = 1<<2, /* do not default a doctype if not found */ + HTML_PARSE_NOERROR = 1<<5, /* suppress error reports */ + HTML_PARSE_NOWARNING= 1<<6, /* suppress warning reports */ + HTML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ + HTML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ + HTML_PARSE_NONET = 1<<11,/* Forbid network access */ + HTML_PARSE_NOIMPLIED= 1<<13,/* Do not add implied html/body... elements */ + HTML_PARSE_COMPACT = 1<<16,/* compact small text nodes */ + HTML_PARSE_IGNORE_ENC=1<<21 /* ignore internal document encoding hint */ +} htmlParserOption; + +XMLPUBFUN void XMLCALL + htmlCtxtReset (htmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + htmlCtxtUseOptions (htmlParserCtxtPtr ctxt, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlReadDoc (const xmlChar *cur, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlReadFile (const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlReadMemory (const char *buffer, + int size, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlReadFd (int fd, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlReadIO (xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlCtxtReadDoc (xmlParserCtxtPtr ctxt, + const xmlChar *cur, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlCtxtReadFile (xmlParserCtxtPtr ctxt, + const char *filename, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlCtxtReadMemory (xmlParserCtxtPtr ctxt, + const char *buffer, + int size, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlCtxtReadFd (xmlParserCtxtPtr ctxt, + int fd, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN htmlDocPtr XMLCALL + htmlCtxtReadIO (xmlParserCtxtPtr ctxt, + xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + const char *URL, + const char *encoding, + int options); + +/* NRK/Jan2003: further knowledge of HTML structure + */ +typedef enum { + HTML_NA = 0 , /* something we don't check at all */ + HTML_INVALID = 0x1 , + HTML_DEPRECATED = 0x2 , + HTML_VALID = 0x4 , + HTML_REQUIRED = 0xc /* VALID bit set so ( & HTML_VALID ) is TRUE */ +} htmlStatus ; + +/* Using htmlElemDesc rather than name here, to emphasise the fact + that otherwise there's a lookup overhead +*/ +XMLPUBFUN htmlStatus XMLCALL htmlAttrAllowed(const htmlElemDesc*, const xmlChar*, int) ; +XMLPUBFUN int XMLCALL htmlElementAllowedHere(const htmlElemDesc*, const xmlChar*) ; +XMLPUBFUN htmlStatus XMLCALL htmlElementStatusHere(const htmlElemDesc*, const htmlElemDesc*) ; +XMLPUBFUN htmlStatus XMLCALL htmlNodeStatus(const htmlNodePtr, int) ; +/** + * htmlDefaultSubelement: + * @elt: HTML element + * + * Returns the default subelement for this element + */ +#define htmlDefaultSubelement(elt) elt->defaultsubelt +/** + * htmlElementAllowedHereDesc: + * @parent: HTML parent element + * @elt: HTML element + * + * Checks whether an HTML element description may be a + * direct child of the specified element. + * + * Returns 1 if allowed; 0 otherwise. + */ +#define htmlElementAllowedHereDesc(parent,elt) \ + htmlElementAllowedHere((parent), (elt)->name) +/** + * htmlRequiredAttrs: + * @elt: HTML element + * + * Returns the attributes required for the specified element. + */ +#define htmlRequiredAttrs(elt) (elt)->attrs_req + + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_HTML_ENABLED */ +#endif /* __HTML_PARSER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/HTMLtree.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/HTMLtree.h new file mode 100644 index 0000000..c0e1103 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/HTMLtree.h @@ -0,0 +1,147 @@ +/* + * Summary: specific APIs to process HTML tree, especially serialization + * Description: this module implements a few function needed to process + * tree in an HTML specific way. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __HTML_TREE_H__ +#define __HTML_TREE_H__ + +#include +#include +#include +#include + +#ifdef LIBXML_HTML_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * HTML_TEXT_NODE: + * + * Macro. A text node in a HTML document is really implemented + * the same way as a text node in an XML document. + */ +#define HTML_TEXT_NODE XML_TEXT_NODE +/** + * HTML_ENTITY_REF_NODE: + * + * Macro. An entity reference in a HTML document is really implemented + * the same way as an entity reference in an XML document. + */ +#define HTML_ENTITY_REF_NODE XML_ENTITY_REF_NODE +/** + * HTML_COMMENT_NODE: + * + * Macro. A comment in a HTML document is really implemented + * the same way as a comment in an XML document. + */ +#define HTML_COMMENT_NODE XML_COMMENT_NODE +/** + * HTML_PRESERVE_NODE: + * + * Macro. A preserved node in a HTML document is really implemented + * the same way as a CDATA section in an XML document. + */ +#define HTML_PRESERVE_NODE XML_CDATA_SECTION_NODE +/** + * HTML_PI_NODE: + * + * Macro. A processing instruction in a HTML document is really implemented + * the same way as a processing instruction in an XML document. + */ +#define HTML_PI_NODE XML_PI_NODE + +XMLPUBFUN htmlDocPtr XMLCALL + htmlNewDoc (const xmlChar *URI, + const xmlChar *ExternalID); +XMLPUBFUN htmlDocPtr XMLCALL + htmlNewDocNoDtD (const xmlChar *URI, + const xmlChar *ExternalID); +XMLPUBFUN const xmlChar * XMLCALL + htmlGetMetaEncoding (htmlDocPtr doc); +XMLPUBFUN int XMLCALL + htmlSetMetaEncoding (htmlDocPtr doc, + const xmlChar *encoding); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + htmlDocDumpMemory (xmlDocPtr cur, + xmlChar **mem, + int *size); +XMLPUBFUN void XMLCALL + htmlDocDumpMemoryFormat (xmlDocPtr cur, + xmlChar **mem, + int *size, + int format); +XMLPUBFUN int XMLCALL + htmlDocDump (FILE *f, + xmlDocPtr cur); +XMLPUBFUN int XMLCALL + htmlSaveFile (const char *filename, + xmlDocPtr cur); +XMLPUBFUN int XMLCALL + htmlNodeDump (xmlBufferPtr buf, + xmlDocPtr doc, + xmlNodePtr cur); +XMLPUBFUN void XMLCALL + htmlNodeDumpFile (FILE *out, + xmlDocPtr doc, + xmlNodePtr cur); +XMLPUBFUN int XMLCALL + htmlNodeDumpFileFormat (FILE *out, + xmlDocPtr doc, + xmlNodePtr cur, + const char *encoding, + int format); +XMLPUBFUN int XMLCALL + htmlSaveFileEnc (const char *filename, + xmlDocPtr cur, + const char *encoding); +XMLPUBFUN int XMLCALL + htmlSaveFileFormat (const char *filename, + xmlDocPtr cur, + const char *encoding, + int format); + +XMLPUBFUN void XMLCALL + htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, + xmlDocPtr doc, + xmlNodePtr cur, + const char *encoding, + int format); +XMLPUBFUN void XMLCALL + htmlDocContentDumpOutput(xmlOutputBufferPtr buf, + xmlDocPtr cur, + const char *encoding); +XMLPUBFUN void XMLCALL + htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf, + xmlDocPtr cur, + const char *encoding, + int format); +XMLPUBFUN void XMLCALL + htmlNodeDumpOutput (xmlOutputBufferPtr buf, + xmlDocPtr doc, + xmlNodePtr cur, + const char *encoding); + +#endif /* LIBXML_OUTPUT_ENABLED */ + +XMLPUBFUN int XMLCALL + htmlIsBooleanAttr (const xmlChar *name); + + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_HTML_ENABLED */ + +#endif /* __HTML_TREE_H__ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/SAX.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/SAX.h new file mode 100644 index 0000000..fa50568 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/SAX.h @@ -0,0 +1,204 @@ +/* + * Summary: Old SAX version 1 handler, deprecated + * Description: DEPRECATED set of SAX version 1 interfaces used to + * build the DOM tree. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_SAX_H__ +#define __XML_SAX_H__ + +#include +#include +#include +#include + +#ifdef LIBXML_LEGACY_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif +XML_DEPRECATED +XMLPUBFUN const xmlChar * XMLCALL + getPublicId (void *ctx); +XML_DEPRECATED +XMLPUBFUN const xmlChar * XMLCALL + getSystemId (void *ctx); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + setDocumentLocator (void *ctx, + xmlSAXLocatorPtr loc); + +XML_DEPRECATED +XMLPUBFUN int XMLCALL + getLineNumber (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + getColumnNumber (void *ctx); + +XML_DEPRECATED +XMLPUBFUN int XMLCALL + isStandalone (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + hasInternalSubset (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + hasExternalSubset (void *ctx); + +XML_DEPRECATED +XMLPUBFUN void XMLCALL + internalSubset (void *ctx, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + externalSubset (void *ctx, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +XML_DEPRECATED +XMLPUBFUN xmlEntityPtr XMLCALL + getEntity (void *ctx, + const xmlChar *name); +XML_DEPRECATED +XMLPUBFUN xmlEntityPtr XMLCALL + getParameterEntity (void *ctx, + const xmlChar *name); +XML_DEPRECATED +XMLPUBFUN xmlParserInputPtr XMLCALL + resolveEntity (void *ctx, + const xmlChar *publicId, + const xmlChar *systemId); + +XML_DEPRECATED +XMLPUBFUN void XMLCALL + entityDecl (void *ctx, + const xmlChar *name, + int type, + const xmlChar *publicId, + const xmlChar *systemId, + xmlChar *content); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + attributeDecl (void *ctx, + const xmlChar *elem, + const xmlChar *fullname, + int type, + int def, + const xmlChar *defaultValue, + xmlEnumerationPtr tree); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + elementDecl (void *ctx, + const xmlChar *name, + int type, + xmlElementContentPtr content); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + notationDecl (void *ctx, + const xmlChar *name, + const xmlChar *publicId, + const xmlChar *systemId); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + unparsedEntityDecl (void *ctx, + const xmlChar *name, + const xmlChar *publicId, + const xmlChar *systemId, + const xmlChar *notationName); + +XML_DEPRECATED +XMLPUBFUN void XMLCALL + startDocument (void *ctx); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + endDocument (void *ctx); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + attribute (void *ctx, + const xmlChar *fullname, + const xmlChar *value); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + startElement (void *ctx, + const xmlChar *fullname, + const xmlChar **atts); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + endElement (void *ctx, + const xmlChar *name); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + reference (void *ctx, + const xmlChar *name); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + characters (void *ctx, + const xmlChar *ch, + int len); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + ignorableWhitespace (void *ctx, + const xmlChar *ch, + int len); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + processingInstruction (void *ctx, + const xmlChar *target, + const xmlChar *data); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + globalNamespace (void *ctx, + const xmlChar *href, + const xmlChar *prefix); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + setNamespace (void *ctx, + const xmlChar *name); +XML_DEPRECATED +XMLPUBFUN xmlNsPtr XMLCALL + getNamespace (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + checkNamespace (void *ctx, + xmlChar *nameSpace); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + namespaceDecl (void *ctx, + const xmlChar *href, + const xmlChar *prefix); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + comment (void *ctx, + const xmlChar *value); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + cdataBlock (void *ctx, + const xmlChar *value, + int len); + +#ifdef LIBXML_SAX1_ENABLED +XML_DEPRECATED +XMLPUBFUN void XMLCALL + initxmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr, + int warning); +#ifdef LIBXML_HTML_ENABLED +XML_DEPRECATED +XMLPUBFUN void XMLCALL + inithtmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr); +#endif +#endif /* LIBXML_SAX1_ENABLED */ + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_LEGACY_ENABLED */ + +#endif /* __XML_SAX_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/SAX2.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/SAX2.h new file mode 100644 index 0000000..8e9b0b9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/SAX2.h @@ -0,0 +1,172 @@ +/* + * Summary: SAX2 parser interface used to build the DOM tree + * Description: those are the default SAX2 interfaces used by + * the library when building DOM tree. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_SAX2_H__ +#define __XML_SAX2_H__ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +XMLPUBFUN const xmlChar * XMLCALL + xmlSAX2GetPublicId (void *ctx); +XMLPUBFUN const xmlChar * XMLCALL + xmlSAX2GetSystemId (void *ctx); +XMLPUBFUN void XMLCALL + xmlSAX2SetDocumentLocator (void *ctx, + xmlSAXLocatorPtr loc); + +XMLPUBFUN int XMLCALL + xmlSAX2GetLineNumber (void *ctx); +XMLPUBFUN int XMLCALL + xmlSAX2GetColumnNumber (void *ctx); + +XMLPUBFUN int XMLCALL + xmlSAX2IsStandalone (void *ctx); +XMLPUBFUN int XMLCALL + xmlSAX2HasInternalSubset (void *ctx); +XMLPUBFUN int XMLCALL + xmlSAX2HasExternalSubset (void *ctx); + +XMLPUBFUN void XMLCALL + xmlSAX2InternalSubset (void *ctx, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +XMLPUBFUN void XMLCALL + xmlSAX2ExternalSubset (void *ctx, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlSAX2GetEntity (void *ctx, + const xmlChar *name); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlSAX2GetParameterEntity (void *ctx, + const xmlChar *name); +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlSAX2ResolveEntity (void *ctx, + const xmlChar *publicId, + const xmlChar *systemId); + +XMLPUBFUN void XMLCALL + xmlSAX2EntityDecl (void *ctx, + const xmlChar *name, + int type, + const xmlChar *publicId, + const xmlChar *systemId, + xmlChar *content); +XMLPUBFUN void XMLCALL + xmlSAX2AttributeDecl (void *ctx, + const xmlChar *elem, + const xmlChar *fullname, + int type, + int def, + const xmlChar *defaultValue, + xmlEnumerationPtr tree); +XMLPUBFUN void XMLCALL + xmlSAX2ElementDecl (void *ctx, + const xmlChar *name, + int type, + xmlElementContentPtr content); +XMLPUBFUN void XMLCALL + xmlSAX2NotationDecl (void *ctx, + const xmlChar *name, + const xmlChar *publicId, + const xmlChar *systemId); +XMLPUBFUN void XMLCALL + xmlSAX2UnparsedEntityDecl (void *ctx, + const xmlChar *name, + const xmlChar *publicId, + const xmlChar *systemId, + const xmlChar *notationName); + +XMLPUBFUN void XMLCALL + xmlSAX2StartDocument (void *ctx); +XMLPUBFUN void XMLCALL + xmlSAX2EndDocument (void *ctx); +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ + defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_LEGACY_ENABLED) +XMLPUBFUN void XMLCALL + xmlSAX2StartElement (void *ctx, + const xmlChar *fullname, + const xmlChar **atts); +XMLPUBFUN void XMLCALL + xmlSAX2EndElement (void *ctx, + const xmlChar *name); +#endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED or LIBXML_LEGACY_ENABLED */ +XMLPUBFUN void XMLCALL + xmlSAX2StartElementNs (void *ctx, + const xmlChar *localname, + const xmlChar *prefix, + const xmlChar *URI, + int nb_namespaces, + const xmlChar **namespaces, + int nb_attributes, + int nb_defaulted, + const xmlChar **attributes); +XMLPUBFUN void XMLCALL + xmlSAX2EndElementNs (void *ctx, + const xmlChar *localname, + const xmlChar *prefix, + const xmlChar *URI); +XMLPUBFUN void XMLCALL + xmlSAX2Reference (void *ctx, + const xmlChar *name); +XMLPUBFUN void XMLCALL + xmlSAX2Characters (void *ctx, + const xmlChar *ch, + int len); +XMLPUBFUN void XMLCALL + xmlSAX2IgnorableWhitespace (void *ctx, + const xmlChar *ch, + int len); +XMLPUBFUN void XMLCALL + xmlSAX2ProcessingInstruction (void *ctx, + const xmlChar *target, + const xmlChar *data); +XMLPUBFUN void XMLCALL + xmlSAX2Comment (void *ctx, + const xmlChar *value); +XMLPUBFUN void XMLCALL + xmlSAX2CDataBlock (void *ctx, + const xmlChar *value, + int len); + +#ifdef LIBXML_SAX1_ENABLED +XMLPUBFUN int XMLCALL + xmlSAXDefaultVersion (int version); +#endif /* LIBXML_SAX1_ENABLED */ + +XMLPUBFUN int XMLCALL + xmlSAXVersion (xmlSAXHandler *hdlr, + int version); +XMLPUBFUN void XMLCALL + xmlSAX2InitDefaultSAXHandler (xmlSAXHandler *hdlr, + int warning); +#ifdef LIBXML_HTML_ENABLED +XMLPUBFUN void XMLCALL + xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + htmlDefaultSAXHandlerInit (void); +#endif +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlDefaultSAXHandlerInit (void); +#ifdef __cplusplus +} +#endif +#endif /* __XML_SAX2_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/c14n.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/c14n.h new file mode 100644 index 0000000..af93de6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/c14n.h @@ -0,0 +1,128 @@ +/* + * Summary: Provide Canonical XML and Exclusive XML Canonicalization + * Description: the c14n modules provides a + * + * "Canonical XML" implementation + * http://www.w3.org/TR/xml-c14n + * + * and an + * + * "Exclusive XML Canonicalization" implementation + * http://www.w3.org/TR/xml-exc-c14n + + * Copy: See Copyright for the status of this software. + * + * Author: Aleksey Sanin + */ +#ifndef __XML_C14N_H__ +#define __XML_C14N_H__ + +#include + +#ifdef LIBXML_C14N_ENABLED +#ifdef LIBXML_OUTPUT_ENABLED + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* + * XML Canonicalization + * http://www.w3.org/TR/xml-c14n + * + * Exclusive XML Canonicalization + * http://www.w3.org/TR/xml-exc-c14n + * + * Canonical form of an XML document could be created if and only if + * a) default attributes (if any) are added to all nodes + * b) all character and parsed entity references are resolved + * In order to achieve this in libxml2 the document MUST be loaded with + * following global settings: + * + * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; + * xmlSubstituteEntitiesDefault(1); + * + * or corresponding parser context setting: + * xmlParserCtxtPtr ctxt; + * + * ... + * ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS; + * ctxt->replaceEntities = 1; + * ... + */ + +/* + * xmlC14NMode: + * + * Predefined values for C14N modes + * + */ +typedef enum { + XML_C14N_1_0 = 0, /* Original C14N 1.0 spec */ + XML_C14N_EXCLUSIVE_1_0 = 1, /* Exclusive C14N 1.0 spec */ + XML_C14N_1_1 = 2 /* C14N 1.1 spec */ +} xmlC14NMode; + +XMLPUBFUN int XMLCALL + xmlC14NDocSaveTo (xmlDocPtr doc, + xmlNodeSetPtr nodes, + int mode, /* a xmlC14NMode */ + xmlChar **inclusive_ns_prefixes, + int with_comments, + xmlOutputBufferPtr buf); + +XMLPUBFUN int XMLCALL + xmlC14NDocDumpMemory (xmlDocPtr doc, + xmlNodeSetPtr nodes, + int mode, /* a xmlC14NMode */ + xmlChar **inclusive_ns_prefixes, + int with_comments, + xmlChar **doc_txt_ptr); + +XMLPUBFUN int XMLCALL + xmlC14NDocSave (xmlDocPtr doc, + xmlNodeSetPtr nodes, + int mode, /* a xmlC14NMode */ + xmlChar **inclusive_ns_prefixes, + int with_comments, + const char* filename, + int compression); + + +/** + * This is the core C14N function + */ +/** + * xmlC14NIsVisibleCallback: + * @user_data: user data + * @node: the current node + * @parent: the parent node + * + * Signature for a C14N callback on visible nodes + * + * Returns 1 if the node should be included + */ +typedef int (*xmlC14NIsVisibleCallback) (void* user_data, + xmlNodePtr node, + xmlNodePtr parent); + +XMLPUBFUN int XMLCALL + xmlC14NExecute (xmlDocPtr doc, + xmlC14NIsVisibleCallback is_visible_callback, + void* user_data, + int mode, /* a xmlC14NMode */ + xmlChar **inclusive_ns_prefixes, + int with_comments, + xmlOutputBufferPtr buf); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* LIBXML_OUTPUT_ENABLED */ +#endif /* LIBXML_C14N_ENABLED */ +#endif /* __XML_C14N_H__ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/catalog.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/catalog.h new file mode 100644 index 0000000..26b178d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/catalog.h @@ -0,0 +1,182 @@ +/** + * Summary: interfaces to the Catalog handling system + * Description: the catalog module implements the support for + * XML Catalogs and SGML catalogs + * + * SGML Open Technical Resolution TR9401:1997. + * http://www.jclark.com/sp/catalog.htm + * + * XML Catalogs Working Draft 06 August 2001 + * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_CATALOG_H__ +#define __XML_CATALOG_H__ + +#include + +#include +#include +#include + +#ifdef LIBXML_CATALOG_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * XML_CATALOGS_NAMESPACE: + * + * The namespace for the XML Catalogs elements. + */ +#define XML_CATALOGS_NAMESPACE \ + (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog" +/** + * XML_CATALOG_PI: + * + * The specific XML Catalog Processing Instruction name. + */ +#define XML_CATALOG_PI \ + (const xmlChar *) "oasis-xml-catalog" + +/* + * The API is voluntarily limited to general cataloging. + */ +typedef enum { + XML_CATA_PREFER_NONE = 0, + XML_CATA_PREFER_PUBLIC = 1, + XML_CATA_PREFER_SYSTEM +} xmlCatalogPrefer; + +typedef enum { + XML_CATA_ALLOW_NONE = 0, + XML_CATA_ALLOW_GLOBAL = 1, + XML_CATA_ALLOW_DOCUMENT = 2, + XML_CATA_ALLOW_ALL = 3 +} xmlCatalogAllow; + +typedef struct _xmlCatalog xmlCatalog; +typedef xmlCatalog *xmlCatalogPtr; + +/* + * Operations on a given catalog. + */ +XMLPUBFUN xmlCatalogPtr XMLCALL + xmlNewCatalog (int sgml); +XMLPUBFUN xmlCatalogPtr XMLCALL + xmlLoadACatalog (const char *filename); +XMLPUBFUN xmlCatalogPtr XMLCALL + xmlLoadSGMLSuperCatalog (const char *filename); +XMLPUBFUN int XMLCALL + xmlConvertSGMLCatalog (xmlCatalogPtr catal); +XMLPUBFUN int XMLCALL + xmlACatalogAdd (xmlCatalogPtr catal, + const xmlChar *type, + const xmlChar *orig, + const xmlChar *replace); +XMLPUBFUN int XMLCALL + xmlACatalogRemove (xmlCatalogPtr catal, + const xmlChar *value); +XMLPUBFUN xmlChar * XMLCALL + xmlACatalogResolve (xmlCatalogPtr catal, + const xmlChar *pubID, + const xmlChar *sysID); +XMLPUBFUN xmlChar * XMLCALL + xmlACatalogResolveSystem(xmlCatalogPtr catal, + const xmlChar *sysID); +XMLPUBFUN xmlChar * XMLCALL + xmlACatalogResolvePublic(xmlCatalogPtr catal, + const xmlChar *pubID); +XMLPUBFUN xmlChar * XMLCALL + xmlACatalogResolveURI (xmlCatalogPtr catal, + const xmlChar *URI); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlACatalogDump (xmlCatalogPtr catal, + FILE *out); +#endif /* LIBXML_OUTPUT_ENABLED */ +XMLPUBFUN void XMLCALL + xmlFreeCatalog (xmlCatalogPtr catal); +XMLPUBFUN int XMLCALL + xmlCatalogIsEmpty (xmlCatalogPtr catal); + +/* + * Global operations. + */ +XMLPUBFUN void XMLCALL + xmlInitializeCatalog (void); +XMLPUBFUN int XMLCALL + xmlLoadCatalog (const char *filename); +XMLPUBFUN void XMLCALL + xmlLoadCatalogs (const char *paths); +XMLPUBFUN void XMLCALL + xmlCatalogCleanup (void); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlCatalogDump (FILE *out); +#endif /* LIBXML_OUTPUT_ENABLED */ +XMLPUBFUN xmlChar * XMLCALL + xmlCatalogResolve (const xmlChar *pubID, + const xmlChar *sysID); +XMLPUBFUN xmlChar * XMLCALL + xmlCatalogResolveSystem (const xmlChar *sysID); +XMLPUBFUN xmlChar * XMLCALL + xmlCatalogResolvePublic (const xmlChar *pubID); +XMLPUBFUN xmlChar * XMLCALL + xmlCatalogResolveURI (const xmlChar *URI); +XMLPUBFUN int XMLCALL + xmlCatalogAdd (const xmlChar *type, + const xmlChar *orig, + const xmlChar *replace); +XMLPUBFUN int XMLCALL + xmlCatalogRemove (const xmlChar *value); +XMLPUBFUN xmlDocPtr XMLCALL + xmlParseCatalogFile (const char *filename); +XMLPUBFUN int XMLCALL + xmlCatalogConvert (void); + +/* + * Strictly minimal interfaces for per-document catalogs used + * by the parser. + */ +XMLPUBFUN void XMLCALL + xmlCatalogFreeLocal (void *catalogs); +XMLPUBFUN void * XMLCALL + xmlCatalogAddLocal (void *catalogs, + const xmlChar *URL); +XMLPUBFUN xmlChar * XMLCALL + xmlCatalogLocalResolve (void *catalogs, + const xmlChar *pubID, + const xmlChar *sysID); +XMLPUBFUN xmlChar * XMLCALL + xmlCatalogLocalResolveURI(void *catalogs, + const xmlChar *URI); +/* + * Preference settings. + */ +XMLPUBFUN int XMLCALL + xmlCatalogSetDebug (int level); +XMLPUBFUN xmlCatalogPrefer XMLCALL + xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer); +XMLPUBFUN void XMLCALL + xmlCatalogSetDefaults (xmlCatalogAllow allow); +XMLPUBFUN xmlCatalogAllow XMLCALL + xmlCatalogGetDefaults (void); + + +/* DEPRECATED interfaces */ +XMLPUBFUN const xmlChar * XMLCALL + xmlCatalogGetSystem (const xmlChar *sysID); +XMLPUBFUN const xmlChar * XMLCALL + xmlCatalogGetPublic (const xmlChar *pubID); + +#ifdef __cplusplus +} +#endif +#endif /* LIBXML_CATALOG_ENABLED */ +#endif /* __XML_CATALOG_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/chvalid.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/chvalid.h new file mode 100644 index 0000000..fb43016 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/chvalid.h @@ -0,0 +1,230 @@ +/* + * Summary: Unicode character range checking + * Description: this module exports interfaces for the character + * range validation APIs + * + * This file is automatically generated from the cvs source + * definition files using the genChRanges.py Python script + * + * Generation date: Mon Mar 27 11:09:48 2006 + * Sources: chvalid.def + * Author: William Brack + */ + +#ifndef __XML_CHVALID_H__ +#define __XML_CHVALID_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Define our typedefs and structures + * + */ +typedef struct _xmlChSRange xmlChSRange; +typedef xmlChSRange *xmlChSRangePtr; +struct _xmlChSRange { + unsigned short low; + unsigned short high; +}; + +typedef struct _xmlChLRange xmlChLRange; +typedef xmlChLRange *xmlChLRangePtr; +struct _xmlChLRange { + unsigned int low; + unsigned int high; +}; + +typedef struct _xmlChRangeGroup xmlChRangeGroup; +typedef xmlChRangeGroup *xmlChRangeGroupPtr; +struct _xmlChRangeGroup { + int nbShortRange; + int nbLongRange; + const xmlChSRange *shortRange; /* points to an array of ranges */ + const xmlChLRange *longRange; +}; + +/** + * Range checking routine + */ +XMLPUBFUN int XMLCALL + xmlCharInRange(unsigned int val, const xmlChRangeGroup *group); + + +/** + * xmlIsBaseChar_ch: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsBaseChar_ch(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ + ((0x61 <= (c)) && ((c) <= 0x7a)) || \ + ((0xc0 <= (c)) && ((c) <= 0xd6)) || \ + ((0xd8 <= (c)) && ((c) <= 0xf6)) || \ + (0xf8 <= (c))) + +/** + * xmlIsBaseCharQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsBaseCharQ(c) (((c) < 0x100) ? \ + xmlIsBaseChar_ch((c)) : \ + xmlCharInRange((c), &xmlIsBaseCharGroup)) + +XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup; + +/** + * xmlIsBlank_ch: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsBlank_ch(c) (((c) == 0x20) || \ + ((0x9 <= (c)) && ((c) <= 0xa)) || \ + ((c) == 0xd)) + +/** + * xmlIsBlankQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsBlankQ(c) (((c) < 0x100) ? \ + xmlIsBlank_ch((c)) : 0) + + +/** + * xmlIsChar_ch: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsChar_ch(c) (((0x9 <= (c)) && ((c) <= 0xa)) || \ + ((c) == 0xd) || \ + (0x20 <= (c))) + +/** + * xmlIsCharQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsCharQ(c) (((c) < 0x100) ? \ + xmlIsChar_ch((c)) :\ + (((0x100 <= (c)) && ((c) <= 0xd7ff)) || \ + ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \ + ((0x10000 <= (c)) && ((c) <= 0x10ffff)))) + +XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup; + +/** + * xmlIsCombiningQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsCombiningQ(c) (((c) < 0x100) ? \ + 0 : \ + xmlCharInRange((c), &xmlIsCombiningGroup)) + +XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup; + +/** + * xmlIsDigit_ch: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsDigit_ch(c) (((0x30 <= (c)) && ((c) <= 0x39))) + +/** + * xmlIsDigitQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsDigitQ(c) (((c) < 0x100) ? \ + xmlIsDigit_ch((c)) : \ + xmlCharInRange((c), &xmlIsDigitGroup)) + +XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup; + +/** + * xmlIsExtender_ch: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsExtender_ch(c) (((c) == 0xb7)) + +/** + * xmlIsExtenderQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsExtenderQ(c) (((c) < 0x100) ? \ + xmlIsExtender_ch((c)) : \ + xmlCharInRange((c), &xmlIsExtenderGroup)) + +XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup; + +/** + * xmlIsIdeographicQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsIdeographicQ(c) (((c) < 0x100) ? \ + 0 :\ + (((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \ + ((c) == 0x3007) || \ + ((0x3021 <= (c)) && ((c) <= 0x3029)))) + +XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup; +XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256]; + +/** + * xmlIsPubidChar_ch: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsPubidChar_ch(c) (xmlIsPubidChar_tab[(c)]) + +/** + * xmlIsPubidCharQ: + * @c: char to validate + * + * Automatically generated by genChRanges.py + */ +#define xmlIsPubidCharQ(c) (((c) < 0x100) ? \ + xmlIsPubidChar_ch((c)) : 0) + +XMLPUBFUN int XMLCALL + xmlIsBaseChar(unsigned int ch); +XMLPUBFUN int XMLCALL + xmlIsBlank(unsigned int ch); +XMLPUBFUN int XMLCALL + xmlIsChar(unsigned int ch); +XMLPUBFUN int XMLCALL + xmlIsCombining(unsigned int ch); +XMLPUBFUN int XMLCALL + xmlIsDigit(unsigned int ch); +XMLPUBFUN int XMLCALL + xmlIsExtender(unsigned int ch); +XMLPUBFUN int XMLCALL + xmlIsIdeographic(unsigned int ch); +XMLPUBFUN int XMLCALL + xmlIsPubidChar(unsigned int ch); + +#ifdef __cplusplus +} +#endif +#endif /* __XML_CHVALID_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/debugXML.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/debugXML.h new file mode 100644 index 0000000..5b3be13 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/debugXML.h @@ -0,0 +1,217 @@ +/* + * Summary: Tree debugging APIs + * Description: Interfaces to a set of routines used for debugging the tree + * produced by the XML parser. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __DEBUG_XML__ +#define __DEBUG_XML__ +#include +#include +#include + +#ifdef LIBXML_DEBUG_ENABLED + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The standard Dump routines. + */ +XMLPUBFUN void XMLCALL + xmlDebugDumpString (FILE *output, + const xmlChar *str); +XMLPUBFUN void XMLCALL + xmlDebugDumpAttr (FILE *output, + xmlAttrPtr attr, + int depth); +XMLPUBFUN void XMLCALL + xmlDebugDumpAttrList (FILE *output, + xmlAttrPtr attr, + int depth); +XMLPUBFUN void XMLCALL + xmlDebugDumpOneNode (FILE *output, + xmlNodePtr node, + int depth); +XMLPUBFUN void XMLCALL + xmlDebugDumpNode (FILE *output, + xmlNodePtr node, + int depth); +XMLPUBFUN void XMLCALL + xmlDebugDumpNodeList (FILE *output, + xmlNodePtr node, + int depth); +XMLPUBFUN void XMLCALL + xmlDebugDumpDocumentHead(FILE *output, + xmlDocPtr doc); +XMLPUBFUN void XMLCALL + xmlDebugDumpDocument (FILE *output, + xmlDocPtr doc); +XMLPUBFUN void XMLCALL + xmlDebugDumpDTD (FILE *output, + xmlDtdPtr dtd); +XMLPUBFUN void XMLCALL + xmlDebugDumpEntities (FILE *output, + xmlDocPtr doc); + +/**************************************************************** + * * + * Checking routines * + * * + ****************************************************************/ + +XMLPUBFUN int XMLCALL + xmlDebugCheckDocument (FILE * output, + xmlDocPtr doc); + +/**************************************************************** + * * + * XML shell helpers * + * * + ****************************************************************/ + +XMLPUBFUN void XMLCALL + xmlLsOneNode (FILE *output, xmlNodePtr node); +XMLPUBFUN int XMLCALL + xmlLsCountNode (xmlNodePtr node); + +XMLPUBFUN const char * XMLCALL + xmlBoolToText (int boolval); + +/**************************************************************** + * * + * The XML shell related structures and functions * + * * + ****************************************************************/ + +#ifdef LIBXML_XPATH_ENABLED +/** + * xmlShellReadlineFunc: + * @prompt: a string prompt + * + * This is a generic signature for the XML shell input function. + * + * Returns a string which will be freed by the Shell. + */ +typedef char * (* xmlShellReadlineFunc)(char *prompt); + +/** + * xmlShellCtxt: + * + * A debugging shell context. + * TODO: add the defined function tables. + */ +typedef struct _xmlShellCtxt xmlShellCtxt; +typedef xmlShellCtxt *xmlShellCtxtPtr; +struct _xmlShellCtxt { + char *filename; + xmlDocPtr doc; + xmlNodePtr node; + xmlXPathContextPtr pctxt; + int loaded; + FILE *output; + xmlShellReadlineFunc input; +}; + +/** + * xmlShellCmd: + * @ctxt: a shell context + * @arg: a string argument + * @node: a first node + * @node2: a second node + * + * This is a generic signature for the XML shell functions. + * + * Returns an int, negative returns indicating errors. + */ +typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt, + char *arg, + xmlNodePtr node, + xmlNodePtr node2); + +XMLPUBFUN void XMLCALL + xmlShellPrintXPathError (int errorType, + const char *arg); +XMLPUBFUN void XMLCALL + xmlShellPrintXPathResult(xmlXPathObjectPtr list); +XMLPUBFUN int XMLCALL + xmlShellList (xmlShellCtxtPtr ctxt, + char *arg, + xmlNodePtr node, + xmlNodePtr node2); +XMLPUBFUN int XMLCALL + xmlShellBase (xmlShellCtxtPtr ctxt, + char *arg, + xmlNodePtr node, + xmlNodePtr node2); +XMLPUBFUN int XMLCALL + xmlShellDir (xmlShellCtxtPtr ctxt, + char *arg, + xmlNodePtr node, + xmlNodePtr node2); +XMLPUBFUN int XMLCALL + xmlShellLoad (xmlShellCtxtPtr ctxt, + char *filename, + xmlNodePtr node, + xmlNodePtr node2); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlShellPrintNode (xmlNodePtr node); +XMLPUBFUN int XMLCALL + xmlShellCat (xmlShellCtxtPtr ctxt, + char *arg, + xmlNodePtr node, + xmlNodePtr node2); +XMLPUBFUN int XMLCALL + xmlShellWrite (xmlShellCtxtPtr ctxt, + char *filename, + xmlNodePtr node, + xmlNodePtr node2); +XMLPUBFUN int XMLCALL + xmlShellSave (xmlShellCtxtPtr ctxt, + char *filename, + xmlNodePtr node, + xmlNodePtr node2); +#endif /* LIBXML_OUTPUT_ENABLED */ +#ifdef LIBXML_VALID_ENABLED +XMLPUBFUN int XMLCALL + xmlShellValidate (xmlShellCtxtPtr ctxt, + char *dtd, + xmlNodePtr node, + xmlNodePtr node2); +#endif /* LIBXML_VALID_ENABLED */ +XMLPUBFUN int XMLCALL + xmlShellDu (xmlShellCtxtPtr ctxt, + char *arg, + xmlNodePtr tree, + xmlNodePtr node2); +XMLPUBFUN int XMLCALL + xmlShellPwd (xmlShellCtxtPtr ctxt, + char *buffer, + xmlNodePtr node, + xmlNodePtr node2); + +/* + * The Shell interface. + */ +XMLPUBFUN void XMLCALL + xmlShell (xmlDocPtr doc, + char *filename, + xmlShellReadlineFunc input, + FILE *output); + +#endif /* LIBXML_XPATH_ENABLED */ + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_DEBUG_ENABLED */ +#endif /* __DEBUG_XML__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/dict.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/dict.h new file mode 100644 index 0000000..91f74d1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/dict.h @@ -0,0 +1,81 @@ +/* + * Summary: string dictionary + * Description: dictionary of reusable strings, just used to avoid allocation + * and freeing operations. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_DICT_H__ +#define __XML_DICT_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The dictionary. + */ +typedef struct _xmlDict xmlDict; +typedef xmlDict *xmlDictPtr; + +/* + * Initializer + */ +XML_DEPRECATED +XMLPUBFUN int XMLCALL xmlInitializeDict(void); + +/* + * Constructor and destructor. + */ +XMLPUBFUN xmlDictPtr XMLCALL + xmlDictCreate (void); +XMLPUBFUN size_t XMLCALL + xmlDictSetLimit (xmlDictPtr dict, + size_t limit); +XMLPUBFUN size_t XMLCALL + xmlDictGetUsage (xmlDictPtr dict); +XMLPUBFUN xmlDictPtr XMLCALL + xmlDictCreateSub(xmlDictPtr sub); +XMLPUBFUN int XMLCALL + xmlDictReference(xmlDictPtr dict); +XMLPUBFUN void XMLCALL + xmlDictFree (xmlDictPtr dict); + +/* + * Lookup of entry in the dictionary. + */ +XMLPUBFUN const xmlChar * XMLCALL + xmlDictLookup (xmlDictPtr dict, + const xmlChar *name, + int len); +XMLPUBFUN const xmlChar * XMLCALL + xmlDictExists (xmlDictPtr dict, + const xmlChar *name, + int len); +XMLPUBFUN const xmlChar * XMLCALL + xmlDictQLookup (xmlDictPtr dict, + const xmlChar *prefix, + const xmlChar *name); +XMLPUBFUN int XMLCALL + xmlDictOwns (xmlDictPtr dict, + const xmlChar *str); +XMLPUBFUN int XMLCALL + xmlDictSize (xmlDictPtr dict); + +/* + * Cleanup function + */ +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlDictCleanup (void); + +#ifdef __cplusplus +} +#endif +#endif /* ! __XML_DICT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/encoding.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/encoding.h new file mode 100644 index 0000000..381e188 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/encoding.h @@ -0,0 +1,232 @@ +/* + * Summary: interface for the encoding conversion functions + * Description: interface for the encoding conversion functions needed for + * XML basic encoding and iconv() support. + * + * Related specs are + * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies + * [ISO-10646] UTF-8 and UTF-16 in Annexes + * [ISO-8859-1] ISO Latin-1 characters codes. + * [UNICODE] The Unicode Consortium, "The Unicode Standard -- + * Worldwide Character Encoding -- Version 1.0", Addison- + * Wesley, Volume 1, 1991, Volume 2, 1992. UTF-8 is + * described in Unicode Technical Report #4. + * [US-ASCII] Coded Character Set--7-bit American Standard Code for + * Information Interchange, ANSI X3.4-1986. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_CHAR_ENCODING_H__ +#define __XML_CHAR_ENCODING_H__ + +#include + +#ifdef LIBXML_ICONV_ENABLED +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * xmlCharEncoding: + * + * Predefined values for some standard encodings. + * Libxml does not do beforehand translation on UTF8 and ISOLatinX. + * It also supports ASCII, ISO-8859-1, and UTF16 (LE and BE) by default. + * + * Anything else would have to be translated to UTF8 before being + * given to the parser itself. The BOM for UTF16 and the encoding + * declaration are looked at and a converter is looked for at that + * point. If not found the parser stops here as asked by the XML REC. A + * converter can be registered by the user using xmlRegisterCharEncodingHandler + * but the current form doesn't allow stateful transcoding (a serious + * problem agreed !). If iconv has been found it will be used + * automatically and allow stateful transcoding, the simplest is then + * to be sure to enable iconv and to provide iconv libs for the encoding + * support needed. + * + * Note that the generic "UTF-16" is not a predefined value. Instead, only + * the specific UTF-16LE and UTF-16BE are present. + */ +typedef enum { + XML_CHAR_ENCODING_ERROR= -1, /* No char encoding detected */ + XML_CHAR_ENCODING_NONE= 0, /* No char encoding detected */ + XML_CHAR_ENCODING_UTF8= 1, /* UTF-8 */ + XML_CHAR_ENCODING_UTF16LE= 2, /* UTF-16 little endian */ + XML_CHAR_ENCODING_UTF16BE= 3, /* UTF-16 big endian */ + XML_CHAR_ENCODING_UCS4LE= 4, /* UCS-4 little endian */ + XML_CHAR_ENCODING_UCS4BE= 5, /* UCS-4 big endian */ + XML_CHAR_ENCODING_EBCDIC= 6, /* EBCDIC uh! */ + XML_CHAR_ENCODING_UCS4_2143=7, /* UCS-4 unusual ordering */ + XML_CHAR_ENCODING_UCS4_3412=8, /* UCS-4 unusual ordering */ + XML_CHAR_ENCODING_UCS2= 9, /* UCS-2 */ + XML_CHAR_ENCODING_8859_1= 10,/* ISO-8859-1 ISO Latin 1 */ + XML_CHAR_ENCODING_8859_2= 11,/* ISO-8859-2 ISO Latin 2 */ + XML_CHAR_ENCODING_8859_3= 12,/* ISO-8859-3 */ + XML_CHAR_ENCODING_8859_4= 13,/* ISO-8859-4 */ + XML_CHAR_ENCODING_8859_5= 14,/* ISO-8859-5 */ + XML_CHAR_ENCODING_8859_6= 15,/* ISO-8859-6 */ + XML_CHAR_ENCODING_8859_7= 16,/* ISO-8859-7 */ + XML_CHAR_ENCODING_8859_8= 17,/* ISO-8859-8 */ + XML_CHAR_ENCODING_8859_9= 18,/* ISO-8859-9 */ + XML_CHAR_ENCODING_2022_JP= 19,/* ISO-2022-JP */ + XML_CHAR_ENCODING_SHIFT_JIS=20,/* Shift_JIS */ + XML_CHAR_ENCODING_EUC_JP= 21,/* EUC-JP */ + XML_CHAR_ENCODING_ASCII= 22 /* pure ASCII */ +} xmlCharEncoding; + +/** + * xmlCharEncodingInputFunc: + * @out: a pointer to an array of bytes to store the UTF-8 result + * @outlen: the length of @out + * @in: a pointer to an array of chars in the original encoding + * @inlen: the length of @in + * + * Take a block of chars in the original encoding and try to convert + * it to an UTF-8 block of chars out. + * + * Returns the number of bytes written, -1 if lack of space, or -2 + * if the transcoding failed. + * The value of @inlen after return is the number of octets consumed + * if the return value is positive, else unpredictiable. + * The value of @outlen after return is the number of octets consumed. + */ +typedef int (* xmlCharEncodingInputFunc)(unsigned char *out, int *outlen, + const unsigned char *in, int *inlen); + + +/** + * xmlCharEncodingOutputFunc: + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of UTF-8 chars + * @inlen: the length of @in + * + * Take a block of UTF-8 chars in and try to convert it to another + * encoding. + * Note: a first call designed to produce heading info is called with + * in = NULL. If stateful this should also initialize the encoder state. + * + * Returns the number of bytes written, -1 if lack of space, or -2 + * if the transcoding failed. + * The value of @inlen after return is the number of octets consumed + * if the return value is positive, else unpredictiable. + * The value of @outlen after return is the number of octets produced. + */ +typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen, + const unsigned char *in, int *inlen); + + +/* + * Block defining the handlers for non UTF-8 encodings. + * If iconv is supported, there are two extra fields. + */ +typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler; +typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr; +struct _xmlCharEncodingHandler { + char *name; + xmlCharEncodingInputFunc input; + xmlCharEncodingOutputFunc output; +#ifdef LIBXML_ICONV_ENABLED + iconv_t iconv_in; + iconv_t iconv_out; +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + struct _uconv_t *uconv_in; + struct _uconv_t *uconv_out; +#endif /* LIBXML_ICU_ENABLED */ +}; + +#ifdef __cplusplus +} +#endif +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Interfaces for encoding handlers. + */ +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlInitCharEncodingHandlers (void); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlCleanupCharEncodingHandlers (void); +XMLPUBFUN void XMLCALL + xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler); +XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL + xmlGetCharEncodingHandler (xmlCharEncoding enc); +XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL + xmlFindCharEncodingHandler (const char *name); +XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL + xmlNewCharEncodingHandler (const char *name, + xmlCharEncodingInputFunc input, + xmlCharEncodingOutputFunc output); + +/* + * Interfaces for encoding names and aliases. + */ +XMLPUBFUN int XMLCALL + xmlAddEncodingAlias (const char *name, + const char *alias); +XMLPUBFUN int XMLCALL + xmlDelEncodingAlias (const char *alias); +XMLPUBFUN const char * XMLCALL + xmlGetEncodingAlias (const char *alias); +XMLPUBFUN void XMLCALL + xmlCleanupEncodingAliases (void); +XMLPUBFUN xmlCharEncoding XMLCALL + xmlParseCharEncoding (const char *name); +XMLPUBFUN const char * XMLCALL + xmlGetCharEncodingName (xmlCharEncoding enc); + +/* + * Interfaces directly used by the parsers. + */ +XMLPUBFUN xmlCharEncoding XMLCALL + xmlDetectCharEncoding (const unsigned char *in, + int len); + +XMLPUBFUN int XMLCALL + xmlCharEncOutFunc (xmlCharEncodingHandler *handler, + xmlBufferPtr out, + xmlBufferPtr in); + +XMLPUBFUN int XMLCALL + xmlCharEncInFunc (xmlCharEncodingHandler *handler, + xmlBufferPtr out, + xmlBufferPtr in); +XMLPUBFUN int XMLCALL + xmlCharEncFirstLine (xmlCharEncodingHandler *handler, + xmlBufferPtr out, + xmlBufferPtr in); +XMLPUBFUN int XMLCALL + xmlCharEncCloseFunc (xmlCharEncodingHandler *handler); + +/* + * Export a few useful functions + */ +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN int XMLCALL + UTF8Toisolat1 (unsigned char *out, + int *outlen, + const unsigned char *in, + int *inlen); +#endif /* LIBXML_OUTPUT_ENABLED */ +XMLPUBFUN int XMLCALL + isolat1ToUTF8 (unsigned char *out, + int *outlen, + const unsigned char *in, + int *inlen); +#ifdef __cplusplus +} +#endif + +#endif /* __XML_CHAR_ENCODING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/entities.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/entities.h new file mode 100644 index 0000000..2b60d9e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/entities.h @@ -0,0 +1,153 @@ +/* + * Summary: interface for the XML entities handling + * Description: this module provides some of the entity API needed + * for the parser and applications. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_ENTITIES_H__ +#define __XML_ENTITIES_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The different valid entity types. + */ +typedef enum { + XML_INTERNAL_GENERAL_ENTITY = 1, + XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2, + XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3, + XML_INTERNAL_PARAMETER_ENTITY = 4, + XML_EXTERNAL_PARAMETER_ENTITY = 5, + XML_INTERNAL_PREDEFINED_ENTITY = 6 +} xmlEntityType; + +/* + * An unit of storage for an entity, contains the string, the value + * and the linkind data needed for the linking in the hash table. + */ + +struct _xmlEntity { + void *_private; /* application data */ + xmlElementType type; /* XML_ENTITY_DECL, must be second ! */ + const xmlChar *name; /* Entity name */ + struct _xmlNode *children; /* First child link */ + struct _xmlNode *last; /* Last child link */ + struct _xmlDtd *parent; /* -> DTD */ + struct _xmlNode *next; /* next sibling link */ + struct _xmlNode *prev; /* previous sibling link */ + struct _xmlDoc *doc; /* the containing document */ + + xmlChar *orig; /* content without ref substitution */ + xmlChar *content; /* content or ndata if unparsed */ + int length; /* the content length */ + xmlEntityType etype; /* The entity type */ + const xmlChar *ExternalID; /* External identifier for PUBLIC */ + const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC Entity */ + + struct _xmlEntity *nexte; /* unused */ + const xmlChar *URI; /* the full URI as computed */ + int owner; /* does the entity own the childrens */ + int checked; /* was the entity content checked */ + /* this is also used to count entities + * references done from that entity + * and if it contains '<' */ +}; + +/* + * All entities are stored in an hash table. + * There is 2 separate hash tables for global and parameter entities. + */ + +typedef struct _xmlHashTable xmlEntitiesTable; +typedef xmlEntitiesTable *xmlEntitiesTablePtr; + +/* + * External functions: + */ + +#ifdef LIBXML_LEGACY_ENABLED +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlInitializePredefinedEntities (void); +#endif /* LIBXML_LEGACY_ENABLED */ + +XMLPUBFUN xmlEntityPtr XMLCALL + xmlNewEntity (xmlDocPtr doc, + const xmlChar *name, + int type, + const xmlChar *ExternalID, + const xmlChar *SystemID, + const xmlChar *content); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlAddDocEntity (xmlDocPtr doc, + const xmlChar *name, + int type, + const xmlChar *ExternalID, + const xmlChar *SystemID, + const xmlChar *content); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlAddDtdEntity (xmlDocPtr doc, + const xmlChar *name, + int type, + const xmlChar *ExternalID, + const xmlChar *SystemID, + const xmlChar *content); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlGetPredefinedEntity (const xmlChar *name); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlGetDocEntity (const xmlDoc *doc, + const xmlChar *name); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlGetDtdEntity (xmlDocPtr doc, + const xmlChar *name); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlGetParameterEntity (xmlDocPtr doc, + const xmlChar *name); +#ifdef LIBXML_LEGACY_ENABLED +XML_DEPRECATED +XMLPUBFUN const xmlChar * XMLCALL + xmlEncodeEntities (xmlDocPtr doc, + const xmlChar *input); +#endif /* LIBXML_LEGACY_ENABLED */ +XMLPUBFUN xmlChar * XMLCALL + xmlEncodeEntitiesReentrant(xmlDocPtr doc, + const xmlChar *input); +XMLPUBFUN xmlChar * XMLCALL + xmlEncodeSpecialChars (const xmlDoc *doc, + const xmlChar *input); +XMLPUBFUN xmlEntitiesTablePtr XMLCALL + xmlCreateEntitiesTable (void); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlEntitiesTablePtr XMLCALL + xmlCopyEntitiesTable (xmlEntitiesTablePtr table); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN void XMLCALL + xmlFreeEntitiesTable (xmlEntitiesTablePtr table); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlDumpEntitiesTable (xmlBufferPtr buf, + xmlEntitiesTablePtr table); +XMLPUBFUN void XMLCALL + xmlDumpEntityDecl (xmlBufferPtr buf, + xmlEntityPtr ent); +#endif /* LIBXML_OUTPUT_ENABLED */ +#ifdef LIBXML_LEGACY_ENABLED +XMLPUBFUN void XMLCALL + xmlCleanupPredefinedEntities(void); +#endif /* LIBXML_LEGACY_ENABLED */ + + +#ifdef __cplusplus +} +#endif + +# endif /* __XML_ENTITIES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/globals.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/globals.h new file mode 100644 index 0000000..d57ccb0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/globals.h @@ -0,0 +1,499 @@ +/* + * Summary: interface for all global variables of the library + * Description: all the global variables and thread handling for + * those variables is handled by this module. + * + * The bottom of this file is automatically generated by build_glob.py + * based on the description file global.data + * + * Copy: See Copyright for the status of this software. + * + * Author: Gary Pennington , Daniel Veillard + */ + +#ifndef __XML_GLOBALS_H +#define __XML_GLOBALS_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +XML_DEPRECATED +XMLPUBFUN void XMLCALL xmlInitGlobals(void); +XML_DEPRECATED +XMLPUBFUN void XMLCALL xmlCleanupGlobals(void); + +/** + * xmlParserInputBufferCreateFilenameFunc: + * @URI: the URI to read from + * @enc: the requested source encoding + * + * Signature for the function doing the lookup for a suitable input method + * corresponding to an URI. + * + * Returns the new xmlParserInputBufferPtr in case of success or NULL if no + * method was found. + */ +typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, + xmlCharEncoding enc); + + +/** + * xmlOutputBufferCreateFilenameFunc: + * @URI: the URI to write to + * @enc: the requested target encoding + * + * Signature for the function doing the lookup for a suitable output method + * corresponding to an URI. + * + * Returns the new xmlOutputBufferPtr in case of success or NULL if no + * method was found. + */ +typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, + xmlCharEncodingHandlerPtr encoder, + int compression); + +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc +XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func); +XMLPUBFUN xmlOutputBufferCreateFilenameFunc +XMLCALL xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func); + +/* + * Externally global symbols which need to be protected for backwards + * compatibility support. + */ + +#undef htmlDefaultSAXHandler +#undef oldXMLWDcompatibility +#undef xmlBufferAllocScheme +#undef xmlDefaultBufferSize +#undef xmlDefaultSAXHandler +#undef xmlDefaultSAXLocator +#undef xmlDoValidityCheckingDefaultValue +#undef xmlFree +#undef xmlGenericError +#undef xmlStructuredError +#undef xmlGenericErrorContext +#undef xmlStructuredErrorContext +#undef xmlGetWarningsDefaultValue +#undef xmlIndentTreeOutput +#undef xmlTreeIndentString +#undef xmlKeepBlanksDefaultValue +#undef xmlLineNumbersDefaultValue +#undef xmlLoadExtDtdDefaultValue +#undef xmlMalloc +#undef xmlMallocAtomic +#undef xmlMemStrdup +#undef xmlParserDebugEntities +#undef xmlParserVersion +#undef xmlPedanticParserDefaultValue +#undef xmlRealloc +#undef xmlSaveNoEmptyTags +#undef xmlSubstituteEntitiesDefaultValue +#undef xmlRegisterNodeDefaultValue +#undef xmlDeregisterNodeDefaultValue +#undef xmlLastError +#undef xmlParserInputBufferCreateFilenameValue +#undef xmlOutputBufferCreateFilenameValue + +/** + * xmlRegisterNodeFunc: + * @node: the current node + * + * Signature for the registration callback of a created node + */ +typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node); +/** + * xmlDeregisterNodeFunc: + * @node: the current node + * + * Signature for the deregistration callback of a discarded node + */ +typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node); + +typedef struct _xmlGlobalState xmlGlobalState; +typedef xmlGlobalState *xmlGlobalStatePtr; +struct _xmlGlobalState +{ + const char *xmlParserVersion; + + xmlSAXLocator xmlDefaultSAXLocator; + xmlSAXHandlerV1 xmlDefaultSAXHandler; + xmlSAXHandlerV1 docbDefaultSAXHandler; /* unused */ + xmlSAXHandlerV1 htmlDefaultSAXHandler; + + xmlFreeFunc xmlFree; + xmlMallocFunc xmlMalloc; + xmlStrdupFunc xmlMemStrdup; + xmlReallocFunc xmlRealloc; + + xmlGenericErrorFunc xmlGenericError; + xmlStructuredErrorFunc xmlStructuredError; + void *xmlGenericErrorContext; + + int oldXMLWDcompatibility; + + xmlBufferAllocationScheme xmlBufferAllocScheme; + int xmlDefaultBufferSize; + + int xmlSubstituteEntitiesDefaultValue; + int xmlDoValidityCheckingDefaultValue; + int xmlGetWarningsDefaultValue; + int xmlKeepBlanksDefaultValue; + int xmlLineNumbersDefaultValue; + int xmlLoadExtDtdDefaultValue; + int xmlParserDebugEntities; + int xmlPedanticParserDefaultValue; + + int xmlSaveNoEmptyTags; + int xmlIndentTreeOutput; + const char *xmlTreeIndentString; + + xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; + xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; + + xmlMallocFunc xmlMallocAtomic; + xmlError xmlLastError; + + xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; + xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; + + void *xmlStructuredErrorContext; +}; + +#ifdef __cplusplus +} +#endif +#include +#ifdef __cplusplus +extern "C" { +#endif + +XMLPUBFUN void XMLCALL xmlInitializeGlobalState(xmlGlobalStatePtr gs); + +XMLPUBFUN void XMLCALL xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler); + +XMLPUBFUN void XMLCALL xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler); + +XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlRegisterNodeDefault(xmlRegisterNodeFunc func); +XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func); +XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func); +XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func); + +XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL + xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func); +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL + xmlThrDefParserInputBufferCreateFilenameDefault( + xmlParserInputBufferCreateFilenameFunc func); + +/** DOC_DISABLE */ +/* + * In general the memory allocation entry points are not kept + * thread specific but this can be overridden by LIBXML_THREAD_ALLOC_ENABLED + * - xmlMalloc + * - xmlMallocAtomic + * - xmlRealloc + * - xmlMemStrdup + * - xmlFree + */ + +#ifdef LIBXML_THREAD_ALLOC_ENABLED +#ifdef LIBXML_THREAD_ENABLED +XMLPUBFUN xmlMallocFunc * XMLCALL __xmlMalloc(void); +#define xmlMalloc \ +(*(__xmlMalloc())) +#else +XMLPUBVAR xmlMallocFunc xmlMalloc; +#endif + +#ifdef LIBXML_THREAD_ENABLED +XMLPUBFUN xmlMallocFunc * XMLCALL __xmlMallocAtomic(void); +#define xmlMallocAtomic \ +(*(__xmlMallocAtomic())) +#else +XMLPUBVAR xmlMallocFunc xmlMallocAtomic; +#endif + +#ifdef LIBXML_THREAD_ENABLED +XMLPUBFUN xmlReallocFunc * XMLCALL __xmlRealloc(void); +#define xmlRealloc \ +(*(__xmlRealloc())) +#else +XMLPUBVAR xmlReallocFunc xmlRealloc; +#endif + +#ifdef LIBXML_THREAD_ENABLED +XMLPUBFUN xmlFreeFunc * XMLCALL __xmlFree(void); +#define xmlFree \ +(*(__xmlFree())) +#else +XMLPUBVAR xmlFreeFunc xmlFree; +#endif + +#ifdef LIBXML_THREAD_ENABLED +XMLPUBFUN xmlStrdupFunc * XMLCALL __xmlMemStrdup(void); +#define xmlMemStrdup \ +(*(__xmlMemStrdup())) +#else +XMLPUBVAR xmlStrdupFunc xmlMemStrdup; +#endif + +#else /* !LIBXML_THREAD_ALLOC_ENABLED */ +XMLPUBVAR xmlMallocFunc xmlMalloc; +XMLPUBVAR xmlMallocFunc xmlMallocAtomic; +XMLPUBVAR xmlReallocFunc xmlRealloc; +XMLPUBVAR xmlFreeFunc xmlFree; +XMLPUBVAR xmlStrdupFunc xmlMemStrdup; +#endif /* LIBXML_THREAD_ALLOC_ENABLED */ + +#ifdef LIBXML_HTML_ENABLED +XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __htmlDefaultSAXHandler(void); +#ifdef LIBXML_THREAD_ENABLED +#define htmlDefaultSAXHandler \ +(*(__htmlDefaultSAXHandler())) +#else +XMLPUBVAR xmlSAXHandlerV1 htmlDefaultSAXHandler; +#endif +#endif + +XMLPUBFUN xmlError * XMLCALL __xmlLastError(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlLastError \ +(*(__xmlLastError())) +#else +XMLPUBVAR xmlError xmlLastError; +#endif + +/* + * Everything starting from the line below is + * Automatically generated by build_glob.py. + * Do not modify the previous line. + */ + + +XMLPUBFUN int * XMLCALL __oldXMLWDcompatibility(void); +#ifdef LIBXML_THREAD_ENABLED +#define oldXMLWDcompatibility \ +(*(__oldXMLWDcompatibility())) +#else +XMLPUBVAR int oldXMLWDcompatibility; +#endif + +XMLPUBFUN xmlBufferAllocationScheme * XMLCALL __xmlBufferAllocScheme(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlBufferAllocScheme \ +(*(__xmlBufferAllocScheme())) +#else +XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme; +#endif +XMLPUBFUN xmlBufferAllocationScheme XMLCALL + xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v); + +XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlDefaultBufferSize \ +(*(__xmlDefaultBufferSize())) +#else +XMLPUBVAR int xmlDefaultBufferSize; +#endif +XMLPUBFUN int XMLCALL xmlThrDefDefaultBufferSize(int v); + +XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __xmlDefaultSAXHandler(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlDefaultSAXHandler \ +(*(__xmlDefaultSAXHandler())) +#else +XMLPUBVAR xmlSAXHandlerV1 xmlDefaultSAXHandler; +#endif + +XMLPUBFUN xmlSAXLocator * XMLCALL __xmlDefaultSAXLocator(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlDefaultSAXLocator \ +(*(__xmlDefaultSAXLocator())) +#else +XMLPUBVAR xmlSAXLocator xmlDefaultSAXLocator; +#endif + +XMLPUBFUN int * XMLCALL __xmlDoValidityCheckingDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlDoValidityCheckingDefaultValue \ +(*(__xmlDoValidityCheckingDefaultValue())) +#else +XMLPUBVAR int xmlDoValidityCheckingDefaultValue; +#endif +XMLPUBFUN int XMLCALL xmlThrDefDoValidityCheckingDefaultValue(int v); + +XMLPUBFUN xmlGenericErrorFunc * XMLCALL __xmlGenericError(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlGenericError \ +(*(__xmlGenericError())) +#else +XMLPUBVAR xmlGenericErrorFunc xmlGenericError; +#endif + +XMLPUBFUN xmlStructuredErrorFunc * XMLCALL __xmlStructuredError(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlStructuredError \ +(*(__xmlStructuredError())) +#else +XMLPUBVAR xmlStructuredErrorFunc xmlStructuredError; +#endif + +XMLPUBFUN void * * XMLCALL __xmlGenericErrorContext(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlGenericErrorContext \ +(*(__xmlGenericErrorContext())) +#else +XMLPUBVAR void * xmlGenericErrorContext; +#endif + +XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlStructuredErrorContext \ +(*(__xmlStructuredErrorContext())) +#else +XMLPUBVAR void * xmlStructuredErrorContext; +#endif + +XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlGetWarningsDefaultValue \ +(*(__xmlGetWarningsDefaultValue())) +#else +XMLPUBVAR int xmlGetWarningsDefaultValue; +#endif +XMLPUBFUN int XMLCALL xmlThrDefGetWarningsDefaultValue(int v); + +XMLPUBFUN int * XMLCALL __xmlIndentTreeOutput(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlIndentTreeOutput \ +(*(__xmlIndentTreeOutput())) +#else +XMLPUBVAR int xmlIndentTreeOutput; +#endif +XMLPUBFUN int XMLCALL xmlThrDefIndentTreeOutput(int v); + +XMLPUBFUN const char * * XMLCALL __xmlTreeIndentString(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlTreeIndentString \ +(*(__xmlTreeIndentString())) +#else +XMLPUBVAR const char * xmlTreeIndentString; +#endif +XMLPUBFUN const char * XMLCALL xmlThrDefTreeIndentString(const char * v); + +XMLPUBFUN int * XMLCALL __xmlKeepBlanksDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlKeepBlanksDefaultValue \ +(*(__xmlKeepBlanksDefaultValue())) +#else +XMLPUBVAR int xmlKeepBlanksDefaultValue; +#endif +XMLPUBFUN int XMLCALL xmlThrDefKeepBlanksDefaultValue(int v); + +XMLPUBFUN int * XMLCALL __xmlLineNumbersDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlLineNumbersDefaultValue \ +(*(__xmlLineNumbersDefaultValue())) +#else +XMLPUBVAR int xmlLineNumbersDefaultValue; +#endif +XMLPUBFUN int XMLCALL xmlThrDefLineNumbersDefaultValue(int v); + +XMLPUBFUN int * XMLCALL __xmlLoadExtDtdDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlLoadExtDtdDefaultValue \ +(*(__xmlLoadExtDtdDefaultValue())) +#else +XMLPUBVAR int xmlLoadExtDtdDefaultValue; +#endif +XMLPUBFUN int XMLCALL xmlThrDefLoadExtDtdDefaultValue(int v); + +XMLPUBFUN int * XMLCALL __xmlParserDebugEntities(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlParserDebugEntities \ +(*(__xmlParserDebugEntities())) +#else +XMLPUBVAR int xmlParserDebugEntities; +#endif +XMLPUBFUN int XMLCALL xmlThrDefParserDebugEntities(int v); + +XMLPUBFUN const char * * XMLCALL __xmlParserVersion(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlParserVersion \ +(*(__xmlParserVersion())) +#else +XMLPUBVAR const char * xmlParserVersion; +#endif + +XMLPUBFUN int * XMLCALL __xmlPedanticParserDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlPedanticParserDefaultValue \ +(*(__xmlPedanticParserDefaultValue())) +#else +XMLPUBVAR int xmlPedanticParserDefaultValue; +#endif +XMLPUBFUN int XMLCALL xmlThrDefPedanticParserDefaultValue(int v); + +XMLPUBFUN int * XMLCALL __xmlSaveNoEmptyTags(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlSaveNoEmptyTags \ +(*(__xmlSaveNoEmptyTags())) +#else +XMLPUBVAR int xmlSaveNoEmptyTags; +#endif +XMLPUBFUN int XMLCALL xmlThrDefSaveNoEmptyTags(int v); + +XMLPUBFUN int * XMLCALL __xmlSubstituteEntitiesDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlSubstituteEntitiesDefaultValue \ +(*(__xmlSubstituteEntitiesDefaultValue())) +#else +XMLPUBVAR int xmlSubstituteEntitiesDefaultValue; +#endif +XMLPUBFUN int XMLCALL xmlThrDefSubstituteEntitiesDefaultValue(int v); + +XMLPUBFUN xmlRegisterNodeFunc * XMLCALL __xmlRegisterNodeDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlRegisterNodeDefaultValue \ +(*(__xmlRegisterNodeDefaultValue())) +#else +XMLPUBVAR xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; +#endif + +XMLPUBFUN xmlDeregisterNodeFunc * XMLCALL __xmlDeregisterNodeDefaultValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlDeregisterNodeDefaultValue \ +(*(__xmlDeregisterNodeDefaultValue())) +#else +XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; +#endif + +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \ + __xmlParserInputBufferCreateFilenameValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlParserInputBufferCreateFilenameValue \ +(*(__xmlParserInputBufferCreateFilenameValue())) +#else +XMLPUBVAR xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; +#endif + +XMLPUBFUN xmlOutputBufferCreateFilenameFunc * XMLCALL __xmlOutputBufferCreateFilenameValue(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlOutputBufferCreateFilenameValue \ +(*(__xmlOutputBufferCreateFilenameValue())) +#else +XMLPUBVAR xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __XML_GLOBALS_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/hash.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/hash.h new file mode 100644 index 0000000..b682b6b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/hash.h @@ -0,0 +1,236 @@ +/* + * Summary: Chained hash tables + * Description: This module implements the hash table support used in + * various places in the library. + * + * Copy: See Copyright for the status of this software. + * + * Author: Bjorn Reese + */ + +#ifndef __XML_HASH_H__ +#define __XML_HASH_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The hash table. + */ +typedef struct _xmlHashTable xmlHashTable; +typedef xmlHashTable *xmlHashTablePtr; + +#ifdef __cplusplus +} +#endif + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Recent version of gcc produce a warning when a function pointer is assigned + * to an object pointer, or vice versa. The following macro is a dirty hack + * to allow suppression of the warning. If your architecture has function + * pointers which are a different size than a void pointer, there may be some + * serious trouble within the library. + */ +/** + * XML_CAST_FPTR: + * @fptr: pointer to a function + * + * Macro to do a casting from an object pointer to a + * function pointer without encountering a warning from + * gcc + * + * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) + * This macro violated ISO C aliasing rules (gcc4 on s390 broke) + * so it is disabled now + */ + +#define XML_CAST_FPTR(fptr) fptr + + +/* + * function types: + */ +/** + * xmlHashDeallocator: + * @payload: the data in the hash + * @name: the name associated + * + * Callback to free data from a hash. + */ +typedef void (*xmlHashDeallocator)(void *payload, const xmlChar *name); +/** + * xmlHashCopier: + * @payload: the data in the hash + * @name: the name associated + * + * Callback to copy data from a hash. + * + * Returns a copy of the data or NULL in case of error. + */ +typedef void *(*xmlHashCopier)(void *payload, const xmlChar *name); +/** + * xmlHashScanner: + * @payload: the data in the hash + * @data: extra scanner data + * @name: the name associated + * + * Callback when scanning data in a hash with the simple scanner. + */ +typedef void (*xmlHashScanner)(void *payload, void *data, const xmlChar *name); +/** + * xmlHashScannerFull: + * @payload: the data in the hash + * @data: extra scanner data + * @name: the name associated + * @name2: the second name associated + * @name3: the third name associated + * + * Callback when scanning data in a hash with the full scanner. + */ +typedef void (*xmlHashScannerFull)(void *payload, void *data, + const xmlChar *name, const xmlChar *name2, + const xmlChar *name3); + +/* + * Constructor and destructor. + */ +XMLPUBFUN xmlHashTablePtr XMLCALL + xmlHashCreate (int size); +XMLPUBFUN xmlHashTablePtr XMLCALL + xmlHashCreateDict(int size, + xmlDictPtr dict); +XMLPUBFUN void XMLCALL + xmlHashFree (xmlHashTablePtr table, + xmlHashDeallocator f); +XMLPUBFUN void XMLCALL + xmlHashDefaultDeallocator(void *entry, + const xmlChar *name); + +/* + * Add a new entry to the hash table. + */ +XMLPUBFUN int XMLCALL + xmlHashAddEntry (xmlHashTablePtr table, + const xmlChar *name, + void *userdata); +XMLPUBFUN int XMLCALL + xmlHashUpdateEntry(xmlHashTablePtr table, + const xmlChar *name, + void *userdata, + xmlHashDeallocator f); +XMLPUBFUN int XMLCALL + xmlHashAddEntry2(xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2, + void *userdata); +XMLPUBFUN int XMLCALL + xmlHashUpdateEntry2(xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2, + void *userdata, + xmlHashDeallocator f); +XMLPUBFUN int XMLCALL + xmlHashAddEntry3(xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2, + const xmlChar *name3, + void *userdata); +XMLPUBFUN int XMLCALL + xmlHashUpdateEntry3(xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2, + const xmlChar *name3, + void *userdata, + xmlHashDeallocator f); + +/* + * Remove an entry from the hash table. + */ +XMLPUBFUN int XMLCALL + xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name, + xmlHashDeallocator f); +XMLPUBFUN int XMLCALL + xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name, + const xmlChar *name2, xmlHashDeallocator f); +XMLPUBFUN int XMLCALL + xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name, + const xmlChar *name2, const xmlChar *name3, + xmlHashDeallocator f); + +/* + * Retrieve the userdata. + */ +XMLPUBFUN void * XMLCALL + xmlHashLookup (xmlHashTablePtr table, + const xmlChar *name); +XMLPUBFUN void * XMLCALL + xmlHashLookup2 (xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2); +XMLPUBFUN void * XMLCALL + xmlHashLookup3 (xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2, + const xmlChar *name3); +XMLPUBFUN void * XMLCALL + xmlHashQLookup (xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *prefix); +XMLPUBFUN void * XMLCALL + xmlHashQLookup2 (xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *prefix, + const xmlChar *name2, + const xmlChar *prefix2); +XMLPUBFUN void * XMLCALL + xmlHashQLookup3 (xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *prefix, + const xmlChar *name2, + const xmlChar *prefix2, + const xmlChar *name3, + const xmlChar *prefix3); + +/* + * Helpers. + */ +XMLPUBFUN xmlHashTablePtr XMLCALL + xmlHashCopy (xmlHashTablePtr table, + xmlHashCopier f); +XMLPUBFUN int XMLCALL + xmlHashSize (xmlHashTablePtr table); +XMLPUBFUN void XMLCALL + xmlHashScan (xmlHashTablePtr table, + xmlHashScanner f, + void *data); +XMLPUBFUN void XMLCALL + xmlHashScan3 (xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2, + const xmlChar *name3, + xmlHashScanner f, + void *data); +XMLPUBFUN void XMLCALL + xmlHashScanFull (xmlHashTablePtr table, + xmlHashScannerFull f, + void *data); +XMLPUBFUN void XMLCALL + xmlHashScanFull3(xmlHashTablePtr table, + const xmlChar *name, + const xmlChar *name2, + const xmlChar *name3, + xmlHashScannerFull f, + void *data); +#ifdef __cplusplus +} +#endif +#endif /* ! __XML_HASH_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/list.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/list.h new file mode 100644 index 0000000..3211c75 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/list.h @@ -0,0 +1,137 @@ +/* + * Summary: lists interfaces + * Description: this module implement the list support used in + * various place in the library. + * + * Copy: See Copyright for the status of this software. + * + * Author: Gary Pennington + */ + +#ifndef __XML_LINK_INCLUDE__ +#define __XML_LINK_INCLUDE__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _xmlLink xmlLink; +typedef xmlLink *xmlLinkPtr; + +typedef struct _xmlList xmlList; +typedef xmlList *xmlListPtr; + +/** + * xmlListDeallocator: + * @lk: the data to deallocate + * + * Callback function used to free data from a list. + */ +typedef void (*xmlListDeallocator) (xmlLinkPtr lk); +/** + * xmlListDataCompare: + * @data0: the first data + * @data1: the second data + * + * Callback function used to compare 2 data. + * + * Returns 0 is equality, -1 or 1 otherwise depending on the ordering. + */ +typedef int (*xmlListDataCompare) (const void *data0, const void *data1); +/** + * xmlListWalker: + * @data: the data found in the list + * @user: extra user provided data to the walker + * + * Callback function used when walking a list with xmlListWalk(). + * + * Returns 0 to stop walking the list, 1 otherwise. + */ +typedef int (*xmlListWalker) (const void *data, void *user); + +/* Creation/Deletion */ +XMLPUBFUN xmlListPtr XMLCALL + xmlListCreate (xmlListDeallocator deallocator, + xmlListDataCompare compare); +XMLPUBFUN void XMLCALL + xmlListDelete (xmlListPtr l); + +/* Basic Operators */ +XMLPUBFUN void * XMLCALL + xmlListSearch (xmlListPtr l, + void *data); +XMLPUBFUN void * XMLCALL + xmlListReverseSearch (xmlListPtr l, + void *data); +XMLPUBFUN int XMLCALL + xmlListInsert (xmlListPtr l, + void *data) ; +XMLPUBFUN int XMLCALL + xmlListAppend (xmlListPtr l, + void *data) ; +XMLPUBFUN int XMLCALL + xmlListRemoveFirst (xmlListPtr l, + void *data); +XMLPUBFUN int XMLCALL + xmlListRemoveLast (xmlListPtr l, + void *data); +XMLPUBFUN int XMLCALL + xmlListRemoveAll (xmlListPtr l, + void *data); +XMLPUBFUN void XMLCALL + xmlListClear (xmlListPtr l); +XMLPUBFUN int XMLCALL + xmlListEmpty (xmlListPtr l); +XMLPUBFUN xmlLinkPtr XMLCALL + xmlListFront (xmlListPtr l); +XMLPUBFUN xmlLinkPtr XMLCALL + xmlListEnd (xmlListPtr l); +XMLPUBFUN int XMLCALL + xmlListSize (xmlListPtr l); + +XMLPUBFUN void XMLCALL + xmlListPopFront (xmlListPtr l); +XMLPUBFUN void XMLCALL + xmlListPopBack (xmlListPtr l); +XMLPUBFUN int XMLCALL + xmlListPushFront (xmlListPtr l, + void *data); +XMLPUBFUN int XMLCALL + xmlListPushBack (xmlListPtr l, + void *data); + +/* Advanced Operators */ +XMLPUBFUN void XMLCALL + xmlListReverse (xmlListPtr l); +XMLPUBFUN void XMLCALL + xmlListSort (xmlListPtr l); +XMLPUBFUN void XMLCALL + xmlListWalk (xmlListPtr l, + xmlListWalker walker, + void *user); +XMLPUBFUN void XMLCALL + xmlListReverseWalk (xmlListPtr l, + xmlListWalker walker, + void *user); +XMLPUBFUN void XMLCALL + xmlListMerge (xmlListPtr l1, + xmlListPtr l2); +XMLPUBFUN xmlListPtr XMLCALL + xmlListDup (const xmlListPtr old); +XMLPUBFUN int XMLCALL + xmlListCopy (xmlListPtr cur, + const xmlListPtr old); +/* Link operators */ +XMLPUBFUN void * XMLCALL + xmlLinkGetData (xmlLinkPtr lk); + +/* xmlListUnique() */ +/* xmlListSwap */ + +#ifdef __cplusplus +} +#endif + +#endif /* __XML_LINK_INCLUDE__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/nanoftp.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/nanoftp.h new file mode 100644 index 0000000..f39bde5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/nanoftp.h @@ -0,0 +1,186 @@ +/* + * Summary: minimal FTP implementation + * Description: minimal FTP implementation allowing to fetch resources + * like external subset. This module is DEPRECATED, do not + * use any of its functions. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __NANO_FTP_H__ +#define __NANO_FTP_H__ + +#include + +#ifdef LIBXML_FTP_ENABLED + +/* Needed for portability to Windows 64 bits */ +#if defined(_WIN32) +#include +#else +/** + * SOCKET: + * + * macro used to provide portability of code to windows sockets + */ +#define SOCKET int +/** + * INVALID_SOCKET: + * + * macro used to provide portability of code to windows sockets + * the value to be used when the socket is not valid + */ +#undef INVALID_SOCKET +#define INVALID_SOCKET (-1) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * ftpListCallback: + * @userData: user provided data for the callback + * @filename: the file name (including "->" when links are shown) + * @attrib: the attribute string + * @owner: the owner string + * @group: the group string + * @size: the file size + * @links: the link count + * @year: the year + * @month: the month + * @day: the day + * @hour: the hour + * @minute: the minute + * + * A callback for the xmlNanoFTPList command. + * Note that only one of year and day:minute are specified. + */ +typedef void (*ftpListCallback) (void *userData, + const char *filename, const char *attrib, + const char *owner, const char *group, + unsigned long size, int links, int year, + const char *month, int day, int hour, + int minute); +/** + * ftpDataCallback: + * @userData: the user provided context + * @data: the data received + * @len: its size in bytes + * + * A callback for the xmlNanoFTPGet command. + */ +typedef void (*ftpDataCallback) (void *userData, + const char *data, + int len); + +/* + * Init + */ +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlNanoFTPInit (void); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlNanoFTPCleanup (void); + +/* + * Creating/freeing contexts. + */ +XML_DEPRECATED +XMLPUBFUN void * XMLCALL + xmlNanoFTPNewCtxt (const char *URL); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlNanoFTPFreeCtxt (void * ctx); +XML_DEPRECATED +XMLPUBFUN void * XMLCALL + xmlNanoFTPConnectTo (const char *server, + int port); +/* + * Opening/closing session connections. + */ +XML_DEPRECATED +XMLPUBFUN void * XMLCALL + xmlNanoFTPOpen (const char *URL); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPConnect (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPClose (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPQuit (void *ctx); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlNanoFTPScanProxy (const char *URL); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlNanoFTPProxy (const char *host, + int port, + const char *user, + const char *passwd, + int type); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPUpdateURL (void *ctx, + const char *URL); + +/* + * Rather internal commands. + */ +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPGetResponse (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPCheckResponse (void *ctx); + +/* + * CD/DIR/GET handlers. + */ +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPCwd (void *ctx, + const char *directory); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPDele (void *ctx, + const char *file); + +XML_DEPRECATED +XMLPUBFUN SOCKET XMLCALL + xmlNanoFTPGetConnection (void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPCloseConnection(void *ctx); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPList (void *ctx, + ftpListCallback callback, + void *userData, + const char *filename); +XML_DEPRECATED +XMLPUBFUN SOCKET XMLCALL + xmlNanoFTPGetSocket (void *ctx, + const char *filename); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPGet (void *ctx, + ftpDataCallback callback, + void *userData, + const char *filename); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlNanoFTPRead (void *ctx, + void *dest, + int len); + +#ifdef __cplusplus +} +#endif +#endif /* LIBXML_FTP_ENABLED */ +#endif /* __NANO_FTP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/nanohttp.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/nanohttp.h new file mode 100644 index 0000000..22b8fb4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/nanohttp.h @@ -0,0 +1,81 @@ +/* + * Summary: minimal HTTP implementation + * Description: minimal HTTP implementation allowing to fetch resources + * like external subset. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __NANO_HTTP_H__ +#define __NANO_HTTP_H__ + +#include + +#ifdef LIBXML_HTTP_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif +XMLPUBFUN void XMLCALL + xmlNanoHTTPInit (void); +XMLPUBFUN void XMLCALL + xmlNanoHTTPCleanup (void); +XMLPUBFUN void XMLCALL + xmlNanoHTTPScanProxy (const char *URL); +XMLPUBFUN int XMLCALL + xmlNanoHTTPFetch (const char *URL, + const char *filename, + char **contentType); +XMLPUBFUN void * XMLCALL + xmlNanoHTTPMethod (const char *URL, + const char *method, + const char *input, + char **contentType, + const char *headers, + int ilen); +XMLPUBFUN void * XMLCALL + xmlNanoHTTPMethodRedir (const char *URL, + const char *method, + const char *input, + char **contentType, + char **redir, + const char *headers, + int ilen); +XMLPUBFUN void * XMLCALL + xmlNanoHTTPOpen (const char *URL, + char **contentType); +XMLPUBFUN void * XMLCALL + xmlNanoHTTPOpenRedir (const char *URL, + char **contentType, + char **redir); +XMLPUBFUN int XMLCALL + xmlNanoHTTPReturnCode (void *ctx); +XMLPUBFUN const char * XMLCALL + xmlNanoHTTPAuthHeader (void *ctx); +XMLPUBFUN const char * XMLCALL + xmlNanoHTTPRedir (void *ctx); +XMLPUBFUN int XMLCALL + xmlNanoHTTPContentLength( void * ctx ); +XMLPUBFUN const char * XMLCALL + xmlNanoHTTPEncoding (void *ctx); +XMLPUBFUN const char * XMLCALL + xmlNanoHTTPMimeType (void *ctx); +XMLPUBFUN int XMLCALL + xmlNanoHTTPRead (void *ctx, + void *dest, + int len); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN int XMLCALL + xmlNanoHTTPSave (void *ctxt, + const char *filename); +#endif /* LIBXML_OUTPUT_ENABLED */ +XMLPUBFUN void XMLCALL + xmlNanoHTTPClose (void *ctx); +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_HTTP_ENABLED */ +#endif /* __NANO_HTTP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/parser.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/parser.h new file mode 100644 index 0000000..82c61d6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/parser.h @@ -0,0 +1,1244 @@ +/* + * Summary: the core parser module + * Description: Interfaces, constants and types related to the XML parser + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_PARSER_H__ +#define __XML_PARSER_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * XML_DEFAULT_VERSION: + * + * The default version of XML used: 1.0 + */ +#define XML_DEFAULT_VERSION "1.0" + +/** + * xmlParserInput: + * + * An xmlParserInput is an input flow for the XML processor. + * Each entity parsed is associated an xmlParserInput (except the + * few predefined ones). This is the case both for internal entities + * - in which case the flow is already completely in memory - or + * external entities - in which case we use the buf structure for + * progressive reading and I18N conversions to the internal UTF-8 format. + */ + +/** + * xmlParserInputDeallocate: + * @str: the string to deallocate + * + * Callback for freeing some parser input allocations. + */ +typedef void (* xmlParserInputDeallocate)(xmlChar *str); + +struct _xmlParserInput { + /* Input buffer */ + xmlParserInputBufferPtr buf; /* UTF-8 encoded buffer */ + + const char *filename; /* The file analyzed, if any */ + const char *directory; /* the directory/base of the file */ + const xmlChar *base; /* Base of the array to parse */ + const xmlChar *cur; /* Current char being parsed */ + const xmlChar *end; /* end of the array to parse */ + int length; /* length if known */ + int line; /* Current line */ + int col; /* Current column */ + /* + * NOTE: consumed is only tested for equality in the parser code, + * so even if there is an overflow this should not give troubles + * for parsing very large instances. + */ + unsigned long consumed; /* How many xmlChars already consumed */ + xmlParserInputDeallocate free; /* function to deallocate the base */ + const xmlChar *encoding; /* the encoding string for entity */ + const xmlChar *version; /* the version string for entity */ + int standalone; /* Was that entity marked standalone */ + int id; /* an unique identifier for the entity */ +}; + +/** + * xmlParserNodeInfo: + * + * The parser can be asked to collect Node information, i.e. at what + * place in the file they were detected. + * NOTE: This is off by default and not very well tested. + */ +typedef struct _xmlParserNodeInfo xmlParserNodeInfo; +typedef xmlParserNodeInfo *xmlParserNodeInfoPtr; + +struct _xmlParserNodeInfo { + const struct _xmlNode* node; + /* Position & line # that text that created the node begins & ends on */ + unsigned long begin_pos; + unsigned long begin_line; + unsigned long end_pos; + unsigned long end_line; +}; + +typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq; +typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr; +struct _xmlParserNodeInfoSeq { + unsigned long maximum; + unsigned long length; + xmlParserNodeInfo* buffer; +}; + +/** + * xmlParserInputState: + * + * The parser is now working also as a state based parser. + * The recursive one use the state info for entities processing. + */ +typedef enum { + XML_PARSER_EOF = -1, /* nothing is to be parsed */ + XML_PARSER_START = 0, /* nothing has been parsed */ + XML_PARSER_MISC, /* Misc* before int subset */ + XML_PARSER_PI, /* Within a processing instruction */ + XML_PARSER_DTD, /* within some DTD content */ + XML_PARSER_PROLOG, /* Misc* after internal subset */ + XML_PARSER_COMMENT, /* within a comment */ + XML_PARSER_START_TAG, /* within a start tag */ + XML_PARSER_CONTENT, /* within the content */ + XML_PARSER_CDATA_SECTION, /* within a CDATA section */ + XML_PARSER_END_TAG, /* within a closing tag */ + XML_PARSER_ENTITY_DECL, /* within an entity declaration */ + XML_PARSER_ENTITY_VALUE, /* within an entity value in a decl */ + XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */ + XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */ + XML_PARSER_EPILOG, /* the Misc* after the last end tag */ + XML_PARSER_IGNORE, /* within an IGNORED section */ + XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */ +} xmlParserInputState; + +/** + * XML_DETECT_IDS: + * + * Bit in the loadsubset context field to tell to do ID/REFs lookups. + * Use it to initialize xmlLoadExtDtdDefaultValue. + */ +#define XML_DETECT_IDS 2 + +/** + * XML_COMPLETE_ATTRS: + * + * Bit in the loadsubset context field to tell to do complete the + * elements attributes lists with the ones defaulted from the DTDs. + * Use it to initialize xmlLoadExtDtdDefaultValue. + */ +#define XML_COMPLETE_ATTRS 4 + +/** + * XML_SKIP_IDS: + * + * Bit in the loadsubset context field to tell to not do ID/REFs registration. + * Used to initialize xmlLoadExtDtdDefaultValue in some special cases. + */ +#define XML_SKIP_IDS 8 + +/** + * xmlParserMode: + * + * A parser can operate in various modes + */ +typedef enum { + XML_PARSE_UNKNOWN = 0, + XML_PARSE_DOM = 1, + XML_PARSE_SAX = 2, + XML_PARSE_PUSH_DOM = 3, + XML_PARSE_PUSH_SAX = 4, + XML_PARSE_READER = 5 +} xmlParserMode; + +typedef struct _xmlStartTag xmlStartTag; + +/** + * xmlParserCtxt: + * + * The parser context. + * NOTE This doesn't completely define the parser state, the (current ?) + * design of the parser uses recursive function calls since this allow + * and easy mapping from the production rules of the specification + * to the actual code. The drawback is that the actual function call + * also reflect the parser state. However most of the parsing routines + * takes as the only argument the parser context pointer, so migrating + * to a state based parser for progressive parsing shouldn't be too hard. + */ +struct _xmlParserCtxt { + struct _xmlSAXHandler *sax; /* The SAX handler */ + void *userData; /* For SAX interface only, used by DOM build */ + xmlDocPtr myDoc; /* the document being built */ + int wellFormed; /* is the document well formed */ + int replaceEntities; /* shall we replace entities ? */ + const xmlChar *version; /* the XML version string */ + const xmlChar *encoding; /* the declared encoding, if any */ + int standalone; /* standalone document */ + int html; /* an HTML(1) document + * 3 is HTML after + * 10 is HTML after + */ + + /* Input stream stack */ + xmlParserInputPtr input; /* Current input stream */ + int inputNr; /* Number of current input streams */ + int inputMax; /* Max number of input streams */ + xmlParserInputPtr *inputTab; /* stack of inputs */ + + /* Node analysis stack only used for DOM building */ + xmlNodePtr node; /* Current parsed Node */ + int nodeNr; /* Depth of the parsing stack */ + int nodeMax; /* Max depth of the parsing stack */ + xmlNodePtr *nodeTab; /* array of nodes */ + + int record_info; /* Whether node info should be kept */ + xmlParserNodeInfoSeq node_seq; /* info about each node parsed */ + + int errNo; /* error code */ + + int hasExternalSubset; /* reference and external subset */ + int hasPErefs; /* the internal subset has PE refs */ + int external; /* are we parsing an external entity */ + + int valid; /* is the document valid */ + int validate; /* shall we try to validate ? */ + xmlValidCtxt vctxt; /* The validity context */ + + xmlParserInputState instate; /* current type of input */ + int token; /* next char look-ahead */ + + char *directory; /* the data directory */ + + /* Node name stack */ + const xmlChar *name; /* Current parsed Node */ + int nameNr; /* Depth of the parsing stack */ + int nameMax; /* Max depth of the parsing stack */ + const xmlChar * *nameTab; /* array of nodes */ + + long nbChars; /* unused */ + long checkIndex; /* used by progressive parsing lookup */ + int keepBlanks; /* ugly but ... */ + int disableSAX; /* SAX callbacks are disabled */ + int inSubset; /* Parsing is in int 1/ext 2 subset */ + const xmlChar * intSubName; /* name of subset */ + xmlChar * extSubURI; /* URI of external subset */ + xmlChar * extSubSystem; /* SYSTEM ID of external subset */ + + /* xml:space values */ + int * space; /* Should the parser preserve spaces */ + int spaceNr; /* Depth of the parsing stack */ + int spaceMax; /* Max depth of the parsing stack */ + int * spaceTab; /* array of space infos */ + + int depth; /* to prevent entity substitution loops */ + xmlParserInputPtr entity; /* used to check entities boundaries */ + int charset; /* encoding of the in-memory content + actually an xmlCharEncoding */ + int nodelen; /* Those two fields are there to */ + int nodemem; /* Speed up large node parsing */ + int pedantic; /* signal pedantic warnings */ + void *_private; /* For user data, libxml won't touch it */ + + int loadsubset; /* should the external subset be loaded */ + int linenumbers; /* set line number in element content */ + void *catalogs; /* document's own catalog */ + int recovery; /* run in recovery mode */ + int progressive; /* is this a progressive parsing */ + xmlDictPtr dict; /* dictionary for the parser */ + const xmlChar * *atts; /* array for the attributes callbacks */ + int maxatts; /* the size of the array */ + int docdict; /* use strings from dict to build tree */ + + /* + * pre-interned strings + */ + const xmlChar *str_xml; + const xmlChar *str_xmlns; + const xmlChar *str_xml_ns; + + /* + * Everything below is used only by the new SAX mode + */ + int sax2; /* operating in the new SAX mode */ + int nsNr; /* the number of inherited namespaces */ + int nsMax; /* the size of the arrays */ + const xmlChar * *nsTab; /* the array of prefix/namespace name */ + int *attallocs; /* which attribute were allocated */ + xmlStartTag *pushTab; /* array of data for push */ + xmlHashTablePtr attsDefault; /* defaulted attributes if any */ + xmlHashTablePtr attsSpecial; /* non-CDATA attributes if any */ + int nsWellFormed; /* is the document XML Namespace okay */ + int options; /* Extra options */ + + /* + * Those fields are needed only for streaming parsing so far + */ + int dictNames; /* Use dictionary names for the tree */ + int freeElemsNr; /* number of freed element nodes */ + xmlNodePtr freeElems; /* List of freed element nodes */ + int freeAttrsNr; /* number of freed attributes nodes */ + xmlAttrPtr freeAttrs; /* List of freed attributes nodes */ + + /* + * the complete error information for the last error. + */ + xmlError lastError; + xmlParserMode parseMode; /* the parser mode */ + unsigned long nbentities; /* number of entities references */ + unsigned long sizeentities; /* size of parsed entities */ + + /* for use by HTML non-recursive parser */ + xmlParserNodeInfo *nodeInfo; /* Current NodeInfo */ + int nodeInfoNr; /* Depth of the parsing stack */ + int nodeInfoMax; /* Max depth of the parsing stack */ + xmlParserNodeInfo *nodeInfoTab; /* array of nodeInfos */ + + int input_id; /* we need to label inputs */ + unsigned long sizeentcopy; /* volume of entity copy */ +}; + +/** + * xmlSAXLocator: + * + * A SAX Locator. + */ +struct _xmlSAXLocator { + const xmlChar *(*getPublicId)(void *ctx); + const xmlChar *(*getSystemId)(void *ctx); + int (*getLineNumber)(void *ctx); + int (*getColumnNumber)(void *ctx); +}; + +/** + * xmlSAXHandler: + * + * A SAX handler is bunch of callbacks called by the parser when processing + * of the input generate data or structure information. + */ + +/** + * resolveEntitySAXFunc: + * @ctx: the user data (XML parser context) + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * + * Callback: + * The entity loader, to control the loading of external entities, + * the application can either: + * - override this resolveEntity() callback in the SAX block + * - or better use the xmlSetExternalEntityLoader() function to + * set up it's own entity resolution routine + * + * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. + */ +typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx, + const xmlChar *publicId, + const xmlChar *systemId); +/** + * internalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the root element name + * @ExternalID: the external ID + * @SystemID: the SYSTEM ID (e.g. filename or URL) + * + * Callback on internal subset declaration. + */ +typedef void (*internalSubsetSAXFunc) (void *ctx, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +/** + * externalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the root element name + * @ExternalID: the external ID + * @SystemID: the SYSTEM ID (e.g. filename or URL) + * + * Callback on external subset declaration. + */ +typedef void (*externalSubsetSAXFunc) (void *ctx, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +/** + * getEntitySAXFunc: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Get an entity by name. + * + * Returns the xmlEntityPtr if found. + */ +typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx, + const xmlChar *name); +/** + * getParameterEntitySAXFunc: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Get a parameter entity by name. + * + * Returns the xmlEntityPtr if found. + */ +typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx, + const xmlChar *name); +/** + * entityDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the entity name + * @type: the entity type + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * @content: the entity value (without processing). + * + * An entity definition has been parsed. + */ +typedef void (*entityDeclSAXFunc) (void *ctx, + const xmlChar *name, + int type, + const xmlChar *publicId, + const xmlChar *systemId, + xmlChar *content); +/** + * notationDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The name of the notation + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * + * What to do when a notation declaration has been parsed. + */ +typedef void (*notationDeclSAXFunc)(void *ctx, + const xmlChar *name, + const xmlChar *publicId, + const xmlChar *systemId); +/** + * attributeDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @elem: the name of the element + * @fullname: the attribute name + * @type: the attribute type + * @def: the type of default value + * @defaultValue: the attribute default value + * @tree: the tree of enumerated value set + * + * An attribute definition has been parsed. + */ +typedef void (*attributeDeclSAXFunc)(void *ctx, + const xmlChar *elem, + const xmlChar *fullname, + int type, + int def, + const xmlChar *defaultValue, + xmlEnumerationPtr tree); +/** + * elementDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the element name + * @type: the element type + * @content: the element value tree + * + * An element definition has been parsed. + */ +typedef void (*elementDeclSAXFunc)(void *ctx, + const xmlChar *name, + int type, + xmlElementContentPtr content); +/** + * unparsedEntityDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The name of the entity + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * @notationName: the name of the notation + * + * What to do when an unparsed entity declaration is parsed. + */ +typedef void (*unparsedEntityDeclSAXFunc)(void *ctx, + const xmlChar *name, + const xmlChar *publicId, + const xmlChar *systemId, + const xmlChar *notationName); +/** + * setDocumentLocatorSAXFunc: + * @ctx: the user data (XML parser context) + * @loc: A SAX Locator + * + * Receive the document locator at startup, actually xmlDefaultSAXLocator. + * Everything is available on the context, so this is useless in our case. + */ +typedef void (*setDocumentLocatorSAXFunc) (void *ctx, + xmlSAXLocatorPtr loc); +/** + * startDocumentSAXFunc: + * @ctx: the user data (XML parser context) + * + * Called when the document start being processed. + */ +typedef void (*startDocumentSAXFunc) (void *ctx); +/** + * endDocumentSAXFunc: + * @ctx: the user data (XML parser context) + * + * Called when the document end has been detected. + */ +typedef void (*endDocumentSAXFunc) (void *ctx); +/** + * startElementSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The element name, including namespace prefix + * @atts: An array of name/value attributes pairs, NULL terminated + * + * Called when an opening tag has been processed. + */ +typedef void (*startElementSAXFunc) (void *ctx, + const xmlChar *name, + const xmlChar **atts); +/** + * endElementSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The element name + * + * Called when the end of an element has been detected. + */ +typedef void (*endElementSAXFunc) (void *ctx, + const xmlChar *name); +/** + * attributeSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The attribute name, including namespace prefix + * @value: The attribute value + * + * Handle an attribute that has been read by the parser. + * The default handling is to convert the attribute into an + * DOM subtree and past it in a new xmlAttr element added to + * the element. + */ +typedef void (*attributeSAXFunc) (void *ctx, + const xmlChar *name, + const xmlChar *value); +/** + * referenceSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Called when an entity reference is detected. + */ +typedef void (*referenceSAXFunc) (void *ctx, + const xmlChar *name); +/** + * charactersSAXFunc: + * @ctx: the user data (XML parser context) + * @ch: a xmlChar string + * @len: the number of xmlChar + * + * Receiving some chars from the parser. + */ +typedef void (*charactersSAXFunc) (void *ctx, + const xmlChar *ch, + int len); +/** + * ignorableWhitespaceSAXFunc: + * @ctx: the user data (XML parser context) + * @ch: a xmlChar string + * @len: the number of xmlChar + * + * Receiving some ignorable whitespaces from the parser. + * UNUSED: by default the DOM building will use characters. + */ +typedef void (*ignorableWhitespaceSAXFunc) (void *ctx, + const xmlChar *ch, + int len); +/** + * processingInstructionSAXFunc: + * @ctx: the user data (XML parser context) + * @target: the target name + * @data: the PI data's + * + * A processing instruction has been parsed. + */ +typedef void (*processingInstructionSAXFunc) (void *ctx, + const xmlChar *target, + const xmlChar *data); +/** + * commentSAXFunc: + * @ctx: the user data (XML parser context) + * @value: the comment content + * + * A comment has been parsed. + */ +typedef void (*commentSAXFunc) (void *ctx, + const xmlChar *value); +/** + * cdataBlockSAXFunc: + * @ctx: the user data (XML parser context) + * @value: The pcdata content + * @len: the block length + * + * Called when a pcdata block has been parsed. + */ +typedef void (*cdataBlockSAXFunc) ( + void *ctx, + const xmlChar *value, + int len); +/** + * warningSAXFunc: + * @ctx: an XML parser context + * @msg: the message to display/transmit + * @...: extra parameters for the message display + * + * Display and format a warning messages, callback. + */ +typedef void (XMLCDECL *warningSAXFunc) (void *ctx, + const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); +/** + * errorSAXFunc: + * @ctx: an XML parser context + * @msg: the message to display/transmit + * @...: extra parameters for the message display + * + * Display and format an error messages, callback. + */ +typedef void (XMLCDECL *errorSAXFunc) (void *ctx, + const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); +/** + * fatalErrorSAXFunc: + * @ctx: an XML parser context + * @msg: the message to display/transmit + * @...: extra parameters for the message display + * + * Display and format fatal error messages, callback. + * Note: so far fatalError() SAX callbacks are not used, error() + * get all the callbacks for errors. + */ +typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx, + const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); +/** + * isStandaloneSAXFunc: + * @ctx: the user data (XML parser context) + * + * Is this document tagged standalone? + * + * Returns 1 if true + */ +typedef int (*isStandaloneSAXFunc) (void *ctx); +/** + * hasInternalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * + * Does this document has an internal subset. + * + * Returns 1 if true + */ +typedef int (*hasInternalSubsetSAXFunc) (void *ctx); + +/** + * hasExternalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * + * Does this document has an external subset? + * + * Returns 1 if true + */ +typedef int (*hasExternalSubsetSAXFunc) (void *ctx); + +/************************************************************************ + * * + * The SAX version 2 API extensions * + * * + ************************************************************************/ +/** + * XML_SAX2_MAGIC: + * + * Special constant found in SAX2 blocks initialized fields + */ +#define XML_SAX2_MAGIC 0xDEEDBEAF + +/** + * startElementNsSAX2Func: + * @ctx: the user data (XML parser context) + * @localname: the local name of the element + * @prefix: the element namespace prefix if available + * @URI: the element namespace name if available + * @nb_namespaces: number of namespace definitions on that node + * @namespaces: pointer to the array of prefix/URI pairs namespace definitions + * @nb_attributes: the number of attributes on that node + * @nb_defaulted: the number of defaulted attributes. The defaulted + * ones are at the end of the array + * @attributes: pointer to the array of (localname/prefix/URI/value/end) + * attribute values. + * + * SAX2 callback when an element start has been detected by the parser. + * It provides the namespace information for the element, as well as + * the new namespace declarations on the element. + */ + +typedef void (*startElementNsSAX2Func) (void *ctx, + const xmlChar *localname, + const xmlChar *prefix, + const xmlChar *URI, + int nb_namespaces, + const xmlChar **namespaces, + int nb_attributes, + int nb_defaulted, + const xmlChar **attributes); + +/** + * endElementNsSAX2Func: + * @ctx: the user data (XML parser context) + * @localname: the local name of the element + * @prefix: the element namespace prefix if available + * @URI: the element namespace name if available + * + * SAX2 callback when an element end has been detected by the parser. + * It provides the namespace information for the element. + */ + +typedef void (*endElementNsSAX2Func) (void *ctx, + const xmlChar *localname, + const xmlChar *prefix, + const xmlChar *URI); + + +struct _xmlSAXHandler { + internalSubsetSAXFunc internalSubset; + isStandaloneSAXFunc isStandalone; + hasInternalSubsetSAXFunc hasInternalSubset; + hasExternalSubsetSAXFunc hasExternalSubset; + resolveEntitySAXFunc resolveEntity; + getEntitySAXFunc getEntity; + entityDeclSAXFunc entityDecl; + notationDeclSAXFunc notationDecl; + attributeDeclSAXFunc attributeDecl; + elementDeclSAXFunc elementDecl; + unparsedEntityDeclSAXFunc unparsedEntityDecl; + setDocumentLocatorSAXFunc setDocumentLocator; + startDocumentSAXFunc startDocument; + endDocumentSAXFunc endDocument; + startElementSAXFunc startElement; + endElementSAXFunc endElement; + referenceSAXFunc reference; + charactersSAXFunc characters; + ignorableWhitespaceSAXFunc ignorableWhitespace; + processingInstructionSAXFunc processingInstruction; + commentSAXFunc comment; + warningSAXFunc warning; + errorSAXFunc error; + fatalErrorSAXFunc fatalError; /* unused error() get all the errors */ + getParameterEntitySAXFunc getParameterEntity; + cdataBlockSAXFunc cdataBlock; + externalSubsetSAXFunc externalSubset; + unsigned int initialized; + /* The following fields are extensions available only on version 2 */ + void *_private; + startElementNsSAX2Func startElementNs; + endElementNsSAX2Func endElementNs; + xmlStructuredErrorFunc serror; +}; + +/* + * SAX Version 1 + */ +typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1; +typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr; +struct _xmlSAXHandlerV1 { + internalSubsetSAXFunc internalSubset; + isStandaloneSAXFunc isStandalone; + hasInternalSubsetSAXFunc hasInternalSubset; + hasExternalSubsetSAXFunc hasExternalSubset; + resolveEntitySAXFunc resolveEntity; + getEntitySAXFunc getEntity; + entityDeclSAXFunc entityDecl; + notationDeclSAXFunc notationDecl; + attributeDeclSAXFunc attributeDecl; + elementDeclSAXFunc elementDecl; + unparsedEntityDeclSAXFunc unparsedEntityDecl; + setDocumentLocatorSAXFunc setDocumentLocator; + startDocumentSAXFunc startDocument; + endDocumentSAXFunc endDocument; + startElementSAXFunc startElement; + endElementSAXFunc endElement; + referenceSAXFunc reference; + charactersSAXFunc characters; + ignorableWhitespaceSAXFunc ignorableWhitespace; + processingInstructionSAXFunc processingInstruction; + commentSAXFunc comment; + warningSAXFunc warning; + errorSAXFunc error; + fatalErrorSAXFunc fatalError; /* unused error() get all the errors */ + getParameterEntitySAXFunc getParameterEntity; + cdataBlockSAXFunc cdataBlock; + externalSubsetSAXFunc externalSubset; + unsigned int initialized; +}; + + +/** + * xmlExternalEntityLoader: + * @URL: The System ID of the resource requested + * @ID: The Public ID of the resource requested + * @context: the XML parser context + * + * External entity loaders types. + * + * Returns the entity input parser. + */ +typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL, + const char *ID, + xmlParserCtxtPtr context); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + * Init/Cleanup + */ +XMLPUBFUN void XMLCALL + xmlInitParser (void); +XMLPUBFUN void XMLCALL + xmlCleanupParser (void); + +/* + * Input functions + */ +XMLPUBFUN int XMLCALL + xmlParserInputRead (xmlParserInputPtr in, + int len); +XMLPUBFUN int XMLCALL + xmlParserInputGrow (xmlParserInputPtr in, + int len); + +/* + * Basic parsing Interfaces + */ +#ifdef LIBXML_SAX1_ENABLED +XMLPUBFUN xmlDocPtr XMLCALL + xmlParseDoc (const xmlChar *cur); +XMLPUBFUN xmlDocPtr XMLCALL + xmlParseFile (const char *filename); +XMLPUBFUN xmlDocPtr XMLCALL + xmlParseMemory (const char *buffer, + int size); +#endif /* LIBXML_SAX1_ENABLED */ +XMLPUBFUN int XMLCALL + xmlSubstituteEntitiesDefault(int val); +XMLPUBFUN int XMLCALL + xmlKeepBlanksDefault (int val); +XMLPUBFUN void XMLCALL + xmlStopParser (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlPedanticParserDefault(int val); +XMLPUBFUN int XMLCALL + xmlLineNumbersDefault (int val); + +#ifdef LIBXML_SAX1_ENABLED +/* + * Recovery mode + */ +XMLPUBFUN xmlDocPtr XMLCALL + xmlRecoverDoc (const xmlChar *cur); +XMLPUBFUN xmlDocPtr XMLCALL + xmlRecoverMemory (const char *buffer, + int size); +XMLPUBFUN xmlDocPtr XMLCALL + xmlRecoverFile (const char *filename); +#endif /* LIBXML_SAX1_ENABLED */ + +/* + * Less common routines and SAX interfaces + */ +XMLPUBFUN int XMLCALL + xmlParseDocument (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt); +#ifdef LIBXML_SAX1_ENABLED +XMLPUBFUN int XMLCALL + xmlSAXUserParseFile (xmlSAXHandlerPtr sax, + void *user_data, + const char *filename); +XMLPUBFUN int XMLCALL + xmlSAXUserParseMemory (xmlSAXHandlerPtr sax, + void *user_data, + const char *buffer, + int size); +XMLPUBFUN xmlDocPtr XMLCALL + xmlSAXParseDoc (xmlSAXHandlerPtr sax, + const xmlChar *cur, + int recovery); +XMLPUBFUN xmlDocPtr XMLCALL + xmlSAXParseMemory (xmlSAXHandlerPtr sax, + const char *buffer, + int size, + int recovery); +XMLPUBFUN xmlDocPtr XMLCALL + xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax, + const char *buffer, + int size, + int recovery, + void *data); +XMLPUBFUN xmlDocPtr XMLCALL + xmlSAXParseFile (xmlSAXHandlerPtr sax, + const char *filename, + int recovery); +XMLPUBFUN xmlDocPtr XMLCALL + xmlSAXParseFileWithData (xmlSAXHandlerPtr sax, + const char *filename, + int recovery, + void *data); +XMLPUBFUN xmlDocPtr XMLCALL + xmlSAXParseEntity (xmlSAXHandlerPtr sax, + const char *filename); +XMLPUBFUN xmlDocPtr XMLCALL + xmlParseEntity (const char *filename); +#endif /* LIBXML_SAX1_ENABLED */ + +#ifdef LIBXML_VALID_ENABLED +XMLPUBFUN xmlDtdPtr XMLCALL + xmlSAXParseDTD (xmlSAXHandlerPtr sax, + const xmlChar *ExternalID, + const xmlChar *SystemID); +XMLPUBFUN xmlDtdPtr XMLCALL + xmlParseDTD (const xmlChar *ExternalID, + const xmlChar *SystemID); +XMLPUBFUN xmlDtdPtr XMLCALL + xmlIOParseDTD (xmlSAXHandlerPtr sax, + xmlParserInputBufferPtr input, + xmlCharEncoding enc); +#endif /* LIBXML_VALID_ENABLE */ +#ifdef LIBXML_SAX1_ENABLED +XMLPUBFUN int XMLCALL + xmlParseBalancedChunkMemory(xmlDocPtr doc, + xmlSAXHandlerPtr sax, + void *user_data, + int depth, + const xmlChar *string, + xmlNodePtr *lst); +#endif /* LIBXML_SAX1_ENABLED */ +XMLPUBFUN xmlParserErrors XMLCALL + xmlParseInNodeContext (xmlNodePtr node, + const char *data, + int datalen, + int options, + xmlNodePtr *lst); +#ifdef LIBXML_SAX1_ENABLED +XMLPUBFUN int XMLCALL + xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc, + xmlSAXHandlerPtr sax, + void *user_data, + int depth, + const xmlChar *string, + xmlNodePtr *lst, + int recover); +XMLPUBFUN int XMLCALL + xmlParseExternalEntity (xmlDocPtr doc, + xmlSAXHandlerPtr sax, + void *user_data, + int depth, + const xmlChar *URL, + const xmlChar *ID, + xmlNodePtr *lst); +#endif /* LIBXML_SAX1_ENABLED */ +XMLPUBFUN int XMLCALL + xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx, + const xmlChar *URL, + const xmlChar *ID, + xmlNodePtr *lst); + +/* + * Parser contexts handling. + */ +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlNewParserCtxt (void); +XMLPUBFUN int XMLCALL + xmlInitParserCtxt (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlClearParserCtxt (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlFreeParserCtxt (xmlParserCtxtPtr ctxt); +#ifdef LIBXML_SAX1_ENABLED +XMLPUBFUN void XMLCALL + xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt, + const xmlChar* buffer, + const char *filename); +#endif /* LIBXML_SAX1_ENABLED */ +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlCreateDocParserCtxt (const xmlChar *cur); + +#ifdef LIBXML_LEGACY_ENABLED +/* + * Reading/setting optional parsing features. + */ +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlGetFeaturesList (int *len, + const char **result); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlGetFeature (xmlParserCtxtPtr ctxt, + const char *name, + void *result); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlSetFeature (xmlParserCtxtPtr ctxt, + const char *name, + void *value); +#endif /* LIBXML_LEGACY_ENABLED */ + +#ifdef LIBXML_PUSH_ENABLED +/* + * Interfaces for the Push mode. + */ +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, + void *user_data, + const char *chunk, + int size, + const char *filename); +XMLPUBFUN int XMLCALL + xmlParseChunk (xmlParserCtxtPtr ctxt, + const char *chunk, + int size, + int terminate); +#endif /* LIBXML_PUSH_ENABLED */ + +/* + * Special I/O mode. + */ + +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax, + void *user_data, + xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + xmlCharEncoding enc); + +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlNewIOInputStream (xmlParserCtxtPtr ctxt, + xmlParserInputBufferPtr input, + xmlCharEncoding enc); + +/* + * Node infos. + */ +XMLPUBFUN const xmlParserNodeInfo* XMLCALL + xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt, + const xmlNodePtr node); +XMLPUBFUN void XMLCALL + xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq); +XMLPUBFUN void XMLCALL + xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq); +XMLPUBFUN unsigned long XMLCALL + xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq, + const xmlNodePtr node); +XMLPUBFUN void XMLCALL + xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt, + const xmlParserNodeInfoPtr info); + +/* + * External entities handling actually implemented in xmlIO. + */ + +XMLPUBFUN void XMLCALL + xmlSetExternalEntityLoader(xmlExternalEntityLoader f); +XMLPUBFUN xmlExternalEntityLoader XMLCALL + xmlGetExternalEntityLoader(void); +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlLoadExternalEntity (const char *URL, + const char *ID, + xmlParserCtxtPtr ctxt); + +/* + * Index lookup, actually implemented in the encoding module + */ +XMLPUBFUN long XMLCALL + xmlByteConsumed (xmlParserCtxtPtr ctxt); + +/* + * New set of simpler/more flexible APIs + */ +/** + * xmlParserOption: + * + * This is the set of XML parser options that can be passed down + * to the xmlReadDoc() and similar calls. + */ +typedef enum { + XML_PARSE_RECOVER = 1<<0, /* recover on errors */ + XML_PARSE_NOENT = 1<<1, /* substitute entities */ + XML_PARSE_DTDLOAD = 1<<2, /* load the external subset */ + XML_PARSE_DTDATTR = 1<<3, /* default DTD attributes */ + XML_PARSE_DTDVALID = 1<<4, /* validate with the DTD */ + XML_PARSE_NOERROR = 1<<5, /* suppress error reports */ + XML_PARSE_NOWARNING = 1<<6, /* suppress warning reports */ + XML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ + XML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ + XML_PARSE_SAX1 = 1<<9, /* use the SAX1 interface internally */ + XML_PARSE_XINCLUDE = 1<<10,/* Implement XInclude substitution */ + XML_PARSE_NONET = 1<<11,/* Forbid network access */ + XML_PARSE_NODICT = 1<<12,/* Do not reuse the context dictionary */ + XML_PARSE_NSCLEAN = 1<<13,/* remove redundant namespaces declarations */ + XML_PARSE_NOCDATA = 1<<14,/* merge CDATA as text nodes */ + XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */ + XML_PARSE_COMPACT = 1<<16,/* compact small text nodes; no modification of + the tree allowed afterwards (will possibly + crash if you try to modify the tree) */ + XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */ + XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */ + XML_PARSE_HUGE = 1<<19,/* relax any hardcoded limit from the parser */ + XML_PARSE_OLDSAX = 1<<20,/* parse using SAX2 interface before 2.7.0 */ + XML_PARSE_IGNORE_ENC= 1<<21,/* ignore internal document encoding hint */ + XML_PARSE_BIG_LINES = 1<<22 /* Store big lines numbers in text PSVI field */ +} xmlParserOption; + +XMLPUBFUN void XMLCALL + xmlCtxtReset (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlCtxtResetPush (xmlParserCtxtPtr ctxt, + const char *chunk, + int size, + const char *filename, + const char *encoding); +XMLPUBFUN int XMLCALL + xmlCtxtUseOptions (xmlParserCtxtPtr ctxt, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlReadDoc (const xmlChar *cur, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlReadFile (const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlReadMemory (const char *buffer, + int size, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlReadFd (int fd, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlReadIO (xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlCtxtReadDoc (xmlParserCtxtPtr ctxt, + const xmlChar *cur, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlCtxtReadFile (xmlParserCtxtPtr ctxt, + const char *filename, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlCtxtReadMemory (xmlParserCtxtPtr ctxt, + const char *buffer, + int size, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlCtxtReadFd (xmlParserCtxtPtr ctxt, + int fd, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlDocPtr XMLCALL + xmlCtxtReadIO (xmlParserCtxtPtr ctxt, + xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + const char *URL, + const char *encoding, + int options); + +/* + * Library wide options + */ +/** + * xmlFeature: + * + * Used to examine the existence of features that can be enabled + * or disabled at compile-time. + * They used to be called XML_FEATURE_xxx but this clashed with Expat + */ +typedef enum { + XML_WITH_THREAD = 1, + XML_WITH_TREE = 2, + XML_WITH_OUTPUT = 3, + XML_WITH_PUSH = 4, + XML_WITH_READER = 5, + XML_WITH_PATTERN = 6, + XML_WITH_WRITER = 7, + XML_WITH_SAX1 = 8, + XML_WITH_FTP = 9, + XML_WITH_HTTP = 10, + XML_WITH_VALID = 11, + XML_WITH_HTML = 12, + XML_WITH_LEGACY = 13, + XML_WITH_C14N = 14, + XML_WITH_CATALOG = 15, + XML_WITH_XPATH = 16, + XML_WITH_XPTR = 17, + XML_WITH_XINCLUDE = 18, + XML_WITH_ICONV = 19, + XML_WITH_ISO8859X = 20, + XML_WITH_UNICODE = 21, + XML_WITH_REGEXP = 22, + XML_WITH_AUTOMATA = 23, + XML_WITH_EXPR = 24, + XML_WITH_SCHEMAS = 25, + XML_WITH_SCHEMATRON = 26, + XML_WITH_MODULES = 27, + XML_WITH_DEBUG = 28, + XML_WITH_DEBUG_MEM = 29, + XML_WITH_DEBUG_RUN = 30, + XML_WITH_ZLIB = 31, + XML_WITH_ICU = 32, + XML_WITH_LZMA = 33, + XML_WITH_NONE = 99999 /* just to be sure of allocation size */ +} xmlFeature; + +XMLPUBFUN int XMLCALL + xmlHasFeature (xmlFeature feature); + +#ifdef __cplusplus +} +#endif +#endif /* __XML_PARSER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/parserInternals.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/parserInternals.h new file mode 100644 index 0000000..656ee46 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/parserInternals.h @@ -0,0 +1,656 @@ +/* + * Summary: internals routines and limits exported by the parser. + * Description: this module exports a number of internal parsing routines + * they are not really all intended for applications but + * can prove useful doing low level processing. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_PARSER_INTERNALS_H__ +#define __XML_PARSER_INTERNALS_H__ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlParserMaxDepth: + * + * arbitrary depth limit for the XML documents that we allow to + * process. This is not a limitation of the parser but a safety + * boundary feature, use XML_PARSE_HUGE option to override it. + */ +XMLPUBVAR unsigned int xmlParserMaxDepth; + +/** + * XML_MAX_TEXT_LENGTH: + * + * Maximum size allowed for a single text node when building a tree. + * This is not a limitation of the parser but a safety boundary feature, + * use XML_PARSE_HUGE option to override it. + * Introduced in 2.9.0 + */ +#define XML_MAX_TEXT_LENGTH 10000000 + +/** + * XML_MAX_NAME_LENGTH: + * + * Maximum size allowed for a markup identifier. + * This is not a limitation of the parser but a safety boundary feature, + * use XML_PARSE_HUGE option to override it. + * Note that with the use of parsing dictionaries overriding the limit + * may result in more runtime memory usage in face of "unfriendly' content + * Introduced in 2.9.0 + */ +#define XML_MAX_NAME_LENGTH 50000 + +/** + * XML_MAX_DICTIONARY_LIMIT: + * + * Maximum size allowed by the parser for a dictionary by default + * This is not a limitation of the parser but a safety boundary feature, + * use XML_PARSE_HUGE option to override it. + * Introduced in 2.9.0 + */ +#define XML_MAX_DICTIONARY_LIMIT 10000000 + +/** + * XML_MAX_LOOKUP_LIMIT: + * + * Maximum size allowed by the parser for ahead lookup + * This is an upper boundary enforced by the parser to avoid bad + * behaviour on "unfriendly' content + * Introduced in 2.9.0 + */ +#define XML_MAX_LOOKUP_LIMIT 10000000 + +/** + * XML_MAX_NAMELEN: + * + * Identifiers can be longer, but this will be more costly + * at runtime. + */ +#define XML_MAX_NAMELEN 100 + +/** + * INPUT_CHUNK: + * + * The parser tries to always have that amount of input ready. + * One of the point is providing context when reporting errors. + */ +#define INPUT_CHUNK 250 + +/************************************************************************ + * * + * UNICODE version of the macros. * + * * + ************************************************************************/ +/** + * IS_BYTE_CHAR: + * @c: an byte value (int) + * + * Macro to check the following production in the XML spec: + * + * [2] Char ::= #x9 | #xA | #xD | [#x20...] + * any byte character in the accepted range + */ +#define IS_BYTE_CHAR(c) xmlIsChar_ch(c) + +/** + * IS_CHAR: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] + * | [#x10000-#x10FFFF] + * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. + */ +#define IS_CHAR(c) xmlIsCharQ(c) + +/** + * IS_CHAR_CH: + * @c: an xmlChar (usually an unsigned char) + * + * Behaves like IS_CHAR on single-byte value + */ +#define IS_CHAR_CH(c) xmlIsChar_ch(c) + +/** + * IS_BLANK: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * [3] S ::= (#x20 | #x9 | #xD | #xA)+ + */ +#define IS_BLANK(c) xmlIsBlankQ(c) + +/** + * IS_BLANK_CH: + * @c: an xmlChar value (normally unsigned char) + * + * Behaviour same as IS_BLANK + */ +#define IS_BLANK_CH(c) xmlIsBlank_ch(c) + +/** + * IS_BASECHAR: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * [85] BaseChar ::= ... long list see REC ... + */ +#define IS_BASECHAR(c) xmlIsBaseCharQ(c) + +/** + * IS_DIGIT: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * [88] Digit ::= ... long list see REC ... + */ +#define IS_DIGIT(c) xmlIsDigitQ(c) + +/** + * IS_DIGIT_CH: + * @c: an xmlChar value (usually an unsigned char) + * + * Behaves like IS_DIGIT but with a single byte argument + */ +#define IS_DIGIT_CH(c) xmlIsDigit_ch(c) + +/** + * IS_COMBINING: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * [87] CombiningChar ::= ... long list see REC ... + */ +#define IS_COMBINING(c) xmlIsCombiningQ(c) + +/** + * IS_COMBINING_CH: + * @c: an xmlChar (usually an unsigned char) + * + * Always false (all combining chars > 0xff) + */ +#define IS_COMBINING_CH(c) 0 + +/** + * IS_EXTENDER: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * + * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | + * #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | + * [#x309D-#x309E] | [#x30FC-#x30FE] + */ +#define IS_EXTENDER(c) xmlIsExtenderQ(c) + +/** + * IS_EXTENDER_CH: + * @c: an xmlChar value (usually an unsigned char) + * + * Behaves like IS_EXTENDER but with a single-byte argument + */ +#define IS_EXTENDER_CH(c) xmlIsExtender_ch(c) + +/** + * IS_IDEOGRAPHIC: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * + * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] + */ +#define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c) + +/** + * IS_LETTER: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * + * [84] Letter ::= BaseChar | Ideographic + */ +#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c)) + +/** + * IS_LETTER_CH: + * @c: an xmlChar value (normally unsigned char) + * + * Macro behaves like IS_LETTER, but only check base chars + * + */ +#define IS_LETTER_CH(c) xmlIsBaseChar_ch(c) + +/** + * IS_ASCII_LETTER: + * @c: an xmlChar value + * + * Macro to check [a-zA-Z] + * + */ +#define IS_ASCII_LETTER(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ + ((0x61 <= (c)) && ((c) <= 0x7a))) + +/** + * IS_ASCII_DIGIT: + * @c: an xmlChar value + * + * Macro to check [0-9] + * + */ +#define IS_ASCII_DIGIT(c) ((0x30 <= (c)) && ((c) <= 0x39)) + +/** + * IS_PUBIDCHAR: + * @c: an UNICODE value (int) + * + * Macro to check the following production in the XML spec: + * + * + * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] + */ +#define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c) + +/** + * IS_PUBIDCHAR_CH: + * @c: an xmlChar value (normally unsigned char) + * + * Same as IS_PUBIDCHAR but for single-byte value + */ +#define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c) + +/** + * SKIP_EOL: + * @p: and UTF8 string pointer + * + * Skips the end of line chars. + */ +#define SKIP_EOL(p) \ + if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \ + if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; } + +/** + * MOVETO_ENDTAG: + * @p: and UTF8 string pointer + * + * Skips to the next '>' char. + */ +#define MOVETO_ENDTAG(p) \ + while ((*p) && (*(p) != '>')) (p)++ + +/** + * MOVETO_STARTTAG: + * @p: and UTF8 string pointer + * + * Skips to the next '<' char. + */ +#define MOVETO_STARTTAG(p) \ + while ((*p) && (*(p) != '<')) (p)++ + +/** + * Global variables used for predefined strings. + */ +XMLPUBVAR const xmlChar xmlStringText[]; +XMLPUBVAR const xmlChar xmlStringTextNoenc[]; +XMLPUBVAR const xmlChar xmlStringComment[]; + +/* + * Function to finish the work of the macros where needed. + */ +XMLPUBFUN int XMLCALL xmlIsLetter (int c); + +/** + * Parser context. + */ +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlCreateFileParserCtxt (const char *filename); +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlCreateURLParserCtxt (const char *filename, + int options); +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlCreateMemoryParserCtxt(const char *buffer, + int size); +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlCreateEntityParserCtxt(const xmlChar *URL, + const xmlChar *ID, + const xmlChar *base); +XMLPUBFUN int XMLCALL + xmlSwitchEncoding (xmlParserCtxtPtr ctxt, + xmlCharEncoding enc); +XMLPUBFUN int XMLCALL + xmlSwitchToEncoding (xmlParserCtxtPtr ctxt, + xmlCharEncodingHandlerPtr handler); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt, + xmlParserInputPtr input, + xmlCharEncodingHandlerPtr handler); + +#ifdef IN_LIBXML +/* internal error reporting */ +XMLPUBFUN void XMLCALL + __xmlErrEncoding (xmlParserCtxtPtr ctxt, + xmlParserErrors xmlerr, + const char *msg, + const xmlChar * str1, + const xmlChar * str2) LIBXML_ATTR_FORMAT(3,0); +#endif + +/** + * Input Streams. + */ +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlNewStringInputStream (xmlParserCtxtPtr ctxt, + const xmlChar *buffer); +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlNewEntityInputStream (xmlParserCtxtPtr ctxt, + xmlEntityPtr entity); +XMLPUBFUN int XMLCALL + xmlPushInput (xmlParserCtxtPtr ctxt, + xmlParserInputPtr input); +XMLPUBFUN xmlChar XMLCALL + xmlPopInput (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlFreeInputStream (xmlParserInputPtr input); +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlNewInputFromFile (xmlParserCtxtPtr ctxt, + const char *filename); +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlNewInputStream (xmlParserCtxtPtr ctxt); + +/** + * Namespaces. + */ +XMLPUBFUN xmlChar * XMLCALL + xmlSplitQName (xmlParserCtxtPtr ctxt, + const xmlChar *name, + xmlChar **prefix); + +/** + * Generic production rules. + */ +XMLPUBFUN const xmlChar * XMLCALL + xmlParseName (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlParseNmtoken (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlParseEntityValue (xmlParserCtxtPtr ctxt, + xmlChar **orig); +XMLPUBFUN xmlChar * XMLCALL + xmlParseAttValue (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlParseSystemLiteral (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlParsePubidLiteral (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseCharData (xmlParserCtxtPtr ctxt, + int cdata); +XMLPUBFUN xmlChar * XMLCALL + xmlParseExternalID (xmlParserCtxtPtr ctxt, + xmlChar **publicID, + int strict); +XMLPUBFUN void XMLCALL + xmlParseComment (xmlParserCtxtPtr ctxt); +XMLPUBFUN const xmlChar * XMLCALL + xmlParsePITarget (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParsePI (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseNotationDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseEntityDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlParseDefaultDecl (xmlParserCtxtPtr ctxt, + xmlChar **value); +XMLPUBFUN xmlEnumerationPtr XMLCALL + xmlParseNotationType (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlEnumerationPtr XMLCALL + xmlParseEnumerationType (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlParseEnumeratedType (xmlParserCtxtPtr ctxt, + xmlEnumerationPtr *tree); +XMLPUBFUN int XMLCALL + xmlParseAttributeType (xmlParserCtxtPtr ctxt, + xmlEnumerationPtr *tree); +XMLPUBFUN void XMLCALL + xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlElementContentPtr XMLCALL + xmlParseElementMixedContentDecl + (xmlParserCtxtPtr ctxt, + int inputchk); +XMLPUBFUN xmlElementContentPtr XMLCALL + xmlParseElementChildrenContentDecl + (xmlParserCtxtPtr ctxt, + int inputchk); +XMLPUBFUN int XMLCALL + xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, + const xmlChar *name, + xmlElementContentPtr *result); +XMLPUBFUN int XMLCALL + xmlParseElementDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseMarkupDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlParseCharRef (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlEntityPtr XMLCALL + xmlParseEntityRef (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseReference (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParsePEReference (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt); +#ifdef LIBXML_SAX1_ENABLED +XMLPUBFUN const xmlChar * XMLCALL + xmlParseAttribute (xmlParserCtxtPtr ctxt, + xmlChar **value); +XMLPUBFUN const xmlChar * XMLCALL + xmlParseStartTag (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseEndTag (xmlParserCtxtPtr ctxt); +#endif /* LIBXML_SAX1_ENABLED */ +XMLPUBFUN void XMLCALL + xmlParseCDSect (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseContent (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseElement (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlParseVersionNum (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlParseVersionInfo (xmlParserCtxtPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlParseEncName (xmlParserCtxtPtr ctxt); +XMLPUBFUN const xmlChar * XMLCALL + xmlParseEncodingDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlParseSDDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseXMLDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseTextDecl (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseMisc (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlParseExternalSubset (xmlParserCtxtPtr ctxt, + const xmlChar *ExternalID, + const xmlChar *SystemID); +/** + * XML_SUBSTITUTE_NONE: + * + * If no entities need to be substituted. + */ +#define XML_SUBSTITUTE_NONE 0 +/** + * XML_SUBSTITUTE_REF: + * + * Whether general entities need to be substituted. + */ +#define XML_SUBSTITUTE_REF 1 +/** + * XML_SUBSTITUTE_PEREF: + * + * Whether parameter entities need to be substituted. + */ +#define XML_SUBSTITUTE_PEREF 2 +/** + * XML_SUBSTITUTE_BOTH: + * + * Both general and parameter entities need to be substituted. + */ +#define XML_SUBSTITUTE_BOTH 3 + +XMLPUBFUN xmlChar * XMLCALL + xmlStringDecodeEntities (xmlParserCtxtPtr ctxt, + const xmlChar *str, + int what, + xmlChar end, + xmlChar end2, + xmlChar end3); +XMLPUBFUN xmlChar * XMLCALL + xmlStringLenDecodeEntities (xmlParserCtxtPtr ctxt, + const xmlChar *str, + int len, + int what, + xmlChar end, + xmlChar end2, + xmlChar end3); + +/* + * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. + */ +XMLPUBFUN int XMLCALL nodePush (xmlParserCtxtPtr ctxt, + xmlNodePtr value); +XMLPUBFUN xmlNodePtr XMLCALL nodePop (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL inputPush (xmlParserCtxtPtr ctxt, + xmlParserInputPtr value); +XMLPUBFUN xmlParserInputPtr XMLCALL inputPop (xmlParserCtxtPtr ctxt); +XMLPUBFUN const xmlChar * XMLCALL namePop (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL namePush (xmlParserCtxtPtr ctxt, + const xmlChar *value); + +/* + * other commodities shared between parser.c and parserInternals. + */ +XMLPUBFUN int XMLCALL xmlSkipBlankChars (xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL xmlStringCurrentChar (xmlParserCtxtPtr ctxt, + const xmlChar *cur, + int *len); +XMLPUBFUN void XMLCALL xmlParserHandlePEReference(xmlParserCtxtPtr ctxt); +XMLPUBFUN int XMLCALL xmlCheckLanguageID (const xmlChar *lang); + +/* + * Really core function shared with HTML parser. + */ +XMLPUBFUN int XMLCALL xmlCurrentChar (xmlParserCtxtPtr ctxt, + int *len); +XMLPUBFUN int XMLCALL xmlCopyCharMultiByte (xmlChar *out, + int val); +XMLPUBFUN int XMLCALL xmlCopyChar (int len, + xmlChar *out, + int val); +XMLPUBFUN void XMLCALL xmlNextChar (xmlParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL xmlParserInputShrink (xmlParserInputPtr in); + +#ifdef LIBXML_HTML_ENABLED +/* + * Actually comes from the HTML parser but launched from the init stuff. + */ +XML_DEPRECATED +XMLPUBFUN void XMLCALL htmlInitAutoClose (void); +XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename, + const char *encoding); +#endif + +/* + * Specific function to keep track of entities references + * and used by the XSLT debugger. + */ +#ifdef LIBXML_LEGACY_ENABLED +/** + * xmlEntityReferenceFunc: + * @ent: the entity + * @firstNode: the fist node in the chunk + * @lastNode: the last nod in the chunk + * + * Callback function used when one needs to be able to track back the + * provenance of a chunk of nodes inherited from an entity replacement. + */ +typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent, + xmlNodePtr firstNode, + xmlNodePtr lastNode); + +XML_DEPRECATED +XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func); + +XML_DEPRECATED +XMLPUBFUN xmlChar * XMLCALL + xmlParseQuotedString (xmlParserCtxtPtr ctxt); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlParseNamespace (xmlParserCtxtPtr ctxt); +XML_DEPRECATED +XMLPUBFUN xmlChar * XMLCALL + xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt); +XML_DEPRECATED +XMLPUBFUN xmlChar * XMLCALL + xmlScanName (xmlParserCtxtPtr ctxt); +XML_DEPRECATED +XMLPUBFUN xmlChar * XMLCALL + xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt); +XML_DEPRECATED +XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt); +XML_DEPRECATED +XMLPUBFUN xmlChar * XMLCALL + xmlNamespaceParseQName (xmlParserCtxtPtr ctxt, + xmlChar **prefix); +/** + * Entities + */ +XML_DEPRECATED +XMLPUBFUN xmlChar * XMLCALL + xmlDecodeEntities (xmlParserCtxtPtr ctxt, + int len, + int what, + xmlChar end, + xmlChar end2, + xmlChar end3); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlHandleEntity (xmlParserCtxtPtr ctxt, + xmlEntityPtr entity); + +#endif /* LIBXML_LEGACY_ENABLED */ + +#ifdef IN_LIBXML +/* + * internal only + */ +XMLPUBFUN void XMLCALL + xmlErrMemory (xmlParserCtxtPtr ctxt, + const char *extra); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* __XML_PARSER_INTERNALS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/pattern.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/pattern.h new file mode 100644 index 0000000..97d2cd2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/pattern.h @@ -0,0 +1,100 @@ +/* + * Summary: pattern expression handling + * Description: allows to compile and test pattern expressions for nodes + * either in a tree or based on a parser state. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_PATTERN_H__ +#define __XML_PATTERN_H__ + +#include +#include +#include + +#ifdef LIBXML_PATTERN_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlPattern: + * + * A compiled (XPath based) pattern to select nodes + */ +typedef struct _xmlPattern xmlPattern; +typedef xmlPattern *xmlPatternPtr; + +/** + * xmlPatternFlags: + * + * This is the set of options affecting the behaviour of pattern + * matching with this module + * + */ +typedef enum { + XML_PATTERN_DEFAULT = 0, /* simple pattern match */ + XML_PATTERN_XPATH = 1<<0, /* standard XPath pattern */ + XML_PATTERN_XSSEL = 1<<1, /* XPath subset for schema selector */ + XML_PATTERN_XSFIELD = 1<<2 /* XPath subset for schema field */ +} xmlPatternFlags; + +XMLPUBFUN void XMLCALL + xmlFreePattern (xmlPatternPtr comp); + +XMLPUBFUN void XMLCALL + xmlFreePatternList (xmlPatternPtr comp); + +XMLPUBFUN xmlPatternPtr XMLCALL + xmlPatterncompile (const xmlChar *pattern, + xmlDict *dict, + int flags, + const xmlChar **namespaces); +XMLPUBFUN int XMLCALL + xmlPatternMatch (xmlPatternPtr comp, + xmlNodePtr node); + +/* streaming interfaces */ +typedef struct _xmlStreamCtxt xmlStreamCtxt; +typedef xmlStreamCtxt *xmlStreamCtxtPtr; + +XMLPUBFUN int XMLCALL + xmlPatternStreamable (xmlPatternPtr comp); +XMLPUBFUN int XMLCALL + xmlPatternMaxDepth (xmlPatternPtr comp); +XMLPUBFUN int XMLCALL + xmlPatternMinDepth (xmlPatternPtr comp); +XMLPUBFUN int XMLCALL + xmlPatternFromRoot (xmlPatternPtr comp); +XMLPUBFUN xmlStreamCtxtPtr XMLCALL + xmlPatternGetStreamCtxt (xmlPatternPtr comp); +XMLPUBFUN void XMLCALL + xmlFreeStreamCtxt (xmlStreamCtxtPtr stream); +XMLPUBFUN int XMLCALL + xmlStreamPushNode (xmlStreamCtxtPtr stream, + const xmlChar *name, + const xmlChar *ns, + int nodeType); +XMLPUBFUN int XMLCALL + xmlStreamPush (xmlStreamCtxtPtr stream, + const xmlChar *name, + const xmlChar *ns); +XMLPUBFUN int XMLCALL + xmlStreamPushAttr (xmlStreamCtxtPtr stream, + const xmlChar *name, + const xmlChar *ns); +XMLPUBFUN int XMLCALL + xmlStreamPop (xmlStreamCtxtPtr stream); +XMLPUBFUN int XMLCALL + xmlStreamWantsAnyNode (xmlStreamCtxtPtr stream); +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_PATTERN_ENABLED */ + +#endif /* __XML_PATTERN_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/relaxng.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/relaxng.h new file mode 100644 index 0000000..6369785 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/relaxng.h @@ -0,0 +1,218 @@ +/* + * Summary: implementation of the Relax-NG validation + * Description: implementation of the Relax-NG validation + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_RELAX_NG__ +#define __XML_RELAX_NG__ + +#include +#include +#include + +#ifdef LIBXML_SCHEMAS_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _xmlRelaxNG xmlRelaxNG; +typedef xmlRelaxNG *xmlRelaxNGPtr; + + +/** + * xmlRelaxNGValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from a Relax-NG validation + */ +typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); + +/** + * xmlRelaxNGValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from a Relax-NG validation + */ +typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); + +/** + * A schemas validation context + */ +typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt; +typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr; + +typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt; +typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr; + +/* + * xmlRelaxNGValidErr: + * + * List of possible Relax NG validation errors + */ +typedef enum { + XML_RELAXNG_OK = 0, + XML_RELAXNG_ERR_MEMORY, + XML_RELAXNG_ERR_TYPE, + XML_RELAXNG_ERR_TYPEVAL, + XML_RELAXNG_ERR_DUPID, + XML_RELAXNG_ERR_TYPECMP, + XML_RELAXNG_ERR_NOSTATE, + XML_RELAXNG_ERR_NODEFINE, + XML_RELAXNG_ERR_LISTEXTRA, + XML_RELAXNG_ERR_LISTEMPTY, + XML_RELAXNG_ERR_INTERNODATA, + XML_RELAXNG_ERR_INTERSEQ, + XML_RELAXNG_ERR_INTEREXTRA, + XML_RELAXNG_ERR_ELEMNAME, + XML_RELAXNG_ERR_ATTRNAME, + XML_RELAXNG_ERR_ELEMNONS, + XML_RELAXNG_ERR_ATTRNONS, + XML_RELAXNG_ERR_ELEMWRONGNS, + XML_RELAXNG_ERR_ATTRWRONGNS, + XML_RELAXNG_ERR_ELEMEXTRANS, + XML_RELAXNG_ERR_ATTREXTRANS, + XML_RELAXNG_ERR_ELEMNOTEMPTY, + XML_RELAXNG_ERR_NOELEM, + XML_RELAXNG_ERR_NOTELEM, + XML_RELAXNG_ERR_ATTRVALID, + XML_RELAXNG_ERR_CONTENTVALID, + XML_RELAXNG_ERR_EXTRACONTENT, + XML_RELAXNG_ERR_INVALIDATTR, + XML_RELAXNG_ERR_DATAELEM, + XML_RELAXNG_ERR_VALELEM, + XML_RELAXNG_ERR_LISTELEM, + XML_RELAXNG_ERR_DATATYPE, + XML_RELAXNG_ERR_VALUE, + XML_RELAXNG_ERR_LIST, + XML_RELAXNG_ERR_NOGRAMMAR, + XML_RELAXNG_ERR_EXTRADATA, + XML_RELAXNG_ERR_LACKDATA, + XML_RELAXNG_ERR_INTERNAL, + XML_RELAXNG_ERR_ELEMWRONG, + XML_RELAXNG_ERR_TEXTWRONG +} xmlRelaxNGValidErr; + +/* + * xmlRelaxNGParserFlags: + * + * List of possible Relax NG Parser flags + */ +typedef enum { + XML_RELAXNGP_NONE = 0, + XML_RELAXNGP_FREE_DOC = 1, + XML_RELAXNGP_CRNG = 2 +} xmlRelaxNGParserFlag; + +XMLPUBFUN int XMLCALL + xmlRelaxNGInitTypes (void); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlRelaxNGCleanupTypes (void); + +/* + * Interfaces for parsing. + */ +XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL + xmlRelaxNGNewParserCtxt (const char *URL); +XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL + xmlRelaxNGNewMemParserCtxt (const char *buffer, + int size); +XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL + xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc); + +XMLPUBFUN int XMLCALL + xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt, + int flag); + +XMLPUBFUN void XMLCALL + xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, + xmlRelaxNGValidityErrorFunc err, + xmlRelaxNGValidityWarningFunc warn, + void *ctx); +XMLPUBFUN int XMLCALL + xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, + xmlRelaxNGValidityErrorFunc *err, + xmlRelaxNGValidityWarningFunc *warn, + void **ctx); +XMLPUBFUN void XMLCALL + xmlRelaxNGSetParserStructuredErrors( + xmlRelaxNGParserCtxtPtr ctxt, + xmlStructuredErrorFunc serror, + void *ctx); +XMLPUBFUN xmlRelaxNGPtr XMLCALL + xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlRelaxNGFree (xmlRelaxNGPtr schema); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlRelaxNGDump (FILE *output, + xmlRelaxNGPtr schema); +XMLPUBFUN void XMLCALL + xmlRelaxNGDumpTree (FILE * output, + xmlRelaxNGPtr schema); +#endif /* LIBXML_OUTPUT_ENABLED */ +/* + * Interfaces for validating + */ +XMLPUBFUN void XMLCALL + xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, + xmlRelaxNGValidityErrorFunc err, + xmlRelaxNGValidityWarningFunc warn, + void *ctx); +XMLPUBFUN int XMLCALL + xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, + xmlRelaxNGValidityErrorFunc *err, + xmlRelaxNGValidityWarningFunc *warn, + void **ctx); +XMLPUBFUN void XMLCALL + xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, void *ctx); +XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL + xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema); +XMLPUBFUN void XMLCALL + xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt, + xmlDocPtr doc); +/* + * Interfaces for progressive validation when possible + */ +XMLPUBFUN int XMLCALL + xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem); +XMLPUBFUN int XMLCALL + xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt, + const xmlChar *data, + int len); +XMLPUBFUN int XMLCALL + xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem); +XMLPUBFUN int XMLCALL + xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_SCHEMAS_ENABLED */ + +#endif /* __XML_RELAX_NG__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/schemasInternals.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/schemasInternals.h new file mode 100644 index 0000000..c521d1c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/schemasInternals.h @@ -0,0 +1,958 @@ +/* + * Summary: internal interfaces for XML Schemas + * Description: internal interfaces for the XML Schemas handling + * and schema validity checking + * The Schemas development is a Work In Progress. + * Some of those interfaces are not guaranteed to be API or ABI stable ! + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_SCHEMA_INTERNALS_H__ +#define __XML_SCHEMA_INTERNALS_H__ + +#include + +#ifdef LIBXML_SCHEMAS_ENABLED + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + XML_SCHEMAS_UNKNOWN = 0, + XML_SCHEMAS_STRING = 1, + XML_SCHEMAS_NORMSTRING = 2, + XML_SCHEMAS_DECIMAL = 3, + XML_SCHEMAS_TIME = 4, + XML_SCHEMAS_GDAY = 5, + XML_SCHEMAS_GMONTH = 6, + XML_SCHEMAS_GMONTHDAY = 7, + XML_SCHEMAS_GYEAR = 8, + XML_SCHEMAS_GYEARMONTH = 9, + XML_SCHEMAS_DATE = 10, + XML_SCHEMAS_DATETIME = 11, + XML_SCHEMAS_DURATION = 12, + XML_SCHEMAS_FLOAT = 13, + XML_SCHEMAS_DOUBLE = 14, + XML_SCHEMAS_BOOLEAN = 15, + XML_SCHEMAS_TOKEN = 16, + XML_SCHEMAS_LANGUAGE = 17, + XML_SCHEMAS_NMTOKEN = 18, + XML_SCHEMAS_NMTOKENS = 19, + XML_SCHEMAS_NAME = 20, + XML_SCHEMAS_QNAME = 21, + XML_SCHEMAS_NCNAME = 22, + XML_SCHEMAS_ID = 23, + XML_SCHEMAS_IDREF = 24, + XML_SCHEMAS_IDREFS = 25, + XML_SCHEMAS_ENTITY = 26, + XML_SCHEMAS_ENTITIES = 27, + XML_SCHEMAS_NOTATION = 28, + XML_SCHEMAS_ANYURI = 29, + XML_SCHEMAS_INTEGER = 30, + XML_SCHEMAS_NPINTEGER = 31, + XML_SCHEMAS_NINTEGER = 32, + XML_SCHEMAS_NNINTEGER = 33, + XML_SCHEMAS_PINTEGER = 34, + XML_SCHEMAS_INT = 35, + XML_SCHEMAS_UINT = 36, + XML_SCHEMAS_LONG = 37, + XML_SCHEMAS_ULONG = 38, + XML_SCHEMAS_SHORT = 39, + XML_SCHEMAS_USHORT = 40, + XML_SCHEMAS_BYTE = 41, + XML_SCHEMAS_UBYTE = 42, + XML_SCHEMAS_HEXBINARY = 43, + XML_SCHEMAS_BASE64BINARY = 44, + XML_SCHEMAS_ANYTYPE = 45, + XML_SCHEMAS_ANYSIMPLETYPE = 46 +} xmlSchemaValType; + +/* + * XML Schemas defines multiple type of types. + */ +typedef enum { + XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */ + XML_SCHEMA_TYPE_ANY, + XML_SCHEMA_TYPE_FACET, + XML_SCHEMA_TYPE_SIMPLE, + XML_SCHEMA_TYPE_COMPLEX, + XML_SCHEMA_TYPE_SEQUENCE = 6, + XML_SCHEMA_TYPE_CHOICE, + XML_SCHEMA_TYPE_ALL, + XML_SCHEMA_TYPE_SIMPLE_CONTENT, + XML_SCHEMA_TYPE_COMPLEX_CONTENT, + XML_SCHEMA_TYPE_UR, + XML_SCHEMA_TYPE_RESTRICTION, + XML_SCHEMA_TYPE_EXTENSION, + XML_SCHEMA_TYPE_ELEMENT, + XML_SCHEMA_TYPE_ATTRIBUTE, + XML_SCHEMA_TYPE_ATTRIBUTEGROUP, + XML_SCHEMA_TYPE_GROUP, + XML_SCHEMA_TYPE_NOTATION, + XML_SCHEMA_TYPE_LIST, + XML_SCHEMA_TYPE_UNION, + XML_SCHEMA_TYPE_ANY_ATTRIBUTE, + XML_SCHEMA_TYPE_IDC_UNIQUE, + XML_SCHEMA_TYPE_IDC_KEY, + XML_SCHEMA_TYPE_IDC_KEYREF, + XML_SCHEMA_TYPE_PARTICLE = 25, + XML_SCHEMA_TYPE_ATTRIBUTE_USE, + XML_SCHEMA_FACET_MININCLUSIVE = 1000, + XML_SCHEMA_FACET_MINEXCLUSIVE, + XML_SCHEMA_FACET_MAXINCLUSIVE, + XML_SCHEMA_FACET_MAXEXCLUSIVE, + XML_SCHEMA_FACET_TOTALDIGITS, + XML_SCHEMA_FACET_FRACTIONDIGITS, + XML_SCHEMA_FACET_PATTERN, + XML_SCHEMA_FACET_ENUMERATION, + XML_SCHEMA_FACET_WHITESPACE, + XML_SCHEMA_FACET_LENGTH, + XML_SCHEMA_FACET_MAXLENGTH, + XML_SCHEMA_FACET_MINLENGTH, + XML_SCHEMA_EXTRA_QNAMEREF = 2000, + XML_SCHEMA_EXTRA_ATTR_USE_PROHIB +} xmlSchemaTypeType; + +typedef enum { + XML_SCHEMA_CONTENT_UNKNOWN = 0, + XML_SCHEMA_CONTENT_EMPTY = 1, + XML_SCHEMA_CONTENT_ELEMENTS, + XML_SCHEMA_CONTENT_MIXED, + XML_SCHEMA_CONTENT_SIMPLE, + XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */ + XML_SCHEMA_CONTENT_BASIC, + XML_SCHEMA_CONTENT_ANY +} xmlSchemaContentType; + +typedef struct _xmlSchemaVal xmlSchemaVal; +typedef xmlSchemaVal *xmlSchemaValPtr; + +typedef struct _xmlSchemaType xmlSchemaType; +typedef xmlSchemaType *xmlSchemaTypePtr; + +typedef struct _xmlSchemaFacet xmlSchemaFacet; +typedef xmlSchemaFacet *xmlSchemaFacetPtr; + +/** + * Annotation + */ +typedef struct _xmlSchemaAnnot xmlSchemaAnnot; +typedef xmlSchemaAnnot *xmlSchemaAnnotPtr; +struct _xmlSchemaAnnot { + struct _xmlSchemaAnnot *next; + xmlNodePtr content; /* the annotation */ +}; + +/** + * XML_SCHEMAS_ANYATTR_SKIP: + * + * Skip unknown attribute from validation + * Obsolete, not used anymore. + */ +#define XML_SCHEMAS_ANYATTR_SKIP 1 +/** + * XML_SCHEMAS_ANYATTR_LAX: + * + * Ignore validation non definition on attributes + * Obsolete, not used anymore. + */ +#define XML_SCHEMAS_ANYATTR_LAX 2 +/** + * XML_SCHEMAS_ANYATTR_STRICT: + * + * Apply strict validation rules on attributes + * Obsolete, not used anymore. + */ +#define XML_SCHEMAS_ANYATTR_STRICT 3 +/** + * XML_SCHEMAS_ANY_SKIP: + * + * Skip unknown attribute from validation + */ +#define XML_SCHEMAS_ANY_SKIP 1 +/** + * XML_SCHEMAS_ANY_LAX: + * + * Used by wildcards. + * Validate if type found, don't worry if not found + */ +#define XML_SCHEMAS_ANY_LAX 2 +/** + * XML_SCHEMAS_ANY_STRICT: + * + * Used by wildcards. + * Apply strict validation rules + */ +#define XML_SCHEMAS_ANY_STRICT 3 +/** + * XML_SCHEMAS_ATTR_USE_PROHIBITED: + * + * Used by wildcards. + * The attribute is prohibited. + */ +#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0 +/** + * XML_SCHEMAS_ATTR_USE_REQUIRED: + * + * The attribute is required. + */ +#define XML_SCHEMAS_ATTR_USE_REQUIRED 1 +/** + * XML_SCHEMAS_ATTR_USE_OPTIONAL: + * + * The attribute is optional. + */ +#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2 +/** + * XML_SCHEMAS_ATTR_GLOBAL: + * + * allow elements in no namespace + */ +#define XML_SCHEMAS_ATTR_GLOBAL 1 << 0 +/** + * XML_SCHEMAS_ATTR_NSDEFAULT: + * + * allow elements in no namespace + */ +#define XML_SCHEMAS_ATTR_NSDEFAULT 1 << 7 +/** + * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED: + * + * this is set when the "type" and "ref" references + * have been resolved. + */ +#define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED 1 << 8 +/** + * XML_SCHEMAS_ATTR_FIXED: + * + * the attribute has a fixed value + */ +#define XML_SCHEMAS_ATTR_FIXED 1 << 9 + +/** + * xmlSchemaAttribute: + * An attribute definition. + */ + +typedef struct _xmlSchemaAttribute xmlSchemaAttribute; +typedef xmlSchemaAttribute *xmlSchemaAttributePtr; +struct _xmlSchemaAttribute { + xmlSchemaTypeType type; + struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */ + const xmlChar *name; /* the name of the declaration */ + const xmlChar *id; /* Deprecated; not used */ + const xmlChar *ref; /* Deprecated; not used */ + const xmlChar *refNs; /* Deprecated; not used */ + const xmlChar *typeName; /* the local name of the type definition */ + const xmlChar *typeNs; /* the ns URI of the type definition */ + xmlSchemaAnnotPtr annot; + + xmlSchemaTypePtr base; /* Deprecated; not used */ + int occurs; /* Deprecated; not used */ + const xmlChar *defValue; /* The initial value of the value constraint */ + xmlSchemaTypePtr subtypes; /* the type definition */ + xmlNodePtr node; + const xmlChar *targetNamespace; + int flags; + const xmlChar *refPrefix; /* Deprecated; not used */ + xmlSchemaValPtr defVal; /* The compiled value constraint */ + xmlSchemaAttributePtr refDecl; /* Deprecated; not used */ +}; + +/** + * xmlSchemaAttributeLink: + * Used to build a list of attribute uses on complexType definitions. + * WARNING: Deprecated; not used. + */ +typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink; +typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr; +struct _xmlSchemaAttributeLink { + struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */ + struct _xmlSchemaAttribute *attr;/* the linked attribute */ +}; + +/** + * XML_SCHEMAS_WILDCARD_COMPLETE: + * + * If the wildcard is complete. + */ +#define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0 + +/** + * xmlSchemaCharValueLink: + * Used to build a list of namespaces on wildcards. + */ +typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs; +typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr; +struct _xmlSchemaWildcardNs { + struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */ + const xmlChar *value;/* the value */ +}; + +/** + * xmlSchemaWildcard. + * A wildcard. + */ +typedef struct _xmlSchemaWildcard xmlSchemaWildcard; +typedef xmlSchemaWildcard *xmlSchemaWildcardPtr; +struct _xmlSchemaWildcard { + xmlSchemaTypeType type; /* The kind of type */ + const xmlChar *id; /* Deprecated; not used */ + xmlSchemaAnnotPtr annot; + xmlNodePtr node; + int minOccurs; /* Deprecated; not used */ + int maxOccurs; /* Deprecated; not used */ + int processContents; + int any; /* Indicates if the ns constraint is of ##any */ + xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */ + xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */ + int flags; +}; + +/** + * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED: + * + * The attribute wildcard has been built. + */ +#define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0 +/** + * XML_SCHEMAS_ATTRGROUP_GLOBAL: + * + * The attribute group has been defined. + */ +#define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1 +/** + * XML_SCHEMAS_ATTRGROUP_MARKED: + * + * Marks the attr group as marked; used for circular checks. + */ +#define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2 + +/** + * XML_SCHEMAS_ATTRGROUP_REDEFINED: + * + * The attr group was redefined. + */ +#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3 +/** + * XML_SCHEMAS_ATTRGROUP_HAS_REFS: + * + * Whether this attr. group contains attr. group references. + */ +#define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4 + +/** + * An attribute group definition. + * + * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures + * must be kept similar + */ +typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup; +typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr; +struct _xmlSchemaAttributeGroup { + xmlSchemaTypeType type; /* The kind of type */ + struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ + const xmlChar *name; + const xmlChar *id; + const xmlChar *ref; /* Deprecated; not used */ + const xmlChar *refNs; /* Deprecated; not used */ + xmlSchemaAnnotPtr annot; + + xmlSchemaAttributePtr attributes; /* Deprecated; not used */ + xmlNodePtr node; + int flags; + xmlSchemaWildcardPtr attributeWildcard; + const xmlChar *refPrefix; /* Deprecated; not used */ + xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */ + const xmlChar *targetNamespace; + void *attrUses; +}; + +/** + * xmlSchemaTypeLink: + * Used to build a list of types (e.g. member types of + * simpleType with variety "union"). + */ +typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink; +typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr; +struct _xmlSchemaTypeLink { + struct _xmlSchemaTypeLink *next;/* the next type link ... */ + xmlSchemaTypePtr type;/* the linked type */ +}; + +/** + * xmlSchemaFacetLink: + * Used to build a list of facets. + */ +typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink; +typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr; +struct _xmlSchemaFacetLink { + struct _xmlSchemaFacetLink *next;/* the next facet link ... */ + xmlSchemaFacetPtr facet;/* the linked facet */ +}; + +/** + * XML_SCHEMAS_TYPE_MIXED: + * + * the element content type is mixed + */ +#define XML_SCHEMAS_TYPE_MIXED 1 << 0 +/** + * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION: + * + * the simple or complex type has a derivation method of "extension". + */ +#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION 1 << 1 +/** + * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION: + * + * the simple or complex type has a derivation method of "restriction". + */ +#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION 1 << 2 +/** + * XML_SCHEMAS_TYPE_GLOBAL: + * + * the type is global + */ +#define XML_SCHEMAS_TYPE_GLOBAL 1 << 3 +/** + * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD: + * + * the complexType owns an attribute wildcard, i.e. + * it can be freed by the complexType + */ +#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD 1 << 4 /* Obsolete. */ +/** + * XML_SCHEMAS_TYPE_VARIETY_ABSENT: + * + * the simpleType has a variety of "absent". + * TODO: Actually not necessary :-/, since if + * none of the variety flags occur then it's + * automatically absent. + */ +#define XML_SCHEMAS_TYPE_VARIETY_ABSENT 1 << 5 +/** + * XML_SCHEMAS_TYPE_VARIETY_LIST: + * + * the simpleType has a variety of "list". + */ +#define XML_SCHEMAS_TYPE_VARIETY_LIST 1 << 6 +/** + * XML_SCHEMAS_TYPE_VARIETY_UNION: + * + * the simpleType has a variety of "union". + */ +#define XML_SCHEMAS_TYPE_VARIETY_UNION 1 << 7 +/** + * XML_SCHEMAS_TYPE_VARIETY_ATOMIC: + * + * the simpleType has a variety of "union". + */ +#define XML_SCHEMAS_TYPE_VARIETY_ATOMIC 1 << 8 +/** + * XML_SCHEMAS_TYPE_FINAL_EXTENSION: + * + * the complexType has a final of "extension". + */ +#define XML_SCHEMAS_TYPE_FINAL_EXTENSION 1 << 9 +/** + * XML_SCHEMAS_TYPE_FINAL_RESTRICTION: + * + * the simpleType/complexType has a final of "restriction". + */ +#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION 1 << 10 +/** + * XML_SCHEMAS_TYPE_FINAL_LIST: + * + * the simpleType has a final of "list". + */ +#define XML_SCHEMAS_TYPE_FINAL_LIST 1 << 11 +/** + * XML_SCHEMAS_TYPE_FINAL_UNION: + * + * the simpleType has a final of "union". + */ +#define XML_SCHEMAS_TYPE_FINAL_UNION 1 << 12 +/** + * XML_SCHEMAS_TYPE_FINAL_DEFAULT: + * + * the simpleType has a final of "default". + */ +#define XML_SCHEMAS_TYPE_FINAL_DEFAULT 1 << 13 +/** + * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE: + * + * Marks the item as a builtin primitive. + */ +#define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE 1 << 14 +/** + * XML_SCHEMAS_TYPE_MARKED: + * + * Marks the item as marked; used for circular checks. + */ +#define XML_SCHEMAS_TYPE_MARKED 1 << 16 +/** + * XML_SCHEMAS_TYPE_BLOCK_DEFAULT: + * + * the complexType did not specify 'block' so use the default of the + * item. + */ +#define XML_SCHEMAS_TYPE_BLOCK_DEFAULT 1 << 17 +/** + * XML_SCHEMAS_TYPE_BLOCK_EXTENSION: + * + * the complexType has a 'block' of "extension". + */ +#define XML_SCHEMAS_TYPE_BLOCK_EXTENSION 1 << 18 +/** + * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION: + * + * the complexType has a 'block' of "restriction". + */ +#define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION 1 << 19 +/** + * XML_SCHEMAS_TYPE_ABSTRACT: + * + * the simple/complexType is abstract. + */ +#define XML_SCHEMAS_TYPE_ABSTRACT 1 << 20 +/** + * XML_SCHEMAS_TYPE_FACETSNEEDVALUE: + * + * indicates if the facets need a computed value + */ +#define XML_SCHEMAS_TYPE_FACETSNEEDVALUE 1 << 21 +/** + * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED: + * + * indicates that the type was typefixed + */ +#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED 1 << 22 +/** + * XML_SCHEMAS_TYPE_INTERNAL_INVALID: + * + * indicates that the type is invalid + */ +#define XML_SCHEMAS_TYPE_INTERNAL_INVALID 1 << 23 +/** + * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE: + * + * a whitespace-facet value of "preserve" + */ +#define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE 1 << 24 +/** + * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE: + * + * a whitespace-facet value of "replace" + */ +#define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE 1 << 25 +/** + * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE: + * + * a whitespace-facet value of "collapse" + */ +#define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE 1 << 26 +/** + * XML_SCHEMAS_TYPE_HAS_FACETS: + * + * has facets + */ +#define XML_SCHEMAS_TYPE_HAS_FACETS 1 << 27 +/** + * XML_SCHEMAS_TYPE_NORMVALUENEEDED: + * + * indicates if the facets (pattern) need a normalized value + */ +#define XML_SCHEMAS_TYPE_NORMVALUENEEDED 1 << 28 + +/** + * XML_SCHEMAS_TYPE_FIXUP_1: + * + * First stage of fixup was done. + */ +#define XML_SCHEMAS_TYPE_FIXUP_1 1 << 29 + +/** + * XML_SCHEMAS_TYPE_REDEFINED: + * + * The type was redefined. + */ +#define XML_SCHEMAS_TYPE_REDEFINED 1 << 30 +/** + * XML_SCHEMAS_TYPE_REDEFINING: + * + * The type redefines an other type. + */ +/* #define XML_SCHEMAS_TYPE_REDEFINING 1 << 31 */ + +/** + * _xmlSchemaType: + * + * Schemas type definition. + */ +struct _xmlSchemaType { + xmlSchemaTypeType type; /* The kind of type */ + struct _xmlSchemaType *next; /* the next type if in a sequence ... */ + const xmlChar *name; + const xmlChar *id ; /* Deprecated; not used */ + const xmlChar *ref; /* Deprecated; not used */ + const xmlChar *refNs; /* Deprecated; not used */ + xmlSchemaAnnotPtr annot; + xmlSchemaTypePtr subtypes; + xmlSchemaAttributePtr attributes; /* Deprecated; not used */ + xmlNodePtr node; + int minOccurs; /* Deprecated; not used */ + int maxOccurs; /* Deprecated; not used */ + + int flags; + xmlSchemaContentType contentType; + const xmlChar *base; /* Base type's local name */ + const xmlChar *baseNs; /* Base type's target namespace */ + xmlSchemaTypePtr baseType; /* The base type component */ + xmlSchemaFacetPtr facets; /* Local facets */ + struct _xmlSchemaType *redef; /* Deprecated; not used */ + int recurse; /* Obsolete */ + xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */ + xmlSchemaWildcardPtr attributeWildcard; + int builtInType; /* Type of built-in types. */ + xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */ + xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */ + const xmlChar *refPrefix; /* Deprecated; not used */ + xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types. + Could we use @subtypes for this? */ + xmlRegexpPtr contModel; /* Holds the automaton of the content model */ + const xmlChar *targetNamespace; + void *attrUses; +}; + +/* + * xmlSchemaElement: + * An element definition. + * + * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of + * structures must be kept similar + */ +/** + * XML_SCHEMAS_ELEM_NILLABLE: + * + * the element is nillable + */ +#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0 +/** + * XML_SCHEMAS_ELEM_GLOBAL: + * + * the element is global + */ +#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1 +/** + * XML_SCHEMAS_ELEM_DEFAULT: + * + * the element has a default value + */ +#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2 +/** + * XML_SCHEMAS_ELEM_FIXED: + * + * the element has a fixed value + */ +#define XML_SCHEMAS_ELEM_FIXED 1 << 3 +/** + * XML_SCHEMAS_ELEM_ABSTRACT: + * + * the element is abstract + */ +#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4 +/** + * XML_SCHEMAS_ELEM_TOPLEVEL: + * + * the element is top level + * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead + */ +#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5 +/** + * XML_SCHEMAS_ELEM_REF: + * + * the element is a reference to a type + */ +#define XML_SCHEMAS_ELEM_REF 1 << 6 +/** + * XML_SCHEMAS_ELEM_NSDEFAULT: + * + * allow elements in no namespace + * Obsolete, not used anymore. + */ +#define XML_SCHEMAS_ELEM_NSDEFAULT 1 << 7 +/** + * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED: + * + * this is set when "type", "ref", "substitutionGroup" + * references have been resolved. + */ +#define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED 1 << 8 + /** + * XML_SCHEMAS_ELEM_CIRCULAR: + * + * a helper flag for the search of circular references. + */ +#define XML_SCHEMAS_ELEM_CIRCULAR 1 << 9 +/** + * XML_SCHEMAS_ELEM_BLOCK_ABSENT: + * + * the "block" attribute is absent + */ +#define XML_SCHEMAS_ELEM_BLOCK_ABSENT 1 << 10 +/** + * XML_SCHEMAS_ELEM_BLOCK_EXTENSION: + * + * disallowed substitutions are absent + */ +#define XML_SCHEMAS_ELEM_BLOCK_EXTENSION 1 << 11 +/** + * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION: + * + * disallowed substitutions: "restriction" + */ +#define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION 1 << 12 +/** + * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION: + * + * disallowed substitutions: "substitution" + */ +#define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION 1 << 13 +/** + * XML_SCHEMAS_ELEM_FINAL_ABSENT: + * + * substitution group exclusions are absent + */ +#define XML_SCHEMAS_ELEM_FINAL_ABSENT 1 << 14 +/** + * XML_SCHEMAS_ELEM_FINAL_EXTENSION: + * + * substitution group exclusions: "extension" + */ +#define XML_SCHEMAS_ELEM_FINAL_EXTENSION 1 << 15 +/** + * XML_SCHEMAS_ELEM_FINAL_RESTRICTION: + * + * substitution group exclusions: "restriction" + */ +#define XML_SCHEMAS_ELEM_FINAL_RESTRICTION 1 << 16 +/** + * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD: + * + * the declaration is a substitution group head + */ +#define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD 1 << 17 +/** + * XML_SCHEMAS_ELEM_INTERNAL_CHECKED: + * + * this is set when the elem decl has been checked against + * all constraints + */ +#define XML_SCHEMAS_ELEM_INTERNAL_CHECKED 1 << 18 + +typedef struct _xmlSchemaElement xmlSchemaElement; +typedef xmlSchemaElement *xmlSchemaElementPtr; +struct _xmlSchemaElement { + xmlSchemaTypeType type; /* The kind of type */ + struct _xmlSchemaType *next; /* Not used? */ + const xmlChar *name; + const xmlChar *id; /* Deprecated; not used */ + const xmlChar *ref; /* Deprecated; not used */ + const xmlChar *refNs; /* Deprecated; not used */ + xmlSchemaAnnotPtr annot; + xmlSchemaTypePtr subtypes; /* the type definition */ + xmlSchemaAttributePtr attributes; + xmlNodePtr node; + int minOccurs; /* Deprecated; not used */ + int maxOccurs; /* Deprecated; not used */ + + int flags; + const xmlChar *targetNamespace; + const xmlChar *namedType; + const xmlChar *namedTypeNs; + const xmlChar *substGroup; + const xmlChar *substGroupNs; + const xmlChar *scope; + const xmlChar *value; /* The original value of the value constraint. */ + struct _xmlSchemaElement *refDecl; /* This will now be used for the + substitution group affiliation */ + xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */ + xmlSchemaContentType contentType; + const xmlChar *refPrefix; /* Deprecated; not used */ + xmlSchemaValPtr defVal; /* The compiled value constraint. */ + void *idcs; /* The identity-constraint defs */ +}; + +/* + * XML_SCHEMAS_FACET_UNKNOWN: + * + * unknown facet handling + */ +#define XML_SCHEMAS_FACET_UNKNOWN 0 +/* + * XML_SCHEMAS_FACET_PRESERVE: + * + * preserve the type of the facet + */ +#define XML_SCHEMAS_FACET_PRESERVE 1 +/* + * XML_SCHEMAS_FACET_REPLACE: + * + * replace the type of the facet + */ +#define XML_SCHEMAS_FACET_REPLACE 2 +/* + * XML_SCHEMAS_FACET_COLLAPSE: + * + * collapse the types of the facet + */ +#define XML_SCHEMAS_FACET_COLLAPSE 3 +/** + * A facet definition. + */ +struct _xmlSchemaFacet { + xmlSchemaTypeType type; /* The kind of type */ + struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ + const xmlChar *value; /* The original value */ + const xmlChar *id; /* Obsolete */ + xmlSchemaAnnotPtr annot; + xmlNodePtr node; + int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */ + int whitespace; + xmlSchemaValPtr val; /* The compiled value */ + xmlRegexpPtr regexp; /* The regex for patterns */ +}; + +/** + * A notation definition. + */ +typedef struct _xmlSchemaNotation xmlSchemaNotation; +typedef xmlSchemaNotation *xmlSchemaNotationPtr; +struct _xmlSchemaNotation { + xmlSchemaTypeType type; /* The kind of type */ + const xmlChar *name; + xmlSchemaAnnotPtr annot; + const xmlChar *identifier; + const xmlChar *targetNamespace; +}; + +/* +* TODO: Actually all those flags used for the schema should sit +* on the schema parser context, since they are used only +* during parsing an XML schema document, and not available +* on the component level as per spec. +*/ +/** + * XML_SCHEMAS_QUALIF_ELEM: + * + * Reflects elementFormDefault == qualified in + * an XML schema document. + */ +#define XML_SCHEMAS_QUALIF_ELEM 1 << 0 +/** + * XML_SCHEMAS_QUALIF_ATTR: + * + * Reflects attributeFormDefault == qualified in + * an XML schema document. + */ +#define XML_SCHEMAS_QUALIF_ATTR 1 << 1 +/** + * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION: + * + * the schema has "extension" in the set of finalDefault. + */ +#define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION 1 << 2 +/** + * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION: + * + * the schema has "restriction" in the set of finalDefault. + */ +#define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION 1 << 3 +/** + * XML_SCHEMAS_FINAL_DEFAULT_LIST: + * + * the schema has "list" in the set of finalDefault. + */ +#define XML_SCHEMAS_FINAL_DEFAULT_LIST 1 << 4 +/** + * XML_SCHEMAS_FINAL_DEFAULT_UNION: + * + * the schema has "union" in the set of finalDefault. + */ +#define XML_SCHEMAS_FINAL_DEFAULT_UNION 1 << 5 +/** + * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION: + * + * the schema has "extension" in the set of blockDefault. + */ +#define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION 1 << 6 +/** + * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION: + * + * the schema has "restriction" in the set of blockDefault. + */ +#define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION 1 << 7 +/** + * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION: + * + * the schema has "substitution" in the set of blockDefault. + */ +#define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION 1 << 8 +/** + * XML_SCHEMAS_INCLUDING_CONVERT_NS: + * + * the schema is currently including an other schema with + * no target namespace. + */ +#define XML_SCHEMAS_INCLUDING_CONVERT_NS 1 << 9 +/** + * _xmlSchema: + * + * A Schemas definition + */ +struct _xmlSchema { + const xmlChar *name; /* schema name */ + const xmlChar *targetNamespace; /* the target namespace */ + const xmlChar *version; + const xmlChar *id; /* Obsolete */ + xmlDocPtr doc; + xmlSchemaAnnotPtr annot; + int flags; + + xmlHashTablePtr typeDecl; + xmlHashTablePtr attrDecl; + xmlHashTablePtr attrgrpDecl; + xmlHashTablePtr elemDecl; + xmlHashTablePtr notaDecl; + + xmlHashTablePtr schemasImports; + + void *_private; /* unused by the library for users or bindings */ + xmlHashTablePtr groupDecl; + xmlDictPtr dict; + void *includes; /* the includes, this is opaque for now */ + int preserve; /* whether to free the document */ + int counter; /* used to give anonymous components unique names */ + xmlHashTablePtr idcDef; /* All identity-constraint defs. */ + void *volatiles; /* Obsolete */ +}; + +XMLPUBFUN void XMLCALL xmlSchemaFreeType (xmlSchemaTypePtr type); +XMLPUBFUN void XMLCALL xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_SCHEMAS_ENABLED */ +#endif /* __XML_SCHEMA_INTERNALS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/schematron.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/schematron.h new file mode 100644 index 0000000..c61e61b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/schematron.h @@ -0,0 +1,142 @@ +/* + * Summary: XML Schematron implementation + * Description: interface to the XML Schematron validity checking. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_SCHEMATRON_H__ +#define __XML_SCHEMATRON_H__ + +#include + +#ifdef LIBXML_SCHEMATRON_ENABLED + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + XML_SCHEMATRON_OUT_QUIET = 1 << 0, /* quiet no report */ + XML_SCHEMATRON_OUT_TEXT = 1 << 1, /* build a textual report */ + XML_SCHEMATRON_OUT_XML = 1 << 2, /* output SVRL */ + XML_SCHEMATRON_OUT_ERROR = 1 << 3, /* output via xmlStructuredErrorFunc */ + XML_SCHEMATRON_OUT_FILE = 1 << 8, /* output to a file descriptor */ + XML_SCHEMATRON_OUT_BUFFER = 1 << 9, /* output to a buffer */ + XML_SCHEMATRON_OUT_IO = 1 << 10 /* output to I/O mechanism */ +} xmlSchematronValidOptions; + +/** + * The schemas related types are kept internal + */ +typedef struct _xmlSchematron xmlSchematron; +typedef xmlSchematron *xmlSchematronPtr; + +/** + * xmlSchematronValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from a Schematron validation + */ +typedef void (*xmlSchematronValidityErrorFunc) (void *ctx, const char *msg, ...); + +/** + * xmlSchematronValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from a Schematron validation + */ +typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...); + +/** + * A schemas validation context + */ +typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt; +typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr; + +typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt; +typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr; + +/* + * Interfaces for parsing. + */ +XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL + xmlSchematronNewParserCtxt (const char *URL); +XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL + xmlSchematronNewMemParserCtxt(const char *buffer, + int size); +XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL + xmlSchematronNewDocParserCtxt(xmlDocPtr doc); +XMLPUBFUN void XMLCALL + xmlSchematronFreeParserCtxt (xmlSchematronParserCtxtPtr ctxt); +/***** +XMLPUBFUN void XMLCALL + xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt, + xmlSchematronValidityErrorFunc err, + xmlSchematronValidityWarningFunc warn, + void *ctx); +XMLPUBFUN int XMLCALL + xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt, + xmlSchematronValidityErrorFunc * err, + xmlSchematronValidityWarningFunc * warn, + void **ctx); +XMLPUBFUN int XMLCALL + xmlSchematronIsValid (xmlSchematronValidCtxtPtr ctxt); + *****/ +XMLPUBFUN xmlSchematronPtr XMLCALL + xmlSchematronParse (xmlSchematronParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlSchematronFree (xmlSchematronPtr schema); +/* + * Interfaces for validating + */ +XMLPUBFUN void XMLCALL + xmlSchematronSetValidStructuredErrors( + xmlSchematronValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, + void *ctx); +/****** +XMLPUBFUN void XMLCALL + xmlSchematronSetValidErrors (xmlSchematronValidCtxtPtr ctxt, + xmlSchematronValidityErrorFunc err, + xmlSchematronValidityWarningFunc warn, + void *ctx); +XMLPUBFUN int XMLCALL + xmlSchematronGetValidErrors (xmlSchematronValidCtxtPtr ctxt, + xmlSchematronValidityErrorFunc *err, + xmlSchematronValidityWarningFunc *warn, + void **ctx); +XMLPUBFUN int XMLCALL + xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt, + int options); +XMLPUBFUN int XMLCALL + xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt, + xmlNodePtr elem); + *******/ + +XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL + xmlSchematronNewValidCtxt (xmlSchematronPtr schema, + int options); +XMLPUBFUN void XMLCALL + xmlSchematronFreeValidCtxt (xmlSchematronValidCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlSchematronValidateDoc (xmlSchematronValidCtxtPtr ctxt, + xmlDocPtr instance); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_SCHEMATRON_ENABLED */ +#endif /* __XML_SCHEMATRON_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/threads.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/threads.h new file mode 100644 index 0000000..6eedac1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/threads.h @@ -0,0 +1,91 @@ +/** + * Summary: interfaces for thread handling + * Description: set of generic threading related routines + * should work with pthreads, Windows native or TLS threads + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_THREADS_H__ +#define __XML_THREADS_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * xmlMutex are a simple mutual exception locks. + */ +typedef struct _xmlMutex xmlMutex; +typedef xmlMutex *xmlMutexPtr; + +/* + * xmlRMutex are reentrant mutual exception locks. + */ +typedef struct _xmlRMutex xmlRMutex; +typedef xmlRMutex *xmlRMutexPtr; + +#ifdef __cplusplus +} +#endif +#include +#ifdef __cplusplus +extern "C" { +#endif +XMLPUBFUN xmlMutexPtr XMLCALL + xmlNewMutex (void); +XMLPUBFUN void XMLCALL + xmlMutexLock (xmlMutexPtr tok); +XMLPUBFUN void XMLCALL + xmlMutexUnlock (xmlMutexPtr tok); +XMLPUBFUN void XMLCALL + xmlFreeMutex (xmlMutexPtr tok); + +XMLPUBFUN xmlRMutexPtr XMLCALL + xmlNewRMutex (void); +XMLPUBFUN void XMLCALL + xmlRMutexLock (xmlRMutexPtr tok); +XMLPUBFUN void XMLCALL + xmlRMutexUnlock (xmlRMutexPtr tok); +XMLPUBFUN void XMLCALL + xmlFreeRMutex (xmlRMutexPtr tok); + +/* + * Library wide APIs. + */ +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlInitThreads (void); +XMLPUBFUN void XMLCALL + xmlLockLibrary (void); +XMLPUBFUN void XMLCALL + xmlUnlockLibrary(void); +XMLPUBFUN int XMLCALL + xmlGetThreadId (void); +XMLPUBFUN int XMLCALL + xmlIsMainThread (void); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlCleanupThreads(void); +XMLPUBFUN xmlGlobalStatePtr XMLCALL + xmlGetGlobalState(void); + +#ifdef HAVE_PTHREAD_H +#elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL)) +#if defined(LIBXML_STATIC_FOR_DLL) +int XMLCALL +xmlDllMain(void *hinstDLL, unsigned long fdwReason, + void *lpvReserved); +#endif +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* __XML_THREADS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/tree.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/tree.h new file mode 100644 index 0000000..98e2087 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/tree.h @@ -0,0 +1,1312 @@ +/* + * Summary: interfaces for tree manipulation + * Description: this module describes the structures found in an tree resulting + * from an XML or HTML parsing, as well as the API provided for + * various processing on that tree + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_TREE_H__ +#define __XML_TREE_H__ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Some of the basic types pointer to structures: + */ +/* xmlIO.h */ +typedef struct _xmlParserInputBuffer xmlParserInputBuffer; +typedef xmlParserInputBuffer *xmlParserInputBufferPtr; + +typedef struct _xmlOutputBuffer xmlOutputBuffer; +typedef xmlOutputBuffer *xmlOutputBufferPtr; + +/* parser.h */ +typedef struct _xmlParserInput xmlParserInput; +typedef xmlParserInput *xmlParserInputPtr; + +typedef struct _xmlParserCtxt xmlParserCtxt; +typedef xmlParserCtxt *xmlParserCtxtPtr; + +typedef struct _xmlSAXLocator xmlSAXLocator; +typedef xmlSAXLocator *xmlSAXLocatorPtr; + +typedef struct _xmlSAXHandler xmlSAXHandler; +typedef xmlSAXHandler *xmlSAXHandlerPtr; + +/* entities.h */ +typedef struct _xmlEntity xmlEntity; +typedef xmlEntity *xmlEntityPtr; + +/** + * BASE_BUFFER_SIZE: + * + * default buffer size 4000. + */ +#define BASE_BUFFER_SIZE 4096 + +/** + * LIBXML_NAMESPACE_DICT: + * + * Defines experimental behaviour: + * 1) xmlNs gets an additional field @context (a xmlDoc) + * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc. + */ +/* #define LIBXML_NAMESPACE_DICT */ + +/** + * xmlBufferAllocationScheme: + * + * A buffer allocation scheme can be defined to either match exactly the + * need or double it's allocated size each time it is found too small. + */ + +typedef enum { + XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */ + XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */ + XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */ + XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */ + XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */ + XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */ +} xmlBufferAllocationScheme; + +/** + * xmlBuffer: + * + * A buffer structure, this old construct is limited to 2GB and + * is being deprecated, use API with xmlBuf instead + */ +typedef struct _xmlBuffer xmlBuffer; +typedef xmlBuffer *xmlBufferPtr; +struct _xmlBuffer { + xmlChar *content; /* The buffer content UTF8 */ + unsigned int use; /* The buffer size used */ + unsigned int size; /* The buffer size */ + xmlBufferAllocationScheme alloc; /* The realloc method */ + xmlChar *contentIO; /* in IO mode we may have a different base */ +}; + +/** + * xmlBuf: + * + * A buffer structure, new one, the actual structure internals are not public + */ + +typedef struct _xmlBuf xmlBuf; + +/** + * xmlBufPtr: + * + * A pointer to a buffer structure, the actual structure internals are not + * public + */ + +typedef xmlBuf *xmlBufPtr; + +/* + * A few public routines for xmlBuf. As those are expected to be used + * mostly internally the bulk of the routines are internal in buf.h + */ +XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf); +XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf); +XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf); +XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len); + +/* + * LIBXML2_NEW_BUFFER: + * + * Macro used to express that the API use the new buffers for + * xmlParserInputBuffer and xmlOutputBuffer. The change was + * introduced in 2.9.0. + */ +#define LIBXML2_NEW_BUFFER + +/** + * XML_XML_NAMESPACE: + * + * This is the namespace for the special xml: prefix predefined in the + * XML Namespace specification. + */ +#define XML_XML_NAMESPACE \ + (const xmlChar *) "http://www.w3.org/XML/1998/namespace" + +/** + * XML_XML_ID: + * + * This is the name for the special xml:id attribute + */ +#define XML_XML_ID (const xmlChar *) "xml:id" + +/* + * The different element types carried by an XML tree. + * + * NOTE: This is synchronized with DOM Level1 values + * See http://www.w3.org/TR/REC-DOM-Level-1/ + * + * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should + * be deprecated to use an XML_DTD_NODE. + */ +typedef enum { + XML_ELEMENT_NODE= 1, + XML_ATTRIBUTE_NODE= 2, + XML_TEXT_NODE= 3, + XML_CDATA_SECTION_NODE= 4, + XML_ENTITY_REF_NODE= 5, + XML_ENTITY_NODE= 6, + XML_PI_NODE= 7, + XML_COMMENT_NODE= 8, + XML_DOCUMENT_NODE= 9, + XML_DOCUMENT_TYPE_NODE= 10, + XML_DOCUMENT_FRAG_NODE= 11, + XML_NOTATION_NODE= 12, + XML_HTML_DOCUMENT_NODE= 13, + XML_DTD_NODE= 14, + XML_ELEMENT_DECL= 15, + XML_ATTRIBUTE_DECL= 16, + XML_ENTITY_DECL= 17, + XML_NAMESPACE_DECL= 18, + XML_XINCLUDE_START= 19, + XML_XINCLUDE_END= 20 + /* XML_DOCB_DOCUMENT_NODE= 21 */ /* removed */ +} xmlElementType; + +/* For backward compatibility */ +#define XML_DOCB_DOCUMENT_NODE 21 + +/** + * xmlNotation: + * + * A DTD Notation definition. + */ + +typedef struct _xmlNotation xmlNotation; +typedef xmlNotation *xmlNotationPtr; +struct _xmlNotation { + const xmlChar *name; /* Notation name */ + const xmlChar *PublicID; /* Public identifier, if any */ + const xmlChar *SystemID; /* System identifier, if any */ +}; + +/** + * xmlAttributeType: + * + * A DTD Attribute type definition. + */ + +typedef enum { + XML_ATTRIBUTE_CDATA = 1, + XML_ATTRIBUTE_ID, + XML_ATTRIBUTE_IDREF , + XML_ATTRIBUTE_IDREFS, + XML_ATTRIBUTE_ENTITY, + XML_ATTRIBUTE_ENTITIES, + XML_ATTRIBUTE_NMTOKEN, + XML_ATTRIBUTE_NMTOKENS, + XML_ATTRIBUTE_ENUMERATION, + XML_ATTRIBUTE_NOTATION +} xmlAttributeType; + +/** + * xmlAttributeDefault: + * + * A DTD Attribute default definition. + */ + +typedef enum { + XML_ATTRIBUTE_NONE = 1, + XML_ATTRIBUTE_REQUIRED, + XML_ATTRIBUTE_IMPLIED, + XML_ATTRIBUTE_FIXED +} xmlAttributeDefault; + +/** + * xmlEnumeration: + * + * List structure used when there is an enumeration in DTDs. + */ + +typedef struct _xmlEnumeration xmlEnumeration; +typedef xmlEnumeration *xmlEnumerationPtr; +struct _xmlEnumeration { + struct _xmlEnumeration *next; /* next one */ + const xmlChar *name; /* Enumeration name */ +}; + +/** + * xmlAttribute: + * + * An Attribute declaration in a DTD. + */ + +typedef struct _xmlAttribute xmlAttribute; +typedef xmlAttribute *xmlAttributePtr; +struct _xmlAttribute { + void *_private; /* application data */ + xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */ + const xmlChar *name; /* Attribute name */ + struct _xmlNode *children; /* NULL */ + struct _xmlNode *last; /* NULL */ + struct _xmlDtd *parent; /* -> DTD */ + struct _xmlNode *next; /* next sibling link */ + struct _xmlNode *prev; /* previous sibling link */ + struct _xmlDoc *doc; /* the containing document */ + + struct _xmlAttribute *nexth; /* next in hash table */ + xmlAttributeType atype; /* The attribute type */ + xmlAttributeDefault def; /* the default */ + const xmlChar *defaultValue; /* or the default value */ + xmlEnumerationPtr tree; /* or the enumeration tree if any */ + const xmlChar *prefix; /* the namespace prefix if any */ + const xmlChar *elem; /* Element holding the attribute */ +}; + +/** + * xmlElementContentType: + * + * Possible definitions of element content types. + */ +typedef enum { + XML_ELEMENT_CONTENT_PCDATA = 1, + XML_ELEMENT_CONTENT_ELEMENT, + XML_ELEMENT_CONTENT_SEQ, + XML_ELEMENT_CONTENT_OR +} xmlElementContentType; + +/** + * xmlElementContentOccur: + * + * Possible definitions of element content occurrences. + */ +typedef enum { + XML_ELEMENT_CONTENT_ONCE = 1, + XML_ELEMENT_CONTENT_OPT, + XML_ELEMENT_CONTENT_MULT, + XML_ELEMENT_CONTENT_PLUS +} xmlElementContentOccur; + +/** + * xmlElementContent: + * + * An XML Element content as stored after parsing an element definition + * in a DTD. + */ + +typedef struct _xmlElementContent xmlElementContent; +typedef xmlElementContent *xmlElementContentPtr; +struct _xmlElementContent { + xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */ + xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */ + const xmlChar *name; /* Element name */ + struct _xmlElementContent *c1; /* first child */ + struct _xmlElementContent *c2; /* second child */ + struct _xmlElementContent *parent; /* parent */ + const xmlChar *prefix; /* Namespace prefix */ +}; + +/** + * xmlElementTypeVal: + * + * The different possibilities for an element content type. + */ + +typedef enum { + XML_ELEMENT_TYPE_UNDEFINED = 0, + XML_ELEMENT_TYPE_EMPTY = 1, + XML_ELEMENT_TYPE_ANY, + XML_ELEMENT_TYPE_MIXED, + XML_ELEMENT_TYPE_ELEMENT +} xmlElementTypeVal; + +#ifdef __cplusplus +} +#endif +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlElement: + * + * An XML Element declaration from a DTD. + */ + +typedef struct _xmlElement xmlElement; +typedef xmlElement *xmlElementPtr; +struct _xmlElement { + void *_private; /* application data */ + xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */ + const xmlChar *name; /* Element name */ + struct _xmlNode *children; /* NULL */ + struct _xmlNode *last; /* NULL */ + struct _xmlDtd *parent; /* -> DTD */ + struct _xmlNode *next; /* next sibling link */ + struct _xmlNode *prev; /* previous sibling link */ + struct _xmlDoc *doc; /* the containing document */ + + xmlElementTypeVal etype; /* The type */ + xmlElementContentPtr content; /* the allowed element content */ + xmlAttributePtr attributes; /* List of the declared attributes */ + const xmlChar *prefix; /* the namespace prefix if any */ +#ifdef LIBXML_REGEXP_ENABLED + xmlRegexpPtr contModel; /* the validating regexp */ +#else + void *contModel; +#endif +}; + + +/** + * XML_LOCAL_NAMESPACE: + * + * A namespace declaration node. + */ +#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL +typedef xmlElementType xmlNsType; + +/** + * xmlNs: + * + * An XML namespace. + * Note that prefix == NULL is valid, it defines the default namespace + * within the subtree (until overridden). + * + * xmlNsType is unified with xmlElementType. + */ + +typedef struct _xmlNs xmlNs; +typedef xmlNs *xmlNsPtr; +struct _xmlNs { + struct _xmlNs *next; /* next Ns link for this node */ + xmlNsType type; /* global or local */ + const xmlChar *href; /* URL for the namespace */ + const xmlChar *prefix; /* prefix for the namespace */ + void *_private; /* application data */ + struct _xmlDoc *context; /* normally an xmlDoc */ +}; + +/** + * xmlDtd: + * + * An XML DTD, as defined by parent link */ + struct _xmlNode *next; /* next sibling link */ + struct _xmlNode *prev; /* previous sibling link */ + struct _xmlDoc *doc; /* the containing document */ + + /* End of common part */ + void *notations; /* Hash table for notations if any */ + void *elements; /* Hash table for elements if any */ + void *attributes; /* Hash table for attributes if any */ + void *entities; /* Hash table for entities if any */ + const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */ + const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */ + void *pentities; /* Hash table for param entities if any */ +}; + +/** + * xmlAttr: + * + * An attribute on an XML node. + */ +typedef struct _xmlAttr xmlAttr; +typedef xmlAttr *xmlAttrPtr; +struct _xmlAttr { + void *_private; /* application data */ + xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */ + const xmlChar *name; /* the name of the property */ + struct _xmlNode *children; /* the value of the property */ + struct _xmlNode *last; /* NULL */ + struct _xmlNode *parent; /* child->parent link */ + struct _xmlAttr *next; /* next sibling link */ + struct _xmlAttr *prev; /* previous sibling link */ + struct _xmlDoc *doc; /* the containing document */ + xmlNs *ns; /* pointer to the associated namespace */ + xmlAttributeType atype; /* the attribute type if validating */ + void *psvi; /* for type/PSVI information */ +}; + +/** + * xmlID: + * + * An XML ID instance. + */ + +typedef struct _xmlID xmlID; +typedef xmlID *xmlIDPtr; +struct _xmlID { + struct _xmlID *next; /* next ID */ + const xmlChar *value; /* The ID name */ + xmlAttrPtr attr; /* The attribute holding it */ + const xmlChar *name; /* The attribute if attr is not available */ + int lineno; /* The line number if attr is not available */ + struct _xmlDoc *doc; /* The document holding the ID */ +}; + +/** + * xmlRef: + * + * An XML IDREF instance. + */ + +typedef struct _xmlRef xmlRef; +typedef xmlRef *xmlRefPtr; +struct _xmlRef { + struct _xmlRef *next; /* next Ref */ + const xmlChar *value; /* The Ref name */ + xmlAttrPtr attr; /* The attribute holding it */ + const xmlChar *name; /* The attribute if attr is not available */ + int lineno; /* The line number if attr is not available */ +}; + +/** + * xmlNode: + * + * A node in an XML tree. + */ +typedef struct _xmlNode xmlNode; +typedef xmlNode *xmlNodePtr; +struct _xmlNode { + void *_private; /* application data */ + xmlElementType type; /* type number, must be second ! */ + const xmlChar *name; /* the name of the node, or the entity */ + struct _xmlNode *children; /* parent->childs link */ + struct _xmlNode *last; /* last child link */ + struct _xmlNode *parent; /* child->parent link */ + struct _xmlNode *next; /* next sibling link */ + struct _xmlNode *prev; /* previous sibling link */ + struct _xmlDoc *doc; /* the containing document */ + + /* End of common part */ + xmlNs *ns; /* pointer to the associated namespace */ + xmlChar *content; /* the content */ + struct _xmlAttr *properties;/* properties list */ + xmlNs *nsDef; /* namespace definitions on this node */ + void *psvi; /* for type/PSVI information */ + unsigned short line; /* line number */ + unsigned short extra; /* extra data for XPath/XSLT */ +}; + +/** + * XML_GET_CONTENT: + * + * Macro to extract the content pointer of a node. + */ +#define XML_GET_CONTENT(n) \ + ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content) + +/** + * XML_GET_LINE: + * + * Macro to extract the line number of an element node. + */ +#define XML_GET_LINE(n) \ + (xmlGetLineNo(n)) + +/** + * xmlDocProperty + * + * Set of properties of the document as found by the parser + * Some of them are linked to similarly named xmlParserOption + */ +typedef enum { + XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */ + XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */ + XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */ + XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */ + XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */ + XML_DOC_USERBUILT = 1<<5, /* Document was built using the API + and not by parsing an instance */ + XML_DOC_INTERNAL = 1<<6, /* built for internal processing */ + XML_DOC_HTML = 1<<7 /* parsed or built HTML document */ +} xmlDocProperties; + +/** + * xmlDoc: + * + * An XML document. + */ +typedef struct _xmlDoc xmlDoc; +typedef xmlDoc *xmlDocPtr; +struct _xmlDoc { + void *_private; /* application data */ + xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */ + char *name; /* name/filename/URI of the document */ + struct _xmlNode *children; /* the document tree */ + struct _xmlNode *last; /* last child link */ + struct _xmlNode *parent; /* child->parent link */ + struct _xmlNode *next; /* next sibling link */ + struct _xmlNode *prev; /* previous sibling link */ + struct _xmlDoc *doc; /* autoreference to itself */ + + /* End of common part */ + int compression;/* level of zlib compression */ + int standalone; /* standalone document (no external refs) + 1 if standalone="yes" + 0 if standalone="no" + -1 if there is no XML declaration + -2 if there is an XML declaration, but no + standalone attribute was specified */ + struct _xmlDtd *intSubset; /* the document internal subset */ + struct _xmlDtd *extSubset; /* the document external subset */ + struct _xmlNs *oldNs; /* Global namespace, the old way */ + const xmlChar *version; /* the XML version string */ + const xmlChar *encoding; /* external initial encoding, if any */ + void *ids; /* Hash table for ID attributes if any */ + void *refs; /* Hash table for IDREFs attributes if any */ + const xmlChar *URL; /* The URI for that document */ + int charset; /* Internal flag for charset handling, + actually an xmlCharEncoding */ + struct _xmlDict *dict; /* dict used to allocate names or NULL */ + void *psvi; /* for type/PSVI information */ + int parseFlags; /* set of xmlParserOption used to parse the + document */ + int properties; /* set of xmlDocProperties for this document + set at the end of parsing */ +}; + + +typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt; +typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr; + +/** + * xmlDOMWrapAcquireNsFunction: + * @ctxt: a DOM wrapper context + * @node: the context node (element or attribute) + * @nsName: the requested namespace name + * @nsPrefix: the requested namespace prefix + * + * A function called to acquire namespaces (xmlNs) from the wrapper. + * + * Returns an xmlNsPtr or NULL in case of an error. + */ +typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt, + xmlNodePtr node, + const xmlChar *nsName, + const xmlChar *nsPrefix); + +/** + * xmlDOMWrapCtxt: + * + * Context for DOM wrapper-operations. + */ +struct _xmlDOMWrapCtxt { + void * _private; + /* + * The type of this context, just in case we need specialized + * contexts in the future. + */ + int type; + /* + * Internal namespace map used for various operations. + */ + void * namespaceMap; + /* + * Use this one to acquire an xmlNsPtr intended for node->ns. + * (Note that this is not intended for elem->nsDef). + */ + xmlDOMWrapAcquireNsFunction getNsForNodeFunc; +}; + +/** + * xmlChildrenNode: + * + * Macro for compatibility naming layer with libxml1. Maps + * to "children." + */ +#ifndef xmlChildrenNode +#define xmlChildrenNode children +#endif + +/** + * xmlRootNode: + * + * Macro for compatibility naming layer with libxml1. Maps + * to "children". + */ +#ifndef xmlRootNode +#define xmlRootNode children +#endif + +/* + * Variables. + */ + +/* + * Some helper functions + */ +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \ + defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \ + defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \ + defined(LIBXML_LEGACY_ENABLED) +XMLPUBFUN int XMLCALL + xmlValidateNCName (const xmlChar *value, + int space); +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN int XMLCALL + xmlValidateQName (const xmlChar *value, + int space); +XMLPUBFUN int XMLCALL + xmlValidateName (const xmlChar *value, + int space); +XMLPUBFUN int XMLCALL + xmlValidateNMToken (const xmlChar *value, + int space); +#endif + +XMLPUBFUN xmlChar * XMLCALL + xmlBuildQName (const xmlChar *ncname, + const xmlChar *prefix, + xmlChar *memory, + int len); +XMLPUBFUN xmlChar * XMLCALL + xmlSplitQName2 (const xmlChar *name, + xmlChar **prefix); +XMLPUBFUN const xmlChar * XMLCALL + xmlSplitQName3 (const xmlChar *name, + int *len); + +/* + * Handling Buffers, the old ones see @xmlBuf for the new ones. + */ + +XMLPUBFUN void XMLCALL + xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme); +XMLPUBFUN xmlBufferAllocationScheme XMLCALL + xmlGetBufferAllocationScheme(void); + +XMLPUBFUN xmlBufferPtr XMLCALL + xmlBufferCreate (void); +XMLPUBFUN xmlBufferPtr XMLCALL + xmlBufferCreateSize (size_t size); +XMLPUBFUN xmlBufferPtr XMLCALL + xmlBufferCreateStatic (void *mem, + size_t size); +XMLPUBFUN int XMLCALL + xmlBufferResize (xmlBufferPtr buf, + unsigned int size); +XMLPUBFUN void XMLCALL + xmlBufferFree (xmlBufferPtr buf); +XMLPUBFUN int XMLCALL + xmlBufferDump (FILE *file, + xmlBufferPtr buf); +XMLPUBFUN int XMLCALL + xmlBufferAdd (xmlBufferPtr buf, + const xmlChar *str, + int len); +XMLPUBFUN int XMLCALL + xmlBufferAddHead (xmlBufferPtr buf, + const xmlChar *str, + int len); +XMLPUBFUN int XMLCALL + xmlBufferCat (xmlBufferPtr buf, + const xmlChar *str); +XMLPUBFUN int XMLCALL + xmlBufferCCat (xmlBufferPtr buf, + const char *str); +XMLPUBFUN int XMLCALL + xmlBufferShrink (xmlBufferPtr buf, + unsigned int len); +XMLPUBFUN int XMLCALL + xmlBufferGrow (xmlBufferPtr buf, + unsigned int len); +XMLPUBFUN void XMLCALL + xmlBufferEmpty (xmlBufferPtr buf); +XMLPUBFUN const xmlChar* XMLCALL + xmlBufferContent (const xmlBuffer *buf); +XMLPUBFUN xmlChar* XMLCALL + xmlBufferDetach (xmlBufferPtr buf); +XMLPUBFUN void XMLCALL + xmlBufferSetAllocationScheme(xmlBufferPtr buf, + xmlBufferAllocationScheme scheme); +XMLPUBFUN int XMLCALL + xmlBufferLength (const xmlBuffer *buf); + +/* + * Creating/freeing new structures. + */ +XMLPUBFUN xmlDtdPtr XMLCALL + xmlCreateIntSubset (xmlDocPtr doc, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +XMLPUBFUN xmlDtdPtr XMLCALL + xmlNewDtd (xmlDocPtr doc, + const xmlChar *name, + const xmlChar *ExternalID, + const xmlChar *SystemID); +XMLPUBFUN xmlDtdPtr XMLCALL + xmlGetIntSubset (const xmlDoc *doc); +XMLPUBFUN void XMLCALL + xmlFreeDtd (xmlDtdPtr cur); +#ifdef LIBXML_LEGACY_ENABLED +XML_DEPRECATED +XMLPUBFUN xmlNsPtr XMLCALL + xmlNewGlobalNs (xmlDocPtr doc, + const xmlChar *href, + const xmlChar *prefix); +#endif /* LIBXML_LEGACY_ENABLED */ +XMLPUBFUN xmlNsPtr XMLCALL + xmlNewNs (xmlNodePtr node, + const xmlChar *href, + const xmlChar *prefix); +XMLPUBFUN void XMLCALL + xmlFreeNs (xmlNsPtr cur); +XMLPUBFUN void XMLCALL + xmlFreeNsList (xmlNsPtr cur); +XMLPUBFUN xmlDocPtr XMLCALL + xmlNewDoc (const xmlChar *version); +XMLPUBFUN void XMLCALL + xmlFreeDoc (xmlDocPtr cur); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlNewDocProp (xmlDocPtr doc, + const xmlChar *name, + const xmlChar *value); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN xmlAttrPtr XMLCALL + xmlNewProp (xmlNodePtr node, + const xmlChar *name, + const xmlChar *value); +#endif +XMLPUBFUN xmlAttrPtr XMLCALL + xmlNewNsProp (xmlNodePtr node, + xmlNsPtr ns, + const xmlChar *name, + const xmlChar *value); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlNewNsPropEatName (xmlNodePtr node, + xmlNsPtr ns, + xmlChar *name, + const xmlChar *value); +XMLPUBFUN void XMLCALL + xmlFreePropList (xmlAttrPtr cur); +XMLPUBFUN void XMLCALL + xmlFreeProp (xmlAttrPtr cur); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlCopyProp (xmlNodePtr target, + xmlAttrPtr cur); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlCopyPropList (xmlNodePtr target, + xmlAttrPtr cur); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlDtdPtr XMLCALL + xmlCopyDtd (xmlDtdPtr dtd); +#endif /* LIBXML_TREE_ENABLED */ +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN xmlDocPtr XMLCALL + xmlCopyDoc (xmlDocPtr doc, + int recursive); +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ +/* + * Creating new nodes. + */ +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocNode (xmlDocPtr doc, + xmlNsPtr ns, + const xmlChar *name, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocNodeEatName (xmlDocPtr doc, + xmlNsPtr ns, + xmlChar *name, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewNode (xmlNsPtr ns, + const xmlChar *name); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewNodeEatName (xmlNsPtr ns, + xmlChar *name); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewChild (xmlNodePtr parent, + xmlNsPtr ns, + const xmlChar *name, + const xmlChar *content); +#endif +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocText (const xmlDoc *doc, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewText (const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocPI (xmlDocPtr doc, + const xmlChar *name, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewPI (const xmlChar *name, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocTextLen (xmlDocPtr doc, + const xmlChar *content, + int len); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewTextLen (const xmlChar *content, + int len); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocComment (xmlDocPtr doc, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewComment (const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewCDataBlock (xmlDocPtr doc, + const xmlChar *content, + int len); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewCharRef (xmlDocPtr doc, + const xmlChar *name); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewReference (const xmlDoc *doc, + const xmlChar *name); +XMLPUBFUN xmlNodePtr XMLCALL + xmlCopyNode (xmlNodePtr node, + int recursive); +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocCopyNode (xmlNodePtr node, + xmlDocPtr doc, + int recursive); +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocCopyNodeList (xmlDocPtr doc, + xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlCopyNodeList (xmlNodePtr node); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewTextChild (xmlNodePtr parent, + xmlNsPtr ns, + const xmlChar *name, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocRawNode (xmlDocPtr doc, + xmlNsPtr ns, + const xmlChar *name, + const xmlChar *content); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocFragment (xmlDocPtr doc); +#endif /* LIBXML_TREE_ENABLED */ + +/* + * Navigating. + */ +XMLPUBFUN long XMLCALL + xmlGetLineNo (const xmlNode *node); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) +XMLPUBFUN xmlChar * XMLCALL + xmlGetNodePath (const xmlNode *node); +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */ +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocGetRootElement (const xmlDoc *doc); +XMLPUBFUN xmlNodePtr XMLCALL + xmlGetLastChild (const xmlNode *parent); +XMLPUBFUN int XMLCALL + xmlNodeIsText (const xmlNode *node); +XMLPUBFUN int XMLCALL + xmlIsBlankNode (const xmlNode *node); + +/* + * Changing the structure. + */ +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocSetRootElement (xmlDocPtr doc, + xmlNodePtr root); +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN void XMLCALL + xmlNodeSetName (xmlNodePtr cur, + const xmlChar *name); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN xmlNodePtr XMLCALL + xmlAddChild (xmlNodePtr parent, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL + xmlAddChildList (xmlNodePtr parent, + xmlNodePtr cur); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) +XMLPUBFUN xmlNodePtr XMLCALL + xmlReplaceNode (xmlNodePtr old, + xmlNodePtr cur); +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +XMLPUBFUN xmlNodePtr XMLCALL + xmlAddPrevSibling (xmlNodePtr cur, + xmlNodePtr elem); +#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */ +XMLPUBFUN xmlNodePtr XMLCALL + xmlAddSibling (xmlNodePtr cur, + xmlNodePtr elem); +XMLPUBFUN xmlNodePtr XMLCALL + xmlAddNextSibling (xmlNodePtr cur, + xmlNodePtr elem); +XMLPUBFUN void XMLCALL + xmlUnlinkNode (xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL + xmlTextMerge (xmlNodePtr first, + xmlNodePtr second); +XMLPUBFUN int XMLCALL + xmlTextConcat (xmlNodePtr node, + const xmlChar *content, + int len); +XMLPUBFUN void XMLCALL + xmlFreeNodeList (xmlNodePtr cur); +XMLPUBFUN void XMLCALL + xmlFreeNode (xmlNodePtr cur); +XMLPUBFUN void XMLCALL + xmlSetTreeDoc (xmlNodePtr tree, + xmlDocPtr doc); +XMLPUBFUN void XMLCALL + xmlSetListDoc (xmlNodePtr list, + xmlDocPtr doc); +/* + * Namespaces. + */ +XMLPUBFUN xmlNsPtr XMLCALL + xmlSearchNs (xmlDocPtr doc, + xmlNodePtr node, + const xmlChar *nameSpace); +XMLPUBFUN xmlNsPtr XMLCALL + xmlSearchNsByHref (xmlDocPtr doc, + xmlNodePtr node, + const xmlChar *href); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN xmlNsPtr * XMLCALL + xmlGetNsList (const xmlDoc *doc, + const xmlNode *node); +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */ + +XMLPUBFUN void XMLCALL + xmlSetNs (xmlNodePtr node, + xmlNsPtr ns); +XMLPUBFUN xmlNsPtr XMLCALL + xmlCopyNamespace (xmlNsPtr cur); +XMLPUBFUN xmlNsPtr XMLCALL + xmlCopyNamespaceList (xmlNsPtr cur); + +/* + * Changing the content. + */ +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) +XMLPUBFUN xmlAttrPtr XMLCALL + xmlSetProp (xmlNodePtr node, + const xmlChar *name, + const xmlChar *value); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlSetNsProp (xmlNodePtr node, + xmlNsPtr ns, + const xmlChar *name, + const xmlChar *value); +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ +XMLPUBFUN xmlChar * XMLCALL + xmlGetNoNsProp (const xmlNode *node, + const xmlChar *name); +XMLPUBFUN xmlChar * XMLCALL + xmlGetProp (const xmlNode *node, + const xmlChar *name); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlHasProp (const xmlNode *node, + const xmlChar *name); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlHasNsProp (const xmlNode *node, + const xmlChar *name, + const xmlChar *nameSpace); +XMLPUBFUN xmlChar * XMLCALL + xmlGetNsProp (const xmlNode *node, + const xmlChar *name, + const xmlChar *nameSpace); +XMLPUBFUN xmlNodePtr XMLCALL + xmlStringGetNodeList (const xmlDoc *doc, + const xmlChar *value); +XMLPUBFUN xmlNodePtr XMLCALL + xmlStringLenGetNodeList (const xmlDoc *doc, + const xmlChar *value, + int len); +XMLPUBFUN xmlChar * XMLCALL + xmlNodeListGetString (xmlDocPtr doc, + const xmlNode *list, + int inLine); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlChar * XMLCALL + xmlNodeListGetRawString (const xmlDoc *doc, + const xmlNode *list, + int inLine); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN void XMLCALL + xmlNodeSetContent (xmlNodePtr cur, + const xmlChar *content); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN void XMLCALL + xmlNodeSetContentLen (xmlNodePtr cur, + const xmlChar *content, + int len); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN void XMLCALL + xmlNodeAddContent (xmlNodePtr cur, + const xmlChar *content); +XMLPUBFUN void XMLCALL + xmlNodeAddContentLen (xmlNodePtr cur, + const xmlChar *content, + int len); +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetContent (const xmlNode *cur); + +XMLPUBFUN int XMLCALL + xmlNodeBufGetContent (xmlBufferPtr buffer, + const xmlNode *cur); +XMLPUBFUN int XMLCALL + xmlBufGetNodeContent (xmlBufPtr buf, + const xmlNode *cur); + +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetLang (const xmlNode *cur); +XMLPUBFUN int XMLCALL + xmlNodeGetSpacePreserve (const xmlNode *cur); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN void XMLCALL + xmlNodeSetLang (xmlNodePtr cur, + const xmlChar *lang); +XMLPUBFUN void XMLCALL + xmlNodeSetSpacePreserve (xmlNodePtr cur, + int val); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetBase (const xmlDoc *doc, + const xmlNode *cur); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +XMLPUBFUN void XMLCALL + xmlNodeSetBase (xmlNodePtr cur, + const xmlChar *uri); +#endif + +/* + * Removing content. + */ +XMLPUBFUN int XMLCALL + xmlRemoveProp (xmlAttrPtr cur); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN int XMLCALL + xmlUnsetNsProp (xmlNodePtr node, + xmlNsPtr ns, + const xmlChar *name); +XMLPUBFUN int XMLCALL + xmlUnsetProp (xmlNodePtr node, + const xmlChar *name); +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ + +/* + * Internal, don't use. + */ +XMLPUBFUN void XMLCALL + xmlBufferWriteCHAR (xmlBufferPtr buf, + const xmlChar *string); +XMLPUBFUN void XMLCALL + xmlBufferWriteChar (xmlBufferPtr buf, + const char *string); +XMLPUBFUN void XMLCALL + xmlBufferWriteQuotedString(xmlBufferPtr buf, + const xmlChar *string); + +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf, + xmlDocPtr doc, + xmlAttrPtr attr, + const xmlChar *string); +#endif /* LIBXML_OUTPUT_ENABLED */ + +#ifdef LIBXML_TREE_ENABLED +/* + * Namespace handling. + */ +XMLPUBFUN int XMLCALL + xmlReconciliateNs (xmlDocPtr doc, + xmlNodePtr tree); +#endif + +#ifdef LIBXML_OUTPUT_ENABLED +/* + * Saving. + */ +XMLPUBFUN void XMLCALL + xmlDocDumpFormatMemory (xmlDocPtr cur, + xmlChar **mem, + int *size, + int format); +XMLPUBFUN void XMLCALL + xmlDocDumpMemory (xmlDocPtr cur, + xmlChar **mem, + int *size); +XMLPUBFUN void XMLCALL + xmlDocDumpMemoryEnc (xmlDocPtr out_doc, + xmlChar **doc_txt_ptr, + int * doc_txt_len, + const char *txt_encoding); +XMLPUBFUN void XMLCALL + xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, + xmlChar **doc_txt_ptr, + int * doc_txt_len, + const char *txt_encoding, + int format); +XMLPUBFUN int XMLCALL + xmlDocFormatDump (FILE *f, + xmlDocPtr cur, + int format); +XMLPUBFUN int XMLCALL + xmlDocDump (FILE *f, + xmlDocPtr cur); +XMLPUBFUN void XMLCALL + xmlElemDump (FILE *f, + xmlDocPtr doc, + xmlNodePtr cur); +XMLPUBFUN int XMLCALL + xmlSaveFile (const char *filename, + xmlDocPtr cur); +XMLPUBFUN int XMLCALL + xmlSaveFormatFile (const char *filename, + xmlDocPtr cur, + int format); +XMLPUBFUN size_t XMLCALL + xmlBufNodeDump (xmlBufPtr buf, + xmlDocPtr doc, + xmlNodePtr cur, + int level, + int format); +XMLPUBFUN int XMLCALL + xmlNodeDump (xmlBufferPtr buf, + xmlDocPtr doc, + xmlNodePtr cur, + int level, + int format); + +XMLPUBFUN int XMLCALL + xmlSaveFileTo (xmlOutputBufferPtr buf, + xmlDocPtr cur, + const char *encoding); +XMLPUBFUN int XMLCALL + xmlSaveFormatFileTo (xmlOutputBufferPtr buf, + xmlDocPtr cur, + const char *encoding, + int format); +XMLPUBFUN void XMLCALL + xmlNodeDumpOutput (xmlOutputBufferPtr buf, + xmlDocPtr doc, + xmlNodePtr cur, + int level, + int format, + const char *encoding); + +XMLPUBFUN int XMLCALL + xmlSaveFormatFileEnc (const char *filename, + xmlDocPtr cur, + const char *encoding, + int format); + +XMLPUBFUN int XMLCALL + xmlSaveFileEnc (const char *filename, + xmlDocPtr cur, + const char *encoding); + +#endif /* LIBXML_OUTPUT_ENABLED */ +/* + * XHTML + */ +XMLPUBFUN int XMLCALL + xmlIsXHTML (const xmlChar *systemID, + const xmlChar *publicID); + +/* + * Compression. + */ +XMLPUBFUN int XMLCALL + xmlGetDocCompressMode (const xmlDoc *doc); +XMLPUBFUN void XMLCALL + xmlSetDocCompressMode (xmlDocPtr doc, + int mode); +XMLPUBFUN int XMLCALL + xmlGetCompressMode (void); +XMLPUBFUN void XMLCALL + xmlSetCompressMode (int mode); + +/* +* DOM-wrapper helper functions. +*/ +XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL + xmlDOMWrapNewCtxt (void); +XMLPUBFUN void XMLCALL + xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt, + xmlNodePtr elem, + int options); +XMLPUBFUN int XMLCALL + xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt, + xmlDocPtr sourceDoc, + xmlNodePtr node, + xmlDocPtr destDoc, + xmlNodePtr destParent, + int options); +XMLPUBFUN int XMLCALL + xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr node, + int options); +XMLPUBFUN int XMLCALL + xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt, + xmlDocPtr sourceDoc, + xmlNodePtr node, + xmlNodePtr *clonedNode, + xmlDocPtr destDoc, + xmlNodePtr destParent, + int deep, + int options); + +#ifdef LIBXML_TREE_ENABLED +/* + * 5 interfaces from DOM ElementTraversal, but different in entities + * traversal. + */ +XMLPUBFUN unsigned long XMLCALL + xmlChildElementCount (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNextElementSibling (xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlFirstElementChild (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlLastElementChild (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlPreviousElementSibling (xmlNodePtr node); +#endif +#ifdef __cplusplus +} +#endif +#ifndef __XML_PARSER_H__ +#include +#endif + +#endif /* __XML_TREE_H__ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/uri.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/uri.h new file mode 100644 index 0000000..db48262 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/uri.h @@ -0,0 +1,94 @@ +/** + * Summary: library of generic URI related routines + * Description: library of generic URI related routines + * Implements RFC 2396 + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_URI_H__ +#define __XML_URI_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlURI: + * + * A parsed URI reference. This is a struct containing the various fields + * as described in RFC 2396 but separated for further processing. + * + * Note: query is a deprecated field which is incorrectly unescaped. + * query_raw takes precedence over query if the former is set. + * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127 + */ +typedef struct _xmlURI xmlURI; +typedef xmlURI *xmlURIPtr; +struct _xmlURI { + char *scheme; /* the URI scheme */ + char *opaque; /* opaque part */ + char *authority; /* the authority part */ + char *server; /* the server part */ + char *user; /* the user part */ + int port; /* the port number */ + char *path; /* the path string */ + char *query; /* the query string (deprecated - use with caution) */ + char *fragment; /* the fragment identifier */ + int cleanup; /* parsing potentially unclean URI */ + char *query_raw; /* the query string (as it appears in the URI) */ +}; + +/* + * This function is in tree.h: + * xmlChar * xmlNodeGetBase (xmlDocPtr doc, + * xmlNodePtr cur); + */ +XMLPUBFUN xmlURIPtr XMLCALL + xmlCreateURI (void); +XMLPUBFUN xmlChar * XMLCALL + xmlBuildURI (const xmlChar *URI, + const xmlChar *base); +XMLPUBFUN xmlChar * XMLCALL + xmlBuildRelativeURI (const xmlChar *URI, + const xmlChar *base); +XMLPUBFUN xmlURIPtr XMLCALL + xmlParseURI (const char *str); +XMLPUBFUN xmlURIPtr XMLCALL + xmlParseURIRaw (const char *str, + int raw); +XMLPUBFUN int XMLCALL + xmlParseURIReference (xmlURIPtr uri, + const char *str); +XMLPUBFUN xmlChar * XMLCALL + xmlSaveUri (xmlURIPtr uri); +XMLPUBFUN void XMLCALL + xmlPrintURI (FILE *stream, + xmlURIPtr uri); +XMLPUBFUN xmlChar * XMLCALL + xmlURIEscapeStr (const xmlChar *str, + const xmlChar *list); +XMLPUBFUN char * XMLCALL + xmlURIUnescapeString (const char *str, + int len, + char *target); +XMLPUBFUN int XMLCALL + xmlNormalizeURIPath (char *path); +XMLPUBFUN xmlChar * XMLCALL + xmlURIEscape (const xmlChar *str); +XMLPUBFUN void XMLCALL + xmlFreeURI (xmlURIPtr uri); +XMLPUBFUN xmlChar* XMLCALL + xmlCanonicPath (const xmlChar *path); +XMLPUBFUN xmlChar* XMLCALL + xmlPathToURI (const xmlChar *path); + +#ifdef __cplusplus +} +#endif +#endif /* __XML_URI_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/valid.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/valid.h new file mode 100644 index 0000000..3eaf84a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/valid.h @@ -0,0 +1,463 @@ +/* + * Summary: The DTD validation + * Description: API for the DTD handling and the validity checking + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_VALID_H__ +#define __XML_VALID_H__ + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Validation state added for non-determinist content model. + */ +typedef struct _xmlValidState xmlValidState; +typedef xmlValidState *xmlValidStatePtr; + +/** + * xmlValidityErrorFunc: + * @ctx: usually an xmlValidCtxtPtr to a validity error context, + * but comes from ctxt->userData (which normally contains such + * a pointer); ctxt->userData can be changed by the user. + * @msg: the string to format *printf like vararg + * @...: remaining arguments to the format + * + * Callback called when a validity error is found. This is a message + * oriented function similar to an *printf function. + */ +typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); + +/** + * xmlValidityWarningFunc: + * @ctx: usually an xmlValidCtxtPtr to a validity error context, + * but comes from ctxt->userData (which normally contains such + * a pointer); ctxt->userData can be changed by the user. + * @msg: the string to format *printf like vararg + * @...: remaining arguments to the format + * + * Callback called when a validity warning is found. This is a message + * oriented function similar to an *printf function. + */ +typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); + +#ifdef IN_LIBXML +/** + * XML_VCTXT_DTD_VALIDATED: + * + * Set after xmlValidateDtdFinal was called. + */ +#define XML_VCTXT_DTD_VALIDATED (1u << 0) +/** + * XML_VCTXT_USE_PCTXT: + * + * Set if the validation context is part of a parser context. + */ +#define XML_VCTXT_USE_PCTXT (1u << 1) +#endif + +/* + * xmlValidCtxt: + * An xmlValidCtxt is used for error reporting when validating. + */ +typedef struct _xmlValidCtxt xmlValidCtxt; +typedef xmlValidCtxt *xmlValidCtxtPtr; +struct _xmlValidCtxt { + void *userData; /* user specific data block */ + xmlValidityErrorFunc error; /* the callback in case of errors */ + xmlValidityWarningFunc warning; /* the callback in case of warning */ + + /* Node analysis stack used when validating within entities */ + xmlNodePtr node; /* Current parsed Node */ + int nodeNr; /* Depth of the parsing stack */ + int nodeMax; /* Max depth of the parsing stack */ + xmlNodePtr *nodeTab; /* array of nodes */ + + unsigned int flags; /* internal flags */ + xmlDocPtr doc; /* the document */ + int valid; /* temporary validity check result */ + + /* state state used for non-determinist content validation */ + xmlValidState *vstate; /* current state */ + int vstateNr; /* Depth of the validation stack */ + int vstateMax; /* Max depth of the validation stack */ + xmlValidState *vstateTab; /* array of validation states */ + +#ifdef LIBXML_REGEXP_ENABLED + xmlAutomataPtr am; /* the automata */ + xmlAutomataStatePtr state; /* used to build the automata */ +#else + void *am; + void *state; +#endif +}; + +/* + * ALL notation declarations are stored in a table. + * There is one table per DTD. + */ + +typedef struct _xmlHashTable xmlNotationTable; +typedef xmlNotationTable *xmlNotationTablePtr; + +/* + * ALL element declarations are stored in a table. + * There is one table per DTD. + */ + +typedef struct _xmlHashTable xmlElementTable; +typedef xmlElementTable *xmlElementTablePtr; + +/* + * ALL attribute declarations are stored in a table. + * There is one table per DTD. + */ + +typedef struct _xmlHashTable xmlAttributeTable; +typedef xmlAttributeTable *xmlAttributeTablePtr; + +/* + * ALL IDs attributes are stored in a table. + * There is one table per document. + */ + +typedef struct _xmlHashTable xmlIDTable; +typedef xmlIDTable *xmlIDTablePtr; + +/* + * ALL Refs attributes are stored in a table. + * There is one table per document. + */ + +typedef struct _xmlHashTable xmlRefTable; +typedef xmlRefTable *xmlRefTablePtr; + +/* Notation */ +XMLPUBFUN xmlNotationPtr XMLCALL + xmlAddNotationDecl (xmlValidCtxtPtr ctxt, + xmlDtdPtr dtd, + const xmlChar *name, + const xmlChar *PublicID, + const xmlChar *SystemID); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlNotationTablePtr XMLCALL + xmlCopyNotationTable (xmlNotationTablePtr table); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN void XMLCALL + xmlFreeNotationTable (xmlNotationTablePtr table); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlDumpNotationDecl (xmlBufferPtr buf, + xmlNotationPtr nota); +XMLPUBFUN void XMLCALL + xmlDumpNotationTable (xmlBufferPtr buf, + xmlNotationTablePtr table); +#endif /* LIBXML_OUTPUT_ENABLED */ + +/* Element Content */ +/* the non Doc version are being deprecated */ +XMLPUBFUN xmlElementContentPtr XMLCALL + xmlNewElementContent (const xmlChar *name, + xmlElementContentType type); +XMLPUBFUN xmlElementContentPtr XMLCALL + xmlCopyElementContent (xmlElementContentPtr content); +XMLPUBFUN void XMLCALL + xmlFreeElementContent (xmlElementContentPtr cur); +/* the new versions with doc argument */ +XMLPUBFUN xmlElementContentPtr XMLCALL + xmlNewDocElementContent (xmlDocPtr doc, + const xmlChar *name, + xmlElementContentType type); +XMLPUBFUN xmlElementContentPtr XMLCALL + xmlCopyDocElementContent(xmlDocPtr doc, + xmlElementContentPtr content); +XMLPUBFUN void XMLCALL + xmlFreeDocElementContent(xmlDocPtr doc, + xmlElementContentPtr cur); +XMLPUBFUN void XMLCALL + xmlSnprintfElementContent(char *buf, + int size, + xmlElementContentPtr content, + int englob); +#ifdef LIBXML_OUTPUT_ENABLED +/* DEPRECATED */ +XMLPUBFUN void XMLCALL + xmlSprintfElementContent(char *buf, + xmlElementContentPtr content, + int englob); +#endif /* LIBXML_OUTPUT_ENABLED */ +/* DEPRECATED */ + +/* Element */ +XMLPUBFUN xmlElementPtr XMLCALL + xmlAddElementDecl (xmlValidCtxtPtr ctxt, + xmlDtdPtr dtd, + const xmlChar *name, + xmlElementTypeVal type, + xmlElementContentPtr content); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlElementTablePtr XMLCALL + xmlCopyElementTable (xmlElementTablePtr table); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN void XMLCALL + xmlFreeElementTable (xmlElementTablePtr table); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlDumpElementTable (xmlBufferPtr buf, + xmlElementTablePtr table); +XMLPUBFUN void XMLCALL + xmlDumpElementDecl (xmlBufferPtr buf, + xmlElementPtr elem); +#endif /* LIBXML_OUTPUT_ENABLED */ + +/* Enumeration */ +XMLPUBFUN xmlEnumerationPtr XMLCALL + xmlCreateEnumeration (const xmlChar *name); +XMLPUBFUN void XMLCALL + xmlFreeEnumeration (xmlEnumerationPtr cur); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlEnumerationPtr XMLCALL + xmlCopyEnumeration (xmlEnumerationPtr cur); +#endif /* LIBXML_TREE_ENABLED */ + +/* Attribute */ +XMLPUBFUN xmlAttributePtr XMLCALL + xmlAddAttributeDecl (xmlValidCtxtPtr ctxt, + xmlDtdPtr dtd, + const xmlChar *elem, + const xmlChar *name, + const xmlChar *ns, + xmlAttributeType type, + xmlAttributeDefault def, + const xmlChar *defaultValue, + xmlEnumerationPtr tree); +#ifdef LIBXML_TREE_ENABLED +XMLPUBFUN xmlAttributeTablePtr XMLCALL + xmlCopyAttributeTable (xmlAttributeTablePtr table); +#endif /* LIBXML_TREE_ENABLED */ +XMLPUBFUN void XMLCALL + xmlFreeAttributeTable (xmlAttributeTablePtr table); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlDumpAttributeTable (xmlBufferPtr buf, + xmlAttributeTablePtr table); +XMLPUBFUN void XMLCALL + xmlDumpAttributeDecl (xmlBufferPtr buf, + xmlAttributePtr attr); +#endif /* LIBXML_OUTPUT_ENABLED */ + +/* IDs */ +XMLPUBFUN xmlIDPtr XMLCALL + xmlAddID (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + const xmlChar *value, + xmlAttrPtr attr); +XMLPUBFUN void XMLCALL + xmlFreeIDTable (xmlIDTablePtr table); +XMLPUBFUN xmlAttrPtr XMLCALL + xmlGetID (xmlDocPtr doc, + const xmlChar *ID); +XMLPUBFUN int XMLCALL + xmlIsID (xmlDocPtr doc, + xmlNodePtr elem, + xmlAttrPtr attr); +XMLPUBFUN int XMLCALL + xmlRemoveID (xmlDocPtr doc, + xmlAttrPtr attr); + +/* IDREFs */ +XML_DEPRECATED +XMLPUBFUN xmlRefPtr XMLCALL + xmlAddRef (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + const xmlChar *value, + xmlAttrPtr attr); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlFreeRefTable (xmlRefTablePtr table); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlIsRef (xmlDocPtr doc, + xmlNodePtr elem, + xmlAttrPtr attr); +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlRemoveRef (xmlDocPtr doc, + xmlAttrPtr attr); +XML_DEPRECATED +XMLPUBFUN xmlListPtr XMLCALL + xmlGetRefs (xmlDocPtr doc, + const xmlChar *ID); + +/** + * The public function calls related to validity checking. + */ +#ifdef LIBXML_VALID_ENABLED +/* Allocate/Release Validation Contexts */ +XMLPUBFUN xmlValidCtxtPtr XMLCALL + xmlNewValidCtxt(void); +XMLPUBFUN void XMLCALL + xmlFreeValidCtxt(xmlValidCtxtPtr); + +XMLPUBFUN int XMLCALL + xmlValidateRoot (xmlValidCtxtPtr ctxt, + xmlDocPtr doc); +XMLPUBFUN int XMLCALL + xmlValidateElementDecl (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlElementPtr elem); +XMLPUBFUN xmlChar * XMLCALL + xmlValidNormalizeAttributeValue(xmlDocPtr doc, + xmlNodePtr elem, + const xmlChar *name, + const xmlChar *value); +XMLPUBFUN xmlChar * XMLCALL + xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem, + const xmlChar *name, + const xmlChar *value); +XMLPUBFUN int XMLCALL + xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlAttributePtr attr); +XMLPUBFUN int XMLCALL + xmlValidateAttributeValue(xmlAttributeType type, + const xmlChar *value); +XMLPUBFUN int XMLCALL + xmlValidateNotationDecl (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNotationPtr nota); +XMLPUBFUN int XMLCALL + xmlValidateDtd (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlDtdPtr dtd); +XMLPUBFUN int XMLCALL + xmlValidateDtdFinal (xmlValidCtxtPtr ctxt, + xmlDocPtr doc); +XMLPUBFUN int XMLCALL + xmlValidateDocument (xmlValidCtxtPtr ctxt, + xmlDocPtr doc); +XMLPUBFUN int XMLCALL + xmlValidateElement (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem); +XMLPUBFUN int XMLCALL + xmlValidateOneElement (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem); +XMLPUBFUN int XMLCALL + xmlValidateOneAttribute (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem, + xmlAttrPtr attr, + const xmlChar *value); +XMLPUBFUN int XMLCALL + xmlValidateOneNamespace (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem, + const xmlChar *prefix, + xmlNsPtr ns, + const xmlChar *value); +XMLPUBFUN int XMLCALL + xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, + xmlDocPtr doc); +#endif /* LIBXML_VALID_ENABLED */ + +#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN int XMLCALL + xmlValidateNotationUse (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + const xmlChar *notationName); +#endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */ + +XMLPUBFUN int XMLCALL + xmlIsMixedElement (xmlDocPtr doc, + const xmlChar *name); +XMLPUBFUN xmlAttributePtr XMLCALL + xmlGetDtdAttrDesc (xmlDtdPtr dtd, + const xmlChar *elem, + const xmlChar *name); +XMLPUBFUN xmlAttributePtr XMLCALL + xmlGetDtdQAttrDesc (xmlDtdPtr dtd, + const xmlChar *elem, + const xmlChar *name, + const xmlChar *prefix); +XMLPUBFUN xmlNotationPtr XMLCALL + xmlGetDtdNotationDesc (xmlDtdPtr dtd, + const xmlChar *name); +XMLPUBFUN xmlElementPtr XMLCALL + xmlGetDtdQElementDesc (xmlDtdPtr dtd, + const xmlChar *name, + const xmlChar *prefix); +XMLPUBFUN xmlElementPtr XMLCALL + xmlGetDtdElementDesc (xmlDtdPtr dtd, + const xmlChar *name); + +#ifdef LIBXML_VALID_ENABLED + +XMLPUBFUN int XMLCALL + xmlValidGetPotentialChildren(xmlElementContent *ctree, + const xmlChar **names, + int *len, + int max); + +XMLPUBFUN int XMLCALL + xmlValidGetValidElements(xmlNode *prev, + xmlNode *next, + const xmlChar **names, + int max); +XMLPUBFUN int XMLCALL + xmlValidateNameValue (const xmlChar *value); +XMLPUBFUN int XMLCALL + xmlValidateNamesValue (const xmlChar *value); +XMLPUBFUN int XMLCALL + xmlValidateNmtokenValue (const xmlChar *value); +XMLPUBFUN int XMLCALL + xmlValidateNmtokensValue(const xmlChar *value); + +#ifdef LIBXML_REGEXP_ENABLED +/* + * Validation based on the regexp support + */ +XMLPUBFUN int XMLCALL + xmlValidBuildContentModel(xmlValidCtxtPtr ctxt, + xmlElementPtr elem); + +XMLPUBFUN int XMLCALL + xmlValidatePushElement (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem, + const xmlChar *qname); +XMLPUBFUN int XMLCALL + xmlValidatePushCData (xmlValidCtxtPtr ctxt, + const xmlChar *data, + int len); +XMLPUBFUN int XMLCALL + xmlValidatePopElement (xmlValidCtxtPtr ctxt, + xmlDocPtr doc, + xmlNodePtr elem, + const xmlChar *qname); +#endif /* LIBXML_REGEXP_ENABLED */ +#endif /* LIBXML_VALID_ENABLED */ +#ifdef __cplusplus +} +#endif +#endif /* __XML_VALID_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xinclude.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xinclude.h new file mode 100644 index 0000000..863ab25 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xinclude.h @@ -0,0 +1,129 @@ +/* + * Summary: implementation of XInclude + * Description: API to handle XInclude processing, + * implements the + * World Wide Web Consortium Last Call Working Draft 10 November 2003 + * http://www.w3.org/TR/2003/WD-xinclude-20031110 + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_XINCLUDE_H__ +#define __XML_XINCLUDE_H__ + +#include +#include + +#ifdef LIBXML_XINCLUDE_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * XINCLUDE_NS: + * + * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude + */ +#define XINCLUDE_NS (const xmlChar *) "http://www.w3.org/2003/XInclude" +/** + * XINCLUDE_OLD_NS: + * + * Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude + */ +#define XINCLUDE_OLD_NS (const xmlChar *) "http://www.w3.org/2001/XInclude" +/** + * XINCLUDE_NODE: + * + * Macro defining "include" + */ +#define XINCLUDE_NODE (const xmlChar *) "include" +/** + * XINCLUDE_FALLBACK: + * + * Macro defining "fallback" + */ +#define XINCLUDE_FALLBACK (const xmlChar *) "fallback" +/** + * XINCLUDE_HREF: + * + * Macro defining "href" + */ +#define XINCLUDE_HREF (const xmlChar *) "href" +/** + * XINCLUDE_PARSE: + * + * Macro defining "parse" + */ +#define XINCLUDE_PARSE (const xmlChar *) "parse" +/** + * XINCLUDE_PARSE_XML: + * + * Macro defining "xml" + */ +#define XINCLUDE_PARSE_XML (const xmlChar *) "xml" +/** + * XINCLUDE_PARSE_TEXT: + * + * Macro defining "text" + */ +#define XINCLUDE_PARSE_TEXT (const xmlChar *) "text" +/** + * XINCLUDE_PARSE_ENCODING: + * + * Macro defining "encoding" + */ +#define XINCLUDE_PARSE_ENCODING (const xmlChar *) "encoding" +/** + * XINCLUDE_PARSE_XPOINTER: + * + * Macro defining "xpointer" + */ +#define XINCLUDE_PARSE_XPOINTER (const xmlChar *) "xpointer" + +typedef struct _xmlXIncludeCtxt xmlXIncludeCtxt; +typedef xmlXIncludeCtxt *xmlXIncludeCtxtPtr; + +/* + * standalone processing + */ +XMLPUBFUN int XMLCALL + xmlXIncludeProcess (xmlDocPtr doc); +XMLPUBFUN int XMLCALL + xmlXIncludeProcessFlags (xmlDocPtr doc, + int flags); +XMLPUBFUN int XMLCALL + xmlXIncludeProcessFlagsData(xmlDocPtr doc, + int flags, + void *data); +XMLPUBFUN int XMLCALL + xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, + int flags, + void *data); +XMLPUBFUN int XMLCALL + xmlXIncludeProcessTree (xmlNodePtr tree); +XMLPUBFUN int XMLCALL + xmlXIncludeProcessTreeFlags(xmlNodePtr tree, + int flags); +/* + * contextual processing + */ +XMLPUBFUN xmlXIncludeCtxtPtr XMLCALL + xmlXIncludeNewContext (xmlDocPtr doc); +XMLPUBFUN int XMLCALL + xmlXIncludeSetFlags (xmlXIncludeCtxtPtr ctxt, + int flags); +XMLPUBFUN void XMLCALL + xmlXIncludeFreeContext (xmlXIncludeCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlXIncludeProcessNode (xmlXIncludeCtxtPtr ctxt, + xmlNodePtr tree); +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_XINCLUDE_ENABLED */ + +#endif /* __XML_XINCLUDE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xlink.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xlink.h new file mode 100644 index 0000000..04e4b32 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xlink.h @@ -0,0 +1,189 @@ +/* + * Summary: unfinished XLink detection module + * Description: unfinished XLink detection module + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_XLINK_H__ +#define __XML_XLINK_H__ + +#include +#include + +#ifdef LIBXML_XPTR_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Various defines for the various Link properties. + * + * NOTE: the link detection layer will try to resolve QName expansion + * of namespaces. If "foo" is the prefix for "http://foo.com/" + * then the link detection layer will expand role="foo:myrole" + * to "http://foo.com/:myrole". + * NOTE: the link detection layer will expand URI-References found on + * href attributes by using the base mechanism if found. + */ +typedef xmlChar *xlinkHRef; +typedef xmlChar *xlinkRole; +typedef xmlChar *xlinkTitle; + +typedef enum { + XLINK_TYPE_NONE = 0, + XLINK_TYPE_SIMPLE, + XLINK_TYPE_EXTENDED, + XLINK_TYPE_EXTENDED_SET +} xlinkType; + +typedef enum { + XLINK_SHOW_NONE = 0, + XLINK_SHOW_NEW, + XLINK_SHOW_EMBED, + XLINK_SHOW_REPLACE +} xlinkShow; + +typedef enum { + XLINK_ACTUATE_NONE = 0, + XLINK_ACTUATE_AUTO, + XLINK_ACTUATE_ONREQUEST +} xlinkActuate; + +/** + * xlinkNodeDetectFunc: + * @ctx: user data pointer + * @node: the node to check + * + * This is the prototype for the link detection routine. + * It calls the default link detection callbacks upon link detection. + */ +typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node); + +/* + * The link detection module interact with the upper layers using + * a set of callback registered at parsing time. + */ + +/** + * xlinkSimpleLinkFunk: + * @ctx: user data pointer + * @node: the node carrying the link + * @href: the target of the link + * @role: the role string + * @title: the link title + * + * This is the prototype for a simple link detection callback. + */ +typedef void +(*xlinkSimpleLinkFunk) (void *ctx, + xmlNodePtr node, + const xlinkHRef href, + const xlinkRole role, + const xlinkTitle title); + +/** + * xlinkExtendedLinkFunk: + * @ctx: user data pointer + * @node: the node carrying the link + * @nbLocators: the number of locators detected on the link + * @hrefs: pointer to the array of locator hrefs + * @roles: pointer to the array of locator roles + * @nbArcs: the number of arcs detected on the link + * @from: pointer to the array of source roles found on the arcs + * @to: pointer to the array of target roles found on the arcs + * @show: array of values for the show attributes found on the arcs + * @actuate: array of values for the actuate attributes found on the arcs + * @nbTitles: the number of titles detected on the link + * @title: array of titles detected on the link + * @langs: array of xml:lang values for the titles + * + * This is the prototype for a extended link detection callback. + */ +typedef void +(*xlinkExtendedLinkFunk)(void *ctx, + xmlNodePtr node, + int nbLocators, + const xlinkHRef *hrefs, + const xlinkRole *roles, + int nbArcs, + const xlinkRole *from, + const xlinkRole *to, + xlinkShow *show, + xlinkActuate *actuate, + int nbTitles, + const xlinkTitle *titles, + const xmlChar **langs); + +/** + * xlinkExtendedLinkSetFunk: + * @ctx: user data pointer + * @node: the node carrying the link + * @nbLocators: the number of locators detected on the link + * @hrefs: pointer to the array of locator hrefs + * @roles: pointer to the array of locator roles + * @nbTitles: the number of titles detected on the link + * @title: array of titles detected on the link + * @langs: array of xml:lang values for the titles + * + * This is the prototype for a extended link set detection callback. + */ +typedef void +(*xlinkExtendedLinkSetFunk) (void *ctx, + xmlNodePtr node, + int nbLocators, + const xlinkHRef *hrefs, + const xlinkRole *roles, + int nbTitles, + const xlinkTitle *titles, + const xmlChar **langs); + +/** + * This is the structure containing a set of Links detection callbacks. + * + * There is no default xlink callbacks, if one want to get link + * recognition activated, those call backs must be provided before parsing. + */ +typedef struct _xlinkHandler xlinkHandler; +typedef xlinkHandler *xlinkHandlerPtr; +struct _xlinkHandler { + xlinkSimpleLinkFunk simple; + xlinkExtendedLinkFunk extended; + xlinkExtendedLinkSetFunk set; +}; + +/* + * The default detection routine, can be overridden, they call the default + * detection callbacks. + */ + +XMLPUBFUN xlinkNodeDetectFunc XMLCALL + xlinkGetDefaultDetect (void); +XMLPUBFUN void XMLCALL + xlinkSetDefaultDetect (xlinkNodeDetectFunc func); + +/* + * Routines to set/get the default handlers. + */ +XMLPUBFUN xlinkHandlerPtr XMLCALL + xlinkGetDefaultHandler (void); +XMLPUBFUN void XMLCALL + xlinkSetDefaultHandler (xlinkHandlerPtr handler); + +/* + * Link detection module itself. + */ +XMLPUBFUN xlinkType XMLCALL + xlinkIsLink (xmlDocPtr doc, + xmlNodePtr node); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_XPTR_ENABLED */ + +#endif /* __XML_XLINK_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlIO.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlIO.h new file mode 100644 index 0000000..095b2f5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlIO.h @@ -0,0 +1,368 @@ +/* + * Summary: interface for the I/O interfaces used by the parser + * Description: interface for the I/O interfaces used by the parser + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_IO_H__ +#define __XML_IO_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Those are the functions and datatypes for the parser input + * I/O structures. + */ + +/** + * xmlInputMatchCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Input API to detect if the current handler + * can provide input functionality for this resource. + * + * Returns 1 if yes and 0 if another Input module should be used + */ +typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename); +/** + * xmlInputOpenCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Input API to open the resource + * + * Returns an Input context or NULL in case or error + */ +typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename); +/** + * xmlInputReadCallback: + * @context: an Input context + * @buffer: the buffer to store data read + * @len: the length of the buffer in bytes + * + * Callback used in the I/O Input API to read the resource + * + * Returns the number of bytes read or -1 in case of error + */ +typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len); +/** + * xmlInputCloseCallback: + * @context: an Input context + * + * Callback used in the I/O Input API to close the resource + * + * Returns 0 or -1 in case of error + */ +typedef int (XMLCALL *xmlInputCloseCallback) (void * context); + +#ifdef LIBXML_OUTPUT_ENABLED +/* + * Those are the functions and datatypes for the library output + * I/O structures. + */ + +/** + * xmlOutputMatchCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Output API to detect if the current handler + * can provide output functionality for this resource. + * + * Returns 1 if yes and 0 if another Output module should be used + */ +typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename); +/** + * xmlOutputOpenCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Output API to open the resource + * + * Returns an Output context or NULL in case or error + */ +typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename); +/** + * xmlOutputWriteCallback: + * @context: an Output context + * @buffer: the buffer of data to write + * @len: the length of the buffer in bytes + * + * Callback used in the I/O Output API to write to the resource + * + * Returns the number of bytes written or -1 in case of error + */ +typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer, + int len); +/** + * xmlOutputCloseCallback: + * @context: an Output context + * + * Callback used in the I/O Output API to close the resource + * + * Returns 0 or -1 in case of error + */ +typedef int (XMLCALL *xmlOutputCloseCallback) (void * context); +#endif /* LIBXML_OUTPUT_ENABLED */ + +#ifdef __cplusplus +} +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +struct _xmlParserInputBuffer { + void* context; + xmlInputReadCallback readcallback; + xmlInputCloseCallback closecallback; + + xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ + + xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */ + xmlBufPtr raw; /* if encoder != NULL buffer for raw input */ + int compressed; /* -1=unknown, 0=not compressed, 1=compressed */ + int error; + unsigned long rawconsumed;/* amount consumed from raw */ +}; + + +#ifdef LIBXML_OUTPUT_ENABLED +struct _xmlOutputBuffer { + void* context; + xmlOutputWriteCallback writecallback; + xmlOutputCloseCallback closecallback; + + xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ + + xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ + xmlBufPtr conv; /* if encoder != NULL buffer for output */ + int written; /* total number of byte written */ + int error; +}; +#endif /* LIBXML_OUTPUT_ENABLED */ + +/* + * Interfaces for input + */ +XMLPUBFUN void XMLCALL + xmlCleanupInputCallbacks (void); + +XMLPUBFUN int XMLCALL + xmlPopInputCallbacks (void); + +XMLPUBFUN void XMLCALL + xmlRegisterDefaultInputCallbacks (void); +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlAllocParserInputBuffer (xmlCharEncoding enc); + +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlParserInputBufferCreateFilename (const char *URI, + xmlCharEncoding enc); +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlParserInputBufferCreateFile (FILE *file, + xmlCharEncoding enc); +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlParserInputBufferCreateFd (int fd, + xmlCharEncoding enc); +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlParserInputBufferCreateMem (const char *mem, int size, + xmlCharEncoding enc); +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlParserInputBufferCreateStatic (const char *mem, int size, + xmlCharEncoding enc); +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlParserInputBufferCreateIO (xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + xmlCharEncoding enc); +XMLPUBFUN int XMLCALL + xmlParserInputBufferRead (xmlParserInputBufferPtr in, + int len); +XMLPUBFUN int XMLCALL + xmlParserInputBufferGrow (xmlParserInputBufferPtr in, + int len); +XMLPUBFUN int XMLCALL + xmlParserInputBufferPush (xmlParserInputBufferPtr in, + int len, + const char *buf); +XMLPUBFUN void XMLCALL + xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); +XMLPUBFUN char * XMLCALL + xmlParserGetDirectory (const char *filename); + +XMLPUBFUN int XMLCALL + xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc, + xmlInputOpenCallback openFunc, + xmlInputReadCallback readFunc, + xmlInputCloseCallback closeFunc); + +xmlParserInputBufferPtr + __xmlParserInputBufferCreateFilename(const char *URI, + xmlCharEncoding enc); + +#ifdef LIBXML_OUTPUT_ENABLED +/* + * Interfaces for output + */ +XMLPUBFUN void XMLCALL + xmlCleanupOutputCallbacks (void); +XMLPUBFUN int XMLCALL + xmlPopOutputCallbacks (void); +XMLPUBFUN void XMLCALL + xmlRegisterDefaultOutputCallbacks(void); +XMLPUBFUN xmlOutputBufferPtr XMLCALL + xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder); + +XMLPUBFUN xmlOutputBufferPtr XMLCALL + xmlOutputBufferCreateFilename (const char *URI, + xmlCharEncodingHandlerPtr encoder, + int compression); + +XMLPUBFUN xmlOutputBufferPtr XMLCALL + xmlOutputBufferCreateFile (FILE *file, + xmlCharEncodingHandlerPtr encoder); + +XMLPUBFUN xmlOutputBufferPtr XMLCALL + xmlOutputBufferCreateBuffer (xmlBufferPtr buffer, + xmlCharEncodingHandlerPtr encoder); + +XMLPUBFUN xmlOutputBufferPtr XMLCALL + xmlOutputBufferCreateFd (int fd, + xmlCharEncodingHandlerPtr encoder); + +XMLPUBFUN xmlOutputBufferPtr XMLCALL + xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite, + xmlOutputCloseCallback ioclose, + void *ioctx, + xmlCharEncodingHandlerPtr encoder); + +/* Couple of APIs to get the output without digging into the buffers */ +XMLPUBFUN const xmlChar * XMLCALL + xmlOutputBufferGetContent (xmlOutputBufferPtr out); +XMLPUBFUN size_t XMLCALL + xmlOutputBufferGetSize (xmlOutputBufferPtr out); + +XMLPUBFUN int XMLCALL + xmlOutputBufferWrite (xmlOutputBufferPtr out, + int len, + const char *buf); +XMLPUBFUN int XMLCALL + xmlOutputBufferWriteString (xmlOutputBufferPtr out, + const char *str); +XMLPUBFUN int XMLCALL + xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, + const xmlChar *str, + xmlCharEncodingOutputFunc escaping); + +XMLPUBFUN int XMLCALL + xmlOutputBufferFlush (xmlOutputBufferPtr out); +XMLPUBFUN int XMLCALL + xmlOutputBufferClose (xmlOutputBufferPtr out); + +XMLPUBFUN int XMLCALL + xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, + xmlOutputOpenCallback openFunc, + xmlOutputWriteCallback writeFunc, + xmlOutputCloseCallback closeFunc); + +xmlOutputBufferPtr + __xmlOutputBufferCreateFilename(const char *URI, + xmlCharEncodingHandlerPtr encoder, + int compression); + +#ifdef LIBXML_HTTP_ENABLED +/* This function only exists if HTTP support built into the library */ +XMLPUBFUN void XMLCALL + xmlRegisterHTTPPostCallbacks (void ); +#endif /* LIBXML_HTTP_ENABLED */ + +#endif /* LIBXML_OUTPUT_ENABLED */ + +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, + xmlParserInputPtr ret); + +/* + * A predefined entity loader disabling network accesses + */ +XMLPUBFUN xmlParserInputPtr XMLCALL + xmlNoNetExternalEntityLoader (const char *URL, + const char *ID, + xmlParserCtxtPtr ctxt); + +/* + * xmlNormalizeWindowsPath is obsolete, don't use it. + * Check xmlCanonicPath in uri.h for a better alternative. + */ +XMLPUBFUN xmlChar * XMLCALL + xmlNormalizeWindowsPath (const xmlChar *path); + +XMLPUBFUN int XMLCALL + xmlCheckFilename (const char *path); +/** + * Default 'file://' protocol callbacks + */ +XMLPUBFUN int XMLCALL + xmlFileMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlFileOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlFileRead (void * context, + char * buffer, + int len); +XMLPUBFUN int XMLCALL + xmlFileClose (void * context); + +/** + * Default 'http://' protocol callbacks + */ +#ifdef LIBXML_HTTP_ENABLED +XMLPUBFUN int XMLCALL + xmlIOHTTPMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlIOHTTPOpen (const char *filename); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void * XMLCALL + xmlIOHTTPOpenW (const char * post_uri, + int compression ); +#endif /* LIBXML_OUTPUT_ENABLED */ +XMLPUBFUN int XMLCALL + xmlIOHTTPRead (void * context, + char * buffer, + int len); +XMLPUBFUN int XMLCALL + xmlIOHTTPClose (void * context); +#endif /* LIBXML_HTTP_ENABLED */ + +/** + * Default 'ftp://' protocol callbacks + */ +#ifdef LIBXML_FTP_ENABLED +XMLPUBFUN int XMLCALL + xmlIOFTPMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlIOFTPOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlIOFTPRead (void * context, + char * buffer, + int len); +XMLPUBFUN int XMLCALL + xmlIOFTPClose (void * context); +#endif /* LIBXML_FTP_ENABLED */ + +#ifdef __cplusplus +} +#endif + +#endif /* __XML_IO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlautomata.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlautomata.h new file mode 100644 index 0000000..bf1b131 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlautomata.h @@ -0,0 +1,146 @@ +/* + * Summary: API to build regexp automata + * Description: the API to build regexp automata + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_AUTOMATA_H__ +#define __XML_AUTOMATA_H__ + +#include +#include + +#ifdef LIBXML_REGEXP_ENABLED +#ifdef LIBXML_AUTOMATA_ENABLED +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlAutomataPtr: + * + * A libxml automata description, It can be compiled into a regexp + */ +typedef struct _xmlAutomata xmlAutomata; +typedef xmlAutomata *xmlAutomataPtr; + +/** + * xmlAutomataStatePtr: + * + * A state int the automata description, + */ +typedef struct _xmlAutomataState xmlAutomataState; +typedef xmlAutomataState *xmlAutomataStatePtr; + +/* + * Building API + */ +XMLPUBFUN xmlAutomataPtr XMLCALL + xmlNewAutomata (void); +XMLPUBFUN void XMLCALL + xmlFreeAutomata (xmlAutomataPtr am); + +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataGetInitState (xmlAutomataPtr am); +XMLPUBFUN int XMLCALL + xmlAutomataSetFinalState (xmlAutomataPtr am, + xmlAutomataStatePtr state); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewState (xmlAutomataPtr am); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewTransition (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + void *data); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewTransition2 (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + const xmlChar *token2, + void *data); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewNegTrans (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + const xmlChar *token2, + void *data); + +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewCountTrans (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + int min, + int max, + void *data); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewCountTrans2 (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + const xmlChar *token2, + int min, + int max, + void *data); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewOnceTrans (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + int min, + int max, + void *data); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewOnceTrans2 (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + const xmlChar *token2, + int min, + int max, + void *data); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewAllTrans (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + int lax); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewEpsilon (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewCountedTrans (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + int counter); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewCounterTrans (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + int counter); +XMLPUBFUN int XMLCALL + xmlAutomataNewCounter (xmlAutomataPtr am, + int min, + int max); + +XMLPUBFUN xmlRegexpPtr XMLCALL + xmlAutomataCompile (xmlAutomataPtr am); +XMLPUBFUN int XMLCALL + xmlAutomataIsDeterminist (xmlAutomataPtr am); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_AUTOMATA_ENABLED */ +#endif /* LIBXML_REGEXP_ENABLED */ + +#endif /* __XML_AUTOMATA_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlerror.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlerror.h new file mode 100644 index 0000000..ee95be9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlerror.h @@ -0,0 +1,947 @@ +/* + * Summary: error handling + * Description: the API used to report errors + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#include + +#ifndef __XML_ERROR_H__ +#define __XML_ERROR_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlErrorLevel: + * + * Indicates the level of an error + */ +typedef enum { + XML_ERR_NONE = 0, + XML_ERR_WARNING = 1, /* A simple warning */ + XML_ERR_ERROR = 2, /* A recoverable error */ + XML_ERR_FATAL = 3 /* A fatal error */ +} xmlErrorLevel; + +/** + * xmlErrorDomain: + * + * Indicates where an error may have come from + */ +typedef enum { + XML_FROM_NONE = 0, + XML_FROM_PARSER, /* The XML parser */ + XML_FROM_TREE, /* The tree module */ + XML_FROM_NAMESPACE, /* The XML Namespace module */ + XML_FROM_DTD, /* The XML DTD validation with parser context*/ + XML_FROM_HTML, /* The HTML parser */ + XML_FROM_MEMORY, /* The memory allocator */ + XML_FROM_OUTPUT, /* The serialization code */ + XML_FROM_IO, /* The Input/Output stack */ + XML_FROM_FTP, /* The FTP module */ + XML_FROM_HTTP, /* The HTTP module */ + XML_FROM_XINCLUDE, /* The XInclude processing */ + XML_FROM_XPATH, /* The XPath module */ + XML_FROM_XPOINTER, /* The XPointer module */ + XML_FROM_REGEXP, /* The regular expressions module */ + XML_FROM_DATATYPE, /* The W3C XML Schemas Datatype module */ + XML_FROM_SCHEMASP, /* The W3C XML Schemas parser module */ + XML_FROM_SCHEMASV, /* The W3C XML Schemas validation module */ + XML_FROM_RELAXNGP, /* The Relax-NG parser module */ + XML_FROM_RELAXNGV, /* The Relax-NG validator module */ + XML_FROM_CATALOG, /* The Catalog module */ + XML_FROM_C14N, /* The Canonicalization module */ + XML_FROM_XSLT, /* The XSLT engine from libxslt */ + XML_FROM_VALID, /* The XML DTD validation with valid context */ + XML_FROM_CHECK, /* The error checking module */ + XML_FROM_WRITER, /* The xmlwriter module */ + XML_FROM_MODULE, /* The dynamically loaded module module*/ + XML_FROM_I18N, /* The module handling character conversion */ + XML_FROM_SCHEMATRONV,/* The Schematron validator module */ + XML_FROM_BUFFER, /* The buffers module */ + XML_FROM_URI /* The URI module */ +} xmlErrorDomain; + +/** + * xmlError: + * + * An XML Error instance. + */ + +typedef struct _xmlError xmlError; +typedef xmlError *xmlErrorPtr; +struct _xmlError { + int domain; /* What part of the library raised this error */ + int code; /* The error code, e.g. an xmlParserError */ + char *message;/* human-readable informative error message */ + xmlErrorLevel level;/* how consequent is the error */ + char *file; /* the filename */ + int line; /* the line number if available */ + char *str1; /* extra string information */ + char *str2; /* extra string information */ + char *str3; /* extra string information */ + int int1; /* extra number information */ + int int2; /* error column # or 0 if N/A (todo: rename field when we would brk ABI) */ + void *ctxt; /* the parser context if available */ + void *node; /* the node in the tree */ +}; + +/** + * xmlParserError: + * + * This is an error that the XML (or HTML) parser can generate + */ +typedef enum { + XML_ERR_OK = 0, + XML_ERR_INTERNAL_ERROR, /* 1 */ + XML_ERR_NO_MEMORY, /* 2 */ + XML_ERR_DOCUMENT_START, /* 3 */ + XML_ERR_DOCUMENT_EMPTY, /* 4 */ + XML_ERR_DOCUMENT_END, /* 5 */ + XML_ERR_INVALID_HEX_CHARREF, /* 6 */ + XML_ERR_INVALID_DEC_CHARREF, /* 7 */ + XML_ERR_INVALID_CHARREF, /* 8 */ + XML_ERR_INVALID_CHAR, /* 9 */ + XML_ERR_CHARREF_AT_EOF, /* 10 */ + XML_ERR_CHARREF_IN_PROLOG, /* 11 */ + XML_ERR_CHARREF_IN_EPILOG, /* 12 */ + XML_ERR_CHARREF_IN_DTD, /* 13 */ + XML_ERR_ENTITYREF_AT_EOF, /* 14 */ + XML_ERR_ENTITYREF_IN_PROLOG, /* 15 */ + XML_ERR_ENTITYREF_IN_EPILOG, /* 16 */ + XML_ERR_ENTITYREF_IN_DTD, /* 17 */ + XML_ERR_PEREF_AT_EOF, /* 18 */ + XML_ERR_PEREF_IN_PROLOG, /* 19 */ + XML_ERR_PEREF_IN_EPILOG, /* 20 */ + XML_ERR_PEREF_IN_INT_SUBSET, /* 21 */ + XML_ERR_ENTITYREF_NO_NAME, /* 22 */ + XML_ERR_ENTITYREF_SEMICOL_MISSING, /* 23 */ + XML_ERR_PEREF_NO_NAME, /* 24 */ + XML_ERR_PEREF_SEMICOL_MISSING, /* 25 */ + XML_ERR_UNDECLARED_ENTITY, /* 26 */ + XML_WAR_UNDECLARED_ENTITY, /* 27 */ + XML_ERR_UNPARSED_ENTITY, /* 28 */ + XML_ERR_ENTITY_IS_EXTERNAL, /* 29 */ + XML_ERR_ENTITY_IS_PARAMETER, /* 30 */ + XML_ERR_UNKNOWN_ENCODING, /* 31 */ + XML_ERR_UNSUPPORTED_ENCODING, /* 32 */ + XML_ERR_STRING_NOT_STARTED, /* 33 */ + XML_ERR_STRING_NOT_CLOSED, /* 34 */ + XML_ERR_NS_DECL_ERROR, /* 35 */ + XML_ERR_ENTITY_NOT_STARTED, /* 36 */ + XML_ERR_ENTITY_NOT_FINISHED, /* 37 */ + XML_ERR_LT_IN_ATTRIBUTE, /* 38 */ + XML_ERR_ATTRIBUTE_NOT_STARTED, /* 39 */ + XML_ERR_ATTRIBUTE_NOT_FINISHED, /* 40 */ + XML_ERR_ATTRIBUTE_WITHOUT_VALUE, /* 41 */ + XML_ERR_ATTRIBUTE_REDEFINED, /* 42 */ + XML_ERR_LITERAL_NOT_STARTED, /* 43 */ + XML_ERR_LITERAL_NOT_FINISHED, /* 44 */ + XML_ERR_COMMENT_NOT_FINISHED, /* 45 */ + XML_ERR_PI_NOT_STARTED, /* 46 */ + XML_ERR_PI_NOT_FINISHED, /* 47 */ + XML_ERR_NOTATION_NOT_STARTED, /* 48 */ + XML_ERR_NOTATION_NOT_FINISHED, /* 49 */ + XML_ERR_ATTLIST_NOT_STARTED, /* 50 */ + XML_ERR_ATTLIST_NOT_FINISHED, /* 51 */ + XML_ERR_MIXED_NOT_STARTED, /* 52 */ + XML_ERR_MIXED_NOT_FINISHED, /* 53 */ + XML_ERR_ELEMCONTENT_NOT_STARTED, /* 54 */ + XML_ERR_ELEMCONTENT_NOT_FINISHED, /* 55 */ + XML_ERR_XMLDECL_NOT_STARTED, /* 56 */ + XML_ERR_XMLDECL_NOT_FINISHED, /* 57 */ + XML_ERR_CONDSEC_NOT_STARTED, /* 58 */ + XML_ERR_CONDSEC_NOT_FINISHED, /* 59 */ + XML_ERR_EXT_SUBSET_NOT_FINISHED, /* 60 */ + XML_ERR_DOCTYPE_NOT_FINISHED, /* 61 */ + XML_ERR_MISPLACED_CDATA_END, /* 62 */ + XML_ERR_CDATA_NOT_FINISHED, /* 63 */ + XML_ERR_RESERVED_XML_NAME, /* 64 */ + XML_ERR_SPACE_REQUIRED, /* 65 */ + XML_ERR_SEPARATOR_REQUIRED, /* 66 */ + XML_ERR_NMTOKEN_REQUIRED, /* 67 */ + XML_ERR_NAME_REQUIRED, /* 68 */ + XML_ERR_PCDATA_REQUIRED, /* 69 */ + XML_ERR_URI_REQUIRED, /* 70 */ + XML_ERR_PUBID_REQUIRED, /* 71 */ + XML_ERR_LT_REQUIRED, /* 72 */ + XML_ERR_GT_REQUIRED, /* 73 */ + XML_ERR_LTSLASH_REQUIRED, /* 74 */ + XML_ERR_EQUAL_REQUIRED, /* 75 */ + XML_ERR_TAG_NAME_MISMATCH, /* 76 */ + XML_ERR_TAG_NOT_FINISHED, /* 77 */ + XML_ERR_STANDALONE_VALUE, /* 78 */ + XML_ERR_ENCODING_NAME, /* 79 */ + XML_ERR_HYPHEN_IN_COMMENT, /* 80 */ + XML_ERR_INVALID_ENCODING, /* 81 */ + XML_ERR_EXT_ENTITY_STANDALONE, /* 82 */ + XML_ERR_CONDSEC_INVALID, /* 83 */ + XML_ERR_VALUE_REQUIRED, /* 84 */ + XML_ERR_NOT_WELL_BALANCED, /* 85 */ + XML_ERR_EXTRA_CONTENT, /* 86 */ + XML_ERR_ENTITY_CHAR_ERROR, /* 87 */ + XML_ERR_ENTITY_PE_INTERNAL, /* 88 */ + XML_ERR_ENTITY_LOOP, /* 89 */ + XML_ERR_ENTITY_BOUNDARY, /* 90 */ + XML_ERR_INVALID_URI, /* 91 */ + XML_ERR_URI_FRAGMENT, /* 92 */ + XML_WAR_CATALOG_PI, /* 93 */ + XML_ERR_NO_DTD, /* 94 */ + XML_ERR_CONDSEC_INVALID_KEYWORD, /* 95 */ + XML_ERR_VERSION_MISSING, /* 96 */ + XML_WAR_UNKNOWN_VERSION, /* 97 */ + XML_WAR_LANG_VALUE, /* 98 */ + XML_WAR_NS_URI, /* 99 */ + XML_WAR_NS_URI_RELATIVE, /* 100 */ + XML_ERR_MISSING_ENCODING, /* 101 */ + XML_WAR_SPACE_VALUE, /* 102 */ + XML_ERR_NOT_STANDALONE, /* 103 */ + XML_ERR_ENTITY_PROCESSING, /* 104 */ + XML_ERR_NOTATION_PROCESSING, /* 105 */ + XML_WAR_NS_COLUMN, /* 106 */ + XML_WAR_ENTITY_REDEFINED, /* 107 */ + XML_ERR_UNKNOWN_VERSION, /* 108 */ + XML_ERR_VERSION_MISMATCH, /* 109 */ + XML_ERR_NAME_TOO_LONG, /* 110 */ + XML_ERR_USER_STOP, /* 111 */ + XML_ERR_COMMENT_ABRUPTLY_ENDED, /* 112 */ + XML_NS_ERR_XML_NAMESPACE = 200, + XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */ + XML_NS_ERR_QNAME, /* 202 */ + XML_NS_ERR_ATTRIBUTE_REDEFINED, /* 203 */ + XML_NS_ERR_EMPTY, /* 204 */ + XML_NS_ERR_COLON, /* 205 */ + XML_DTD_ATTRIBUTE_DEFAULT = 500, + XML_DTD_ATTRIBUTE_REDEFINED, /* 501 */ + XML_DTD_ATTRIBUTE_VALUE, /* 502 */ + XML_DTD_CONTENT_ERROR, /* 503 */ + XML_DTD_CONTENT_MODEL, /* 504 */ + XML_DTD_CONTENT_NOT_DETERMINIST, /* 505 */ + XML_DTD_DIFFERENT_PREFIX, /* 506 */ + XML_DTD_ELEM_DEFAULT_NAMESPACE, /* 507 */ + XML_DTD_ELEM_NAMESPACE, /* 508 */ + XML_DTD_ELEM_REDEFINED, /* 509 */ + XML_DTD_EMPTY_NOTATION, /* 510 */ + XML_DTD_ENTITY_TYPE, /* 511 */ + XML_DTD_ID_FIXED, /* 512 */ + XML_DTD_ID_REDEFINED, /* 513 */ + XML_DTD_ID_SUBSET, /* 514 */ + XML_DTD_INVALID_CHILD, /* 515 */ + XML_DTD_INVALID_DEFAULT, /* 516 */ + XML_DTD_LOAD_ERROR, /* 517 */ + XML_DTD_MISSING_ATTRIBUTE, /* 518 */ + XML_DTD_MIXED_CORRUPT, /* 519 */ + XML_DTD_MULTIPLE_ID, /* 520 */ + XML_DTD_NO_DOC, /* 521 */ + XML_DTD_NO_DTD, /* 522 */ + XML_DTD_NO_ELEM_NAME, /* 523 */ + XML_DTD_NO_PREFIX, /* 524 */ + XML_DTD_NO_ROOT, /* 525 */ + XML_DTD_NOTATION_REDEFINED, /* 526 */ + XML_DTD_NOTATION_VALUE, /* 527 */ + XML_DTD_NOT_EMPTY, /* 528 */ + XML_DTD_NOT_PCDATA, /* 529 */ + XML_DTD_NOT_STANDALONE, /* 530 */ + XML_DTD_ROOT_NAME, /* 531 */ + XML_DTD_STANDALONE_WHITE_SPACE, /* 532 */ + XML_DTD_UNKNOWN_ATTRIBUTE, /* 533 */ + XML_DTD_UNKNOWN_ELEM, /* 534 */ + XML_DTD_UNKNOWN_ENTITY, /* 535 */ + XML_DTD_UNKNOWN_ID, /* 536 */ + XML_DTD_UNKNOWN_NOTATION, /* 537 */ + XML_DTD_STANDALONE_DEFAULTED, /* 538 */ + XML_DTD_XMLID_VALUE, /* 539 */ + XML_DTD_XMLID_TYPE, /* 540 */ + XML_DTD_DUP_TOKEN, /* 541 */ + XML_HTML_STRUCURE_ERROR = 800, + XML_HTML_UNKNOWN_TAG, /* 801 */ + XML_HTML_INCORRECTLY_OPENED_COMMENT, /* 802 */ + XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000, + XML_RNGP_ATTR_CONFLICT, /* 1001 */ + XML_RNGP_ATTRIBUTE_CHILDREN, /* 1002 */ + XML_RNGP_ATTRIBUTE_CONTENT, /* 1003 */ + XML_RNGP_ATTRIBUTE_EMPTY, /* 1004 */ + XML_RNGP_ATTRIBUTE_NOOP, /* 1005 */ + XML_RNGP_CHOICE_CONTENT, /* 1006 */ + XML_RNGP_CHOICE_EMPTY, /* 1007 */ + XML_RNGP_CREATE_FAILURE, /* 1008 */ + XML_RNGP_DATA_CONTENT, /* 1009 */ + XML_RNGP_DEF_CHOICE_AND_INTERLEAVE, /* 1010 */ + XML_RNGP_DEFINE_CREATE_FAILED, /* 1011 */ + XML_RNGP_DEFINE_EMPTY, /* 1012 */ + XML_RNGP_DEFINE_MISSING, /* 1013 */ + XML_RNGP_DEFINE_NAME_MISSING, /* 1014 */ + XML_RNGP_ELEM_CONTENT_EMPTY, /* 1015 */ + XML_RNGP_ELEM_CONTENT_ERROR, /* 1016 */ + XML_RNGP_ELEMENT_EMPTY, /* 1017 */ + XML_RNGP_ELEMENT_CONTENT, /* 1018 */ + XML_RNGP_ELEMENT_NAME, /* 1019 */ + XML_RNGP_ELEMENT_NO_CONTENT, /* 1020 */ + XML_RNGP_ELEM_TEXT_CONFLICT, /* 1021 */ + XML_RNGP_EMPTY, /* 1022 */ + XML_RNGP_EMPTY_CONSTRUCT, /* 1023 */ + XML_RNGP_EMPTY_CONTENT, /* 1024 */ + XML_RNGP_EMPTY_NOT_EMPTY, /* 1025 */ + XML_RNGP_ERROR_TYPE_LIB, /* 1026 */ + XML_RNGP_EXCEPT_EMPTY, /* 1027 */ + XML_RNGP_EXCEPT_MISSING, /* 1028 */ + XML_RNGP_EXCEPT_MULTIPLE, /* 1029 */ + XML_RNGP_EXCEPT_NO_CONTENT, /* 1030 */ + XML_RNGP_EXTERNALREF_EMTPY, /* 1031 */ + XML_RNGP_EXTERNAL_REF_FAILURE, /* 1032 */ + XML_RNGP_EXTERNALREF_RECURSE, /* 1033 */ + XML_RNGP_FORBIDDEN_ATTRIBUTE, /* 1034 */ + XML_RNGP_FOREIGN_ELEMENT, /* 1035 */ + XML_RNGP_GRAMMAR_CONTENT, /* 1036 */ + XML_RNGP_GRAMMAR_EMPTY, /* 1037 */ + XML_RNGP_GRAMMAR_MISSING, /* 1038 */ + XML_RNGP_GRAMMAR_NO_START, /* 1039 */ + XML_RNGP_GROUP_ATTR_CONFLICT, /* 1040 */ + XML_RNGP_HREF_ERROR, /* 1041 */ + XML_RNGP_INCLUDE_EMPTY, /* 1042 */ + XML_RNGP_INCLUDE_FAILURE, /* 1043 */ + XML_RNGP_INCLUDE_RECURSE, /* 1044 */ + XML_RNGP_INTERLEAVE_ADD, /* 1045 */ + XML_RNGP_INTERLEAVE_CREATE_FAILED, /* 1046 */ + XML_RNGP_INTERLEAVE_EMPTY, /* 1047 */ + XML_RNGP_INTERLEAVE_NO_CONTENT, /* 1048 */ + XML_RNGP_INVALID_DEFINE_NAME, /* 1049 */ + XML_RNGP_INVALID_URI, /* 1050 */ + XML_RNGP_INVALID_VALUE, /* 1051 */ + XML_RNGP_MISSING_HREF, /* 1052 */ + XML_RNGP_NAME_MISSING, /* 1053 */ + XML_RNGP_NEED_COMBINE, /* 1054 */ + XML_RNGP_NOTALLOWED_NOT_EMPTY, /* 1055 */ + XML_RNGP_NSNAME_ATTR_ANCESTOR, /* 1056 */ + XML_RNGP_NSNAME_NO_NS, /* 1057 */ + XML_RNGP_PARAM_FORBIDDEN, /* 1058 */ + XML_RNGP_PARAM_NAME_MISSING, /* 1059 */ + XML_RNGP_PARENTREF_CREATE_FAILED, /* 1060 */ + XML_RNGP_PARENTREF_NAME_INVALID, /* 1061 */ + XML_RNGP_PARENTREF_NO_NAME, /* 1062 */ + XML_RNGP_PARENTREF_NO_PARENT, /* 1063 */ + XML_RNGP_PARENTREF_NOT_EMPTY, /* 1064 */ + XML_RNGP_PARSE_ERROR, /* 1065 */ + XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME, /* 1066 */ + XML_RNGP_PAT_ATTR_ATTR, /* 1067 */ + XML_RNGP_PAT_ATTR_ELEM, /* 1068 */ + XML_RNGP_PAT_DATA_EXCEPT_ATTR, /* 1069 */ + XML_RNGP_PAT_DATA_EXCEPT_ELEM, /* 1070 */ + XML_RNGP_PAT_DATA_EXCEPT_EMPTY, /* 1071 */ + XML_RNGP_PAT_DATA_EXCEPT_GROUP, /* 1072 */ + XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE, /* 1073 */ + XML_RNGP_PAT_DATA_EXCEPT_LIST, /* 1074 */ + XML_RNGP_PAT_DATA_EXCEPT_ONEMORE, /* 1075 */ + XML_RNGP_PAT_DATA_EXCEPT_REF, /* 1076 */ + XML_RNGP_PAT_DATA_EXCEPT_TEXT, /* 1077 */ + XML_RNGP_PAT_LIST_ATTR, /* 1078 */ + XML_RNGP_PAT_LIST_ELEM, /* 1079 */ + XML_RNGP_PAT_LIST_INTERLEAVE, /* 1080 */ + XML_RNGP_PAT_LIST_LIST, /* 1081 */ + XML_RNGP_PAT_LIST_REF, /* 1082 */ + XML_RNGP_PAT_LIST_TEXT, /* 1083 */ + XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME, /* 1084 */ + XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME, /* 1085 */ + XML_RNGP_PAT_ONEMORE_GROUP_ATTR, /* 1086 */ + XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR, /* 1087 */ + XML_RNGP_PAT_START_ATTR, /* 1088 */ + XML_RNGP_PAT_START_DATA, /* 1089 */ + XML_RNGP_PAT_START_EMPTY, /* 1090 */ + XML_RNGP_PAT_START_GROUP, /* 1091 */ + XML_RNGP_PAT_START_INTERLEAVE, /* 1092 */ + XML_RNGP_PAT_START_LIST, /* 1093 */ + XML_RNGP_PAT_START_ONEMORE, /* 1094 */ + XML_RNGP_PAT_START_TEXT, /* 1095 */ + XML_RNGP_PAT_START_VALUE, /* 1096 */ + XML_RNGP_PREFIX_UNDEFINED, /* 1097 */ + XML_RNGP_REF_CREATE_FAILED, /* 1098 */ + XML_RNGP_REF_CYCLE, /* 1099 */ + XML_RNGP_REF_NAME_INVALID, /* 1100 */ + XML_RNGP_REF_NO_DEF, /* 1101 */ + XML_RNGP_REF_NO_NAME, /* 1102 */ + XML_RNGP_REF_NOT_EMPTY, /* 1103 */ + XML_RNGP_START_CHOICE_AND_INTERLEAVE, /* 1104 */ + XML_RNGP_START_CONTENT, /* 1105 */ + XML_RNGP_START_EMPTY, /* 1106 */ + XML_RNGP_START_MISSING, /* 1107 */ + XML_RNGP_TEXT_EXPECTED, /* 1108 */ + XML_RNGP_TEXT_HAS_CHILD, /* 1109 */ + XML_RNGP_TYPE_MISSING, /* 1110 */ + XML_RNGP_TYPE_NOT_FOUND, /* 1111 */ + XML_RNGP_TYPE_VALUE, /* 1112 */ + XML_RNGP_UNKNOWN_ATTRIBUTE, /* 1113 */ + XML_RNGP_UNKNOWN_COMBINE, /* 1114 */ + XML_RNGP_UNKNOWN_CONSTRUCT, /* 1115 */ + XML_RNGP_UNKNOWN_TYPE_LIB, /* 1116 */ + XML_RNGP_URI_FRAGMENT, /* 1117 */ + XML_RNGP_URI_NOT_ABSOLUTE, /* 1118 */ + XML_RNGP_VALUE_EMPTY, /* 1119 */ + XML_RNGP_VALUE_NO_CONTENT, /* 1120 */ + XML_RNGP_XMLNS_NAME, /* 1121 */ + XML_RNGP_XML_NS, /* 1122 */ + XML_XPATH_EXPRESSION_OK = 1200, + XML_XPATH_NUMBER_ERROR, /* 1201 */ + XML_XPATH_UNFINISHED_LITERAL_ERROR, /* 1202 */ + XML_XPATH_START_LITERAL_ERROR, /* 1203 */ + XML_XPATH_VARIABLE_REF_ERROR, /* 1204 */ + XML_XPATH_UNDEF_VARIABLE_ERROR, /* 1205 */ + XML_XPATH_INVALID_PREDICATE_ERROR, /* 1206 */ + XML_XPATH_EXPR_ERROR, /* 1207 */ + XML_XPATH_UNCLOSED_ERROR, /* 1208 */ + XML_XPATH_UNKNOWN_FUNC_ERROR, /* 1209 */ + XML_XPATH_INVALID_OPERAND, /* 1210 */ + XML_XPATH_INVALID_TYPE, /* 1211 */ + XML_XPATH_INVALID_ARITY, /* 1212 */ + XML_XPATH_INVALID_CTXT_SIZE, /* 1213 */ + XML_XPATH_INVALID_CTXT_POSITION, /* 1214 */ + XML_XPATH_MEMORY_ERROR, /* 1215 */ + XML_XPTR_SYNTAX_ERROR, /* 1216 */ + XML_XPTR_RESOURCE_ERROR, /* 1217 */ + XML_XPTR_SUB_RESOURCE_ERROR, /* 1218 */ + XML_XPATH_UNDEF_PREFIX_ERROR, /* 1219 */ + XML_XPATH_ENCODING_ERROR, /* 1220 */ + XML_XPATH_INVALID_CHAR_ERROR, /* 1221 */ + XML_TREE_INVALID_HEX = 1300, + XML_TREE_INVALID_DEC, /* 1301 */ + XML_TREE_UNTERMINATED_ENTITY, /* 1302 */ + XML_TREE_NOT_UTF8, /* 1303 */ + XML_SAVE_NOT_UTF8 = 1400, + XML_SAVE_CHAR_INVALID, /* 1401 */ + XML_SAVE_NO_DOCTYPE, /* 1402 */ + XML_SAVE_UNKNOWN_ENCODING, /* 1403 */ + XML_REGEXP_COMPILE_ERROR = 1450, + XML_IO_UNKNOWN = 1500, + XML_IO_EACCES, /* 1501 */ + XML_IO_EAGAIN, /* 1502 */ + XML_IO_EBADF, /* 1503 */ + XML_IO_EBADMSG, /* 1504 */ + XML_IO_EBUSY, /* 1505 */ + XML_IO_ECANCELED, /* 1506 */ + XML_IO_ECHILD, /* 1507 */ + XML_IO_EDEADLK, /* 1508 */ + XML_IO_EDOM, /* 1509 */ + XML_IO_EEXIST, /* 1510 */ + XML_IO_EFAULT, /* 1511 */ + XML_IO_EFBIG, /* 1512 */ + XML_IO_EINPROGRESS, /* 1513 */ + XML_IO_EINTR, /* 1514 */ + XML_IO_EINVAL, /* 1515 */ + XML_IO_EIO, /* 1516 */ + XML_IO_EISDIR, /* 1517 */ + XML_IO_EMFILE, /* 1518 */ + XML_IO_EMLINK, /* 1519 */ + XML_IO_EMSGSIZE, /* 1520 */ + XML_IO_ENAMETOOLONG, /* 1521 */ + XML_IO_ENFILE, /* 1522 */ + XML_IO_ENODEV, /* 1523 */ + XML_IO_ENOENT, /* 1524 */ + XML_IO_ENOEXEC, /* 1525 */ + XML_IO_ENOLCK, /* 1526 */ + XML_IO_ENOMEM, /* 1527 */ + XML_IO_ENOSPC, /* 1528 */ + XML_IO_ENOSYS, /* 1529 */ + XML_IO_ENOTDIR, /* 1530 */ + XML_IO_ENOTEMPTY, /* 1531 */ + XML_IO_ENOTSUP, /* 1532 */ + XML_IO_ENOTTY, /* 1533 */ + XML_IO_ENXIO, /* 1534 */ + XML_IO_EPERM, /* 1535 */ + XML_IO_EPIPE, /* 1536 */ + XML_IO_ERANGE, /* 1537 */ + XML_IO_EROFS, /* 1538 */ + XML_IO_ESPIPE, /* 1539 */ + XML_IO_ESRCH, /* 1540 */ + XML_IO_ETIMEDOUT, /* 1541 */ + XML_IO_EXDEV, /* 1542 */ + XML_IO_NETWORK_ATTEMPT, /* 1543 */ + XML_IO_ENCODER, /* 1544 */ + XML_IO_FLUSH, /* 1545 */ + XML_IO_WRITE, /* 1546 */ + XML_IO_NO_INPUT, /* 1547 */ + XML_IO_BUFFER_FULL, /* 1548 */ + XML_IO_LOAD_ERROR, /* 1549 */ + XML_IO_ENOTSOCK, /* 1550 */ + XML_IO_EISCONN, /* 1551 */ + XML_IO_ECONNREFUSED, /* 1552 */ + XML_IO_ENETUNREACH, /* 1553 */ + XML_IO_EADDRINUSE, /* 1554 */ + XML_IO_EALREADY, /* 1555 */ + XML_IO_EAFNOSUPPORT, /* 1556 */ + XML_XINCLUDE_RECURSION=1600, + XML_XINCLUDE_PARSE_VALUE, /* 1601 */ + XML_XINCLUDE_ENTITY_DEF_MISMATCH, /* 1602 */ + XML_XINCLUDE_NO_HREF, /* 1603 */ + XML_XINCLUDE_NO_FALLBACK, /* 1604 */ + XML_XINCLUDE_HREF_URI, /* 1605 */ + XML_XINCLUDE_TEXT_FRAGMENT, /* 1606 */ + XML_XINCLUDE_TEXT_DOCUMENT, /* 1607 */ + XML_XINCLUDE_INVALID_CHAR, /* 1608 */ + XML_XINCLUDE_BUILD_FAILED, /* 1609 */ + XML_XINCLUDE_UNKNOWN_ENCODING, /* 1610 */ + XML_XINCLUDE_MULTIPLE_ROOT, /* 1611 */ + XML_XINCLUDE_XPTR_FAILED, /* 1612 */ + XML_XINCLUDE_XPTR_RESULT, /* 1613 */ + XML_XINCLUDE_INCLUDE_IN_INCLUDE, /* 1614 */ + XML_XINCLUDE_FALLBACKS_IN_INCLUDE, /* 1615 */ + XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE, /* 1616 */ + XML_XINCLUDE_DEPRECATED_NS, /* 1617 */ + XML_XINCLUDE_FRAGMENT_ID, /* 1618 */ + XML_CATALOG_MISSING_ATTR = 1650, + XML_CATALOG_ENTRY_BROKEN, /* 1651 */ + XML_CATALOG_PREFER_VALUE, /* 1652 */ + XML_CATALOG_NOT_CATALOG, /* 1653 */ + XML_CATALOG_RECURSION, /* 1654 */ + XML_SCHEMAP_PREFIX_UNDEFINED = 1700, + XML_SCHEMAP_ATTRFORMDEFAULT_VALUE, /* 1701 */ + XML_SCHEMAP_ATTRGRP_NONAME_NOREF, /* 1702 */ + XML_SCHEMAP_ATTR_NONAME_NOREF, /* 1703 */ + XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF, /* 1704 */ + XML_SCHEMAP_ELEMFORMDEFAULT_VALUE, /* 1705 */ + XML_SCHEMAP_ELEM_NONAME_NOREF, /* 1706 */ + XML_SCHEMAP_EXTENSION_NO_BASE, /* 1707 */ + XML_SCHEMAP_FACET_NO_VALUE, /* 1708 */ + XML_SCHEMAP_FAILED_BUILD_IMPORT, /* 1709 */ + XML_SCHEMAP_GROUP_NONAME_NOREF, /* 1710 */ + XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI, /* 1711 */ + XML_SCHEMAP_IMPORT_REDEFINE_NSNAME, /* 1712 */ + XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI, /* 1713 */ + XML_SCHEMAP_INVALID_BOOLEAN, /* 1714 */ + XML_SCHEMAP_INVALID_ENUM, /* 1715 */ + XML_SCHEMAP_INVALID_FACET, /* 1716 */ + XML_SCHEMAP_INVALID_FACET_VALUE, /* 1717 */ + XML_SCHEMAP_INVALID_MAXOCCURS, /* 1718 */ + XML_SCHEMAP_INVALID_MINOCCURS, /* 1719 */ + XML_SCHEMAP_INVALID_REF_AND_SUBTYPE, /* 1720 */ + XML_SCHEMAP_INVALID_WHITE_SPACE, /* 1721 */ + XML_SCHEMAP_NOATTR_NOREF, /* 1722 */ + XML_SCHEMAP_NOTATION_NO_NAME, /* 1723 */ + XML_SCHEMAP_NOTYPE_NOREF, /* 1724 */ + XML_SCHEMAP_REF_AND_SUBTYPE, /* 1725 */ + XML_SCHEMAP_RESTRICTION_NONAME_NOREF, /* 1726 */ + XML_SCHEMAP_SIMPLETYPE_NONAME, /* 1727 */ + XML_SCHEMAP_TYPE_AND_SUBTYPE, /* 1728 */ + XML_SCHEMAP_UNKNOWN_ALL_CHILD, /* 1729 */ + XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD, /* 1730 */ + XML_SCHEMAP_UNKNOWN_ATTR_CHILD, /* 1731 */ + XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD, /* 1732 */ + XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP, /* 1733 */ + XML_SCHEMAP_UNKNOWN_BASE_TYPE, /* 1734 */ + XML_SCHEMAP_UNKNOWN_CHOICE_CHILD, /* 1735 */ + XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD, /* 1736 */ + XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD, /* 1737 */ + XML_SCHEMAP_UNKNOWN_ELEM_CHILD, /* 1738 */ + XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD, /* 1739 */ + XML_SCHEMAP_UNKNOWN_FACET_CHILD, /* 1740 */ + XML_SCHEMAP_UNKNOWN_FACET_TYPE, /* 1741 */ + XML_SCHEMAP_UNKNOWN_GROUP_CHILD, /* 1742 */ + XML_SCHEMAP_UNKNOWN_IMPORT_CHILD, /* 1743 */ + XML_SCHEMAP_UNKNOWN_LIST_CHILD, /* 1744 */ + XML_SCHEMAP_UNKNOWN_NOTATION_CHILD, /* 1745 */ + XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD, /* 1746 */ + XML_SCHEMAP_UNKNOWN_REF, /* 1747 */ + XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD, /* 1748 */ + XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD, /* 1749 */ + XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD, /* 1750 */ + XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD, /* 1751 */ + XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD, /* 1752 */ + XML_SCHEMAP_UNKNOWN_TYPE, /* 1753 */ + XML_SCHEMAP_UNKNOWN_UNION_CHILD, /* 1754 */ + XML_SCHEMAP_ELEM_DEFAULT_FIXED, /* 1755 */ + XML_SCHEMAP_REGEXP_INVALID, /* 1756 */ + XML_SCHEMAP_FAILED_LOAD, /* 1757 */ + XML_SCHEMAP_NOTHING_TO_PARSE, /* 1758 */ + XML_SCHEMAP_NOROOT, /* 1759 */ + XML_SCHEMAP_REDEFINED_GROUP, /* 1760 */ + XML_SCHEMAP_REDEFINED_TYPE, /* 1761 */ + XML_SCHEMAP_REDEFINED_ELEMENT, /* 1762 */ + XML_SCHEMAP_REDEFINED_ATTRGROUP, /* 1763 */ + XML_SCHEMAP_REDEFINED_ATTR, /* 1764 */ + XML_SCHEMAP_REDEFINED_NOTATION, /* 1765 */ + XML_SCHEMAP_FAILED_PARSE, /* 1766 */ + XML_SCHEMAP_UNKNOWN_PREFIX, /* 1767 */ + XML_SCHEMAP_DEF_AND_PREFIX, /* 1768 */ + XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD, /* 1769 */ + XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI, /* 1770 */ + XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI, /* 1771 */ + XML_SCHEMAP_NOT_SCHEMA, /* 1772 */ + XML_SCHEMAP_UNKNOWN_MEMBER_TYPE, /* 1773 */ + XML_SCHEMAP_INVALID_ATTR_USE, /* 1774 */ + XML_SCHEMAP_RECURSIVE, /* 1775 */ + XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE, /* 1776 */ + XML_SCHEMAP_INVALID_ATTR_COMBINATION, /* 1777 */ + XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION, /* 1778 */ + XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD, /* 1779 */ + XML_SCHEMAP_INVALID_ATTR_NAME, /* 1780 */ + XML_SCHEMAP_REF_AND_CONTENT, /* 1781 */ + XML_SCHEMAP_CT_PROPS_CORRECT_1, /* 1782 */ + XML_SCHEMAP_CT_PROPS_CORRECT_2, /* 1783 */ + XML_SCHEMAP_CT_PROPS_CORRECT_3, /* 1784 */ + XML_SCHEMAP_CT_PROPS_CORRECT_4, /* 1785 */ + XML_SCHEMAP_CT_PROPS_CORRECT_5, /* 1786 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, /* 1787 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1, /* 1788 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2, /* 1789 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2, /* 1790 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3, /* 1791 */ + XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER, /* 1792 */ + XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE, /* 1793 */ + XML_SCHEMAP_UNION_NOT_EXPRESSIBLE, /* 1794 */ + XML_SCHEMAP_SRC_IMPORT_3_1, /* 1795 */ + XML_SCHEMAP_SRC_IMPORT_3_2, /* 1796 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1, /* 1797 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2, /* 1798 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3, /* 1799 */ + XML_SCHEMAP_COS_CT_EXTENDS_1_3, /* 1800 */ + XML_SCHEMAV_NOROOT = 1801, + XML_SCHEMAV_UNDECLAREDELEM, /* 1802 */ + XML_SCHEMAV_NOTTOPLEVEL, /* 1803 */ + XML_SCHEMAV_MISSING, /* 1804 */ + XML_SCHEMAV_WRONGELEM, /* 1805 */ + XML_SCHEMAV_NOTYPE, /* 1806 */ + XML_SCHEMAV_NOROLLBACK, /* 1807 */ + XML_SCHEMAV_ISABSTRACT, /* 1808 */ + XML_SCHEMAV_NOTEMPTY, /* 1809 */ + XML_SCHEMAV_ELEMCONT, /* 1810 */ + XML_SCHEMAV_HAVEDEFAULT, /* 1811 */ + XML_SCHEMAV_NOTNILLABLE, /* 1812 */ + XML_SCHEMAV_EXTRACONTENT, /* 1813 */ + XML_SCHEMAV_INVALIDATTR, /* 1814 */ + XML_SCHEMAV_INVALIDELEM, /* 1815 */ + XML_SCHEMAV_NOTDETERMINIST, /* 1816 */ + XML_SCHEMAV_CONSTRUCT, /* 1817 */ + XML_SCHEMAV_INTERNAL, /* 1818 */ + XML_SCHEMAV_NOTSIMPLE, /* 1819 */ + XML_SCHEMAV_ATTRUNKNOWN, /* 1820 */ + XML_SCHEMAV_ATTRINVALID, /* 1821 */ + XML_SCHEMAV_VALUE, /* 1822 */ + XML_SCHEMAV_FACET, /* 1823 */ + XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1, /* 1824 */ + XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2, /* 1825 */ + XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3, /* 1826 */ + XML_SCHEMAV_CVC_TYPE_3_1_1, /* 1827 */ + XML_SCHEMAV_CVC_TYPE_3_1_2, /* 1828 */ + XML_SCHEMAV_CVC_FACET_VALID, /* 1829 */ + XML_SCHEMAV_CVC_LENGTH_VALID, /* 1830 */ + XML_SCHEMAV_CVC_MINLENGTH_VALID, /* 1831 */ + XML_SCHEMAV_CVC_MAXLENGTH_VALID, /* 1832 */ + XML_SCHEMAV_CVC_MININCLUSIVE_VALID, /* 1833 */ + XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID, /* 1834 */ + XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID, /* 1835 */ + XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID, /* 1836 */ + XML_SCHEMAV_CVC_TOTALDIGITS_VALID, /* 1837 */ + XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID, /* 1838 */ + XML_SCHEMAV_CVC_PATTERN_VALID, /* 1839 */ + XML_SCHEMAV_CVC_ENUMERATION_VALID, /* 1840 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1, /* 1841 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2, /* 1842 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3, /* 1843 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4, /* 1844 */ + XML_SCHEMAV_CVC_ELT_1, /* 1845 */ + XML_SCHEMAV_CVC_ELT_2, /* 1846 */ + XML_SCHEMAV_CVC_ELT_3_1, /* 1847 */ + XML_SCHEMAV_CVC_ELT_3_2_1, /* 1848 */ + XML_SCHEMAV_CVC_ELT_3_2_2, /* 1849 */ + XML_SCHEMAV_CVC_ELT_4_1, /* 1850 */ + XML_SCHEMAV_CVC_ELT_4_2, /* 1851 */ + XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */ + XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */ + XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */ + XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ + XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */ + XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */ + XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */ + XML_SCHEMAV_CVC_ELT_6, /* 1859 */ + XML_SCHEMAV_CVC_ELT_7, /* 1860 */ + XML_SCHEMAV_CVC_ATTRIBUTE_1, /* 1861 */ + XML_SCHEMAV_CVC_ATTRIBUTE_2, /* 1862 */ + XML_SCHEMAV_CVC_ATTRIBUTE_3, /* 1863 */ + XML_SCHEMAV_CVC_ATTRIBUTE_4, /* 1864 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1, /* 1865 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1, /* 1866 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2, /* 1867 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_4, /* 1868 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1, /* 1869 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2, /* 1870 */ + XML_SCHEMAV_ELEMENT_CONTENT, /* 1871 */ + XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING, /* 1872 */ + XML_SCHEMAV_CVC_COMPLEX_TYPE_1, /* 1873 */ + XML_SCHEMAV_CVC_AU, /* 1874 */ + XML_SCHEMAV_CVC_TYPE_1, /* 1875 */ + XML_SCHEMAV_CVC_TYPE_2, /* 1876 */ + XML_SCHEMAV_CVC_IDC, /* 1877 */ + XML_SCHEMAV_CVC_WILDCARD, /* 1878 */ + XML_SCHEMAV_MISC, /* 1879 */ + XML_XPTR_UNKNOWN_SCHEME = 1900, + XML_XPTR_CHILDSEQ_START, /* 1901 */ + XML_XPTR_EVAL_FAILED, /* 1902 */ + XML_XPTR_EXTRA_OBJECTS, /* 1903 */ + XML_C14N_CREATE_CTXT = 1950, + XML_C14N_REQUIRES_UTF8, /* 1951 */ + XML_C14N_CREATE_STACK, /* 1952 */ + XML_C14N_INVALID_NODE, /* 1953 */ + XML_C14N_UNKNOW_NODE, /* 1954 */ + XML_C14N_RELATIVE_NAMESPACE, /* 1955 */ + XML_FTP_PASV_ANSWER = 2000, + XML_FTP_EPSV_ANSWER, /* 2001 */ + XML_FTP_ACCNT, /* 2002 */ + XML_FTP_URL_SYNTAX, /* 2003 */ + XML_HTTP_URL_SYNTAX = 2020, + XML_HTTP_USE_IP, /* 2021 */ + XML_HTTP_UNKNOWN_HOST, /* 2022 */ + XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000, + XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */ + XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */ + XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */ + XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ + XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */ + XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */ + XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */ + XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */ + XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */ + XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ + XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */ + XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ + XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */ + XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1, /* 3016 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2, /* 3017 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1, /* 3018 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2, /* 3019 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3, /* 3020 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4, /* 3021 */ + XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5, /* 3022 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_1, /* 3023 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1, /* 3024 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2, /* 3025 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2, /* 3026 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1, /* 3027 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */ + XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */ + XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ + XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */ + XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */ + XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */ + XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, /* 3035 */ + XML_SCHEMAP_S4S_ATTR_MISSING, /* 3036 */ + XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, /* 3037 */ + XML_SCHEMAP_SRC_ELEMENT_1, /* 3038 */ + XML_SCHEMAP_SRC_ELEMENT_2_1, /* 3039 */ + XML_SCHEMAP_SRC_ELEMENT_2_2, /* 3040 */ + XML_SCHEMAP_SRC_ELEMENT_3, /* 3041 */ + XML_SCHEMAP_P_PROPS_CORRECT_1, /* 3042 */ + XML_SCHEMAP_P_PROPS_CORRECT_2_1, /* 3043 */ + XML_SCHEMAP_P_PROPS_CORRECT_2_2, /* 3044 */ + XML_SCHEMAP_E_PROPS_CORRECT_2, /* 3045 */ + XML_SCHEMAP_E_PROPS_CORRECT_3, /* 3046 */ + XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */ + XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */ + XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */ + XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ + XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */ + XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */ + XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */ + XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */ + XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */ + XML_SCHEMAP_NO_XMLNS, /* 3056 */ + XML_SCHEMAP_NO_XSI, /* 3057 */ + XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */ + XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */ + XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */ + XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2, /* 3061 */ + XML_SCHEMAP_CVC_SIMPLE_TYPE, /* 3062 */ + XML_SCHEMAP_COS_CT_EXTENDS_1_1, /* 3063 */ + XML_SCHEMAP_SRC_IMPORT_1_1, /* 3064 */ + XML_SCHEMAP_SRC_IMPORT_1_2, /* 3065 */ + XML_SCHEMAP_SRC_IMPORT_2, /* 3066 */ + XML_SCHEMAP_SRC_IMPORT_2_1, /* 3067 */ + XML_SCHEMAP_SRC_IMPORT_2_2, /* 3068 */ + XML_SCHEMAP_INTERNAL, /* 3069 non-W3C */ + XML_SCHEMAP_NOT_DETERMINISTIC, /* 3070 non-W3C */ + XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1, /* 3071 */ + XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2, /* 3072 */ + XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3, /* 3073 */ + XML_SCHEMAP_MG_PROPS_CORRECT_1, /* 3074 */ + XML_SCHEMAP_MG_PROPS_CORRECT_2, /* 3075 */ + XML_SCHEMAP_SRC_CT_1, /* 3076 */ + XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3, /* 3077 */ + XML_SCHEMAP_AU_PROPS_CORRECT_2, /* 3078 */ + XML_SCHEMAP_A_PROPS_CORRECT_2, /* 3079 */ + XML_SCHEMAP_C_PROPS_CORRECT, /* 3080 */ + XML_SCHEMAP_SRC_REDEFINE, /* 3081 */ + XML_SCHEMAP_SRC_IMPORT, /* 3082 */ + XML_SCHEMAP_WARN_SKIP_SCHEMA, /* 3083 */ + XML_SCHEMAP_WARN_UNLOCATED_SCHEMA, /* 3084 */ + XML_SCHEMAP_WARN_ATTR_REDECL_PROH, /* 3085 */ + XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, /* 3085 */ + XML_SCHEMAP_AG_PROPS_CORRECT, /* 3086 */ + XML_SCHEMAP_COS_CT_EXTENDS_1_2, /* 3087 */ + XML_SCHEMAP_AU_PROPS_CORRECT, /* 3088 */ + XML_SCHEMAP_A_PROPS_CORRECT_3, /* 3089 */ + XML_SCHEMAP_COS_ALL_LIMITED, /* 3090 */ + XML_SCHEMATRONV_ASSERT = 4000, /* 4000 */ + XML_SCHEMATRONV_REPORT, + XML_MODULE_OPEN = 4900, /* 4900 */ + XML_MODULE_CLOSE, /* 4901 */ + XML_CHECK_FOUND_ELEMENT = 5000, + XML_CHECK_FOUND_ATTRIBUTE, /* 5001 */ + XML_CHECK_FOUND_TEXT, /* 5002 */ + XML_CHECK_FOUND_CDATA, /* 5003 */ + XML_CHECK_FOUND_ENTITYREF, /* 5004 */ + XML_CHECK_FOUND_ENTITY, /* 5005 */ + XML_CHECK_FOUND_PI, /* 5006 */ + XML_CHECK_FOUND_COMMENT, /* 5007 */ + XML_CHECK_FOUND_DOCTYPE, /* 5008 */ + XML_CHECK_FOUND_FRAGMENT, /* 5009 */ + XML_CHECK_FOUND_NOTATION, /* 5010 */ + XML_CHECK_UNKNOWN_NODE, /* 5011 */ + XML_CHECK_ENTITY_TYPE, /* 5012 */ + XML_CHECK_NO_PARENT, /* 5013 */ + XML_CHECK_NO_DOC, /* 5014 */ + XML_CHECK_NO_NAME, /* 5015 */ + XML_CHECK_NO_ELEM, /* 5016 */ + XML_CHECK_WRONG_DOC, /* 5017 */ + XML_CHECK_NO_PREV, /* 5018 */ + XML_CHECK_WRONG_PREV, /* 5019 */ + XML_CHECK_NO_NEXT, /* 5020 */ + XML_CHECK_WRONG_NEXT, /* 5021 */ + XML_CHECK_NOT_DTD, /* 5022 */ + XML_CHECK_NOT_ATTR, /* 5023 */ + XML_CHECK_NOT_ATTR_DECL, /* 5024 */ + XML_CHECK_NOT_ELEM_DECL, /* 5025 */ + XML_CHECK_NOT_ENTITY_DECL, /* 5026 */ + XML_CHECK_NOT_NS_DECL, /* 5027 */ + XML_CHECK_NO_HREF, /* 5028 */ + XML_CHECK_WRONG_PARENT,/* 5029 */ + XML_CHECK_NS_SCOPE, /* 5030 */ + XML_CHECK_NS_ANCESTOR, /* 5031 */ + XML_CHECK_NOT_UTF8, /* 5032 */ + XML_CHECK_NO_DICT, /* 5033 */ + XML_CHECK_NOT_NCNAME, /* 5034 */ + XML_CHECK_OUTSIDE_DICT, /* 5035 */ + XML_CHECK_WRONG_NAME, /* 5036 */ + XML_CHECK_NAME_NOT_NULL, /* 5037 */ + XML_I18N_NO_NAME = 6000, + XML_I18N_NO_HANDLER, /* 6001 */ + XML_I18N_EXCESS_HANDLER, /* 6002 */ + XML_I18N_CONV_FAILED, /* 6003 */ + XML_I18N_NO_OUTPUT, /* 6004 */ + XML_BUF_OVERFLOW = 7000 +} xmlParserErrors; + +/** + * xmlGenericErrorFunc: + * @ctx: a parsing context + * @msg: the message + * @...: the extra arguments of the varargs to format the message + * + * Signature of the function to use when there is an error and + * no parsing or validity context available . + */ +typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); +/** + * xmlStructuredErrorFunc: + * @userData: user provided data for the error callback + * @error: the error being raised. + * + * Signature of the function to use when there is an error and + * the module handles the new error reporting mechanism. + */ +typedef void (XMLCALL *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error); + +/* + * Use the following function to reset the two global variables + * xmlGenericError and xmlGenericErrorContext. + */ +XMLPUBFUN void XMLCALL + xmlSetGenericErrorFunc (void *ctx, + xmlGenericErrorFunc handler); +XMLPUBFUN void XMLCALL + initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler); + +XMLPUBFUN void XMLCALL + xmlSetStructuredErrorFunc (void *ctx, + xmlStructuredErrorFunc handler); +/* + * Default message routines used by SAX and Valid context for error + * and warning reporting. + */ +XMLPUBFUN void XMLCDECL + xmlParserError (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL + xmlParserWarning (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL + xmlParserValidityError (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL + xmlParserValidityWarning (void *ctx, + const char *msg, + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCALL + xmlParserPrintFileInfo (xmlParserInputPtr input); +XMLPUBFUN void XMLCALL + xmlParserPrintFileContext (xmlParserInputPtr input); + +/* + * Extended error information routines + */ +XMLPUBFUN xmlErrorPtr XMLCALL + xmlGetLastError (void); +XMLPUBFUN void XMLCALL + xmlResetLastError (void); +XMLPUBFUN xmlErrorPtr XMLCALL + xmlCtxtGetLastError (void *ctx); +XMLPUBFUN void XMLCALL + xmlCtxtResetLastError (void *ctx); +XMLPUBFUN void XMLCALL + xmlResetError (xmlErrorPtr err); +XMLPUBFUN int XMLCALL + xmlCopyError (xmlErrorPtr from, + xmlErrorPtr to); + +#ifdef IN_LIBXML +/* + * Internal callback reporting routine + */ +XMLPUBFUN void XMLCALL + __xmlRaiseError (xmlStructuredErrorFunc schannel, + xmlGenericErrorFunc channel, + void *data, + void *ctx, + void *node, + int domain, + int code, + xmlErrorLevel level, + const char *file, + int line, + const char *str1, + const char *str2, + const char *str3, + int int1, + int col, + const char *msg, + ...) LIBXML_ATTR_FORMAT(16,17); +XMLPUBFUN void XMLCALL + __xmlSimpleError (int domain, + int code, + xmlNodePtr node, + const char *msg, + const char *extra) LIBXML_ATTR_FORMAT(4,0); +#endif +#ifdef __cplusplus +} +#endif +#endif /* __XML_ERROR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlexports.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlexports.h new file mode 100644 index 0000000..aceede5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlexports.h @@ -0,0 +1,77 @@ +/* + * Summary: macros for marking symbols as exportable/importable. + * Description: macros for marking symbols as exportable/importable. + * + * Copy: See Copyright for the status of this software. + */ + +#ifndef __XML_EXPORTS_H__ +#define __XML_EXPORTS_H__ + +#if defined(_WIN32) || defined(__CYGWIN__) +/** DOC_DISABLE */ + +#ifdef LIBXML_STATIC + #define XMLPUBLIC +#elif defined(IN_LIBXML) + #define XMLPUBLIC __declspec(dllexport) +#else + #define XMLPUBLIC __declspec(dllimport) +#endif + +#if defined(LIBXML_FASTCALL) + #define XMLCALL __fastcall +#else + #define XMLCALL __cdecl +#endif +#define XMLCDECL __cdecl + +/** DOC_ENABLE */ +#else /* not Windows */ + +/** + * XMLPUBLIC: + * + * Macro which declares a public symbol + */ +#define XMLPUBLIC + +/** + * XMLCALL: + * + * Macro which declares the calling convention for exported functions + */ +#define XMLCALL + +/** + * XMLCDECL: + * + * Macro which declares the calling convention for exported functions that + * use '...'. + */ +#define XMLCDECL + +#endif /* platform switch */ + +/* + * XMLPUBFUN: + * + * Macro which declares an exportable function + */ +#define XMLPUBFUN XMLPUBLIC + +/** + * XMLPUBVAR: + * + * Macro which declares an exportable variable + */ +#define XMLPUBVAR XMLPUBLIC extern + +/* Compatibility */ +#if !defined(LIBXML_DLL_IMPORT) +#define LIBXML_DLL_IMPORT XMLPUBVAR +#endif + +#endif /* __XML_EXPORTS_H__ */ + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlmemory.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlmemory.h new file mode 100644 index 0000000..ae2a427 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlmemory.h @@ -0,0 +1,226 @@ +/* + * Summary: interface for the memory allocator + * Description: provides interfaces for the memory allocator, + * including debugging capabilities. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __DEBUG_MEMORY_ALLOC__ +#define __DEBUG_MEMORY_ALLOC__ + +#include +#include + +/** + * DEBUG_MEMORY: + * + * DEBUG_MEMORY replaces the allocator with a collect and debug + * shell to the libc allocator. + * DEBUG_MEMORY should only be activated when debugging + * libxml i.e. if libxml has been configured with --with-debug-mem too. + */ +/* #define DEBUG_MEMORY_FREED */ +/* #define DEBUG_MEMORY_LOCATION */ + +#ifdef DEBUG +#ifndef DEBUG_MEMORY +#define DEBUG_MEMORY +#endif +#endif + +/** + * DEBUG_MEMORY_LOCATION: + * + * DEBUG_MEMORY_LOCATION should be activated only when debugging + * libxml i.e. if libxml has been configured with --with-debug-mem too. + */ +#ifdef DEBUG_MEMORY_LOCATION +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The XML memory wrapper support 4 basic overloadable functions. + */ +/** + * xmlFreeFunc: + * @mem: an already allocated block of memory + * + * Signature for a free() implementation. + */ +typedef void (XMLCALL *xmlFreeFunc)(void *mem); +/** + * xmlMallocFunc: + * @size: the size requested in bytes + * + * Signature for a malloc() implementation. + * + * Returns a pointer to the newly allocated block or NULL in case of error. + */ +typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size); + +/** + * xmlReallocFunc: + * @mem: an already allocated block of memory + * @size: the new size requested in bytes + * + * Signature for a realloc() implementation. + * + * Returns a pointer to the newly reallocated block or NULL in case of error. + */ +typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size); + +/** + * xmlStrdupFunc: + * @str: a zero terminated string + * + * Signature for an strdup() implementation. + * + * Returns the copy of the string or NULL in case of error. + */ +typedef char *(XMLCALL *xmlStrdupFunc)(const char *str); + +/* + * The 4 interfaces used for all memory handling within libxml. +LIBXML_DLL_IMPORT xmlFreeFunc xmlFree; +LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc; +LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic; +LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc; +LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup; + */ + +/* + * The way to overload the existing functions. + * The xmlGc function have an extra entry for atomic block + * allocations useful for garbage collected memory allocators + */ +XMLPUBFUN int XMLCALL + xmlMemSetup (xmlFreeFunc freeFunc, + xmlMallocFunc mallocFunc, + xmlReallocFunc reallocFunc, + xmlStrdupFunc strdupFunc); +XMLPUBFUN int XMLCALL + xmlMemGet (xmlFreeFunc *freeFunc, + xmlMallocFunc *mallocFunc, + xmlReallocFunc *reallocFunc, + xmlStrdupFunc *strdupFunc); +XMLPUBFUN int XMLCALL + xmlGcMemSetup (xmlFreeFunc freeFunc, + xmlMallocFunc mallocFunc, + xmlMallocFunc mallocAtomicFunc, + xmlReallocFunc reallocFunc, + xmlStrdupFunc strdupFunc); +XMLPUBFUN int XMLCALL + xmlGcMemGet (xmlFreeFunc *freeFunc, + xmlMallocFunc *mallocFunc, + xmlMallocFunc *mallocAtomicFunc, + xmlReallocFunc *reallocFunc, + xmlStrdupFunc *strdupFunc); + +/* + * Initialization of the memory layer. + */ +XML_DEPRECATED +XMLPUBFUN int XMLCALL + xmlInitMemory (void); + +/* + * Cleanup of the memory layer. + */ +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlCleanupMemory (void); +/* + * These are specific to the XML debug memory wrapper. + */ +XMLPUBFUN int XMLCALL + xmlMemUsed (void); +XMLPUBFUN int XMLCALL + xmlMemBlocks (void); +XMLPUBFUN void XMLCALL + xmlMemDisplay (FILE *fp); +XMLPUBFUN void XMLCALL + xmlMemDisplayLast(FILE *fp, long nbBytes); +XMLPUBFUN void XMLCALL + xmlMemShow (FILE *fp, int nr); +XMLPUBFUN void XMLCALL + xmlMemoryDump (void); +XMLPUBFUN void * XMLCALL + xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN void * XMLCALL + xmlMemRealloc (void *ptr,size_t size); +XMLPUBFUN void XMLCALL + xmlMemFree (void *ptr); +XMLPUBFUN char * XMLCALL + xmlMemoryStrdup (const char *str); +XMLPUBFUN void * XMLCALL + xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN void * XMLCALL + xmlReallocLoc (void *ptr, size_t size, const char *file, int line); +XMLPUBFUN void * XMLCALL + xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN char * XMLCALL + xmlMemStrdupLoc (const char *str, const char *file, int line); + + +#ifdef DEBUG_MEMORY_LOCATION +/** + * xmlMalloc: + * @size: number of bytes to allocate + * + * Wrapper for the malloc() function used in the XML library. + * + * Returns the pointer to the allocated area or NULL in case of error. + */ +#define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__) +/** + * xmlMallocAtomic: + * @size: number of bytes to allocate + * + * Wrapper for the malloc() function used in the XML library for allocation + * of block not containing pointers to other areas. + * + * Returns the pointer to the allocated area or NULL in case of error. + */ +#define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__) +/** + * xmlRealloc: + * @ptr: pointer to the existing allocated area + * @size: number of bytes to allocate + * + * Wrapper for the realloc() function used in the XML library. + * + * Returns the pointer to the allocated area or NULL in case of error. + */ +#define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__) +/** + * xmlMemStrdup: + * @str: pointer to the existing string + * + * Wrapper for the strdup() function, xmlStrdup() is usually preferred. + * + * Returns the pointer to the allocated area or NULL in case of error. + */ +#define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__) + +#endif /* DEBUG_MEMORY_LOCATION */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#ifndef __XML_GLOBALS_H +#ifndef __XML_THREADS_H__ +#include +#include +#endif +#endif + +#endif /* __DEBUG_MEMORY_ALLOC__ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlmodule.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlmodule.h new file mode 100644 index 0000000..9667820 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlmodule.h @@ -0,0 +1,57 @@ +/* + * Summary: dynamic module loading + * Description: basic API for dynamic module loading, used by + * libexslt added in 2.6.17 + * + * Copy: See Copyright for the status of this software. + * + * Author: Joel W. Reed + */ + +#ifndef __XML_MODULE_H__ +#define __XML_MODULE_H__ + +#include + +#ifdef LIBXML_MODULES_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlModulePtr: + * + * A handle to a dynamically loaded module + */ +typedef struct _xmlModule xmlModule; +typedef xmlModule *xmlModulePtr; + +/** + * xmlModuleOption: + * + * enumeration of options that can be passed down to xmlModuleOpen() + */ +typedef enum { + XML_MODULE_LAZY = 1, /* lazy binding */ + XML_MODULE_LOCAL= 2 /* local binding */ +} xmlModuleOption; + +XMLPUBFUN xmlModulePtr XMLCALL xmlModuleOpen (const char *filename, + int options); + +XMLPUBFUN int XMLCALL xmlModuleSymbol (xmlModulePtr module, + const char* name, + void **result); + +XMLPUBFUN int XMLCALL xmlModuleClose (xmlModulePtr module); + +XMLPUBFUN int XMLCALL xmlModuleFree (xmlModulePtr module); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_MODULES_ENABLED */ + +#endif /*__XML_MODULE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlreader.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlreader.h new file mode 100644 index 0000000..e8a8bcc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlreader.h @@ -0,0 +1,428 @@ +/* + * Summary: the XMLReader implementation + * Description: API of the XML streaming API based on C# interfaces. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_XMLREADER_H__ +#define __XML_XMLREADER_H__ + +#include +#include +#include +#ifdef LIBXML_SCHEMAS_ENABLED +#include +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlParserSeverities: + * + * How severe an error callback is when the per-reader error callback API + * is used. + */ +typedef enum { + XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, + XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, + XML_PARSER_SEVERITY_WARNING = 3, + XML_PARSER_SEVERITY_ERROR = 4 +} xmlParserSeverities; + +#ifdef LIBXML_READER_ENABLED + +/** + * xmlTextReaderMode: + * + * Internal state values for the reader. + */ +typedef enum { + XML_TEXTREADER_MODE_INITIAL = 0, + XML_TEXTREADER_MODE_INTERACTIVE = 1, + XML_TEXTREADER_MODE_ERROR = 2, + XML_TEXTREADER_MODE_EOF =3, + XML_TEXTREADER_MODE_CLOSED = 4, + XML_TEXTREADER_MODE_READING = 5 +} xmlTextReaderMode; + +/** + * xmlParserProperties: + * + * Some common options to use with xmlTextReaderSetParserProp, but it + * is better to use xmlParserOption and the xmlReaderNewxxx and + * xmlReaderForxxx APIs now. + */ +typedef enum { + XML_PARSER_LOADDTD = 1, + XML_PARSER_DEFAULTATTRS = 2, + XML_PARSER_VALIDATE = 3, + XML_PARSER_SUBST_ENTITIES = 4 +} xmlParserProperties; + +/** + * xmlReaderTypes: + * + * Predefined constants for the different types of nodes. + */ +typedef enum { + XML_READER_TYPE_NONE = 0, + XML_READER_TYPE_ELEMENT = 1, + XML_READER_TYPE_ATTRIBUTE = 2, + XML_READER_TYPE_TEXT = 3, + XML_READER_TYPE_CDATA = 4, + XML_READER_TYPE_ENTITY_REFERENCE = 5, + XML_READER_TYPE_ENTITY = 6, + XML_READER_TYPE_PROCESSING_INSTRUCTION = 7, + XML_READER_TYPE_COMMENT = 8, + XML_READER_TYPE_DOCUMENT = 9, + XML_READER_TYPE_DOCUMENT_TYPE = 10, + XML_READER_TYPE_DOCUMENT_FRAGMENT = 11, + XML_READER_TYPE_NOTATION = 12, + XML_READER_TYPE_WHITESPACE = 13, + XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14, + XML_READER_TYPE_END_ELEMENT = 15, + XML_READER_TYPE_END_ENTITY = 16, + XML_READER_TYPE_XML_DECLARATION = 17 +} xmlReaderTypes; + +/** + * xmlTextReader: + * + * Structure for an xmlReader context. + */ +typedef struct _xmlTextReader xmlTextReader; + +/** + * xmlTextReaderPtr: + * + * Pointer to an xmlReader context. + */ +typedef xmlTextReader *xmlTextReaderPtr; + +/* + * Constructors & Destructor + */ +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlNewTextReader (xmlParserInputBufferPtr input, + const char *URI); +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlNewTextReaderFilename(const char *URI); + +XMLPUBFUN void XMLCALL + xmlFreeTextReader (xmlTextReaderPtr reader); + +XMLPUBFUN int XMLCALL + xmlTextReaderSetup(xmlTextReaderPtr reader, + xmlParserInputBufferPtr input, const char *URL, + const char *encoding, int options); + +/* + * Iterators + */ +XMLPUBFUN int XMLCALL + xmlTextReaderRead (xmlTextReaderPtr reader); + +#ifdef LIBXML_WRITER_ENABLED +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadInnerXml(xmlTextReaderPtr reader); + +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadOuterXml(xmlTextReaderPtr reader); +#endif + +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadString (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader); + +/* + * Attributes of the node + */ +XMLPUBFUN int XMLCALL + xmlTextReaderAttributeCount(xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderDepth (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderHasAttributes(xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderHasValue(xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderIsDefault (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderNodeType (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderQuoteChar (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderReadState (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader); + +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstBaseUri (xmlTextReaderPtr reader); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstLocalName (xmlTextReaderPtr reader); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstName (xmlTextReaderPtr reader); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstPrefix (xmlTextReaderPtr reader); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstXmlLang (xmlTextReaderPtr reader); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstString (xmlTextReaderPtr reader, + const xmlChar *str); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstValue (xmlTextReaderPtr reader); + +/* + * use the Const version of the routine for + * better performance and simpler code + */ +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderBaseUri (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderLocalName (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderName (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderNamespaceUri(xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderPrefix (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderXmlLang (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderValue (xmlTextReaderPtr reader); + +/* + * Methods of the XmlTextReader + */ +XMLPUBFUN int XMLCALL + xmlTextReaderClose (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader, + int no); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderGetAttribute (xmlTextReaderPtr reader, + const xmlChar *name); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader, + const xmlChar *localName, + const xmlChar *namespaceURI); +XMLPUBFUN xmlParserInputBufferPtr XMLCALL + xmlTextReaderGetRemainder (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, + const xmlChar *prefix); +XMLPUBFUN int XMLCALL + xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, + int no); +XMLPUBFUN int XMLCALL + xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, + const xmlChar *name); +XMLPUBFUN int XMLCALL + xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, + const xmlChar *localName, + const xmlChar *namespaceURI); +XMLPUBFUN int XMLCALL + xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderMoveToElement (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderNormalization (xmlTextReaderPtr reader); +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstEncoding (xmlTextReaderPtr reader); + +/* + * Extensions + */ +XMLPUBFUN int XMLCALL + xmlTextReaderSetParserProp (xmlTextReaderPtr reader, + int prop, + int value); +XMLPUBFUN int XMLCALL + xmlTextReaderGetParserProp (xmlTextReaderPtr reader, + int prop); +XMLPUBFUN xmlNodePtr XMLCALL + xmlTextReaderCurrentNode (xmlTextReaderPtr reader); + +XMLPUBFUN int XMLCALL + xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader); + +XMLPUBFUN int XMLCALL + xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader); + +XMLPUBFUN xmlNodePtr XMLCALL + xmlTextReaderPreserve (xmlTextReaderPtr reader); +#ifdef LIBXML_PATTERN_ENABLED +XMLPUBFUN int XMLCALL + xmlTextReaderPreservePattern(xmlTextReaderPtr reader, + const xmlChar *pattern, + const xmlChar **namespaces); +#endif /* LIBXML_PATTERN_ENABLED */ +XMLPUBFUN xmlDocPtr XMLCALL + xmlTextReaderCurrentDoc (xmlTextReaderPtr reader); +XMLPUBFUN xmlNodePtr XMLCALL + xmlTextReaderExpand (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderNext (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderNextSibling (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderIsValid (xmlTextReaderPtr reader); +#ifdef LIBXML_SCHEMAS_ENABLED +XMLPUBFUN int XMLCALL + xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, + const char *rng); +XMLPUBFUN int XMLCALL + xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, + xmlRelaxNGValidCtxtPtr ctxt, + int options); + +XMLPUBFUN int XMLCALL + xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, + xmlRelaxNGPtr schema); +XMLPUBFUN int XMLCALL + xmlTextReaderSchemaValidate (xmlTextReaderPtr reader, + const char *xsd); +XMLPUBFUN int XMLCALL + xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader, + xmlSchemaValidCtxtPtr ctxt, + int options); +XMLPUBFUN int XMLCALL + xmlTextReaderSetSchema (xmlTextReaderPtr reader, + xmlSchemaPtr schema); +#endif +XMLPUBFUN const xmlChar * XMLCALL + xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderStandalone (xmlTextReaderPtr reader); + + +/* + * Index lookup + */ +XMLPUBFUN long XMLCALL + xmlTextReaderByteConsumed (xmlTextReaderPtr reader); + +/* + * New more complete APIs for simpler creation and reuse of readers + */ +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlReaderWalker (xmlDocPtr doc); +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlReaderForDoc (const xmlChar * cur, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlReaderForFile (const char *filename, + const char *encoding, + int options); +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlReaderForMemory (const char *buffer, + int size, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlReaderForFd (int fd, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN xmlTextReaderPtr XMLCALL + xmlReaderForIO (xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + const char *URL, + const char *encoding, + int options); + +XMLPUBFUN int XMLCALL + xmlReaderNewWalker (xmlTextReaderPtr reader, + xmlDocPtr doc); +XMLPUBFUN int XMLCALL + xmlReaderNewDoc (xmlTextReaderPtr reader, + const xmlChar * cur, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN int XMLCALL + xmlReaderNewFile (xmlTextReaderPtr reader, + const char *filename, + const char *encoding, + int options); +XMLPUBFUN int XMLCALL + xmlReaderNewMemory (xmlTextReaderPtr reader, + const char *buffer, + int size, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN int XMLCALL + xmlReaderNewFd (xmlTextReaderPtr reader, + int fd, + const char *URL, + const char *encoding, + int options); +XMLPUBFUN int XMLCALL + xmlReaderNewIO (xmlTextReaderPtr reader, + xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, + void *ioctx, + const char *URL, + const char *encoding, + int options); +/* + * Error handling extensions + */ +typedef void * xmlTextReaderLocatorPtr; + +/** + * xmlTextReaderErrorFunc: + * @arg: the user argument + * @msg: the message + * @severity: the severity of the error + * @locator: a locator indicating where the error occurred + * + * Signature of an error callback from a reader parser + */ +typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg, + const char *msg, + xmlParserSeverities severity, + xmlTextReaderLocatorPtr locator); +XMLPUBFUN int XMLCALL + xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); +XMLPUBFUN void XMLCALL + xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc f, + void *arg); +XMLPUBFUN void XMLCALL + xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, + xmlStructuredErrorFunc f, + void *arg); +XMLPUBFUN void XMLCALL + xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc *f, + void **arg); + +#endif /* LIBXML_READER_ENABLED */ + +#ifdef __cplusplus +} +#endif + +#endif /* __XML_XMLREADER_H__ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlregexp.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlregexp.h new file mode 100644 index 0000000..7009645 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlregexp.h @@ -0,0 +1,222 @@ +/* + * Summary: regular expressions handling + * Description: basic API for libxml regular expressions handling used + * for XML Schemas and validation. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_REGEXP_H__ +#define __XML_REGEXP_H__ + +#include + +#ifdef LIBXML_REGEXP_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlRegexpPtr: + * + * A libxml regular expression, they can actually be far more complex + * thank the POSIX regex expressions. + */ +typedef struct _xmlRegexp xmlRegexp; +typedef xmlRegexp *xmlRegexpPtr; + +/** + * xmlRegExecCtxtPtr: + * + * A libxml progressive regular expression evaluation context + */ +typedef struct _xmlRegExecCtxt xmlRegExecCtxt; +typedef xmlRegExecCtxt *xmlRegExecCtxtPtr; + +#ifdef __cplusplus +} +#endif +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The POSIX like API + */ +XMLPUBFUN xmlRegexpPtr XMLCALL + xmlRegexpCompile (const xmlChar *regexp); +XMLPUBFUN void XMLCALL xmlRegFreeRegexp(xmlRegexpPtr regexp); +XMLPUBFUN int XMLCALL + xmlRegexpExec (xmlRegexpPtr comp, + const xmlChar *value); +XMLPUBFUN void XMLCALL + xmlRegexpPrint (FILE *output, + xmlRegexpPtr regexp); +XMLPUBFUN int XMLCALL + xmlRegexpIsDeterminist(xmlRegexpPtr comp); + +/** + * xmlRegExecCallbacks: + * @exec: the regular expression context + * @token: the current token string + * @transdata: transition data + * @inputdata: input data + * + * Callback function when doing a transition in the automata + */ +typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec, + const xmlChar *token, + void *transdata, + void *inputdata); + +/* + * The progressive API + */ +XMLPUBFUN xmlRegExecCtxtPtr XMLCALL + xmlRegNewExecCtxt (xmlRegexpPtr comp, + xmlRegExecCallbacks callback, + void *data); +XMLPUBFUN void XMLCALL + xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec); +XMLPUBFUN int XMLCALL + xmlRegExecPushString(xmlRegExecCtxtPtr exec, + const xmlChar *value, + void *data); +XMLPUBFUN int XMLCALL + xmlRegExecPushString2(xmlRegExecCtxtPtr exec, + const xmlChar *value, + const xmlChar *value2, + void *data); + +XMLPUBFUN int XMLCALL + xmlRegExecNextValues(xmlRegExecCtxtPtr exec, + int *nbval, + int *nbneg, + xmlChar **values, + int *terminal); +XMLPUBFUN int XMLCALL + xmlRegExecErrInfo (xmlRegExecCtxtPtr exec, + const xmlChar **string, + int *nbval, + int *nbneg, + xmlChar **values, + int *terminal); +#ifdef LIBXML_EXPR_ENABLED +/* + * Formal regular expression handling + * Its goal is to do some formal work on content models + */ + +/* expressions are used within a context */ +typedef struct _xmlExpCtxt xmlExpCtxt; +typedef xmlExpCtxt *xmlExpCtxtPtr; + +XMLPUBFUN void XMLCALL + xmlExpFreeCtxt (xmlExpCtxtPtr ctxt); +XMLPUBFUN xmlExpCtxtPtr XMLCALL + xmlExpNewCtxt (int maxNodes, + xmlDictPtr dict); + +XMLPUBFUN int XMLCALL + xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt); + +/* Expressions are trees but the tree is opaque */ +typedef struct _xmlExpNode xmlExpNode; +typedef xmlExpNode *xmlExpNodePtr; + +typedef enum { + XML_EXP_EMPTY = 0, + XML_EXP_FORBID = 1, + XML_EXP_ATOM = 2, + XML_EXP_SEQ = 3, + XML_EXP_OR = 4, + XML_EXP_COUNT = 5 +} xmlExpNodeType; + +/* + * 2 core expressions shared by all for the empty language set + * and for the set with just the empty token + */ +XMLPUBVAR xmlExpNodePtr forbiddenExp; +XMLPUBVAR xmlExpNodePtr emptyExp; + +/* + * Expressions are reference counted internally + */ +XMLPUBFUN void XMLCALL + xmlExpFree (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr); +XMLPUBFUN void XMLCALL + xmlExpRef (xmlExpNodePtr expr); + +/* + * constructors can be either manual or from a string + */ +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpParse (xmlExpCtxtPtr ctxt, + const char *expr); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewAtom (xmlExpCtxtPtr ctxt, + const xmlChar *name, + int len); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewOr (xmlExpCtxtPtr ctxt, + xmlExpNodePtr left, + xmlExpNodePtr right); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewSeq (xmlExpCtxtPtr ctxt, + xmlExpNodePtr left, + xmlExpNodePtr right); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewRange (xmlExpCtxtPtr ctxt, + xmlExpNodePtr subset, + int min, + int max); +/* + * The really interesting APIs + */ +XMLPUBFUN int XMLCALL + xmlExpIsNillable(xmlExpNodePtr expr); +XMLPUBFUN int XMLCALL + xmlExpMaxToken (xmlExpNodePtr expr); +XMLPUBFUN int XMLCALL + xmlExpGetLanguage(xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + const xmlChar**langList, + int len); +XMLPUBFUN int XMLCALL + xmlExpGetStart (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + const xmlChar**tokList, + int len); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpStringDerive(xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + const xmlChar *str, + int len); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpExpDerive (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + xmlExpNodePtr sub); +XMLPUBFUN int XMLCALL + xmlExpSubsume (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + xmlExpNodePtr sub); +XMLPUBFUN void XMLCALL + xmlExpDump (xmlBufferPtr buf, + xmlExpNodePtr expr); +#endif /* LIBXML_EXPR_ENABLED */ +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_REGEXP_ENABLED */ + +#endif /*__XML_REGEXP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlsave.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlsave.h new file mode 100644 index 0000000..fb329b2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlsave.h @@ -0,0 +1,88 @@ +/* + * Summary: the XML document serializer + * Description: API to save document or subtree of document + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_XMLSAVE_H__ +#define __XML_XMLSAVE_H__ + +#include +#include +#include +#include + +#ifdef LIBXML_OUTPUT_ENABLED +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlSaveOption: + * + * This is the set of XML save options that can be passed down + * to the xmlSaveToFd() and similar calls. + */ +typedef enum { + XML_SAVE_FORMAT = 1<<0, /* format save output */ + XML_SAVE_NO_DECL = 1<<1, /* drop the xml declaration */ + XML_SAVE_NO_EMPTY = 1<<2, /* no empty tags */ + XML_SAVE_NO_XHTML = 1<<3, /* disable XHTML1 specific rules */ + XML_SAVE_XHTML = 1<<4, /* force XHTML1 specific rules */ + XML_SAVE_AS_XML = 1<<5, /* force XML serialization on HTML doc */ + XML_SAVE_AS_HTML = 1<<6, /* force HTML serialization on XML doc */ + XML_SAVE_WSNONSIG = 1<<7 /* format with non-significant whitespace */ +} xmlSaveOption; + + +typedef struct _xmlSaveCtxt xmlSaveCtxt; +typedef xmlSaveCtxt *xmlSaveCtxtPtr; + +XMLPUBFUN xmlSaveCtxtPtr XMLCALL + xmlSaveToFd (int fd, + const char *encoding, + int options); +XMLPUBFUN xmlSaveCtxtPtr XMLCALL + xmlSaveToFilename (const char *filename, + const char *encoding, + int options); + +XMLPUBFUN xmlSaveCtxtPtr XMLCALL + xmlSaveToBuffer (xmlBufferPtr buffer, + const char *encoding, + int options); + +XMLPUBFUN xmlSaveCtxtPtr XMLCALL + xmlSaveToIO (xmlOutputWriteCallback iowrite, + xmlOutputCloseCallback ioclose, + void *ioctx, + const char *encoding, + int options); + +XMLPUBFUN long XMLCALL + xmlSaveDoc (xmlSaveCtxtPtr ctxt, + xmlDocPtr doc); +XMLPUBFUN long XMLCALL + xmlSaveTree (xmlSaveCtxtPtr ctxt, + xmlNodePtr node); + +XMLPUBFUN int XMLCALL + xmlSaveFlush (xmlSaveCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlSaveClose (xmlSaveCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlSaveSetEscape (xmlSaveCtxtPtr ctxt, + xmlCharEncodingOutputFunc escape); +XMLPUBFUN int XMLCALL + xmlSaveSetAttrEscape (xmlSaveCtxtPtr ctxt, + xmlCharEncodingOutputFunc escape); +#ifdef __cplusplus +} +#endif +#endif /* LIBXML_OUTPUT_ENABLED */ +#endif /* __XML_XMLSAVE_H__ */ + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlschemas.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlschemas.h new file mode 100644 index 0000000..b90e9d1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlschemas.h @@ -0,0 +1,246 @@ +/* + * Summary: incomplete XML Schemas structure implementation + * Description: interface to the XML Schemas handling and schema validity + * checking, it is incomplete right now. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_SCHEMA_H__ +#define __XML_SCHEMA_H__ + +#include + +#ifdef LIBXML_SCHEMAS_ENABLED + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This error codes are obsolete; not used any more. + */ +typedef enum { + XML_SCHEMAS_ERR_OK = 0, + XML_SCHEMAS_ERR_NOROOT = 1, + XML_SCHEMAS_ERR_UNDECLAREDELEM, + XML_SCHEMAS_ERR_NOTTOPLEVEL, + XML_SCHEMAS_ERR_MISSING, + XML_SCHEMAS_ERR_WRONGELEM, + XML_SCHEMAS_ERR_NOTYPE, + XML_SCHEMAS_ERR_NOROLLBACK, + XML_SCHEMAS_ERR_ISABSTRACT, + XML_SCHEMAS_ERR_NOTEMPTY, + XML_SCHEMAS_ERR_ELEMCONT, + XML_SCHEMAS_ERR_HAVEDEFAULT, + XML_SCHEMAS_ERR_NOTNILLABLE, + XML_SCHEMAS_ERR_EXTRACONTENT, + XML_SCHEMAS_ERR_INVALIDATTR, + XML_SCHEMAS_ERR_INVALIDELEM, + XML_SCHEMAS_ERR_NOTDETERMINIST, + XML_SCHEMAS_ERR_CONSTRUCT, + XML_SCHEMAS_ERR_INTERNAL, + XML_SCHEMAS_ERR_NOTSIMPLE, + XML_SCHEMAS_ERR_ATTRUNKNOWN, + XML_SCHEMAS_ERR_ATTRINVALID, + XML_SCHEMAS_ERR_VALUE, + XML_SCHEMAS_ERR_FACET, + XML_SCHEMAS_ERR_, + XML_SCHEMAS_ERR_XXX +} xmlSchemaValidError; + +/* +* ATTENTION: Change xmlSchemaSetValidOptions's check +* for invalid values, if adding to the validation +* options below. +*/ +/** + * xmlSchemaValidOption: + * + * This is the set of XML Schema validation options. + */ +typedef enum { + XML_SCHEMA_VAL_VC_I_CREATE = 1<<0 + /* Default/fixed: create an attribute node + * or an element's text node on the instance. + */ +} xmlSchemaValidOption; + +/* + XML_SCHEMA_VAL_XSI_ASSEMBLE = 1<<1, + * assemble schemata using + * xsi:schemaLocation and + * xsi:noNamespaceSchemaLocation +*/ + +/** + * The schemas related types are kept internal + */ +typedef struct _xmlSchema xmlSchema; +typedef xmlSchema *xmlSchemaPtr; + +/** + * xmlSchemaValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from an XSD validation + */ +typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) + (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); + +/** + * xmlSchemaValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from an XSD validation + */ +typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) + (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); + +/** + * A schemas validation context + */ +typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; +typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; + +typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; +typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; + +/** + * xmlSchemaValidityLocatorFunc: + * @ctx: user provided context + * @file: returned file information + * @line: returned line information + * + * A schemas validation locator, a callback called by the validator. + * This is used when file or node information are not available + * to find out what file and line number are affected + * + * Returns: 0 in case of success and -1 in case of error + */ + +typedef int (XMLCDECL *xmlSchemaValidityLocatorFunc) (void *ctx, + const char **file, unsigned long *line); + +/* + * Interfaces for parsing. + */ +XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL + xmlSchemaNewParserCtxt (const char *URL); +XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL + xmlSchemaNewMemParserCtxt (const char *buffer, + int size); +XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL + xmlSchemaNewDocParserCtxt (xmlDocPtr doc); +XMLPUBFUN void XMLCALL + xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, + xmlSchemaValidityErrorFunc err, + xmlSchemaValidityWarningFunc warn, + void *ctx); +XMLPUBFUN void XMLCALL + xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt, + xmlStructuredErrorFunc serror, + void *ctx); +XMLPUBFUN int XMLCALL + xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt, + xmlSchemaValidityErrorFunc * err, + xmlSchemaValidityWarningFunc * warn, + void **ctx); +XMLPUBFUN int XMLCALL + xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); + +XMLPUBFUN xmlSchemaPtr XMLCALL + xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlSchemaFree (xmlSchemaPtr schema); +#ifdef LIBXML_OUTPUT_ENABLED +XMLPUBFUN void XMLCALL + xmlSchemaDump (FILE *output, + xmlSchemaPtr schema); +#endif /* LIBXML_OUTPUT_ENABLED */ +/* + * Interfaces for validating + */ +XMLPUBFUN void XMLCALL + xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, + xmlSchemaValidityErrorFunc err, + xmlSchemaValidityWarningFunc warn, + void *ctx); +XMLPUBFUN void XMLCALL + xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, + void *ctx); +XMLPUBFUN int XMLCALL + xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt, + xmlSchemaValidityErrorFunc *err, + xmlSchemaValidityWarningFunc *warn, + void **ctx); +XMLPUBFUN int XMLCALL + xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, + int options); +XMLPUBFUN void XMLCALL + xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, + const char *filename); +XMLPUBFUN int XMLCALL + xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); + +XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL + xmlSchemaNewValidCtxt (xmlSchemaPtr schema); +XMLPUBFUN void XMLCALL + xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, + xmlDocPtr instance); +XMLPUBFUN int XMLCALL + xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt, + xmlNodePtr elem); +XMLPUBFUN int XMLCALL + xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt, + xmlParserInputBufferPtr input, + xmlCharEncoding enc, + xmlSAXHandlerPtr sax, + void *user_data); +XMLPUBFUN int XMLCALL + xmlSchemaValidateFile (xmlSchemaValidCtxtPtr ctxt, + const char * filename, + int options); + +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt); + +/* + * Interface to insert Schemas SAX validation in a SAX stream + */ +typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; +typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; + +XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL + xmlSchemaSAXPlug (xmlSchemaValidCtxtPtr ctxt, + xmlSAXHandlerPtr *sax, + void **user_data); +XMLPUBFUN int XMLCALL + xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); + + +XMLPUBFUN void XMLCALL + xmlSchemaValidateSetLocator (xmlSchemaValidCtxtPtr vctxt, + xmlSchemaValidityLocatorFunc f, + void *ctxt); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_SCHEMAS_ENABLED */ +#endif /* __XML_SCHEMA_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlschemastypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlschemastypes.h new file mode 100644 index 0000000..5d588f9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlschemastypes.h @@ -0,0 +1,152 @@ +/* + * Summary: implementation of XML Schema Datatypes + * Description: module providing the XML Schema Datatypes implementation + * both definition and validity checking + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_SCHEMA_TYPES_H__ +#define __XML_SCHEMA_TYPES_H__ + +#include + +#ifdef LIBXML_SCHEMAS_ENABLED + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + XML_SCHEMA_WHITESPACE_UNKNOWN = 0, + XML_SCHEMA_WHITESPACE_PRESERVE = 1, + XML_SCHEMA_WHITESPACE_REPLACE = 2, + XML_SCHEMA_WHITESPACE_COLLAPSE = 3 +} xmlSchemaWhitespaceValueType; + +XMLPUBFUN void XMLCALL + xmlSchemaInitTypes (void); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlSchemaCleanupTypes (void); +XMLPUBFUN xmlSchemaTypePtr XMLCALL + xmlSchemaGetPredefinedType (const xmlChar *name, + const xmlChar *ns); +XMLPUBFUN int XMLCALL + xmlSchemaValidatePredefinedType (xmlSchemaTypePtr type, + const xmlChar *value, + xmlSchemaValPtr *val); +XMLPUBFUN int XMLCALL + xmlSchemaValPredefTypeNode (xmlSchemaTypePtr type, + const xmlChar *value, + xmlSchemaValPtr *val, + xmlNodePtr node); +XMLPUBFUN int XMLCALL + xmlSchemaValidateFacet (xmlSchemaTypePtr base, + xmlSchemaFacetPtr facet, + const xmlChar *value, + xmlSchemaValPtr val); +XMLPUBFUN int XMLCALL + xmlSchemaValidateFacetWhtsp (xmlSchemaFacetPtr facet, + xmlSchemaWhitespaceValueType fws, + xmlSchemaValType valType, + const xmlChar *value, + xmlSchemaValPtr val, + xmlSchemaWhitespaceValueType ws); +XMLPUBFUN void XMLCALL + xmlSchemaFreeValue (xmlSchemaValPtr val); +XMLPUBFUN xmlSchemaFacetPtr XMLCALL + xmlSchemaNewFacet (void); +XMLPUBFUN int XMLCALL + xmlSchemaCheckFacet (xmlSchemaFacetPtr facet, + xmlSchemaTypePtr typeDecl, + xmlSchemaParserCtxtPtr ctxt, + const xmlChar *name); +XMLPUBFUN void XMLCALL + xmlSchemaFreeFacet (xmlSchemaFacetPtr facet); +XMLPUBFUN int XMLCALL + xmlSchemaCompareValues (xmlSchemaValPtr x, + xmlSchemaValPtr y); +XMLPUBFUN xmlSchemaTypePtr XMLCALL + xmlSchemaGetBuiltInListSimpleTypeItemType (xmlSchemaTypePtr type); +XMLPUBFUN int XMLCALL + xmlSchemaValidateListSimpleTypeFacet (xmlSchemaFacetPtr facet, + const xmlChar *value, + unsigned long actualLen, + unsigned long *expectedLen); +XMLPUBFUN xmlSchemaTypePtr XMLCALL + xmlSchemaGetBuiltInType (xmlSchemaValType type); +XMLPUBFUN int XMLCALL + xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type, + int facetType); +XMLPUBFUN xmlChar * XMLCALL + xmlSchemaCollapseString (const xmlChar *value); +XMLPUBFUN xmlChar * XMLCALL + xmlSchemaWhiteSpaceReplace (const xmlChar *value); +XMLPUBFUN unsigned long XMLCALL + xmlSchemaGetFacetValueAsULong (xmlSchemaFacetPtr facet); +XMLPUBFUN int XMLCALL + xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type, + xmlSchemaFacetPtr facet, + const xmlChar *value, + xmlSchemaValPtr val, + unsigned long *length); +XMLPUBFUN int XMLCALL + xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet, + xmlSchemaValType valType, + const xmlChar *value, + xmlSchemaValPtr val, + unsigned long *length, + xmlSchemaWhitespaceValueType ws); +XMLPUBFUN int XMLCALL + xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, + const xmlChar *value, + xmlSchemaValPtr *val, + xmlNodePtr node); +XMLPUBFUN int XMLCALL + xmlSchemaGetCanonValue (xmlSchemaValPtr val, + const xmlChar **retValue); +XMLPUBFUN int XMLCALL + xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val, + const xmlChar **retValue, + xmlSchemaWhitespaceValueType ws); +XMLPUBFUN int XMLCALL + xmlSchemaValueAppend (xmlSchemaValPtr prev, + xmlSchemaValPtr cur); +XMLPUBFUN xmlSchemaValPtr XMLCALL + xmlSchemaValueGetNext (xmlSchemaValPtr cur); +XMLPUBFUN const xmlChar * XMLCALL + xmlSchemaValueGetAsString (xmlSchemaValPtr val); +XMLPUBFUN int XMLCALL + xmlSchemaValueGetAsBoolean (xmlSchemaValPtr val); +XMLPUBFUN xmlSchemaValPtr XMLCALL + xmlSchemaNewStringValue (xmlSchemaValType type, + const xmlChar *value); +XMLPUBFUN xmlSchemaValPtr XMLCALL + xmlSchemaNewNOTATIONValue (const xmlChar *name, + const xmlChar *ns); +XMLPUBFUN xmlSchemaValPtr XMLCALL + xmlSchemaNewQNameValue (const xmlChar *namespaceName, + const xmlChar *localName); +XMLPUBFUN int XMLCALL + xmlSchemaCompareValuesWhtsp (xmlSchemaValPtr x, + xmlSchemaWhitespaceValueType xws, + xmlSchemaValPtr y, + xmlSchemaWhitespaceValueType yws); +XMLPUBFUN xmlSchemaValPtr XMLCALL + xmlSchemaCopyValue (xmlSchemaValPtr val); +XMLPUBFUN xmlSchemaValType XMLCALL + xmlSchemaGetValType (xmlSchemaValPtr val); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_SCHEMAS_ENABLED */ +#endif /* __XML_SCHEMA_TYPES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlstring.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlstring.h new file mode 100644 index 0000000..2d0b2d1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlstring.h @@ -0,0 +1,140 @@ +/* + * Summary: set of routines to process strings + * Description: type and interfaces needed for the internal string handling + * of the library, especially UTF8 processing. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_STRING_H__ +#define __XML_STRING_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * xmlChar: + * + * This is a basic byte in an UTF-8 encoded string. + * It's unsigned allowing to pinpoint case where char * are assigned + * to xmlChar * (possibly making serialization back impossible). + */ +typedef unsigned char xmlChar; + +/** + * BAD_CAST: + * + * Macro to cast a string to an xmlChar * when one know its safe. + */ +#define BAD_CAST (xmlChar *) + +/* + * xmlChar handling + */ +XMLPUBFUN xmlChar * XMLCALL + xmlStrdup (const xmlChar *cur); +XMLPUBFUN xmlChar * XMLCALL + xmlStrndup (const xmlChar *cur, + int len); +XMLPUBFUN xmlChar * XMLCALL + xmlCharStrndup (const char *cur, + int len); +XMLPUBFUN xmlChar * XMLCALL + xmlCharStrdup (const char *cur); +XMLPUBFUN xmlChar * XMLCALL + xmlStrsub (const xmlChar *str, + int start, + int len); +XMLPUBFUN const xmlChar * XMLCALL + xmlStrchr (const xmlChar *str, + xmlChar val); +XMLPUBFUN const xmlChar * XMLCALL + xmlStrstr (const xmlChar *str, + const xmlChar *val); +XMLPUBFUN const xmlChar * XMLCALL + xmlStrcasestr (const xmlChar *str, + const xmlChar *val); +XMLPUBFUN int XMLCALL + xmlStrcmp (const xmlChar *str1, + const xmlChar *str2); +XMLPUBFUN int XMLCALL + xmlStrncmp (const xmlChar *str1, + const xmlChar *str2, + int len); +XMLPUBFUN int XMLCALL + xmlStrcasecmp (const xmlChar *str1, + const xmlChar *str2); +XMLPUBFUN int XMLCALL + xmlStrncasecmp (const xmlChar *str1, + const xmlChar *str2, + int len); +XMLPUBFUN int XMLCALL + xmlStrEqual (const xmlChar *str1, + const xmlChar *str2); +XMLPUBFUN int XMLCALL + xmlStrQEqual (const xmlChar *pref, + const xmlChar *name, + const xmlChar *str); +XMLPUBFUN int XMLCALL + xmlStrlen (const xmlChar *str); +XMLPUBFUN xmlChar * XMLCALL + xmlStrcat (xmlChar *cur, + const xmlChar *add); +XMLPUBFUN xmlChar * XMLCALL + xmlStrncat (xmlChar *cur, + const xmlChar *add, + int len); +XMLPUBFUN xmlChar * XMLCALL + xmlStrncatNew (const xmlChar *str1, + const xmlChar *str2, + int len); +XMLPUBFUN int XMLCALL + xmlStrPrintf (xmlChar *buf, + int len, + const char *msg, + ...) LIBXML_ATTR_FORMAT(3,4); +XMLPUBFUN int XMLCALL + xmlStrVPrintf (xmlChar *buf, + int len, + const char *msg, + va_list ap) LIBXML_ATTR_FORMAT(3,0); + +XMLPUBFUN int XMLCALL + xmlGetUTF8Char (const unsigned char *utf, + int *len); +XMLPUBFUN int XMLCALL + xmlCheckUTF8 (const unsigned char *utf); +XMLPUBFUN int XMLCALL + xmlUTF8Strsize (const xmlChar *utf, + int len); +XMLPUBFUN xmlChar * XMLCALL + xmlUTF8Strndup (const xmlChar *utf, + int len); +XMLPUBFUN const xmlChar * XMLCALL + xmlUTF8Strpos (const xmlChar *utf, + int pos); +XMLPUBFUN int XMLCALL + xmlUTF8Strloc (const xmlChar *utf, + const xmlChar *utfchar); +XMLPUBFUN xmlChar * XMLCALL + xmlUTF8Strsub (const xmlChar *utf, + int start, + int len); +XMLPUBFUN int XMLCALL + xmlUTF8Strlen (const xmlChar *utf); +XMLPUBFUN int XMLCALL + xmlUTF8Size (const xmlChar *utf); +XMLPUBFUN int XMLCALL + xmlUTF8Charcmp (const xmlChar *utf1, + const xmlChar *utf2); + +#ifdef __cplusplus +} +#endif +#endif /* __XML_STRING_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlunicode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlunicode.h new file mode 100644 index 0000000..01ac8b6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlunicode.h @@ -0,0 +1,202 @@ +/* + * Summary: Unicode character APIs + * Description: API for the Unicode character APIs + * + * This file is automatically generated from the + * UCS description files of the Unicode Character Database + * http://www.unicode.org/Public/4.0-Update1/UCD-4.0.1.html + * using the genUnicode.py Python script. + * + * Generation date: Mon Mar 27 11:09:52 2006 + * Sources: Blocks-4.0.1.txt UnicodeData-4.0.1.txt + * Author: Daniel Veillard + */ + +#ifndef __XML_UNICODE_H__ +#define __XML_UNICODE_H__ + +#include + +#ifdef LIBXML_UNICODE_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +XMLPUBFUN int XMLCALL xmlUCSIsAegeanNumbers (int code); +XMLPUBFUN int XMLCALL xmlUCSIsAlphabeticPresentationForms (int code); +XMLPUBFUN int XMLCALL xmlUCSIsArabic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsA (int code); +XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsB (int code); +XMLPUBFUN int XMLCALL xmlUCSIsArmenian (int code); +XMLPUBFUN int XMLCALL xmlUCSIsArrows (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBasicLatin (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBengali (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBlockElements (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBopomofo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBopomofoExtended (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBoxDrawing (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBraillePatterns (int code); +XMLPUBFUN int XMLCALL xmlUCSIsBuhid (int code); +XMLPUBFUN int XMLCALL xmlUCSIsByzantineMusicalSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibility (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityForms (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographs (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographsSupplement (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKRadicalsSupplement (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKSymbolsandPunctuation (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographs (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionA (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionB (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCherokee (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarks (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarksforSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCombiningHalfMarks (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCombiningMarksforSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsControlPictures (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCurrencySymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCypriotSyllabary (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCyrillic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCyrillicSupplement (int code); +XMLPUBFUN int XMLCALL xmlUCSIsDeseret (int code); +XMLPUBFUN int XMLCALL xmlUCSIsDevanagari (int code); +XMLPUBFUN int XMLCALL xmlUCSIsDingbats (int code); +XMLPUBFUN int XMLCALL xmlUCSIsEnclosedAlphanumerics (int code); +XMLPUBFUN int XMLCALL xmlUCSIsEnclosedCJKLettersandMonths (int code); +XMLPUBFUN int XMLCALL xmlUCSIsEthiopic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGeneralPunctuation (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGeometricShapes (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGeorgian (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGothic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGreek (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGreekExtended (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGreekandCoptic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGujarati (int code); +XMLPUBFUN int XMLCALL xmlUCSIsGurmukhi (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHalfwidthandFullwidthForms (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHangulCompatibilityJamo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHangulJamo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHangulSyllables (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHanunoo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHebrew (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHighPrivateUseSurrogates (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHighSurrogates (int code); +XMLPUBFUN int XMLCALL xmlUCSIsHiragana (int code); +XMLPUBFUN int XMLCALL xmlUCSIsIPAExtensions (int code); +XMLPUBFUN int XMLCALL xmlUCSIsIdeographicDescriptionCharacters (int code); +XMLPUBFUN int XMLCALL xmlUCSIsKanbun (int code); +XMLPUBFUN int XMLCALL xmlUCSIsKangxiRadicals (int code); +XMLPUBFUN int XMLCALL xmlUCSIsKannada (int code); +XMLPUBFUN int XMLCALL xmlUCSIsKatakana (int code); +XMLPUBFUN int XMLCALL xmlUCSIsKatakanaPhoneticExtensions (int code); +XMLPUBFUN int XMLCALL xmlUCSIsKhmer (int code); +XMLPUBFUN int XMLCALL xmlUCSIsKhmerSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLao (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLatin1Supplement (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedA (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedB (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedAdditional (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLetterlikeSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLimbu (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLinearBIdeograms (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLinearBSyllabary (int code); +XMLPUBFUN int XMLCALL xmlUCSIsLowSurrogates (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMalayalam (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMathematicalAlphanumericSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMathematicalOperators (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsA (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsB (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbolsandArrows (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousTechnical (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMongolian (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMusicalSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsMyanmar (int code); +XMLPUBFUN int XMLCALL xmlUCSIsNumberForms (int code); +XMLPUBFUN int XMLCALL xmlUCSIsOgham (int code); +XMLPUBFUN int XMLCALL xmlUCSIsOldItalic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsOpticalCharacterRecognition (int code); +XMLPUBFUN int XMLCALL xmlUCSIsOriya (int code); +XMLPUBFUN int XMLCALL xmlUCSIsOsmanya (int code); +XMLPUBFUN int XMLCALL xmlUCSIsPhoneticExtensions (int code); +XMLPUBFUN int XMLCALL xmlUCSIsPrivateUse (int code); +XMLPUBFUN int XMLCALL xmlUCSIsPrivateUseArea (int code); +XMLPUBFUN int XMLCALL xmlUCSIsRunic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsShavian (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSinhala (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSmallFormVariants (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSpacingModifierLetters (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSpecials (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSuperscriptsandSubscripts (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsA (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsB (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSupplementalMathematicalOperators (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaA (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaB (int code); +XMLPUBFUN int XMLCALL xmlUCSIsSyriac (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTagalog (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTagbanwa (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTags (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTaiLe (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTaiXuanJingSymbols (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTamil (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTelugu (int code); +XMLPUBFUN int XMLCALL xmlUCSIsThaana (int code); +XMLPUBFUN int XMLCALL xmlUCSIsThai (int code); +XMLPUBFUN int XMLCALL xmlUCSIsTibetan (int code); +XMLPUBFUN int XMLCALL xmlUCSIsUgaritic (int code); +XMLPUBFUN int XMLCALL xmlUCSIsUnifiedCanadianAboriginalSyllabics (int code); +XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectors (int code); +XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectorsSupplement (int code); +XMLPUBFUN int XMLCALL xmlUCSIsYiRadicals (int code); +XMLPUBFUN int XMLCALL xmlUCSIsYiSyllables (int code); +XMLPUBFUN int XMLCALL xmlUCSIsYijingHexagramSymbols (int code); + +XMLPUBFUN int XMLCALL xmlUCSIsBlock (int code, const char *block); + +XMLPUBFUN int XMLCALL xmlUCSIsCatC (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatCc (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatCf (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatCo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatCs (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatL (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatLl (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatLm (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatLo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatLt (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatLu (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatM (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatMc (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatMe (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatMn (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatN (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatNd (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatNl (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatNo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatP (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatPc (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatPd (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatPe (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatPf (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatPi (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatPo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatPs (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatS (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatSc (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatSk (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatSm (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatSo (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatZ (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatZl (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatZp (int code); +XMLPUBFUN int XMLCALL xmlUCSIsCatZs (int code); + +XMLPUBFUN int XMLCALL xmlUCSIsCat (int code, const char *cat); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_UNICODE_ENABLED */ + +#endif /* __XML_UNICODE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlversion.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlversion.h new file mode 100644 index 0000000..01f0ca3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlversion.h @@ -0,0 +1,503 @@ +/* + * Summary: compile-time version information + * Description: compile-time version information for the XML library + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_VERSION_H__ +#define __XML_VERSION_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * use those to be sure nothing nasty will happen if + * your library and includes mismatch + */ +#ifndef LIBXML2_COMPILING_MSCCDEF +XMLPUBFUN void XMLCALL xmlCheckVersion(int version); +#endif /* LIBXML2_COMPILING_MSCCDEF */ + +/** + * LIBXML_DOTTED_VERSION: + * + * the version string like "1.2.3" + */ +#define LIBXML_DOTTED_VERSION "2.10.3" + +/** + * LIBXML_VERSION: + * + * the version number: 1.2.3 value is 10203 + */ +#define LIBXML_VERSION 21003 + +/** + * LIBXML_VERSION_STRING: + * + * the version number string, 1.2.3 value is "10203" + */ +#define LIBXML_VERSION_STRING "21003" + +/** + * LIBXML_VERSION_EXTRA: + * + * extra version information, used to show a git commit description + */ +#define LIBXML_VERSION_EXTRA "" + +/** + * LIBXML_TEST_VERSION: + * + * Macro to check that the libxml version in use is compatible with + * the version the software has been compiled against + */ +#define LIBXML_TEST_VERSION xmlCheckVersion(21003); + +#ifndef VMS +#if 0 +/** + * WITH_TRIO: + * + * defined if the trio support need to be configured in + */ +#define WITH_TRIO +#else +/** + * WITHOUT_TRIO: + * + * defined if the trio support should not be configured in + */ +#define WITHOUT_TRIO +#endif +#else /* VMS */ +/** + * WITH_TRIO: + * + * defined if the trio support need to be configured in + */ +#define WITH_TRIO 1 +#endif /* VMS */ + +/** + * LIBXML_THREAD_ENABLED: + * + * Whether the thread support is configured in + */ +#if 0 +#define LIBXML_THREAD_ENABLED +#endif + +/** + * LIBXML_THREAD_ALLOC_ENABLED: + * + * Whether the allocation hooks are per-thread + */ +#if 0 +#define LIBXML_THREAD_ALLOC_ENABLED +#endif + +/** + * LIBXML_TREE_ENABLED: + * + * Whether the DOM like tree manipulation API support is configured in + */ +#if 1 +#define LIBXML_TREE_ENABLED +#endif + +/** + * LIBXML_OUTPUT_ENABLED: + * + * Whether the serialization/saving support is configured in + */ +#if 1 +#define LIBXML_OUTPUT_ENABLED +#endif + +/** + * LIBXML_PUSH_ENABLED: + * + * Whether the push parsing interfaces are configured in + */ +#if 1 +#define LIBXML_PUSH_ENABLED +#endif + +/** + * LIBXML_READER_ENABLED: + * + * Whether the xmlReader parsing interface is configured in + */ +#if 1 +#define LIBXML_READER_ENABLED +#endif + +/** + * LIBXML_PATTERN_ENABLED: + * + * Whether the xmlPattern node selection interface is configured in + */ +#if 0 +#define LIBXML_PATTERN_ENABLED +#endif + +/** + * LIBXML_WRITER_ENABLED: + * + * Whether the xmlWriter saving interface is configured in + */ +#if 1 +#define LIBXML_WRITER_ENABLED +#endif + +/** + * LIBXML_SAX1_ENABLED: + * + * Whether the older SAX1 interface is configured in + */ +#if 0 +#define LIBXML_SAX1_ENABLED +#endif + +/** + * LIBXML_FTP_ENABLED: + * + * Whether the FTP support is configured in + */ +#if 0 +#define LIBXML_FTP_ENABLED +#endif + +/** + * LIBXML_HTTP_ENABLED: + * + * Whether the HTTP support is configured in + */ +#if 1 +#define LIBXML_HTTP_ENABLED +#endif + +/** + * LIBXML_VALID_ENABLED: + * + * Whether the DTD validation support is configured in + */ +#if 1 +#define LIBXML_VALID_ENABLED +#endif + +/** + * LIBXML_HTML_ENABLED: + * + * Whether the HTML support is configured in + */ +#if 0 +#define LIBXML_HTML_ENABLED +#endif + +/** + * LIBXML_LEGACY_ENABLED: + * + * Whether the deprecated APIs are compiled in for compatibility + */ +#if 0 +#define LIBXML_LEGACY_ENABLED +#endif + +/** + * LIBXML_C14N_ENABLED: + * + * Whether the Canonicalization support is configured in + */ +#if 0 +#define LIBXML_C14N_ENABLED +#endif + +/** + * LIBXML_CATALOG_ENABLED: + * + * Whether the Catalog support is configured in + */ +#if 0 +#define LIBXML_CATALOG_ENABLED +#endif + +/** + * LIBXML_XPATH_ENABLED: + * + * Whether XPath is configured in + */ +#if 0 +#define LIBXML_XPATH_ENABLED +#endif + +/** + * LIBXML_XPTR_ENABLED: + * + * Whether XPointer is configured in + */ +#if 0 +#define LIBXML_XPTR_ENABLED +#endif + +/** + * LIBXML_XPTR_LOCS_ENABLED: + * + * Whether support for XPointer locations is configured in + */ +#if 0 +#define LIBXML_XPTR_LOCS_ENABLED +#endif + +/** + * LIBXML_XINCLUDE_ENABLED: + * + * Whether XInclude is configured in + */ +#if 0 +#define LIBXML_XINCLUDE_ENABLED +#endif + +/** + * LIBXML_ICONV_ENABLED: + * + * Whether iconv support is available + */ +#if 0 +#define LIBXML_ICONV_ENABLED +#endif + +/** + * LIBXML_ICU_ENABLED: + * + * Whether icu support is available + */ +#if 0 +#define LIBXML_ICU_ENABLED +#endif + +/** + * LIBXML_ISO8859X_ENABLED: + * + * Whether ISO-8859-* support is made available in case iconv is not + */ +#if 0 +#define LIBXML_ISO8859X_ENABLED +#endif + +/** + * LIBXML_DEBUG_ENABLED: + * + * Whether Debugging module is configured in + */ +#if 0 +#define LIBXML_DEBUG_ENABLED +#endif + +/** + * DEBUG_MEMORY_LOCATION: + * + * Whether the memory debugging is configured in + */ +#if 0 +#define DEBUG_MEMORY_LOCATION +#endif + +/** + * LIBXML_DEBUG_RUNTIME: + * + * Whether the runtime debugging is configured in + */ +#if 0 +#define LIBXML_DEBUG_RUNTIME +#endif + +/** + * LIBXML_UNICODE_ENABLED: + * + * Whether the Unicode related interfaces are compiled in + */ +#if 0 +#define LIBXML_UNICODE_ENABLED +#endif + +/** + * LIBXML_REGEXP_ENABLED: + * + * Whether the regular expressions interfaces are compiled in + */ +#if 0 +#define LIBXML_REGEXP_ENABLED +#endif + +/** + * LIBXML_AUTOMATA_ENABLED: + * + * Whether the automata interfaces are compiled in + */ +#if 0 +#define LIBXML_AUTOMATA_ENABLED +#endif + +/** + * LIBXML_EXPR_ENABLED: + * + * Whether the formal expressions interfaces are compiled in + * + * This code is unused and disabled unconditionally for now. + */ +#if 0 +#define LIBXML_EXPR_ENABLED +#endif + +/** + * LIBXML_SCHEMAS_ENABLED: + * + * Whether the Schemas validation interfaces are compiled in + */ +#if 0 +#define LIBXML_SCHEMAS_ENABLED +#endif + +/** + * LIBXML_SCHEMATRON_ENABLED: + * + * Whether the Schematron validation interfaces are compiled in + */ +#if 0 +#define LIBXML_SCHEMATRON_ENABLED +#endif + +/** + * LIBXML_MODULES_ENABLED: + * + * Whether the module interfaces are compiled in + */ +#if 0 +#define LIBXML_MODULES_ENABLED +/** + * LIBXML_MODULE_EXTENSION: + * + * the string suffix used by dynamic modules (usually shared libraries) + */ +#define LIBXML_MODULE_EXTENSION "" +#endif + +/** + * LIBXML_ZLIB_ENABLED: + * + * Whether the Zlib support is compiled in + */ +#if 1 +#define LIBXML_ZLIB_ENABLED +#endif + +/** + * LIBXML_LZMA_ENABLED: + * + * Whether the Lzma support is compiled in + */ +#if 0 +#define LIBXML_LZMA_ENABLED +#endif + +#ifdef __GNUC__ + +/** + * ATTRIBUTE_UNUSED: + * + * Macro used to signal to GCC unused function parameters + */ + +#ifndef ATTRIBUTE_UNUSED +# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7))) +# define ATTRIBUTE_UNUSED __attribute__((unused)) +# else +# define ATTRIBUTE_UNUSED +# endif +#endif + +/** + * LIBXML_ATTR_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ + +#ifndef LIBXML_ATTR_ALLOC_SIZE +# if (!defined(__clang__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))) +# define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x))) +# else +# define LIBXML_ATTR_ALLOC_SIZE(x) +# endif +#else +# define LIBXML_ATTR_ALLOC_SIZE(x) +#endif + +/** + * LIBXML_ATTR_FORMAT: + * + * Macro used to indicate to GCC the parameter are printf like + */ + +#ifndef LIBXML_ATTR_FORMAT +# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) +# define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) +# else +# define LIBXML_ATTR_FORMAT(fmt,args) +# endif +#else +# define LIBXML_ATTR_FORMAT(fmt,args) +#endif + +#ifndef XML_DEPRECATED +# ifdef IN_LIBXML +# define XML_DEPRECATED +# else +/* Available since at least GCC 3.1 */ +# define XML_DEPRECATED __attribute__((deprecated)) +# endif +#endif + +#else /* ! __GNUC__ */ +/** + * ATTRIBUTE_UNUSED: + * + * Macro used to signal to GCC unused function parameters + */ +#define ATTRIBUTE_UNUSED +/** + * LIBXML_ATTR_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ +#define LIBXML_ATTR_ALLOC_SIZE(x) +/** + * LIBXML_ATTR_FORMAT: + * + * Macro used to indicate to GCC the parameter are printf like + */ +#define LIBXML_ATTR_FORMAT(fmt,args) +/** + * XML_DEPRECATED: + * + * Macro used to indicate that a function, variable, type or struct member + * is deprecated. + */ +#ifndef XML_DEPRECATED +#define XML_DEPRECATED +#endif +#endif /* __GNUC__ */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlwriter.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlwriter.h new file mode 100644 index 0000000..dd5add3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xmlwriter.h @@ -0,0 +1,488 @@ +/* + * Summary: text writing API for XML + * Description: text writing API for XML + * + * Copy: See Copyright for the status of this software. + * + * Author: Alfred Mickautsch + */ + +#ifndef __XML_XMLWRITER_H__ +#define __XML_XMLWRITER_H__ + +#include + +#ifdef LIBXML_WRITER_ENABLED + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + typedef struct _xmlTextWriter xmlTextWriter; + typedef xmlTextWriter *xmlTextWriterPtr; + +/* + * Constructors & Destructor + */ + XMLPUBFUN xmlTextWriterPtr XMLCALL + xmlNewTextWriter(xmlOutputBufferPtr out); + XMLPUBFUN xmlTextWriterPtr XMLCALL + xmlNewTextWriterFilename(const char *uri, int compression); + XMLPUBFUN xmlTextWriterPtr XMLCALL + xmlNewTextWriterMemory(xmlBufferPtr buf, int compression); + XMLPUBFUN xmlTextWriterPtr XMLCALL + xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression); + XMLPUBFUN xmlTextWriterPtr XMLCALL + xmlNewTextWriterDoc(xmlDocPtr * doc, int compression); + XMLPUBFUN xmlTextWriterPtr XMLCALL + xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node, + int compression); + XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer); + +/* + * Functions + */ + + +/* + * Document + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartDocument(xmlTextWriterPtr writer, + const char *version, + const char *encoding, + const char *standalone); + XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr + writer); + +/* + * Comments + */ + XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr + writer); + XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(2,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr + writer, + const xmlChar * + content); + +/* + * Elements + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartElement(xmlTextWriterPtr writer, + const xmlChar * name); + XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr + writer, + const xmlChar * + prefix, + const xmlChar * name, + const xmlChar * + namespaceURI); + XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer); + XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr + writer); + +/* + * Elements conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr + writer, + const xmlChar * name, + const xmlChar * + content); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer, + const xmlChar * prefix, + const xmlChar * name, + const xmlChar * namespaceURI, + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, + const xmlChar * prefix, + const xmlChar * name, + const xmlChar * namespaceURI, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(5,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr + writer, + const xmlChar * + prefix, + const xmlChar * name, + const xmlChar * + namespaceURI, + const xmlChar * + content); + +/* + * Text + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(2,0); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, + const xmlChar * content, int len); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteRaw(xmlTextWriterPtr writer, + const xmlChar * content); + XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr + writer, + const char + *format, ...) + LIBXML_ATTR_FORMAT(2,3); + XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr + writer, + const char + *format, + va_list argptr) + LIBXML_ATTR_FORMAT(2,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, + const xmlChar * + content); + XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer, + const char *data, + int start, int len); + XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer, + const char *data, + int start, int len); + +/* + * Attributes + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartAttribute(xmlTextWriterPtr writer, + const xmlChar * name); + XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr + writer, + const xmlChar * + prefix, + const xmlChar * + name, + const xmlChar * + namespaceURI); + XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr + writer); + +/* + * Attributes conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr + writer, + const xmlChar * name, + const xmlChar * + content); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer, + const xmlChar * prefix, + const xmlChar * name, + const xmlChar * namespaceURI, + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, + const xmlChar * prefix, + const xmlChar * name, + const xmlChar * namespaceURI, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(5,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr + writer, + const xmlChar * + prefix, + const xmlChar * + name, + const xmlChar * + namespaceURI, + const xmlChar * + content); + +/* + * PI's + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartPI(xmlTextWriterPtr writer, + const xmlChar * target); + XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer); + +/* + * PI conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, + const xmlChar * target, + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, + const xmlChar * target, + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(3,0); + XMLPUBFUN int XMLCALL + xmlTextWriterWritePI(xmlTextWriterPtr writer, + const xmlChar * target, + const xmlChar * content); + +/** + * xmlTextWriterWriteProcessingInstruction: + * + * This macro maps to xmlTextWriterWritePI + */ +#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI + +/* + * CDATA + */ + XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer); + XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer); + +/* + * CDATA conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(2,0); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, + const xmlChar * content); + +/* + * DTD + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartDTD(xmlTextWriterPtr writer, + const xmlChar * name, + const xmlChar * pubid, + const xmlChar * sysid); + XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer); + +/* + * DTD conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer, + const xmlChar * name, + const xmlChar * pubid, + const xmlChar * sysid, + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, + const xmlChar * name, + const xmlChar * pubid, + const xmlChar * sysid, + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(5,0); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteDTD(xmlTextWriterPtr writer, + const xmlChar * name, + const xmlChar * pubid, + const xmlChar * sysid, + const xmlChar * subset); + +/** + * xmlTextWriterWriteDocType: + * + * this macro maps to xmlTextWriterWriteDTD + */ +#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD + +/* + * DTD element definition + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartDTDElement(xmlTextWriterPtr writer, + const xmlChar * name); + XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr + writer); + +/* + * DTD element definition conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr + writer, + const xmlChar * + name, + const xmlChar * + content); + +/* + * DTD attribute list definition + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer, + const xmlChar * name); + XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr + writer); + +/* + * DTD attribute list definition conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, + const xmlChar * name, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); + XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr + writer, + const xmlChar * + name, + const xmlChar * + content); + +/* + * DTD entity definition + */ + XMLPUBFUN int XMLCALL + xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer, + int pe, const xmlChar * name); + XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr + writer); + +/* + * DTD entity definition conveniency functions + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, + int pe, + const xmlChar * name, + const char *format, ...) + LIBXML_ATTR_FORMAT(4,5); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, + int pe, + const xmlChar * name, + const char *format, + va_list argptr) + LIBXML_ATTR_FORMAT(4,0); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, + int pe, + const xmlChar * name, + const xmlChar * content); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer, + int pe, + const xmlChar * name, + const xmlChar * pubid, + const xmlChar * sysid, + const xmlChar * ndataid); + XMLPUBFUN int XMLCALL + xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr + writer, + const xmlChar * pubid, + const xmlChar * sysid, + const xmlChar * + ndataid); + XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr + writer, int pe, + const xmlChar * name, + const xmlChar * + pubid, + const xmlChar * + sysid, + const xmlChar * + ndataid, + const xmlChar * + content); + +/* + * DTD notation definition + */ + XMLPUBFUN int XMLCALL + xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer, + const xmlChar * name, + const xmlChar * pubid, + const xmlChar * sysid); + +/* + * Indentation + */ + XMLPUBFUN int XMLCALL + xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent); + XMLPUBFUN int XMLCALL + xmlTextWriterSetIndentString(xmlTextWriterPtr writer, + const xmlChar * str); + + XMLPUBFUN int XMLCALL + xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar); + + +/* + * misc + */ + XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_WRITER_ENABLED */ + +#endif /* __XML_XMLWRITER_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpath.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpath.h new file mode 100644 index 0000000..bfbc5d6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpath.h @@ -0,0 +1,575 @@ +/* + * Summary: XML Path Language implementation + * Description: API for the XML Path Language implementation + * + * XML Path Language implementation + * XPath is a language for addressing parts of an XML document, + * designed to be used by both XSLT and XPointer + * http://www.w3.org/TR/xpath + * + * Implements + * W3C Recommendation 16 November 1999 + * http://www.w3.org/TR/1999/REC-xpath-19991116 + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_XPATH_H__ +#define __XML_XPATH_H__ + +#include + +#ifdef LIBXML_XPATH_ENABLED + +#include +#include +#include +#endif /* LIBXML_XPATH_ENABLED */ + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef __cplusplus +extern "C" { +#endif +#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */ + +#ifdef LIBXML_XPATH_ENABLED + +typedef struct _xmlXPathContext xmlXPathContext; +typedef xmlXPathContext *xmlXPathContextPtr; +typedef struct _xmlXPathParserContext xmlXPathParserContext; +typedef xmlXPathParserContext *xmlXPathParserContextPtr; + +/** + * The set of XPath error codes. + */ + +typedef enum { + XPATH_EXPRESSION_OK = 0, + XPATH_NUMBER_ERROR, + XPATH_UNFINISHED_LITERAL_ERROR, + XPATH_START_LITERAL_ERROR, + XPATH_VARIABLE_REF_ERROR, + XPATH_UNDEF_VARIABLE_ERROR, + XPATH_INVALID_PREDICATE_ERROR, + XPATH_EXPR_ERROR, + XPATH_UNCLOSED_ERROR, + XPATH_UNKNOWN_FUNC_ERROR, + XPATH_INVALID_OPERAND, + XPATH_INVALID_TYPE, + XPATH_INVALID_ARITY, + XPATH_INVALID_CTXT_SIZE, + XPATH_INVALID_CTXT_POSITION, + XPATH_MEMORY_ERROR, + XPTR_SYNTAX_ERROR, + XPTR_RESOURCE_ERROR, + XPTR_SUB_RESOURCE_ERROR, + XPATH_UNDEF_PREFIX_ERROR, + XPATH_ENCODING_ERROR, + XPATH_INVALID_CHAR_ERROR, + XPATH_INVALID_CTXT, + XPATH_STACK_ERROR, + XPATH_FORBID_VARIABLE_ERROR, + XPATH_OP_LIMIT_EXCEEDED, + XPATH_RECURSION_LIMIT_EXCEEDED +} xmlXPathError; + +/* + * A node-set (an unordered collection of nodes without duplicates). + */ +typedef struct _xmlNodeSet xmlNodeSet; +typedef xmlNodeSet *xmlNodeSetPtr; +struct _xmlNodeSet { + int nodeNr; /* number of nodes in the set */ + int nodeMax; /* size of the array as allocated */ + xmlNodePtr *nodeTab; /* array of nodes in no particular order */ + /* @@ with_ns to check whether namespace nodes should be looked at @@ */ +}; + +/* + * An expression is evaluated to yield an object, which + * has one of the following four basic types: + * - node-set + * - boolean + * - number + * - string + * + * @@ XPointer will add more types ! + */ + +typedef enum { + XPATH_UNDEFINED = 0, + XPATH_NODESET = 1, + XPATH_BOOLEAN = 2, + XPATH_NUMBER = 3, + XPATH_STRING = 4, +#ifdef LIBXML_XPTR_LOCS_ENABLED + XPATH_POINT = 5, + XPATH_RANGE = 6, + XPATH_LOCATIONSET = 7, +#endif + XPATH_USERS = 8, + XPATH_XSLT_TREE = 9 /* An XSLT value tree, non modifiable */ +} xmlXPathObjectType; + +#ifndef LIBXML_XPTR_LOCS_ENABLED +/** DOC_DISABLE */ +#define XPATH_POINT 5 +#define XPATH_RANGE 6 +#define XPATH_LOCATIONSET 7 +/** DOC_ENABLE */ +#endif + +typedef struct _xmlXPathObject xmlXPathObject; +typedef xmlXPathObject *xmlXPathObjectPtr; +struct _xmlXPathObject { + xmlXPathObjectType type; + xmlNodeSetPtr nodesetval; + int boolval; + double floatval; + xmlChar *stringval; + void *user; + int index; + void *user2; + int index2; +}; + +/** + * xmlXPathConvertFunc: + * @obj: an XPath object + * @type: the number of the target type + * + * A conversion function is associated to a type and used to cast + * the new type to primitive values. + * + * Returns -1 in case of error, 0 otherwise + */ +typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type); + +/* + * Extra type: a name and a conversion function. + */ + +typedef struct _xmlXPathType xmlXPathType; +typedef xmlXPathType *xmlXPathTypePtr; +struct _xmlXPathType { + const xmlChar *name; /* the type name */ + xmlXPathConvertFunc func; /* the conversion function */ +}; + +/* + * Extra variable: a name and a value. + */ + +typedef struct _xmlXPathVariable xmlXPathVariable; +typedef xmlXPathVariable *xmlXPathVariablePtr; +struct _xmlXPathVariable { + const xmlChar *name; /* the variable name */ + xmlXPathObjectPtr value; /* the value */ +}; + +/** + * xmlXPathEvalFunc: + * @ctxt: an XPath parser context + * @nargs: the number of arguments passed to the function + * + * An XPath evaluation function, the parameters are on the XPath context stack. + */ + +typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt, + int nargs); + +/* + * Extra function: a name and a evaluation function. + */ + +typedef struct _xmlXPathFunct xmlXPathFunct; +typedef xmlXPathFunct *xmlXPathFuncPtr; +struct _xmlXPathFunct { + const xmlChar *name; /* the function name */ + xmlXPathEvalFunc func; /* the evaluation function */ +}; + +/** + * xmlXPathAxisFunc: + * @ctxt: the XPath interpreter context + * @cur: the previous node being explored on that axis + * + * An axis traversal function. To traverse an axis, the engine calls + * the first time with cur == NULL and repeat until the function returns + * NULL indicating the end of the axis traversal. + * + * Returns the next node in that axis or NULL if at the end of the axis. + */ + +typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt, + xmlXPathObjectPtr cur); + +/* + * Extra axis: a name and an axis function. + */ + +typedef struct _xmlXPathAxis xmlXPathAxis; +typedef xmlXPathAxis *xmlXPathAxisPtr; +struct _xmlXPathAxis { + const xmlChar *name; /* the axis name */ + xmlXPathAxisFunc func; /* the search function */ +}; + +/** + * xmlXPathFunction: + * @ctxt: the XPath interprestation context + * @nargs: the number of arguments + * + * An XPath function. + * The arguments (if any) are popped out from the context stack + * and the result is pushed on the stack. + */ + +typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs); + +/* + * Function and Variable Lookup. + */ + +/** + * xmlXPathVariableLookupFunc: + * @ctxt: an XPath context + * @name: name of the variable + * @ns_uri: the namespace name hosting this variable + * + * Prototype for callbacks used to plug variable lookup in the XPath + * engine. + * + * Returns the XPath object value or NULL if not found. + */ +typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt, + const xmlChar *name, + const xmlChar *ns_uri); + +/** + * xmlXPathFuncLookupFunc: + * @ctxt: an XPath context + * @name: name of the function + * @ns_uri: the namespace name hosting this function + * + * Prototype for callbacks used to plug function lookup in the XPath + * engine. + * + * Returns the XPath function or NULL if not found. + */ +typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt, + const xmlChar *name, + const xmlChar *ns_uri); + +/** + * xmlXPathFlags: + * Flags for XPath engine compilation and runtime + */ +/** + * XML_XPATH_CHECKNS: + * + * check namespaces at compilation + */ +#define XML_XPATH_CHECKNS (1<<0) +/** + * XML_XPATH_NOVAR: + * + * forbid variables in expression + */ +#define XML_XPATH_NOVAR (1<<1) + +/** + * xmlXPathContext: + * + * Expression evaluation occurs with respect to a context. + * he context consists of: + * - a node (the context node) + * - a node list (the context node list) + * - a set of variable bindings + * - a function library + * - the set of namespace declarations in scope for the expression + * Following the switch to hash tables, this need to be trimmed up at + * the next binary incompatible release. + * The node may be modified when the context is passed to libxml2 + * for an XPath evaluation so you may need to initialize it again + * before the next call. + */ + +struct _xmlXPathContext { + xmlDocPtr doc; /* The current document */ + xmlNodePtr node; /* The current node */ + + int nb_variables_unused; /* unused (hash table) */ + int max_variables_unused; /* unused (hash table) */ + xmlHashTablePtr varHash; /* Hash table of defined variables */ + + int nb_types; /* number of defined types */ + int max_types; /* max number of types */ + xmlXPathTypePtr types; /* Array of defined types */ + + int nb_funcs_unused; /* unused (hash table) */ + int max_funcs_unused; /* unused (hash table) */ + xmlHashTablePtr funcHash; /* Hash table of defined funcs */ + + int nb_axis; /* number of defined axis */ + int max_axis; /* max number of axis */ + xmlXPathAxisPtr axis; /* Array of defined axis */ + + /* the namespace nodes of the context node */ + xmlNsPtr *namespaces; /* Array of namespaces */ + int nsNr; /* number of namespace in scope */ + void *user; /* function to free */ + + /* extra variables */ + int contextSize; /* the context size */ + int proximityPosition; /* the proximity position */ + + /* extra stuff for XPointer */ + int xptr; /* is this an XPointer context? */ + xmlNodePtr here; /* for here() */ + xmlNodePtr origin; /* for origin() */ + + /* the set of namespace declarations in scope for the expression */ + xmlHashTablePtr nsHash; /* The namespaces hash table */ + xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */ + void *varLookupData; /* variable lookup data */ + + /* Possibility to link in an extra item */ + void *extra; /* needed for XSLT */ + + /* The function name and URI when calling a function */ + const xmlChar *function; + const xmlChar *functionURI; + + /* function lookup function and data */ + xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */ + void *funcLookupData; /* function lookup data */ + + /* temporary namespace lists kept for walking the namespace axis */ + xmlNsPtr *tmpNsList; /* Array of namespaces */ + int tmpNsNr; /* number of namespaces in scope */ + + /* error reporting mechanism */ + void *userData; /* user specific data block */ + xmlStructuredErrorFunc error; /* the callback in case of errors */ + xmlError lastError; /* the last error */ + xmlNodePtr debugNode; /* the source node XSLT */ + + /* dictionary */ + xmlDictPtr dict; /* dictionary if any */ + + int flags; /* flags to control compilation */ + + /* Cache for reusal of XPath objects */ + void *cache; + + /* Resource limits */ + unsigned long opLimit; + unsigned long opCount; + int depth; +}; + +/* + * The structure of a compiled expression form is not public. + */ + +typedef struct _xmlXPathCompExpr xmlXPathCompExpr; +typedef xmlXPathCompExpr *xmlXPathCompExprPtr; + +/** + * xmlXPathParserContext: + * + * An XPath parser context. It contains pure parsing information, + * an xmlXPathContext, and the stack of objects. + */ +struct _xmlXPathParserContext { + const xmlChar *cur; /* the current char being parsed */ + const xmlChar *base; /* the full expression */ + + int error; /* error code */ + + xmlXPathContextPtr context; /* the evaluation context */ + xmlXPathObjectPtr value; /* the current value */ + int valueNr; /* number of values stacked */ + int valueMax; /* max number of values stacked */ + xmlXPathObjectPtr *valueTab; /* stack of values */ + + xmlXPathCompExprPtr comp; /* the precompiled expression */ + int xptr; /* it this an XPointer expression */ + xmlNodePtr ancestor; /* used for walking preceding axis */ + + int valueFrame; /* used to limit Pop on the stack */ +}; + +/************************************************************************ + * * + * Public API * + * * + ************************************************************************/ + +/** + * Objects and Nodesets handling + */ + +XMLPUBVAR double xmlXPathNAN; +XMLPUBVAR double xmlXPathPINF; +XMLPUBVAR double xmlXPathNINF; + +/* These macros may later turn into functions */ +/** + * xmlXPathNodeSetGetLength: + * @ns: a node-set + * + * Implement a functionality similar to the DOM NodeList.length. + * + * Returns the number of nodes in the node-set. + */ +#define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0) +/** + * xmlXPathNodeSetItem: + * @ns: a node-set + * @index: index of a node in the set + * + * Implements a functionality similar to the DOM NodeList.item(). + * + * Returns the xmlNodePtr at the given @index in @ns or NULL if + * @index is out of range (0 to length-1) + */ +#define xmlXPathNodeSetItem(ns, index) \ + ((((ns) != NULL) && \ + ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \ + (ns)->nodeTab[(index)] \ + : NULL) +/** + * xmlXPathNodeSetIsEmpty: + * @ns: a node-set + * + * Checks whether @ns is empty or not. + * + * Returns %TRUE if @ns is an empty node-set. + */ +#define xmlXPathNodeSetIsEmpty(ns) \ + (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL)) + + +XMLPUBFUN void XMLCALL + xmlXPathFreeObject (xmlXPathObjectPtr obj); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeSetCreate (xmlNodePtr val); +XMLPUBFUN void XMLCALL + xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj); +XMLPUBFUN void XMLCALL + xmlXPathFreeNodeSet (xmlNodeSetPtr obj); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathObjectCopy (xmlXPathObjectPtr val); +XMLPUBFUN int XMLCALL + xmlXPathCmpNodes (xmlNodePtr node1, + xmlNodePtr node2); +/** + * Conversion functions to basic types. + */ +XMLPUBFUN int XMLCALL + xmlXPathCastNumberToBoolean (double val); +XMLPUBFUN int XMLCALL + xmlXPathCastStringToBoolean (const xmlChar * val); +XMLPUBFUN int XMLCALL + xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns); +XMLPUBFUN int XMLCALL + xmlXPathCastToBoolean (xmlXPathObjectPtr val); + +XMLPUBFUN double XMLCALL + xmlXPathCastBooleanToNumber (int val); +XMLPUBFUN double XMLCALL + xmlXPathCastStringToNumber (const xmlChar * val); +XMLPUBFUN double XMLCALL + xmlXPathCastNodeToNumber (xmlNodePtr node); +XMLPUBFUN double XMLCALL + xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns); +XMLPUBFUN double XMLCALL + xmlXPathCastToNumber (xmlXPathObjectPtr val); + +XMLPUBFUN xmlChar * XMLCALL + xmlXPathCastBooleanToString (int val); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathCastNumberToString (double val); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathCastNodeToString (xmlNodePtr node); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathCastNodeSetToString (xmlNodeSetPtr ns); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathCastToString (xmlXPathObjectPtr val); + +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathConvertBoolean (xmlXPathObjectPtr val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathConvertNumber (xmlXPathObjectPtr val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathConvertString (xmlXPathObjectPtr val); + +/** + * Context handling. + */ +XMLPUBFUN xmlXPathContextPtr XMLCALL + xmlXPathNewContext (xmlDocPtr doc); +XMLPUBFUN void XMLCALL + xmlXPathFreeContext (xmlXPathContextPtr ctxt); +XMLPUBFUN int XMLCALL + xmlXPathContextSetCache(xmlXPathContextPtr ctxt, + int active, + int value, + int options); +/** + * Evaluation functions. + */ +XMLPUBFUN long XMLCALL + xmlXPathOrderDocElems (xmlDocPtr doc); +XMLPUBFUN int XMLCALL + xmlXPathSetContextNode (xmlNodePtr node, + xmlXPathContextPtr ctx); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNodeEval (xmlNodePtr node, + const xmlChar *str, + xmlXPathContextPtr ctx); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathEval (const xmlChar *str, + xmlXPathContextPtr ctx); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathEvalExpression (const xmlChar *str, + xmlXPathContextPtr ctxt); +XMLPUBFUN int XMLCALL + xmlXPathEvalPredicate (xmlXPathContextPtr ctxt, + xmlXPathObjectPtr res); +/** + * Separate compilation/evaluation entry points. + */ +XMLPUBFUN xmlXPathCompExprPtr XMLCALL + xmlXPathCompile (const xmlChar *str); +XMLPUBFUN xmlXPathCompExprPtr XMLCALL + xmlXPathCtxtCompile (xmlXPathContextPtr ctxt, + const xmlChar *str); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathCompiledEval (xmlXPathCompExprPtr comp, + xmlXPathContextPtr ctx); +XMLPUBFUN int XMLCALL + xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp, + xmlXPathContextPtr ctxt); +XMLPUBFUN void XMLCALL + xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp); +#endif /* LIBXML_XPATH_ENABLED */ +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlXPathInit (void); +XMLPUBFUN int XMLCALL + xmlXPathIsNaN (double val); +XMLPUBFUN int XMLCALL + xmlXPathIsInf (double val); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/ +#endif /* ! __XML_XPATH_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpathInternals.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpathInternals.h new file mode 100644 index 0000000..76a6b48 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpathInternals.h @@ -0,0 +1,632 @@ +/* + * Summary: internal interfaces for XML Path Language implementation + * Description: internal interfaces for XML Path Language implementation + * used to build new modules on top of XPath like XPointer and + * XSLT + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_XPATH_INTERNALS_H__ +#define __XML_XPATH_INTERNALS_H__ + +#include +#include + +#ifdef LIBXML_XPATH_ENABLED + +#ifdef __cplusplus +extern "C" { +#endif + +/************************************************************************ + * * + * Helpers * + * * + ************************************************************************/ + +/* + * Many of these macros may later turn into functions. They + * shouldn't be used in #ifdef's preprocessor instructions. + */ +/** + * xmlXPathSetError: + * @ctxt: an XPath parser context + * @err: an xmlXPathError code + * + * Raises an error. + */ +#define xmlXPathSetError(ctxt, err) \ + { xmlXPatherror((ctxt), __FILE__, __LINE__, (err)); \ + if ((ctxt) != NULL) (ctxt)->error = (err); } + +/** + * xmlXPathSetArityError: + * @ctxt: an XPath parser context + * + * Raises an XPATH_INVALID_ARITY error. + */ +#define xmlXPathSetArityError(ctxt) \ + xmlXPathSetError((ctxt), XPATH_INVALID_ARITY) + +/** + * xmlXPathSetTypeError: + * @ctxt: an XPath parser context + * + * Raises an XPATH_INVALID_TYPE error. + */ +#define xmlXPathSetTypeError(ctxt) \ + xmlXPathSetError((ctxt), XPATH_INVALID_TYPE) + +/** + * xmlXPathGetError: + * @ctxt: an XPath parser context + * + * Get the error code of an XPath context. + * + * Returns the context error. + */ +#define xmlXPathGetError(ctxt) ((ctxt)->error) + +/** + * xmlXPathCheckError: + * @ctxt: an XPath parser context + * + * Check if an XPath error was raised. + * + * Returns true if an error has been raised, false otherwise. + */ +#define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK) + +/** + * xmlXPathGetDocument: + * @ctxt: an XPath parser context + * + * Get the document of an XPath context. + * + * Returns the context document. + */ +#define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc) + +/** + * xmlXPathGetContextNode: + * @ctxt: an XPath parser context + * + * Get the context node of an XPath context. + * + * Returns the context node. + */ +#define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node) + +XMLPUBFUN int XMLCALL + xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt); +XMLPUBFUN double XMLCALL + xmlXPathPopNumber (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathPopString (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt); +XMLPUBFUN void * XMLCALL + xmlXPathPopExternal (xmlXPathParserContextPtr ctxt); + +/** + * xmlXPathReturnBoolean: + * @ctxt: an XPath parser context + * @val: a boolean + * + * Pushes the boolean @val on the context stack. + */ +#define xmlXPathReturnBoolean(ctxt, val) \ + valuePush((ctxt), xmlXPathNewBoolean(val)) + +/** + * xmlXPathReturnTrue: + * @ctxt: an XPath parser context + * + * Pushes true on the context stack. + */ +#define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1) + +/** + * xmlXPathReturnFalse: + * @ctxt: an XPath parser context + * + * Pushes false on the context stack. + */ +#define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0) + +/** + * xmlXPathReturnNumber: + * @ctxt: an XPath parser context + * @val: a double + * + * Pushes the double @val on the context stack. + */ +#define xmlXPathReturnNumber(ctxt, val) \ + valuePush((ctxt), xmlXPathNewFloat(val)) + +/** + * xmlXPathReturnString: + * @ctxt: an XPath parser context + * @str: a string + * + * Pushes the string @str on the context stack. + */ +#define xmlXPathReturnString(ctxt, str) \ + valuePush((ctxt), xmlXPathWrapString(str)) + +/** + * xmlXPathReturnEmptyString: + * @ctxt: an XPath parser context + * + * Pushes an empty string on the stack. + */ +#define xmlXPathReturnEmptyString(ctxt) \ + valuePush((ctxt), xmlXPathNewCString("")) + +/** + * xmlXPathReturnNodeSet: + * @ctxt: an XPath parser context + * @ns: a node-set + * + * Pushes the node-set @ns on the context stack. + */ +#define xmlXPathReturnNodeSet(ctxt, ns) \ + valuePush((ctxt), xmlXPathWrapNodeSet(ns)) + +/** + * xmlXPathReturnEmptyNodeSet: + * @ctxt: an XPath parser context + * + * Pushes an empty node-set on the context stack. + */ +#define xmlXPathReturnEmptyNodeSet(ctxt) \ + valuePush((ctxt), xmlXPathNewNodeSet(NULL)) + +/** + * xmlXPathReturnExternal: + * @ctxt: an XPath parser context + * @val: user data + * + * Pushes user data on the context stack. + */ +#define xmlXPathReturnExternal(ctxt, val) \ + valuePush((ctxt), xmlXPathWrapExternal(val)) + +/** + * xmlXPathStackIsNodeSet: + * @ctxt: an XPath parser context + * + * Check if the current value on the XPath stack is a node set or + * an XSLT value tree. + * + * Returns true if the current object on the stack is a node-set. + */ +#define xmlXPathStackIsNodeSet(ctxt) \ + (((ctxt)->value != NULL) \ + && (((ctxt)->value->type == XPATH_NODESET) \ + || ((ctxt)->value->type == XPATH_XSLT_TREE))) + +/** + * xmlXPathStackIsExternal: + * @ctxt: an XPath parser context + * + * Checks if the current value on the XPath stack is an external + * object. + * + * Returns true if the current object on the stack is an external + * object. + */ +#define xmlXPathStackIsExternal(ctxt) \ + ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS)) + +/** + * xmlXPathEmptyNodeSet: + * @ns: a node-set + * + * Empties a node-set. + */ +#define xmlXPathEmptyNodeSet(ns) \ + { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; } + +/** + * CHECK_ERROR: + * + * Macro to return from the function if an XPath error was detected. + */ +#define CHECK_ERROR \ + if (ctxt->error != XPATH_EXPRESSION_OK) return + +/** + * CHECK_ERROR0: + * + * Macro to return 0 from the function if an XPath error was detected. + */ +#define CHECK_ERROR0 \ + if (ctxt->error != XPATH_EXPRESSION_OK) return(0) + +/** + * XP_ERROR: + * @X: the error code + * + * Macro to raise an XPath error and return. + */ +#define XP_ERROR(X) \ + { xmlXPathErr(ctxt, X); return; } + +/** + * XP_ERROR0: + * @X: the error code + * + * Macro to raise an XPath error and return 0. + */ +#define XP_ERROR0(X) \ + { xmlXPathErr(ctxt, X); return(0); } + +/** + * CHECK_TYPE: + * @typeval: the XPath type + * + * Macro to check that the value on top of the XPath stack is of a given + * type. + */ +#define CHECK_TYPE(typeval) \ + if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \ + XP_ERROR(XPATH_INVALID_TYPE) + +/** + * CHECK_TYPE0: + * @typeval: the XPath type + * + * Macro to check that the value on top of the XPath stack is of a given + * type. Return(0) in case of failure + */ +#define CHECK_TYPE0(typeval) \ + if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \ + XP_ERROR0(XPATH_INVALID_TYPE) + +/** + * CHECK_ARITY: + * @x: the number of expected args + * + * Macro to check that the number of args passed to an XPath function matches. + */ +#define CHECK_ARITY(x) \ + if (ctxt == NULL) return; \ + if (nargs != (x)) \ + XP_ERROR(XPATH_INVALID_ARITY); \ + if (ctxt->valueNr < ctxt->valueFrame + (x)) \ + XP_ERROR(XPATH_STACK_ERROR); + +/** + * CAST_TO_STRING: + * + * Macro to try to cast the value on the top of the XPath stack to a string. + */ +#define CAST_TO_STRING \ + if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \ + xmlXPathStringFunction(ctxt, 1); + +/** + * CAST_TO_NUMBER: + * + * Macro to try to cast the value on the top of the XPath stack to a number. + */ +#define CAST_TO_NUMBER \ + if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \ + xmlXPathNumberFunction(ctxt, 1); + +/** + * CAST_TO_BOOLEAN: + * + * Macro to try to cast the value on the top of the XPath stack to a boolean. + */ +#define CAST_TO_BOOLEAN \ + if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \ + xmlXPathBooleanFunction(ctxt, 1); + +/* + * Variable Lookup forwarding. + */ + +XMLPUBFUN void XMLCALL + xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt, + xmlXPathVariableLookupFunc f, + void *data); + +/* + * Function Lookup forwarding. + */ + +XMLPUBFUN void XMLCALL + xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt, + xmlXPathFuncLookupFunc f, + void *funcCtxt); + +/* + * Error reporting. + */ +XMLPUBFUN void XMLCALL + xmlXPatherror (xmlXPathParserContextPtr ctxt, + const char *file, + int line, + int no); + +XMLPUBFUN void XMLCALL + xmlXPathErr (xmlXPathParserContextPtr ctxt, + int error); + +#ifdef LIBXML_DEBUG_ENABLED +XMLPUBFUN void XMLCALL + xmlXPathDebugDumpObject (FILE *output, + xmlXPathObjectPtr cur, + int depth); +XMLPUBFUN void XMLCALL + xmlXPathDebugDumpCompExpr(FILE *output, + xmlXPathCompExprPtr comp, + int depth); +#endif +/** + * NodeSet handling. + */ +XMLPUBFUN int XMLCALL + xmlXPathNodeSetContains (xmlNodeSetPtr cur, + xmlNodePtr val); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathDifference (xmlNodeSetPtr nodes1, + xmlNodeSetPtr nodes2); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathIntersection (xmlNodeSetPtr nodes1, + xmlNodeSetPtr nodes2); + +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathDistinctSorted (xmlNodeSetPtr nodes); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathDistinct (xmlNodeSetPtr nodes); + +XMLPUBFUN int XMLCALL + xmlXPathHasSameNodes (xmlNodeSetPtr nodes1, + xmlNodeSetPtr nodes2); + +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes, + xmlNodePtr node); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathLeadingSorted (xmlNodeSetPtr nodes1, + xmlNodeSetPtr nodes2); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeLeading (xmlNodeSetPtr nodes, + xmlNodePtr node); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathLeading (xmlNodeSetPtr nodes1, + xmlNodeSetPtr nodes2); + +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes, + xmlNodePtr node); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathTrailingSorted (xmlNodeSetPtr nodes1, + xmlNodeSetPtr nodes2); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeTrailing (xmlNodeSetPtr nodes, + xmlNodePtr node); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathTrailing (xmlNodeSetPtr nodes1, + xmlNodeSetPtr nodes2); + + +/** + * Extending a context. + */ + +XMLPUBFUN int XMLCALL + xmlXPathRegisterNs (xmlXPathContextPtr ctxt, + const xmlChar *prefix, + const xmlChar *ns_uri); +XMLPUBFUN const xmlChar * XMLCALL + xmlXPathNsLookup (xmlXPathContextPtr ctxt, + const xmlChar *prefix); +XMLPUBFUN void XMLCALL + xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt); + +XMLPUBFUN int XMLCALL + xmlXPathRegisterFunc (xmlXPathContextPtr ctxt, + const xmlChar *name, + xmlXPathFunction f); +XMLPUBFUN int XMLCALL + xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt, + const xmlChar *name, + const xmlChar *ns_uri, + xmlXPathFunction f); +XMLPUBFUN int XMLCALL + xmlXPathRegisterVariable (xmlXPathContextPtr ctxt, + const xmlChar *name, + xmlXPathObjectPtr value); +XMLPUBFUN int XMLCALL + xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt, + const xmlChar *name, + const xmlChar *ns_uri, + xmlXPathObjectPtr value); +XMLPUBFUN xmlXPathFunction XMLCALL + xmlXPathFunctionLookup (xmlXPathContextPtr ctxt, + const xmlChar *name); +XMLPUBFUN xmlXPathFunction XMLCALL + xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt, + const xmlChar *name, + const xmlChar *ns_uri); +XMLPUBFUN void XMLCALL + xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathVariableLookup (xmlXPathContextPtr ctxt, + const xmlChar *name); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt, + const xmlChar *name, + const xmlChar *ns_uri); +XMLPUBFUN void XMLCALL + xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt); + +/** + * Utilities to extend XPath. + */ +XMLPUBFUN xmlXPathParserContextPtr XMLCALL + xmlXPathNewParserContext (const xmlChar *str, + xmlXPathContextPtr ctxt); +XMLPUBFUN void XMLCALL + xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt); + +/* TODO: remap to xmlXPathValuePop and Push. */ +XMLPUBFUN xmlXPathObjectPtr XMLCALL + valuePop (xmlXPathParserContextPtr ctxt); +XMLPUBFUN int XMLCALL + valuePush (xmlXPathParserContextPtr ctxt, + xmlXPathObjectPtr value); + +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNewString (const xmlChar *val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNewCString (const char *val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathWrapString (xmlChar *val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathWrapCString (char * val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNewFloat (double val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNewBoolean (int val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNewNodeSet (xmlNodePtr val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNewValueTree (xmlNodePtr val); +XMLPUBFUN int XMLCALL + xmlXPathNodeSetAdd (xmlNodeSetPtr cur, + xmlNodePtr val); +XMLPUBFUN int XMLCALL + xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur, + xmlNodePtr val); +XMLPUBFUN int XMLCALL + xmlXPathNodeSetAddNs (xmlNodeSetPtr cur, + xmlNodePtr node, + xmlNsPtr ns); +XMLPUBFUN void XMLCALL + xmlXPathNodeSetSort (xmlNodeSetPtr set); + +XMLPUBFUN void XMLCALL + xmlXPathRoot (xmlXPathParserContextPtr ctxt); +XMLPUBFUN void XMLCALL + xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathParseName (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathParseNCName (xmlXPathParserContextPtr ctxt); + +/* + * Existing functions. + */ +XMLPUBFUN double XMLCALL + xmlXPathStringEvalNumber (const xmlChar *str); +XMLPUBFUN int XMLCALL + xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, + xmlXPathObjectPtr res); +XMLPUBFUN void XMLCALL + xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeSetMerge (xmlNodeSetPtr val1, + xmlNodeSetPtr val2); +XMLPUBFUN void XMLCALL + xmlXPathNodeSetDel (xmlNodeSetPtr cur, + xmlNodePtr val); +XMLPUBFUN void XMLCALL + xmlXPathNodeSetRemove (xmlNodeSetPtr cur, + int val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNewNodeSetList (xmlNodeSetPtr val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathWrapNodeSet (xmlNodeSetPtr val); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathWrapExternal (void *val); + +XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt); +XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt); +XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict); +XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt); +XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt); +XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt); +XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt); +XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt); +XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt); + +XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name); + +/* + * Some of the axis navigation routines. + */ +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt, + xmlNodePtr cur); +/* + * The official core of XPath functions. + */ +XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs); +XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs); + +/** + * Really internal functions + */ +XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_XPATH_ENABLED */ +#endif /* ! __XML_XPATH_INTERNALS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpointer.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpointer.h new file mode 100644 index 0000000..ca7bdbe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/libxml2/libxml/xpointer.h @@ -0,0 +1,137 @@ +/* + * Summary: API to handle XML Pointers + * Description: API to handle XML Pointers + * Base implementation was made accordingly to + * W3C Candidate Recommendation 7 June 2000 + * http://www.w3.org/TR/2000/CR-xptr-20000607 + * + * Added support for the element() scheme described in: + * W3C Proposed Recommendation 13 November 2002 + * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_XPTR_H__ +#define __XML_XPTR_H__ + +#include + +#ifdef LIBXML_XPTR_ENABLED + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LIBXML_XPTR_LOCS_ENABLED +/* + * A Location Set + */ +typedef struct _xmlLocationSet xmlLocationSet; +typedef xmlLocationSet *xmlLocationSetPtr; +struct _xmlLocationSet { + int locNr; /* number of locations in the set */ + int locMax; /* size of the array as allocated */ + xmlXPathObjectPtr *locTab;/* array of locations */ +}; + +/* + * Handling of location sets. + */ + +XML_DEPRECATED +XMLPUBFUN xmlLocationSetPtr XMLCALL + xmlXPtrLocationSetCreate (xmlXPathObjectPtr val); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlXPtrFreeLocationSet (xmlLocationSetPtr obj); +XML_DEPRECATED +XMLPUBFUN xmlLocationSetPtr XMLCALL + xmlXPtrLocationSetMerge (xmlLocationSetPtr val1, + xmlLocationSetPtr val2); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewRange (xmlNodePtr start, + int startindex, + xmlNodePtr end, + int endindex); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewRangePoints (xmlXPathObjectPtr start, + xmlXPathObjectPtr end); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewRangeNodePoint (xmlNodePtr start, + xmlXPathObjectPtr end); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewRangePointNode (xmlXPathObjectPtr start, + xmlNodePtr end); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewRangeNodes (xmlNodePtr start, + xmlNodePtr end); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewLocationSetNodes (xmlNodePtr start, + xmlNodePtr end); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewRangeNodeObject (xmlNodePtr start, + xmlXPathObjectPtr end); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrNewCollapsedRange (xmlNodePtr start); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlXPtrLocationSetAdd (xmlLocationSetPtr cur, + xmlXPathObjectPtr val); +XML_DEPRECATED +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrWrapLocationSet (xmlLocationSetPtr val); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlXPtrLocationSetDel (xmlLocationSetPtr cur, + xmlXPathObjectPtr val); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlXPtrLocationSetRemove (xmlLocationSetPtr cur, + int val); +#endif /* LIBXML_XPTR_LOCS_ENABLED */ + +/* + * Functions. + */ +XMLPUBFUN xmlXPathContextPtr XMLCALL + xmlXPtrNewContext (xmlDocPtr doc, + xmlNodePtr here, + xmlNodePtr origin); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPtrEval (const xmlChar *str, + xmlXPathContextPtr ctx); +#ifdef LIBXML_XPTR_LOCS_ENABLED +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt, + int nargs); +XML_DEPRECATED +XMLPUBFUN xmlNodePtr XMLCALL + xmlXPtrBuildNodeList (xmlXPathObjectPtr obj); +XML_DEPRECATED +XMLPUBFUN void XMLCALL + xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt); +#endif /* LIBXML_XPTR_LOCS_ENABLED */ +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_XPTR_ENABLED */ +#endif /* __XML_XPTR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcarray.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcarray.h new file mode 100644 index 0000000..be07eff --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcarray.h @@ -0,0 +1,55 @@ + +#ifndef _ORC_ARRAY_H_ +#define _ORC_ARRAY_H_ + +#include +#include +#include +#include + +#define ORC_OOB_VALUE 0xa5 + +typedef struct _OrcArray OrcArray; +struct _OrcArray { + void *data; + int stride; + int element_size; + int n,m; + + void *alloc_data; + int alloc_len; + void *aligned_data; +}; + +enum { + ORC_PATTERN_RANDOM = 0, + ORC_PATTERN_FLOAT_SMALL, + ORC_PATTERN_FLOAT_SPECIAL, + ORC_PATTERN_FLOAT_DENORMAL +}; + +ORC_TEST_API +OrcArray *orc_array_new (int n, int m, int element_size, int misalignment, + int alignment); + +ORC_TEST_API +void orc_array_free (OrcArray *array); + +ORC_TEST_API +void orc_array_set_pattern (OrcArray *array, int value); + +ORC_TEST_API +void orc_array_set_random (OrcArray *array, OrcRandomContext *context); + +ORC_TEST_API +void orc_array_set_pattern_2 (OrcArray *array, OrcRandomContext *context, + int type); + +ORC_TEST_API +int orc_array_compare (OrcArray *array1, OrcArray *array2, int flags); + +ORC_TEST_API +int orc_array_check_out_of_bounds (OrcArray *array); + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcprofile.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcprofile.h new file mode 100644 index 0000000..7c11a12 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcprofile.h @@ -0,0 +1,101 @@ +/* + * Orc - Oil Runtime Compiler + * Copyright (c) 2003,2004 David A. Schleef + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ORC_PROFILE_H_ +#define _ORC_PROFILE_H_ + +#include + +ORC_BEGIN_DECLS + +/** + * ORC_PROFILE_HIST_LENGTH + * + * Internal definition of the number of histogram entries in #OrcProfile. + */ +#define ORC_PROFILE_HIST_LENGTH 10 + +typedef struct _OrcProfile OrcProfile; +/** + * OrcProfile: + * + * An opaque structure representing profiling information. + */ +struct _OrcProfile { + /*< private >*/ + unsigned long start; + unsigned long stop; + unsigned long min; + unsigned long last; + unsigned long total; + int n; + + int hist_n; + unsigned long hist_time[ORC_PROFILE_HIST_LENGTH]; + int hist_count[ORC_PROFILE_HIST_LENGTH]; +}; + +ORC_TEST_API +unsigned long orc_profile_stamp(void); + +ORC_TEST_API +void orc_profile_init(OrcProfile *prof); + +ORC_TEST_API +void orc_profile_stop_handle(OrcProfile *prof); + +ORC_TEST_API +void orc_profile_get_ave_std (OrcProfile *prof, double *ave_p, double *std_p); + +/** + * orc_profile_start: + * @x: a pointer to an OrcProfile structure + * + * Starts a profiling run by obtaining a timestamp via orc_profile_stamp() + * and writing it into @x. + */ +#define orc_profile_start(x) do{ \ + (x)->start = orc_profile_stamp(); \ +}while(0) +/** + * orc_profile_stop: + * @x: a pointer to an OrcProfile structure + * + * Stops a profiling run by obtaining a timestamp via orc_profile_stamp() + * and writing it into @x. It then calls orc_profile_stop_handle() to + * handle post-processing of the profiling run. + */ +#define orc_profile_stop(x) do{ \ + (x)->stop = orc_profile_stamp(); \ + orc_profile_stop_handle(x); \ +}while(0) + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcrandom.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcrandom.h new file mode 100644 index 0000000..4b49f00 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orcrandom.h @@ -0,0 +1,29 @@ + +#ifndef _ORC_RANDOM_H_ +#define _ORC_RANDOM_H_ + +#include + +ORC_BEGIN_DECLS + +typedef struct _OrcRandomContext OrcRandomContext; +struct _OrcRandomContext { + unsigned int x; +}; + +ORC_TEST_API +void orc_random_init (OrcRandomContext *context, int seed); + +ORC_TEST_API +void orc_random_bits (OrcRandomContext *context, void *data, int n_bytes); + +ORC_TEST_API +void orc_random_floats (OrcRandomContext *context, float *data, int n); + +ORC_TEST_API +unsigned int orc_random (OrcRandomContext *context); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orctest.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orctest.h new file mode 100644 index 0000000..6a86835 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc-test/orctest.h @@ -0,0 +1,72 @@ + +#ifndef _ORC_TEST_TEST_H_ +#define _ORC_TEST_TEST_H_ + +#include +#include + +ORC_BEGIN_DECLS + +#ifdef BUILDING_ORC_TEST +#define ORC_TEST_API ORC_API_EXPORT /* defined in config.h */ +#else +#define ORC_TEST_API ORC_API_IMPORT +#endif + +typedef enum { + ORC_TEST_FAILED = 0, + ORC_TEST_INDETERMINATE = 1, + ORC_TEST_OK = 2 +} OrcTestResult; + +#define ORC_TEST_FLAGS_BACKUP (1<<0) +#define ORC_TEST_FLAGS_FLOAT (1<<1) +#define ORC_TEST_FLAGS_EMULATE (1<<2) + +ORC_TEST_API +void orc_test_init (void); + +ORC_TEST_API +OrcTestResult orc_test_gcc_compile (OrcProgram *p); + +ORC_TEST_API +OrcTestResult orc_test_gcc_compile_neon (OrcProgram *p); + +ORC_TEST_API +OrcTestResult orc_test_gcc_compile_c64x (OrcProgram *p); + +ORC_TEST_API +OrcTestResult orc_test_gcc_compile_mips (OrcProgram *p); + +ORC_TEST_API +void orc_test_random_bits (void *data, int n_bytes); + +ORC_TEST_API +OrcTestResult orc_test_compare_output (OrcProgram *program); + +ORC_TEST_API +OrcTestResult orc_test_compare_output_full (OrcProgram *program, int flags); + +ORC_TEST_API +OrcTestResult orc_test_compare_output_backup (OrcProgram *program); + +ORC_TEST_API +OrcProgram * orc_test_get_program_for_opcode (OrcStaticOpcode *opcode); + +ORC_TEST_API +OrcProgram * orc_test_get_program_for_opcode_const (OrcStaticOpcode *opcode); + +ORC_TEST_API +OrcProgram * orc_test_get_program_for_opcode_param (OrcStaticOpcode *opcode); + +ORC_TEST_API +void orc_test_performance (OrcProgram *program, int flags); + +ORC_TEST_API +double orc_test_performance_full (OrcProgram *program, int flags, + const char *target); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orc-stdint.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orc-stdint.h new file mode 100644 index 0000000..599b33a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orc-stdint.h @@ -0,0 +1 @@ +/* This file is intentionally nearly empty */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orc.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orc.h new file mode 100644 index 0000000..38de15b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orc.h @@ -0,0 +1,16 @@ + +#ifndef _ORC_ORC_H_ +#define _ORC_ORC_H_ + +#include +#include +#include +#include +#include +#include +#include + +ORC_API const char * orc_version_string (void); + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcarm.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcarm.h new file mode 100644 index 0000000..84b18ca --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcarm.h @@ -0,0 +1,879 @@ + +#ifndef _ORC_ARM_H_ +#define _ORC_ARM_H_ + +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +typedef enum { + ORC_ARM_A1 = ORC_GP_REG_BASE+0, + ORC_ARM_A2, + ORC_ARM_A3, + ORC_ARM_A4, + ORC_ARM_V1, + ORC_ARM_V2, + ORC_ARM_V3, + ORC_ARM_V4, + ORC_ARM_V5, + ORC_ARM_V6, + ORC_ARM_V7, + ORC_ARM_V8, + ORC_ARM_IP, + ORC_ARM_SP, + ORC_ARM_LR, + ORC_ARM_PC +} OrcArmRegister; + +typedef enum { + ORC_ARM64_R0 = ORC_GP_REG_BASE+0, + ORC_ARM64_R1, + ORC_ARM64_R2, + ORC_ARM64_R3, + ORC_ARM64_R4, + ORC_ARM64_R5, + ORC_ARM64_R6, + ORC_ARM64_R7, + ORC_ARM64_R8, + ORC_ARM64_R9, + ORC_ARM64_R10, + ORC_ARM64_R11, + ORC_ARM64_R12, + ORC_ARM64_R13, + ORC_ARM64_R14, + ORC_ARM64_R15, + ORC_ARM64_IP0, + ORC_ARM64_IP1, + ORC_ARM64_R18, + ORC_ARM64_R19, + ORC_ARM64_R20, + ORC_ARM64_R21, + ORC_ARM64_R22, + ORC_ARM64_R23, + ORC_ARM64_R24, + ORC_ARM64_R25, + ORC_ARM64_R26, + ORC_ARM64_R27, + ORC_ARM64_R28, + ORC_ARM64_FP, + ORC_ARM64_LR, + ORC_ARM64_SP, +} OrcArm64Register; + +typedef enum { + ORC_ARM64_REG_32 = 32, + ORC_ARM64_REG_64 = 64 +} OrcArm64RegBits; + +typedef enum { + ORC_ARM_DP_AND = 0, + ORC_ARM_DP_EOR, + ORC_ARM_DP_SUB, + ORC_ARM_DP_RSB, + ORC_ARM_DP_ADD, + ORC_ARM_DP_ADC, + ORC_ARM_DP_SBC, + ORC_ARM_DP_RSC, + ORC_ARM_DP_TST, + ORC_ARM_DP_TEQ, + ORC_ARM_DP_CMP, + ORC_ARM_DP_CMN, + ORC_ARM_DP_ORR, + ORC_ARM_DP_MOV, + ORC_ARM_DP_BIC, + ORC_ARM_DP_MVN +} OrcArmDP; + +typedef enum { + /** arithmetic */ + ORC_ARM64_DP_ADD = 0, + ORC_ARM64_DP_ADDS, /** alias of CMN */ + ORC_ARM64_DP_SUB, + ORC_ARM64_DP_SUBS, /** alias of CMP */ + /** logical */ + ORC_ARM64_DP_AND, + ORC_ARM64_DP_ORR, /** alias of MOV */ + ORC_ARM64_DP_EOR, + ORC_ARM64_DP_ANDS, /** alias of TST */ + /** shift */ + ORC_ARM64_DP_LSL, + ORC_ARM64_DP_LSR, + ORC_ARM64_DP_ASR, + ORC_ARM64_DP_ROR, + /** bitfield */ + ORC_ARM64_DP_SBFM, + ORC_ARM64_DP_BFM, + ORC_ARM64_DP_UBFM, + /** extract */ + ORC_ARM64_DP_EXTR +} OrcArm64DP; + +typedef enum { + ORC_ARM64_MEM_STR = 0, + ORC_ARM64_MEM_LDR +} OrcArm64Mem; + +typedef enum { + ORC_ARM64_TYPE_IMM = 0, + ORC_ARM64_TYPE_REG, + ORC_ARM64_TYPE_EXT +} OrcArm64Type; + +typedef enum { + ORC_ARM64_UXTB, + ORC_ARM64_UXTH, + ORC_ARM64_UXTW, + ORC_ARM64_UXTX, + ORC_ARM64_SXTB, + ORC_ARM64_SXTH, + ORC_ARM64_SXTW, + ORC_ARM64_SXTX, +} OrcArm64Extend; + +typedef enum { + ORC_ARM_COND_EQ = 0, + ORC_ARM_COND_NE, + ORC_ARM_COND_CS, + ORC_ARM_COND_CC, + ORC_ARM_COND_MI, + ORC_ARM_COND_PL, + ORC_ARM_COND_VS, + ORC_ARM_COND_VC, + ORC_ARM_COND_HI, + ORC_ARM_COND_LS, + ORC_ARM_COND_GE, + ORC_ARM_COND_LT, + ORC_ARM_COND_GT, + ORC_ARM_COND_LE, + ORC_ARM_COND_AL, +} OrcArmCond; + +typedef enum { + ORC_ARM_LSL, + ORC_ARM_LSR, + ORC_ARM_ASR, + ORC_ARM_ROR +} OrcArmShift; + +ORC_API unsigned long orc_arm_get_cpu_flags (void); + +ORC_API void orc_arm_emit (OrcCompiler *compiler, orc_uint32 insn); +ORC_API void orc_arm_emit_bx_lr (OrcCompiler *compiler); +ORC_API const char * orc_arm_reg_name (int reg); +ORC_API const char * orc_arm_cond_name (OrcArmCond cond); +ORC_API void orc_arm_emit_load_imm (OrcCompiler *compiler, int dest, int imm); + +ORC_API void orc_arm_emit_add (OrcCompiler *compiler, int dest, int src1, int src2); +ORC_API void orc_arm_emit_sub (OrcCompiler *compiler, int dest, int src1, int src2); +ORC_API void orc_arm_emit_add_imm (OrcCompiler *compiler, int dest, int src1, int value); +ORC_API void orc_arm_emit_and_imm (OrcCompiler *compiler, int dest, int src1, int value); +ORC_API void orc_arm_emit_sub_imm (OrcCompiler *compiler, int dest, int src1, int value, int record); +ORC_API void orc_arm_emit_asr_imm (OrcCompiler *compiler, int dest, int src1, int value); +ORC_API void orc_arm_emit_lsl_imm (OrcCompiler *compiler, int dest, int src1, int value); +ORC_API void orc_arm_emit_cmp_imm (OrcCompiler *compiler, int src1, int value); +ORC_API void orc_arm_emit_cmp (OrcCompiler *compiler, int src1, int src2); +ORC_API void orc_arm_emit_mov (OrcCompiler *compiler, int dest, int src); + +ORC_API void orc_arm_emit_align (OrcCompiler *compiler, int align_shift); +ORC_API void orc_arm_emit_label (OrcCompiler *compiler, int label); +ORC_API void orc_arm_emit_push (OrcCompiler *compiler, int regs, orc_uint32 vregs); +ORC_API void orc_arm_emit_pop (OrcCompiler *compiler, int regs, orc_uint32 vregs); +ORC_API void orc_arm_emit_branch (OrcCompiler *compiler, int cond, int label); +ORC_API void orc_arm_emit_data (OrcCompiler *compiler, orc_uint32 data); + +ORC_API void orc_arm_loadb (OrcCompiler *compiler, int dest, int src1, int offset); +ORC_API void orc_arm_storeb (OrcCompiler *compiler, int dest, int offset, int src1); +ORC_API void orc_arm_loadw (OrcCompiler *compiler, int dest, int src1, int offset); +ORC_API void orc_arm_storew (OrcCompiler *compiler, int dest, int offset, int src1); +ORC_API void orc_arm_loadl (OrcCompiler *compiler, int dest, int src1, int offset); +ORC_API void orc_arm_storel (OrcCompiler *compiler, int dest, int offset, int src1); + +ORC_API void orc_arm_emit_load_reg (OrcCompiler *compiler, int dest, int src1, int offset); +ORC_API void orc_arm_emit_store_reg (OrcCompiler *compiler, int src, int dest, int offset); + +ORC_API void orc_arm_add_fixup (OrcCompiler *compiler, int label, int type); +ORC_API void orc_arm_do_fixups (OrcCompiler *compiler); + +ORC_API void orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode, + int S, int Rd, int Rn, int Rm, int shift, orc_uint32 val); +ORC_API void orc_arm_emit_par (OrcCompiler *p, int op, int mode, OrcArmCond cond, + int Rd, int Rn, int Rm); +ORC_API void orc_arm_emit_xt (OrcCompiler *p, int op, OrcArmCond cond, + int Rd, int Rn, int Rm, int r8); +ORC_API void orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond, + int Rd, int Rn, int Rm, int sh); +ORC_API void orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond, + int Rd, int sat, int Rm, int sh, int asr); +ORC_API void orc_arm_emit_rv (OrcCompiler *p, int op, OrcArmCond cond, + int Rd, int Rm); +ORC_API void orc_arm_emit_nop (OrcCompiler *compiler); + +ORC_API void orc_arm_flush_cache (OrcCode *code); + +/* ALL cpus */ +/* data procesing instructions */ +/* {}{s} {}, , #imm */ +#define orc_arm_emit_and_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_AND,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_eor_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_EOR,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_sub_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_SUB,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_rsb_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_RSB,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_add_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_ADD,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_adc_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_ADC,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_sbc_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_SBC,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_rsc_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_RSC,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_tst_i(p,cond,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_TST,1, 0,Rn,0,0,imm) +#define orc_arm_emit_teq_i(p,cond,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_TEQ,1, 0,Rn,0,0,imm) +#define orc_arm_emit_cmp_i(p,cond,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_CMP,1, 0,Rn,0,0,imm) +#define orc_arm_emit_cmn_i(p,cond,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_CMN,1, 0,Rn,0,0,imm) +#define orc_arm_emit_orr_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_ORR,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_mov_i(p,cond,S,Rd,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_MOV,S,Rd, 0,0,0,imm) +#define orc_arm_emit_bic_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_BIC,S,Rd,Rn,0,0,imm) +#define orc_arm_emit_mvn_i(p,cond,S,Rd,imm) orc_arm_emit_dp(p,0,cond,ORC_ARM_DP_MVN,S,Rd, 0,0,0,imm) + +/* {}{s} {}, , */ +#define orc_arm_emit_and_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_AND,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_eor_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_EOR,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_sub_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_SUB,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_rsb_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_RSB,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_add_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_ADD,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_adc_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_ADC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_sbc_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_SBC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_rsc_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_RSC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_tst_r(p,cond,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_TST,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_teq_r(p,cond,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_TEQ,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_cmp_r(p,cond,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_CMP,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_cmn_r(p,cond,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_CMN,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_orr_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_ORR,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_mov_r(p,cond,S,Rd,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_MOV,S,Rd, 0,Rm,0,0) +#define orc_arm_emit_bic_r(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_BIC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_mvn_r(p,cond,S,Rd,Rm) orc_arm_emit_dp(p,1,cond,ORC_ARM_DP_MVN,S,Rd, 0,Rm,0,0) + +/* {}{s} {}, , , [LSL|LSR|ASR] #imm */ +#define orc_arm_emit_and_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_AND,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_eor_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_EOR,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_sub_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_SUB,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_rsb_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_RSB,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_add_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_ADD,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_adc_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_ADC,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_sbc_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_SBC,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_rsc_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_RSC,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_tst_rsi(p,cond,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_TST,1, 0,Rn,Rm,sh,im) +#define orc_arm_emit_teq_rsi(p,cond,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_TEQ,1, 0,Rn,Rm,sh,im) +#define orc_arm_emit_cmp_rsi(p,cond,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_CMP,1, 0,Rn,Rm,sh,im) +#define orc_arm_emit_cmn_rsi(p,cond,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_CMN,1, 0,Rn,Rm,sh,im) +#define orc_arm_emit_orr_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_ORR,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_mov_rsi(p,cond,S,Rd,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_MOV,S,Rd, 0,Rm,sh,im) +#define orc_arm_emit_bic_rsi(p,cond,S,Rd,Rn,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_BIC,S,Rd,Rn,Rm,sh,im) +#define orc_arm_emit_mvn_rsi(p,cond,S,Rd,Rm,sh,im) orc_arm_emit_dp(p,2,cond,ORC_ARM_DP_MVN,S,Rd, 0,Rm,sh,im) + +/* {}{s} {}, , , [LSL|LSR|ASR] */ +#define orc_arm_emit_and_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_AND,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_eor_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_EOR,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_sub_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_SUB,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_rsb_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_RSB,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_add_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_ADD,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_adc_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_ADC,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_sbc_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_SBC,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_rsc_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_RSC,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_tst_rsr(p,cond,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_TST,1, 0,Rn,Rm,sh,Rs) +#define orc_arm_emit_teq_rsr(p,cond,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_TEQ,1, 0,Rn,Rm,sh,Rs) +#define orc_arm_emit_cmp_rsr(p,cond,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_CMP,1, 0,Rn,Rm,sh,Rs) +#define orc_arm_emit_cmn_rsr(p,cond,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_CMN,1, 0,Rn,Rm,sh,Rs) +#define orc_arm_emit_orr_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_ORR,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_mov_rsr(p,cond,S,Rd,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_MOV,S,Rd, 0,Rm,sh,Rs) +#define orc_arm_emit_bic_rsr(p,cond,S,Rd,Rn,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_BIC,S,Rd,Rn,Rm,sh,Rs) +#define orc_arm_emit_mvn_rsr(p,cond,S,Rd,Rm,sh,Rs) orc_arm_emit_dp(p,3,cond,ORC_ARM_DP_MVN,S,Rd, 0,Rm,sh,Rs) + +/* {}{s} {,} , , RRX */ +#define orc_arm_emit_and_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_AND,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_eor_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_EOR,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_sub_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_SUB,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_rsb_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_RSB,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_add_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_ADD,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_adc_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_ADC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_sbc_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_SBC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_rsc_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_RSC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_tst_rrx(p,cond,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_TST,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_teq_rrx(p,cond,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_TEQ,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_cmp_rrx(p,cond,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_CMP,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_cmn_rrx(p,cond,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_CMN,1, 0,Rn,Rm,0,0) +#define orc_arm_emit_orr_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_ORR,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_mov_rrx(p,cond,S,Rd,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_MOV,S,Rd, 0,Rm,0,0) +#define orc_arm_emit_bic_rrx(p,cond,S,Rd,Rn,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_BIC,S,Rd,Rn,Rm,0,0) +#define orc_arm_emit_mvn_rrx(p,cond,S,Rd,Rm) orc_arm_emit_dp(p,4,cond,ORC_ARM_DP_MVN,S,Rd, 0,Rm,0,0) + +/* parallel instructions */ +#define orc_arm_emit_sadd16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,0,0,cond,Rd,Rn,Rm) +#define orc_arm_emit_qadd16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,0,1,cond,Rd,Rn,Rm) +#define orc_arm_emit_shadd16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,0,2,cond,Rd,Rn,Rm) +#define orc_arm_emit_uadd16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,0,3,cond,Rd,Rn,Rm) +#define orc_arm_emit_uqadd16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,0,4,cond,Rd,Rn,Rm) +#define orc_arm_emit_uhadd16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,0,5,cond,Rd,Rn,Rm) + +#define orc_arm_emit_saddsubx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,1,0,cond,Rd,Rn,Rm) +#define orc_arm_emit_qaddsubx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,1,1,cond,Rd,Rn,Rm) +#define orc_arm_emit_shaddsubx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,1,2,cond,Rd,Rn,Rm) +#define orc_arm_emit_uaddsubx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,1,3,cond,Rd,Rn,Rm) +#define orc_arm_emit_uqaddsubx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,1,4,cond,Rd,Rn,Rm) +#define orc_arm_emit_uhaddsubx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,1,5,cond,Rd,Rn,Rm) + +#define orc_arm_emit_ssubaddx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,2,0,cond,Rd,Rn,Rm) +#define orc_arm_emit_qsubaddx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,2,1,cond,Rd,Rn,Rm) +#define orc_arm_emit_shsubaddx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,2,2,cond,Rd,Rn,Rm) +#define orc_arm_emit_usubaddx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,2,3,cond,Rd,Rn,Rm) +#define orc_arm_emit_uqsubaddx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,2,4,cond,Rd,Rn,Rm) +#define orc_arm_emit_uhsubaddx(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,2,5,cond,Rd,Rn,Rm) + +#define orc_arm_emit_ssub16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,3,0,cond,Rd,Rn,Rm) +#define orc_arm_emit_qsub16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,3,1,cond,Rd,Rn,Rm) +#define orc_arm_emit_shsub16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,3,2,cond,Rd,Rn,Rm) +#define orc_arm_emit_usub16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,3,3,cond,Rd,Rn,Rm) +#define orc_arm_emit_uqsub16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,3,4,cond,Rd,Rn,Rm) +#define orc_arm_emit_uhsub16(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,3,5,cond,Rd,Rn,Rm) + +#define orc_arm_emit_sadd8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,4,0,cond,Rd,Rn,Rm) +#define orc_arm_emit_qadd8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,4,1,cond,Rd,Rn,Rm) +#define orc_arm_emit_shadd8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,4,2,cond,Rd,Rn,Rm) +#define orc_arm_emit_uadd8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,4,3,cond,Rd,Rn,Rm) +#define orc_arm_emit_uqadd8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,4,4,cond,Rd,Rn,Rm) +#define orc_arm_emit_uhadd8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,4,5,cond,Rd,Rn,Rm) + +#define orc_arm_emit_ssub8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,5,0,cond,Rd,Rn,Rm) +#define orc_arm_emit_qsub8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,5,1,cond,Rd,Rn,Rm) +#define orc_arm_emit_shsub8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,5,2,cond,Rd,Rn,Rm) +#define orc_arm_emit_usub8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,5,3,cond,Rd,Rn,Rm) +#define orc_arm_emit_uqsub8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,5,4,cond,Rd,Rn,Rm) +#define orc_arm_emit_uhsub8(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,5,5,cond,Rd,Rn,Rm) + +/* selection */ +#define orc_arm_emit_sel(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,6,6,cond,Rd,Rn,Rm) + +/* saturating add */ +#define orc_arm_emit_qadd(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,7,7, cond,Rd,Rn,Rm) +#define orc_arm_emit_qsub(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,8,8, cond,Rd,Rn,Rm) +#define orc_arm_emit_qdadd(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,7,9, cond,Rd,Rn,Rm) +#define orc_arm_emit_qdsub(p,cond,Rd,Rn,Rm) orc_arm_emit_par(p,8,10,cond,Rd,Rn,Rm) + +/* extend instructions */ +/* with ROR #r8, r8 should be a multiple of 8 */ +#define orc_arm_emit_sxtb16_r8(p,cond,Rd,Rm,r8) orc_arm_emit_xt(p,0, cond,Rd,15,Rm,r8) +#define orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,r8) orc_arm_emit_xt(p,1, cond,Rd,15,Rm,r8) +#define orc_arm_emit_sxth_r8(p,cond,Rd,Rm,r8) orc_arm_emit_xt(p,2, cond,Rd,15,Rm,r8) +#define orc_arm_emit_uxtb16_r8(p,cond,Rd,Rm,r8) orc_arm_emit_xt(p,3, cond,Rd,15,Rm,r8) +#define orc_arm_emit_uxtb_r8(p,cond,Rd,Rm,r8) orc_arm_emit_xt(p,4, cond,Rd,15,Rm,r8) +#define orc_arm_emit_uxth_r8(p,cond,Rd,Rm,r8) orc_arm_emit_xt(p,5, cond,Rd,15,Rm,r8) +#define orc_arm_emit_sxtab16_r8(p,cond,Rd,Rn,Rm,r8) orc_arm_emit_xt(p,6, cond,Rd,Rn,Rm,r8) +#define orc_arm_emit_sxtab_r8(p,cond,Rd,Rn,Rm,r8) orc_arm_emit_xt(p,7, cond,Rd,Rn,Rm,r8) +#define orc_arm_emit_sxtah_r8(p,cond,Rd,Rn,Rm,r8) orc_arm_emit_xt(p,8, cond,Rd,Rn,Rm,r8) +#define orc_arm_emit_uxtab16_r8(p,cond,Rd,Rn,Rm,r8) orc_arm_emit_xt(p,9, cond,Rd,Rn,Rm,r8) +#define orc_arm_emit_uxtab_r8(p,cond,Rd,Rn,Rm,r8) orc_arm_emit_xt(p,10,cond,Rd,Rn,Rm,r8) +#define orc_arm_emit_uxtah_r8(p,cond,Rd,Rn,Rm,r8) orc_arm_emit_xt(p,11,cond,Rd,Rn,Rm,r8) +/* with out rotate */ +#define orc_arm_emit_sxtb16(p,cond,Rd,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_sxtb(p,cond,Rd,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_sxth(p,cond,Rd,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_uxtb16(p,cond,Rd,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_uxtb(p,cond,Rd,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_uxth(p,cond,Rd,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_sxtab16(p,cond,Rd,Rn,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_sxtab(p,cond,Rd,Rn,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_sxtah(p,cond,Rd,Rn,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_uxtab16(p,cond,Rd,Rn,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_uxtab(p,cond,Rd,Rn,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) +#define orc_arm_emit_uxtah(p,cond,Rd,Rn,Rm) orc_arm_emit_sxtb_r8(p,cond,Rd,Rm,0) + +/* misc instructions */ + +/* packing */ +#define orc_arm_emit_pkhbt(p,cond,Rd,Rn,Rm) orc_arm_emit_pkh(p,0,cond,Rd,Rn,Rm,0) +#define orc_arm_emit_pkhtb(p,cond,Rd,Rn,Rm) orc_arm_emit_pkh(p,1,cond,Rd,Rn,Rm,0) +/* with [LSL|ASR] #imm */ +#define orc_arm_emit_pkhbt_s(p,cond,Rd,Rn,Rm,lsl) orc_arm_emit_pkh(p,0,cond,Rd,Rn,Rm,lsl) +#define orc_arm_emit_pkhtb_s(p,cond,Rd,Rn,Rm,asr) orc_arm_emit_pkh(p,1,cond,Rd,Rn,Rm,asr) + +/* saturation */ +#define orc_arm_emit_ssat(p,cond,Rd,sat,Rm) orc_arm_emit_sat(p,0,cond,Rd,sat,Rm,0, 0) +#define orc_arm_emit_usat(p,cond,Rd,sat,Rm) orc_arm_emit_sat(p,1,cond,Rd,sat,Rm,0, 0) +#define orc_arm_emit_ssat_lsl(p,cond,Rd,sat,Rm,sh) orc_arm_emit_sat(p,0,cond,Rd,sat,Rm,sh,0) +#define orc_arm_emit_usat_lsl(p,cond,Rd,sat,Rm,sh) orc_arm_emit_sat(p,1,cond,Rd,sat,Rm,sh,0) +#define orc_arm_emit_ssat_asr(p,cond,Rd,sat,Rm,sh) orc_arm_emit_sat(p,0,cond,Rd,sat,Rm,sh,1) +#define orc_arm_emit_usat_asr(p,cond,Rd,sat,Rm,sh) orc_arm_emit_sat(p,1,cond,Rd,sat,Rm,sh,1) +#define orc_arm_emit_ssat16(p,cond,Rd,sat,Rm) orc_arm_emit_sat(p,2,cond,Rd,sat,Rm,0, 0) +#define orc_arm_emit_usat16(p,cond,Rd,sat,Rm) orc_arm_emit_sat(p,3,cond,Rd,sat,Rm,0, 0) + +/* reversing */ +#define orc_arm_emit_rev(p,cond,Rd,Rm) orc_arm_emit_rv (p,0,cond,Rd,Rm) +#define orc_arm_emit_rev16(p,cond,Rd,Rm) orc_arm_emit_rv (p,1,cond,Rd,Rm) + +/** AArch64 */ + +ORC_API const char * orc_arm64_reg_name (int reg, OrcArm64RegBits bits); +ORC_API void orc_arm64_emit_am (OrcCompiler *p, OrcArm64RegBits bits, OrcArm64DP opcode, + OrcArm64Type type, int opt, int Rd, int Rn, int Rm, orc_uint64 val); +ORC_API void orc_arm64_emit_lg (OrcCompiler *p, OrcArm64RegBits bits, OrcArm64DP opcode, + OrcArm64Type type, int opt, int Rd, int Rn, int Rm, orc_uint64 val); +ORC_API void orc_arm64_emit_mov_wide (OrcCompiler *p, OrcArm64RegBits bits, int mov_op, int hw, + int Rd, orc_uint64 val); +ORC_API void orc_arm64_emit_sft (OrcCompiler *p, OrcArm64RegBits bits, OrcArmShift shift, + int Rd, int Rn, int Rm); +ORC_API void orc_arm64_emit_bfm (OrcCompiler *p, OrcArm64RegBits bits, OrcArm64DP opcode, + int Rd, int Rn, orc_uint32 immr, orc_uint32 imms); +ORC_API void orc_arm64_emit_extr (OrcCompiler *p, OrcArm64RegBits bits, + int Rd, int Rn, int Rm, orc_uint32 imm); +ORC_API void orc_arm64_emit_mem (OrcCompiler *p, OrcArm64RegBits bits, OrcArm64Mem opcode, + OrcArm64Type type, int opt, int Rt, int Rn, int Rm, orc_uint32 val); +ORC_API void orc_arm64_emit_mem_pair (OrcCompiler *p, OrcArm64RegBits bits, OrcArm64Mem opcode, + int opt, int Rt, int Rt2, int Rn, orc_int32 imm); +ORC_API void orc_arm64_emit_ret (OrcCompiler *p, int Rn); +/** @todo add arm64-specific helper functions if needed */ + +/** Data Procesing (DP) instructions */ + +/** ORC_ARM64_DP_ADD */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_add_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_add(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_REG,0,Rd,Rn,Rm,0) +#define orc_arm64_emit_add_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_lsr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_REG,ORC_ARM_LSR,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_add_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_add_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADD,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_ADDS */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_adds_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_adds(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,0,Rd,Rn,Rm,0) +#define orc_arm64_emit_adds_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_adds_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_adds_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_CMN (alias of ADDS) */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_cmn_imm(p,bits,Rn,imm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_IMM,0,0,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_cmn(p,bits,Rn,Rm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,0,0,Rn,Rm,0) +#define orc_arm64_emit_cmn_lsl(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_asr(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_ror(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,0,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_cmn_uxtb(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_uxth(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_uxtw(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_uxtx(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_sxtb(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_sxth(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_sxtw(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,0,Rn,Rm,val) +#define orc_arm64_emit_cmn_sxtx(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_ADDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,0,Rn,Rm,val) + +/** ORC_ARM64_DP_SUB */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_sub_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_sub(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_REG,0,Rd,Rn,Rm,0) +#define orc_arm64_emit_sub_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_sub_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_sub_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUB,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_SUBS */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_subs_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_subs(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,0,Rd,Rn,Rm,0) +#define orc_arm64_emit_subs_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_subs_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_subs_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_CMP (alias of SUBS) */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_cmp_imm(p,bits,Rn,imm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_IMM,0,0,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_cmp(p,bits,Rn,Rm) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,0,0,Rn,Rm,0) +#define orc_arm64_emit_cmp_lsl(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_asr(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_ror(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,0,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_cmp_uxtb(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_uxth(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_uxtw(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_uxtx(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_sxtb(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_sxth(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_sxtw(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,0,Rn,Rm,val) +#define orc_arm64_emit_cmp_sxtx(p,bits,Rn,Rm,val) \ + orc_arm64_emit_am(p,bits,ORC_ARM64_DP_SUBS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,0,Rn,Rm,val) + +/** ORC_ARM64_DP_AND */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_and_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_and(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_REG,0,Rd,Rn,0,0) +#define orc_arm64_emit_and_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_and_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_and_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_AND,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_ORR */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_orr_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_orr(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_REG,0,Rd,Rn,Rm,0) +#define orc_arm64_emit_orr_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_orr_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_orr_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_MOV (alias of ROR, in case of imm) */ +#define orc_arm64_emit_mov_imm(p,bits,Rd,imm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_IMM,0,Rd,0,0,imm) +#define orc_arm64_emit_mov_uimm(p,bits,Rd,imm) \ + orc_arm64_emit_movz(p,bits,0,Rd,imm) +#define orc_arm64_emit_movn(p,bits,shift,Rd,imm) \ + orc_arm64_emit_mov_wide(p,bits,0,shift,Rd,imm) +#define orc_arm64_emit_movz(p,bits,shift,Rd,imm) \ + orc_arm64_emit_mov_wide(p,bits,2,shift,Rd,imm) +#define orc_arm64_emit_movk(p,bits,shift,Rd,imm) \ + orc_arm64_emit_mov_wide(p,bits,3,shift,Rd,imm) + +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_mov(p,bits,Rd,Rm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ORR,ORC_ARM64_TYPE_REG,0,Rd,0,Rm,0) + +/** ORC_ARM64_DP_EOR */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_eor_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_eor(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_REG,0,Rd,Rn,Rm,0) +#define orc_arm64_emit_eor_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_eor_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_eor_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_EOR,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_ANDS */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_ands_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_IMM,0,Rd,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_ands(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,0,Rd,Rn,Rm,0) +#define orc_arm64_emit_ands_lsl(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_asr(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_ror(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,Rd,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_ands_uxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_uxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_uxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_uxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_sxtb(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_sxth(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_sxtw(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,Rd,Rn,Rm,val) +#define orc_arm64_emit_ands_sxtx(p,bits,Rd,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,Rd,Rn,Rm,val) + +/** ORC_ARM64_DP_TST (alias of ANDS) */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_tst_imm(p,bits,Rn,imm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_IMM,0,0,Rn,0,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_tst(p,bits,Rn,Rm) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,0,0,Rn,Rm,0) +#define orc_arm64_emit_tst_lsl(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,ORC_ARM_LSL,0,Rn,Rm,val) +#define orc_arm64_emit_tst_asr(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,ORC_ARM_ASR,0,Rn,Rm,val) +#define orc_arm64_emit_tst_ror(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_REG,ORC_ARM_ROR,0,Rn,Rm,val) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_tst_uxtb(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTB,0,Rn,Rm,val) +#define orc_arm64_emit_tst_uxth(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTH,0,Rn,Rm,val) +#define orc_arm64_emit_tst_uxtw(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTW,0,Rn,Rm,val) +#define orc_arm64_emit_tst_uxtx(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_UXTX,0,Rn,Rm,val) +#define orc_arm64_emit_tst_sxtb(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTB,0,Rn,Rm,val) +#define orc_arm64_emit_tst_sxth(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTH,0,Rn,Rm,val) +#define orc_arm64_emit_tst_sxtw(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTW,0,Rn,Rm,val) +#define orc_arm64_emit_tst_sxtx(p,bits,Rn,Rm,val) \ + orc_arm64_emit_lg(p,bits,ORC_ARM64_DP_ANDS,ORC_ARM64_TYPE_EXT,ORC_ARM64_SXTX,0,Rn,Rm,val) + +/** ORC_ARM64_DP_LSL/ASR/ASR/ROR */ +/** ORC_ARM64_TYPE_IMM; aliases of ORC_ARM64_DP_SBFM,UBFM,EXTR */ +#define orc_arm64_emit_lsl_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_bfm(p,bits,ORC_ARM64_DP_UBFM,Rd,Rn,imm,imm-1) +#define orc_arm64_emit_lsr_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_bfm(p,bits,ORC_ARM64_DP_UBFM,Rd,Rn,imm,0x1f) +#define orc_arm64_emit_asr_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_bfm(p,bits,ORC_ARM64_DP_SBFM,Rd,Rn,imm,0x1f) +#define orc_arm64_emit_ror_imm(p,bits,Rd,Rn,imm) \ + orc_arm64_emit_extr(p,bits,Rd,Rn,Rn,imm) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_lsl(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_sft(p,bits,ORC_ARM64_DP_LSL,Rd,Rn,Rm) +#define orc_arm64_emit_lsr(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_sft(p,bits,ORC_ARM64_DP_LSR,Rd,Rn,Rm) +#define orc_arm64_emit_asr(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_sft(p,bits,ORC_ARM64_DP_ASR,Rd,Rn,Rm) +#define orc_arm64_emit_ror(p,bits,Rd,Rn,Rm) \ + orc_arm64_emit_sft(p,bits,ORC_ARM64_DP_ROR,Rd,Rn,Rm) + +/** memory access instructions */ + +/** ORC_ARM64_MEM_STR */ +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_store_reg(p,b,Rt,Rn,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_STR,ORC_ARM64_TYPE_REG,0,Rt,Rn,0,imm) +#define orc_arm64_emit_store_pre(p,b,Rt,Rn,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_STR,ORC_ARM64_TYPE_REG,1,Rt,Rn,0,imm) +#define orc_arm64_emit_store_post(p,b,Rt,Rn,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_STR,ORC_ARM64_TYPE_REG,2,Rt,Rn,0,imm) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_store_uxtw(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_STR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_UXTW,Rt,Rn,Rm,imm) +#define orc_arm64_emit_store_lsl(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_STR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_UXTX,Rt,Rn,Rm,imm) +#define orc_arm64_emit_store_sxtw(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_STR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_SXTW,Rt,Rn,Rm,imm) +#define orc_arm64_emit_store_sxtx(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_STR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_SXTX,Rt,Rn,Rm,imm) + +/** ORC_ARM64_MEM_LDR */ +/** ORC_ARM64_TYPE_IMM */ +#define orc_arm64_emit_load_imm(p,b,Rt,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_IMM,0,Rt,0,0,imm) +#define orc_arm64_emit_load_label(p,b,Rt,label) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_IMM,label,Rt,0,0,0) +/** ORC_ARM64_TYPE_REG */ +#define orc_arm64_emit_load_reg(p,b,Rt,Rn,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_REG,0,Rt,Rn,0,imm) +#define orc_arm64_emit_load_pre(p,b,Rt,Rn,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_REG,1,Rt,Rn,0,imm) +#define orc_arm64_emit_load_post(p,b,Rt,Rn,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_REG,2,Rt,Rn,0,imm) +/** ORC_ARM64_TYPE_EXT */ +#define orc_arm64_emit_load_uxtw(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_UXTW,Rt,Rn,Rm,imm) +#define orc_arm64_emit_load_lsl(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_UXTX,Rt,Rn,Rm,imm) +#define orc_arm64_emit_load_sxtw(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_SXTW,Rt,Rn,Rm,imm) +#define orc_arm64_emit_load_sxtx(p,b,Rt,Rn,Rm,imm) \ + orc_arm64_emit_mem(p,b,ORC_ARM64_MEM_LDR,ORC_ARM64_TYPE_EXT,ORC_ARM64_EXTEND_SXTX,Rt,Rn,Rm,imm) + +/** memory access instructions (pair) */ + +/** ORC_ARM64_MEM_STR */ +#define orc_arm64_emit_store_pair_reg(p,b,Rt,Rt2,Rn,imm) \ + orc_arm64_emit_mem_pair(p,b,ORC_ARM64_MEM_STR,2,Rt,Rt2,Rn,imm) +#define orc_arm64_emit_store_pair_pre(p,b,Rt,Rt2,Rn,imm) \ + orc_arm64_emit_mem_pair(p,b,ORC_ARM64_MEM_STR,3,Rt,Rt2,Rn,imm) +#define orc_arm64_emit_store_pair_post(p,b,Rt,Rt2,Rn,imm) \ + orc_arm64_emit_mem_pair(p,b,ORC_ARM64_MEM_STR,1,Rt,Rt2,Rn,imm) + +/** ORC_ARM64_MEM_LDR */ +#define orc_arm64_emit_load_pair_reg(p,b,Rt,Rt2,Rn,imm) \ + orc_arm64_emit_mem_pair(p,b,ORC_ARM64_MEM_LDR,2,Rt,Rt2,Rn,imm) +#define orc_arm64_emit_load_pair_pre(p,b,Rt,Rt2,Rn,imm) \ + orc_arm64_emit_mem_pair(p,b,ORC_ARM64_MEM_LDR,3,Rt,Rt2,Rn,imm) +#define orc_arm64_emit_load_pair_post(p,b,Rt,Rt2,Rn,imm) \ + orc_arm64_emit_mem_pair(p,b,ORC_ARM64_MEM_LDR,1,Rt,Rt2,Rn,imm) + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcbytecode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcbytecode.h new file mode 100644 index 0000000..876c7e3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcbytecode.h @@ -0,0 +1,35 @@ + +#ifndef _ORC_BYTECODE_H_ +#define _ORC_BYTECODE_H_ + +#include +#include + +ORC_BEGIN_DECLS + +typedef struct _OrcBytecode OrcBytecode; + +struct _OrcBytecode { + /*< private >*/ + orc_uint8 *bytecode; + int length; + int alloc_len; +}; + + +#ifdef ORC_ENABLE_UNSTABLE_API + +ORC_API OrcBytecode * orc_bytecode_new (void); + +ORC_API void orc_bytecode_free (OrcBytecode *bytecode); + +ORC_API OrcBytecode * orc_bytecode_from_program (OrcProgram *p); + +ORC_API int orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode); + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcbytecodes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcbytecodes.h new file mode 100644 index 0000000..cea1ff4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcbytecodes.h @@ -0,0 +1,255 @@ + +/* autogenerated by generate-bytecode */ + +#include +#include + +typedef enum { + ORC_BC_END, + ORC_BC_BEGIN_FUNCTION, + ORC_BC_END_FUNCTION, + ORC_BC_SET_CONSTANT_N, + ORC_BC_SET_N_MULTIPLE, + ORC_BC_SET_N_MINIMUM, + ORC_BC_SET_N_MAXIMUM, + ORC_BC_SET_2D, + ORC_BC_SET_CONSTANT_M, + ORC_BC_SET_NAME, + ORC_BC_SET_BACKUP_FUNCTION, + ORC_BC_ADD_DESTINATION, + ORC_BC_ADD_SOURCE, + ORC_BC_ADD_ACCUMULATOR, + ORC_BC_ADD_CONSTANT, + ORC_BC_ADD_CONSTANT_INT64, + ORC_BC_ADD_PARAMETER, + ORC_BC_ADD_PARAMETER_FLOAT, + ORC_BC_ADD_PARAMETER_INT64, + ORC_BC_ADD_PARAMETER_DOUBLE, + ORC_BC_ADD_TEMPORARY, + ORC_BC_INSTRUCTION_FLAGS, + ORC_BC_RESERVED_22, + ORC_BC_RESERVED_23, + ORC_BC_RESERVED_24, + ORC_BC_RESERVED_25, + ORC_BC_RESERVED_26, + ORC_BC_RESERVED_27, + ORC_BC_RESERVED_28, + ORC_BC_RESERVED_29, + ORC_BC_RESERVED_30, + ORC_BC_RESERVED_31, + ORC_BC_absb, + ORC_BC_addb, + ORC_BC_addssb, + ORC_BC_addusb, + ORC_BC_andb, + ORC_BC_andnb, + ORC_BC_avgsb, + ORC_BC_avgub, + /* 40 */ + ORC_BC_cmpeqb, + ORC_BC_cmpgtsb, + ORC_BC_copyb, + ORC_BC_loadb, + ORC_BC_loadoffb, + ORC_BC_loadupdb, + ORC_BC_loadupib, + ORC_BC_loadpb, + ORC_BC_ldresnearb, + ORC_BC_ldresnearl, + /* 50 */ + ORC_BC_ldreslinb, + ORC_BC_ldreslinl, + ORC_BC_maxsb, + ORC_BC_maxub, + ORC_BC_minsb, + ORC_BC_minub, + ORC_BC_mullb, + ORC_BC_mulhsb, + ORC_BC_mulhub, + ORC_BC_orb, + /* 60 */ + ORC_BC_shlb, + ORC_BC_shrsb, + ORC_BC_shrub, + ORC_BC_signb, + ORC_BC_storeb, + ORC_BC_subb, + ORC_BC_subssb, + ORC_BC_subusb, + ORC_BC_xorb, + ORC_BC_absw, + /* 70 */ + ORC_BC_addw, + ORC_BC_addssw, + ORC_BC_addusw, + ORC_BC_andw, + ORC_BC_andnw, + ORC_BC_avgsw, + ORC_BC_avguw, + ORC_BC_cmpeqw, + ORC_BC_cmpgtsw, + ORC_BC_copyw, + /* 80 */ + ORC_BC_div255w, + ORC_BC_divluw, + ORC_BC_loadw, + ORC_BC_loadoffw, + ORC_BC_loadpw, + ORC_BC_maxsw, + ORC_BC_maxuw, + ORC_BC_minsw, + ORC_BC_minuw, + ORC_BC_mullw, + /* 90 */ + ORC_BC_mulhsw, + ORC_BC_mulhuw, + ORC_BC_orw, + ORC_BC_shlw, + ORC_BC_shrsw, + ORC_BC_shruw, + ORC_BC_signw, + ORC_BC_storew, + ORC_BC_subw, + ORC_BC_subssw, + /* 100 */ + ORC_BC_subusw, + ORC_BC_xorw, + ORC_BC_absl, + ORC_BC_addl, + ORC_BC_addssl, + ORC_BC_addusl, + ORC_BC_andl, + ORC_BC_andnl, + ORC_BC_avgsl, + ORC_BC_avgul, + /* 110 */ + ORC_BC_cmpeql, + ORC_BC_cmpgtsl, + ORC_BC_copyl, + ORC_BC_loadl, + ORC_BC_loadoffl, + ORC_BC_loadpl, + ORC_BC_maxsl, + ORC_BC_maxul, + ORC_BC_minsl, + ORC_BC_minul, + /* 120 */ + ORC_BC_mulll, + ORC_BC_mulhsl, + ORC_BC_mulhul, + ORC_BC_orl, + ORC_BC_shll, + ORC_BC_shrsl, + ORC_BC_shrul, + ORC_BC_signl, + ORC_BC_storel, + ORC_BC_subl, + /* 130 */ + ORC_BC_subssl, + ORC_BC_subusl, + ORC_BC_xorl, + ORC_BC_loadq, + ORC_BC_loadpq, + ORC_BC_storeq, + ORC_BC_splatw3q, + ORC_BC_copyq, + ORC_BC_cmpeqq, + ORC_BC_cmpgtsq, + /* 140 */ + ORC_BC_andq, + ORC_BC_andnq, + ORC_BC_orq, + ORC_BC_xorq, + ORC_BC_addq, + ORC_BC_subq, + ORC_BC_shlq, + ORC_BC_shrsq, + ORC_BC_shruq, + ORC_BC_convsbw, + /* 150 */ + ORC_BC_convubw, + ORC_BC_splatbw, + ORC_BC_splatbl, + ORC_BC_convswl, + ORC_BC_convuwl, + ORC_BC_convslq, + ORC_BC_convulq, + ORC_BC_convwb, + ORC_BC_convhwb, + ORC_BC_convssswb, + /* 160 */ + ORC_BC_convsuswb, + ORC_BC_convusswb, + ORC_BC_convuuswb, + ORC_BC_convlw, + ORC_BC_convhlw, + ORC_BC_convssslw, + ORC_BC_convsuslw, + ORC_BC_convusslw, + ORC_BC_convuuslw, + ORC_BC_convql, + /* 170 */ + ORC_BC_convsssql, + ORC_BC_convsusql, + ORC_BC_convussql, + ORC_BC_convuusql, + ORC_BC_mulsbw, + ORC_BC_mulubw, + ORC_BC_mulswl, + ORC_BC_muluwl, + ORC_BC_mulslq, + ORC_BC_mululq, + /* 180 */ + ORC_BC_accw, + ORC_BC_accl, + ORC_BC_accsadubl, + ORC_BC_swapw, + ORC_BC_swapl, + ORC_BC_swapwl, + ORC_BC_swapq, + ORC_BC_swaplq, + ORC_BC_select0wb, + ORC_BC_select1wb, + /* 190 */ + ORC_BC_select0lw, + ORC_BC_select1lw, + ORC_BC_select0ql, + ORC_BC_select1ql, + ORC_BC_mergelq, + ORC_BC_mergewl, + ORC_BC_mergebw, + ORC_BC_splitql, + ORC_BC_splitlw, + ORC_BC_splitwb, + /* 200 */ + ORC_BC_addf, + ORC_BC_subf, + ORC_BC_mulf, + ORC_BC_divf, + ORC_BC_sqrtf, + ORC_BC_maxf, + ORC_BC_minf, + ORC_BC_cmpeqf, + ORC_BC_cmpltf, + ORC_BC_cmplef, + /* 210 */ + ORC_BC_convfl, + ORC_BC_convlf, + ORC_BC_addd, + ORC_BC_subd, + ORC_BC_muld, + ORC_BC_divd, + ORC_BC_sqrtd, + ORC_BC_maxd, + ORC_BC_mind, + ORC_BC_cmpeqd, + /* 220 */ + ORC_BC_cmpltd, + ORC_BC_cmpled, + ORC_BC_convdl, + ORC_BC_convld, + ORC_BC_convfd, + ORC_BC_convdf, + /* 226 */ + ORC_BC_LAST +} OrcBytecodes; diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccode.h new file mode 100644 index 0000000..be71804 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccode.h @@ -0,0 +1,53 @@ + +#ifndef _ORC_CODE_H_ +#define _ORC_CODE_H_ + +#include +#include +#include +#include + +ORC_BEGIN_DECLS + +typedef struct _OrcCodeVariable OrcCodeVariable; + + +struct _OrcCodeVariable { + /*< private >*/ + int vartype; + int size; + orc_union64 value; +}; + +struct _OrcCode { + /*< public >*/ + OrcExecutorFunc exec; + + /*< private >*/ + OrcCompileResult result; + char *name; + + /* for execution */ + unsigned char *code; + int code_size; + void *chunk; + + /* for emulation */ + int n_insns; + OrcInstruction *insns; + OrcCodeVariable *vars; + int is_2d; + int constant_n; + int constant_m; +}; + + +ORC_API void orc_code_allocate_codemem (OrcCode *code, int size); + +ORC_API OrcCode * orc_code_new (void); +ORC_API void orc_code_free (OrcCode *code); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccompiler.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccompiler.h new file mode 100644 index 0000000..2af53a5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccompiler.h @@ -0,0 +1,176 @@ + +#ifndef _ORC_COMPILER_H_ +#define _ORC_COMPILER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +ORC_BEGIN_DECLS + +typedef struct _OrcFixup OrcFixup; + + +#define ORC_ENABLE_ASM_CODE +#ifdef ORC_ENABLE_ASM_CODE +#define ORC_ASM_CODE(compiler,...) orc_compiler_append_code(compiler, __VA_ARGS__) +#else +#define ORC_ASM_CODE(compiler,...) +#endif + + +#define ORC_COMPILER_ERROR(compiler, ...) do { \ + compiler->error = TRUE; \ + compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; \ + orc_debug_print(ORC_DEBUG_WARNING, __FILE__, ORC_FUNCTION, __LINE__, __VA_ARGS__); \ +} while (0) + +#if 0 +/* FIXME in orcutils.h since it's needed in orccode.h */ +typedef enum { + ORC_COMPILE_RESULT_OK = 0, + + ORC_COMPILE_RESULT_UNKNOWN_COMPILE = 0x100, + ORC_COMPILE_RESULT_MISSING_RULE = 0x101, + + ORC_COMPILE_RESULT_UNKNOWN_PARSE = 0x200, + ORC_COMPILE_RESULT_PARSE = 0x201, + ORC_COMPILE_RESULT_VARIABLE = 0x202 + +} OrcCompileResult; +#endif + +#define ORC_COMPILE_RESULT_IS_SUCCESSFUL(x) ((x) < 0x100) +#define ORC_COMPILE_RESULT_IS_FATAL(x) ((x) >= 0x200) + +/** + * OrcFixup: + * + * The OrcFixup structure has no public members + */ +struct _OrcFixup { + /*< private >*/ + unsigned char *ptr; + int type; + int label; +}; + +/** + * OrcCompiler: + * + * The OrcCompiler structure has no public members + */ +struct _OrcCompiler { + /*< private >*/ + OrcProgram *program; + OrcTarget *target; + + unsigned int target_flags; + + OrcInstruction insns[ORC_N_INSNS]; + int n_insns; + + OrcVariable vars[ORC_N_COMPILER_VARIABLES]; + int n_temp_vars; + int n_dup_vars; + + unsigned char *code; + unsigned char *codeptr; + + OrcConstant constants[ORC_N_CONSTANTS]; + int n_constants; + + OrcFixup fixups[ORC_N_FIXUPS]; + int n_fixups; + unsigned char *labels[ORC_N_LABELS]; + int labels_int[ORC_N_LABELS]; + int n_labels; + + int error; + char *error_msg; + OrcCompileResult result; + + int valid_regs[ORC_N_REGS]; + int save_regs[ORC_N_REGS]; + int used_regs[ORC_N_REGS]; + int alloc_regs[ORC_N_REGS]; + + int loop_shift; + int long_jumps; + int use_frame_pointer; + + char *asm_code; + int asm_code_len; + + int is_64bit; + int tmpreg; + int tmpreg2; + int exec_reg; + int gp_tmpreg; + + int insn_index; + int unroll_index; + int need_mask_regs; + int unroll_shift; + + int alloc_loop_counter; + int allow_gp_on_stack; + int loop_counter; + int size_region; + int has_iterator_opcode; + + int offset; + int min_temp_reg; + int max_used_temp_reg; + + int insn_shift; /* used when emitting rules */ + int max_var_size; /* size of largest var */ + int load_params; + + void *output_insns; + int n_output_insns; + int n_output_insns_alloc; +}; + + +ORC_API int orc_compiler_label_new (OrcCompiler *compiler); + +ORC_API int orc_compiler_get_constant (OrcCompiler *compiler, int size, int value); + +ORC_API int orc_compiler_get_constant_long (OrcCompiler *compiler, orc_uint32 a, + orc_uint32 b, orc_uint32 c, orc_uint32 d); + +ORC_API int orc_compiler_try_get_constant_long (OrcCompiler *compiler, orc_uint32 a, + orc_uint32 b, orc_uint32 c, orc_uint32 d); + +ORC_API int orc_compiler_get_temp_constant (OrcCompiler *compiler, int size, int value); + +ORC_API int orc_compiler_get_temp_reg (OrcCompiler *compiler); + +ORC_API int orc_compiler_get_constant_reg (OrcCompiler *compiler); + +ORC_API void orc_compiler_error (OrcCompiler *compiler, const char *fmt, ...); + +ORC_API void orc_compiler_append_code (OrcCompiler *p, const char *fmt, ...) ORC_GNU_PRINTF(2,3); + +#ifdef ORC_ENABLE_UNSTABLE_API + +ORC_API int orc_compiler_flag_check (const char *flag); + +/* FIXME: remove, these were never actually exported as public symbols, so unusable */ +extern int _orc_compiler_flag_backup; +extern int _orc_compiler_flag_emulate; +extern int _orc_compiler_flag_debug; +extern int _orc_compiler_flag_randomize; + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcconstant.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcconstant.h new file mode 100644 index 0000000..4c2e7df --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcconstant.h @@ -0,0 +1,39 @@ + +#ifndef _ORC_CONSTANT_H_ +#define _ORC_CONSTANT_H_ + +#include +#include + +ORC_BEGIN_DECLS + + +enum { + ORC_CONST_ZERO, + ORC_CONST_SPLAT_B, + ORC_CONST_SPLAT_W, + ORC_CONST_SPLAT_L, + ORC_CONST_FULL +}; + +/** + * OrcConstant: + * + * The OrcConstant structure has no public members + */ +struct _OrcConstant { + /*< private >*/ + int type; + int alloc_reg; + unsigned int value; + unsigned int full_value[4]; + int use_count; + int is_long; + int label; +}; + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccpu.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccpu.h new file mode 100644 index 0000000..b354f4f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccpu.h @@ -0,0 +1,21 @@ + +#ifndef _ORC_CPU_H_ +#define _ORC_CPU_H_ + +#include +#include + +ORC_BEGIN_DECLS + + +ORC_API void orc_get_data_cache_sizes (int *level1, int *level2, int *level3); + +ORC_API void orc_get_cpu_family_model_stepping (int *family, int *model, int *stepping); + +ORC_API const char * orc_get_cpu_name (void); + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccpuinsn.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccpuinsn.h new file mode 100644 index 0000000..6a8dea8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orccpuinsn.h @@ -0,0 +1,40 @@ + +#ifndef _ORC_ORC_CPUINSN_H_ +#define _ORC_ORC_CPUINSN_H_ + +#ifdef ORC_ENABLE_UNSTABLE_API + +typedef struct _OrcSysInsn OrcSysInsn; +typedef struct _OrcSysOpcode OrcSysOpcode; + +struct _OrcSysInsn { + int opcode; + int dest_reg; + int src1_reg; + int src2_reg; + + int immediate; + + int mem_reg; + int memoffset; + int indexreg; + int shift; + int size; +}; + +struct _OrcSysOpcode { + char name[16]; + int type; + int flags; + orc_uint8 prefix; + orc_uint32 code; + int code2; +}; + + +#define ORC_SYS_OPCODE_FLAG_FIXED (1<<0) + +#endif + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcdebug.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcdebug.h new file mode 100644 index 0000000..22b1c24 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcdebug.h @@ -0,0 +1,158 @@ +/* + * ORC - Library of Optimized Inner Loops + * Copyright (c) 2003,2004 David A. Schleef + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ORC_DEBUG_H_ +#define _ORC_DEBUG_H_ + +#include +#include +#include + +ORC_BEGIN_DECLS + +/** + * OrcDebugPrintFunc: + * @level: the debug level + * @file: name of the file where the debug message occurs + * @func: name of the function where the debug message occurs + * @line: line in the file where the debug message occurs + * @format: a printf format + * @varargs: varargs for the printf format + * + * Typedef describing functions that can be registered using + * orc_debug_set_print_function() so that it is called to + * print debugging messages. + */ +typedef void (*OrcDebugPrintFunc) (int level, const char *file, + const char *func, int line, const char *format, va_list varargs); + +/** + * OrcDebugLevel: + * @ORC_DEBUG_NONE: No debugging. Used to disable debugging output. + * @ORC_DEBUG_ERROR: The level for messages indicating that an error + * has occurred that causes Orc to produce incorrect results. Also + * used temporarily by developers for testing code. + * @ORC_DEBUG_WARNING: Messages at this level indicate something has + * occurred that a developer looking into an application problem may + * want to know. + * @ORC_DEBUG_INFO: Messages at this level provide high-level + * information about Orc internals. + * @ORC_DEBUG_DEBUG: The default level for logging messages. + * @ORC_DEBUG_LOG: The level for messages that probably don't need to + * be logged at all. + * + * Enumeration describing debug levels in Orc. + */ +typedef enum { + ORC_DEBUG_NONE = 0, + ORC_DEBUG_ERROR, + ORC_DEBUG_WARNING, + ORC_DEBUG_INFO, + ORC_DEBUG_DEBUG, + ORC_DEBUG_LOG +} OrcDebugLevel; + +/** + * ORC_ERROR: + * @...: printf-style format and arguments + * + * Macro to call ORC_DEBUG_PRINT() with a level of #ORC_DEBUG_ERROR. + */ +#define ORC_ERROR(...) ORC_DEBUG_PRINT(ORC_DEBUG_ERROR, __VA_ARGS__) +/** + * ORC_WARNING: + * @...: printf-style format and arguments + * + * Macro to call ORC_DEBUG_PRINT() with a level of #ORC_DEBUG_WARNING. + */ +#define ORC_WARNING(...) ORC_DEBUG_PRINT(ORC_DEBUG_WARNING, __VA_ARGS__) +/** + * ORC_INFO: + * @...: printf-style format and arguments + * + * Macro to call ORC_DEBUG_PRINT() with a level of #ORC_DEBUG_INFO. + */ +#define ORC_INFO(...) ORC_DEBUG_PRINT(ORC_DEBUG_INFO, __VA_ARGS__) +/** + * ORC_DEBUG: + * @...: printf-style format and arguments + * + * Macro to call ORC_DEBUG_PRINT() with a level of #ORC_DEBUG_DEBUG. + */ +#define ORC_DEBUG(...) ORC_DEBUG_PRINT(ORC_DEBUG_DEBUG, __VA_ARGS__) +/** + * ORC_LOG: + * @...: printf-style format and arguments + * + * Macro to call ORC_DEBUG_PRINT() with a level of #ORC_DEBUG_LOG. + */ +#define ORC_LOG(...) ORC_DEBUG_PRINT(ORC_DEBUG_LOG, __VA_ARGS__) + +/** + * ORC_FUNCTION: + * + * Internal macro that points to __PRETTY_FUNCTION__ or __func__ + * if the former is not available. + */ +#if defined (__GNUC__) || defined (__PRETTY_FUNCTION__) +#define ORC_FUNCTION __PRETTY_FUNCTION__ +#elif defined(__func__) +#define ORC_FUNCTION __func__ +#else +#define ORC_FUNCTION "" +#endif + +/** + * ORC_DEBUG_PRINT: + * @level: debug level of message + * @Varargs: printf-style format and arguments + * + * Macro to call orc_debug_print() with the correct values for + * the name of the source file, line of source file, and function. + */ +#define ORC_DEBUG_PRINT(level, ...) do { \ + orc_debug_print((level), __FILE__, ORC_FUNCTION, __LINE__, __VA_ARGS__); \ +}while(0) + +#define ORC_ASSERT(test) do { \ + if (!(test)) { \ + ORC_ERROR("assertion failed: " #test ); \ + abort(); \ + } \ +} while(0) + +ORC_API void orc_debug_set_print_function (OrcDebugPrintFunc func); +ORC_API int orc_debug_get_level (void); +ORC_API void orc_debug_set_level (int level); + +ORC_API void orc_debug_print (int level, const char *file, const char *func, + int line, const char *format, ...); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcemulateopcodes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcemulateopcodes.h new file mode 100644 index 0000000..b02050e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcemulateopcodes.h @@ -0,0 +1,203 @@ + +/* autogenerated by generate-emulation */ + +#ifndef _ORC_EMULATE_OPCODES_H_ +#define _ORC_EMULATE_OPCODES_H_ + +void emulate_absb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addssb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addusb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andnb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_avgsb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_avgub (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpeqb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpgtsb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_copyb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadoffb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadupdb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadupib (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadpb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_ldresnearb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_ldresnearl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_ldreslinb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_ldreslinl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxsb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxub (OrcOpcodeExecutor *ex, int i, int n); +void emulate_minsb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_minub (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mullb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulhsb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulhub (OrcOpcodeExecutor *ex, int i, int n); +void emulate_orb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shlb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shrsb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shrub (OrcOpcodeExecutor *ex, int i, int n); +void emulate_signb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_storeb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subssb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subusb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_xorb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_absw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addssw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addusw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andnw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_avgsw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_avguw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpeqw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpgtsw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_copyw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_div255w (OrcOpcodeExecutor *ex, int i, int n); +void emulate_divluw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadoffw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadpw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxsw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxuw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_minsw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_minuw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mullw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulhsw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulhuw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_orw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shlw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shrsw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shruw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_signw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_storew (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subssw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subusw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_xorw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_absl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addssl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addusl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andnl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_avgsl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_avgul (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpeql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpgtsl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_copyl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadoffl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadpl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxsl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxul (OrcOpcodeExecutor *ex, int i, int n); +void emulate_minsl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_minul (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulll (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulhsl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulhul (OrcOpcodeExecutor *ex, int i, int n); +void emulate_orl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shll (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shrsl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shrul (OrcOpcodeExecutor *ex, int i, int n); +void emulate_signl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_storel (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subssl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subusl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_xorl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_loadpq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_storeq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_splatw3q (OrcOpcodeExecutor *ex, int i, int n); +void emulate_copyq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpeqq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpgtsq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_andnq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_orq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_xorq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shlq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shrsq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_shruq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convsbw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convubw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_splatbw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_splatbl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convswl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convuwl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convslq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convulq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convwb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convhwb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convssswb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convsuswb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convusswb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convuuswb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convlw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convhlw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convssslw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convsuslw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convusslw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convuuslw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convsssql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convsusql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convussql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convuusql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulsbw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulubw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulswl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_muluwl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulslq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mululq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_accw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_accl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_accsadubl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_swapw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_swapl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_swapwl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_swapq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_swaplq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_select0wb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_select1wb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_select0lw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_select1lw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_select0ql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_select1ql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mergelq (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mergewl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mergebw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_splitql (OrcOpcodeExecutor *ex, int i, int n); +void emulate_splitlw (OrcOpcodeExecutor *ex, int i, int n); +void emulate_splitwb (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mulf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_divf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_sqrtf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_minf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpeqf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpltf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmplef (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convfl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convlf (OrcOpcodeExecutor *ex, int i, int n); +void emulate_addd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_subd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_muld (OrcOpcodeExecutor *ex, int i, int n); +void emulate_divd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_sqrtd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_maxd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_mind (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpeqd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpltd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_cmpled (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convdl (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convld (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convfd (OrcOpcodeExecutor *ex, int i, int n); +void emulate_convdf (OrcOpcodeExecutor *ex, int i, int n); + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcexecutor.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcexecutor.h new file mode 100644 index 0000000..7f5de28 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcexecutor.h @@ -0,0 +1,135 @@ + +#ifndef _ORC_EXECUTOR_H_ +#define _ORC_EXECUTOR_H_ + +#include +#include + +ORC_BEGIN_DECLS + + + +typedef struct _OrcOpcodeExecutor OrcOpcodeExecutor; +typedef struct _OrcExecutor OrcExecutor; +typedef struct _OrcExecutorAlt OrcExecutorAlt; + +typedef void (*OrcOpcodeEmulateFunc)(OrcOpcodeExecutor *ex, void *user); +typedef void (*OrcOpcodeEmulateNFunc)(OrcOpcodeExecutor *ex, int index, int n); +typedef void (*OrcOpcodeEmulate16Func)(OrcOpcodeExecutor *ex); +typedef void (*OrcExecutorFunc)(OrcExecutor *ex); + +/** + * OrcOpcodeExecutor: + * + * The OrcOpcodeExecutor structure has no public members + */ +struct _OrcOpcodeExecutor { + /*< private >*/ + int src_values[ORC_STATIC_OPCODE_N_SRC]; + int dest_values[ORC_STATIC_OPCODE_N_DEST]; + + OrcOpcodeEmulateNFunc emulateN; + + void *src_ptrs[ORC_STATIC_OPCODE_N_SRC]; + void *dest_ptrs[ORC_STATIC_OPCODE_N_DEST]; + int shift; +}; + +/** + * OrcExecutor: + * + */ +struct _OrcExecutor { + /*< private >*/ + OrcProgram *program; + int n; + int counter1; + int counter2; + int counter3; + + void *arrays[ORC_N_VARIABLES]; + int params[ORC_N_VARIABLES]; + int accumulators[4]; + /* exec pointer is stored in arrays[ORC_VAR_A1] */ + /* OrcCode pointer is stored in arrays[ORC_VAR_A2] */ + /* row pointers are stored in arrays[i+ORC_VAR_C1] */ + /* the stride for arrays[x] is stored in params[x] */ + /* m is stored in params[ORC_VAR_A1] */ + /* m_index is stored in params[ORC_VAR_A2] */ + /* elapsed time is stored in params[ORC_VAR_A3] */ + /* high half of params is stored in params[ORC_VAR_T1..] */ +}; + +/* the alternate view of OrcExecutor */ +struct _OrcExecutorAlt { + /*< private >*/ + OrcProgram *program; + int n; + int counter1; + int counter2; + int counter3; + + void *arrays[ORC_N_ARRAYS]; + OrcExecutorFunc exec; + OrcCode *code; + void *unused1[ORC_N_VARIABLES - ORC_N_ARRAYS - 2]; + int strides[ORC_N_ARRAYS]; + int m; + int m_index; + int time; + int unused2; + int unused4[8]; + int params[ORC_VAR_T1-ORC_VAR_P1]; + int params_hi[ORC_VAR_T1-ORC_VAR_P1]; + int unused3[ORC_N_VARIABLES - ORC_VAR_T9]; + int accumulators[4]; +}; +#define ORC_EXECUTOR_EXEC(ex) ((OrcExecutorFunc)((ex)->arrays[ORC_VAR_A1])) +#define ORC_EXECUTOR_M(ex) ((ex)->params[ORC_VAR_A1]) +#define ORC_EXECUTOR_M_INDEX(ex) ((ex)->params[ORC_VAR_A2]) +#define ORC_EXECUTOR_TIME(ex) ((ex)->params[ORC_VAR_A3]) + + + + +ORC_API OrcExecutor * orc_executor_new (OrcProgram *program); + +ORC_API void orc_executor_free (OrcExecutor *ex); + +ORC_API void orc_executor_set_program (OrcExecutor *ex, OrcProgram *program); + +ORC_API void orc_executor_set_array (OrcExecutor *ex, int var, void *ptr); + +ORC_API void orc_executor_set_stride (OrcExecutor *ex, int var, int stride); + +ORC_API void orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *ptr); + +ORC_API void orc_executor_set_param (OrcExecutor *ex, int var, int value); + +ORC_API void orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value); + +ORC_API void orc_executor_set_param_float (OrcExecutor *ex, int var, float value); + +ORC_API void orc_executor_set_param_int64 (OrcExecutor *ex, int var, orc_int64 value); + +ORC_API void orc_executor_set_param_double (OrcExecutor *ex, int var, double value); + +ORC_API int orc_executor_get_accumulator (OrcExecutor *ex, int var); + +ORC_API int orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name); + +ORC_API void orc_executor_set_n (OrcExecutor *ex, int n); + +ORC_API void orc_executor_set_m (OrcExecutor *ex, int m); + +ORC_API void orc_executor_emulate (OrcExecutor *ex); + +ORC_API void orc_executor_run (OrcExecutor *ex); + +ORC_API void orc_executor_run_backup (OrcExecutor *ex); + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcfunctions.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcfunctions.h new file mode 100644 index 0000000..971020c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcfunctions.h @@ -0,0 +1,93 @@ + +/* autogenerated from orcfunctions.orc */ + +#ifndef _ORCFUNCTIONS_H_ +#define _ORCFUNCTIONS_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + + +#ifndef _ORC_INTEGER_TYPEDEFS_ +#define _ORC_INTEGER_TYPEDEFS_ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +typedef int8_t orc_int8; +typedef int16_t orc_int16; +typedef int32_t orc_int32; +typedef int64_t orc_int64; +typedef uint8_t orc_uint8; +typedef uint16_t orc_uint16; +typedef uint32_t orc_uint32; +typedef uint64_t orc_uint64; +#define ORC_UINT64_C(x) UINT64_C(x) +#elif defined(_MSC_VER) +typedef signed __int8 orc_int8; +typedef signed __int16 orc_int16; +typedef signed __int32 orc_int32; +typedef signed __int64 orc_int64; +typedef unsigned __int8 orc_uint8; +typedef unsigned __int16 orc_uint16; +typedef unsigned __int32 orc_uint32; +typedef unsigned __int64 orc_uint64; +#define ORC_UINT64_C(x) (x##Ui64) +#define inline __inline +#else +#include +typedef signed char orc_int8; +typedef short orc_int16; +typedef int orc_int32; +typedef unsigned char orc_uint8; +typedef unsigned short orc_uint16; +typedef unsigned int orc_uint32; +#if INT_MAX == LONG_MAX +typedef long long orc_int64; +typedef unsigned long long orc_uint64; +#define ORC_UINT64_C(x) (x##ULL) +#else +typedef long orc_int64; +typedef unsigned long orc_uint64; +#define ORC_UINT64_C(x) (x##UL) +#endif +#endif +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +#endif +#ifndef ORC_RESTRICT +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict +#else +#define ORC_RESTRICT +#endif +#endif + +#ifndef ORC_INTERNAL +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define ORC_INTERNAL __hidden +#elif defined (__GNUC__) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define ORC_INTERNAL +#endif +#endif + +ORC_API void orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n); +ORC_API void orc_memset (void * ORC_RESTRICT d1, int p1, int n); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcinstruction.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcinstruction.h new file mode 100644 index 0000000..168ab0f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcinstruction.h @@ -0,0 +1,39 @@ + +#ifndef _ORC_INSTRUCTION_H_ +#define _ORC_INSTRUCTION_H_ + +#include +#include +#include +#include + +ORC_BEGIN_DECLS + +/** + * OrcInstruction: + * + * The OrcInstruction structure has no public members + */ +struct _OrcInstruction { + /*< private >*/ + OrcStaticOpcode *opcode; + int dest_args[ORC_STATIC_OPCODE_N_DEST]; + int src_args[ORC_STATIC_OPCODE_N_SRC]; + + OrcRule *rule; + unsigned int flags; + /* Source line number this instruction came from */ + int line; +}; + +#define ORC_INSTRUCTION_FLAG_X2 (1<<0) +#define ORC_INSTRUCTION_FLAG_X4 (1<<1) + +#define ORC_INSN_FLAG_INVARIANT (1<<2) +#define ORC_INSN_FLAG_ADDED (1<<3) + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcinternal.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcinternal.h new file mode 100644 index 0000000..b86f698 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcinternal.h @@ -0,0 +1,46 @@ + +#ifndef _ORC_INTERNAL_H_ +#define _ORC_INTERNAL_H_ + +#include +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +/* FIXME: not sure why these are exported, no one needs to call these, that's + * already done as part of orc_init() */ +void orc_mmx_init (void); +void orc_sse_init (void); +void orc_arm_init (void); +void orc_powerpc_init (void); +void orc_c_init (void); +void orc_neon_init (void); +void orc_c64x_init (void); +void orc_c64x_c_init (void); +void orc_mips_init (void); + +typedef struct _OrcCodeChunk OrcCodeChunk; + +/* This is internal API, nothing in the public headers returns an OrcCodeChunk */ +void orc_code_chunk_free (OrcCodeChunk *chunk); + +extern int _orc_data_cache_size_level1; +extern int _orc_data_cache_size_level2; +extern int _orc_data_cache_size_level3; +extern int _orc_cpu_family; +extern int _orc_cpu_model; +extern int _orc_cpu_stepping; +extern const char *_orc_cpu_name; + +void orc_compiler_emit_invariants (OrcCompiler *compiler); +int orc_program_has_float (OrcCompiler *compiler); + +char* _orc_getenv (const char *var); +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orclimits.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orclimits.h new file mode 100644 index 0000000..928b00c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orclimits.h @@ -0,0 +1,94 @@ + +#ifndef _ORC_LIMITS_H_ +#define _ORC_LIMITS_H_ + +#include + +ORC_BEGIN_DECLS + +#define ORC_N_REGS (32*4) +#define ORC_N_INSNS 100 +#define ORC_N_VARIABLES 64 +#define ORC_N_ARRAYS 12 +#define ORC_N_REGISTERS 20 +#define ORC_N_FIXUPS 100 +#define ORC_N_CONSTANTS 20 +#define ORC_N_LABELS 40 +#define ORC_N_COMPILER_VARIABLES (ORC_N_VARIABLES+32) + +#define ORC_GP_REG_BASE 32 +#define ORC_VEC_REG_BASE 64 +#define ORC_REG_INVALID 0 + +#define ORC_STATIC_OPCODE_N_SRC 4 +#define ORC_STATIC_OPCODE_N_DEST 2 + +#define ORC_OPCODE_N_ARGS 4 +#define ORC_N_TARGETS 10 +#define ORC_N_RULE_SETS 10 + +#define ORC_MAX_VAR_SIZE 8 + +#define ORC_MAX_DEST_VARS 4 +#define ORC_MAX_SRC_VARS 8 +#define ORC_MAX_TEMP_VARS 16 +#define ORC_MAX_CONST_VARS 8 +#define ORC_MAX_PARAM_VARS 8 +#define ORC_MAX_ACCUM_VARS 4 + +enum { + ORC_VAR_D1, + ORC_VAR_D2, + ORC_VAR_D3, + ORC_VAR_D4, + ORC_VAR_S1, + ORC_VAR_S2, + ORC_VAR_S3, + ORC_VAR_S4, + ORC_VAR_S5, + ORC_VAR_S6, + ORC_VAR_S7, + ORC_VAR_S8, + ORC_VAR_A1, + ORC_VAR_A2, + ORC_VAR_A3, + ORC_VAR_A4, + ORC_VAR_C1, + ORC_VAR_C2, + ORC_VAR_C3, + ORC_VAR_C4, + ORC_VAR_C5, + ORC_VAR_C6, + ORC_VAR_C7, + ORC_VAR_C8, + ORC_VAR_P1, + ORC_VAR_P2, + ORC_VAR_P3, + ORC_VAR_P4, + ORC_VAR_P5, + ORC_VAR_P6, + ORC_VAR_P7, + ORC_VAR_P8, + ORC_VAR_T1, + ORC_VAR_T2, + ORC_VAR_T3, + ORC_VAR_T4, + ORC_VAR_T5, + ORC_VAR_T6, + ORC_VAR_T7, + ORC_VAR_T8, + ORC_VAR_T9, + ORC_VAR_T10, + ORC_VAR_T11, + ORC_VAR_T12, + ORC_VAR_T13, + ORC_VAR_T14, + ORC_VAR_T15, + ORC_VAR_T16 +}; + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcmips.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcmips.h new file mode 100644 index 0000000..f0d5c42 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcmips.h @@ -0,0 +1,229 @@ +/* + Copyright 2002 - 2009 David A. Schleef + Copyright 2012 MIPS Technologies, Inc. + + Author: Guillaume Emont + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef _ORC_MIPS_H_ +#define _ORC_MIPS_H_ + +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +typedef enum { + ORC_TARGET_MIPS_FRAME_POINTER = (1<<0), + ORC_TARGET_MIPS_DSP2 = (1<<1), +} OrcTargetMipsFlags; + +typedef enum { + ORC_MIPS_ZERO = ORC_GP_REG_BASE+0, + ORC_MIPS_AT, + ORC_MIPS_V0, + ORC_MIPS_V1, + ORC_MIPS_A0, + ORC_MIPS_A1, + ORC_MIPS_A2, + ORC_MIPS_A3, + ORC_MIPS_T0, + ORC_MIPS_T1, + ORC_MIPS_T2, + ORC_MIPS_T3, + ORC_MIPS_T4, + ORC_MIPS_T5, + ORC_MIPS_T6, + ORC_MIPS_T7, + ORC_MIPS_S0, + ORC_MIPS_S1, + ORC_MIPS_S2, + ORC_MIPS_S3, + ORC_MIPS_S4, + ORC_MIPS_S5, + ORC_MIPS_S6, + ORC_MIPS_S7, + ORC_MIPS_T8, + ORC_MIPS_T9, + ORC_MIPS_K0, + ORC_MIPS_K1, + ORC_MIPS_GP, + ORC_MIPS_SP, + ORC_MIPS_FP, + ORC_MIPS_RA +} OrcMipsRegister; + +ORC_API +unsigned long orc_mips_get_cpu_flags (void); + +ORC_API +void orc_mips_emit_label (OrcCompiler *compiler, unsigned int label); + +ORC_API +void orc_mips_emit_nop (OrcCompiler *compiler); + +ORC_API +void orc_mips_emit_sw (OrcCompiler *compiler, OrcMipsRegister reg, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_swr (OrcCompiler *compiler, OrcMipsRegister reg, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_swl (OrcCompiler *compiler, OrcMipsRegister reg, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_sh (OrcCompiler *compiler, OrcMipsRegister reg, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_sb (OrcCompiler *compiler, OrcMipsRegister reg, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_lw (OrcCompiler *compiler, OrcMipsRegister dest, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_lwr (OrcCompiler *compiler, OrcMipsRegister dest, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_lwl (OrcCompiler *compiler, OrcMipsRegister dest, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_lh (OrcCompiler *compiler, OrcMipsRegister dest, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_lb (OrcCompiler *compiler, OrcMipsRegister dest, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_lbu (OrcCompiler *compiler, OrcMipsRegister dest, + OrcMipsRegister base, unsigned int offset); +ORC_API +void orc_mips_emit_jr (OrcCompiler *compiler, OrcMipsRegister address_reg); + +ORC_API +void orc_mips_emit_conditional_branch (OrcCompiler *compiler, int condition, + OrcMipsRegister rs, OrcMipsRegister rt, + unsigned int label); + +ORC_API +void orc_mips_emit_conditional_branch_with_offset (OrcCompiler *compiler, + int condition, + OrcMipsRegister rs, + OrcMipsRegister rt, + int offset); + +enum { + ORC_MIPS_BEQ = 04, + ORC_MIPS_BNE, + ORC_MIPS_BLEZ, + ORC_MIPS_BGTZ, + + /* instructions are encoded differently from here on*/ + ORC_MIPS_BLTZ, + ORC_MIPS_BGEZ, +}; + +#define orc_mips_emit_beqz(compiler, reg, label) \ + orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BEQ, reg, ORC_MIPS_ZERO, label) +#define orc_mips_emit_bnez(compiler, reg, label) \ + orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BNE, reg, ORC_MIPS_ZERO, label) +#define orc_mips_emit_blez(compiler, reg, label) \ + orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BLEZ, reg, ORC_MIPS_ZERO, label) +#define orc_mips_emit_beq(compiler, reg1, reg2, label) \ + orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BEQ, reg1, reg2, label) + +ORC_API void orc_mips_emit_addiu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_addi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_add (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_addu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_addu_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_addu_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_addq_s_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_adduh_r_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_move (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +ORC_API void orc_mips_emit_sub (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_subu_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_subq_s_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_subq_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_subu_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_srl (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_sll (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_sra (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_shll_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_shra_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_shrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_andi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_or (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_and (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_ori (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +ORC_API void orc_mips_emit_lui (OrcCompiler *compiler, OrcMipsRegister dest, int value); +ORC_API void orc_mips_emit_mul (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_mul_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); + +ORC_API void orc_mips_emit_append (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int shift_amount); + +ORC_API void orc_mips_emit_prepend (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int shift_amount); + +ORC_API void orc_mips_emit_mtlo (OrcCompiler *compiler, OrcMipsRegister source); + +ORC_API void orc_mips_emit_extr_s_h (OrcCompiler *compiler, OrcMipsRegister dest, int accumulator, int shift); + +ORC_API void orc_mips_emit_slt (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister src1, OrcMipsRegister src2); +ORC_API void orc_mips_emit_movn (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister src, OrcMipsRegister condition); + +ORC_API void orc_mips_emit_repl_ph (OrcCompiler *compiler, OrcMipsRegister dest, int value); +ORC_API void orc_mips_emit_replv_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +ORC_API void orc_mips_emit_replv_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +ORC_API void orc_mips_emit_preceu_ph_qbr (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +ORC_API void orc_mips_emit_precr_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_precrq_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_cmp_lt_ph (OrcCompiler *compiler, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_pick_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); + +ORC_API void orc_mips_emit_packrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +ORC_API void orc_mips_emit_align (OrcCompiler *compiler, int align_shift); + +ORC_API void orc_mips_emit_wsbh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +ORC_API void orc_mips_emit_seh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); + +ORC_API void orc_mips_emit_pref (OrcCompiler *compiler, int hint, OrcMipsRegister base, int offset); + +ORC_API void orc_mips_do_fixups (OrcCompiler *compiler); + +/* ORC_STRUCT_OFFSET doesn't work for cross-compiling, so we use that */ + +#define ORC_MIPS_EXECUTOR_OFFSET_PROGRAM 0 +#define ORC_MIPS_EXECUTOR_OFFSET_N 4 +#define ORC_MIPS_EXECUTOR_OFFSET_COUNTER1 8 +#define ORC_MIPS_EXECUTOR_OFFSET_COUNTER2 12 +#define ORC_MIPS_EXECUTOR_OFFSET_COUNTER3 16 +#define ORC_MIPS_EXECUTOR_OFFSET_ARRAYS(i) (20 + 4 * i) +#define ORC_MIPS_EXECUTOR_OFFSET_PARAMS(i) (276 + 4 * i) +#define ORC_MIPS_EXECUTOR_OFFSET_ACCUMULATORS(i) (532 + 4 * i) + +#endif /* ORC_ENABLE_UNSTABLE_API */ + +ORC_END_DECLS + +#endif /* _ORC_MIPS_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcmmx.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcmmx.h new file mode 100644 index 0000000..deba23c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcmmx.h @@ -0,0 +1,79 @@ + +#ifndef _ORC_MMX_H_ +#define _ORC_MMX_H_ + +#include +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +typedef enum { + X86_MM0 = ORC_VEC_REG_BASE, + X86_MM1, + X86_MM2, + X86_MM3, + X86_MM4, + X86_MM5, + X86_MM6, + X86_MM7 +} OrcMMXRegister; + +#define ORC_MMX_SHUF(a,b,c,d) ((((a)&3)<<6)|(((b)&3)<<4)|(((c)&3)<<2)|(((d)&3)<<0)) + +ORC_API +const char * orc_x86_get_regname_mmx(int i); + +ORC_API +void orc_x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset, + int reg1, int reg2, int is_aligned); + +ORC_API +void orc_x86_emit_mov_memindex_mmx (OrcCompiler *compiler, int size, int offset, + int reg1, int regindex, int shift, int reg2, int is_aligned); + +ORC_API +void orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, + int reg2, int aligned, int uncached); +#if 0 +void orc_x86_emit_mov_mmx_reg_reg (OrcCompiler *compiler, int reg1, int reg2); +void orc_x86_emit_mov_reg_mmx (OrcCompiler *compiler, int reg1, int reg2); +void orc_x86_emit_mov_mmx_reg (OrcCompiler *compiler, int reg1, int reg2); +void orc_mmx_emit_loadib (OrcCompiler *p, int reg, int value); +void orc_mmx_emit_loadiw (OrcCompiler *p, int reg, int value); +void orc_mmx_emit_loadil (OrcCompiler *p, int reg, int value); +void orc_mmx_emit_loadpb (OrcCompiler *p, int reg, int value); +void orc_mmx_emit_loadpw (OrcCompiler *p, int reg, int value); +void orc_mmx_emit_loadpl (OrcCompiler *p, int reg, int value); +void orc_mmx_emit_loadpq (OrcCompiler *p, int reg, int value); + +void orc_mmx_emit_660f (OrcCompiler *p, const char *insn_name, int code, + int src, int dest); +void orc_mmx_emit_f20f (OrcCompiler *p, const char *insn_name, int code, + int src, int dest); +void orc_mmx_emit_f30f (OrcCompiler *p, const char *insn_name, int code, + int src, int dest); +void orc_mmx_emit_0f (OrcCompiler *p, const char *insn_name, int code, + int src, int dest); +void orc_mmx_emit_pshufw (OrcCompiler *p, int shuf, int src, int dest); +void orc_mmx_emit_palignr (OrcCompiler *p, int align, int src, int dest); +void orc_mmx_emit_pinsrw_memoffset (OrcCompiler *p, int imm, int offset, + int src, int dest); +void orc_mmx_emit_pextrw_memoffset (OrcCompiler *p, int imm, int src, + int offset, int dest); +void orc_mmx_emit_shiftimm (OrcCompiler *p, const char *insn_name, + int code, int modrm_code, int shift, int reg); +#endif + +ORC_API unsigned int orc_mmx_get_cpu_flags (void); + +ORC_API void orc_mmx_load_constant (OrcCompiler *compiler, int reg, int size, + orc_uint64 value); + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcneon.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcneon.h new file mode 100644 index 0000000..c88ddea --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcneon.h @@ -0,0 +1,43 @@ + +#ifndef _ORC_NEON_H_ +#define _ORC_NEON_H_ + +#include +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +ORC_API const char *orc_neon_reg_name (int reg); +ORC_API const char *orc_neon_reg_name_quad (int reg); + +ORC_API const char *orc_neon64_reg_name_vector (int reg, int size, int quad); + +ORC_API void orc_neon_loadb (OrcCompiler *compiler, OrcVariable *var, int update); +ORC_API void orc_neon_loadw (OrcCompiler *compiler, OrcVariable *var, int update); +ORC_API void orc_neon_loadl (OrcCompiler *compiler, OrcVariable *var, int update); +ORC_API void orc_neon_loadq (OrcCompiler *compiler, int dest, int src1, int update, int is_aligned); + +ORC_API void orc_neon_load_vec_aligned (OrcCompiler *compiler, OrcVariable *var, int update); +ORC_API void orc_neon_load_vec_unaligned (OrcCompiler *compiler, OrcVariable *var, int update); +ORC_API void orc_neon_load_halfvec_unaligned (OrcCompiler *compiler, OrcVariable *var, int update); + +ORC_API void orc_neon_neg (OrcCompiler *compiler, int dest); +ORC_API void orc_neon_storeb (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned); +ORC_API void orc_neon_storew (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned); +ORC_API void orc_neon_storel (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned); +ORC_API void orc_neon_storeq (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned); +ORC_API void orc_neon_emit_loadil (OrcCompiler *p, OrcVariable *dest, int value); +ORC_API void orc_neon_emit_loadpb (OrcCompiler *p, int reg, int param); +ORC_API void orc_neon_emit_loadpw (OrcCompiler *p, int reg, int param); +ORC_API void orc_neon_emit_loadpl (OrcCompiler *p, int reg, int param); +ORC_API void orc_neon_preload (OrcCompiler *compiler, OrcVariable *var, int write, + int offset); + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orconce.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orconce.h new file mode 100644 index 0000000..9fd56db --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orconce.h @@ -0,0 +1,24 @@ + +#ifndef _ORC_ONCE_H_ +#define _ORC_ONCE_H_ + +#include + +ORC_BEGIN_DECLS + +typedef struct _OrcMutex OrcMutex; + +typedef struct _OrcOnce OrcOnce; + +struct _OrcOnce { + int inited; + void *value; +}; + +ORC_API void orc_once_mutex_lock (void); +ORC_API void orc_once_mutex_unlock (void); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcopcode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcopcode.h new file mode 100644 index 0000000..711fd01 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcopcode.h @@ -0,0 +1,63 @@ + +#ifndef _ORC_OPCODE_H_ +#define _ORC_OPCODE_H_ + +#include +#include + +ORC_BEGIN_DECLS + +typedef struct _OrcOpcodeSet OrcOpcodeSet; +typedef struct _OrcStaticOpcode OrcStaticOpcode; + + +/** + * OrcOpcodeSet: + * + * The OrcOpcodeSet structure has no public members + */ +struct _OrcOpcodeSet { + /*< private >*/ + int opcode_major; + char prefix[8]; + + int n_opcodes; + OrcStaticOpcode *opcodes; +}; + +#define ORC_STATIC_OPCODE_ACCUMULATOR (1<<0) +#define ORC_STATIC_OPCODE_FLOAT_SRC (1<<1) +#define ORC_STATIC_OPCODE_FLOAT_DEST (1<<2) +#define ORC_STATIC_OPCODE_FLOAT (ORC_STATIC_OPCODE_FLOAT_SRC|ORC_STATIC_OPCODE_FLOAT_DEST) +#define ORC_STATIC_OPCODE_SCALAR (1<<3) +#define ORC_STATIC_OPCODE_LOAD (1<<4) +#define ORC_STATIC_OPCODE_STORE (1<<5) +#define ORC_STATIC_OPCODE_INVARIANT (1<<6) +#define ORC_STATIC_OPCODE_ITERATOR (1<<7) +#define ORC_STATIC_OPCODE_COPY (1<<8) + + +struct _OrcStaticOpcode { + char name[16]; + unsigned int flags; + int dest_size[ORC_STATIC_OPCODE_N_DEST]; + int src_size[ORC_STATIC_OPCODE_N_SRC]; + OrcOpcodeEmulateNFunc emulateN; +}; + +ORC_API OrcStaticOpcode * orc_opcode_find_by_name (const char *name); + +ORC_API void orc_opcode_init (void); + +ORC_API OrcOpcodeSet *orc_opcode_set_get (const char *name); + +ORC_API OrcOpcodeSet *orc_opcode_set_get_nth (int opcode_major); + +ORC_API int orc_opcode_set_find_by_name (OrcOpcodeSet *opcode_set, const char *name); + +ORC_API int orc_opcode_register_static (OrcStaticOpcode *sopcode, char *prefix); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcparse.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcparse.h new file mode 100644 index 0000000..2603d74 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcparse.h @@ -0,0 +1,16 @@ + +#ifndef __ORC_PARSE_H__ +#define __ORC_PARSE_H__ + +#include + +ORC_BEGIN_DECLS + +ORC_API int orc_parse (const char *code, OrcProgram ***programs); +ORC_API int orc_parse_full (const char *code, OrcProgram ***programs, char **log); +ORC_API const char * orc_parse_get_init_function (OrcProgram *program); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcpowerpc.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcpowerpc.h new file mode 100644 index 0000000..ba824b2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcpowerpc.h @@ -0,0 +1,209 @@ + +#ifndef _ORC_POWERPC_H_ +#define _ORC_POWERPC_H_ + +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + + +#if defined(__LITTLE_ENDIAN__) +#define IS_POWERPC_BE(compiler) \ + (ORC_UNLIKELY ((compiler->target_flags & ORC_TARGET_POWERPC_LE) == 0)) +#define IS_POWERPC_LE(compiler) \ + (ORC_LIKELY ((compiler->target_flags & ORC_TARGET_POWERPC_LE) == ORC_TARGET_POWERPC_LE)) +#else +#define IS_POWERPC_BE(compiler) \ + (ORC_LIKELY ((compiler->target_flags & ORC_TARGET_POWERPC_LE) == 0)) +#define IS_POWERPC_LE(compiler) \ + (ORC_UNLIKELY ((compiler->target_flags & ORC_TARGET_POWERPC_LE) == ORC_TARGET_POWERPC_LE)) +#endif + + +enum { + POWERPC_R0 = ORC_GP_REG_BASE, + POWERPC_R1, + POWERPC_R2, + POWERPC_R3, + POWERPC_R4, + POWERPC_R5, + POWERPC_R6, + POWERPC_R7, + POWERPC_R8, + POWERPC_R9, + POWERPC_R10, + POWERPC_R11, + POWERPC_R12, + POWERPC_R13, + POWERPC_R14, + POWERPC_R15, + POWERPC_R16, + POWERPC_R17, + POWERPC_R18, + POWERPC_R19, + POWERPC_R20, + POWERPC_R21, + POWERPC_R22, + POWERPC_R23, + POWERPC_R24, + POWERPC_R25, + POWERPC_R26, + POWERPC_R27, + POWERPC_R28, + POWERPC_R29, + POWERPC_R30, + POWERPC_R31, + POWERPC_V0 = ORC_VEC_REG_BASE, + POWERPC_V1, + POWERPC_V2, + POWERPC_V3, + POWERPC_V4, + POWERPC_V5, + POWERPC_V6, + POWERPC_V7, + POWERPC_V8, + POWERPC_V9, + POWERPC_V10, + POWERPC_V11, + POWERPC_V12, + POWERPC_V13, + POWERPC_V14, + POWERPC_V15, + POWERPC_V16, + POWERPC_V17, + POWERPC_V18, + POWERPC_V19, + POWERPC_V20, + POWERPC_V21, + POWERPC_V22, + POWERPC_V23, + POWERPC_V24, + POWERPC_V25, + POWERPC_V26, + POWERPC_V27, + POWERPC_V28, + POWERPC_V29, + POWERPC_V30, + POWERPC_V31 +}; + +extern int orc_powerpc_cpu_flags; +void powerpc_detect_cpu_flags (void); + +const char * powerpc_get_regname(int i); +int powerpc_regnum (int i); + +void powerpc_emit(OrcCompiler *compiler, unsigned int insn); + +void powerpc_emit_add (OrcCompiler *compiler, int regd, int rega, int regb); +void powerpc_emit_addi_rec (OrcCompiler *compiler, int regd, int rega, int imm); +void powerpc_emit_addi (OrcCompiler *compiler, int regd, int rega, int imm); +void powerpc_emit_lwz (OrcCompiler *compiler, int regd, int rega, int imm); +void powerpc_emit_stw (OrcCompiler *compiler, int regs, int rega, int offset); +void powerpc_emit_stwu (OrcCompiler *compiler, int regs, int rega, int offset); +void powerpc_emit_ld (OrcCompiler *compiler, int regd, int rega, int imm); +void powerpc_emit_std (OrcCompiler *compiler, int regs, int rega, int offset); +void powerpc_emit_stdu (OrcCompiler *compiler, int regs, int rega, int offset); + +void powerpc_emit_ret (OrcCompiler *compiler); +void powerpc_emit_b (OrcCompiler *compiler, int label); +void powerpc_emit_beq (OrcCompiler *compiler, int label); +void powerpc_emit_bne (OrcCompiler *compiler, int label); +void powerpc_emit_label (OrcCompiler *compiler, int label); +void powerpc_add_fixup (OrcCompiler *compiler, int type, unsigned char *ptr, int label); +void powerpc_do_fixups (OrcCompiler *compiler); +ORC_API void orc_powerpc_flush_cache (OrcCode *code); + +void powerpc_emit_srawi (OrcCompiler *compiler, int regd, int rega, int shift, int record); +void powerpc_emit_655510 (OrcCompiler *compiler, int major, int d, int a, int b, int minor); +void powerpc_emit_D (OrcCompiler *compiler, const char *name, unsigned int insn, int regd, int rega, int imm); +void powerpc_emit_X (OrcCompiler *compiler, unsigned int insn, int d, int a, int b); +void powerpc_emit_VA (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b, int c); +void powerpc_emit_VA_acb (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b, int c); +void powerpc_emit_VX (OrcCompiler *compiler, unsigned int insn, int d, int a, int b); +void powerpc_emit_VX_b (OrcCompiler *p, const char *name, unsigned int insn, int a); +void powerpc_emit_VX_db (OrcCompiler *p, const char *name, unsigned int insn, int d, int b); +void powerpc_emit_VX_dbi (OrcCompiler *p, const char *name, unsigned int insn, int d, int b, int imm); +void powerpc_emit_VXR (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b, int record); +void powerpc_emit_VX_2 (OrcCompiler *p, const char *name, unsigned int insn, int d, int a, int b); +void powerpc_emit_VX_3 (OrcCompiler *p, const char *name, unsigned int insn, int d, int a, int b, int c); +void powerpc_emit_VX_3_reg (OrcCompiler *p, const char *name, unsigned int insn, int d, int a, int b, int c); +void powerpc_emit_VX_4 (OrcCompiler *p, const char *name, unsigned int insn, int d, int a); +int powerpc_get_constant (OrcCompiler *p, int type, int value); +int powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, int value2, int value3); +void powerpc_load_long_constant (OrcCompiler *p, int reg, orc_uint32 a, orc_uint32 b, orc_uint32 c, orc_uint32 d); +void powerpc_emit_full_constants (OrcCompiler* p); +void powerpc_emit_load_address (OrcCompiler* compiler, int regd, int rega, int imm); +void powerpc_load_constant (OrcCompiler* p, int i, int reg); + +void powerpc_load_align (OrcCompiler *compiler, int vector_reg, int offset_reg, int src_reg); +void powerpc_store_align (OrcCompiler *compiler, int vector_reg, int offset_reg, int src_reg); + +/* instructions */ +#define powerpc_emit_vand(p,a,b,c) powerpc_emit_VX_2 (p, "vand", 0x10000404, a, b, c) +#define powerpc_emit_vandc(p,a,b,c) powerpc_emit_VX_2 (p, "vandc", 0x10000444, a, b, c) + +#define powerpc_emit_vor(p,a,b,c) powerpc_emit_VX_2 (p, "vor", 0x10000484, a, b, c) +#define powerpc_emit_vxor(p,a,b,c) powerpc_emit_VX_2 (p, "vxor", 0x100004c4, a, b, c) + +#define powerpc_emit_vmulesb(p,a,b,c) powerpc_emit_VX_2 (p, "vmulesb", 0x10000308, a, b, c) +#define powerpc_emit_vmuleub(p,a,b,c) powerpc_emit_VX_2 (p, "vmuleub", 0x10000208, a, b, c) +#define powerpc_emit_vmulesh(p,a,b,c) powerpc_emit_VX_2 (p, "vmulesh", 0x10000348, a, b, c) +#define powerpc_emit_vmuleuh(p,a,b,c) powerpc_emit_VX_2 (p, "vmuleuh", 0x10000248, a, b, c) +#define powerpc_emit_vmulosb(p,a,b,c) powerpc_emit_VX_2 (p, "vmulosb", 0x10000108, a, b, c) +#define powerpc_emit_vmuloub(p,a,b,c) powerpc_emit_VX_2 (p, "vmuloub", 0x10000008, a, b, c) +#define powerpc_emit_vmulosh(p,a,b,c) powerpc_emit_VX_2 (p, "vmulosh", 0x10000148, a, b, c) +#define powerpc_emit_vmulouh(p,a,b,c) powerpc_emit_VX_2 (p, "vmulouh", 0x10000048, a, b, c) + +#define powerpc_emit_vmuleuw(p,a,b,c) powerpc_emit_VX_2 (p, "vmuleuw", 0x10000288, a, b, c) +#define powerpc_emit_vmulouw(p,a,b,c) powerpc_emit_VX_2 (p, "vmulouw", 0x10000088, a, b, c) + +#define powerpc_emit_vmrghb(p,a,b,c) powerpc_emit_VX_2 (p, "vmrghb", 0x1000000c, a, b, c) +#define powerpc_emit_vmrghh(p,a,b,c) powerpc_emit_VX_2 (p, "vmrghh", 0x1000004c, a, b, c) +#define powerpc_emit_vmrghw(p,a,b,c) powerpc_emit_VX_2 (p, "vmrghw", 0x1000008c, a, b, c) +#define powerpc_emit_vmrglb(p,a,b,c) powerpc_emit_VX_2 (p, "vmrglb", 0x1000010c, a, b, c) +#define powerpc_emit_vmrglh(p,a,b,c) powerpc_emit_VX_2 (p, "vmrglh", 0x1000014c, a, b, c) +#define powerpc_emit_vmrglw(p,a,b,c) powerpc_emit_VX_2 (p, "vmrglw", 0x1000018c, a, b, c) + +#define powerpc_emit_vpkshss(p,a,b,c) powerpc_emit_VX_2 (p, "vpkshss", 0x1000018e, a, b, c) +#define powerpc_emit_vpkshus(p,a,b,c) powerpc_emit_VX_2 (p, "vpkshus", 0x1000010e, a, b, c) +#define powerpc_emit_vpkswss(p,a,b,c) powerpc_emit_VX_2 (p, "vpkswss", 0x100001ce, a, b, c) +#define powerpc_emit_vpkswus(p,a,b,c) powerpc_emit_VX_2 (p, "vpkswus", 0x1000014e, a, b, c) +#define powerpc_emit_vpkuhus(p,a,b,c) powerpc_emit_VX_2 (p, "vpkuhus", 0x1000008e, a, b, c) +#define powerpc_emit_vpkuhum(p,a,b,c) powerpc_emit_VX_2 (p, "vpkuhum", 0x1000000e, a, b, c) +#define powerpc_emit_vpkuwus(p,a,b,c) powerpc_emit_VX_2 (p, "vpkuwus", 0x100000ce, a, b, c) +#define powerpc_emit_vpkuwum(p,a,b,c) powerpc_emit_VX_2 (p, "vpkuwum", 0x1000004e, a, b, c) + +#define powerpc_emit_vadduhm(p,a,b,c) powerpc_emit_VX_2 (p, "vadduhm", 0x10000040, a, b, c) +#define powerpc_emit_vadduwm(p,a,b,c) powerpc_emit_VX_2 (p, "vadduwm", 0x10000080, a, b, c) +#define powerpc_emit_vsububm(p,a,b,c) powerpc_emit_VX_2 (p, "vsububm", 0x10000400, a, b, c) +#define powerpc_emit_vsum4ubs(p,a,b,c) powerpc_emit_VX_2 (p, "vsum4ubs", 0x10000608, a, b, c) + +#define powerpc_emit_vmaxub(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxub", 0x10000002, a, b, c) +#define powerpc_emit_vmaxsb(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsb", 0x10000102, a, b, c) +#define powerpc_emit_vmaxsh(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsh", 0x10000142, a, b, c) +#define powerpc_emit_vmaxsw(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsw", 0x10000182, a, b, c) + +#define powerpc_emit_vminub(p,a,b,c) powerpc_emit_VX_2 (p, "vminub", 0x10000202, a, b, c) +#define powerpc_emit_vminsb(p,a,b,c) powerpc_emit_VX_2 (p, "vminsb", 0x10000302, a, b, c) +#define powerpc_emit_vminsh(p,a,b,c) powerpc_emit_VX_2 (p, "vminsh", 0x10000342, a, b, c) +#define powerpc_emit_vminsw(p,a,b,c) powerpc_emit_VX_2 (p, "vminsw", 0x10000382, a, b, c) + +#define powerpc_emit_vsldoi(p,a,b,c,d) powerpc_emit_VX_3 (p, "vsldoi", 0x1000002c | (d<<6), a, b, c, d) +#define powerpc_emit_vmladduhm(p,a,b,c,d) powerpc_emit_VA (p, "vmladduhm", 0x10000022, a, b, c, d) + +#define powerpc_emit_vupkhsb(p,a,b) powerpc_emit_VX_4 (p, "vupkhsb", 0x1000020e, a, b) +#define powerpc_emit_vupkhsh(p,a,b) powerpc_emit_VX_4 (p, "vupkhsh", 0x1000024e, a, b) +#define powerpc_emit_vupklsb(p,a,b) powerpc_emit_VX_4 (p, "vupklsb", 0x1000028e, a, b) +#define powerpc_emit_vupklsh(p,a,b) powerpc_emit_VX_4 (p, "vupklsh", 0x100002ce, a, b) + +#define powerpc_emit_vperm(p,a,b,c,d) powerpc_emit_VA (p, "vperm", 0x1000002b, a, b, c, d) + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcprogram.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcprogram.h new file mode 100644 index 0000000..51123e4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcprogram.h @@ -0,0 +1,190 @@ + +#ifndef _ORC_PROGRAM_H_ +#define _ORC_PROGRAM_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +ORC_BEGIN_DECLS + + +#define ORC_PROGRAM_ERROR(program, ...) do { \ + program->error = TRUE; \ + orc_debug_print(ORC_DEBUG_WARNING, __FILE__, ORC_FUNCTION, __LINE__, __VA_ARGS__); \ +} while (0) + +/** + * OrcProgram: + * + * The OrcProgram structure has no public members + */ +struct _OrcProgram { + /*< private >*/ + struct { + OrcStaticOpcode *opcode; + int dest_args[ORC_STATIC_OPCODE_N_DEST]; + int src_args[ORC_STATIC_OPCODE_N_SRC]; + + OrcRule *rule; + } _unused[ORC_N_INSNS]; /* needed for ABI compatibility */ + int n_insns; + + struct { + char *name; + char *type_name; + + int size; + OrcVarType vartype; + + int used; + int first_use; + int last_use; + int replaced; + int replacement; + + int alloc; + int is_chained; + int is_aligned; + int is_uncached; + + int value; + + int ptr_register; + int ptr_offset; + int mask_alloc; + int aligned_data; + int param_type; + int load_dest; + } _unused3[ORC_N_VARIABLES]; /* needed for ABI compatibility */ + + int n_src_vars; + int n_dest_vars; + int n_param_vars; + int n_const_vars; + int n_temp_vars; + int n_accum_vars; + + char *name; + char *asm_code; + + unsigned char *_unused2; + /* The offset of code_exec in this structure is part of the ABI */ + void *code_exec; + + OrcInstruction insns[ORC_N_INSNS]; + OrcVariable vars[ORC_N_VARIABLES]; + + void *backup_func; + char *backup_name; + int is_2d; + int constant_n; + int n_multiple; + int n_minimum; + int n_maximum; + int constant_m; + + OrcCode *orccode; + + /* Hide this here. Belongs in a Parser object */ + char *init_function; + char *error_msg; + unsigned int current_line; +}; + +#define ORC_SRC_ARG(p,i,n) ((p)->vars[(i)->src_args[(n)]].alloc) +#define ORC_DEST_ARG(p,i,n) ((p)->vars[(i)->dest_args[(n)]].alloc) +#define ORC_SRC_TYPE(p,i,n) ((p)->vars[(i)->src_args[(n)]].vartype) +#define ORC_DEST_TYPE(p,i,n) ((p)->vars[(i)->dest_args[(n)]].vartype) +#define ORC_SRC_VAL(p,insn,n) ((p)->vars[(insn)->src_args[(n)]].value.i) +#define ORC_DEST_VAL(p,insn,n) ((p)->vars[(insn)->dest_args[(n)]].value.i) + + +ORC_API void orc_init (void); + +ORC_API OrcProgram * orc_program_new (void); +ORC_API OrcProgram * orc_program_new_ds (int size1, int size2); +ORC_API OrcProgram * orc_program_new_dss (int size1, int size2, int size3); +ORC_API OrcProgram * orc_program_new_as (int size1, int size2); +ORC_API OrcProgram * orc_program_new_ass (int size1, int size2, int size3); +ORC_API OrcProgram * orc_program_new_from_static_bytecode (const orc_uint8 *bytecode); + +ORC_API const char * orc_program_get_name (OrcProgram *program); +ORC_API void orc_program_set_name (OrcProgram *program, const char *name); +ORC_API void orc_program_set_line (OrcProgram *program, unsigned int line); +ORC_API void orc_program_set_2d (OrcProgram *program); +ORC_API void orc_program_set_constant_n (OrcProgram *program, int n); +ORC_API void orc_program_set_n_multiple (OrcProgram *ex, int n); +ORC_API void orc_program_set_n_minimum (OrcProgram *ex, int n); +ORC_API void orc_program_set_n_maximum (OrcProgram *ex, int n); +ORC_API void orc_program_set_constant_m (OrcProgram *program, int m); + +ORC_API void orc_program_append (OrcProgram *p, const char *opcode, int arg0, int arg1, int arg2); +ORC_API void orc_program_append_2 (OrcProgram *program, const char *name, + unsigned int flags, int arg0, int arg1, int arg2, int arg3); +ORC_API void orc_program_append_str (OrcProgram *p, const char *opcode, + const char * arg0, const char * arg1, const char * arg2); +ORC_API void orc_program_append_str_2 (OrcProgram *program, const char *name, + unsigned int flags, const char *arg1, const char *arg2, const char *arg3, + const char *arg4); +ORC_API void orc_program_append_ds (OrcProgram *program, const char *opcode, int arg0, + int arg1); +ORC_API void orc_program_append_ds_str (OrcProgram *p, const char *opcode, + const char * arg0, const char * arg1); +ORC_API void orc_program_append_dds_str (OrcProgram *program, const char *name, + const char *arg1, const char *arg2, const char *arg3); + +ORC_API OrcCompileResult orc_program_compile (OrcProgram *p); +ORC_API OrcCompileResult orc_program_compile_for_target (OrcProgram *p, OrcTarget *target); +ORC_API OrcCompileResult orc_program_compile_full (OrcProgram *p, OrcTarget *target, + unsigned int flags); +ORC_API void orc_program_set_backup_function (OrcProgram *p, OrcExecutorFunc func); +ORC_API void orc_program_set_backup_name (OrcProgram *p, const char *name); +ORC_API void orc_program_free (OrcProgram *program); + +ORC_API int orc_program_find_var_by_name (OrcProgram *program, const char *name); + +ORC_API int orc_program_add_temporary (OrcProgram *program, int size, const char *name); +ORC_API int orc_program_dup_temporary (OrcProgram *program, int i, int j); +ORC_API int orc_program_add_source (OrcProgram *program, int size, const char *name); +ORC_API int orc_program_add_source_full (OrcProgram *program, int size, const char *name, + const char *type_name, int alignment); +ORC_API int orc_program_add_destination (OrcProgram *program, int size, const char *name); +ORC_API int orc_program_add_destination_full (OrcProgram *program, int size, const char *name, + const char *type_name, int alignment); +ORC_API int orc_program_add_constant (OrcProgram *program, int size, int value, const char *name); +ORC_API int orc_program_add_constant_int64 (OrcProgram *program, int size, orc_int64 value, const char *name); +ORC_API int orc_program_add_constant_float (OrcProgram *program, int size, float value, const char *name); +ORC_API int orc_program_add_constant_double (OrcProgram *program, int size, double value, const char *name); +ORC_API int orc_program_add_constant_str (OrcProgram *program, int size, const char *value, const char *name); +ORC_API int orc_program_add_parameter (OrcProgram *program, int size, const char *name); +ORC_API int orc_program_add_parameter_float (OrcProgram *program, int size, const char *name); +ORC_API int orc_program_add_parameter_double (OrcProgram *program, int size, const char *name); +ORC_API int orc_program_add_parameter_int64 (OrcProgram *program, int size, const char *name); +ORC_API int orc_program_add_accumulator (OrcProgram *program, int size, const char *name); +ORC_API void orc_program_set_type_name (OrcProgram *program, int var, const char *type_name); +ORC_API void orc_program_set_var_alignment (OrcProgram *program, int var, int alignment); +ORC_API void orc_program_set_sampling_type (OrcProgram *program, int var, int sampling_type); + +ORC_API int orc_program_allocate_register (OrcProgram *program, int is_data); + +ORC_API void orc_program_reset (OrcProgram *program); +ORC_API OrcCode *orc_program_take_code (OrcProgram *program); + +ORC_API const char *orc_program_get_asm_code (OrcProgram *program); +ORC_API const char * orc_program_get_error (OrcProgram *program); +ORC_API void orc_program_set_error (OrcProgram *program, const char *error); + +ORC_API int orc_program_get_max_array_size (OrcProgram *program); +ORC_API int orc_program_get_max_accumulator_size (OrcProgram *program); + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcrule.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcrule.h new file mode 100644 index 0000000..50cca45 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcrule.h @@ -0,0 +1,52 @@ + +#ifndef _ORC_RULE_H_ +#define _ORC_RULE_H_ + +#include +#include +#include + +ORC_BEGIN_DECLS + +typedef struct _OrcRule OrcRule; +typedef struct _OrcRuleSet OrcRuleSet; + + +typedef void (*OrcRuleEmitFunc)(OrcCompiler *p, void *user, OrcInstruction *insn); + +/** + * OrcRule: + * + * The OrcRule structure has no public members + */ +struct _OrcRule { + /*< private >*/ + OrcRuleEmitFunc emit; + void *emit_user; +}; + +/** + * OrcRuleSet: + * + * The OrcRuleSet structure has no public members + */ +struct _OrcRuleSet { + /*< private >*/ + int opcode_major; + int required_target_flags; + + OrcRule *rules; + int n_rules; +}; + +ORC_API OrcRuleSet * orc_rule_set_new (OrcOpcodeSet *opcode_set, OrcTarget *target, + unsigned int required_flags); + +ORC_API void orc_rule_register (OrcRuleSet *rule_set, const char *opcode_name, + OrcRuleEmitFunc emit, void *emit_user); + + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcsse.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcsse.h new file mode 100644 index 0000000..dd3b98f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcsse.h @@ -0,0 +1,55 @@ + +#ifndef _ORC_SSE_H_ +#define _ORC_SSE_H_ + +#include +#include +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +typedef enum { + X86_XMM0 = ORC_VEC_REG_BASE + 16, + X86_XMM1, + X86_XMM2, + X86_XMM3, + X86_XMM4, + X86_XMM5, + X86_XMM6, + X86_XMM7, + X86_XMM8, + X86_XMM9, + X86_XMM10, + X86_XMM11, + X86_XMM12, + X86_XMM13, + X86_XMM14, + X86_XMM15 +}OrcSSERegister; + +#define ORC_SSE_SHUF(a,b,c,d) ((((a)&3)<<6)|(((b)&3)<<4)|(((c)&3)<<2)|(((d)&3)<<0)) + +ORC_API const char * orc_x86_get_regname_sse(int i); +ORC_API void orc_x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset, + int reg1, int reg2, int is_aligned); +ORC_API void orc_x86_emit_mov_memindex_sse (OrcCompiler *compiler, int size, int offset, + int reg1, int regindex, int shift, int reg2, int is_aligned); +ORC_API void orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, + int reg2, int aligned, int uncached); + +ORC_API void orc_sse_set_mxcsr (OrcCompiler *compiler); +ORC_API void orc_sse_restore_mxcsr (OrcCompiler *compiler); + +ORC_API void orc_sse_load_constant (OrcCompiler *compiler, int reg, int size, + orc_uint64 value); + +#endif + +ORC_API unsigned int orc_sse_get_cpu_flags (void); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orctarget.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orctarget.h new file mode 100644 index 0000000..49f6cad --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orctarget.h @@ -0,0 +1,115 @@ + +#ifndef _ORC_TARGET_H_ +#define _ORC_TARGET_H_ + +#include +#include +#include + +ORC_BEGIN_DECLS + + +enum { + ORC_TARGET_C_C99 = (1<<0), + ORC_TARGET_C_BARE = (1<<1), + ORC_TARGET_C_NOEXEC = (1<<2), + ORC_TARGET_C_OPCODE = (1<<3), + ORC_TARGET_CLEAN_COMPILE = (1<<29), + ORC_TARGET_FAST_NAN = (1<<30), + ORC_TARGET_FAST_DENORMAL = (1<<31) +}; + +typedef enum { + ORC_TARGET_POWERPC_64BIT = (1<<0), + ORC_TARGET_POWERPC_LE = (1<<1), + ORC_TARGET_POWERPC_ALTIVEC = (1<<2), + ORC_TARGET_POWERPC_VSX = (1<<3), + ORC_TARGET_POWERPC_V207 = (1<<4) +} OrcTargetPowerPCFlags; + +enum { + ORC_TARGET_NEON_CLEAN_COMPILE = (1<<0), + ORC_TARGET_NEON_NEON = (1<<1), + ORC_TARGET_NEON_EDSP = (1<<2), + ORC_TARGET_NEON_64BIT = (1<<3) +}; + +enum { + ORC_TARGET_ARM_EDSP = (1<<2), + ORC_TARGET_ARM_ARM6 = (1<<3) +}; + +typedef enum { + ORC_TARGET_MMX_MMX = (1<<0), + ORC_TARGET_MMX_MMXEXT = (1<<1), + ORC_TARGET_MMX_3DNOW = (1<<2), + ORC_TARGET_MMX_3DNOWEXT = (1<<3), + ORC_TARGET_MMX_SSSE3 = (1<<4), + ORC_TARGET_MMX_SSE4_1 = (1<<5), + ORC_TARGET_MMX_SSE4_2 = (1<<6), + ORC_TARGET_MMX_FRAME_POINTER = (1<<7), + ORC_TARGET_MMX_SHORT_JUMPS = (1<<8), + ORC_TARGET_MMX_64BIT = (1<<9) +} OrcTargetMMXFlags; + +typedef enum { + ORC_TARGET_SSE_SSE2 = (1<<0), + ORC_TARGET_SSE_SSE3 = (1<<1), + ORC_TARGET_SSE_SSSE3 = (1<<2), + ORC_TARGET_SSE_SSE4_1 = (1<<3), + ORC_TARGET_SSE_SSE4_2 = (1<<4), + ORC_TARGET_SSE_SSE4A = (1<<5), + ORC_TARGET_SSE_SSE5 = (1<<6), + ORC_TARGET_SSE_FRAME_POINTER = (1<<7), + ORC_TARGET_SSE_SHORT_JUMPS = (1<<8), + ORC_TARGET_SSE_64BIT = (1<<9) +}OrcTargetSSEFlags; + + +/** + * OrcTarget: + * + */ +struct _OrcTarget { + const char *name; + orc_bool executable; + int data_register_offset; + + unsigned int (*get_default_flags)(void); + void (*compiler_init)(OrcCompiler *compiler); + void (*compile)(OrcCompiler *compiler); + + OrcRuleSet rule_sets[ORC_N_RULE_SETS]; + int n_rule_sets; + + const char * (*get_asm_preamble)(void); + void (*load_constant)(OrcCompiler *compiler, int reg, int size, int value); + const char * (*get_flag_name)(int shift); + void (*flush_cache) (OrcCode *code); + void (*load_constant_long)(OrcCompiler *compiler, int reg, + OrcConstant *constant); + + void *_unused[5]; +}; + + +ORC_API OrcRule * orc_target_get_rule (OrcTarget *target, + OrcStaticOpcode *opcode, + unsigned int target_flags); + +ORC_API OrcTarget * orc_target_get_default (void); +ORC_API unsigned int orc_target_get_default_flags (OrcTarget *target); +ORC_API const char * orc_target_get_name (OrcTarget *target); +ORC_API const char * orc_target_get_flag_name (OrcTarget *target, int shift); + +ORC_API const char * orc_target_get_asm_preamble (const char *target); +ORC_API const char * orc_target_get_preamble (OrcTarget *target); +ORC_API const char * orc_target_c_get_typedefs (void); + +ORC_API void orc_target_register (OrcTarget *target); +ORC_API OrcTarget * orc_target_get_by_name (const char *target_name); + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcutils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcutils.h new file mode 100644 index 0000000..bed4975 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcutils.h @@ -0,0 +1,249 @@ +/* + * ORC - Library of Optimized Inner Loops + * Copyright (c) 2007 David A. Schleef + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ORC_UTILS_H_ +#define _ORC_UTILS_H_ + +/* Orc objects */ +/* typedef struct _OrcVariable OrcVariable; */ +/* typedef struct _OrcOpcodeSet OrcOpcodeSet; */ +/* typedef struct _OrcStaticOpcode OrcStaticOpcode; */ +typedef struct _OrcInstruction OrcInstruction; +typedef struct _OrcProgram OrcProgram; +typedef struct _OrcCompiler OrcCompiler; +typedef struct _OrcConstant OrcConstant; +/* typedef struct _OrcFixup OrcFixup; */ +typedef struct _OrcTarget OrcTarget; +typedef struct _OrcCode OrcCode; + +typedef enum { + ORC_COMPILE_RESULT_OK = 0, + + ORC_COMPILE_RESULT_UNKNOWN_COMPILE = 0x100, + ORC_COMPILE_RESULT_MISSING_RULE = 0x101, + + ORC_COMPILE_RESULT_UNKNOWN_PARSE = 0x200, + ORC_COMPILE_RESULT_PARSE = 0x201, + ORC_COMPILE_RESULT_VARIABLE = 0x202 + +} OrcCompileResult; + +#include + +#ifndef _ORC_INTEGER_TYPEDEFS_ +#define _ORC_INTEGER_TYPEDEFS_ +#if defined(__STDC__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +typedef int8_t orc_int8; +typedef int16_t orc_int16; +typedef int32_t orc_int32; +typedef int64_t orc_int64; +typedef uint8_t orc_uint8; +typedef uint16_t orc_uint16; +typedef uint32_t orc_uint32; +typedef uint64_t orc_uint64; +typedef intptr_t orc_intptr; +#define ORC_UINT64_C(x) UINT64_C(x) +#elif defined(_MSC_VER) +typedef signed __int8 orc_int8; +typedef signed __int16 orc_int16; +typedef signed __int32 orc_int32; +typedef signed __int64 orc_int64; +typedef unsigned __int8 orc_uint8; +typedef unsigned __int16 orc_uint16; +typedef unsigned __int32 orc_uint32; +typedef unsigned __int64 orc_uint64; +#ifdef _WIN64 +typedef unsigned __int64 orc_intptr; +#else +typedef unsigned long orc_intptr; +#endif +#define ORC_UINT64_C(x) (x##Ui64) +#else +#include +typedef signed char orc_int8; +typedef short orc_int16; +typedef int orc_int32; +typedef unsigned char orc_uint8; +typedef unsigned short orc_uint16; +typedef unsigned int orc_uint32; +#if INT_MAX == LONG_MAX +typedef long long orc_int64; +typedef unsigned long long orc_uint64; +#define ORC_UINT64_C(x) (x##ULL) +#else +typedef long orc_int64; +typedef unsigned long orc_uint64; +#define ORC_UINT64_C(x) (x##UL) +#endif +#ifdef _WIN64 +typedef unsigned __int64 orc_intptr; +#else +typedef unsigned long orc_intptr; +#endif +#endif +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +#endif + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +typedef unsigned int orc_bool; + +#define ORC_PTR_TO_INT(x) ((int)(orc_intptr)(x)) +#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) + +#if (defined(__GNUC__) && __GNUC__ >= 4) || defined (_MSC_VER) +#define ORC_STRUCT_OFFSET(struct_type, member) \ + ((int) offsetof (struct_type, member)) +#else +#define ORC_STRUCT_OFFSET(struct_type, member) \ + ((int) ((unsigned char **) &((struct_type*) 0)->member)) +#endif + +#ifdef ORC_ENABLE_UNSTABLE_API + +#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) +#ifndef MIN +#define MIN(a,b) ((a)<(b) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a,b) ((a)>(b) ? (a) : (b)) +#endif +#ifndef ORC_CLAMP +#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) +#endif + +#define ORC_READ_UINT32_LE(ptr) \ + (((orc_uint32)((orc_uint8 *)(ptr))[0]) | \ + ((orc_uint32)(((orc_uint8 *)(ptr))[1])<<8) | \ + ((orc_uint32)(((orc_uint8 *)(ptr))[2])<<16) | \ + ((orc_uint32)(((orc_uint8 *)(ptr))[3])<<24)) + +#define ORC_WRITE_UINT32_LE(ptr,val) \ + do { \ + ((orc_uint8 *)ptr)[0] = ((val)>>0)&0xff; \ + ((orc_uint8 *)ptr)[1] = ((val)>>8)&0xff; \ + ((orc_uint8 *)ptr)[2] = ((val)>>16)&0xff; \ + ((orc_uint8 *)ptr)[3] = ((val)>>24)&0xff; \ + } while(0) + +#endif + +#if defined(__GNUC__) && defined(__GNUC_MINOR__) +#define ORC_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define ORC_GNUC_PREREQ(maj, min) 0 +#endif + +#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) +#define ORC_LIKELY(expr) (__builtin_expect ((expr), 1)) +#define ORC_UNLIKELY(expr) (__builtin_expect ((expr), 0)) +#else +#define ORC_LIKELY(expr) (expr) +#define ORC_UNLIKELY(expr) (expr) +#endif + +#ifndef ORC_INTERNAL +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define ORC_INTERNAL __hidden +#elif defined (__GNUC__) && ORC_GNUC_PREREQ(3,3) && defined(__ELF__) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define ORC_INTERNAL +#endif +#endif + +#if ORC_GNUC_PREREQ(3,3) /* guess */ +#define ORC_GNU_PRINTF(a,b) __attribute__((__format__ (__printf__, a, b))) +#else +#define ORC_GNU_PRINTF(a,b) +#endif + +#if ORC_GNUC_PREREQ(2,4) +#define ORC_GNUC_UNUSED __attribute__((__unused__)) +#else +#define ORC_GNUC_UNUSED +#endif + +#ifdef __cplusplus +#define ORC_BEGIN_DECLS extern "C" { +#define ORC_END_DECLS } +#else +#define ORC_BEGIN_DECLS +#define ORC_END_DECLS +#endif + +/* FIXME: unused, remove */ +#define ORC_EXPORT + +#if defined(_MSC_VER) && !defined(ORC_STATIC_COMPILATION) +#define ORC_API_IMPORT __declspec(dllimport) extern +#else +#define ORC_API_IMPORT extern +#endif + +#ifdef BUILDING_ORC +#define ORC_API ORC_API_EXPORT /* defined in config.h */ +#else +#define ORC_API ORC_API_IMPORT +#endif + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +/* FIXME: remove, these are internal functions that were never exported */ +#if defined(__arm__) || defined(__aarch64__) || defined(__mips__) +char * get_proc_cpuinfo (void); +#endif + +char * _strndup (const char *s, int n); +char ** strsplit (const char *s, char delimiter); +char * get_tag_value (char *s, const char *tag); + +orc_int64 _strtoll (const char *nptr, char **endptr, int base); + +/* FIXME: why are these exported ? */ +ORC_API void orc_global_mutex_lock (void); +ORC_API void orc_global_mutex_unlock (void); + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcvariable.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcvariable.h new file mode 100644 index 0000000..78226df --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcvariable.h @@ -0,0 +1,81 @@ + +#ifndef _ORC_VARIABLE_H_ +#define _ORC_VARIABLE_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +ORC_BEGIN_DECLS + +#define ORC_VAR_FLAG_VOLATILE_WORKAROUND (1<<0) + +typedef struct _OrcVariable OrcVariable; + +typedef enum { + ORC_VAR_TYPE_TEMP, + ORC_VAR_TYPE_SRC, + ORC_VAR_TYPE_DEST, + ORC_VAR_TYPE_CONST, + ORC_VAR_TYPE_PARAM, + ORC_VAR_TYPE_ACCUMULATOR +} OrcVarType; + +enum { + ORC_PARAM_TYPE_INT = 0, + ORC_PARAM_TYPE_FLOAT, + ORC_PARAM_TYPE_INT64, + ORC_PARAM_TYPE_DOUBLE +}; + + +/** + * OrcVariable: + * + * The OrcVariable structure has no public members + */ +struct _OrcVariable { + /*< private >*/ + char *name; + char *type_name; + + int size; + OrcVarType vartype; + + int used; + int first_use; + int last_use; + int replaced; + int replacement; + + int alloc; + int is_chained; + int is_aligned; + int alignment; + int is_uncached; + + orc_union64 value; + + int ptr_register; + int ptr_offset; + int mask_alloc; + int aligned_data; + int param_type; + int load_dest; + int update_type; + int need_offset_reg; + unsigned int flags; + + int has_parameter; + int parameter; +}; + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcx86.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcx86.h new file mode 100644 index 0000000..7f50b67 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcx86.h @@ -0,0 +1,199 @@ + +#ifndef _ORC_X86_H_ +#define _ORC_X86_H_ + +#include +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +enum { + X86_EAX = ORC_GP_REG_BASE, + X86_ECX, + X86_EDX, + X86_EBX, + X86_ESP, + X86_EBP, + X86_ESI, + X86_EDI, + X86_R8, + X86_R9, + X86_R10, + X86_R11, + X86_R12, + X86_R13, + X86_R14, + X86_R15 +}; + +enum { + ORC_X86_UNKNOWN, + ORC_X86_P6, + ORC_X86_NETBURST, + ORC_X86_CORE, + ORC_X86_PENRYN, + ORC_X86_NEHALEM, + ORC_X86_BONNELL, + ORC_X86_WESTMERE, + ORC_X86_SANDY_BRIDGE, + ORC_X86_K5, + ORC_X86_K6, + ORC_X86_K7, + ORC_X86_K8, + ORC_X86_K10 +}; + +ORC_API const char * orc_x86_get_regname(int i); +ORC_API int orc_x86_get_regnum(int i); +ORC_API const char * orc_x86_get_regname_8(int i); +ORC_API const char * orc_x86_get_regname_16(int i); +ORC_API const char * orc_x86_get_regname_64(int i); +ORC_API const char * orc_x86_get_regname_ptr(OrcCompiler *compiler, int i); +ORC_API const char * orc_x86_get_regname_size(int i, int size); + +ORC_API void orc_x86_emit_push (OrcCompiler *compiler, int size, int reg); +ORC_API void orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg); + +#define orc_x86_emit_mov_imm_reg(p,size,value,reg) \ + orc_x86_emit_cpuinsn_imm_reg (p, ORC_X86_mov_imm32_r, size, value, reg) +#define orc_x86_emit_mov_reg_reg(p,size,src,dest) \ + orc_x86_emit_cpuinsn_size (p, ORC_X86_mov_r_rm, size, src, dest) +#define orc_x86_emit_test_reg_reg(p,size,src,dest) \ + orc_x86_emit_cpuinsn_size (p, ORC_X86_test, size, src, dest) +#define orc_x86_emit_sar_imm_reg(p,size,value,reg) do { \ + if (value == 1) { \ + orc_x86_emit_cpuinsn_imm_reg (p, ORC_X86_sar, size, value, reg); \ + } else if (value > 1) { \ + orc_x86_emit_cpuinsn_imm_reg (p, ORC_X86_sar_imm, size, value, reg); \ + } \ + } while (0) +#define orc_x86_emit_and_imm_memoffset(p,size,value,offset,reg) \ + orc_x86_emit_cpuinsn_imm_memoffset (p, (value >= -128 && value < 128) ? \ + ORC_X86_and_imm8_rm : ORC_X86_and_imm32_rm, size, value, offset, reg) +#define orc_x86_emit_and_imm_reg(p,size,value,reg) do { \ + if ((value) >= -128 && (value) < 128) { \ + orc_x86_emit_cpuinsn_imm_reg (p, ORC_X86_and_imm8_rm, size, value, reg); \ + } else { \ + if ((reg) == X86_EAX) { \ + orc_x86_emit_cpuinsn_imm_reg (p, ORC_X86_and_imm32_a, size, value, reg); \ + } else { \ + orc_x86_emit_cpuinsn_imm_reg (p, ORC_X86_and_imm32_rm, size, value, reg); \ + } \ + } \ +} while (0) +#define orc_x86_emit_add_imm_memoffset(p,size,value,offset,reg) \ + orc_x86_emit_cpuinsn_imm_memoffset (p, (value >= -128 && value < 128) ? \ + ORC_X86_add_imm8_rm : ORC_X86_add_imm32_rm, size, value, offset, reg) +#define orc_x86_emit_add_reg_memoffset(p,size,src,offset,dest) \ + orc_x86_emit_cpuinsn_reg_memoffset_s(p, ORC_X86_add_r_rm, size, src, offset, dest) +#define orc_x86_emit_add_reg_reg(p,size,src,dest) \ + orc_x86_emit_cpuinsn_size(p, ORC_X86_add_r_rm, size, src, dest) +#define orc_x86_emit_add_memoffset_reg(p,size,offset,src,dest) \ + orc_x86_emit_cpuinsn_memoffset_reg(p, ORC_X86_add_rm_r, size, offset, src, dest) +#define orc_x86_emit_sub_reg_reg(p,size,src,dest) \ + orc_x86_emit_cpuinsn_size(p, ORC_X86_sub_r_rm, size, src, dest) +#define orc_x86_emit_sub_memoffset_reg(p,size,offset,src,dest) \ + orc_x86_emit_cpuinsn_memoffset_reg(p, ORC_X86_sub_rm_r, size, offset, src, dest) +#define orc_x86_emit_imul_memoffset_reg(p,size,offset,src,dest) \ + orc_x86_emit_cpuinsn_memoffset_reg(p, ORC_X86_imul_rm_r, size, offset, src, dest) + +#define orc_x86_emit_cmp_reg_memoffset(p,size,src,offset,dest) \ + orc_x86_emit_cpuinsn_reg_memoffset_s(p, ORC_X86_cmp_r_rm, size, src, offset, dest) + +#define orc_x86_emit_jmp(p,label) \ + orc_x86_emit_cpuinsn_branch (p, ORC_X86_jmp, label) +#define orc_x86_emit_jg(p,label) \ + orc_x86_emit_cpuinsn_branch (p, ORC_X86_jg, label) +#define orc_x86_emit_jle(p,label) \ + orc_x86_emit_cpuinsn_branch (p, ORC_X86_jle, label) +#define orc_x86_emit_je(p,label) \ + orc_x86_emit_cpuinsn_branch (p, ORC_X86_jz, label) +#define orc_x86_emit_jne(p,label) \ + orc_x86_emit_cpuinsn_branch (p, ORC_X86_jnz, label) + +#define orc_x86_emit_align(p,align_shift) \ + orc_x86_emit_cpuinsn_align (p, ORC_X86_ALIGN, align_shift) +#define orc_x86_emit_label(p,label) \ + orc_x86_emit_cpuinsn_label (p, ORC_X86_LABEL, label) + +#define orc_x86_emit_emms(p) \ + orc_x86_emit_cpuinsn_none (p, ORC_X86_emms) +#define orc_x86_emit_rdtsc(p) \ + orc_x86_emit_cpuinsn_none (p, ORC_X86_rdtsc) +#define orc_x86_emit_ret(p) \ + orc_x86_emit_cpuinsn_none (p, ((p)->is_64bit) ? ORC_X86_retq : ORC_X86_ret) + +#define orc_x86_emit_test_imm_memoffset(p,size,value,offset,dest) \ + orc_x86_emit_cpuinsn_imm_memoffset (p, ORC_X86_test_imm, size, value, \ + offset, dest) + +ORC_API void orc_x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset, int reg1, int reg2); +ORC_API void orc_x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, int reg2); +ORC_API void orc_x86_emit_dec_memoffset (OrcCompiler *compiler, int size, int offset, int reg); +ORC_API void orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg, orc_bool record); +ORC_API void orc_x86_emit_add_reg_reg_shift (OrcCompiler *compiler, int size, int reg1, int reg2, int shift); +ORC_API void orc_x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value, int offset, int reg); +ORC_API void orc_x86_emit_cmp_imm_reg (OrcCompiler *compiler, int size, int value, int reg); +ORC_API void orc_x86_emit_rep_movs (OrcCompiler *compiler, int size); +ORC_API void orc_x86_emit_prologue (OrcCompiler *compiler); +ORC_API void orc_x86_emit_epilogue (OrcCompiler *compiler); + +ORC_API void orc_x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3); +ORC_API void orc_x86_emit_modrm_memoffset_old (OrcCompiler *compiler, int reg1, int offset, int reg2); +ORC_API void orc_x86_emit_modrm_memoffset (OrcCompiler *compiler, int offset, int reg1, int reg2); +ORC_API void orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2); +ORC_API void orc_x86_emit_modrm_memindex (OrcCompiler *compiler, int reg1, int offset, + int reg2, int regindex, int shift); +ORC_API void orc_x86_emit_modrm_memindex2 (OrcCompiler *compiler, int offset, + int src, int src_index, int shift, int dest); + +/* FIXME: remove from public header, these were never exported */ +void x86_add_fixup (OrcCompiler *compiler, unsigned char *ptr, int label, int type); +void x86_add_label (OrcCompiler *compiler, unsigned char *ptr, int label); +void x86_add_label2 (OrcCompiler *compiler, int index, int label); + +ORC_API void orc_x86_do_fixups (OrcCompiler *compiler); + +ORC_API int orc_x86_assemble_copy_check (OrcCompiler *compiler); +ORC_API void orc_x86_assemble_copy (OrcCompiler *compiler); + +ORC_API void orc_x86_emit_cpuinsn_size (OrcCompiler *p, int opcode, int size, + int src, int dest); +ORC_API void orc_x86_emit_cpuinsn_imm (OrcCompiler *p, int opcode, int imm, + int src, int dest); +ORC_API void orc_x86_emit_cpuinsn_load_memoffset (OrcCompiler *p, int size, int index, + int offset, int src, int dest, int imm); +ORC_API void orc_x86_emit_cpuinsn_store_memoffset (OrcCompiler *p, int size, int index, + int src, int offset, int dest, int imm); +ORC_API void orc_x86_emit_cpuinsn_load_memindex (OrcCompiler *p, int index, int size, + int imm, int offset, int src, int src_index, int shift, int dest); +ORC_API void orc_x86_emit_cpuinsn_load_register (OrcCompiler *p, int index, int imm, + int src, int dest); +ORC_API void orc_x86_emit_cpuinsn_imm_reg (OrcCompiler *p, int index, int size, int imm, + int dest); +ORC_API void orc_x86_emit_cpuinsn_imm_memoffset (OrcCompiler *p, int index, int size, + int imm, int offset, int dest); +ORC_API void orc_x86_emit_cpuinsn_reg_memoffset (OrcCompiler *p, int index, int src, + int offset, int dest); +ORC_API void orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler *p, int index, int src, + int offset, int dest); +ORC_API void orc_x86_emit_cpuinsn_reg_memoffset_s (OrcCompiler *p, int index, int size, + int src, int offset, int dest); +ORC_API void orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler *p, int index, int size, + int offset, int src, int dest); +ORC_API void orc_x86_emit_cpuinsn_memoffset (OrcCompiler *p, int index, int size, + int offset, int srcdest); +ORC_API void orc_x86_emit_cpuinsn_branch (OrcCompiler *p, int index, int label); +ORC_API void orc_x86_emit_cpuinsn_label (OrcCompiler *p, int index, int label); +ORC_API void orc_x86_emit_cpuinsn_none (OrcCompiler *p, int index); +ORC_API void orc_x86_emit_cpuinsn_align (OrcCompiler *p, int index, int align_shift); + +#endif + +ORC_END_DECLS + + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcx86insn.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcx86insn.h new file mode 100644 index 0000000..5bb7935 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/orc-0.4/orc/orcx86insn.h @@ -0,0 +1,672 @@ + +#ifndef ORC_ORC_X86_INSN_H_ +#define ORC_ORC_X86_INSN_H_ + +#include +#include + +ORC_BEGIN_DECLS + +#ifdef ORC_ENABLE_UNSTABLE_API + +typedef enum { + ORC_X86_INSN_TYPE_MMXM_MMX, /* mem/mmx, mmx */ + ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, /* $shift, mmx. opcode in src */ + ORC_X86_INSN_TYPE_SSEM_SSE, /* mem/mmx, sse */ + ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, + ORC_X86_INSN_TYPE_IMM8_MMX_REG_REV, + ORC_X86_INSN_TYPE_MMXM_MMX_REV, + ORC_X86_INSN_TYPE_SSEM_SSE_REV, + ORC_X86_INSN_TYPE_REGM_MMX, + ORC_X86_INSN_TYPE_MMX_REGM_REV, + ORC_X86_INSN_TYPE_REGM, + ORC_X86_INSN_TYPE_MEM, + ORC_X86_INSN_TYPE_IMM8_REGM, + ORC_X86_INSN_TYPE_IMM32_REGM, + ORC_X86_INSN_TYPE_REGM_REG, + ORC_X86_INSN_TYPE_REG_REGM, + ORC_X86_INSN_TYPE_LABEL, + ORC_X86_INSN_TYPE_ALIGN, + ORC_X86_INSN_TYPE_BRANCH, + ORC_X86_INSN_TYPE_NONE, + ORC_X86_INSN_TYPE_STACK, + ORC_X86_INSN_TYPE_IMM32_REGM_MOV, + ORC_X86_INSN_TYPE_REG8_REGM, + ORC_X86_INSN_TYPE_REG16_REGM, + ORC_X86_INSN_TYPE_IMM32_A, + ORC_X86_INSN_TYPE_IMM8_REGM_MMX, +} OrcX86InsnType; + +typedef enum { + ORC_X86_punpcklbw, + ORC_X86_punpcklwd, + ORC_X86_punpckldq, + ORC_X86_packsswb, + ORC_X86_pcmpgtb, + ORC_X86_pcmpgtw, + ORC_X86_pcmpgtd, + ORC_X86_packuswb, + ORC_X86_punpckhbw, + ORC_X86_punpckhwd, + ORC_X86_punpckhdq, + ORC_X86_packssdw, + ORC_X86_punpcklqdq, + ORC_X86_punpckhqdq, + ORC_X86_movdqa, + ORC_X86_psraw, + ORC_X86_psrlw, + ORC_X86_psllw, + ORC_X86_psrad, + ORC_X86_psrld, + ORC_X86_pslld, + ORC_X86_psrlq, + ORC_X86_psllq, + ORC_X86_psrldq, + ORC_X86_pslldq, + ORC_X86_psrlq_reg, + ORC_X86_pcmpeqb, + ORC_X86_pcmpeqw, + ORC_X86_pcmpeqd, + ORC_X86_paddq, + ORC_X86_pmullw, + ORC_X86_psubusb, + ORC_X86_psubusw, + ORC_X86_pminub, + ORC_X86_pand, + ORC_X86_paddusb, + ORC_X86_paddusw, + ORC_X86_pmaxub, + ORC_X86_pandn, + ORC_X86_pavgb, + ORC_X86_pavgw, + ORC_X86_pmulhuw, + ORC_X86_pmulhw, + ORC_X86_psubsb, + ORC_X86_psubsw, + ORC_X86_pminsw, + ORC_X86_por, + ORC_X86_paddsb, + ORC_X86_paddsw, + ORC_X86_pmaxsw, + ORC_X86_pxor, + ORC_X86_pmuludq, + ORC_X86_pmaddwd, + ORC_X86_psadbw, + ORC_X86_psubb, + ORC_X86_psubw, + ORC_X86_psubd, + ORC_X86_psubq, + ORC_X86_paddb, + ORC_X86_paddw, + ORC_X86_paddd, + ORC_X86_pshufb, + ORC_X86_phaddw, + ORC_X86_phaddd, + ORC_X86_phaddsw, + ORC_X86_pmaddubsw, + ORC_X86_phsubw, + ORC_X86_phsubd, + ORC_X86_phsubsw, + ORC_X86_psignb, + ORC_X86_psignw, + ORC_X86_psignd, + ORC_X86_pmulhrsw, + ORC_X86_pabsb, + ORC_X86_pabsw, + ORC_X86_pabsd, + ORC_X86_pmovsxbw, + ORC_X86_pmovsxbd, + ORC_X86_pmovsxbq, + ORC_X86_pmovsxwd, + ORC_X86_pmovsxwq, + ORC_X86_pmovsxdq, + ORC_X86_pmuldq, + ORC_X86_pcmpeqq, + ORC_X86_packusdw, + ORC_X86_pmovzxbw, + ORC_X86_pmovzxbd, + ORC_X86_pmovzxbq, + ORC_X86_pmovzxwd, + ORC_X86_pmovzxwq, + ORC_X86_pmovzxdq, + ORC_X86_pmulld, + ORC_X86_phminposuw, + ORC_X86_pminsb, + ORC_X86_pminsd, + ORC_X86_pminuw, + ORC_X86_pminud, + ORC_X86_pmaxsb, + ORC_X86_pmaxsd, + ORC_X86_pmaxuw, + ORC_X86_pmaxud, + ORC_X86_pcmpgtq, + ORC_X86_addps, + ORC_X86_subps, + ORC_X86_mulps, + ORC_X86_divps, + ORC_X86_sqrtps, + ORC_X86_addpd, + ORC_X86_subpd, + ORC_X86_mulpd, + ORC_X86_divpd, + ORC_X86_sqrtpd, + ORC_X86_cmpeqps, + ORC_X86_cmpeqpd, + ORC_X86_cmpltps, + ORC_X86_cmpltpd, + ORC_X86_cmpleps, + ORC_X86_cmplepd, + ORC_X86_cvttps2dq, + ORC_X86_cvttpd2dq, + ORC_X86_cvtdq2ps, + ORC_X86_cvtdq2pd, + ORC_X86_cvtps2pd, + ORC_X86_cvtpd2ps, + ORC_X86_minps, + ORC_X86_minpd, + ORC_X86_maxps, + ORC_X86_maxpd, + ORC_X86_psraw_imm, + ORC_X86_psrlw_imm, + ORC_X86_psllw_imm, + ORC_X86_psrad_imm, + ORC_X86_psrld_imm, + ORC_X86_pslld_imm, + ORC_X86_psrlq_imm, + ORC_X86_psllq_imm, + ORC_X86_psrldq_imm, + ORC_X86_pslldq_imm, + ORC_X86_pshufd, + ORC_X86_pshuflw, + ORC_X86_pshufhw, + ORC_X86_palignr, + ORC_X86_pinsrw, + ORC_X86_movd_load, + ORC_X86_movq_sse_load, + ORC_X86_movdqa_load, + ORC_X86_movdqu_load, + ORC_X86_movhps_load, + ORC_X86_pextrw, + ORC_X86_movd_store, + ORC_X86_movq_sse_store, + ORC_X86_movdqa_store, + ORC_X86_movdqu_store, + ORC_X86_movntdq_store, + ORC_X86_ldmxcsr, + ORC_X86_stmxcsr, + ORC_X86_add_imm8_rm, + ORC_X86_add_imm32_rm, + ORC_X86_add_rm_r, + ORC_X86_add_r_rm, + ORC_X86_or_imm8_rm, + ORC_X86_or_imm32_rm, + ORC_X86_or_rm_r, + ORC_X86_or_r_rm, + ORC_X86_adc_imm8_rm, + ORC_X86_adc_imm32_rm, + ORC_X86_adc_rm_r, + ORC_X86_adc_r_rm, + ORC_X86_sbb_imm8_rm, + ORC_X86_sbb_imm32_rm, + ORC_X86_sbb_rm_r, + ORC_X86_sbb_r_rm, + ORC_X86_and_imm8_rm, + ORC_X86_and_imm32_rm, + ORC_X86_and_rm_r, + ORC_X86_and_r_rm, + ORC_X86_sub_imm8_rm, + ORC_X86_sub_imm32_rm, + ORC_X86_sub_rm_r, + ORC_X86_sub_r_rm, + ORC_X86_xor_imm8_rm, + ORC_X86_xor_imm32_rm, + ORC_X86_xor_rm_r, + ORC_X86_xor_r_rm, + ORC_X86_cmp_imm8_rm, + ORC_X86_cmp_imm32_rm, + ORC_X86_cmp_rm_r, + ORC_X86_cmp_r_rm, + ORC_X86_jo, + ORC_X86_jno, + ORC_X86_jc, + ORC_X86_jnc, + ORC_X86_jz, + ORC_X86_jnz, + ORC_X86_jbe, + ORC_X86_ja, + ORC_X86_js, + ORC_X86_jns, + ORC_X86_jp, + ORC_X86_jnp, + ORC_X86_jl, + ORC_X86_jge, + ORC_X86_jle, + ORC_X86_jg, + ORC_X86_jmp, + ORC_X86_LABEL, + ORC_X86_ret, + ORC_X86_retq, + ORC_X86_emms, + ORC_X86_rdtsc, + ORC_X86_nop, + ORC_X86_rep_movsb, + ORC_X86_rep_movsw, + ORC_X86_rep_movsl, + ORC_X86_push, + ORC_X86_pop, + ORC_X86_movzx_rm_r, + ORC_X86_movw_rm_r, + ORC_X86_movl_rm_r, + ORC_X86_mov_rm_r, + ORC_X86_mov_imm32_r, + ORC_X86_movb_r_rm, + ORC_X86_movw_r_rm, + ORC_X86_movl_r_rm, + ORC_X86_mov_r_rm, + ORC_X86_test, + ORC_X86_test_imm, + ORC_X86_leal, + ORC_X86_leaq, + ORC_X86_imul_rm_r, + ORC_X86_imul_rm, + ORC_X86_inc, + ORC_X86_dec, + ORC_X86_sar_imm, + ORC_X86_sar, + ORC_X86_and_imm32_a, + ORC_X86_ALIGN, + ORC_X86_pshufw, + ORC_X86_movq_mmx_load, + ORC_X86_movq_mmx_store, + ORC_X86_endbr32, + ORC_X86_endbr64, +} OrcX86Opcode; + +enum { + ORC_X86_RM_REG, + ORC_X86_RM_MEMOFFSET, + ORC_X86_RM_MEMINDEX +}; + +typedef struct _OrcX86Insn OrcX86Insn; +struct _OrcX86Insn { + OrcX86Opcode opcode_index; + const OrcSysOpcode *opcode; + int imm; + int src; + int dest; + int size; + int label; + int type; + int offset; + int index_reg; + int shift; + int code_offset; +}; + +ORC_API OrcX86Insn * orc_x86_get_output_insn (OrcCompiler *p); +ORC_API void orc_x86_output_insns (OrcCompiler *p); +ORC_API void orc_x86_calculate_offsets (OrcCompiler *p); + + + +#define orc_sse_emit_punpcklbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpcklbw, 16, a, b) +#define orc_sse_emit_punpcklwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpcklwd, 16, a, b) +#define orc_sse_emit_punpckldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckldq, 16, a, b) +#define orc_sse_emit_packsswb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packsswb, 16, a, b) +#define orc_sse_emit_pcmpgtb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtb, 16, a, b) +#define orc_sse_emit_pcmpgtw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtw, 16, a, b) +#define orc_sse_emit_pcmpgtd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtd, 16, a, b) +#define orc_sse_emit_packuswb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packuswb, 16, a, b) +#define orc_sse_emit_punpckhbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhbw, 16, a, b) +#define orc_sse_emit_punpckhwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhwd, 16, a, b) +#define orc_sse_emit_punpckhdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhdq, 16, a, b) +#define orc_sse_emit_packssdw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packssdw, 16, a, b) +#define orc_sse_emit_punpcklqdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpcklqdq, 16, a, b) +#define orc_sse_emit_punpckhqdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhqdq, 16, a, b) +#define orc_sse_emit_movdqa(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movdqa, 16, a, b) +#define orc_sse_emit_psraw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psraw, 16, a, b) +#define orc_sse_emit_psrlw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrlw, 16, a, b) +#define orc_sse_emit_psllw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psllw, 16, a, b) +#define orc_sse_emit_psrad(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrad, 16, a, b) +#define orc_sse_emit_psrld(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrld, 16, a, b) +#define orc_sse_emit_pslld(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pslld, 16, a, b) +#define orc_sse_emit_psrlq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrlq, 16, a, b) +#define orc_sse_emit_psllq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psllq, 16, a, b) +#define orc_sse_emit_psrldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrldq, 16, a, b) +#define orc_sse_emit_pslldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pslldq, 16, a, b) +#define orc_sse_emit_psrlq_reg(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrlq_reg, 16, a, b) +#define orc_sse_emit_pcmpeqb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqb, 16, a, b) +#define orc_sse_emit_pcmpeqw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqw, 16, a, b) +#define orc_sse_emit_pcmpeqd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqd, 16, a, b) +#define orc_sse_emit_paddq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddq, 16, a, b) +#define orc_sse_emit_pmullw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmullw, 16, a, b) +#define orc_sse_emit_psubusb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubusb, 16, a, b) +#define orc_sse_emit_psubusw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubusw, 16, a, b) +#define orc_sse_emit_pminub(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminub, 16, a, b) +#define orc_sse_emit_pand(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pand, 16, a, b) +#define orc_sse_emit_paddusb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddusb, 16, a, b) +#define orc_sse_emit_paddusw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddusw, 16, a, b) +#define orc_sse_emit_pmaxub(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxub, 16, a, b) +#define orc_sse_emit_pandn(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pandn, 16, a, b) +#define orc_sse_emit_pavgb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pavgb, 16, a, b) +#define orc_sse_emit_pavgw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pavgw, 16, a, b) +#define orc_sse_emit_pmulhuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulhuw, 16, a, b) +#define orc_sse_emit_pmulhw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulhw, 16, a, b) +#define orc_sse_emit_psubsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubsb, 16, a, b) +#define orc_sse_emit_psubsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubsw, 16, a, b) +#define orc_sse_emit_pminsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminsw, 16, a, b) +#define orc_sse_emit_por(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_por, 16, a, b) +#define orc_sse_emit_paddsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddsb, 16, a, b) +#define orc_sse_emit_paddsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddsw, 16, a, b) +#define orc_sse_emit_pmaxsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxsw, 16, a, b) +#define orc_sse_emit_pxor(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pxor, 16, a, b) +#define orc_sse_emit_pmuludq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmuludq, 16, a, b) +#define orc_sse_emit_pmaddwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaddwd, 16, a, b) +#define orc_sse_emit_psadbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psadbw, 16, a, b) +#define orc_sse_emit_psubb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubb, 16, a, b) +#define orc_sse_emit_psubw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubw, 16, a, b) +#define orc_sse_emit_psubd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubd, 16, a, b) +#define orc_sse_emit_psubq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubq, 16, a, b) +#define orc_sse_emit_paddb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddb, 16, a, b) +#define orc_sse_emit_paddw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddw, 16, a, b) +#define orc_sse_emit_paddd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddd, 16, a, b) +#define orc_sse_emit_pshufb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pshufb, 16, a, b) +#define orc_sse_emit_phaddw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phaddw, 16, a, b) +#define orc_sse_emit_phaddd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phaddd, 16, a, b) +#define orc_sse_emit_phaddsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phaddsw, 16, a, b) +#define orc_sse_emit_pmaddubsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaddubsw, 16, a, b) +#define orc_sse_emit_phsubw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phsubw, 16, a, b) +#define orc_sse_emit_phsubd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phsubd, 16, a, b) +#define orc_sse_emit_phsubsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phsubsw, 16, a, b) +#define orc_sse_emit_psignb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psignb, 16, a, b) +#define orc_sse_emit_psignw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psignw, 16, a, b) +#define orc_sse_emit_psignd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psignd, 16, a, b) +#define orc_sse_emit_pmulhrsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulhrsw, 16, a, b) +#define orc_sse_emit_pabsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pabsb, 16, a, b) +#define orc_sse_emit_pabsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pabsw, 16, a, b) +#define orc_sse_emit_pabsd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pabsd, 16, a, b) +#define orc_sse_emit_pmovsxbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxbw, 16, a, b) +#define orc_sse_emit_pmovsxbd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxbd, 16, a, b) +#define orc_sse_emit_pmovsxbq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxbq, 16, a, b) +#define orc_sse_emit_pmovsxwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxwd, 16, a, b) +#define orc_sse_emit_pmovsxwq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxwq, 16, a, b) +#define orc_sse_emit_pmovsxdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxdq, 16, a, b) +#define orc_sse_emit_pmuldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmuldq, 16, a, b) +#define orc_sse_emit_pcmpeqq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqq, 16, a, b) +#define orc_sse_emit_packusdw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packusdw, 16, a, b) +#define orc_sse_emit_pmovzxbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxbw, 16, a, b) +#define orc_sse_emit_pmovzxbd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxbd, 16, a, b) +#define orc_sse_emit_pmovzxbq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxbq, 16, a, b) +#define orc_sse_emit_pmovzxwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxwd, 16, a, b) +#define orc_sse_emit_pmovzxwq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxwq, 16, a, b) +#define orc_sse_emit_pmovzxdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxdq, 16, a, b) +#define orc_sse_emit_pmulld(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulld, 16, a, b) +#define orc_sse_emit_phminposuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phminposuw, 16, a, b) +#define orc_sse_emit_pminsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminsb, 16, a, b) +#define orc_sse_emit_pminsd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminsd, 16, a, b) +#define orc_sse_emit_pminuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminuw, 16, a, b) +#define orc_sse_emit_pminud(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminud, 16, a, b) +#define orc_sse_emit_pmaxsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxsb, 16, a, b) +#define orc_sse_emit_pmaxsd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxsd, 16, a, b) +#define orc_sse_emit_pmaxuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxuw, 16, a, b) +#define orc_sse_emit_pmaxud(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxud, 16, a, b) +#define orc_sse_emit_pcmpgtq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtq, 16, a, b) +#define orc_sse_emit_addps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_addps, 16, a, b) +#define orc_sse_emit_subps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_subps, 16, a, b) +#define orc_sse_emit_mulps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_mulps, 16, a, b) +#define orc_sse_emit_divps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_divps, 16, a, b) +#define orc_sse_emit_sqrtps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_sqrtps, 16, a, b) +#define orc_sse_emit_addpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_addpd, 16, a, b) +#define orc_sse_emit_subpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_subpd, 16, a, b) +#define orc_sse_emit_mulpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_mulpd, 16, a, b) +#define orc_sse_emit_divpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_divpd, 16, a, b) +#define orc_sse_emit_sqrtpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_sqrtpd, 16, a, b) +#define orc_sse_emit_cmpeqps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpeqps, 16, a, b) +#define orc_sse_emit_cmpeqpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpeqpd, 16, a, b) +#define orc_sse_emit_cmpltps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpltps, 16, a, b) +#define orc_sse_emit_cmpltpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpltpd, 16, a, b) +#define orc_sse_emit_cmpleps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpleps, 16, a, b) +#define orc_sse_emit_cmplepd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmplepd, 16, a, b) +#define orc_sse_emit_cvttps2dq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvttps2dq, 16, a, b) +#define orc_sse_emit_cvttpd2dq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvttpd2dq, 16, a, b) +#define orc_sse_emit_cvtdq2ps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtdq2ps, 16, a, b) +#define orc_sse_emit_cvtdq2pd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtdq2pd, 16, a, b) +#define orc_sse_emit_cvtps2pd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtps2pd, 16, a, b) +#define orc_sse_emit_cvtpd2ps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtpd2ps, 16, a, b) +#define orc_sse_emit_minps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_minps, 16, a, b) +#define orc_sse_emit_minpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_minpd, 16, a, b) +#define orc_sse_emit_maxps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_maxps, 16, a, b) +#define orc_sse_emit_maxpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_maxpd, 16, a, b) +#define orc_sse_emit_psraw_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psraw_imm, imm, 0, b) +#define orc_sse_emit_psrlw_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrlw_imm, imm, 0, b) +#define orc_sse_emit_psllw_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psllw_imm, imm, 0, b) +#define orc_sse_emit_psrad_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrad_imm, imm, 0, b) +#define orc_sse_emit_psrld_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrld_imm, imm, 0, b) +#define orc_sse_emit_pslld_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pslld_imm, imm, 0, b) +#define orc_sse_emit_psrlq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrlq_imm, imm, 0, b) +#define orc_sse_emit_psllq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psllq_imm, imm, 0, b) +#define orc_sse_emit_psrldq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrldq_imm, imm, 0, b) +#define orc_sse_emit_pslldq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pslldq_imm, imm, 0, b) +#define orc_sse_emit_pshufd(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshufd, imm, a, b) +#define orc_sse_emit_pshuflw(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshuflw, imm, a, b) +#define orc_sse_emit_pshufhw(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshufhw, imm, a, b) +#define orc_sse_emit_palignr(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psalignr, imm, a, b) +#define orc_sse_emit_movdqu(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movdqu_load, 16, a, b) + +#define orc_sse_emit_pinsrw_memoffset(p,imm,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_pinsrw, 4, imm, offset, a, b) +#define orc_sse_emit_movd_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movd_load, 4, 0, offset, a, b) +#define orc_sse_emit_movq_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movq_sse_load, 4, 0, offset, a, b) +#define orc_sse_emit_movdqa_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movdqa_load, 4, 0, offset, a, b) +#define orc_sse_emit_movdqu_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movdqu_load, 4, 0, offset, a, b) +#define orc_sse_emit_movhps_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movhps_load, 4, 0, offset, a, b) + +#define orc_sse_emit_pextrw_memoffset(p,imm,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_pextrw, 16, imm, a, offset, b) +#define orc_sse_emit_movd_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 16, 0, a, offset, b) +#define orc_sse_emit_movq_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movq_sse_store, 16, 0, a, offset, b) +#define orc_sse_emit_movdqa_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movdqa_store, 16, 0, a, offset, b) +#define orc_sse_emit_movdqu_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movdqu_store, 16, 0, a, offset, b) +#define orc_sse_emit_movntdq_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movntdq_store, 16, 0, a, offset, b) + +#define orc_sse_emit_pinsrw_memindex(p,imm,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_pinsrw, 4, imm, offset, a, a_index, shift, b) +#define orc_sse_emit_movd_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movd_load, 4, 0, offset, a, a_index, shift, b) +#define orc_sse_emit_movq_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movq_sse_load, 4, 0, offset, a, a_index, shift, b) +#define orc_sse_emit_movdqa_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movdqa_load, 4, 0, offset, a, a_index, shift, b) +#define orc_sse_emit_movdqu_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movdqu_load, 4, 0, offset, a, a_index, shift, b) +#define orc_sse_emit_movhps_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movhps_load, 4, 0, offset, a, a_index, shift, b) + +#define orc_sse_emit_pextrw_memindex(p,imm,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_pextrw, imm, a, offset, b, b_index, shift) +#define orc_sse_emit_movd_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movd_store, 0, a, offset, b, b_index, shift) +#define orc_sse_emit_movq_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movq_sse_store, 0, a, offset, b, b_index, shift) +#define orc_sse_emit_movdqa_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movdqa_store, 0, a, offset, b, b_index, shift) +#define orc_sse_emit_movdqu_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movdqu_store, 0, a, offset, b, b_index, shift) +#define orc_sse_emit_movntdq_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movntdq_store, 0, a, offset, b, b_index, shift) + +#define orc_sse_emit_pinsrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pinsrw, imm, a, b) +#define orc_sse_emit_movd_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_load, 4, a, b) +#define orc_sse_emit_movq_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_sse_load, 4, a, b) + +#define orc_sse_emit_pextrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pextrw, imm, a, b) +#define orc_sse_emit_movd_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_store, 4, a, b) +#define orc_sse_emit_movq_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_sse_store, 4, a, b) + + + + +#define orc_mmx_emit_punpcklbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpcklbw, 8, a, b) +#define orc_mmx_emit_punpcklwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpcklwd, 8, a, b) +#define orc_mmx_emit_punpckldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckldq, 8, a, b) +#define orc_mmx_emit_packsswb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packsswb, 8, a, b) +#define orc_mmx_emit_pcmpgtb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtb, 8, a, b) +#define orc_mmx_emit_pcmpgtw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtw, 8, a, b) +#define orc_mmx_emit_pcmpgtd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtd, 8, a, b) +#define orc_mmx_emit_packuswb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packuswb, 8, a, b) +#define orc_mmx_emit_punpckhbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhbw, 8, a, b) +#define orc_mmx_emit_punpckhwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhwd, 8, a, b) +#define orc_mmx_emit_punpckhdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhdq, 8, a, b) +#define orc_mmx_emit_packssdw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packssdw, 8, a, b) +#define orc_mmx_emit_punpcklqdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpcklqdq, 8, a, b) +#define orc_mmx_emit_punpckhqdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_punpckhqdq, 8, a, b) +#define orc_mmx_emit_psraw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psraw, 8, a, b) +#define orc_mmx_emit_psrlw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrlw, 8, a, b) +#define orc_mmx_emit_psllw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psllw, 8, a, b) +#define orc_mmx_emit_psrad(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrad, 8, a, b) +#define orc_mmx_emit_psrld(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrld, 8, a, b) +#define orc_mmx_emit_pslld(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pslld, 8, a, b) +#define orc_mmx_emit_psrlq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrlq, 8, a, b) +#define orc_mmx_emit_psllq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psllq, 8, a, b) +#define orc_mmx_emit_psrldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrldq, 8, a, b) +#define orc_mmx_emit_pslldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pslldq, 8, a, b) +#define orc_mmx_emit_psrlq_reg(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psrlq_reg, 8, a, b) +#define orc_mmx_emit_pcmpeqb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqb, 8, a, b) +#define orc_mmx_emit_pcmpeqw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqw, 8, a, b) +#define orc_mmx_emit_pcmpeqd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqd, 8, a, b) +#define orc_mmx_emit_paddq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddq, 8, a, b) +#define orc_mmx_emit_pmullw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmullw, 8, a, b) +#define orc_mmx_emit_psubusb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubusb, 8, a, b) +#define orc_mmx_emit_psubusw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubusw, 8, a, b) +#define orc_mmx_emit_pminub(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminub, 8, a, b) +#define orc_mmx_emit_pand(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pand, 8, a, b) +#define orc_mmx_emit_paddusb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddusb, 8, a, b) +#define orc_mmx_emit_paddusw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddusw, 8, a, b) +#define orc_mmx_emit_pmaxub(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxub, 8, a, b) +#define orc_mmx_emit_pandn(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pandn, 8, a, b) +#define orc_mmx_emit_pavgb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pavgb, 8, a, b) +#define orc_mmx_emit_pavgw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pavgw, 8, a, b) +#define orc_mmx_emit_pmulhuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulhuw, 8, a, b) +#define orc_mmx_emit_pmulhw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulhw, 8, a, b) +#define orc_mmx_emit_psubsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubsb, 8, a, b) +#define orc_mmx_emit_psubsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubsw, 8, a, b) +#define orc_mmx_emit_pminsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminsw, 8, a, b) +#define orc_mmx_emit_por(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_por, 8, a, b) +#define orc_mmx_emit_paddsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddsb, 8, a, b) +#define orc_mmx_emit_paddsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddsw, 8, a, b) +#define orc_mmx_emit_pmaxsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxsw, 8, a, b) +#define orc_mmx_emit_pxor(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pxor, 8, a, b) +#define orc_mmx_emit_pmuludq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmuludq, 8, a, b) +#define orc_mmx_emit_pmaddwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaddwd, 8, a, b) +#define orc_mmx_emit_psadbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psadbw, 8, a, b) +#define orc_mmx_emit_psubb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubb, 8, a, b) +#define orc_mmx_emit_psubw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubw, 8, a, b) +#define orc_mmx_emit_psubd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubd, 8, a, b) +#define orc_mmx_emit_psubq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psubq, 8, a, b) +#define orc_mmx_emit_paddb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddb, 8, a, b) +#define orc_mmx_emit_paddw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddw, 8, a, b) +#define orc_mmx_emit_paddd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_paddd, 8, a, b) +#define orc_mmx_emit_pshufb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pshufb, 8, a, b) +#define orc_mmx_emit_phaddw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phaddw, 8, a, b) +#define orc_mmx_emit_phaddd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phaddd, 8, a, b) +#define orc_mmx_emit_phaddsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phaddsw, 8, a, b) +#define orc_mmx_emit_pmaddubsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaddubsw, 8, a, b) +#define orc_mmx_emit_phsubw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phsubw, 8, a, b) +#define orc_mmx_emit_phsubd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phsubd, 8, a, b) +#define orc_mmx_emit_phsubsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phsubsw, 8, a, b) +#define orc_mmx_emit_psignb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psignb, 8, a, b) +#define orc_mmx_emit_psignw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psignw, 8, a, b) +#define orc_mmx_emit_psignd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_psignd, 8, a, b) +#define orc_mmx_emit_pmulhrsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulhrsw, 8, a, b) +#define orc_mmx_emit_pabsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pabsb, 8, a, b) +#define orc_mmx_emit_pabsw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pabsw, 8, a, b) +#define orc_mmx_emit_pabsd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pabsd, 8, a, b) +#define orc_mmx_emit_pmovsxbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxbw, 8, a, b) +#define orc_mmx_emit_pmovsxbd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxbd, 8, a, b) +#define orc_mmx_emit_pmovsxbq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxbq, 8, a, b) +#define orc_mmx_emit_pmovsxwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxwd, 8, a, b) +#define orc_mmx_emit_pmovsxwq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxwq, 8, a, b) +#define orc_mmx_emit_pmovsxdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovsxdq, 8, a, b) +#define orc_mmx_emit_pmuldq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmuldq, 8, a, b) +#define orc_mmx_emit_pcmpeqq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpeqq, 8, a, b) +#define orc_mmx_emit_packusdw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_packusdw, 8, a, b) +#define orc_mmx_emit_pmovzxbw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxbw, 8, a, b) +#define orc_mmx_emit_pmovzxbd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxbd, 8, a, b) +#define orc_mmx_emit_pmovzxbq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxbq, 8, a, b) +#define orc_mmx_emit_pmovzxwd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxwd, 8, a, b) +#define orc_mmx_emit_pmovzxwq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxwq, 8, a, b) +#define orc_mmx_emit_pmovzxdq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmovzxdq, 8, a, b) +#define orc_mmx_emit_pmulld(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmulld, 8, a, b) +#define orc_mmx_emit_phminposuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_phminposuw, 8, a, b) +#define orc_mmx_emit_pminsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminsb, 8, a, b) +#define orc_mmx_emit_pminsd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminsd, 8, a, b) +#define orc_mmx_emit_pminuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminuw, 8, a, b) +#define orc_mmx_emit_pminud(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pminud, 8, a, b) +#define orc_mmx_emit_pmaxsb(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxsb, 8, a, b) +#define orc_mmx_emit_pmaxsd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxsd, 8, a, b) +#define orc_mmx_emit_pmaxuw(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxuw, 8, a, b) +#define orc_mmx_emit_pmaxud(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pmaxud, 8, a, b) +#define orc_mmx_emit_pcmpgtq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_pcmpgtq, 8, a, b) +#define orc_mmx_emit_addps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_addps, 8, a, b) +#define orc_mmx_emit_subps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_subps, 8, a, b) +#define orc_mmx_emit_mulps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_mulps, 8, a, b) +#define orc_mmx_emit_divps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_divps, 8, a, b) +#define orc_mmx_emit_sqrtps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_sqrtps, 8, a, b) +#define orc_mmx_emit_addpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_addpd, 8, a, b) +#define orc_mmx_emit_subpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_subpd, 8, a, b) +#define orc_mmx_emit_mulpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_mulpd, 8, a, b) +#define orc_mmx_emit_divpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_divpd, 8, a, b) +#define orc_mmx_emit_sqrtpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_sqrtpd, 8, a, b) +#define orc_mmx_emit_cmpeqps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpeqps, 8, a, b) +#define orc_mmx_emit_cmpeqpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpeqpd, 8, a, b) +#define orc_mmx_emit_cmpltps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpltps, 8, a, b) +#define orc_mmx_emit_cmpltpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpltpd, 8, a, b) +#define orc_mmx_emit_cmpleps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmpleps, 8, a, b) +#define orc_mmx_emit_cmplepd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cmplepd, 8, a, b) +#define orc_mmx_emit_cvttps2dq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvttps2dq, 8, a, b) +#define orc_mmx_emit_cvttpd2dq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvttpd2dq, 8, a, b) +#define orc_mmx_emit_cvtdq2ps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtdq2ps, 8, a, b) +#define orc_mmx_emit_cvtdq2pd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtdq2pd, 8, a, b) +#define orc_mmx_emit_cvtps2pd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtps2pd, 8, a, b) +#define orc_mmx_emit_cvtpd2ps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_cvtpd2ps, 8, a, b) +#define orc_mmx_emit_minps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_minps, 8, a, b) +#define orc_mmx_emit_minpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_minpd, 8, a, b) +#define orc_mmx_emit_maxps(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_maxps, 8, a, b) +#define orc_mmx_emit_maxpd(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_maxpd, 8, a, b) +#define orc_mmx_emit_psraw_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psraw_imm, imm, 0, b) +#define orc_mmx_emit_psrlw_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrlw_imm, imm, 0, b) +#define orc_mmx_emit_psllw_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psllw_imm, imm, 0, b) +#define orc_mmx_emit_psrad_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrad_imm, imm, 0, b) +#define orc_mmx_emit_psrld_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrld_imm, imm, 0, b) +#define orc_mmx_emit_pslld_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pslld_imm, imm, 0, b) +#define orc_mmx_emit_psrlq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrlq_imm, imm, 0, b) +#define orc_mmx_emit_psllq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psllq_imm, imm, 0, b) +#define orc_mmx_emit_psrldq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psrldq_imm, imm, 0, b) +#define orc_mmx_emit_pslldq_imm(p,imm,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pslldq_imm, imm, 0, b) +#define orc_mmx_emit_pshufd(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshufd, imm, a, b) +#define orc_mmx_emit_pshuflw(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshuflw, imm, a, b) +#define orc_mmx_emit_pshufhw(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshufhw, imm, a, b) +#define orc_mmx_emit_palignr(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_psalignr, imm, a, b) + +#define orc_mmx_emit_pinsrw_memoffset(p,imm,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_pinsrw, 4, imm, offset, a, b) +#define orc_mmx_emit_movd_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movd_load, 4, 0, offset, a, b) +#define orc_mmx_emit_movq_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movq_mmx_load, 4, 0, offset, a, b) + +#define orc_mmx_emit_pextrw_memoffset(p,imm,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_pextrw, 8, imm, a, offset, b) +#define orc_mmx_emit_movd_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 8, 0, a, offset, b) +#define orc_mmx_emit_movq_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movq_mmx_store, 8, 0, a, offset, b) + +#define orc_mmx_emit_pinsrw_memindex(p,imm,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_pinsrw, 4, imm, offset, a, a_index, shift, b) +#define orc_mmx_emit_movd_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movd_load, 4, 0, offset, a, a_index, shift, b) +#define orc_mmx_emit_movq_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movq_mmx_load, 4, 0, offset, a, a_index, shift, b) + +#define orc_mmx_emit_pextrw_memindex(p,imm,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_pextrw, imm, a, offset, b, b_index, shift) +#define orc_mmx_emit_movd_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movd_store, 0, a, offset, b, b_index, shift) +#define orc_mmx_emit_movq_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movq_mmx_store, 0, a, offset, b, b_index, shift) + +#define orc_mmx_emit_pinsrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pinsrw, imm, a, b) +#define orc_mmx_emit_movd_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_load, 4, a, b) +#define orc_mmx_emit_movq_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_mmx_load, 4, a, b) + +#define orc_mmx_emit_pextrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pextrw, imm, a, b) +#define orc_mmx_emit_movd_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_store, 4, a, b) +#define orc_mmx_emit_movq_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_mmx_store, 4, a, b) + + +#define orc_mmx_emit_pshufw(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshufw, imm, a, b) +#define orc_mmx_emit_movq(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_mmx_load, 8, a, b) + + +#endif + +ORC_END_DECLS + +#endif + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-attributes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-attributes.h new file mode 100644 index 0000000..69ff9e5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-attributes.h @@ -0,0 +1,748 @@ +/* Pango + * pango-attributes.h: Attributed text + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_ATTRIBUTES_H__ +#define __PANGO_ATTRIBUTES_H__ + +#include +#include +#include + +G_BEGIN_DECLS + + +typedef struct _PangoAttribute PangoAttribute; +typedef struct _PangoAttrClass PangoAttrClass; + +typedef struct _PangoAttrString PangoAttrString; +typedef struct _PangoAttrLanguage PangoAttrLanguage; +typedef struct _PangoAttrInt PangoAttrInt; +typedef struct _PangoAttrSize PangoAttrSize; +typedef struct _PangoAttrFloat PangoAttrFloat; +typedef struct _PangoAttrColor PangoAttrColor; +typedef struct _PangoAttrFontDesc PangoAttrFontDesc; +typedef struct _PangoAttrShape PangoAttrShape; +typedef struct _PangoAttrFontFeatures PangoAttrFontFeatures; + +/** + * PangoAttrType: + * @PANGO_ATTR_INVALID: does not happen + * @PANGO_ATTR_LANGUAGE: language ([struct@Pango.AttrLanguage]) + * @PANGO_ATTR_FAMILY: font family name list ([struct@Pango.AttrString]) + * @PANGO_ATTR_STYLE: font slant style ([struct@Pango.AttrInt]) + * @PANGO_ATTR_WEIGHT: font weight ([struct@Pango.AttrInt]) + * @PANGO_ATTR_VARIANT: font variant (normal or small caps) ([struct@Pango.AttrInt]) + * @PANGO_ATTR_STRETCH: font stretch ([struct@Pango.AttrInt]) + * @PANGO_ATTR_SIZE: font size in points scaled by %PANGO_SCALE ([struct@Pango.AttrInt]) + * @PANGO_ATTR_FONT_DESC: font description ([struct@Pango.AttrFontDesc]) + * @PANGO_ATTR_FOREGROUND: foreground color ([struct@Pango.AttrColor]) + * @PANGO_ATTR_BACKGROUND: background color ([struct@Pango.AttrColor]) + * @PANGO_ATTR_UNDERLINE: whether the text has an underline ([struct@Pango.AttrInt]) + * @PANGO_ATTR_STRIKETHROUGH: whether the text is struck-through ([struct@Pango.AttrInt]) + * @PANGO_ATTR_RISE: baseline displacement ([struct@Pango.AttrInt]) + * @PANGO_ATTR_SHAPE: shape ([struct@Pango.AttrShape]) + * @PANGO_ATTR_SCALE: font size scale factor ([struct@Pango.AttrFloat]) + * @PANGO_ATTR_FALLBACK: whether fallback is enabled ([struct@Pango.AttrInt]) + * @PANGO_ATTR_LETTER_SPACING: letter spacing ([struct@PangoAttrInt]) + * @PANGO_ATTR_UNDERLINE_COLOR: underline color ([struct@Pango.AttrColor]) + * @PANGO_ATTR_STRIKETHROUGH_COLOR: strikethrough color ([struct@Pango.AttrColor]) + * @PANGO_ATTR_ABSOLUTE_SIZE: font size in pixels scaled by %PANGO_SCALE ([struct@Pango.AttrInt]) + * @PANGO_ATTR_GRAVITY: base text gravity ([struct@Pango.AttrInt]) + * @PANGO_ATTR_GRAVITY_HINT: gravity hint ([struct@Pango.AttrInt]) + * @PANGO_ATTR_FONT_FEATURES: OpenType font features ([struct@Pango.AttrFontFeatures]). Since 1.38 + * @PANGO_ATTR_FOREGROUND_ALPHA: foreground alpha ([struct@Pango.AttrInt]). Since 1.38 + * @PANGO_ATTR_BACKGROUND_ALPHA: background alpha ([struct@Pango.AttrInt]). Since 1.38 + * @PANGO_ATTR_ALLOW_BREAKS: whether breaks are allowed ([struct@Pango.AttrInt]). Since 1.44 + * @PANGO_ATTR_SHOW: how to render invisible characters ([struct@Pango.AttrInt]). Since 1.44 + * @PANGO_ATTR_INSERT_HYPHENS: whether to insert hyphens at intra-word line breaks ([struct@Pango.AttrInt]). Since 1.44 + * @PANGO_ATTR_OVERLINE: whether the text has an overline ([struct@Pango.AttrInt]). Since 1.46 + * @PANGO_ATTR_OVERLINE_COLOR: overline color ([struct@Pango.AttrColor]). Since 1.46 + * @PANGO_ATTR_LINE_HEIGHT: line height factor ([struct@Pango.AttrFloat]). Since: 1.50 + * @PANGO_ATTR_ABSOLUTE_LINE_HEIGHT: line height ([struct@Pango.AttrInt]). Since: 1.50 + * @PANGO_ATTR_WORD: override segmentation to classify the range of the attribute as a single word ([struct@Pango.AttrInt]). Since 1.50 + * @PANGO_ATTR_SENTENCE: override segmentation to classify the range of the attribute as a single sentence ([struct@Pango.AttrInt]). Since 1.50 + * @PANGO_ATTR_BASELINE_SHIFT: baseline displacement ([struct@Pango.AttrInt]). Since 1.50 + * @PANGO_ATTR_FONT_SCALE: font-relative size change ([struct@Pango.AttrInt]). Since 1.50 + * + * The `PangoAttrType` distinguishes between different types of attributes. + * + * Along with the predefined values, it is possible to allocate additional + * values for custom attributes using [func@AttrType.register]. The predefined + * values are given below. The type of structure used to store the attribute is + * listed in parentheses after the description. + */ +typedef enum +{ + PANGO_ATTR_INVALID, /* 0 is an invalid attribute type */ + PANGO_ATTR_LANGUAGE, /* PangoAttrLanguage */ + PANGO_ATTR_FAMILY, /* PangoAttrString */ + PANGO_ATTR_STYLE, /* PangoAttrInt */ + PANGO_ATTR_WEIGHT, /* PangoAttrInt */ + PANGO_ATTR_VARIANT, /* PangoAttrInt */ + PANGO_ATTR_STRETCH, /* PangoAttrInt */ + PANGO_ATTR_SIZE, /* PangoAttrSize */ + PANGO_ATTR_FONT_DESC, /* PangoAttrFontDesc */ + PANGO_ATTR_FOREGROUND, /* PangoAttrColor */ + PANGO_ATTR_BACKGROUND, /* PangoAttrColor */ + PANGO_ATTR_UNDERLINE, /* PangoAttrInt */ + PANGO_ATTR_STRIKETHROUGH, /* PangoAttrInt */ + PANGO_ATTR_RISE, /* PangoAttrInt */ + PANGO_ATTR_SHAPE, /* PangoAttrShape */ + PANGO_ATTR_SCALE, /* PangoAttrFloat */ + PANGO_ATTR_FALLBACK, /* PangoAttrInt */ + PANGO_ATTR_LETTER_SPACING, /* PangoAttrInt */ + PANGO_ATTR_UNDERLINE_COLOR, /* PangoAttrColor */ + PANGO_ATTR_STRIKETHROUGH_COLOR,/* PangoAttrColor */ + PANGO_ATTR_ABSOLUTE_SIZE, /* PangoAttrSize */ + PANGO_ATTR_GRAVITY, /* PangoAttrInt */ + PANGO_ATTR_GRAVITY_HINT, /* PangoAttrInt */ + PANGO_ATTR_FONT_FEATURES, /* PangoAttrFontFeatures */ + PANGO_ATTR_FOREGROUND_ALPHA, /* PangoAttrInt */ + PANGO_ATTR_BACKGROUND_ALPHA, /* PangoAttrInt */ + PANGO_ATTR_ALLOW_BREAKS, /* PangoAttrInt */ + PANGO_ATTR_SHOW, /* PangoAttrInt */ + PANGO_ATTR_INSERT_HYPHENS, /* PangoAttrInt */ + PANGO_ATTR_OVERLINE, /* PangoAttrInt */ + PANGO_ATTR_OVERLINE_COLOR, /* PangoAttrColor */ + PANGO_ATTR_LINE_HEIGHT, /* PangoAttrFloat */ + PANGO_ATTR_ABSOLUTE_LINE_HEIGHT, /* PangoAttrInt */ + PANGO_ATTR_TEXT_TRANSFORM, /* PangoAttrInt */ + PANGO_ATTR_WORD, /* PangoAttrInt */ + PANGO_ATTR_SENTENCE, /* PangoAttrInt */ + PANGO_ATTR_BASELINE_SHIFT, /* PangoAttrSize */ + PANGO_ATTR_FONT_SCALE, /* PangoAttrInt */ +} PangoAttrType; + +/** + * PangoUnderline: + * @PANGO_UNDERLINE_NONE: no underline should be drawn + * @PANGO_UNDERLINE_SINGLE: a single underline should be drawn + * @PANGO_UNDERLINE_DOUBLE: a double underline should be drawn + * @PANGO_UNDERLINE_LOW: a single underline should be drawn at a + * position beneath the ink extents of the text being + * underlined. This should be used only for underlining + * single characters, such as for keyboard accelerators. + * %PANGO_UNDERLINE_SINGLE should be used for extended + * portions of text. + * @PANGO_UNDERLINE_ERROR: an underline indicating an error should + * be drawn below. The exact style of rendering is up to the + * `PangoRenderer` in use, but typical styles include wavy + * or dotted lines. + * This underline is typically used to indicate an error such + * as a possible mispelling; in some cases a contrasting color + * may automatically be used. This type of underlining is + * available since Pango 1.4. + * @PANGO_UNDERLINE_SINGLE_LINE: Like @PANGO_UNDERLINE_SINGLE, but + * drawn continuously across multiple runs. This type + * of underlining is available since Pango 1.46. + * @PANGO_UNDERLINE_DOUBLE_LINE: Like @PANGO_UNDERLINE_DOUBLE, but + * drawn continuously across multiple runs. This type + * of underlining is available since Pango 1.46. + * @PANGO_UNDERLINE_ERROR_LINE: Like @PANGO_UNDERLINE_ERROR, but + * drawn continuously across multiple runs. This type + * of underlining is available since Pango 1.46. + * + * The `PangoUnderline` enumeration is used to specify whether text + * should be underlined, and if so, the type of underlining. + */ +typedef enum { + PANGO_UNDERLINE_NONE, + PANGO_UNDERLINE_SINGLE, + PANGO_UNDERLINE_DOUBLE, + PANGO_UNDERLINE_LOW, + PANGO_UNDERLINE_ERROR, + PANGO_UNDERLINE_SINGLE_LINE, + PANGO_UNDERLINE_DOUBLE_LINE, + PANGO_UNDERLINE_ERROR_LINE +} PangoUnderline; + + +/** + * PangoOverline: + * @PANGO_OVERLINE_NONE: no overline should be drawn + * @PANGO_OVERLINE_SINGLE: Draw a single line above the ink + * extents of the text being underlined. + * + * The `PangoOverline` enumeration is used to specify whether text + * should be overlined, and if so, the type of line. + * + * Since: 1.46 + */ +typedef enum { + PANGO_OVERLINE_NONE, + PANGO_OVERLINE_SINGLE +} PangoOverline; + +/** + * PangoShowFlags: + * @PANGO_SHOW_NONE: No special treatment for invisible characters + * @PANGO_SHOW_SPACES: Render spaces, tabs and newlines visibly + * @PANGO_SHOW_LINE_BREAKS: Render line breaks visibly + * @PANGO_SHOW_IGNORABLES: Render default-ignorable Unicode + * characters visibly + * + * These flags affect how Pango treats characters that are normally + * not visible in the output. + * + * Since: 1.44 + */ +typedef enum { + PANGO_SHOW_NONE = 0, + PANGO_SHOW_SPACES = 1 << 0, + PANGO_SHOW_LINE_BREAKS = 1 << 1, + PANGO_SHOW_IGNORABLES = 1 << 2 +} PangoShowFlags; + +/** + * PangoTextTransform: + * @PANGO_TEXT_TRANSFORM_NONE: Leave text unchanged + * @PANGO_TEXT_TRANSFORM_LOWERCASE: Display letters and numbers as lowercase + * @PANGO_TEXT_TRANSFORM_UPPERCASE: Display letters and numbers as uppercase + * @PANGO_TEXT_TRANSFORM_CAPITALIZE: Display the first character of a word + * in titlecase + * + * An enumeration that affects how Pango treats characters during shaping. + * + * Since: 1.50 + */ +typedef enum { + PANGO_TEXT_TRANSFORM_NONE, + PANGO_TEXT_TRANSFORM_LOWERCASE, + PANGO_TEXT_TRANSFORM_UPPERCASE, + PANGO_TEXT_TRANSFORM_CAPITALIZE, +} PangoTextTransform; + +/** + * PangoBaselineShift: + * @PANGO_BASELINE_SHIFT_NONE: Leave the baseline unchanged + * @PANGO_BASELINE_SHIFT_SUPERSCRIPT: Shift the baseline to the superscript position, + * relative to the previous run + * @PANGO_BASELINE_SHIFT_SUBSCRIPT: Shift the baseline to the subscript position, + * relative to the previous run + * + * An enumeration that affects baseline shifts between runs. + * + * Since: 1.50 + */ +typedef enum { + PANGO_BASELINE_SHIFT_NONE, + PANGO_BASELINE_SHIFT_SUPERSCRIPT, + PANGO_BASELINE_SHIFT_SUBSCRIPT, +} PangoBaselineShift; + +/** + * PangoFontScale: + * @PANGO_FONT_SCALE_NONE: Leave the font size unchanged + * @PANGO_FONT_SCALE_SUPERSCRIPT: Change the font to a size suitable for superscripts + * @PANGO_FONT_SCALE_SUBSCRIPT: Change the font to a size suitable for subscripts + * @PANGO_FONT_SCALE_SMALL_CAPS: Change the font to a size suitable for Small Caps + * + * An enumeration that affects font sizes for superscript + * and subscript positioning and for (emulated) Small Caps. + * + * Since: 1.50 + */ +typedef enum { + PANGO_FONT_SCALE_NONE, + PANGO_FONT_SCALE_SUPERSCRIPT, + PANGO_FONT_SCALE_SUBSCRIPT, + PANGO_FONT_SCALE_SMALL_CAPS, +} PangoFontScale; + +/** + * PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING: + * + * Value for @start_index in `PangoAttribute` that indicates + * the beginning of the text. + * + * Since: 1.24 + */ +#define PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING ((guint)0) + +/** + * PANGO_ATTR_INDEX_TO_TEXT_END: (value 4294967295) + * + * Value for @end_index in `PangoAttribute` that indicates + * the end of the text. + * + * Since: 1.24 + */ +#define PANGO_ATTR_INDEX_TO_TEXT_END ((guint)(G_MAXUINT + 0)) + +/** + * PangoAttribute: + * @klass: the class structure holding information about the type of the attribute + * @start_index: the start index of the range (in bytes). + * @end_index: end index of the range (in bytes). The character at this index + * is not included in the range. + * + * The `PangoAttribute` structure represents the common portions of all + * attributes. + * + * Particular types of attributes include this structure as their initial + * portion. The common portion of the attribute holds the range to which + * the value in the type-specific part of the attribute applies and should + * be initialized using [method@Pango.Attribute.init]. By default, an attribute + * will have an all-inclusive range of [0,%G_MAXUINT]. + */ +struct _PangoAttribute +{ + const PangoAttrClass *klass; + guint start_index; + guint end_index; +}; + +/** + * PangoAttrFilterFunc: + * @attribute: a Pango attribute + * @user_data: user data passed to the function + * + * Type of a function filtering a list of attributes. + * + * Return value: %TRUE if the attribute should be selected for + * filtering, %FALSE otherwise. + */ +typedef gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute, + gpointer user_data); + +/** + * PangoAttrDataCopyFunc: + * @user_data: user data to copy + * + * Type of a function that can duplicate user data for an attribute. + * + * Return value: new copy of @user_data. + **/ +typedef gpointer (*PangoAttrDataCopyFunc) (gconstpointer user_data); + +/** + * PangoAttrClass: + * @type: the type ID for this attribute + * @copy: function to duplicate an attribute of this type + * (see [method@Pango.Attribute.copy]) + * @destroy: function to free an attribute of this type + * (see [method@Pango.Attribute.destroy]) + * @equal: function to check two attributes of this type for equality + * (see [method@Pango.Attribute.equal]) + * + * The `PangoAttrClass` structure stores the type and operations for + * a particular type of attribute. + * + * The functions in this structure should not be called directly. Instead, + * one should use the wrapper functions provided for `PangoAttribute`. + */ +struct _PangoAttrClass +{ + /*< public >*/ + PangoAttrType type; + PangoAttribute * (*copy) (const PangoAttribute *attr); + void (*destroy) (PangoAttribute *attr); + gboolean (*equal) (const PangoAttribute *attr1, const PangoAttribute *attr2); +}; + +/** + * PangoAttrString: + * @attr: the common portion of the attribute + * @value: the string which is the value of the attribute + * + * The `PangoAttrString` structure is used to represent attributes with + * a string value. + */ +struct _PangoAttrString +{ + PangoAttribute attr; + char *value; +}; +/** + * PangoAttrLanguage: + * @attr: the common portion of the attribute + * @value: the `PangoLanguage` which is the value of the attribute + * + * The `PangoAttrLanguage` structure is used to represent attributes that + * are languages. + */ +struct _PangoAttrLanguage +{ + PangoAttribute attr; + PangoLanguage *value; +}; +/** + * PangoAttrInt: + * @attr: the common portion of the attribute + * @value: the value of the attribute + * + * The `PangoAttrInt` structure is used to represent attributes with + * an integer or enumeration value. + */ +struct _PangoAttrInt +{ + PangoAttribute attr; + int value; +}; +/** + * PangoAttrFloat: + * @attr: the common portion of the attribute + * @value: the value of the attribute + * + * The `PangoAttrFloat` structure is used to represent attributes with + * a float or double value. + */ +struct _PangoAttrFloat +{ + PangoAttribute attr; + double value; +}; +/** + * PangoAttrColor: + * @attr: the common portion of the attribute + * @color: the `PangoColor` which is the value of the attribute + * + * The `PangoAttrColor` structure is used to represent attributes that + * are colors. + */ +struct _PangoAttrColor +{ + PangoAttribute attr; + PangoColor color; +}; + +/** + * PangoAttrSize: + * @attr: the common portion of the attribute + * @size: size of font, in units of 1/%PANGO_SCALE of a point (for + * %PANGO_ATTR_SIZE) or of a device unit (for %PANGO_ATTR_ABSOLUTE_SIZE) + * @absolute: whether the font size is in device units or points. + * This field is only present for compatibility with Pango-1.8.0 + * (%PANGO_ATTR_ABSOLUTE_SIZE was added in 1.8.1); and always will + * be %FALSE for %PANGO_ATTR_SIZE and %TRUE for %PANGO_ATTR_ABSOLUTE_SIZE. + * + * The `PangoAttrSize` structure is used to represent attributes which + * set font size. + */ +struct _PangoAttrSize +{ + PangoAttribute attr; + int size; + guint absolute : 1; +}; + +/** + * PangoAttrShape: + * @attr: the common portion of the attribute + * @ink_rect: the ink rectangle to restrict to + * @logical_rect: the logical rectangle to restrict to + * @data: user data set (see [func@Pango.AttrShape.new_with_data]) + * @copy_func: copy function for the user data + * @destroy_func: destroy function for the user data + * + * The `PangoAttrShape` structure is used to represent attributes which + * impose shape restrictions. + */ +struct _PangoAttrShape +{ + PangoAttribute attr; + PangoRectangle ink_rect; + PangoRectangle logical_rect; + + gpointer data; + PangoAttrDataCopyFunc copy_func; + GDestroyNotify destroy_func; +}; + +/** + * PangoAttrFontDesc: + * @attr: the common portion of the attribute + * @desc: the font description which is the value of this attribute + * + * The `PangoAttrFontDesc` structure is used to store an attribute that + * sets all aspects of the font description at once. + */ +struct _PangoAttrFontDesc +{ + PangoAttribute attr; + PangoFontDescription *desc; +}; + +/** + * PangoAttrFontFeatures: + * @attr: the common portion of the attribute + * @features: the features, as a string in CSS syntax + * + * The `PangoAttrFontFeatures` structure is used to represent OpenType + * font features as an attribute. + * + * Since: 1.38 + */ +struct _PangoAttrFontFeatures +{ + PangoAttribute attr; + gchar *features; +}; + +PANGO_AVAILABLE_IN_ALL +GType pango_attribute_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoAttrType pango_attr_type_register (const char *name); +PANGO_AVAILABLE_IN_1_22 +const char * pango_attr_type_get_name (PangoAttrType type) G_GNUC_CONST; +PANGO_AVAILABLE_IN_1_20 +void pango_attribute_init (PangoAttribute *attr, + const PangoAttrClass *klass); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attribute_copy (const PangoAttribute *attr); +PANGO_AVAILABLE_IN_ALL +void pango_attribute_destroy (PangoAttribute *attr); +PANGO_AVAILABLE_IN_ALL +gboolean pango_attribute_equal (const PangoAttribute *attr1, + const PangoAttribute *attr2) G_GNUC_PURE; + +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_language_new (PangoLanguage *language); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_family_new (const char *family); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_foreground_new (guint16 red, + guint16 green, + guint16 blue); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_background_new (guint16 red, + guint16 green, + guint16 blue); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_size_new (int size); +PANGO_AVAILABLE_IN_1_8 +PangoAttribute * pango_attr_size_new_absolute (int size); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_style_new (PangoStyle style); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_weight_new (PangoWeight weight); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_variant_new (PangoVariant variant); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_stretch_new (PangoStretch stretch); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_font_desc_new (const PangoFontDescription *desc); + +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_underline_new (PangoUnderline underline); +PANGO_AVAILABLE_IN_1_8 +PangoAttribute * pango_attr_underline_color_new (guint16 red, + guint16 green, + guint16 blue); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_strikethrough_new (gboolean strikethrough); +PANGO_AVAILABLE_IN_1_8 +PangoAttribute * pango_attr_strikethrough_color_new (guint16 red, + guint16 green, + guint16 blue); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_rise_new (int rise); +PANGO_AVAILABLE_IN_1_50 +PangoAttribute * pango_attr_baseline_shift_new (int shift); +PANGO_AVAILABLE_IN_1_50 +PangoAttribute * pango_attr_font_scale_new (PangoFontScale scale); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_scale_new (double scale_factor); +PANGO_AVAILABLE_IN_1_4 +PangoAttribute * pango_attr_fallback_new (gboolean enable_fallback); +PANGO_AVAILABLE_IN_1_6 +PangoAttribute * pango_attr_letter_spacing_new (int letter_spacing); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_shape_new (const PangoRectangle *ink_rect, + const PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_1_8 +PangoAttribute * pango_attr_shape_new_with_data (const PangoRectangle *ink_rect, + const PangoRectangle *logical_rect, + gpointer data, + PangoAttrDataCopyFunc copy_func, + GDestroyNotify destroy_func); +PANGO_AVAILABLE_IN_1_16 +PangoAttribute * pango_attr_gravity_new (PangoGravity gravity); +PANGO_AVAILABLE_IN_1_16 +PangoAttribute * pango_attr_gravity_hint_new (PangoGravityHint hint); +PANGO_AVAILABLE_IN_1_38 +PangoAttribute * pango_attr_font_features_new (const char *features); +PANGO_AVAILABLE_IN_1_38 +PangoAttribute * pango_attr_foreground_alpha_new (guint16 alpha); +PANGO_AVAILABLE_IN_1_38 +PangoAttribute * pango_attr_background_alpha_new (guint16 alpha); +PANGO_AVAILABLE_IN_1_44 +PangoAttribute * pango_attr_allow_breaks_new (gboolean allow_breaks); + +PANGO_AVAILABLE_IN_1_50 +PangoAttribute * pango_attr_word_new (void); +PANGO_AVAILABLE_IN_1_50 +PangoAttribute * pango_attr_sentence_new (void); + +PANGO_AVAILABLE_IN_1_44 +PangoAttribute * pango_attr_insert_hyphens_new (gboolean insert_hyphens); +PANGO_AVAILABLE_IN_1_46 +PangoAttribute * pango_attr_overline_new (PangoOverline overline); +PANGO_AVAILABLE_IN_1_46 +PangoAttribute * pango_attr_overline_color_new (guint16 red, + guint16 green, + guint16 blue); +PANGO_AVAILABLE_IN_1_44 +PangoAttribute * pango_attr_show_new (PangoShowFlags flags); +PANGO_AVAILABLE_IN_1_50 +PangoAttribute * pango_attr_line_height_new (double factor); +PANGO_AVAILABLE_IN_1_50 +PangoAttribute * pango_attr_line_height_new_absolute (int height); +PANGO_AVAILABLE_IN_1_50 +PangoAttribute * pango_attr_text_transform_new (PangoTextTransform transform); + +PANGO_AVAILABLE_IN_1_50 +PangoAttrString * pango_attribute_as_string (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrLanguage * pango_attribute_as_language (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrInt * pango_attribute_as_int (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrSize * pango_attribute_as_size (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrFloat * pango_attribute_as_float (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrColor * pango_attribute_as_color (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrFontDesc * pango_attribute_as_font_desc (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrShape * pango_attribute_as_shape (PangoAttribute *attr); +PANGO_AVAILABLE_IN_1_50 +PangoAttrFontFeatures * pango_attribute_as_font_features (PangoAttribute *attr); + +/* Attribute lists */ + +typedef struct _PangoAttrList PangoAttrList; +typedef struct _PangoAttrIterator PangoAttrIterator; + +#define PANGO_TYPE_ATTR_LIST pango_attr_list_get_type () + +/** + * PangoAttrIterator: + * + * A `PangoAttrIterator` is used to iterate through a `PangoAttrList`. + * + * A new iterator is created with [method@Pango.AttrList.get_iterator]. + * Once the iterator is created, it can be advanced through the style + * changes in the text using [method@Pango.AttrIterator.next]. At each + * style change, the range of the current style segment and the attributes + * currently in effect can be queried. + */ + +/** + * PangoAttrList: + * + * A `PangoAttrList` represents a list of attributes that apply to a section + * of text. + * + * The attributes in a `PangoAttrList` are, in general, allowed to overlap in + * an arbitrary fashion. However, if the attributes are manipulated only through + * [method@Pango.AttrList.change], the overlap between properties will meet + * stricter criteria. + * + * Since the `PangoAttrList` structure is stored as a linear list, it is not + * suitable for storing attributes for large amounts of text. In general, you + * should not use a single `PangoAttrList` for more than one paragraph of text. + */ + +PANGO_AVAILABLE_IN_ALL +GType pango_attr_list_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoAttrList * pango_attr_list_new (void); +PANGO_AVAILABLE_IN_1_10 +PangoAttrList * pango_attr_list_ref (PangoAttrList *list); +PANGO_AVAILABLE_IN_ALL +void pango_attr_list_unref (PangoAttrList *list); +PANGO_AVAILABLE_IN_ALL +PangoAttrList * pango_attr_list_copy (PangoAttrList *list); +PANGO_AVAILABLE_IN_ALL +void pango_attr_list_insert (PangoAttrList *list, + PangoAttribute *attr); +PANGO_AVAILABLE_IN_ALL +void pango_attr_list_insert_before (PangoAttrList *list, + PangoAttribute *attr); +PANGO_AVAILABLE_IN_ALL +void pango_attr_list_change (PangoAttrList *list, + PangoAttribute *attr); +PANGO_AVAILABLE_IN_ALL +void pango_attr_list_splice (PangoAttrList *list, + PangoAttrList *other, + int pos, + int len); +PANGO_AVAILABLE_IN_1_44 +void pango_attr_list_update (PangoAttrList *list, + int pos, + int remove, + int add); + +PANGO_AVAILABLE_IN_1_2 +PangoAttrList * pango_attr_list_filter (PangoAttrList *list, + PangoAttrFilterFunc func, + gpointer data); + +PANGO_AVAILABLE_IN_1_44 +GSList * pango_attr_list_get_attributes (PangoAttrList *list); + +PANGO_AVAILABLE_IN_1_46 +gboolean pango_attr_list_equal (PangoAttrList *list, + PangoAttrList *other_list); + +PANGO_AVAILABLE_IN_1_50 +char * pango_attr_list_to_string (PangoAttrList *list); +PANGO_AVAILABLE_IN_1_50 +PangoAttrList * pango_attr_list_from_string (const char *text); + +PANGO_AVAILABLE_IN_1_44 +GType pango_attr_iterator_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoAttrIterator * pango_attr_list_get_iterator (PangoAttrList *list); + +PANGO_AVAILABLE_IN_ALL +void pango_attr_iterator_range (PangoAttrIterator *iterator, + int *start, + int *end); +PANGO_AVAILABLE_IN_ALL +gboolean pango_attr_iterator_next (PangoAttrIterator *iterator); +PANGO_AVAILABLE_IN_ALL +PangoAttrIterator * pango_attr_iterator_copy (PangoAttrIterator *iterator); +PANGO_AVAILABLE_IN_ALL +void pango_attr_iterator_destroy (PangoAttrIterator *iterator); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_iterator_get (PangoAttrIterator *iterator, + PangoAttrType type); +PANGO_AVAILABLE_IN_ALL +void pango_attr_iterator_get_font (PangoAttrIterator *iterator, + PangoFontDescription *desc, + PangoLanguage **language, + GSList **extra_attrs); +PANGO_AVAILABLE_IN_1_2 +GSList * pango_attr_iterator_get_attrs (PangoAttrIterator *iterator); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttribute, pango_attribute_destroy) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttrList, pango_attr_list_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttrIterator, pango_attr_iterator_destroy) + +G_END_DECLS + +#endif /* __PANGO_ATTRIBUTES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-bidi-type.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-bidi-type.h new file mode 100644 index 0000000..dbca468 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-bidi-type.h @@ -0,0 +1,117 @@ +/* Pango + * pango-bidi-type.h: Bidirectional Character Types + * + * Copyright (C) 2008 Jürg Billeter + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_BIDI_TYPE_H__ +#define __PANGO_BIDI_TYPE_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +#ifndef PANGO_DISABLE_DEPRECATED +/** + * PangoBidiType: + * @PANGO_BIDI_TYPE_L: Left-to-Right + * @PANGO_BIDI_TYPE_LRE: Left-to-Right Embedding + * @PANGO_BIDI_TYPE_LRO: Left-to-Right Override + * @PANGO_BIDI_TYPE_R: Right-to-Left + * @PANGO_BIDI_TYPE_AL: Right-to-Left Arabic + * @PANGO_BIDI_TYPE_RLE: Right-to-Left Embedding + * @PANGO_BIDI_TYPE_RLO: Right-to-Left Override + * @PANGO_BIDI_TYPE_PDF: Pop Directional Format + * @PANGO_BIDI_TYPE_EN: European Number + * @PANGO_BIDI_TYPE_ES: European Number Separator + * @PANGO_BIDI_TYPE_ET: European Number Terminator + * @PANGO_BIDI_TYPE_AN: Arabic Number + * @PANGO_BIDI_TYPE_CS: Common Number Separator + * @PANGO_BIDI_TYPE_NSM: Nonspacing Mark + * @PANGO_BIDI_TYPE_BN: Boundary Neutral + * @PANGO_BIDI_TYPE_B: Paragraph Separator + * @PANGO_BIDI_TYPE_S: Segment Separator + * @PANGO_BIDI_TYPE_WS: Whitespace + * @PANGO_BIDI_TYPE_ON: Other Neutrals + * @PANGO_BIDI_TYPE_LRI: Left-to-Right isolate. Since 1.48.6 + * @PANGO_BIDI_TYPE_RLI: Right-to-Left isolate. Since 1.48.6 + * @PANGO_BIDI_TYPE_FSI: First strong isolate. Since 1.48.6 + * @PANGO_BIDI_TYPE_PDI: Pop directional isolate. Since 1.48.6 + * + * `PangoBidiType` represents the bidirectional character + * type of a Unicode character. + * + * The values in this enumeration are specified by the + * [Unicode bidirectional algorithm](http://www.unicode.org/reports/tr9/). + * + * Since: 1.22 + * Deprecated: 1.44: Use fribidi for this information + **/ +typedef enum { + /* Strong types */ + PANGO_BIDI_TYPE_L, + PANGO_BIDI_TYPE_LRE, + PANGO_BIDI_TYPE_LRO, + PANGO_BIDI_TYPE_R, + PANGO_BIDI_TYPE_AL, + PANGO_BIDI_TYPE_RLE, + PANGO_BIDI_TYPE_RLO, + + /* Weak types */ + PANGO_BIDI_TYPE_PDF, + PANGO_BIDI_TYPE_EN, + PANGO_BIDI_TYPE_ES, + PANGO_BIDI_TYPE_ET, + PANGO_BIDI_TYPE_AN, + PANGO_BIDI_TYPE_CS, + PANGO_BIDI_TYPE_NSM, + PANGO_BIDI_TYPE_BN, + + /* Neutral types */ + PANGO_BIDI_TYPE_B, + PANGO_BIDI_TYPE_S, + PANGO_BIDI_TYPE_WS, + PANGO_BIDI_TYPE_ON, + + /* Explicit formatting */ + PANGO_BIDI_TYPE_LRI, + PANGO_BIDI_TYPE_RLI, + PANGO_BIDI_TYPE_FSI, + PANGO_BIDI_TYPE_PDI +} PangoBidiType; + +PANGO_DEPRECATED_IN_1_44 +PangoBidiType pango_bidi_type_for_unichar (gunichar ch) G_GNUC_CONST; + +PANGO_DEPRECATED_IN_1_44 +PangoDirection pango_unichar_direction (gunichar ch) G_GNUC_CONST; +PANGO_DEPRECATED_IN_1_44 +PangoDirection pango_find_base_dir (const gchar *text, + gint length); + +PANGO_DEPRECATED_IN_1_30_FOR(g_unichar_get_mirror_char) +gboolean pango_get_mirror_char (gunichar ch, + gunichar *mirrored_ch); +#endif + +G_END_DECLS + +#endif /* __PANGO_BIDI_TYPE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-break.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-break.h new file mode 100644 index 0000000..797fefd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-break.h @@ -0,0 +1,144 @@ +/* Pango + * pango-break.h: + * + * Copyright (C) 1999 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_BREAK_H__ +#define __PANGO_BREAK_H__ + +#include + +G_BEGIN_DECLS + +#include + +/* Logical attributes of a character. + */ +/** + * PangoLogAttr: + * @is_line_break: if set, can break line in front of character + * @is_mandatory_break: if set, must break line in front of character + * @is_char_break: if set, can break here when doing character wrapping + * @is_white: is whitespace character + * @is_cursor_position: if set, cursor can appear in front of character. + * i.e. this is a grapheme boundary, or the first character in the text. + * This flag implements Unicode's + * [Grapheme Cluster Boundaries](http://www.unicode.org/reports/tr29/) + * semantics. + * @is_word_start: is first character in a word + * @is_word_end: is first non-word char after a word + * Note that in degenerate cases, you could have both @is_word_start + * and @is_word_end set for some character. + * @is_sentence_boundary: is a sentence boundary. + * There are two ways to divide sentences. The first assigns all + * inter-sentence whitespace/control/format chars to some sentence, + * so all chars are in some sentence; @is_sentence_boundary denotes + * the boundaries there. The second way doesn't assign + * between-sentence spaces, etc. to any sentence, so + * @is_sentence_start/@is_sentence_end mark the boundaries of those sentences. + * @is_sentence_start: is first character in a sentence + * @is_sentence_end: is first char after a sentence. + * Note that in degenerate cases, you could have both @is_sentence_start + * and @is_sentence_end set for some character. (e.g. no space after a + * period, so the next sentence starts right away) + * @backspace_deletes_character: if set, backspace deletes one character + * rather than the entire grapheme cluster. This field is only meaningful + * on grapheme boundaries (where @is_cursor_position is set). In some languages, + * the full grapheme (e.g. letter + diacritics) is considered a unit, while in + * others, each decomposed character in the grapheme is a unit. In the default + * implementation of [func@break], this bit is set on all grapheme boundaries + * except those following Latin, Cyrillic or Greek base characters. + * @is_expandable_space: is a whitespace character that can possibly be + * expanded for justification purposes. (Since: 1.18) + * @is_word_boundary: is a word boundary, as defined by UAX#29. + * More specifically, means that this is not a position in the middle of a word. + * For example, both sides of a punctuation mark are considered word boundaries. + * This flag is particularly useful when selecting text word-by-word. This flag + * implements Unicode's [Word Boundaries](http://www.unicode.org/reports/tr29/) + * semantics. (Since: 1.22) + * @break_inserts_hyphen: when breaking lines before this char, insert a hyphen. + * Since: 1.50 + * @break_removes_preceding: when breaking lines before this char, remove the + * preceding char. Since 1.50 + * + * The `PangoLogAttr` structure stores information about the attributes of a + * single character. + */ +struct _PangoLogAttr +{ + guint is_line_break : 1; + guint is_mandatory_break : 1; + guint is_char_break : 1; + guint is_white : 1; + guint is_cursor_position : 1; + guint is_word_start : 1; + guint is_word_end : 1; + guint is_sentence_boundary : 1; + guint is_sentence_start : 1; + guint is_sentence_end : 1; + guint backspace_deletes_character : 1; + guint is_expandable_space : 1; + guint is_word_boundary : 1; + guint break_inserts_hyphen : 1; + guint break_removes_preceding : 1; + + guint reserved : 17; +}; + +PANGO_DEPRECATED_IN_1_44 +void pango_break (const char *text, + int length, + PangoAnalysis *analysis, + PangoLogAttr *attrs, + int attrs_len); + +PANGO_AVAILABLE_IN_ALL +void pango_get_log_attrs (const char *text, + int length, + int level, + PangoLanguage *language, + PangoLogAttr *attrs, + int attrs_len); + +PANGO_AVAILABLE_IN_ALL +void pango_default_break (const char *text, + int length, + PangoAnalysis *analysis, + PangoLogAttr *attrs, + int attrs_len); + +PANGO_AVAILABLE_IN_1_44 +void pango_tailor_break (const char *text, + int length, + PangoAnalysis *analysis, + int offset, + PangoLogAttr *attrs, + int attrs_len); + +PANGO_AVAILABLE_IN_1_50 +void pango_attr_break (const char *text, + int length, + PangoAttrList *attr_list, + int offset, + PangoLogAttr *attrs, + int attrs_len); + +G_END_DECLS + +#endif /* __PANGO_BREAK_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-color.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-color.h new file mode 100644 index 0000000..675d8e8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-color.h @@ -0,0 +1,75 @@ +/* Pango + * pango-color.h: A color struct + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_COLOR_H__ +#define __PANGO_COLOR_H__ + +#include +#include + +G_BEGIN_DECLS + + +typedef struct _PangoColor PangoColor; + +/** + * PangoColor: + * @red: value of red component + * @green: value of green component + * @blue: value of blue component + * + * The `PangoColor` structure is used to + * represent a color in an uncalibrated RGB color-space. + */ +struct _PangoColor +{ + guint16 red; + guint16 green; + guint16 blue; +}; + +#define PANGO_TYPE_COLOR (pango_color_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_color_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoColor *pango_color_copy (const PangoColor *src); + +PANGO_AVAILABLE_IN_ALL +void pango_color_free (PangoColor *color); + +PANGO_AVAILABLE_IN_ALL +gboolean pango_color_parse (PangoColor *color, + const char *spec); + +PANGO_AVAILABLE_IN_1_46 +gboolean pango_color_parse_with_alpha (PangoColor *color, + guint16 *alpha, + const char *spec); + +PANGO_AVAILABLE_IN_1_16 +char *pango_color_to_string (const PangoColor *color); + + +G_END_DECLS + +#endif /* __PANGO_COLOR_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-context.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-context.h new file mode 100644 index 0000000..3ad63f8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-context.h @@ -0,0 +1,116 @@ +/* Pango + * pango-context.h: Rendering contexts + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_CONTEXT_H__ +#define __PANGO_CONTEXT_H__ + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct _PangoContextClass PangoContextClass; + +#define PANGO_TYPE_CONTEXT (pango_context_get_type ()) +#define PANGO_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_CONTEXT, PangoContext)) +#define PANGO_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_CONTEXT, PangoContextClass)) +#define PANGO_IS_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_CONTEXT)) +#define PANGO_IS_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_CONTEXT)) +#define PANGO_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_CONTEXT, PangoContextClass)) + + +PANGO_AVAILABLE_IN_ALL +GType pango_context_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoContext * pango_context_new (void); +PANGO_AVAILABLE_IN_1_32 +void pango_context_changed (PangoContext *context); +PANGO_AVAILABLE_IN_ALL +void pango_context_set_font_map (PangoContext *context, + PangoFontMap *font_map); +PANGO_AVAILABLE_IN_1_6 +PangoFontMap * pango_context_get_font_map (PangoContext *context); +PANGO_AVAILABLE_IN_1_32 +guint pango_context_get_serial (PangoContext *context); +PANGO_AVAILABLE_IN_ALL +void pango_context_list_families (PangoContext *context, + PangoFontFamily ***families, + int *n_families); +PANGO_AVAILABLE_IN_ALL +PangoFont * pango_context_load_font (PangoContext *context, + const PangoFontDescription *desc); +PANGO_AVAILABLE_IN_ALL +PangoFontset * pango_context_load_fontset (PangoContext *context, + const PangoFontDescription *desc, + PangoLanguage *language); + +PANGO_AVAILABLE_IN_ALL +PangoFontMetrics * pango_context_get_metrics (PangoContext *context, + const PangoFontDescription *desc, + PangoLanguage *language); + +PANGO_AVAILABLE_IN_ALL +void pango_context_set_font_description (PangoContext *context, + const PangoFontDescription *desc); +PANGO_AVAILABLE_IN_ALL +PangoFontDescription * pango_context_get_font_description (PangoContext *context); +PANGO_AVAILABLE_IN_ALL +PangoLanguage * pango_context_get_language (PangoContext *context); +PANGO_AVAILABLE_IN_ALL +void pango_context_set_language (PangoContext *context, + PangoLanguage *language); +PANGO_AVAILABLE_IN_ALL +void pango_context_set_base_dir (PangoContext *context, + PangoDirection direction); +PANGO_AVAILABLE_IN_ALL +PangoDirection pango_context_get_base_dir (PangoContext *context); +PANGO_AVAILABLE_IN_1_16 +void pango_context_set_base_gravity (PangoContext *context, + PangoGravity gravity); +PANGO_AVAILABLE_IN_1_16 +PangoGravity pango_context_get_base_gravity (PangoContext *context); +PANGO_AVAILABLE_IN_1_16 +PangoGravity pango_context_get_gravity (PangoContext *context); +PANGO_AVAILABLE_IN_1_16 +void pango_context_set_gravity_hint (PangoContext *context, + PangoGravityHint hint); +PANGO_AVAILABLE_IN_1_16 +PangoGravityHint pango_context_get_gravity_hint (PangoContext *context); + +PANGO_AVAILABLE_IN_1_6 +void pango_context_set_matrix (PangoContext *context, + const PangoMatrix *matrix); +PANGO_AVAILABLE_IN_1_6 +const PangoMatrix * pango_context_get_matrix (PangoContext *context); + +PANGO_AVAILABLE_IN_1_44 +void pango_context_set_round_glyph_positions (PangoContext *context, + gboolean round_positions); +PANGO_AVAILABLE_IN_1_44 +gboolean pango_context_get_round_glyph_positions (PangoContext *context); + +G_END_DECLS + +#endif /* __PANGO_CONTEXT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-coverage.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-coverage.h new file mode 100644 index 0000000..c401375 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-coverage.h @@ -0,0 +1,108 @@ +/* Pango + * pango-coverage.h: Coverage sets for fonts + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_COVERAGE_H__ +#define __PANGO_COVERAGE_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +/** + * PangoCoverage: + * + * A `PangoCoverage` structure is a map from Unicode characters + * to [enum@Pango.CoverageLevel] values. + * + * It is often necessary in Pango to determine if a particular + * font can represent a particular character, and also how well + * it can represent that character. The `PangoCoverage` is a data + * structure that is used to represent that information. It is an + * opaque structure with no public fields. + */ +typedef struct _PangoCoverage PangoCoverage; + +/** + * PangoCoverageLevel: + * @PANGO_COVERAGE_NONE: The character is not representable with + * the font. + * @PANGO_COVERAGE_FALLBACK: The character is represented in a + * way that may be comprehensible but is not the correct + * graphical form. For instance, a Hangul character represented + * as a a sequence of Jamos, or a Latin transliteration of a + * Cyrillic word. + * @PANGO_COVERAGE_APPROXIMATE: The character is represented as + * basically the correct graphical form, but with a stylistic + * variant inappropriate for the current script. + * @PANGO_COVERAGE_EXACT: The character is represented as the + * correct graphical form. + * + * `PangoCoverageLevel` is used to indicate how well a font can + * represent a particular Unicode character for a particular script. + * + * Since 1.44, only %PANGO_COVERAGE_NONE and %PANGO_COVERAGE_EXACT + * will be returned. + */ +typedef enum { + PANGO_COVERAGE_NONE, + PANGO_COVERAGE_FALLBACK, + PANGO_COVERAGE_APPROXIMATE, + PANGO_COVERAGE_EXACT +} PangoCoverageLevel; + +PANGO_AVAILABLE_IN_ALL +GType pango_coverage_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoCoverage * pango_coverage_new (void); +PANGO_DEPRECATED_IN_1_52_FOR(g_object_ref) +PangoCoverage * pango_coverage_ref (PangoCoverage *coverage); +PANGO_DEPRECATED_IN_1_52_FOR(g_object_unref) +void pango_coverage_unref (PangoCoverage *coverage); +PANGO_AVAILABLE_IN_ALL +PangoCoverage * pango_coverage_copy (PangoCoverage *coverage); +PANGO_AVAILABLE_IN_ALL +PangoCoverageLevel pango_coverage_get (PangoCoverage *coverage, + int index_); +PANGO_AVAILABLE_IN_ALL +void pango_coverage_set (PangoCoverage *coverage, + int index_, + PangoCoverageLevel level); +PANGO_DEPRECATED_IN_1_44 +void pango_coverage_max (PangoCoverage *coverage, + PangoCoverage *other); + +PANGO_DEPRECATED_IN_1_44 +void pango_coverage_to_bytes (PangoCoverage *coverage, + guchar **bytes, + int *n_bytes); +PANGO_DEPRECATED_IN_1_44 +PangoCoverage *pango_coverage_from_bytes (guchar *bytes, + int n_bytes); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoCoverage, g_object_unref) + +G_END_DECLS + +#endif /* __PANGO_COVERAGE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-direction.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-direction.h new file mode 100644 index 0000000..24d3c50 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-direction.h @@ -0,0 +1,72 @@ +/* Pango + * pango-direction.h: Unicode text direction + * + * Copyright (C) 2018 Matthias Clasen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_DIRECTION_H__ +#define __PANGO_DIRECTION_H__ + +#include + +G_BEGIN_DECLS + +/** + * PangoDirection: + * @PANGO_DIRECTION_LTR: A strong left-to-right direction + * @PANGO_DIRECTION_RTL: A strong right-to-left direction + * @PANGO_DIRECTION_TTB_LTR: Deprecated value; treated the + * same as `PANGO_DIRECTION_RTL`. + * @PANGO_DIRECTION_TTB_RTL: Deprecated value; treated the + * same as `PANGO_DIRECTION_LTR` + * @PANGO_DIRECTION_WEAK_LTR: A weak left-to-right direction + * @PANGO_DIRECTION_WEAK_RTL: A weak right-to-left direction + * @PANGO_DIRECTION_NEUTRAL: No direction specified + * + * `PangoDirection` represents a direction in the Unicode bidirectional + * algorithm. + * + * Not every value in this enumeration makes sense for every usage of + * `PangoDirection`; for example, the return value of [func@unichar_direction] + * and [func@find_base_dir] cannot be `PANGO_DIRECTION_WEAK_LTR` or + * `PANGO_DIRECTION_WEAK_RTL`, since every character is either neutral + * or has a strong direction; on the other hand `PANGO_DIRECTION_NEUTRAL` + * doesn't make sense to pass to [func@itemize_with_base_dir]. + * + * The `PANGO_DIRECTION_TTB_LTR`, `PANGO_DIRECTION_TTB_RTL` values come from + * an earlier interpretation of this enumeration as the writing direction + * of a block of text and are no longer used. See `PangoGravity` for how + * vertical text is handled in Pango. + * + * If you are interested in text direction, you should really use fribidi + * directly. `PangoDirection` is only retained because it is used in some + * public apis. + */ +typedef enum { + PANGO_DIRECTION_LTR, + PANGO_DIRECTION_RTL, + PANGO_DIRECTION_TTB_LTR, + PANGO_DIRECTION_TTB_RTL, + PANGO_DIRECTION_WEAK_LTR, + PANGO_DIRECTION_WEAK_RTL, + PANGO_DIRECTION_NEUTRAL +} PangoDirection; + +G_END_DECLS + +#endif /* __PANGO_DIRECTION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-engine.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-engine.h new file mode 100644 index 0000000..a4b4ea6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-engine.h @@ -0,0 +1,457 @@ +/* Pango + * pango-engine.h: Engines for script and language specific processing + * + * Copyright (C) 2000,2003 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_ENGINE_H__ +#define __PANGO_ENGINE_H__ + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +/* All of this is deprecated and entirely useless for bindings. + * Leave it out of the gir file. + */ +#ifndef __GI_SCANNER__ + +#ifndef PANGO_DISABLE_DEPRECATED + +/** + * PANGO_RENDER_TYPE_NONE: + * + * A string constant defining the render type + * for engines that are not rendering-system specific. + * + * Deprecated: 1.38 + */ +#define PANGO_RENDER_TYPE_NONE "PangoRenderNone" + +#define PANGO_TYPE_ENGINE (pango_engine_get_type ()) +#define PANGO_ENGINE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_ENGINE, PangoEngine)) +#define PANGO_IS_ENGINE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_ENGINE)) +#define PANGO_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_ENGINE, PangoEngineClass)) +#define PANGO_IS_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_ENGINE)) +#define PANGO_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_ENGINE, PangoEngineClass)) + +typedef struct _PangoEngine PangoEngine; +typedef struct _PangoEngineClass PangoEngineClass; + +/** + * PangoEngine: + * + * `PangoEngine` is the base class for all types of language and + * script specific engines. It has no functionality by itself. + * + * Deprecated: 1.38 + **/ +struct _PangoEngine +{ + /*< private >*/ + GObject parent_instance; +}; + +/** + * PangoEngineClass: + * + * Class structure for `PangoEngine` + * + * Deprecated: 1.38 + **/ +struct _PangoEngineClass +{ + /*< private >*/ + GObjectClass parent_class; +}; + +PANGO_DEPRECATED_IN_1_38 +GType pango_engine_get_type (void) G_GNUC_CONST; + +/** + * PANGO_ENGINE_TYPE_LANG: + * + * A string constant defining the engine type for language engines. + * These engines derive from `PangoEngineLang`. + * + * Deprecated: 1.38 + */ +#define PANGO_ENGINE_TYPE_LANG "PangoEngineLang" + +#define PANGO_TYPE_ENGINE_LANG (pango_engine_lang_get_type ()) +#define PANGO_ENGINE_LANG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_ENGINE_LANG, PangoEngineLang)) +#define PANGO_IS_ENGINE_LANG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_ENGINE_LANG)) +#define PANGO_ENGINE_LANG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_ENGINE_LANG, PangoEngineLangClass)) +#define PANGO_IS_ENGINE_LANG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_ENGINE_LANG)) +#define PANGO_ENGINE_LANG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_ENGINE_LANG, PangoEngineLangClass)) + +typedef struct _PangoEngineLangClass PangoEngineLangClass; + +/** + * PangoEngineLang: + * + * The `PangoEngineLang` class is implemented by engines that + * customize the rendering-system independent part of the + * Pango pipeline for a particular script or language. For + * instance, a custom `PangoEngineLang` could be provided for + * Thai to implement the dictionary-based word boundary + * lookups needed for that language. + * + * Deprecated: 1.38 + **/ +struct _PangoEngineLang +{ + /*< private >*/ + PangoEngine parent_instance; +}; + +/** + * PangoEngineLangClass: + * @script_break: (nullable): Provides a custom implementation of + * pango_break(). If %NULL, pango_default_break() is used instead. If + * not %NULL, for Pango versions before 1.16 (module interface version + * before 1.6.0), this was called instead of pango_default_break(), + * but in newer versions, pango_default_break() is always called and + * this is called after that to allow tailoring the breaking results. + * + * Class structure for `PangoEngineLang` + * + * Deprecated: 1.38 + **/ +struct _PangoEngineLangClass +{ + /*< private >*/ + PangoEngineClass parent_class; + + /*< public >*/ + void (*script_break) (PangoEngineLang *engine, + const char *text, + int len, + PangoAnalysis *analysis, + PangoLogAttr *attrs, + int attrs_len); +}; + +PANGO_DEPRECATED_IN_1_38 +GType pango_engine_lang_get_type (void) G_GNUC_CONST; + +/** + * PANGO_ENGINE_TYPE_SHAPE: + * + * A string constant defining the engine type for shaping engines. + * These engines derive from `PangoEngineShape`. + * + * Deprecated: 1.38 + */ +#define PANGO_ENGINE_TYPE_SHAPE "PangoEngineShape" + +#define PANGO_TYPE_ENGINE_SHAPE (pango_engine_shape_get_type ()) +#define PANGO_ENGINE_SHAPE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_ENGINE_SHAPE, PangoEngineShape)) +#define PANGO_IS_ENGINE_SHAPE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_ENGINE_SHAPE)) +#define PANGO_ENGINE_SHAPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_ENGINE_SHAPE, PangoEngineShapeClass)) +#define PANGO_IS_ENGINE_SHAPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_ENGINE_SHAPE)) +#define PANGO_ENGINE_SHAPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_ENGINE_SHAPE, PangoEngineShapeClass)) + +typedef struct _PangoEngineShapeClass PangoEngineShapeClass; + +/** + * PangoEngineShape: + * + * The `PangoEngineShape` class is implemented by engines that + * customize the rendering-system dependent part of the + * Pango pipeline for a particular script or language. + * A `PangoEngineShape` implementation is then specific to both + * a particular rendering system or group of rendering systems + * and to a particular script. For instance, there is one + * `PangoEngineShape` implementation to handle shaping Arabic + * for Fontconfig-based backends. + * + * Deprecated: 1.38 + **/ +struct _PangoEngineShape +{ + PangoEngine parent_instance; +}; + +/** + * PangoEngineShapeClass: + * @script_shape: Given a font, a piece of text, and a `PangoAnalysis` + * structure, converts characters to glyphs and positions the + * resulting glyphs. The results are stored in the `PangoGlyphString` + * that is passed in. (The implementation should resize it + * appropriately using pango_glyph_string_set_size()). All fields + * of the @log_clusters and @glyphs array must be filled in, with + * the exception that Pango will automatically generate + * `glyphs->glyphs[i].attr.is_cluster_start` + * using the @log_clusters array. Each input character must occur in one + * of the output logical clusters; + * if no rendering is desired for a character, this may involve + * inserting glyphs with the `PangoGlyph` ID %PANGO_GLYPH_EMPTY, which + * is guaranteed never to render. If the shaping fails for any reason, + * the shaper should return with an empty (zero-size) glyph string. + * If the shaper has not set the size on the glyph string yet, simply + * returning signals the failure too. + * @covers: Returns the characters that this engine can cover + * with a given font for a given language. If not overridden, the default + * implementation simply returns the coverage information for the + * font itself unmodified. + * + * Class structure for `PangoEngineShape` + * + * Deprecated: 1.38 + **/ +struct _PangoEngineShapeClass +{ + /*< private >*/ + PangoEngineClass parent_class; + + /*< public >*/ + void (*script_shape) (PangoEngineShape *engine, + PangoFont *font, + const char *item_text, + unsigned int item_length, + const PangoAnalysis *analysis, + PangoGlyphString *glyphs, + const char *paragraph_text, + unsigned int paragraph_length); + PangoCoverageLevel (*covers) (PangoEngineShape *engine, + PangoFont *font, + PangoLanguage *language, + gunichar wc); +}; + +PANGO_DEPRECATED_IN_1_38 +GType pango_engine_shape_get_type (void) G_GNUC_CONST; + +typedef struct _PangoEngineInfo PangoEngineInfo; +typedef struct _PangoEngineScriptInfo PangoEngineScriptInfo; + +/** + * PangoEngineScriptInfo: + * @script: a `PangoScript`. The value %PANGO_SCRIPT_COMMON has + * the special meaning here of "all scripts" + * @langs: a semicolon separated list of languages that this + * engine handles for this script. This may be empty, + * in which case the engine is saying that it is a + * fallback choice for all languages for this range, + * but should not be used if another engine + * indicates that it is specific for the language for + * a given code point. An entry in this list of "*" + * indicates that this engine is specific to all + * languages for this range. + * + * The `PangoEngineScriptInfo` structure contains + * information about how the shaper covers a particular script. + * + * Deprecated: 1.38 + */ +struct _PangoEngineScriptInfo +{ + PangoScript script; + const gchar *langs; +}; + +/** + * PangoEngineInfo: + * @id: a unique string ID for the engine. + * @engine_type: a string identifying the engine type. + * @render_type: a string identifying the render type. + * @scripts: array of scripts this engine supports. + * @n_scripts: number of items in @scripts. + * + * The `PangoEngineInfo` structure contains information about a particular + * engine. It contains the following fields: + * + * Deprecated: 1.38 + */ +struct _PangoEngineInfo +{ + const gchar *id; + const gchar *engine_type; + const gchar *render_type; + PangoEngineScriptInfo *scripts; + gint n_scripts; +}; + +/** + * script_engine_list: (skip) + * @engines: location to store a pointer to an array of engines. + * @n_engines: location to store the number of elements in @engines. + * + * Do not use. + * + * Deprecated: 1.38 + **/ +PANGO_DEPRECATED_IN_1_38 +void script_engine_list (PangoEngineInfo **engines, + int *n_engines); + +/** + * script_engine_init: (skip) + * @module: a `GTypeModule` structure used to associate any + * GObject types created in this module with the module. + * + * Do not use. + * + * Deprecated: 1.38 + **/ +PANGO_DEPRECATED_IN_1_38 +void script_engine_init (GTypeModule *module); + + +/** + * script_engine_exit: (skip) + * + * Do not use. + * + * Deprecated: 1.38 + **/ +PANGO_DEPRECATED_IN_1_38 +void script_engine_exit (void); + +/** + * script_engine_create: (skip) + * @id: the ID of an engine as reported by script_engine_list. + * + * Do not use. + * + * Deprecated: 1.38 + **/ +PANGO_DEPRECATED_IN_1_38 +PangoEngine *script_engine_create (const char *id); + +/* Utility macro used by PANGO_ENGINE_LANG_DEFINE_TYPE and + * PANGO_ENGINE_LANG_DEFINE_TYPE + */ +#define PANGO_ENGINE_DEFINE_TYPE(name, prefix, class_init, instance_init, parent_type) \ +static GType prefix ## _type; \ +static void \ +prefix ## _register_type (GTypeModule *module) \ +{ \ + const GTypeInfo object_info = \ + { \ + sizeof (name ## Class), \ + (GBaseInitFunc) NULL, \ + (GBaseFinalizeFunc) NULL, \ + (GClassInitFunc) class_init, \ + (GClassFinalizeFunc) NULL, \ + NULL, /* class_data */ \ + sizeof (name), \ + 0, /* n_prelocs */ \ + (GInstanceInitFunc) instance_init, \ + NULL /* value_table */ \ + }; \ + \ + prefix ## _type = g_type_module_register_type (module, parent_type, \ + # name, \ + &object_info, 0); \ +} + +/** + * PANGO_ENGINE_LANG_DEFINE_TYPE: + * @name: Name of the the type to register (for example:, ArabicEngineFc) + * @prefix: Prefix for symbols that will be defined (for example:, arabic_engine_fc) + * @class_init: (nullable): Class initialization function for the new type + * @instance_init: (nullable): Instance initialization function for the new type + * + * Outputs the necessary code for GObject type registration for a + * `PangoEngineLang` class defined in a module. Two static symbols + * are defined. + * + * + * static GType *prefix*_type; + * static void *prefix*_register_type (GTypeModule module); + * + * The *prefix*_register_type() + * function should be called in your script_engine_init() function for + * each type that your module implements, and then your script_engine_create() + * function can create instances of the object as follows: + * + * ``` + * PangoEngine *engine = g_object_new (prefix_type, NULL); + * ``` + * + * Deprecated: 1.38 + **/ +#define PANGO_ENGINE_LANG_DEFINE_TYPE(name, prefix, class_init, instance_init) \ + PANGO_ENGINE_DEFINE_TYPE (name, prefix, \ + class_init, instance_init, \ + PANGO_TYPE_ENGINE_LANG) + +/** + * PANGO_ENGINE_SHAPE_DEFINE_TYPE: + * @name: Name of the the type to register (for example:, ArabicEngineFc) + * @prefix: Prefix for symbols that will be defined (for example:, arabic_engine_fc) + * @class_init: (nullable): Class initialization function for the new type + * @instance_init: (nullable): Instance initialization function for the new type + * + * Outputs the necessary code for GObject type registration for a + * `PangoEngineShape` class defined in a module. Two static symbols + * are defined. + * + * + * static GType *prefix*_type; + * static void *prefix*_register_type (GTypeModule module); + * + * + * The *prefix*_register_type() + * function should be called in your script_engine_init() function for + * each type that your module implements, and then your script_engine_create() + * function can create instances of the object as follows: + * + * ``` + * PangoEngine *engine = g_object_new (prefix_type, NULL); + * ``` + * + * Deprecated: 1.38 + **/ +#define PANGO_ENGINE_SHAPE_DEFINE_TYPE(name, prefix, class_init, instance_init) \ + PANGO_ENGINE_DEFINE_TYPE (name, prefix, \ + class_init, instance_init, \ + PANGO_TYPE_ENGINE_SHAPE) + +/* Macro used for possibly builtin Pango modules. Not useful + * for externally build modules. If we are compiling a module standalone, + * then we name the entry points script_engine_list, etc. But if we + * are compiling it for inclusion directly in Pango, then we need them to + * to have distinct names for this module, so we prepend a prefix. + * + * The two intermediate macros are to deal with details of the C + * preprocessor; token pasting tokens must be function arguments, + * and macro substitution isn't used on function arguments that + * are used for token pasting. + */ +#ifdef PANGO_MODULE_PREFIX +#define PANGO_MODULE_ENTRY(func) _PANGO_MODULE_ENTRY2(PANGO_MODULE_PREFIX,func) +#define _PANGO_MODULE_ENTRY2(prefix,func) _PANGO_MODULE_ENTRY3(prefix,func) +#define _PANGO_MODULE_ENTRY3(prefix,func) prefix##_script_engine_##func +#else +#define PANGO_MODULE_ENTRY(func) script_engine_##func +#endif + +#endif /* PANGO_DISABLE_DEPRECATED */ + +#endif /* __GI_SCANNER__ */ + +G_END_DECLS + +#endif /* __PANGO_ENGINE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-enum-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-enum-types.h new file mode 100644 index 0000000..7e65f3f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-enum-types.h @@ -0,0 +1,120 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +#ifndef __PANGO_ENUM_TYPES_H__ +#define __PANGO_ENUM_TYPES_H__ + +#include + +#include + +G_BEGIN_DECLS + +/* enumerations from "pango-attributes.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_attr_type_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_ATTR_TYPE (pango_attr_type_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_underline_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_UNDERLINE (pango_underline_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_overline_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_OVERLINE (pango_overline_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_show_flags_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_SHOW_FLAGS (pango_show_flags_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_text_transform_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_TEXT_TRANSFORM (pango_text_transform_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_baseline_shift_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_BASELINE_SHIFT (pango_baseline_shift_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_font_scale_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_FONT_SCALE (pango_font_scale_get_type ()) + +/* enumerations from "pango-bidi-type.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_bidi_type_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_BIDI_TYPE (pango_bidi_type_get_type ()) + +/* enumerations from "pango-coverage.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_coverage_level_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_COVERAGE_LEVEL (pango_coverage_level_get_type ()) + +/* enumerations from "pango-direction.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_direction_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_DIRECTION (pango_direction_get_type ()) + +/* enumerations from "pango-font.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_style_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_STYLE (pango_style_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_variant_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_VARIANT (pango_variant_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_weight_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_WEIGHT (pango_weight_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_stretch_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_STRETCH (pango_stretch_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_font_mask_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_FONT_MASK (pango_font_mask_get_type ()) + +/* enumerations from "pango-glyph.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_shape_flags_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_SHAPE_FLAGS (pango_shape_flags_get_type ()) + +/* enumerations from "pango-gravity.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_gravity_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_GRAVITY (pango_gravity_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_gravity_hint_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_GRAVITY_HINT (pango_gravity_hint_get_type ()) + +/* enumerations from "pango-layout.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_alignment_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_ALIGNMENT (pango_alignment_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_wrap_mode_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_WRAP_MODE (pango_wrap_mode_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_ellipsize_mode_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_ELLIPSIZE_MODE (pango_ellipsize_mode_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_layout_serialize_flags_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_LAYOUT_SERIALIZE_FLAGS (pango_layout_serialize_flags_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_layout_deserialize_error_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_LAYOUT_DESERIALIZE_ERROR (pango_layout_deserialize_error_get_type ()) +PANGO_AVAILABLE_IN_ALL +GType pango_layout_deserialize_flags_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_LAYOUT_DESERIALIZE_FLAGS (pango_layout_deserialize_flags_get_type ()) + +/* enumerations from "pango-renderer.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_render_part_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_RENDER_PART (pango_render_part_get_type ()) + +/* enumerations from "pango-script.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_script_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_SCRIPT (pango_script_get_type ()) + +/* enumerations from "pango-tabs.h" */ +PANGO_AVAILABLE_IN_ALL +GType pango_tab_align_get_type (void) G_GNUC_CONST; +#define PANGO_TYPE_TAB_ALIGN (pango_tab_align_get_type ()) +G_END_DECLS + +#endif /* __PANGO_ENUM_TYPES_H__ */ + +/* Generated data ends here */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-features.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-features.h new file mode 100644 index 0000000..ed3e8de --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-features.h @@ -0,0 +1,10 @@ +#ifndef PANGO_FEATURES_H +#define PANGO_FEATURES_H + +#define PANGO_VERSION_MAJOR 1 +#define PANGO_VERSION_MINOR 50 +#define PANGO_VERSION_MICRO 11 + +#define PANGO_VERSION_STRING "1.50.11" + +#endif /* PANGO_FEATURES_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-font.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-font.h new file mode 100644 index 0000000..9fc63b3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-font.h @@ -0,0 +1,699 @@ +/* Pango + * pango-font.h: Font handling + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_FONT_H__ +#define __PANGO_FONT_H__ + +#include +#include + +#include +#include + +G_BEGIN_DECLS + +/** + * PangoFontDescription: + * + * A `PangoFontDescription` describes a font in an implementation-independent + * manner. + * + * `PangoFontDescription` structures are used both to list what fonts are + * available on the system and also for specifying the characteristics of + * a font to load. + */ +typedef struct _PangoFontDescription PangoFontDescription; + +/** + * PangoFontMetrics: + * + * A `PangoFontMetrics` structure holds the overall metric information + * for a font. + * + * The information in a `PangoFontMetrics` structure may be restricted + * to a script. The fields of this structure are private to implementations + * of a font backend. See the documentation of the corresponding getters + * for documentation of their meaning. + * + * For an overview of the most important metrics, see: + * + * + * + * Font metrics + * + + */ +typedef struct _PangoFontMetrics PangoFontMetrics; + +/** + * PangoStyle: + * @PANGO_STYLE_NORMAL: the font is upright. + * @PANGO_STYLE_OBLIQUE: the font is slanted, but in a roman style. + * @PANGO_STYLE_ITALIC: the font is slanted in an italic style. + * + * An enumeration specifying the various slant styles possible for a font. + **/ +typedef enum { + PANGO_STYLE_NORMAL, + PANGO_STYLE_OBLIQUE, + PANGO_STYLE_ITALIC +} PangoStyle; + +/** + * PangoVariant: + * @PANGO_VARIANT_NORMAL: A normal font. + * @PANGO_VARIANT_SMALL_CAPS: A font with the lower case characters + * replaced by smaller variants of the capital characters. + * @PANGO_VARIANT_ALL_SMALL_CAPS: A font with all characters + * replaced by smaller variants of the capital characters. Since: 1.50 + * @PANGO_VARIANT_PETITE_CAPS: A font with the lower case characters + * replaced by smaller variants of the capital characters. + * Petite Caps can be even smaller than Small Caps. Since: 1.50 + * @PANGO_VARIANT_ALL_PETITE_CAPS: A font with all characters + * replaced by smaller variants of the capital characters. + * Petite Caps can be even smaller than Small Caps. Since: 1.50 + * @PANGO_VARIANT_UNICASE: A font with the upper case characters + * replaced by smaller variants of the capital letters. Since: 1.50 + * @PANGO_VARIANT_TITLE_CAPS: A font with capital letters that + * are more suitable for all-uppercase titles. Since: 1.50 + * + * An enumeration specifying capitalization variant of the font. + */ +typedef enum { + PANGO_VARIANT_NORMAL, + PANGO_VARIANT_SMALL_CAPS, + PANGO_VARIANT_ALL_SMALL_CAPS, + PANGO_VARIANT_PETITE_CAPS, + PANGO_VARIANT_ALL_PETITE_CAPS, + PANGO_VARIANT_UNICASE, + PANGO_VARIANT_TITLE_CAPS +} PangoVariant; + +/** + * PangoWeight: + * @PANGO_WEIGHT_THIN: the thin weight (= 100) Since: 1.24 + * @PANGO_WEIGHT_ULTRALIGHT: the ultralight weight (= 200) + * @PANGO_WEIGHT_LIGHT: the light weight (= 300) + * @PANGO_WEIGHT_SEMILIGHT: the semilight weight (= 350) Since: 1.36.7 + * @PANGO_WEIGHT_BOOK: the book weight (= 380) Since: 1.24) + * @PANGO_WEIGHT_NORMAL: the default weight (= 400) + * @PANGO_WEIGHT_MEDIUM: the medium weight (= 500) Since: 1.24 + * @PANGO_WEIGHT_SEMIBOLD: the semibold weight (= 600) + * @PANGO_WEIGHT_BOLD: the bold weight (= 700) + * @PANGO_WEIGHT_ULTRABOLD: the ultrabold weight (= 800) + * @PANGO_WEIGHT_HEAVY: the heavy weight (= 900) + * @PANGO_WEIGHT_ULTRAHEAVY: the ultraheavy weight (= 1000) Since: 1.24 + * + * An enumeration specifying the weight (boldness) of a font. + * + * Weight is specified as a numeric value ranging from 100 to 1000. + * This enumeration simply provides some common, predefined values. + */ +typedef enum { + PANGO_WEIGHT_THIN = 100, + PANGO_WEIGHT_ULTRALIGHT = 200, + PANGO_WEIGHT_LIGHT = 300, + PANGO_WEIGHT_SEMILIGHT = 350, + PANGO_WEIGHT_BOOK = 380, + PANGO_WEIGHT_NORMAL = 400, + PANGO_WEIGHT_MEDIUM = 500, + PANGO_WEIGHT_SEMIBOLD = 600, + PANGO_WEIGHT_BOLD = 700, + PANGO_WEIGHT_ULTRABOLD = 800, + PANGO_WEIGHT_HEAVY = 900, + PANGO_WEIGHT_ULTRAHEAVY = 1000 +} PangoWeight; + +/** + * PangoStretch: + * @PANGO_STRETCH_ULTRA_CONDENSED: ultra condensed width + * @PANGO_STRETCH_EXTRA_CONDENSED: extra condensed width + * @PANGO_STRETCH_CONDENSED: condensed width + * @PANGO_STRETCH_SEMI_CONDENSED: semi condensed width + * @PANGO_STRETCH_NORMAL: the normal width + * @PANGO_STRETCH_SEMI_EXPANDED: semi expanded width + * @PANGO_STRETCH_EXPANDED: expanded width + * @PANGO_STRETCH_EXTRA_EXPANDED: extra expanded width + * @PANGO_STRETCH_ULTRA_EXPANDED: ultra expanded width + * + * An enumeration specifying the width of the font relative to other designs + * within a family. + */ +typedef enum { + PANGO_STRETCH_ULTRA_CONDENSED, + PANGO_STRETCH_EXTRA_CONDENSED, + PANGO_STRETCH_CONDENSED, + PANGO_STRETCH_SEMI_CONDENSED, + PANGO_STRETCH_NORMAL, + PANGO_STRETCH_SEMI_EXPANDED, + PANGO_STRETCH_EXPANDED, + PANGO_STRETCH_EXTRA_EXPANDED, + PANGO_STRETCH_ULTRA_EXPANDED +} PangoStretch; + +/** + * PangoFontMask: + * @PANGO_FONT_MASK_FAMILY: the font family is specified. + * @PANGO_FONT_MASK_STYLE: the font style is specified. + * @PANGO_FONT_MASK_VARIANT: the font variant is specified. + * @PANGO_FONT_MASK_WEIGHT: the font weight is specified. + * @PANGO_FONT_MASK_STRETCH: the font stretch is specified. + * @PANGO_FONT_MASK_SIZE: the font size is specified. + * @PANGO_FONT_MASK_GRAVITY: the font gravity is specified (Since: 1.16.) + * @PANGO_FONT_MASK_VARIATIONS: OpenType font variations are specified (Since: 1.42) + * + * The bits in a `PangoFontMask` correspond to the set fields in a + * `PangoFontDescription`. + */ +typedef enum { + PANGO_FONT_MASK_FAMILY = 1 << 0, + PANGO_FONT_MASK_STYLE = 1 << 1, + PANGO_FONT_MASK_VARIANT = 1 << 2, + PANGO_FONT_MASK_WEIGHT = 1 << 3, + PANGO_FONT_MASK_STRETCH = 1 << 4, + PANGO_FONT_MASK_SIZE = 1 << 5, + PANGO_FONT_MASK_GRAVITY = 1 << 6, + PANGO_FONT_MASK_VARIATIONS = 1 << 7, +} PangoFontMask; + +/* CSS scale factors (1.2 factor between each size) */ +/** + * PANGO_SCALE_XX_SMALL: + * + * The scale factor for three shrinking steps (1 / (1.2 * 1.2 * 1.2)). + */ +/** + * PANGO_SCALE_X_SMALL: + * + * The scale factor for two shrinking steps (1 / (1.2 * 1.2)). + */ +/** + * PANGO_SCALE_SMALL: + * + * The scale factor for one shrinking step (1 / 1.2). + */ +/** + * PANGO_SCALE_MEDIUM: + * + * The scale factor for normal size (1.0). + */ +/** + * PANGO_SCALE_LARGE: + * + * The scale factor for one magnification step (1.2). + */ +/** + * PANGO_SCALE_X_LARGE: + * + * The scale factor for two magnification steps (1.2 * 1.2). + */ +/** + * PANGO_SCALE_XX_LARGE: + * + * The scale factor for three magnification steps (1.2 * 1.2 * 1.2). + */ +#define PANGO_SCALE_XX_SMALL ((double)0.5787037037037) +#define PANGO_SCALE_X_SMALL ((double)0.6944444444444) +#define PANGO_SCALE_SMALL ((double)0.8333333333333) +#define PANGO_SCALE_MEDIUM ((double)1.0) +#define PANGO_SCALE_LARGE ((double)1.2) +#define PANGO_SCALE_X_LARGE ((double)1.44) +#define PANGO_SCALE_XX_LARGE ((double)1.728) + +/* + * PangoFontDescription + */ + +#define PANGO_TYPE_FONT_DESCRIPTION (pango_font_description_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_font_description_get_type (void) G_GNUC_CONST; +PANGO_AVAILABLE_IN_ALL +PangoFontDescription *pango_font_description_new (void); +PANGO_AVAILABLE_IN_ALL +PangoFontDescription *pango_font_description_copy (const PangoFontDescription *desc); +PANGO_AVAILABLE_IN_ALL +PangoFontDescription *pango_font_description_copy_static (const PangoFontDescription *desc); +PANGO_AVAILABLE_IN_ALL +guint pango_font_description_hash (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +gboolean pango_font_description_equal (const PangoFontDescription *desc1, + const PangoFontDescription *desc2) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +void pango_font_description_free (PangoFontDescription *desc); +PANGO_AVAILABLE_IN_ALL +void pango_font_descriptions_free (PangoFontDescription **descs, + int n_descs); + +PANGO_AVAILABLE_IN_ALL +void pango_font_description_set_family (PangoFontDescription *desc, + const char *family); +PANGO_AVAILABLE_IN_ALL +void pango_font_description_set_family_static (PangoFontDescription *desc, + const char *family); +PANGO_AVAILABLE_IN_ALL +const char *pango_font_description_get_family (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +void pango_font_description_set_style (PangoFontDescription *desc, + PangoStyle style); +PANGO_AVAILABLE_IN_ALL +PangoStyle pango_font_description_get_style (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +void pango_font_description_set_variant (PangoFontDescription *desc, + PangoVariant variant); +PANGO_AVAILABLE_IN_ALL +PangoVariant pango_font_description_get_variant (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +void pango_font_description_set_weight (PangoFontDescription *desc, + PangoWeight weight); +PANGO_AVAILABLE_IN_ALL +PangoWeight pango_font_description_get_weight (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +void pango_font_description_set_stretch (PangoFontDescription *desc, + PangoStretch stretch); +PANGO_AVAILABLE_IN_ALL +PangoStretch pango_font_description_get_stretch (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +void pango_font_description_set_size (PangoFontDescription *desc, + gint size); +PANGO_AVAILABLE_IN_ALL +gint pango_font_description_get_size (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_8 +void pango_font_description_set_absolute_size (PangoFontDescription *desc, + double size); +PANGO_AVAILABLE_IN_1_8 +gboolean pango_font_description_get_size_is_absolute (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_16 +void pango_font_description_set_gravity (PangoFontDescription *desc, + PangoGravity gravity); +PANGO_AVAILABLE_IN_1_16 +PangoGravity pango_font_description_get_gravity (const PangoFontDescription *desc) G_GNUC_PURE; + +PANGO_AVAILABLE_IN_1_42 +void pango_font_description_set_variations_static (PangoFontDescription *desc, + const char *variations); +PANGO_AVAILABLE_IN_1_42 +void pango_font_description_set_variations (PangoFontDescription *desc, + const char *variations); +PANGO_AVAILABLE_IN_1_42 +const char *pango_font_description_get_variations (const PangoFontDescription *desc) G_GNUC_PURE; + +PANGO_AVAILABLE_IN_ALL +PangoFontMask pango_font_description_get_set_fields (const PangoFontDescription *desc) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +void pango_font_description_unset_fields (PangoFontDescription *desc, + PangoFontMask to_unset); + +PANGO_AVAILABLE_IN_ALL +void pango_font_description_merge (PangoFontDescription *desc, + const PangoFontDescription *desc_to_merge, + gboolean replace_existing); +PANGO_AVAILABLE_IN_ALL +void pango_font_description_merge_static (PangoFontDescription *desc, + const PangoFontDescription *desc_to_merge, + gboolean replace_existing); + +PANGO_AVAILABLE_IN_ALL +gboolean pango_font_description_better_match (const PangoFontDescription *desc, + const PangoFontDescription *old_match, + const PangoFontDescription *new_match) G_GNUC_PURE; + +PANGO_AVAILABLE_IN_ALL +PangoFontDescription *pango_font_description_from_string (const char *str); +PANGO_AVAILABLE_IN_ALL +char * pango_font_description_to_string (const PangoFontDescription *desc); +PANGO_AVAILABLE_IN_ALL +char * pango_font_description_to_filename (const PangoFontDescription *desc); + +/* + * PangoFontMetrics + */ + +#define PANGO_TYPE_FONT_METRICS (pango_font_metrics_get_type ()) + +struct _PangoFontMetrics +{ + /* */ + guint ref_count; + + int ascent; + int descent; + int height; + int approximate_char_width; + int approximate_digit_width; + int underline_position; + int underline_thickness; + int strikethrough_position; + int strikethrough_thickness; +}; + +PANGO_AVAILABLE_IN_ALL +GType pango_font_metrics_get_type (void) G_GNUC_CONST; +PANGO_AVAILABLE_IN_ALL +PangoFontMetrics *pango_font_metrics_ref (PangoFontMetrics *metrics); +PANGO_AVAILABLE_IN_ALL +void pango_font_metrics_unref (PangoFontMetrics *metrics); +PANGO_AVAILABLE_IN_ALL +int pango_font_metrics_get_ascent (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +int pango_font_metrics_get_descent (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_44 +int pango_font_metrics_get_height (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +int pango_font_metrics_get_approximate_char_width (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_ALL +int pango_font_metrics_get_approximate_digit_width (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_6 +int pango_font_metrics_get_underline_position (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_6 +int pango_font_metrics_get_underline_thickness (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_6 +int pango_font_metrics_get_strikethrough_position (PangoFontMetrics *metrics) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_6 +int pango_font_metrics_get_strikethrough_thickness (PangoFontMetrics *metrics) G_GNUC_PURE; + + +/* + * PangoFontFamily + */ + +#define PANGO_TYPE_FONT_FAMILY (pango_font_family_get_type ()) +#define PANGO_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FAMILY, PangoFontFamily)) +#define PANGO_IS_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FAMILY)) +#define PANGO_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass)) +#define PANGO_IS_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FAMILY)) +#define PANGO_FONT_FAMILY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass)) + +typedef struct _PangoFontFace PangoFontFace; +typedef struct _PangoFontFamily PangoFontFamily; +typedef struct _PangoFontFamilyClass PangoFontFamilyClass; + +#ifndef PANGO_DISABLE_DEPRECATED + +/** + * PangoFontFamily: + * + * A `PangoFontFamily` is used to represent a family of related + * font faces. + * + * The font faces in a family share a common design, but differ in + * slant, weight, width or other aspects. + */ +struct _PangoFontFamily +{ + GObject parent_instance; +}; + +struct _PangoFontFamilyClass +{ + GObjectClass parent_class; + + /*< public >*/ + + void (*list_faces) (PangoFontFamily *family, + PangoFontFace ***faces, + int *n_faces); + const char * (*get_name) (PangoFontFamily *family); + gboolean (*is_monospace) (PangoFontFamily *family); + gboolean (*is_variable) (PangoFontFamily *family); + + PangoFontFace * (*get_face) (PangoFontFamily *family, + const char *name); + + + /*< private >*/ + + /* Padding for future expansion */ + void (*_pango_reserved2) (void); +}; + +#endif /* PANGO_DISABLE_DEPRECATED */ + +PANGO_AVAILABLE_IN_ALL +GType pango_font_family_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +void pango_font_family_list_faces (PangoFontFamily *family, + PangoFontFace ***faces, + int *n_faces); +PANGO_AVAILABLE_IN_ALL +const char *pango_font_family_get_name (PangoFontFamily *family) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_4 +gboolean pango_font_family_is_monospace (PangoFontFamily *family) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_44 +gboolean pango_font_family_is_variable (PangoFontFamily *family) G_GNUC_PURE; + +PANGO_AVAILABLE_IN_1_46 +PangoFontFace *pango_font_family_get_face (PangoFontFamily *family, + const char *name); + + +/* + * PangoFontFace + */ + +#define PANGO_TYPE_FONT_FACE (pango_font_face_get_type ()) +#define PANGO_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FACE, PangoFontFace)) +#define PANGO_IS_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FACE)) +#define PANGO_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FACE, PangoFontFaceClass)) +#define PANGO_IS_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FACE)) +#define PANGO_FONT_FACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FACE, PangoFontFaceClass)) + +typedef struct _PangoFontFaceClass PangoFontFaceClass; + +#ifndef PANGO_DISABLE_DEPRECATED + +/** + * PangoFontFace: + * + * A `PangoFontFace` is used to represent a group of fonts with + * the same family, slant, weight, and width, but varying sizes. + */ +struct _PangoFontFace +{ + GObject parent_instance; +}; + +struct _PangoFontFaceClass +{ + GObjectClass parent_class; + + /*< public >*/ + + const char * (*get_face_name) (PangoFontFace *face); + PangoFontDescription * (*describe) (PangoFontFace *face); + void (*list_sizes) (PangoFontFace *face, + int **sizes, + int *n_sizes); + gboolean (*is_synthesized) (PangoFontFace *face); + PangoFontFamily * (*get_family) (PangoFontFace *face); + + /*< private >*/ + + /* Padding for future expansion */ + void (*_pango_reserved3) (void); + void (*_pango_reserved4) (void); +}; + +#endif /* PANGO_DISABLE_DEPRECATED */ + +PANGO_AVAILABLE_IN_ALL +GType pango_font_face_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoFontDescription *pango_font_face_describe (PangoFontFace *face); +PANGO_AVAILABLE_IN_ALL +const char *pango_font_face_get_face_name (PangoFontFace *face) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_4 +void pango_font_face_list_sizes (PangoFontFace *face, + int **sizes, + int *n_sizes); +PANGO_AVAILABLE_IN_1_18 +gboolean pango_font_face_is_synthesized (PangoFontFace *face) G_GNUC_PURE; + +PANGO_AVAILABLE_IN_1_46 +PangoFontFamily * pango_font_face_get_family (PangoFontFace *face); + + +/* + * PangoFont + */ + +#define PANGO_TYPE_FONT (pango_font_get_type ()) +#define PANGO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT, PangoFont)) +#define PANGO_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT)) +#define PANGO_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT, PangoFontClass)) +#define PANGO_IS_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT)) +#define PANGO_FONT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT, PangoFontClass)) + + +#ifndef PANGO_DISABLE_DEPRECATED + +/** + * PangoFont: + * + * A `PangoFont` is used to represent a font in a + * rendering-system-independent manner. + */ +struct _PangoFont +{ + GObject parent_instance; +}; + +typedef struct _PangoFontClass PangoFontClass; +struct _PangoFontClass +{ + GObjectClass parent_class; + + /*< public >*/ + + PangoFontDescription *(*describe) (PangoFont *font); + PangoCoverage * (*get_coverage) (PangoFont *font, + PangoLanguage *language); + void (*get_glyph_extents) (PangoFont *font, + PangoGlyph glyph, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + PangoFontMetrics * (*get_metrics) (PangoFont *font, + PangoLanguage *language); + PangoFontMap * (*get_font_map) (PangoFont *font); + PangoFontDescription *(*describe_absolute) (PangoFont *font); + void (*get_features) (PangoFont *font, + hb_feature_t *features, + guint len, + guint *num_features); + hb_font_t * (*create_hb_font) (PangoFont *font); +}; + +#endif /* PANGO_DISABLE_DEPRECATED */ + +PANGO_AVAILABLE_IN_ALL +GType pango_font_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoFontDescription *pango_font_describe (PangoFont *font); +PANGO_AVAILABLE_IN_1_14 +PangoFontDescription *pango_font_describe_with_absolute_size (PangoFont *font); +PANGO_AVAILABLE_IN_ALL +PangoCoverage * pango_font_get_coverage (PangoFont *font, + PangoLanguage *language); +#ifndef __GI_SCANNER__ +PANGO_DEPRECATED_IN_1_44 +PangoEngineShape * pango_font_find_shaper (PangoFont *font, + PangoLanguage *language, + guint32 ch); +#endif +PANGO_AVAILABLE_IN_ALL +PangoFontMetrics * pango_font_get_metrics (PangoFont *font, + PangoLanguage *language); +PANGO_AVAILABLE_IN_ALL +void pango_font_get_glyph_extents (PangoFont *font, + PangoGlyph glyph, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_1_10 +PangoFontMap *pango_font_get_font_map (PangoFont *font); + +PANGO_AVAILABLE_IN_1_46 +PangoFontFace * pango_font_get_face (PangoFont *font); + +PANGO_AVAILABLE_IN_1_44 +gboolean pango_font_has_char (PangoFont *font, + gunichar wc); +PANGO_AVAILABLE_IN_1_44 +void pango_font_get_features (PangoFont *font, + hb_feature_t *features, + guint len, + guint *num_features); +PANGO_AVAILABLE_IN_1_44 +hb_font_t * pango_font_get_hb_font (PangoFont *font); + +PANGO_AVAILABLE_IN_1_50 +PangoLanguage ** pango_font_get_languages (PangoFont *font); + +PANGO_AVAILABLE_IN_1_50 +GBytes * pango_font_serialize (PangoFont *font); + +PANGO_AVAILABLE_IN_1_50 +PangoFont * pango_font_deserialize (PangoContext *context, + GBytes *bytes, + GError **error); + +/** + * PANGO_GLYPH_EMPTY: + * + * A `PangoGlyph` value that indicates a zero-width empty glpyh. + * + * This is useful for example in shaper modules, to use as the glyph for + * various zero-width Unicode characters (those passing [func@is_zero_width]). + */ + +/** + * PANGO_GLYPH_INVALID_INPUT: + * + * A `PangoGlyph` value for invalid input. + * + * `PangoLayout` produces one such glyph per invalid input UTF-8 byte and such + * a glyph is rendered as a crossed box. + * + * Note that this value is defined such that it has the %PANGO_GLYPH_UNKNOWN_FLAG + * set. + * + * Since: 1.20 + */ +/** + * PANGO_GLYPH_UNKNOWN_FLAG: + * + * Flag used in `PangoGlyph` to turn a `gunichar` value of a valid Unicode + * character into an unknown-character glyph for that `gunichar`. + * + * Such unknown-character glyphs may be rendered as a 'hex box'. + */ +/** + * PANGO_GET_UNKNOWN_GLYPH: + * @wc: a Unicode character + * + * The way this unknown glyphs are rendered is backend specific. For example, + * a box with the hexadecimal Unicode code-point of the character written in it + * is what is done in the most common backends. + * + * Returns: a `PangoGlyph` value that means no glyph was found for @wc. + */ +#define PANGO_GLYPH_EMPTY ((PangoGlyph)0x0FFFFFFF) +#define PANGO_GLYPH_INVALID_INPUT ((PangoGlyph)0xFFFFFFFF) +#define PANGO_GLYPH_UNKNOWN_FLAG ((PangoGlyph)0x10000000) +#define PANGO_GET_UNKNOWN_GLYPH(wc) ((PangoGlyph)(wc)|PANGO_GLYPH_UNKNOWN_FLAG) + +#ifndef __GI_SCANNER__ +#ifndef PANGO_DISABLE_DEPRECATED +#define PANGO_UNKNOWN_GLYPH_WIDTH 10 +#define PANGO_UNKNOWN_GLYPH_HEIGHT 14 +#endif +#endif + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoFontFamily, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoFontFace, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoFont, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoFontDescription, pango_font_description_free) + +G_END_DECLS + +#endif /* __PANGO_FONT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontmap.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontmap.h new file mode 100644 index 0000000..cc85899 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontmap.h @@ -0,0 +1,132 @@ +/* Pango + * pango-font.h: Font handling + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_FONTMAP_H__ +#define __PANGO_FONTMAP_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +#define PANGO_TYPE_FONT_MAP (pango_font_map_get_type ()) +#define PANGO_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_MAP, PangoFontMap)) +#define PANGO_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_MAP)) +#define PANGO_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_MAP, PangoFontMapClass)) +#define PANGO_IS_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_MAP)) +#define PANGO_FONT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_MAP, PangoFontMapClass)) + +typedef struct _PangoFontMapClass PangoFontMapClass; + +/** + * PangoFontMap: + * + * A `PangoFontMap` represents the set of fonts available for a + * particular rendering system. + * + * This is a virtual object with implementations being specific to + * particular rendering systems. + */ +struct _PangoFontMap +{ + GObject parent_instance; +}; + +/** + * PangoFontMapClass: + * @parent_class: parent `GObjectClass` + * @load_font: a function to load a font with a given description. See + * pango_font_map_load_font(). + * @list_families: A function to list available font families. See + * pango_font_map_list_families(). + * @load_fontset: a function to load a fontset with a given given description + * suitable for a particular language. See pango_font_map_load_fontset(). + * @shape_engine_type: the type of rendering-system-dependent engines that + * can handle fonts of this fonts loaded with this fontmap. + * @get_serial: a function to get the serial number of the fontmap. + * See pango_font_map_get_serial(). + * @changed: See pango_font_map_changed() + * + * The `PangoFontMapClass` structure holds the virtual functions for + * a particular `PangoFontMap` implementation. + */ +struct _PangoFontMapClass +{ + GObjectClass parent_class; + + /*< public >*/ + + PangoFont * (*load_font) (PangoFontMap *fontmap, + PangoContext *context, + const PangoFontDescription *desc); + void (*list_families) (PangoFontMap *fontmap, + PangoFontFamily ***families, + int *n_families); + PangoFontset *(*load_fontset) (PangoFontMap *fontmap, + PangoContext *context, + const PangoFontDescription *desc, + PangoLanguage *language); + + const char *shape_engine_type; + + guint (*get_serial) (PangoFontMap *fontmap); + void (*changed) (PangoFontMap *fontmap); + + PangoFontFamily * (*get_family) (PangoFontMap *fontmap, + const char *name); + + PangoFontFace * (*get_face) (PangoFontMap *fontmap, + PangoFont *font); +}; + +PANGO_AVAILABLE_IN_ALL +GType pango_font_map_get_type (void) G_GNUC_CONST; +PANGO_AVAILABLE_IN_1_22 +PangoContext * pango_font_map_create_context (PangoFontMap *fontmap); +PANGO_AVAILABLE_IN_ALL +PangoFont * pango_font_map_load_font (PangoFontMap *fontmap, + PangoContext *context, + const PangoFontDescription *desc); +PANGO_AVAILABLE_IN_ALL +PangoFontset *pango_font_map_load_fontset (PangoFontMap *fontmap, + PangoContext *context, + const PangoFontDescription *desc, + PangoLanguage *language); +PANGO_AVAILABLE_IN_ALL +void pango_font_map_list_families (PangoFontMap *fontmap, + PangoFontFamily ***families, + int *n_families); +PANGO_AVAILABLE_IN_1_32 +guint pango_font_map_get_serial (PangoFontMap *fontmap); +PANGO_AVAILABLE_IN_1_34 +void pango_font_map_changed (PangoFontMap *fontmap); + +PANGO_AVAILABLE_IN_1_46 +PangoFontFamily *pango_font_map_get_family (PangoFontMap *fontmap, + const char *name); + + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoFontMap, g_object_unref) + +G_END_DECLS + +#endif /* __PANGO_FONTMAP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontset-simple.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontset-simple.h new file mode 100644 index 0000000..adbbf0a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontset-simple.h @@ -0,0 +1,64 @@ +/* Pango + * pango-fontset-simple.h: Font set handling + * + * Copyright (C) 2001 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_FONTSET_SIMPLE_H__ +#define __PANGO_FONTSET_SIMPLE_H__ + +#include +#include +#include + +#include + +G_BEGIN_DECLS + +/** + * PangoFontsetSimple: + * + * `PangoFontsetSimple` is a implementation of the abstract + * `PangoFontset` base class as an array of fonts. + * + * When creating a `PangoFontsetSimple`, you have to provide + * the array of fonts that make up the fontset. + */ +#define PANGO_TYPE_FONTSET_SIMPLE (pango_fontset_simple_get_type ()) +#define PANGO_FONTSET_SIMPLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONTSET_SIMPLE, PangoFontsetSimple)) +#define PANGO_IS_FONTSET_SIMPLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONTSET_SIMPLE)) + +typedef struct _PangoFontsetSimple PangoFontsetSimple; +typedef struct _PangoFontsetSimpleClass PangoFontsetSimpleClass; + + +PANGO_AVAILABLE_IN_ALL +GType pango_fontset_simple_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoFontsetSimple * pango_fontset_simple_new (PangoLanguage *language); +PANGO_AVAILABLE_IN_ALL +void pango_fontset_simple_append (PangoFontsetSimple *fontset, + PangoFont *font); +PANGO_AVAILABLE_IN_ALL +int pango_fontset_simple_size (PangoFontsetSimple *fontset); + + +G_END_DECLS + +#endif /* __PANGO_FONTSET_SIMPLE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontset.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontset.h new file mode 100644 index 0000000..0a22215 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-fontset.h @@ -0,0 +1,134 @@ +/* Pango + * pango-fontset.h: Font set handling + * + * Copyright (C) 2001 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_FONTSET_H__ +#define __PANGO_FONTSET_H__ + +#include +#include + +#include + +G_BEGIN_DECLS + +/* + * PangoFontset + */ + +#define PANGO_TYPE_FONTSET (pango_fontset_get_type ()) +#define PANGO_FONTSET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONTSET, PangoFontset)) +#define PANGO_IS_FONTSET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONTSET)) +#define PANGO_FONTSET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONTSET, PangoFontsetClass)) +#define PANGO_IS_FONTSET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONTSET)) +#define PANGO_FONTSET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONTSET, PangoFontsetClass)) + + +PANGO_AVAILABLE_IN_ALL +GType pango_fontset_get_type (void) G_GNUC_CONST; + +typedef struct _PangoFontset PangoFontset; +typedef struct _PangoFontsetClass PangoFontsetClass; + +/** + * PangoFontsetForeachFunc: + * @fontset: a `PangoFontset` + * @font: a font from @fontset + * @user_data: callback data + * + * Callback used when enumerating fonts in a fontset. + * + * See [method@Pango.Fontset.foreach]. + * + * Returns: if %TRUE, stop iteration and return immediately. + * + * Since: 1.4 + */ +typedef gboolean (*PangoFontsetForeachFunc) (PangoFontset *fontset, + PangoFont *font, + gpointer user_data); + +/** + * PangoFontset: + * + * A `PangoFontset` represents a set of `PangoFont` to use when rendering text. + * + * A `PangoFontset` is the result of resolving a `PangoFontDescription` + * against a particular `PangoContext`. It has operations for finding the + * component font for a particular Unicode character, and for finding a + * composite set of metrics for the entire fontset. + */ +struct _PangoFontset +{ + GObject parent_instance; +}; + +/** + * PangoFontsetClass: + * @parent_class: parent `GObjectClass` + * @get_font: a function to get the font in the fontset that contains the + * best glyph for the given Unicode character; see [method@Pango.Fontset.get_font] + * @get_metrics: a function to get overall metric information for the fonts + * in the fontset; see [method@Pango.Fontset.get_metrics] + * @get_language: a function to get the language of the fontset. + * @foreach: a function to loop over the fonts in the fontset. See + * [method@Pango.Fontset.foreach] + * + * The `PangoFontsetClass` structure holds the virtual functions for + * a particular `PangoFontset` implementation. + */ +struct _PangoFontsetClass +{ + GObjectClass parent_class; + + /*< public >*/ + + PangoFont * (*get_font) (PangoFontset *fontset, + guint wc); + + PangoFontMetrics *(*get_metrics) (PangoFontset *fontset); + PangoLanguage * (*get_language) (PangoFontset *fontset); + void (*foreach) (PangoFontset *fontset, + PangoFontsetForeachFunc func, + gpointer data); + + /*< private >*/ + + /* Padding for future expansion */ + void (*_pango_reserved1) (void); + void (*_pango_reserved2) (void); + void (*_pango_reserved3) (void); + void (*_pango_reserved4) (void); +}; + +PANGO_AVAILABLE_IN_ALL +PangoFont * pango_fontset_get_font (PangoFontset *fontset, + guint wc); +PANGO_AVAILABLE_IN_ALL +PangoFontMetrics * pango_fontset_get_metrics (PangoFontset *fontset); +PANGO_AVAILABLE_IN_1_4 +void pango_fontset_foreach (PangoFontset *fontset, + PangoFontsetForeachFunc func, + gpointer data); + + +G_END_DECLS + +#endif /* __PANGO_FONTSET_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-glyph-item.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-glyph-item.h new file mode 100644 index 0000000..fd8951d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-glyph-item.h @@ -0,0 +1,175 @@ +/* Pango + * pango-glyph-item.h: Pair of PangoItem and a glyph string + * + * Copyright (C) 2002 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_GLYPH_ITEM_H__ +#define __PANGO_GLYPH_ITEM_H__ + +#include +#include +#include +#include + +G_BEGIN_DECLS + +/** + * PangoGlyphItem: + * @item: corresponding `PangoItem` + * @glyphs: corresponding `PangoGlyphString` + * @y_offset: shift of the baseline, relative to the baseline + * of the containing line. Positive values shift upwards + * @start_x_offset: horizontal displacement to apply before the + * glyph item. Positive values shift right + * @end_x_offset: horizontal displacement to apply after th + * glyph item. Positive values shift right + * + * A `PangoGlyphItem` is a pair of a `PangoItem` and the glyphs + * resulting from shaping the items text. + * + * As an example of the usage of `PangoGlyphItem`, the results + * of shaping text with `PangoLayout` is a list of `PangoLayoutLine`, + * each of which contains a list of `PangoGlyphItem`. + */ +typedef struct _PangoGlyphItem PangoGlyphItem; + +struct _PangoGlyphItem +{ + PangoItem *item; + PangoGlyphString *glyphs; + int y_offset; + int start_x_offset; + int end_x_offset; +}; + +#define PANGO_TYPE_GLYPH_ITEM (pango_glyph_item_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_glyph_item_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_2 +PangoGlyphItem *pango_glyph_item_split (PangoGlyphItem *orig, + const char *text, + int split_index); +PANGO_AVAILABLE_IN_1_20 +PangoGlyphItem *pango_glyph_item_copy (PangoGlyphItem *orig); +PANGO_AVAILABLE_IN_1_6 +void pango_glyph_item_free (PangoGlyphItem *glyph_item); +PANGO_AVAILABLE_IN_1_2 +GSList * pango_glyph_item_apply_attrs (PangoGlyphItem *glyph_item, + const char *text, + PangoAttrList *list); +PANGO_AVAILABLE_IN_1_6 +void pango_glyph_item_letter_space (PangoGlyphItem *glyph_item, + const char *text, + PangoLogAttr *log_attrs, + int letter_spacing); +PANGO_AVAILABLE_IN_1_26 +void pango_glyph_item_get_logical_widths (PangoGlyphItem *glyph_item, + const char *text, + int *logical_widths); + + +/** + * PangoGlyphItemIter: + * + * A `PangoGlyphItemIter` is an iterator over the clusters in a + * `PangoGlyphItem`. + * + * The *forward direction* of the iterator is the logical direction of text. + * That is, with increasing @start_index and @start_char values. If @glyph_item + * is right-to-left (that is, if `glyph_item->item->analysis.level` is odd), + * then @start_glyph decreases as the iterator moves forward. Moreover, + * in right-to-left cases, @start_glyph is greater than @end_glyph. + * + * An iterator should be initialized using either + * pango_glyph_item_iter_init_start() or + * pango_glyph_item_iter_init_end(), for forward and backward iteration + * respectively, and walked over using any desired mixture of + * pango_glyph_item_iter_next_cluster() and + * pango_glyph_item_iter_prev_cluster(). + * + * A common idiom for doing a forward iteration over the clusters is: + * + * ``` + * PangoGlyphItemIter cluster_iter; + * gboolean have_cluster; + * + * for (have_cluster = pango_glyph_item_iter_init_start (&cluster_iter, + * glyph_item, text); + * have_cluster; + * have_cluster = pango_glyph_item_iter_next_cluster (&cluster_iter)) + * { + * ... + * } + * ``` + * + * Note that @text is the start of the text for layout, which is then + * indexed by `glyph_item->item->offset` to get to the text of @glyph_item. + * The @start_index and @end_index values can directly index into @text. The + * @start_glyph, @end_glyph, @start_char, and @end_char values however are + * zero-based for the @glyph_item. For each cluster, the item pointed at by + * the start variables is included in the cluster while the one pointed at by + * end variables is not. + * + * None of the members of a `PangoGlyphItemIter` should be modified manually. + * + * Since: 1.22 + */ +typedef struct _PangoGlyphItemIter PangoGlyphItemIter; + +struct _PangoGlyphItemIter +{ + PangoGlyphItem *glyph_item; + const gchar *text; + + int start_glyph; + int start_index; + int start_char; + + int end_glyph; + int end_index; + int end_char; +}; + +#define PANGO_TYPE_GLYPH_ITEM_ITER (pango_glyph_item_iter_get_type ()) + +PANGO_AVAILABLE_IN_1_22 +GType pango_glyph_item_iter_get_type (void) G_GNUC_CONST; +PANGO_AVAILABLE_IN_1_22 +PangoGlyphItemIter *pango_glyph_item_iter_copy (PangoGlyphItemIter *orig); +PANGO_AVAILABLE_IN_1_22 +void pango_glyph_item_iter_free (PangoGlyphItemIter *iter); + +PANGO_AVAILABLE_IN_1_22 +gboolean pango_glyph_item_iter_init_start (PangoGlyphItemIter *iter, + PangoGlyphItem *glyph_item, + const char *text); +PANGO_AVAILABLE_IN_1_22 +gboolean pango_glyph_item_iter_init_end (PangoGlyphItemIter *iter, + PangoGlyphItem *glyph_item, + const char *text); +PANGO_AVAILABLE_IN_1_22 +gboolean pango_glyph_item_iter_next_cluster (PangoGlyphItemIter *iter); +PANGO_AVAILABLE_IN_1_22 +gboolean pango_glyph_item_iter_prev_cluster (PangoGlyphItemIter *iter); + +G_END_DECLS + +#endif /* __PANGO_GLYPH_ITEM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-glyph.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-glyph.h new file mode 100644 index 0000000..788cf3c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-glyph.h @@ -0,0 +1,270 @@ +/* Pango + * pango-glyph.h: Glyph storage + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_GLYPH_H__ +#define __PANGO_GLYPH_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct _PangoGlyphGeometry PangoGlyphGeometry; +typedef struct _PangoGlyphVisAttr PangoGlyphVisAttr; +typedef struct _PangoGlyphInfo PangoGlyphInfo; +typedef struct _PangoGlyphString PangoGlyphString; + +/* 1024ths of a device unit */ +/** + * PangoGlyphUnit: + * + * The `PangoGlyphUnit` type is used to store dimensions within + * Pango. + * + * Dimensions are stored in 1/PANGO_SCALE of a device unit. + * (A device unit might be a pixel for screen display, or + * a point on a printer.) PANGO_SCALE is currently 1024, and + * may change in the future (unlikely though), but you should not + * depend on its exact value. + * + * The PANGO_PIXELS() macro can be used to convert from glyph units + * into device units with correct rounding. + */ +typedef gint32 PangoGlyphUnit; + +/* Positioning information about a glyph + */ +/** + * PangoGlyphGeometry: + * @width: the logical width to use for the the character. + * @x_offset: horizontal offset from nominal character position. + * @y_offset: vertical offset from nominal character position. + * + * The `PangoGlyphGeometry` structure contains width and positioning + * information for a single glyph. + * + * Note that @width is not guaranteed to be the same as the glyph + * extents. Kerning and other positioning applied during shaping will + * affect both the @width and the @x_offset for the glyphs in the + * glyph string that results from shaping. + * + * The information in this struct is intended for rendering the glyphs, + * as follows: + * + * 1. Assume the current point is (x, y) + * 2. Render the current glyph at (x + x_offset, y + y_offset), + * 3. Advance the current point to (x + width, y) + * 4. Render the next glyph + */ +struct _PangoGlyphGeometry +{ + PangoGlyphUnit width; + PangoGlyphUnit x_offset; + PangoGlyphUnit y_offset; +}; + +/* Visual attributes of a glyph + */ +/** + * PangoGlyphVisAttr: + * @is_cluster_start: set for the first logical glyph in each cluster. + * @is_color: set if the the font will render this glyph with color. Since 1.50 + * + * A `PangoGlyphVisAttr` structure communicates information between + * the shaping and rendering phases. + * + * Currently, it contains cluster start and color information. + * More attributes may be added in the future. + * + * Clusters are stored in visual order, within the cluster, glyphs + * are always ordered in logical order, since visual order is meaningless; + * that is, in Arabic text, accent glyphs follow the glyphs for the + * base character. + */ +struct _PangoGlyphVisAttr +{ + guint is_cluster_start : 1; + guint is_color : 1; +}; + +/* A single glyph + */ +/** + * PangoGlyphInfo: + * @glyph: the glyph itself. + * @geometry: the positional information about the glyph. + * @attr: the visual attributes of the glyph. + * + * A `PangoGlyphInfo` structure represents a single glyph with + * positioning information and visual attributes. + */ +struct _PangoGlyphInfo +{ + PangoGlyph glyph; + PangoGlyphGeometry geometry; + PangoGlyphVisAttr attr; +}; + +/** + * PangoGlyphString: + * @num_glyphs: number of glyphs in this glyph string + * @glyphs: (array length=num_glyphs): array of glyph information + * @log_clusters: logical cluster info, indexed by the byte index + * within the text corresponding to the glyph string + * + * A `PangoGlyphString` is used to store strings of glyphs with geometry + * and visual attribute information. + * + * The storage for the glyph information is owned by the structure + * which simplifies memory management. + */ +struct _PangoGlyphString { + int num_glyphs; + + PangoGlyphInfo *glyphs; + int *log_clusters; + + /*< private >*/ + int space; +}; + +#define PANGO_TYPE_GLYPH_STRING (pango_glyph_string_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_glyph_string_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoGlyphString * pango_glyph_string_new (void); +PANGO_AVAILABLE_IN_ALL +void pango_glyph_string_set_size (PangoGlyphString *string, + int new_len); + +PANGO_AVAILABLE_IN_ALL +PangoGlyphString * pango_glyph_string_copy (PangoGlyphString *string); +PANGO_AVAILABLE_IN_ALL +void pango_glyph_string_free (PangoGlyphString *string); + +PANGO_AVAILABLE_IN_ALL +void pango_glyph_string_extents (PangoGlyphString *glyphs, + PangoFont *font, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_1_14 +int pango_glyph_string_get_width (PangoGlyphString *glyphs); + +PANGO_AVAILABLE_IN_ALL +void pango_glyph_string_extents_range (PangoGlyphString *glyphs, + int start, + int end, + PangoFont *font, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + +PANGO_AVAILABLE_IN_ALL +void pango_glyph_string_get_logical_widths (PangoGlyphString *glyphs, + const char *text, + int length, + int embedding_level, + int *logical_widths); + +PANGO_AVAILABLE_IN_ALL +void pango_glyph_string_index_to_x (PangoGlyphString *glyphs, + const char *text, + int length, + PangoAnalysis *analysis, + int index_, + gboolean trailing, + int *x_pos); +PANGO_AVAILABLE_IN_ALL +void pango_glyph_string_x_to_index (PangoGlyphString *glyphs, + const char *text, + int length, + PangoAnalysis *analysis, + int x_pos, + int *index_, + int *trailing); + +PANGO_AVAILABLE_IN_1_50 +void pango_glyph_string_index_to_x_full (PangoGlyphString *glyphs, + const char *text, + int length, + PangoAnalysis *analysis, + PangoLogAttr *attrs, + int index_, + gboolean trailing, + int *x_pos); + +/* Shaping */ + +/** + * PangoShapeFlags: + * @PANGO_SHAPE_NONE: Default value + * @PANGO_SHAPE_ROUND_POSITIONS: Round glyph positions and widths to whole device units + * This option should be set if the target renderer can't do subpixel positioning of glyphs + * + * Flags influencing the shaping process. + * + * `PangoShapeFlags` can be passed to [func@Pango.shape_with_flags]. + * + * Since: 1.44 + */ +typedef enum { + PANGO_SHAPE_NONE = 0, + PANGO_SHAPE_ROUND_POSITIONS = 1 << 0, +} PangoShapeFlags; + +PANGO_AVAILABLE_IN_ALL +void pango_shape (const char *text, + int length, + const PangoAnalysis *analysis, + PangoGlyphString *glyphs); + +PANGO_AVAILABLE_IN_1_32 +void pango_shape_full (const char *item_text, + int item_length, + const char *paragraph_text, + int paragraph_length, + const PangoAnalysis *analysis, + PangoGlyphString *glyphs); + +PANGO_AVAILABLE_IN_1_44 +void pango_shape_with_flags (const char *item_text, + int item_length, + const char *paragraph_text, + int paragraph_length, + const PangoAnalysis *analysis, + PangoGlyphString *glyphs, + PangoShapeFlags flags); + + +PANGO_AVAILABLE_IN_1_50 +void pango_shape_item (PangoItem *item, + const char *paragraph_text, + int paragraph_length, + PangoLogAttr *log_attrs, + PangoGlyphString *glyphs, + PangoShapeFlags flags); + + +G_END_DECLS + +#endif /* __PANGO_GLYPH_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-gravity.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-gravity.h new file mode 100644 index 0000000..12e8d68 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-gravity.h @@ -0,0 +1,137 @@ +/* Pango + * pango-gravity.h: Gravity routines + * + * Copyright (C) 2006, 2007 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_GRAVITY_H__ +#define __PANGO_GRAVITY_H__ + +#include + +G_BEGIN_DECLS + +/** + * PangoGravity: + * @PANGO_GRAVITY_SOUTH: Glyphs stand upright (default) + * @PANGO_GRAVITY_EAST: Glyphs are rotated 90 degrees counter-clockwise. + * @PANGO_GRAVITY_NORTH: Glyphs are upside-down. + * @PANGO_GRAVITY_WEST: Glyphs are rotated 90 degrees clockwise. + * @PANGO_GRAVITY_AUTO: Gravity is resolved from the context matrix + * + * `PangoGravity` represents the orientation of glyphs in a segment + * of text. + * + * This is useful when rendering vertical text layouts. In those situations, + * the layout is rotated using a non-identity [struct@Pango.Matrix], and then + * glyph orientation is controlled using `PangoGravity`. + * + * Not every value in this enumeration makes sense for every usage of + * `PangoGravity`; for example, %PANGO_GRAVITY_AUTO only can be passed to + * [method@Pango.Context.set_base_gravity] and can only be returned by + * [method@Pango.Context.get_base_gravity]. + * + * See also: [enum@Pango.GravityHint] + * + * Since: 1.16 + */ +typedef enum { + PANGO_GRAVITY_SOUTH, + PANGO_GRAVITY_EAST, + PANGO_GRAVITY_NORTH, + PANGO_GRAVITY_WEST, + PANGO_GRAVITY_AUTO +} PangoGravity; + +/** + * PangoGravityHint: + * @PANGO_GRAVITY_HINT_NATURAL: scripts will take their natural gravity based + * on the base gravity and the script. This is the default. + * @PANGO_GRAVITY_HINT_STRONG: always use the base gravity set, regardless of + * the script. + * @PANGO_GRAVITY_HINT_LINE: for scripts not in their natural direction (eg. + * Latin in East gravity), choose per-script gravity such that every script + * respects the line progression. This means, Latin and Arabic will take + * opposite gravities and both flow top-to-bottom for example. + * + * `PangoGravityHint` defines how horizontal scripts should behave in a + * vertical context. + * + * That is, English excerpts in a vertical paragraph for example. + * + * See also [enum@Pango.Gravity] + * + * Since: 1.16 + */ +typedef enum { + PANGO_GRAVITY_HINT_NATURAL, + PANGO_GRAVITY_HINT_STRONG, + PANGO_GRAVITY_HINT_LINE +} PangoGravityHint; + +/** + * PANGO_GRAVITY_IS_VERTICAL: + * @gravity: the `PangoGravity` to check + * + * Whether a `PangoGravity` represents vertical writing directions. + * + * Returns: %TRUE if @gravity is %PANGO_GRAVITY_EAST or %PANGO_GRAVITY_WEST, + * %FALSE otherwise. + * + * Since: 1.16 + */ +#define PANGO_GRAVITY_IS_VERTICAL(gravity) \ + ((gravity) == PANGO_GRAVITY_EAST || (gravity) == PANGO_GRAVITY_WEST) + +/** + * PANGO_GRAVITY_IS_IMPROPER: + * @gravity: the `PangoGravity` to check + * + * Whether a `PangoGravity` represents a gravity that results in reversal + * of text direction. + * + * Returns: %TRUE if @gravity is %PANGO_GRAVITY_WEST or %PANGO_GRAVITY_NORTH, + * %FALSE otherwise. + * + * Since: 1.32 + */ +#define PANGO_GRAVITY_IS_IMPROPER(gravity) \ + ((gravity) == PANGO_GRAVITY_WEST || (gravity) == PANGO_GRAVITY_NORTH) + +#include +#include + +PANGO_AVAILABLE_IN_1_16 +double pango_gravity_to_rotation (PangoGravity gravity) G_GNUC_CONST; +PANGO_AVAILABLE_IN_1_16 +PangoGravity pango_gravity_get_for_matrix (const PangoMatrix *matrix) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_16 +PangoGravity pango_gravity_get_for_script (PangoScript script, + PangoGravity base_gravity, + PangoGravityHint hint) G_GNUC_CONST; +PANGO_AVAILABLE_IN_1_26 +PangoGravity pango_gravity_get_for_script_and_width + (PangoScript script, + gboolean wide, + PangoGravity base_gravity, + PangoGravityHint hint) G_GNUC_CONST; + + +G_END_DECLS + +#endif /* __PANGO_GRAVITY_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-item.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-item.h new file mode 100644 index 0000000..f0eebc0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-item.h @@ -0,0 +1,165 @@ +/* Pango + * pango-item.h: Structure for storing run information + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_ITEM_H__ +#define __PANGO_ITEM_H__ + +#include +#include + +G_BEGIN_DECLS + +typedef struct _PangoAnalysis PangoAnalysis; +typedef struct _PangoItem PangoItem; + +/** + * PANGO_ANALYSIS_FLAG_CENTERED_BASELINE: + * + * Whether the segment should be shifted to center around the baseline. + * + * This is mainly used in vertical writing directions. + * + * Since: 1.16 + */ +#define PANGO_ANALYSIS_FLAG_CENTERED_BASELINE (1 << 0) + +/** + * PANGO_ANALYSIS_FLAG_IS_ELLIPSIS: + * + * Whether this run holds ellipsized text. + * + * Since: 1.36.7 + */ +#define PANGO_ANALYSIS_FLAG_IS_ELLIPSIS (1 << 1) + +/** + * PANGO_ANALYSIS_FLAG_NEED_HYPHEN: + * + * Whether to add a hyphen at the end of the run during shaping. + * + * Since: 1.44 + */ +#define PANGO_ANALYSIS_FLAG_NEED_HYPHEN (1 << 2) + +/** + * PangoAnalysis: + * @shape_engine: unused, reserved + * @lang_engine: unused, reserved + * @font: the font for this segment. + * @level: the bidirectional level for this segment. + * @gravity: the glyph orientation for this segment (A `PangoGravity`). + * @flags: boolean flags for this segment (Since: 1.16). + * @script: the detected script for this segment (A `PangoScript`) (Since: 1.18). + * @language: the detected language for this segment. + * @extra_attrs: extra attributes for this segment. + * + * The `PangoAnalysis` structure stores information about + * the properties of a segment of text. + */ +struct _PangoAnalysis +{ +#ifndef __GI_SCANNER__ + PangoEngineShape *shape_engine; + PangoEngineLang *lang_engine; +#else + gpointer shape_engine; + gpointer lang_engine; +#endif + PangoFont *font; + + guint8 level; + guint8 gravity; + guint8 flags; + + guint8 script; + PangoLanguage *language; + + GSList *extra_attrs; +}; + +/** + * PangoItem: + * @offset: byte offset of the start of this item in text. + * @length: length of this item in bytes. + * @num_chars: number of Unicode characters in the item. + * @char_offset: character offset of the start of this item in text. Since 1.50 + * @analysis: analysis results for the item. + * + * The `PangoItem` structure stores information about a segment of text. + * + * You typically obtain `PangoItems` by itemizing a piece of text + * with [func@itemize]. + */ +struct _PangoItem +{ + int offset; + int length; + int num_chars; + PangoAnalysis analysis; +}; + +#define PANGO_TYPE_ITEM (pango_item_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_item_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoItem * pango_item_new (void); +PANGO_AVAILABLE_IN_ALL +PangoItem * pango_item_copy (PangoItem *item); +PANGO_AVAILABLE_IN_ALL +void pango_item_free (PangoItem *item); + +PANGO_AVAILABLE_IN_ALL +PangoItem * pango_item_split (PangoItem *orig, + int split_index, + int split_offset); + +PANGO_AVAILABLE_IN_1_44 +void pango_item_apply_attrs (PangoItem *item, + PangoAttrIterator *iter); + +PANGO_AVAILABLE_IN_ALL +GList * pango_reorder_items (GList *items); + +/* Itemization */ + +PANGO_AVAILABLE_IN_ALL +GList * pango_itemize (PangoContext *context, + const char *text, + int start_index, + int length, + PangoAttrList *attrs, + PangoAttrIterator *cached_iter); + +PANGO_AVAILABLE_IN_1_4 +GList * pango_itemize_with_base_dir (PangoContext *context, + PangoDirection base_dir, + const char *text, + int start_index, + int length, + PangoAttrList *attrs, + PangoAttrIterator *cached_iter); + + +G_END_DECLS + +#endif /* __PANGO_ITEM_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-language.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-language.h new file mode 100644 index 0000000..a71316d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-language.h @@ -0,0 +1,70 @@ +/* Pango + * pango-language.h: Language handling routines + * + * Copyright (C) 1999 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_LANGUAGE_H__ +#define __PANGO_LANGUAGE_H__ + +#include +#include + +#include +#include +#include + +G_BEGIN_DECLS + +#define PANGO_TYPE_LANGUAGE (pango_language_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_language_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_16 +PangoLanguage * pango_language_get_default (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_48 +PangoLanguage ** pango_language_get_preferred (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoLanguage * pango_language_from_string (const char *language); + +PANGO_AVAILABLE_IN_ALL +const char * pango_language_to_string (PangoLanguage *language) G_GNUC_CONST; + +/* For back compat. Will have to keep indefinitely. */ +#define pango_language_to_string(language) ((const char *)language) + +PANGO_AVAILABLE_IN_ALL +const char * pango_language_get_sample_string (PangoLanguage *language) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +gboolean pango_language_matches (PangoLanguage *language, + const char *range_list) G_GNUC_PURE; + +PANGO_AVAILABLE_IN_1_4 +gboolean pango_language_includes_script (PangoLanguage *language, + PangoScript script) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_22 +const PangoScript * pango_language_get_scripts (PangoLanguage *language, + int *num_scripts); + +G_END_DECLS + +#endif /* __PANGO_LANGUAGE_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-layout.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-layout.h new file mode 100644 index 0000000..12fc76c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-layout.h @@ -0,0 +1,554 @@ +/* Pango + * pango-layout.h: High-level layout driver + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_LAYOUT_H__ +#define __PANGO_LAYOUT_H__ + +#include +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct _PangoLayout PangoLayout; +typedef struct _PangoLayoutClass PangoLayoutClass; +typedef struct _PangoLayoutLine PangoLayoutLine; + +/** + * PangoLayoutRun: + * + * A `PangoLayoutRun` represents a single run within a `PangoLayoutLine`. + * + * It is simply an alternate name for [struct@Pango.GlyphItem]. + * See the [struct@Pango.GlyphItem] docs for details on the fields. + */ +typedef PangoGlyphItem PangoLayoutRun; + +/** + * PangoAlignment: + * @PANGO_ALIGN_LEFT: Put all available space on the right + * @PANGO_ALIGN_CENTER: Center the line within the available space + * @PANGO_ALIGN_RIGHT: Put all available space on the left + * + * `PangoAlignment` describes how to align the lines of a `PangoLayout` + * within the available space. + * + * If the `PangoLayout` is set to justify using [method@Pango.Layout.set_justify], + * this only affects partial lines. + * + * See [method@Pango.Layout.set_auto_dir] for how text direction affects + * the interpretation of `PangoAlignment` values. + */ +typedef enum { + PANGO_ALIGN_LEFT, + PANGO_ALIGN_CENTER, + PANGO_ALIGN_RIGHT +} PangoAlignment; + +/** + * PangoWrapMode: + * @PANGO_WRAP_WORD: wrap lines at word boundaries. + * @PANGO_WRAP_CHAR: wrap lines at character boundaries. + * @PANGO_WRAP_WORD_CHAR: wrap lines at word boundaries, but fall back to + * character boundaries if there is not enough space for a full word. + * + * `PangoWrapMode` describes how to wrap the lines of a `PangoLayout` + * to the desired width. + * + * For @PANGO_WRAP_WORD, Pango uses break opportunities that are determined + * by the Unicode line breaking algorithm. For @PANGO_WRAP_CHAR, Pango allows + * breaking at grapheme boundaries that are determined by the Unicode text + * segmentation algorithm. + */ +typedef enum { + PANGO_WRAP_WORD, + PANGO_WRAP_CHAR, + PANGO_WRAP_WORD_CHAR +} PangoWrapMode; + +/** + * PangoEllipsizeMode: + * @PANGO_ELLIPSIZE_NONE: No ellipsization + * @PANGO_ELLIPSIZE_START: Omit characters at the start of the text + * @PANGO_ELLIPSIZE_MIDDLE: Omit characters in the middle of the text + * @PANGO_ELLIPSIZE_END: Omit characters at the end of the text + * + * `PangoEllipsizeMode` describes what sort of ellipsization + * should be applied to text. + * + * In the ellipsization process characters are removed from the + * text in order to make it fit to a given width and replaced + * with an ellipsis. + */ +typedef enum { + PANGO_ELLIPSIZE_NONE, + PANGO_ELLIPSIZE_START, + PANGO_ELLIPSIZE_MIDDLE, + PANGO_ELLIPSIZE_END +} PangoEllipsizeMode; + +/** + * PangoLayoutLine: + * @layout: (nullable): the layout this line belongs to, might be %NULL + * @start_index: start of line as byte index into layout->text + * @length: length of line in bytes + * @runs: (nullable) (element-type Pango.LayoutRun): list of runs in the + * line, from left to right + * @is_paragraph_start: #TRUE if this is the first line of the paragraph + * @resolved_dir: #Resolved PangoDirection of line + * + * A `PangoLayoutLine` represents one of the lines resulting from laying + * out a paragraph via `PangoLayout`. + * + * `PangoLayoutLine` structures are obtained by calling + * [method@Pango.Layout.get_line] and are only valid until the text, + * attributes, or settings of the parent `PangoLayout` are modified. + */ +struct _PangoLayoutLine +{ + PangoLayout *layout; + gint start_index; /* start of line as byte index into layout->text */ + gint length; /* length of line in bytes */ + GSList *runs; + guint is_paragraph_start : 1; /* TRUE if this is the first line of the paragraph */ + guint resolved_dir : 3; /* Resolved PangoDirection of line */ +}; + +#define PANGO_TYPE_LAYOUT (pango_layout_get_type ()) +#define PANGO_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_LAYOUT, PangoLayout)) +#define PANGO_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_LAYOUT, PangoLayoutClass)) +#define PANGO_IS_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_LAYOUT)) +#define PANGO_IS_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_LAYOUT)) +#define PANGO_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_LAYOUT, PangoLayoutClass)) + +/* The PangoLayout and PangoLayoutClass structs are private; if you + * need to create a subclass of these, file a bug. + */ + +PANGO_AVAILABLE_IN_ALL +GType pango_layout_get_type (void) G_GNUC_CONST; +PANGO_AVAILABLE_IN_ALL +PangoLayout *pango_layout_new (PangoContext *context); +PANGO_AVAILABLE_IN_ALL +PangoLayout *pango_layout_copy (PangoLayout *src); + +PANGO_AVAILABLE_IN_ALL +PangoContext *pango_layout_get_context (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_attributes (PangoLayout *layout, + PangoAttrList *attrs); +PANGO_AVAILABLE_IN_ALL +PangoAttrList *pango_layout_get_attributes (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_text (PangoLayout *layout, + const char *text, + int length); +PANGO_AVAILABLE_IN_ALL +const char *pango_layout_get_text (PangoLayout *layout); + +PANGO_AVAILABLE_IN_1_30 +gint pango_layout_get_character_count (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_markup (PangoLayout *layout, + const char *markup, + int length); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_markup_with_accel (PangoLayout *layout, + const char *markup, + int length, + gunichar accel_marker, + gunichar *accel_char); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_font_description (PangoLayout *layout, + const PangoFontDescription *desc); + +PANGO_AVAILABLE_IN_1_8 +const PangoFontDescription *pango_layout_get_font_description (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_width (PangoLayout *layout, + int width); +PANGO_AVAILABLE_IN_ALL +int pango_layout_get_width (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_20 +void pango_layout_set_height (PangoLayout *layout, + int height); +PANGO_AVAILABLE_IN_1_20 +int pango_layout_get_height (PangoLayout *layout); +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_wrap (PangoLayout *layout, + PangoWrapMode wrap); +PANGO_AVAILABLE_IN_ALL +PangoWrapMode pango_layout_get_wrap (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_16 +gboolean pango_layout_is_wrapped (PangoLayout *layout); +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_indent (PangoLayout *layout, + int indent); +PANGO_AVAILABLE_IN_ALL +int pango_layout_get_indent (PangoLayout *layout); +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_spacing (PangoLayout *layout, + int spacing); +PANGO_AVAILABLE_IN_ALL +int pango_layout_get_spacing (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_44 +void pango_layout_set_line_spacing (PangoLayout *layout, + float factor); +PANGO_AVAILABLE_IN_1_44 +float pango_layout_get_line_spacing (PangoLayout *layout); +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_justify (PangoLayout *layout, + gboolean justify); +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_get_justify (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_50 +void pango_layout_set_justify_last_line (PangoLayout *layout, + gboolean justify); +PANGO_AVAILABLE_IN_1_50 +gboolean pango_layout_get_justify_last_line (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_4 +void pango_layout_set_auto_dir (PangoLayout *layout, + gboolean auto_dir); +PANGO_AVAILABLE_IN_1_4 +gboolean pango_layout_get_auto_dir (PangoLayout *layout); +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_alignment (PangoLayout *layout, + PangoAlignment alignment); +PANGO_AVAILABLE_IN_ALL +PangoAlignment pango_layout_get_alignment (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_tabs (PangoLayout *layout, + PangoTabArray *tabs); +PANGO_AVAILABLE_IN_ALL +PangoTabArray* pango_layout_get_tabs (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_set_single_paragraph_mode (PangoLayout *layout, + gboolean setting); +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_get_single_paragraph_mode (PangoLayout *layout); + +PANGO_AVAILABLE_IN_1_6 +void pango_layout_set_ellipsize (PangoLayout *layout, + PangoEllipsizeMode ellipsize); +PANGO_AVAILABLE_IN_1_6 +PangoEllipsizeMode pango_layout_get_ellipsize (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_16 +gboolean pango_layout_is_ellipsized (PangoLayout *layout); + +PANGO_AVAILABLE_IN_1_16 +int pango_layout_get_unknown_glyphs_count (PangoLayout *layout); + +PANGO_AVAILABLE_IN_1_46 +PangoDirection pango_layout_get_direction (PangoLayout *layout, + int index); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_context_changed (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_32 +guint pango_layout_get_serial (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_get_log_attrs (PangoLayout *layout, + PangoLogAttr **attrs, + gint *n_attrs); + +PANGO_AVAILABLE_IN_1_30 +const PangoLogAttr *pango_layout_get_log_attrs_readonly (PangoLayout *layout, + gint *n_attrs); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_index_to_pos (PangoLayout *layout, + int index_, + PangoRectangle *pos); +PANGO_AVAILABLE_IN_ALL +void pango_layout_index_to_line_x (PangoLayout *layout, + int index_, + gboolean trailing, + int *line, + int *x_pos); +PANGO_AVAILABLE_IN_ALL +void pango_layout_get_cursor_pos (PangoLayout *layout, + int index_, + PangoRectangle *strong_pos, + PangoRectangle *weak_pos); + +PANGO_AVAILABLE_IN_1_50 +void pango_layout_get_caret_pos (PangoLayout *layout, + int index_, + PangoRectangle *strong_pos, + PangoRectangle *weak_pos); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_move_cursor_visually (PangoLayout *layout, + gboolean strong, + int old_index, + int old_trailing, + int direction, + int *new_index, + int *new_trailing); +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_xy_to_index (PangoLayout *layout, + int x, + int y, + int *index_, + int *trailing); +PANGO_AVAILABLE_IN_ALL +void pango_layout_get_extents (PangoLayout *layout, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_ALL +void pango_layout_get_pixel_extents (PangoLayout *layout, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_ALL +void pango_layout_get_size (PangoLayout *layout, + int *width, + int *height); +PANGO_AVAILABLE_IN_ALL +void pango_layout_get_pixel_size (PangoLayout *layout, + int *width, + int *height); +PANGO_AVAILABLE_IN_1_22 +int pango_layout_get_baseline (PangoLayout *layout); + +PANGO_AVAILABLE_IN_ALL +int pango_layout_get_line_count (PangoLayout *layout); +PANGO_AVAILABLE_IN_ALL +PangoLayoutLine *pango_layout_get_line (PangoLayout *layout, + int line); +PANGO_AVAILABLE_IN_1_16 +PangoLayoutLine *pango_layout_get_line_readonly (PangoLayout *layout, + int line); +PANGO_AVAILABLE_IN_ALL +GSList * pango_layout_get_lines (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_16 +GSList * pango_layout_get_lines_readonly (PangoLayout *layout); + +/** + * PangoLayoutSerializeFlags: + * @PANGO_LAYOUT_SERIALIZE_DEFAULT: Default behavior + * @PANGO_LAYOUT_SERIALIZE_CONTEXT: Include context information + * @PANGO_LAYOUT_SERIALIZE_OUTPUT: Include information about the formatted output + * + * Flags that influence the behavior of [method@Pango.Layout.serialize]. + * + * New members may be added to this enumeration over time. + * + * Since: 1.50 + */ +typedef enum { + PANGO_LAYOUT_SERIALIZE_DEFAULT = 0, + PANGO_LAYOUT_SERIALIZE_CONTEXT = 1 << 0, + PANGO_LAYOUT_SERIALIZE_OUTPUT = 1 << 1, +} PangoLayoutSerializeFlags; + +PANGO_AVAILABLE_IN_1_50 +GBytes * pango_layout_serialize (PangoLayout *layout, + PangoLayoutSerializeFlags flags); + +PANGO_AVAILABLE_IN_1_50 +gboolean pango_layout_write_to_file (PangoLayout *layout, + PangoLayoutSerializeFlags flags, + + const char *filename, + GError **error); + +#define PANGO_LAYOUT_DESERIALIZE_ERROR (pango_layout_deserialize_error_quark ()) + +/** + * PangoLayoutDeserializeError: + * @PANGO_LAYOUT_DESERIALIZE_INVALID: Unspecified error + * @PANGO_LAYOUT_DESERIALIZE_INVALID_VALUE: A JSon value could not be + * interpreted + * @PANGO_LAYOUT_DESERIALIZE_MISSING_VALUE: A required JSon member was + * not found + * + * Errors that can be returned by [func@Pango.Layout.deserialize]. + * + * Since: 1.50 + */ +typedef enum { + PANGO_LAYOUT_DESERIALIZE_INVALID, + PANGO_LAYOUT_DESERIALIZE_INVALID_VALUE, + PANGO_LAYOUT_DESERIALIZE_MISSING_VALUE, +} PangoLayoutDeserializeError; + +PANGO_AVAILABLE_IN_1_50 +GQuark pango_layout_deserialize_error_quark (void); + +/** + * PangoLayoutDeserializeFlags: + * @PANGO_LAYOUT_DESERIALIZE_DEFAULT: Default behavior + * @PANGO_LAYOUT_DESERIALIZE_CONTEXT: Apply context information + * from the serialization to the `PangoContext` + * + * Flags that influence the behavior of [func@Pango.Layout.deserialize]. + * + * New members may be added to this enumeration over time. + * + * Since: 1.50 + */ +typedef enum { + PANGO_LAYOUT_DESERIALIZE_DEFAULT = 0, + PANGO_LAYOUT_DESERIALIZE_CONTEXT = 1 << 0, +} PangoLayoutDeserializeFlags; + +PANGO_AVAILABLE_IN_1_50 +PangoLayout * pango_layout_deserialize (PangoContext *context, + GBytes *bytes, + PangoLayoutDeserializeFlags flags, + GError **error); + + +#define PANGO_TYPE_LAYOUT_LINE (pango_layout_line_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_layout_line_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_10 +PangoLayoutLine *pango_layout_line_ref (PangoLayoutLine *line); +PANGO_AVAILABLE_IN_ALL +void pango_layout_line_unref (PangoLayoutLine *line); + +PANGO_AVAILABLE_IN_1_50 +int pango_layout_line_get_start_index (PangoLayoutLine *line); +PANGO_AVAILABLE_IN_1_50 +int pango_layout_line_get_length (PangoLayoutLine *line); +PANGO_AVAILABLE_IN_1_50 +gboolean pango_layout_line_is_paragraph_start (PangoLayoutLine *line); +PANGO_AVAILABLE_IN_1_50 +PangoDirection pango_layout_line_get_resolved_direction (PangoLayoutLine *line); + +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_line_x_to_index (PangoLayoutLine *line, + int x_pos, + int *index_, + int *trailing); +PANGO_AVAILABLE_IN_ALL +void pango_layout_line_index_to_x (PangoLayoutLine *line, + int index_, + gboolean trailing, + int *x_pos); +PANGO_AVAILABLE_IN_ALL +void pango_layout_line_get_x_ranges (PangoLayoutLine *line, + int start_index, + int end_index, + int **ranges, + int *n_ranges); +PANGO_AVAILABLE_IN_ALL +void pango_layout_line_get_extents (PangoLayoutLine *line, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_1_44 +void pango_layout_line_get_height (PangoLayoutLine *line, + int *height); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_line_get_pixel_extents (PangoLayoutLine *layout_line, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + +typedef struct _PangoLayoutIter PangoLayoutIter; + +#define PANGO_TYPE_LAYOUT_ITER (pango_layout_iter_get_type ()) + +PANGO_AVAILABLE_IN_ALL +GType pango_layout_iter_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +PangoLayoutIter *pango_layout_get_iter (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_20 +PangoLayoutIter *pango_layout_iter_copy (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_ALL +void pango_layout_iter_free (PangoLayoutIter *iter); + +PANGO_AVAILABLE_IN_ALL +int pango_layout_iter_get_index (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_ALL +PangoLayoutRun *pango_layout_iter_get_run (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_1_16 +PangoLayoutRun *pango_layout_iter_get_run_readonly (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_ALL +PangoLayoutLine *pango_layout_iter_get_line (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_1_16 +PangoLayoutLine *pango_layout_iter_get_line_readonly (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_iter_at_last_line (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_1_20 +PangoLayout *pango_layout_iter_get_layout (PangoLayoutIter *iter); + +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_iter_next_char (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_iter_next_cluster (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_iter_next_run (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_ALL +gboolean pango_layout_iter_next_line (PangoLayoutIter *iter); + +PANGO_AVAILABLE_IN_ALL +void pango_layout_iter_get_char_extents (PangoLayoutIter *iter, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_ALL +void pango_layout_iter_get_cluster_extents (PangoLayoutIter *iter, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_ALL +void pango_layout_iter_get_run_extents (PangoLayoutIter *iter, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_ALL +void pango_layout_iter_get_line_extents (PangoLayoutIter *iter, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +/* All the yranges meet, unlike the logical_rect's (i.e. the yranges + * assign between-line spacing to the nearest line) + */ +PANGO_AVAILABLE_IN_ALL +void pango_layout_iter_get_line_yrange (PangoLayoutIter *iter, + int *y0_, + int *y1_); +PANGO_AVAILABLE_IN_ALL +void pango_layout_iter_get_layout_extents (PangoLayoutIter *iter, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); +PANGO_AVAILABLE_IN_ALL +int pango_layout_iter_get_baseline (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_1_50 +int pango_layout_iter_get_run_baseline (PangoLayoutIter *iter); + + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayoutIter, pango_layout_iter_free) + +G_END_DECLS + +#endif /* __PANGO_LAYOUT_H__ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-markup.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-markup.h new file mode 100644 index 0000000..003ee51 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-markup.h @@ -0,0 +1,52 @@ +/* Pango + * pango-markup.h: Parser for attributed text + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_MARKUP_H__ +#define __PANGO_MARKUP_H__ + +#include + +G_BEGIN_DECLS + + +PANGO_AVAILABLE_IN_1_32 +GMarkupParseContext * pango_markup_parser_new (gunichar accel_marker); + +PANGO_AVAILABLE_IN_1_32 +gboolean pango_markup_parser_finish (GMarkupParseContext *context, + PangoAttrList **attr_list, + char **text, + gunichar *accel_char, + GError **error); + +PANGO_AVAILABLE_IN_ALL +gboolean pango_parse_markup (const char *markup_text, + int length, + gunichar accel_marker, + PangoAttrList **attr_list, + char **text, + gunichar *accel_char, + GError **error); + + +G_END_DECLS + +#endif /* __PANGO_MARKUP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-matrix.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-matrix.h new file mode 100644 index 0000000..cb53a42 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-matrix.h @@ -0,0 +1,130 @@ +/* Pango + * pango-matrix.h: Matrix manipulation routines + * + * Copyright (C) 2002, 2006 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_MATRIX_H__ +#define __PANGO_MATRIX_H__ + +#include +#include + +G_BEGIN_DECLS + +typedef struct _PangoMatrix PangoMatrix; + +/** + * PangoMatrix: + * @xx: 1st component of the transformation matrix + * @xy: 2nd component of the transformation matrix + * @yx: 3rd component of the transformation matrix + * @yy: 4th component of the transformation matrix + * @x0: x translation + * @y0: y translation + * + * A `PangoMatrix` specifies a transformation between user-space + * and device coordinates. + * + * The transformation is given by + * + * ``` + * x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0; + * y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0; + * ``` + * + * Since: 1.6 + */ +struct _PangoMatrix +{ + double xx; + double xy; + double yx; + double yy; + double x0; + double y0; +}; + +#define PANGO_TYPE_MATRIX (pango_matrix_get_type ()) + +/** + * PANGO_MATRIX_INIT: + * + * Constant that can be used to initialize a `PangoMatrix` to + * the identity transform. + * + * ``` + * PangoMatrix matrix = PANGO_MATRIX_INIT; + * pango_matrix_rotate (&matrix, 45.); + * ``` + * + * Since: 1.6 + **/ +#define PANGO_MATRIX_INIT { 1., 0., 0., 1., 0., 0. } + +/* for PangoRectangle */ +#include + +PANGO_AVAILABLE_IN_1_6 +GType pango_matrix_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_6 +PangoMatrix *pango_matrix_copy (const PangoMatrix *matrix); +PANGO_AVAILABLE_IN_1_6 +void pango_matrix_free (PangoMatrix *matrix); + +PANGO_AVAILABLE_IN_1_6 +void pango_matrix_translate (PangoMatrix *matrix, + double tx, + double ty); +PANGO_AVAILABLE_IN_1_6 +void pango_matrix_scale (PangoMatrix *matrix, + double scale_x, + double scale_y); +PANGO_AVAILABLE_IN_1_6 +void pango_matrix_rotate (PangoMatrix *matrix, + double degrees); +PANGO_AVAILABLE_IN_1_6 +void pango_matrix_concat (PangoMatrix *matrix, + const PangoMatrix *new_matrix); +PANGO_AVAILABLE_IN_1_16 +void pango_matrix_transform_point (const PangoMatrix *matrix, + double *x, + double *y); +PANGO_AVAILABLE_IN_1_16 +void pango_matrix_transform_distance (const PangoMatrix *matrix, + double *dx, + double *dy); +PANGO_AVAILABLE_IN_1_16 +void pango_matrix_transform_rectangle (const PangoMatrix *matrix, + PangoRectangle *rect); +PANGO_AVAILABLE_IN_1_16 +void pango_matrix_transform_pixel_rectangle (const PangoMatrix *matrix, + PangoRectangle *rect); +PANGO_AVAILABLE_IN_1_12 +double pango_matrix_get_font_scale_factor (const PangoMatrix *matrix) G_GNUC_PURE; +PANGO_AVAILABLE_IN_1_38 +void pango_matrix_get_font_scale_factors (const PangoMatrix *matrix, + double *xscale, double *yscale); +PANGO_AVAILABLE_IN_1_50 +double pango_matrix_get_slant_ratio (const PangoMatrix *matrix) G_GNUC_PURE; + + +G_END_DECLS + +#endif /* __PANGO_MATRIX_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-modules.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-modules.h new file mode 100644 index 0000000..5bd707b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-modules.h @@ -0,0 +1,84 @@ +/* Pango + * pango-modules.h: + * + * Copyright (C) 1999 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_MODULES_H__ +#define __PANGO_MODULES_H__ + +#include + +G_BEGIN_DECLS + +/* All of this is deprecated and entirely useless for bindings. + * Leave it out of the gir file. + */ +#ifndef __GI_SCANNER__ + +#ifndef PANGO_DISABLE_DEPRECATED + +typedef struct _PangoMap PangoMap; +typedef struct _PangoMapEntry PangoMapEntry; + +typedef struct _PangoIncludedModule PangoIncludedModule; + +/** + * PangoIncludedModule: + * @list: a function that lists the engines defined in this module. + * @init: a function to initialize the module. + * @exit: a function to finalize the module. + * @create: a function to create an engine, given the engine name. + * + * The `PangoIncludedModule` structure for a statically linked module + * contains the functions that would otherwise be loaded from a dynamically + * loaded module. + * + * Deprecated: 1.38 + */ +struct _PangoIncludedModule +{ + void (*list) (PangoEngineInfo **engines, + int *n_engines); + void (*init) (GTypeModule *module); + void (*exit) (void); + PangoEngine *(*create) (const char *id); +}; + +PANGO_DEPRECATED_IN_1_38 +PangoMap * pango_find_map (PangoLanguage *language, + guint engine_type_id, + guint render_type_id); +PANGO_DEPRECATED_IN_1_38 +PangoEngine * pango_map_get_engine (PangoMap *map, + PangoScript script); +PANGO_DEPRECATED_IN_1_38 +void pango_map_get_engines (PangoMap *map, + PangoScript script, + GSList **exact_engines, + GSList **fallback_engines); +PANGO_DEPRECATED_IN_1_38 +void pango_module_register (PangoIncludedModule *module); + +#endif /* PANGO_DISABLE_DEPRECATED */ + +#endif /* __GI_SCANNER__ */ + +G_END_DECLS + +#endif /* __PANGO_MODULES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-ot.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-ot.h new file mode 100644 index 0000000..2d7b87c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-ot.h @@ -0,0 +1,427 @@ +/* Pango + * pango-ot.h: + * + * Copyright (C) 2000,2007 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_OT_H__ +#define __PANGO_OT_H__ + +/* Deprecated. Use HarfBuzz directly! */ + +#include +#include +#include +#include +#include + +#include +#include FT_FREETYPE_H + +G_BEGIN_DECLS + +#ifndef PANGO_DISABLE_DEPRECATED + +/** + * PangoOTTag: + * + * The `PangoOTTag` typedef is used to represent TrueType and OpenType + * four letter tags inside Pango. Use PANGO_OT_TAG_MAKE() + * or PANGO_OT_TAG_MAKE_FROM_STRING() macros to create PangoOTTags manually. + */ +typedef guint32 PangoOTTag; + +/** + * PANGO_OT_TAG_MAKE: + * @c1: First character. + * @c2: Second character. + * @c3: Third character. + * @c4: Fourth character. + * + * Creates a `PangoOTTag` from four characters. This is similar and + * compatible with the FT_MAKE_TAG() macro from FreeType. + */ +/** + * PANGO_OT_TAG_MAKE_FROM_STRING: + * @s: The string representation of the tag. + * + * Creates a `PangoOTTag` from a string. The string should be at least + * four characters long (pad with space characters if needed), and need + * not be nul-terminated. This is a convenience wrapper around + * PANGO_OT_TAG_MAKE(), but cannot be used in certain situations, for + * example, as a switch expression, as it dereferences pointers. + */ +#define PANGO_OT_TAG_MAKE(c1,c2,c3,c4) ((PangoOTTag) FT_MAKE_TAG (c1, c2, c3, c4)) +#define PANGO_OT_TAG_MAKE_FROM_STRING(s) (PANGO_OT_TAG_MAKE(((const char *) s)[0], \ + ((const char *) s)[1], \ + ((const char *) s)[2], \ + ((const char *) s)[3])) + +typedef struct _PangoOTInfo PangoOTInfo; +typedef struct _PangoOTBuffer PangoOTBuffer; +typedef struct _PangoOTGlyph PangoOTGlyph; +typedef struct _PangoOTRuleset PangoOTRuleset; +typedef struct _PangoOTFeatureMap PangoOTFeatureMap; +typedef struct _PangoOTRulesetDescription PangoOTRulesetDescription; + +/** + * PangoOTTableType: + * @PANGO_OT_TABLE_GSUB: The GSUB table. + * @PANGO_OT_TABLE_GPOS: The GPOS table. + * + * The PangoOTTableType enumeration values are used to + * identify the various OpenType tables in the + * pango_ot_info_… functions. + */ +typedef enum +{ + PANGO_OT_TABLE_GSUB, + PANGO_OT_TABLE_GPOS +} PangoOTTableType; + +/** + * PANGO_OT_ALL_GLYPHS: + * + * This is used as the property bit in pango_ot_ruleset_add_feature() when a + * feature should be applied to all glyphs. + * + * Since: 1.16 + */ +/** + * PANGO_OT_NO_FEATURE: + * + * This is used as a feature index that represent no feature, that is, should be + * skipped. It may be returned as feature index by pango_ot_info_find_feature() + * if the feature is not found, and pango_ot_ruleset_add_feature() function + * automatically skips this value, so no special handling is required by the user. + * + * Since: 1.18 + */ +/** + * PANGO_OT_NO_SCRIPT: + * + * This is used as a script index that represent no script, that is, when the + * requested script was not found, and a default ('DFLT') script was not found + * either. It may be returned as script index by pango_ot_info_find_script() + * if the script or a default script are not found, all other functions + * taking a script index essentially return if the input script index is + * this value, so no special handling is required by the user. + * + * Since: 1.18 + */ +/** + * PANGO_OT_DEFAULT_LANGUAGE: + * + * This is used as the language index in pango_ot_info_find_feature() when + * the default language system of the script is desired. + * + * It is also returned by pango_ot_info_find_language() if the requested language + * is not found, or the requested language tag was PANGO_OT_TAG_DEFAULT_LANGUAGE. + * The end result is that one can always call pango_ot_tag_from_language() + * followed by pango_ot_info_find_language() and pass the result to + * pango_ot_info_find_feature() without having to worry about falling back to + * default language system explicitly. + * + * Since: 1.16 + */ +#define PANGO_OT_ALL_GLYPHS ((guint) 0xFFFF) +#define PANGO_OT_NO_FEATURE ((guint) 0xFFFF) +#define PANGO_OT_NO_SCRIPT ((guint) 0xFFFF) +#define PANGO_OT_DEFAULT_LANGUAGE ((guint) 0xFFFF) + +/** + * PANGO_OT_TAG_DEFAULT_SCRIPT: + * + * This is a `PangoOTTag` representing the special script tag 'DFLT'. It is + * returned as script tag by pango_ot_tag_from_script() if the requested script + * is not found. + * + * Since: 1.18 + */ +/** + * PANGO_OT_TAG_DEFAULT_LANGUAGE: + * + * This is a `PangoOTTag` representing a special language tag 'dflt'. It is + * returned as language tag by pango_ot_tag_from_language() if the requested + * language is not found. It is safe to pass this value to + * pango_ot_info_find_language() as that function falls back to returning default + * language-system if the requested language tag is not found. + * + * Since: 1.18 + */ +#define PANGO_OT_TAG_DEFAULT_SCRIPT PANGO_OT_TAG_MAKE ('D', 'F', 'L', 'T') +#define PANGO_OT_TAG_DEFAULT_LANGUAGE PANGO_OT_TAG_MAKE ('d', 'f', 'l', 't') + +/* Note that this must match hb_glyph_info_t */ +/** + * PangoOTGlyph: + * @glyph: the glyph itself. + * @properties: the properties value, identifying which features should be + * applied on this glyph. See pango_ot_ruleset_add_feature(). + * @cluster: the cluster that this glyph belongs to. + * @component: a component value, set by the OpenType layout engine. + * @ligID: a ligature index value, set by the OpenType layout engine. + * @internal: for Pango internal use + * + * The `PangoOTGlyph` structure represents a single glyph together with + * information used for OpenType layout processing of the glyph. + * It contains the following fields. + */ +struct _PangoOTGlyph +{ + guint32 glyph; + guint properties; + guint cluster; + gushort component; + gushort ligID; + + guint internal; +}; + +/** + * PangoOTFeatureMap: + * @feature_name: feature tag in represented as four-letter ASCII string. + * @property_bit: the property bit to use for this feature. See + * pango_ot_ruleset_add_feature() for details. + * + * The `PangoOTFeatureMap` typedef is used to represent an OpenType + * feature with the property bit associated with it. The feature tag is + * represented as a char array instead of a `PangoOTTag` for convenience. + * + * Since: 1.18 + */ +struct _PangoOTFeatureMap +{ + char feature_name[5]; + gulong property_bit; +}; + +/** + * PangoOTRulesetDescription: + * @script: a `PangoScript` + * @language: a `PangoLanguage` + * @static_gsub_features: (nullable): static map of GSUB features + * @n_static_gsub_features: length of @static_gsub_features, or 0. + * @static_gpos_features: (nullable): static map of GPOS features + * @n_static_gpos_features: length of @static_gpos_features, or 0. + * @other_features: (nullable): map of extra features to add to both + * GSUB and GPOS. Unlike the static maps, this pointer need not + * live beyond the life of function calls taking this struct. + * @n_other_features: length of @other_features, or 0. + * + * The `PangoOTRuleset` structure holds all the information needed + * to build a complete `PangoOTRuleset` from an OpenType font. + * The main use of this struct is to act as the key for a per-font + * hash of rulesets. The user populates a ruleset description and + * gets the ruleset using pango_ot_ruleset_get_for_description() + * or create a new one using pango_ot_ruleset_new_from_description(). + * + * Since: 1.18 + */ +struct _PangoOTRulesetDescription { + PangoScript script; + PangoLanguage *language; + const PangoOTFeatureMap *static_gsub_features; + guint n_static_gsub_features; + const PangoOTFeatureMap *static_gpos_features; + guint n_static_gpos_features; + const PangoOTFeatureMap *other_features; + guint n_other_features; +}; + +#ifdef __GI_SCANNER__ +#define PANGO_OT_TYPE_INFO (pango_ot_info_get_type ()) +#define PANGO_OT_INFO(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_OT_TYPE_INFO, PangoOTInfo)) +#define PANGO_OT_IS_INFO(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_OT_TYPE_INFO)) +#else +#define PANGO_TYPE_OT_INFO (pango_ot_info_get_type ()) +#define PANGO_OT_INFO(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_OT_INFO, PangoOTInfo)) +#define PANGO_IS_OT_INFO(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_OT_INFO)) +#endif + +PANGO_DEPRECATED +GType pango_ot_info_get_type (void) G_GNUC_CONST; + +#ifdef __GI_SCANNER__ +#define PANGO_OT_TYPE_RULESET (pango_ot_ruleset_get_type ()) +#define PANGO_OT_RULESET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_OT_TYPE_RULESET, PangoOTRuleset)) +#define PANGO_OT_IS_RULESET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_OT_TYPE_RULESET)) +#else +#define PANGO_TYPE_OT_RULESET (pango_ot_ruleset_get_type ()) +#define PANGO_OT_RULESET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_OT_RULESET, PangoOTRuleset)) +#define PANGO_IS_OT_RULESET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_OT_RULESET)) +#endif + +PANGO_DEPRECATED +GType pango_ot_ruleset_get_type (void) G_GNUC_CONST; + + +PANGO_DEPRECATED +PangoOTInfo *pango_ot_info_get (FT_Face face); + +PANGO_DEPRECATED +gboolean pango_ot_info_find_script (PangoOTInfo *info, + PangoOTTableType table_type, + PangoOTTag script_tag, + guint *script_index); + +PANGO_DEPRECATED +gboolean pango_ot_info_find_language (PangoOTInfo *info, + PangoOTTableType table_type, + guint script_index, + PangoOTTag language_tag, + guint *language_index, + guint *required_feature_index); +PANGO_DEPRECATED +gboolean pango_ot_info_find_feature (PangoOTInfo *info, + PangoOTTableType table_type, + PangoOTTag feature_tag, + guint script_index, + guint language_index, + guint *feature_index); + +PANGO_DEPRECATED +PangoOTTag *pango_ot_info_list_scripts (PangoOTInfo *info, + PangoOTTableType table_type); +PANGO_DEPRECATED +PangoOTTag *pango_ot_info_list_languages (PangoOTInfo *info, + PangoOTTableType table_type, + guint script_index, + PangoOTTag language_tag); +PANGO_DEPRECATED +PangoOTTag *pango_ot_info_list_features (PangoOTInfo *info, + PangoOTTableType table_type, + PangoOTTag tag, + guint script_index, + guint language_index); + +#ifdef __GI_SCANNER__ +#define PANGO_OT_TYPE_BUFFER (pango_ot_buffer_get_type()) +#else +#define PANGO_TYPE_OT_BUFFER (pango_ot_buffer_get_type()) +#endif + +PANGO_DEPRECATED +GType pango_ot_buffer_get_type (void) G_GNUC_CONST; + +PANGO_DEPRECATED +PangoOTBuffer *pango_ot_buffer_new (PangoFcFont *font); +PANGO_DEPRECATED +void pango_ot_buffer_destroy (PangoOTBuffer *buffer); +PANGO_DEPRECATED +void pango_ot_buffer_clear (PangoOTBuffer *buffer); +PANGO_DEPRECATED +void pango_ot_buffer_set_rtl (PangoOTBuffer *buffer, + gboolean rtl); +PANGO_DEPRECATED +void pango_ot_buffer_add_glyph (PangoOTBuffer *buffer, + guint glyph, + guint properties, + guint cluster); +PANGO_DEPRECATED +void pango_ot_buffer_get_glyphs (const PangoOTBuffer *buffer, + PangoOTGlyph **glyphs, + int *n_glyphs); +PANGO_DEPRECATED +void pango_ot_buffer_output (const PangoOTBuffer *buffer, + PangoGlyphString *glyphs); + +PANGO_DEPRECATED +void pango_ot_buffer_set_zero_width_marks (PangoOTBuffer *buffer, + gboolean zero_width_marks); + +PANGO_DEPRECATED +const PangoOTRuleset *pango_ot_ruleset_get_for_description (PangoOTInfo *info, + const PangoOTRulesetDescription *desc); +PANGO_DEPRECATED +PangoOTRuleset *pango_ot_ruleset_new (PangoOTInfo *info); +PANGO_DEPRECATED +PangoOTRuleset *pango_ot_ruleset_new_for (PangoOTInfo *info, + PangoScript script, + PangoLanguage *language); +PANGO_DEPRECATED +PangoOTRuleset *pango_ot_ruleset_new_from_description (PangoOTInfo *info, + const PangoOTRulesetDescription *desc); +PANGO_DEPRECATED +void pango_ot_ruleset_add_feature (PangoOTRuleset *ruleset, + PangoOTTableType table_type, + guint feature_index, + gulong property_bit); +PANGO_DEPRECATED +gboolean pango_ot_ruleset_maybe_add_feature (PangoOTRuleset *ruleset, + PangoOTTableType table_type, + PangoOTTag feature_tag, + gulong property_bit); +PANGO_DEPRECATED +guint pango_ot_ruleset_maybe_add_features (PangoOTRuleset *ruleset, + PangoOTTableType table_type, + const PangoOTFeatureMap *features, + guint n_features); +PANGO_DEPRECATED +guint pango_ot_ruleset_get_feature_count (const PangoOTRuleset *ruleset, + guint *n_gsub_features, + guint *n_gpos_features); + +PANGO_DEPRECATED +void pango_ot_ruleset_substitute (const PangoOTRuleset *ruleset, + PangoOTBuffer *buffer); + +PANGO_DEPRECATED +void pango_ot_ruleset_position (const PangoOTRuleset *ruleset, + PangoOTBuffer *buffer); + +PANGO_DEPRECATED +PangoScript pango_ot_tag_to_script (PangoOTTag script_tag) G_GNUC_CONST; + +PANGO_DEPRECATED +PangoOTTag pango_ot_tag_from_script (PangoScript script) G_GNUC_CONST; + +PANGO_DEPRECATED +PangoLanguage *pango_ot_tag_to_language (PangoOTTag language_tag) G_GNUC_CONST; + +PANGO_DEPRECATED +PangoOTTag pango_ot_tag_from_language (PangoLanguage *language) G_GNUC_CONST; + +#ifdef __GI_SCANNER__ +#define PANGO_OT_TYPE_RULESET_DESCRIPTION (pango_ot_ruleset_description_get_type()) +#else +#define PANGO_TYPE_OT_RULESET_DESCRIPTION (pango_ot_ruleset_description_get_type()) +#endif + +PANGO_DEPRECATED +GType pango_ot_ruleset_description_get_type (void) G_GNUC_CONST; + +PANGO_DEPRECATED +guint pango_ot_ruleset_description_hash (const PangoOTRulesetDescription *desc) G_GNUC_PURE; + +PANGO_DEPRECATED +gboolean pango_ot_ruleset_description_equal (const PangoOTRulesetDescription *desc1, + const PangoOTRulesetDescription *desc2) G_GNUC_PURE; + +PANGO_DEPRECATED +PangoOTRulesetDescription *pango_ot_ruleset_description_copy (const PangoOTRulesetDescription *desc); + +PANGO_DEPRECATED +void pango_ot_ruleset_description_free (PangoOTRulesetDescription *desc); + + +#endif /* PANGO_DISABLE_DEPRECATED */ + +G_END_DECLS + +#endif /* __PANGO_OT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-renderer.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-renderer.h new file mode 100644 index 0000000..16a1bbd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-renderer.h @@ -0,0 +1,290 @@ +/* Pango + * pango-renderer.h: Base class for rendering + * + * Copyright (C) 2004, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifndef __PANGO_RENDERER_H_ +#define __PANGO_RENDERER_H_ + +#include + +G_BEGIN_DECLS + +#define PANGO_TYPE_RENDERER (pango_renderer_get_type()) +#define PANGO_RENDERER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_RENDERER, PangoRenderer)) +#define PANGO_IS_RENDERER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_RENDERER)) +#define PANGO_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_RENDERER, PangoRendererClass)) +#define PANGO_IS_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_RENDERER)) +#define PANGO_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_RENDERER, PangoRendererClass)) + +typedef struct _PangoRenderer PangoRenderer; +typedef struct _PangoRendererClass PangoRendererClass; +typedef struct _PangoRendererPrivate PangoRendererPrivate; + +/** + * PangoRenderPart: + * @PANGO_RENDER_PART_FOREGROUND: the text itself + * @PANGO_RENDER_PART_BACKGROUND: the area behind the text + * @PANGO_RENDER_PART_UNDERLINE: underlines + * @PANGO_RENDER_PART_STRIKETHROUGH: strikethrough lines + * @PANGO_RENDER_PART_OVERLINE: overlines + * + * `PangoRenderPart` defines different items to render for such + * purposes as setting colors. + * + * Since: 1.8 + **/ +/* When extending, note N_RENDER_PARTS #define in pango-renderer.c */ +typedef enum +{ + PANGO_RENDER_PART_FOREGROUND, + PANGO_RENDER_PART_BACKGROUND, + PANGO_RENDER_PART_UNDERLINE, + PANGO_RENDER_PART_STRIKETHROUGH, + PANGO_RENDER_PART_OVERLINE +} PangoRenderPart; + +/** + * PangoRenderer: + * @matrix: (nullable): the current transformation matrix for + * the Renderer; may be %NULL, which should be treated the + * same as the identity matrix. + * + * `PangoRenderer` is a base class for objects that can render text + * provided as `PangoGlyphString` or `PangoLayout`. + * + * By subclassing `PangoRenderer` and overriding operations such as + * @draw_glyphs and @draw_rectangle, renderers for particular font + * backends and destinations can be created. + * + * Since: 1.8 + */ +struct _PangoRenderer +{ + /*< private >*/ + GObject parent_instance; + + PangoUnderline underline; + gboolean strikethrough; + int active_count; + + /*< public >*/ + PangoMatrix *matrix; /* May be NULL */ + + /*< private >*/ + PangoRendererPrivate *priv; +}; + +/** + * PangoRendererClass: + * @draw_glyphs: draws a `PangoGlyphString` + * @draw_rectangle: draws a rectangle + * @draw_error_underline: draws a squiggly line that approximately + * covers the given rectangle in the style of an underline used to + * indicate a spelling error. + * @draw_shape: draw content for a glyph shaped with `PangoAttrShape` + * @x, @y are the coordinates of the left edge of the baseline, + * in user coordinates. + * @draw_trapezoid: draws a trapezoidal filled area + * @draw_glyph: draws a single glyph + * @part_changed: do renderer specific processing when rendering + * attributes change + * @begin: Do renderer-specific initialization before drawing + * @end: Do renderer-specific cleanup after drawing + * @prepare_run: updates the renderer for a new run + * @draw_glyph_item: draws a `PangoGlyphItem` + * + * Class structure for `PangoRenderer`. + * + * The following vfuncs take user space coordinates in Pango units + * and have default implementations: + * - draw_glyphs + * - draw_rectangle + * - draw_error_underline + * - draw_shape + * - draw_glyph_item + * + * The default draw_shape implementation draws nothing. + * + * The following vfuncs take device space coordinates as doubles + * and must be implemented: + * - draw_trapezoid + * - draw_glyph + * + * Since: 1.8 + */ +struct _PangoRendererClass +{ + /*< private >*/ + GObjectClass parent_class; + + /* vtable - not signals */ + /*< public >*/ + + void (*draw_glyphs) (PangoRenderer *renderer, + PangoFont *font, + PangoGlyphString *glyphs, + int x, + int y); + void (*draw_rectangle) (PangoRenderer *renderer, + PangoRenderPart part, + int x, + int y, + int width, + int height); + void (*draw_error_underline) (PangoRenderer *renderer, + int x, + int y, + int width, + int height); + void (*draw_shape) (PangoRenderer *renderer, + PangoAttrShape *attr, + int x, + int y); + + void (*draw_trapezoid) (PangoRenderer *renderer, + PangoRenderPart part, + double y1_, + double x11, + double x21, + double y2, + double x12, + double x22); + void (*draw_glyph) (PangoRenderer *renderer, + PangoFont *font, + PangoGlyph glyph, + double x, + double y); + + void (*part_changed) (PangoRenderer *renderer, + PangoRenderPart part); + + void (*begin) (PangoRenderer *renderer); + void (*end) (PangoRenderer *renderer); + + void (*prepare_run) (PangoRenderer *renderer, + PangoLayoutRun *run); + + void (*draw_glyph_item) (PangoRenderer *renderer, + const char *text, + PangoGlyphItem *glyph_item, + int x, + int y); + + /*< private >*/ + + /* Padding for future expansion */ + void (*_pango_reserved2) (void); + void (*_pango_reserved3) (void); + void (*_pango_reserved4) (void); +}; + +PANGO_AVAILABLE_IN_1_8 +GType pango_renderer_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_draw_layout (PangoRenderer *renderer, + PangoLayout *layout, + int x, + int y); +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_draw_layout_line (PangoRenderer *renderer, + PangoLayoutLine *line, + int x, + int y); +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_draw_glyphs (PangoRenderer *renderer, + PangoFont *font, + PangoGlyphString *glyphs, + int x, + int y); +PANGO_AVAILABLE_IN_1_22 +void pango_renderer_draw_glyph_item (PangoRenderer *renderer, + const char *text, + PangoGlyphItem *glyph_item, + int x, + int y); +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_draw_rectangle (PangoRenderer *renderer, + PangoRenderPart part, + int x, + int y, + int width, + int height); +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_draw_error_underline (PangoRenderer *renderer, + int x, + int y, + int width, + int height); +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_draw_trapezoid (PangoRenderer *renderer, + PangoRenderPart part, + double y1_, + double x11, + double x21, + double y2, + double x12, + double x22); +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_draw_glyph (PangoRenderer *renderer, + PangoFont *font, + PangoGlyph glyph, + double x, + double y); + +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_activate (PangoRenderer *renderer); +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_deactivate (PangoRenderer *renderer); + +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_part_changed (PangoRenderer *renderer, + PangoRenderPart part); + +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_set_color (PangoRenderer *renderer, + PangoRenderPart part, + const PangoColor *color); +PANGO_AVAILABLE_IN_1_8 +PangoColor *pango_renderer_get_color (PangoRenderer *renderer, + PangoRenderPart part); + +PANGO_AVAILABLE_IN_1_38 +void pango_renderer_set_alpha (PangoRenderer *renderer, + PangoRenderPart part, + guint16 alpha); +PANGO_AVAILABLE_IN_1_38 +guint16 pango_renderer_get_alpha (PangoRenderer *renderer, + PangoRenderPart part); + +PANGO_AVAILABLE_IN_1_8 +void pango_renderer_set_matrix (PangoRenderer *renderer, + const PangoMatrix *matrix); +PANGO_AVAILABLE_IN_1_8 +const PangoMatrix *pango_renderer_get_matrix (PangoRenderer *renderer); + +PANGO_AVAILABLE_IN_1_20 +PangoLayout *pango_renderer_get_layout (PangoRenderer *renderer); +PANGO_AVAILABLE_IN_1_20 +PangoLayoutLine *pango_renderer_get_layout_line (PangoRenderer *renderer); + +G_END_DECLS + +#endif /* __PANGO_RENDERER_H_ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-script.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-script.h new file mode 100644 index 0000000..e453301 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-script.h @@ -0,0 +1,335 @@ +/* Pango + * pango-script.h: Script tag handling + * + * Copyright (C) 2002 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_SCRIPT_H__ +#define __PANGO_SCRIPT_H__ + +#include + +G_BEGIN_DECLS + +/** + * PangoScriptIter: + * + * A `PangoScriptIter` is used to iterate through a string + * and identify ranges in different scripts. + **/ +typedef struct _PangoScriptIter PangoScriptIter; + +/** + * PangoScript: + * @PANGO_SCRIPT_INVALID_CODE: a value never returned from pango_script_for_unichar() + * @PANGO_SCRIPT_COMMON: a character used by multiple different scripts + * @PANGO_SCRIPT_INHERITED: a mark glyph that takes its script from the + * base glyph to which it is attached + * @PANGO_SCRIPT_ARABIC: Arabic + * @PANGO_SCRIPT_ARMENIAN: Armenian + * @PANGO_SCRIPT_BENGALI: Bengali + * @PANGO_SCRIPT_BOPOMOFO: Bopomofo + * @PANGO_SCRIPT_CHEROKEE: Cherokee + * @PANGO_SCRIPT_COPTIC: Coptic + * @PANGO_SCRIPT_CYRILLIC: Cyrillic + * @PANGO_SCRIPT_DESERET: Deseret + * @PANGO_SCRIPT_DEVANAGARI: Devanagari + * @PANGO_SCRIPT_ETHIOPIC: Ethiopic + * @PANGO_SCRIPT_GEORGIAN: Georgian + * @PANGO_SCRIPT_GOTHIC: Gothic + * @PANGO_SCRIPT_GREEK: Greek + * @PANGO_SCRIPT_GUJARATI: Gujarati + * @PANGO_SCRIPT_GURMUKHI: Gurmukhi + * @PANGO_SCRIPT_HAN: Han + * @PANGO_SCRIPT_HANGUL: Hangul + * @PANGO_SCRIPT_HEBREW: Hebrew + * @PANGO_SCRIPT_HIRAGANA: Hiragana + * @PANGO_SCRIPT_KANNADA: Kannada + * @PANGO_SCRIPT_KATAKANA: Katakana + * @PANGO_SCRIPT_KHMER: Khmer + * @PANGO_SCRIPT_LAO: Lao + * @PANGO_SCRIPT_LATIN: Latin + * @PANGO_SCRIPT_MALAYALAM: Malayalam + * @PANGO_SCRIPT_MONGOLIAN: Mongolian + * @PANGO_SCRIPT_MYANMAR: Myanmar + * @PANGO_SCRIPT_OGHAM: Ogham + * @PANGO_SCRIPT_OLD_ITALIC: Old Italic + * @PANGO_SCRIPT_ORIYA: Oriya + * @PANGO_SCRIPT_RUNIC: Runic + * @PANGO_SCRIPT_SINHALA: Sinhala + * @PANGO_SCRIPT_SYRIAC: Syriac + * @PANGO_SCRIPT_TAMIL: Tamil + * @PANGO_SCRIPT_TELUGU: Telugu + * @PANGO_SCRIPT_THAANA: Thaana + * @PANGO_SCRIPT_THAI: Thai + * @PANGO_SCRIPT_TIBETAN: Tibetan + * @PANGO_SCRIPT_CANADIAN_ABORIGINAL: Canadian Aboriginal + * @PANGO_SCRIPT_YI: Yi + * @PANGO_SCRIPT_TAGALOG: Tagalog + * @PANGO_SCRIPT_HANUNOO: Hanunoo + * @PANGO_SCRIPT_BUHID: Buhid + * @PANGO_SCRIPT_TAGBANWA: Tagbanwa + * @PANGO_SCRIPT_BRAILLE: Braille + * @PANGO_SCRIPT_CYPRIOT: Cypriot + * @PANGO_SCRIPT_LIMBU: Limbu + * @PANGO_SCRIPT_OSMANYA: Osmanya + * @PANGO_SCRIPT_SHAVIAN: Shavian + * @PANGO_SCRIPT_LINEAR_B: Linear B + * @PANGO_SCRIPT_TAI_LE: Tai Le + * @PANGO_SCRIPT_UGARITIC: Ugaritic + * @PANGO_SCRIPT_NEW_TAI_LUE: New Tai Lue. Since 1.10 + * @PANGO_SCRIPT_BUGINESE: Buginese. Since 1.10 + * @PANGO_SCRIPT_GLAGOLITIC: Glagolitic. Since 1.10 + * @PANGO_SCRIPT_TIFINAGH: Tifinagh. Since 1.10 + * @PANGO_SCRIPT_SYLOTI_NAGRI: Syloti Nagri. Since 1.10 + * @PANGO_SCRIPT_OLD_PERSIAN: Old Persian. Since 1.10 + * @PANGO_SCRIPT_KHAROSHTHI: Kharoshthi. Since 1.10 + * @PANGO_SCRIPT_UNKNOWN: an unassigned code point. Since 1.14 + * @PANGO_SCRIPT_BALINESE: Balinese. Since 1.14 + * @PANGO_SCRIPT_CUNEIFORM: Cuneiform. Since 1.14 + * @PANGO_SCRIPT_PHOENICIAN: Phoenician. Since 1.14 + * @PANGO_SCRIPT_PHAGS_PA: Phags-pa. Since 1.14 + * @PANGO_SCRIPT_NKO: N'Ko. Since 1.14 + * @PANGO_SCRIPT_KAYAH_LI: Kayah Li. Since 1.20.1 + * @PANGO_SCRIPT_LEPCHA: Lepcha. Since 1.20.1 + * @PANGO_SCRIPT_REJANG: Rejang. Since 1.20.1 + * @PANGO_SCRIPT_SUNDANESE: Sundanese. Since 1.20.1 + * @PANGO_SCRIPT_SAURASHTRA: Saurashtra. Since 1.20.1 + * @PANGO_SCRIPT_CHAM: Cham. Since 1.20.1 + * @PANGO_SCRIPT_OL_CHIKI: Ol Chiki. Since 1.20.1 + * @PANGO_SCRIPT_VAI: Vai. Since 1.20.1 + * @PANGO_SCRIPT_CARIAN: Carian. Since 1.20.1 + * @PANGO_SCRIPT_LYCIAN: Lycian. Since 1.20.1 + * @PANGO_SCRIPT_LYDIAN: Lydian. Since 1.20.1 + * @PANGO_SCRIPT_BATAK: Batak. Since 1.32 + * @PANGO_SCRIPT_BRAHMI: Brahmi. Since 1.32 + * @PANGO_SCRIPT_MANDAIC: Mandaic. Since 1.32 + * @PANGO_SCRIPT_CHAKMA: Chakma. Since: 1.32 + * @PANGO_SCRIPT_MEROITIC_CURSIVE: Meroitic Cursive. Since: 1.32 + * @PANGO_SCRIPT_MEROITIC_HIEROGLYPHS: Meroitic Hieroglyphs. Since: 1.32 + * @PANGO_SCRIPT_MIAO: Miao. Since: 1.32 + * @PANGO_SCRIPT_SHARADA: Sharada. Since: 1.32 + * @PANGO_SCRIPT_SORA_SOMPENG: Sora Sompeng. Since: 1.32 + * @PANGO_SCRIPT_TAKRI: Takri. Since: 1.32 + * @PANGO_SCRIPT_BASSA_VAH: Bassa. Since: 1.40 + * @PANGO_SCRIPT_CAUCASIAN_ALBANIAN: Caucasian Albanian. Since: 1.40 + * @PANGO_SCRIPT_DUPLOYAN: Duployan. Since: 1.40 + * @PANGO_SCRIPT_ELBASAN: Elbasan. Since: 1.40 + * @PANGO_SCRIPT_GRANTHA: Grantha. Since: 1.40 + * @PANGO_SCRIPT_KHOJKI: Kjohki. Since: 1.40 + * @PANGO_SCRIPT_KHUDAWADI: Khudawadi, Sindhi. Since: 1.40 + * @PANGO_SCRIPT_LINEAR_A: Linear A. Since: 1.40 + * @PANGO_SCRIPT_MAHAJANI: Mahajani. Since: 1.40 + * @PANGO_SCRIPT_MANICHAEAN: Manichaean. Since: 1.40 + * @PANGO_SCRIPT_MENDE_KIKAKUI: Mende Kikakui. Since: 1.40 + * @PANGO_SCRIPT_MODI: Modi. Since: 1.40 + * @PANGO_SCRIPT_MRO: Mro. Since: 1.40 + * @PANGO_SCRIPT_NABATAEAN: Nabataean. Since: 1.40 + * @PANGO_SCRIPT_OLD_NORTH_ARABIAN: Old North Arabian. Since: 1.40 + * @PANGO_SCRIPT_OLD_PERMIC: Old Permic. Since: 1.40 + * @PANGO_SCRIPT_PAHAWH_HMONG: Pahawh Hmong. Since: 1.40 + * @PANGO_SCRIPT_PALMYRENE: Palmyrene. Since: 1.40 + * @PANGO_SCRIPT_PAU_CIN_HAU: Pau Cin Hau. Since: 1.40 + * @PANGO_SCRIPT_PSALTER_PAHLAVI: Psalter Pahlavi. Since: 1.40 + * @PANGO_SCRIPT_SIDDHAM: Siddham. Since: 1.40 + * @PANGO_SCRIPT_TIRHUTA: Tirhuta. Since: 1.40 + * @PANGO_SCRIPT_WARANG_CITI: Warang Citi. Since: 1.40 + * @PANGO_SCRIPT_AHOM: Ahom. Since: 1.40 + * @PANGO_SCRIPT_ANATOLIAN_HIEROGLYPHS: Anatolian Hieroglyphs. Since: 1.40 + * @PANGO_SCRIPT_HATRAN: Hatran. Since: 1.40 + * @PANGO_SCRIPT_MULTANI: Multani. Since: 1.40 + * @PANGO_SCRIPT_OLD_HUNGARIAN: Old Hungarian. Since: 1.40 + * @PANGO_SCRIPT_SIGNWRITING: Signwriting. Since: 1.40 + * + * The `PangoScript` enumeration identifies different writing + * systems. + * + * The values correspond to the names as defined in the Unicode standard. See + * [Unicode Standard Annex 24: Script names](http://www.unicode.org/reports/tr24/) + * + * Note that this enumeration is deprecated and will not be updated to include values + * in newer versions of the Unicode standard. Applications should use the + * [enum@GLib.UnicodeScript] enumeration instead, + * whose values are interchangeable with `PangoScript`. + */ +typedef enum { /* ISO 15924 code */ + PANGO_SCRIPT_INVALID_CODE = -1, + PANGO_SCRIPT_COMMON = 0, /* Zyyy */ + PANGO_SCRIPT_INHERITED, /* Qaai */ + PANGO_SCRIPT_ARABIC, /* Arab */ + PANGO_SCRIPT_ARMENIAN, /* Armn */ + PANGO_SCRIPT_BENGALI, /* Beng */ + PANGO_SCRIPT_BOPOMOFO, /* Bopo */ + PANGO_SCRIPT_CHEROKEE, /* Cher */ + PANGO_SCRIPT_COPTIC, /* Qaac */ + PANGO_SCRIPT_CYRILLIC, /* Cyrl (Cyrs) */ + PANGO_SCRIPT_DESERET, /* Dsrt */ + PANGO_SCRIPT_DEVANAGARI, /* Deva */ + PANGO_SCRIPT_ETHIOPIC, /* Ethi */ + PANGO_SCRIPT_GEORGIAN, /* Geor (Geon, Geoa) */ + PANGO_SCRIPT_GOTHIC, /* Goth */ + PANGO_SCRIPT_GREEK, /* Grek */ + PANGO_SCRIPT_GUJARATI, /* Gujr */ + PANGO_SCRIPT_GURMUKHI, /* Guru */ + PANGO_SCRIPT_HAN, /* Hani */ + PANGO_SCRIPT_HANGUL, /* Hang */ + PANGO_SCRIPT_HEBREW, /* Hebr */ + PANGO_SCRIPT_HIRAGANA, /* Hira */ + PANGO_SCRIPT_KANNADA, /* Knda */ + PANGO_SCRIPT_KATAKANA, /* Kana */ + PANGO_SCRIPT_KHMER, /* Khmr */ + PANGO_SCRIPT_LAO, /* Laoo */ + PANGO_SCRIPT_LATIN, /* Latn (Latf, Latg) */ + PANGO_SCRIPT_MALAYALAM, /* Mlym */ + PANGO_SCRIPT_MONGOLIAN, /* Mong */ + PANGO_SCRIPT_MYANMAR, /* Mymr */ + PANGO_SCRIPT_OGHAM, /* Ogam */ + PANGO_SCRIPT_OLD_ITALIC, /* Ital */ + PANGO_SCRIPT_ORIYA, /* Orya */ + PANGO_SCRIPT_RUNIC, /* Runr */ + PANGO_SCRIPT_SINHALA, /* Sinh */ + PANGO_SCRIPT_SYRIAC, /* Syrc (Syrj, Syrn, Syre) */ + PANGO_SCRIPT_TAMIL, /* Taml */ + PANGO_SCRIPT_TELUGU, /* Telu */ + PANGO_SCRIPT_THAANA, /* Thaa */ + PANGO_SCRIPT_THAI, /* Thai */ + PANGO_SCRIPT_TIBETAN, /* Tibt */ + PANGO_SCRIPT_CANADIAN_ABORIGINAL, /* Cans */ + PANGO_SCRIPT_YI, /* Yiii */ + PANGO_SCRIPT_TAGALOG, /* Tglg */ + PANGO_SCRIPT_HANUNOO, /* Hano */ + PANGO_SCRIPT_BUHID, /* Buhd */ + PANGO_SCRIPT_TAGBANWA, /* Tagb */ + + /* Unicode-4.0 additions */ + PANGO_SCRIPT_BRAILLE, /* Brai */ + PANGO_SCRIPT_CYPRIOT, /* Cprt */ + PANGO_SCRIPT_LIMBU, /* Limb */ + PANGO_SCRIPT_OSMANYA, /* Osma */ + PANGO_SCRIPT_SHAVIAN, /* Shaw */ + PANGO_SCRIPT_LINEAR_B, /* Linb */ + PANGO_SCRIPT_TAI_LE, /* Tale */ + PANGO_SCRIPT_UGARITIC, /* Ugar */ + + /* Unicode-4.1 additions */ + PANGO_SCRIPT_NEW_TAI_LUE, /* Talu */ + PANGO_SCRIPT_BUGINESE, /* Bugi */ + PANGO_SCRIPT_GLAGOLITIC, /* Glag */ + PANGO_SCRIPT_TIFINAGH, /* Tfng */ + PANGO_SCRIPT_SYLOTI_NAGRI, /* Sylo */ + PANGO_SCRIPT_OLD_PERSIAN, /* Xpeo */ + PANGO_SCRIPT_KHAROSHTHI, /* Khar */ + + /* Unicode-5.0 additions */ + PANGO_SCRIPT_UNKNOWN, /* Zzzz */ + PANGO_SCRIPT_BALINESE, /* Bali */ + PANGO_SCRIPT_CUNEIFORM, /* Xsux */ + PANGO_SCRIPT_PHOENICIAN, /* Phnx */ + PANGO_SCRIPT_PHAGS_PA, /* Phag */ + PANGO_SCRIPT_NKO, /* Nkoo */ + + /* Unicode-5.1 additions */ + PANGO_SCRIPT_KAYAH_LI, /* Kali */ + PANGO_SCRIPT_LEPCHA, /* Lepc */ + PANGO_SCRIPT_REJANG, /* Rjng */ + PANGO_SCRIPT_SUNDANESE, /* Sund */ + PANGO_SCRIPT_SAURASHTRA, /* Saur */ + PANGO_SCRIPT_CHAM, /* Cham */ + PANGO_SCRIPT_OL_CHIKI, /* Olck */ + PANGO_SCRIPT_VAI, /* Vaii */ + PANGO_SCRIPT_CARIAN, /* Cari */ + PANGO_SCRIPT_LYCIAN, /* Lyci */ + PANGO_SCRIPT_LYDIAN, /* Lydi */ + + /* Unicode-6.0 additions */ + PANGO_SCRIPT_BATAK, /* Batk */ + PANGO_SCRIPT_BRAHMI, /* Brah */ + PANGO_SCRIPT_MANDAIC, /* Mand */ + + /* Unicode-6.1 additions */ + PANGO_SCRIPT_CHAKMA, /* Cakm */ + PANGO_SCRIPT_MEROITIC_CURSIVE, /* Merc */ + PANGO_SCRIPT_MEROITIC_HIEROGLYPHS,/* Mero */ + PANGO_SCRIPT_MIAO, /* Plrd */ + PANGO_SCRIPT_SHARADA, /* Shrd */ + PANGO_SCRIPT_SORA_SOMPENG, /* Sora */ + PANGO_SCRIPT_TAKRI, /* Takr */ + + /* Unicode 7.0 additions */ + PANGO_SCRIPT_BASSA_VAH, /* Bass */ + PANGO_SCRIPT_CAUCASIAN_ALBANIAN, /* Aghb */ + PANGO_SCRIPT_DUPLOYAN, /* Dupl */ + PANGO_SCRIPT_ELBASAN, /* Elba */ + PANGO_SCRIPT_GRANTHA, /* Gran */ + PANGO_SCRIPT_KHOJKI, /* Khoj */ + PANGO_SCRIPT_KHUDAWADI, /* Sind */ + PANGO_SCRIPT_LINEAR_A, /* Lina */ + PANGO_SCRIPT_MAHAJANI, /* Mahj */ + PANGO_SCRIPT_MANICHAEAN, /* Manu */ + PANGO_SCRIPT_MENDE_KIKAKUI, /* Mend */ + PANGO_SCRIPT_MODI, /* Modi */ + PANGO_SCRIPT_MRO, /* Mroo */ + PANGO_SCRIPT_NABATAEAN, /* Nbat */ + PANGO_SCRIPT_OLD_NORTH_ARABIAN, /* Narb */ + PANGO_SCRIPT_OLD_PERMIC, /* Perm */ + PANGO_SCRIPT_PAHAWH_HMONG, /* Hmng */ + PANGO_SCRIPT_PALMYRENE, /* Palm */ + PANGO_SCRIPT_PAU_CIN_HAU, /* Pauc */ + PANGO_SCRIPT_PSALTER_PAHLAVI, /* Phlp */ + PANGO_SCRIPT_SIDDHAM, /* Sidd */ + PANGO_SCRIPT_TIRHUTA, /* Tirh */ + PANGO_SCRIPT_WARANG_CITI, /* Wara */ + + /* Unicode 8.0 additions */ + PANGO_SCRIPT_AHOM, /* Ahom */ + PANGO_SCRIPT_ANATOLIAN_HIEROGLYPHS, /* Hluw */ + PANGO_SCRIPT_HATRAN, /* Hatr */ + PANGO_SCRIPT_MULTANI, /* Mult */ + PANGO_SCRIPT_OLD_HUNGARIAN, /* Hung */ + PANGO_SCRIPT_SIGNWRITING /* Sgnw */ +} PangoScript; + +#include + +PANGO_DEPRECATED_IN_1_44_FOR(g_unichar_get_script) +PangoScript pango_script_for_unichar (gunichar ch) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_44 +GType pango_script_iter_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_4 +PangoScriptIter *pango_script_iter_new (const char *text, + int length); +PANGO_AVAILABLE_IN_1_4 +void pango_script_iter_get_range (PangoScriptIter *iter, + const char **start, + const char **end, + PangoScript *script); +PANGO_AVAILABLE_IN_1_4 +gboolean pango_script_iter_next (PangoScriptIter *iter); +PANGO_AVAILABLE_IN_1_4 +void pango_script_iter_free (PangoScriptIter *iter); + +#include + +PANGO_AVAILABLE_IN_1_4 +PangoLanguage *pango_script_get_sample_language (PangoScript script) G_GNUC_PURE; + +G_END_DECLS + +#endif /* __PANGO_SCRIPT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-tabs.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-tabs.h new file mode 100644 index 0000000..07b3353 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-tabs.h @@ -0,0 +1,117 @@ +/* Pango + * pango-tabs.h: Tab-related stuff + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_TABS_H__ +#define __PANGO_TABS_H__ + +#include + +G_BEGIN_DECLS + +typedef struct _PangoTabArray PangoTabArray; + +/** + * PangoTabAlign: + * @PANGO_TAB_LEFT: the text appears to the right of the tab stop position + * @PANGO_TAB_RIGHT: the text appears to the left of the tab stop position + * until the available space is filled. Since: 1.50 + * @PANGO_TAB_CENTER: the text is centered at the tab stop position + * until the available space is filled. Since: 1.50 + * @PANGO_TAB_DECIMAL: text before the first occurrence of the decimal point + * character appears to the left of the tab stop position (until the available + * space is filled), the rest to the right. Since: 1.50 + * + * `PangoTabAlign` specifies where the text appears relative to the tab stop + * position. + */ +typedef enum +{ + PANGO_TAB_LEFT, + PANGO_TAB_RIGHT, + PANGO_TAB_CENTER, + PANGO_TAB_DECIMAL +} PangoTabAlign; + +#define PANGO_TYPE_TAB_ARRAY (pango_tab_array_get_type ()) + +PANGO_AVAILABLE_IN_ALL +PangoTabArray *pango_tab_array_new (gint initial_size, + gboolean positions_in_pixels); +PANGO_AVAILABLE_IN_ALL +PangoTabArray *pango_tab_array_new_with_positions (gint size, + gboolean positions_in_pixels, + PangoTabAlign first_alignment, + gint first_position, + ...); +PANGO_AVAILABLE_IN_ALL +GType pango_tab_array_get_type (void) G_GNUC_CONST; +PANGO_AVAILABLE_IN_ALL +PangoTabArray *pango_tab_array_copy (PangoTabArray *src); +PANGO_AVAILABLE_IN_ALL +void pango_tab_array_free (PangoTabArray *tab_array); +PANGO_AVAILABLE_IN_ALL +gint pango_tab_array_get_size (PangoTabArray *tab_array); +PANGO_AVAILABLE_IN_ALL +void pango_tab_array_resize (PangoTabArray *tab_array, + gint new_size); +PANGO_AVAILABLE_IN_ALL +void pango_tab_array_set_tab (PangoTabArray *tab_array, + gint tab_index, + PangoTabAlign alignment, + gint location); +PANGO_AVAILABLE_IN_ALL +void pango_tab_array_get_tab (PangoTabArray *tab_array, + gint tab_index, + PangoTabAlign *alignment, + gint *location); +PANGO_AVAILABLE_IN_ALL +void pango_tab_array_get_tabs (PangoTabArray *tab_array, + PangoTabAlign **alignments, + gint **locations); + +PANGO_AVAILABLE_IN_ALL +gboolean pango_tab_array_get_positions_in_pixels (PangoTabArray *tab_array); + +PANGO_AVAILABLE_IN_1_50 +void pango_tab_array_set_positions_in_pixels (PangoTabArray *tab_array, + gboolean positions_in_pixels); + +PANGO_AVAILABLE_IN_1_50 +char * pango_tab_array_to_string (PangoTabArray *tab_array); +PANGO_AVAILABLE_IN_1_50 +PangoTabArray * pango_tab_array_from_string (const char *text); + +PANGO_AVAILABLE_IN_1_50 +void pango_tab_array_set_decimal_point (PangoTabArray *tab_array, + int tab_index, + gunichar decimal_point); +PANGO_AVAILABLE_IN_1_50 +gunichar pango_tab_array_get_decimal_point (PangoTabArray *tab_array, + int tab_index); + +PANGO_AVAILABLE_IN_1_50 +void pango_tab_array_sort (PangoTabArray *tab_array); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoTabArray, pango_tab_array_free) + +G_END_DECLS + +#endif /* __PANGO_TABS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-types.h new file mode 100644 index 0000000..ed86f69 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-types.h @@ -0,0 +1,244 @@ +/* Pango + * pango-types.h: + * + * Copyright (C) 1999 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_TYPES_H__ +#define __PANGO_TYPES_H__ + +#include +#include + +#include + +G_BEGIN_DECLS + +typedef struct _PangoLogAttr PangoLogAttr; + +#ifndef __GI_SCANNER__ +typedef struct _PangoEngineLang PangoEngineLang; +typedef struct _PangoEngineShape PangoEngineShape; +#endif + +typedef struct _PangoFont PangoFont; +typedef struct _PangoFontMap PangoFontMap; + +typedef struct _PangoRectangle PangoRectangle; + +typedef struct _PangoContext PangoContext; + +typedef struct _PangoLanguage PangoLanguage; + +/* A index of a glyph into a font. Rendering system dependent */ +/** + * PangoGlyph: + * + * A `PangoGlyph` represents a single glyph in the output form of a string. + */ +typedef guint32 PangoGlyph; + + + +/** + * PANGO_SCALE: + * + * The scale between dimensions used for Pango distances and device units. + * + * The definition of device units is dependent on the output device; it will + * typically be pixels for a screen, and points for a printer. %PANGO_SCALE is + * currently 1024, but this may be changed in the future. + * + * When setting font sizes, device units are always considered to be + * points (as in "12 point font"), rather than pixels. + */ +/** + * PANGO_PIXELS: + * @d: a dimension in Pango units. + * + * Converts a dimension to device units by rounding. + * + * Return value: rounded dimension in device units. + */ +/** + * PANGO_PIXELS_FLOOR: + * @d: a dimension in Pango units. + * + * Converts a dimension to device units by flooring. + * + * Return value: floored dimension in device units. + * Since: 1.14 + */ +/** + * PANGO_PIXELS_CEIL: + * @d: a dimension in Pango units. + * + * Converts a dimension to device units by ceiling. + * + * Return value: ceiled dimension in device units. + * Since: 1.14 + */ +#define PANGO_SCALE 1024 +#define PANGO_PIXELS(d) (((int)(d) + 512) >> 10) +#define PANGO_PIXELS_FLOOR(d) (((int)(d)) >> 10) +#define PANGO_PIXELS_CEIL(d) (((int)(d) + 1023) >> 10) +/* The above expressions are just slightly wrong for floating point d; + * For example we'd expect PANGO_PIXELS(-512.5) => -1 but instead we get 0. + * That's unlikely to matter for practical use and the expression is much + * more compact and faster than alternatives that work exactly for both + * integers and floating point. + * + * PANGO_PIXELS also behaves differently for +512 and -512. + */ + +/** + * PANGO_UNITS_FLOOR: + * @d: a dimension in Pango units. + * + * Rounds a dimension down to whole device units, but does not + * convert it to device units. + * + * Return value: rounded down dimension in Pango units. + * Since: 1.50 + */ +#define PANGO_UNITS_FLOOR(d) \ + ((d) & ~(PANGO_SCALE - 1)) + +/** + * PANGO_UNITS_CEIL: + * @d: a dimension in Pango units. + * + * Rounds a dimension up to whole device units, but does not + * convert it to device units. + * + * Return value: rounded up dimension in Pango units. + * Since: 1.50 + */ +#define PANGO_UNITS_CEIL(d) \ + (((d) + (PANGO_SCALE - 1)) & ~(PANGO_SCALE - 1)) + +/** + * PANGO_UNITS_ROUND: + * @d: a dimension in Pango units. + * + * Rounds a dimension to whole device units, but does not + * convert it to device units. + * + * Return value: rounded dimension in Pango units. + * Since: 1.18 + */ +#define PANGO_UNITS_ROUND(d) \ + (((d) + (PANGO_SCALE >> 1)) & ~(PANGO_SCALE - 1)) + + +PANGO_AVAILABLE_IN_1_16 +int pango_units_from_double (double d) G_GNUC_CONST; +PANGO_AVAILABLE_IN_1_16 +double pango_units_to_double (int i) G_GNUC_CONST; + + + +/** + * PangoRectangle: + * @x: X coordinate of the left side of the rectangle. + * @y: Y coordinate of the the top side of the rectangle. + * @width: width of the rectangle. + * @height: height of the rectangle. + * + * The `PangoRectangle` structure represents a rectangle. + * + * `PangoRectangle` is frequently used to represent the logical or ink + * extents of a single glyph or section of text. (See, for instance, + * [method@Pango.Font.get_glyph_extents].) + */ +struct _PangoRectangle +{ + int x; + int y; + int width; + int height; +}; + +/* Macros to translate from extents rectangles to ascent/descent/lbearing/rbearing + */ +/** + * PANGO_ASCENT: + * @rect: a `PangoRectangle` + * + * Extracts the *ascent* from a `PangoRectangle` + * representing glyph extents. + * + * The ascent is the distance from the baseline to the + * highest point of the character. This is positive if the + * glyph ascends above the baseline. + */ +/** + * PANGO_DESCENT: + * @rect: a `PangoRectangle` + * + * Extracts the *descent* from a `PangoRectangle` + * representing glyph extents. + * + * The descent is the distance from the baseline to the + * lowest point of the character. This is positive if the + * glyph descends below the baseline. + */ +/** + * PANGO_LBEARING: + * @rect: a `PangoRectangle` + * + * Extracts the *left bearing* from a `PangoRectangle` + * representing glyph extents. + * + * The left bearing is the distance from the horizontal + * origin to the farthest left point of the character. + * This is positive for characters drawn completely to + * the right of the glyph origin. + */ +/** + * PANGO_RBEARING: + * @rect: a `PangoRectangle` + * + * Extracts the *right bearing* from a `PangoRectangle` + * representing glyph extents. + * + * The right bearing is the distance from the horizontal + * origin to the farthest right point of the character. + * This is positive except for characters drawn completely + * to the left of the horizontal origin. + */ +#define PANGO_ASCENT(rect) (-(rect).y) +#define PANGO_DESCENT(rect) ((rect).y + (rect).height) +#define PANGO_LBEARING(rect) ((rect).x) +#define PANGO_RBEARING(rect) ((rect).x + (rect).width) + +PANGO_AVAILABLE_IN_1_16 +void pango_extents_to_pixels (PangoRectangle *inclusive, + PangoRectangle *nearest); + + +#include +#include +#include +#include +#include + + +G_END_DECLS + +#endif /* __PANGO_TYPES_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-utils.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-utils.h new file mode 100644 index 0000000..49566cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-utils.h @@ -0,0 +1,187 @@ +/* Pango + * pango-utils.c: Utilities for internal functions and modules + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_UTILS_H__ +#define __PANGO_UTILS_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +PANGO_DEPRECATED +char ** pango_split_file_list (const char *str); + +PANGO_DEPRECATED +char *pango_trim_string (const char *str); +PANGO_DEPRECATED +gint pango_read_line (FILE *stream, + GString *str); +PANGO_DEPRECATED +gboolean pango_skip_space (const char **pos); +PANGO_DEPRECATED +gboolean pango_scan_word (const char **pos, + GString *out); +PANGO_DEPRECATED +gboolean pango_scan_string (const char **pos, + GString *out); +PANGO_DEPRECATED +gboolean pango_scan_int (const char **pos, + int *out); + +PANGO_DEPRECATED +gboolean pango_parse_enum (GType type, + const char *str, + int *value, + gboolean warn, + char **possible_values); + +/* Functions for parsing textual representations + * of PangoFontDescription fields. They return TRUE if the input string + * contains a valid value, which then has been assigned to the corresponding + * field in the PangoFontDescription. If the warn parameter is TRUE, + * a warning is printed (with g_warning) if the string does not + * contain a valid value. + */ +PANGO_AVAILABLE_IN_ALL +gboolean pango_parse_style (const char *str, + PangoStyle *style, + gboolean warn); +PANGO_AVAILABLE_IN_ALL +gboolean pango_parse_variant (const char *str, + PangoVariant *variant, + gboolean warn); +PANGO_AVAILABLE_IN_ALL +gboolean pango_parse_weight (const char *str, + PangoWeight *weight, + gboolean warn); +PANGO_AVAILABLE_IN_ALL +gboolean pango_parse_stretch (const char *str, + PangoStretch *stretch, + gboolean warn); + + +/* Hint line position and thickness. + */ +PANGO_AVAILABLE_IN_1_12 +void pango_quantize_line_geometry (int *thickness, + int *position); + +/* A routine from fribidi that we either wrap or provide ourselves. + */ +PANGO_AVAILABLE_IN_1_4 +guint8 * pango_log2vis_get_embedding_levels (const gchar *text, + int length, + PangoDirection *pbase_dir); + +/* Unicode characters that are zero-width and should not be rendered + * normally. + */ +PANGO_AVAILABLE_IN_1_10 +gboolean pango_is_zero_width (gunichar ch) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_ALL +void pango_find_paragraph_boundary (const char *text, + int length, + int *paragraph_delimiter_index, + int *next_paragraph_start); + +/* Pango version checking */ + +/* Encode a Pango version as an integer */ +/** + * PANGO_VERSION_ENCODE: + * @major: the major component of the version number + * @minor: the minor component of the version number + * @micro: the micro component of the version number + * + * This macro encodes the given Pango version into an integer. The numbers + * returned by %PANGO_VERSION and pango_version() are encoded using this macro. + * Two encoded version numbers can be compared as integers. + */ +#define PANGO_VERSION_ENCODE(major, minor, micro) ( \ + ((major) * 10000) \ + + ((minor) * 100) \ + + ((micro) * 1)) + +/* Encoded version of Pango at compile-time */ +/** + * PANGO_VERSION: + * + * The version of Pango available at compile-time, encoded using PANGO_VERSION_ENCODE(). + */ +/** + * PANGO_VERSION_STRING: + * + * A string literal containing the version of Pango available at compile-time. + */ +/** + * PANGO_VERSION_MAJOR: + * + * The major component of the version of Pango available at compile-time. + */ +/** + * PANGO_VERSION_MINOR: + * + * The minor component of the version of Pango available at compile-time. + */ +/** + * PANGO_VERSION_MICRO: + * + * The micro component of the version of Pango available at compile-time. + */ +#define PANGO_VERSION PANGO_VERSION_ENCODE( \ + PANGO_VERSION_MAJOR, \ + PANGO_VERSION_MINOR, \ + PANGO_VERSION_MICRO) + +/* Check that compile-time Pango is as new as required */ +/** + * PANGO_VERSION_CHECK: + * @major: the major component of the version number + * @minor: the minor component of the version number + * @micro: the micro component of the version number + * + * Checks that the version of Pango available at compile-time is not older than + * the provided version number. + */ +#define PANGO_VERSION_CHECK(major,minor,micro) \ + (PANGO_VERSION >= PANGO_VERSION_ENCODE(major,minor,micro)) + + +/* Return encoded version of Pango at run-time */ +PANGO_AVAILABLE_IN_1_16 +int pango_version (void) G_GNUC_CONST; + +/* Return run-time Pango version as an string */ +PANGO_AVAILABLE_IN_1_16 +const char * pango_version_string (void) G_GNUC_CONST; + +/* Check that run-time Pango is as new as required */ +PANGO_AVAILABLE_IN_1_16 +const char * pango_version_check (int required_major, + int required_minor, + int required_micro) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __PANGO_UTILS_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-version-macros.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-version-macros.h new file mode 100644 index 0000000..313ce69 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango-version-macros.h @@ -0,0 +1,756 @@ +/* Pango - Internationalized text layout and rendering library + * Copyright (C) 1999 Red Hat Software + * Copyright (C) 2012 Ryan Lortie, Matthias Clasen and Emmanuele Bassi + * Copyright (C) 2016 Chun-wei Fan + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#ifndef __PANGO_VERSION_H__ +#define __PANGO_VERSION_H__ + +#include + +#include + +#ifndef _PANGO_EXTERN +#define _PANGO_EXTERN extern +#endif + +#define PANGO_AVAILABLE_IN_ALL _PANGO_EXTERN + +/* XXX: Every new stable minor release bump should add a macro here */ + +/** + * PANGO_VERSION_1_2: + * + * A macro that evaluates to the 1.2 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_2 (G_ENCODE_VERSION (1, 2)) + +/** + * PANGO_VERSION_1_4: + * + * A macro that evaluates to the 1.4 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_4 (G_ENCODE_VERSION (1, 4)) + +/** + * PANGO_VERSION_1_6: + * + * A macro that evaluates to the 1.6 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_6 (G_ENCODE_VERSION (1, 6)) + +/** + * PANGO_VERSION_1_8: + * + * A macro that evaluates to the 1.8 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_8 (G_ENCODE_VERSION (1, 8)) + +/** + * PANGO_VERSION_1_10: + * + * A macro that evaluates to the 1.10 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_10 (G_ENCODE_VERSION (1, 10)) + +/** + * PANGO_VERSION_1_12: + * + * A macro that evaluates to the 1.12 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_12 (G_ENCODE_VERSION (1, 12)) + +/** + * PANGO_VERSION_1_14: + * + * A macro that evaluates to the 1.14 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_14 (G_ENCODE_VERSION (1, 14)) + +/** + * PANGO_VERSION_1_16: + * + * A macro that evaluates to the 1.16 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_16 (G_ENCODE_VERSION (1, 16)) + +/** + * PANGO_VERSION_1_18: + * + * A macro that evaluates to the 1.18 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_18 (G_ENCODE_VERSION (1, 18)) + +/** + * PANGO_VERSION_1_20: + * + * A macro that evaluates to the 1.20 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_20 (G_ENCODE_VERSION (1, 20)) + +/** + * PANGO_VERSION_1_22: + * + * A macro that evaluates to the 1.22 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_22 (G_ENCODE_VERSION (1, 22)) + +/** + * PANGO_VERSION_1_24: + * + * A macro that evaluates to the 1.24 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_24 (G_ENCODE_VERSION (1, 24)) + +/** + * PANGO_VERSION_1_26: + * + * A macro that evaluates to the 1.26 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_26 (G_ENCODE_VERSION (1, 26)) + +/** + * PANGO_VERSION_1_28: + * + * A macro that evaluates to the 1.28 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_28 (G_ENCODE_VERSION (1, 28)) + +/** + * PANGO_VERSION_1_30: + * + * A macro that evaluates to the 1.30 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_30 (G_ENCODE_VERSION (1, 30)) + +/** + * PANGO_VERSION_1_32: + * + * A macro that evaluates to the 1.32 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_32 (G_ENCODE_VERSION (1, 32)) + +/** + * PANGO_VERSION_1_34: + * + * A macro that evaluates to the 1.34 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_34 (G_ENCODE_VERSION (1, 34)) + +/** + * PANGO_VERSION_1_36: + * + * A macro that evaluates to the 1.36 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_36 (G_ENCODE_VERSION (1, 36)) + +/** + * PANGO_VERSION_1_38: + * + * A macro that evaluates to the 1.38 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_38 (G_ENCODE_VERSION (1, 38)) + +/** + * PANGO_VERSION_1_40: + * + * A macro that evaluates to the 1.40 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_40 (G_ENCODE_VERSION (1, 40)) + +/** + * PANGO_VERSION_1_42: + * + * A macro that evaluates to the 1.42 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.42 + */ +#define PANGO_VERSION_1_42 (G_ENCODE_VERSION (1, 42)) + +/** + * PANGO_VERSION_1_44: + * + * A macro that evaluates to the 1.44 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.44 + */ +#define PANGO_VERSION_1_44 (G_ENCODE_VERSION (1, 44)) + +/** + * PANGO_VERSION_1_46: + * + * A macro that evaluates to the 1.46 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.46 + */ +#define PANGO_VERSION_1_46 (G_ENCODE_VERSION (1, 46)) + +/** + * PANGO_VERSION_1_48: + * + * A macro that evaluates to the 1.48 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.48 + */ +#define PANGO_VERSION_1_48 (G_ENCODE_VERSION (1, 48)) + +/** + * PANGO_VERSION_1_50: + * + * A macro that evaluates to the 1.50 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.50 + */ +#define PANGO_VERSION_1_50 (G_ENCODE_VERSION (1, 50)) + +/** + * PANGO_VERSION_1_52: + * + * A macro that evaluates to the 1.52 version of Pango, in a format + * that can be used by the C pre-processor. + * + * Since: 1.52 + */ +#define PANGO_VERSION_1_52 (G_ENCODE_VERSION (1, 52)) + +/* evaluates to the current stable version; for development cycles, + * this means the next stable target + */ +#if (PANGO_VERSION_MINOR % 2) +#define PANGO_VERSION_CUR_STABLE (G_ENCODE_VERSION (PANGO_VERSION_MAJOR, PANGO_VERSION_MINOR + 1)) +#else +#define PANGO_VERSION_CUR_STABLE (G_ENCODE_VERSION (PANGO_VERSION_MAJOR, PANGO_VERSION_MINOR)) +#endif + +/* evaluates to the previous stable version */ +#if (PANGO_VERSION_MINOR % 2) +#define PANGO_VERSION_PREV_STABLE (G_ENCODE_VERSION (PANGO_VERSION_MAJOR, PANGO_VERSION_MINOR - 1)) +#else +#define PANGO_VERSION_PREV_STABLE (G_ENCODE_VERSION (PANGO_VERSION_MAJOR, PANGO_VERSION_MINOR - 2)) +#endif + +/** + * PANGO_VERSION_MIN_REQUIRED: + * + * A macro that should be defined by the user prior to including + * the pango.h header. + * The definition should be one of the predefined Pango version + * macros: %PANGO_VERSION_1_2, %PANGO_VERSION_1_4,... + * + * This macro defines the earliest version of Pango that the package is + * required to be able to compile against. + * + * If the compiler is configured to warn about the use of deprecated + * functions, then using functions that were deprecated in version + * %PANGO_VERSION_MIN_REQUIRED or earlier will cause warnings (but + * using functions deprecated in later releases will not). + * + * Since: 1.42 + */ +/* If the package sets PANGO_VERSION_MIN_REQUIRED to some future + * PANGO_VERSION_X_Y value that we don't know about, it will compare as + * 0 in preprocessor tests. + */ +#ifndef PANGO_VERSION_MIN_REQUIRED +# define PANGO_VERSION_MIN_REQUIRED (PANGO_VERSION_CUR_STABLE) +#elif PANGO_VERSION_MIN_REQUIRED == 0 +# undef PANGO_VERSION_MIN_REQUIRED +# define PANGO_VERSION_MIN_REQUIRED (PANGO_VERSION_CUR_STABLE + 2) +#endif + +/** + * PANGO_VERSION_MAX_ALLOWED: + * + * A macro that should be defined by the user prior to including + * the glib.h header. + * The definition should be one of the predefined Pango version + * macros: %PANGO_VERSION_1_2, %PANGO_VERSION_1_4,... + * + * This macro defines the latest version of the Pango API that the + * package is allowed to make use of. + * + * If the compiler is configured to warn about the use of deprecated + * functions, then using functions added after version + * %PANGO_VERSION_MAX_ALLOWED will cause warnings. + * + * Unless you are using PANGO_VERSION_CHECK() or the like to compile + * different code depending on the Pango version, then this should be + * set to the same value as %PANGO_VERSION_MIN_REQUIRED. + * + * Since: 1.42 + */ +#if !defined (PANGO_VERSION_MAX_ALLOWED) || (PANGO_VERSION_MAX_ALLOWED == 0) +# undef PANGO_VERSION_MAX_ALLOWED +# define PANGO_VERSION_MAX_ALLOWED (PANGO_VERSION_CUR_STABLE) +#endif + +/* sanity checks */ +#if PANGO_VERSION_MIN_REQUIRED > PANGO_VERSION_CUR_STABLE +#error "PANGO_VERSION_MIN_REQUIRED must be <= PANGO_VERSION_CUR_STABLE" +#endif +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_MIN_REQUIRED +#error "PANGO_VERSION_MAX_ALLOWED must be >= PANGO_VERSION_MIN_REQUIRED" +#endif +#if PANGO_VERSION_MIN_REQUIRED < PANGO_VERSION_1_2 +#error "PANGO_VERSION_MIN_REQUIRED must be >= PANGO_VERSION_1_2" +#endif + +/* These macros are used to mark deprecated functions in Pango headers, + * and thus have to be exposed in installed headers. + */ +#ifdef PANGO_DISABLE_DEPRECATION_WARNINGS +# define PANGO_DEPRECATED _PANGO_EXTERN +# define PANGO_DEPRECATED_FOR(f) _PANGO_EXTERN +# define PANGO_UNAVAILABLE(maj,min) _PANGO_EXTERN +#else +# define PANGO_DEPRECATED G_DEPRECATED _PANGO_EXTERN +# define PANGO_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _PANGO_EXTERN +# define PANGO_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _PANGO_EXTERN +#endif + +/* XXX: Every new stable minor release should add a set of macros here */ +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_2 +# define PANGO_DEPRECATED_IN_1_2 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_2_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_2 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_2_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_2 +# define PANGO_AVAILABLE_IN_1_2 PANGO_UNAVAILABLE(1, 2) +#else +# define PANGO_AVAILABLE_IN_1_2 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_4 +# define PANGO_DEPRECATED_IN_1_4 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_4_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_4 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_4_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_4 +# define PANGO_AVAILABLE_IN_1_4 PANGO_UNAVAILABLE(1, 4) +#else +# define PANGO_AVAILABLE_IN_1_4 _PANGO_EXTERN +#endif + + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_6 +# define PANGO_DEPRECATED_IN_1_6 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_6_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_6 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_6_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_6 +# define PANGO_AVAILABLE_IN_1_6 PANGO_UNAVAILABLE(1, 6) +#else +# define PANGO_AVAILABLE_IN_1_6 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_8 +# define PANGO_DEPRECATED_IN_1_8 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_8_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_8 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_8_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_8 +# define PANGO_AVAILABLE_IN_1_8 PANGO_UNAVAILABLE(1, 8) +#else +# define PANGO_AVAILABLE_IN_1_8 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_10 +# define PANGO_DEPRECATED_IN_1_10 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_10_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_10 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_10_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_10 +# define PANGO_AVAILABLE_IN_1_10 PANGO_UNAVAILABLE(1, 10) +#else +# define PANGO_AVAILABLE_IN_1_10 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_12 +# define PANGO_AVAILABLE_IN_1_12 PANGO_UNAVAILABLE(1, 12) +#else +# define PANGO_AVAILABLE_IN_1_12 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_12 +# define PANGO_DEPRECATED_IN_1_12 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_12_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_12 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_12_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_14 +# define PANGO_AVAILABLE_IN_1_14 PANGO_UNAVAILABLE(1, 14) +#else +# define PANGO_AVAILABLE_IN_1_14 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_14 +# define PANGO_DEPRECATED_IN_1_14 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_14_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_14 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_14_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_16 +# define PANGO_AVAILABLE_IN_1_16 PANGO_UNAVAILABLE(1, 16) +#else +# define PANGO_AVAILABLE_IN_1_16 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_16 +# define PANGO_DEPRECATED_IN_1_16 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_16_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_16 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_16_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_18 +# define PANGO_DEPRECATED_IN_1_18 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_18_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_18 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_18_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_18 +# define PANGO_AVAILABLE_IN_1_18 PANGO_UNAVAILABLE(1, 18) +#else +# define PANGO_AVAILABLE_IN_1_18 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_20 +# define PANGO_DEPRECATED_IN_1_20 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_20_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_20 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_20_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_20 +# define PANGO_AVAILABLE_IN_1_20 PANGO_UNAVAILABLE(1, 20) +#else +# define PANGO_AVAILABLE_IN_1_20 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_22 +# define PANGO_DEPRECATED_IN_1_22 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_22_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_22 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_22_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_22 +# define PANGO_AVAILABLE_IN_1_22 PANGO_UNAVAILABLE(1, 22) +#else +# define PANGO_AVAILABLE_IN_1_22 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_24 +# define PANGO_DEPRECATED_IN_1_24 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_24_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_24 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_24_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_24 +# define PANGO_AVAILABLE_IN_1_24 PANGO_UNAVAILABLE(1, 24) +#else +# define PANGO_AVAILABLE_IN_1_24 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_26 +# define PANGO_DEPRECATED_IN_1_26 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_26_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_26 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_26_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_26 +# define PANGO_AVAILABLE_IN_1_26 PANGO_UNAVAILABLE(1, 26) +#else +# define PANGO_AVAILABLE_IN_1_26 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_28 +# define PANGO_DEPRECATED_IN_1_28 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_28_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_28 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_28_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_28 +# define PANGO_AVAILABLE_IN_1_28 PANGO_UNAVAILABLE(1, 28) +#else +# define PANGO_AVAILABLE_IN_1_28 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_30 +# define PANGO_DEPRECATED_IN_1_30 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_30_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_30 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_30_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_30 +# define PANGO_AVAILABLE_IN_1_30 PANGO_UNAVAILABLE(1, 30) +#else +# define PANGO_AVAILABLE_IN_1_30 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_32 +# define PANGO_DEPRECATED_IN_1_32 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_32_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_32 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_32_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_32 +# define PANGO_AVAILABLE_IN_1_32 PANGO_UNAVAILABLE(1, 32) +#else +# define PANGO_AVAILABLE_IN_1_32 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_34 +# define PANGO_DEPRECATED_IN_1_34 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_34_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_34 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_34_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_34 +# define PANGO_AVAILABLE_IN_1_34 PANGO_UNAVAILABLE(1, 34) +#else +# define PANGO_AVAILABLE_IN_1_34 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_36 +# define PANGO_DEPRECATED_IN_1_36 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_36_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_36 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_36_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_36 +# define PANGO_AVAILABLE_IN_1_36 PANGO_UNAVAILABLE(1, 36) +#else +# define PANGO_AVAILABLE_IN_1_36 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_38 +# define PANGO_DEPRECATED_IN_1_38 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_38_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_38 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_38_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_38 +# define PANGO_AVAILABLE_IN_1_38 PANGO_UNAVAILABLE(1, 38) +#else +# define PANGO_AVAILABLE_IN_1_38 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_40 +# define PANGO_DEPRECATED_IN_1_40 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_40_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_40 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_40_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_40 +# define PANGO_AVAILABLE_IN_1_40 PANGO_UNAVAILABLE(1, 40) +#else +# define PANGO_AVAILABLE_IN_1_40 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_42 +# define PANGO_DEPRECATED_IN_1_42 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_42_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_42 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_42_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_42 +# define PANGO_AVAILABLE_IN_1_42 PANGO_UNAVAILABLE(1, 42) +#else +# define PANGO_AVAILABLE_IN_1_42 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_44 +# define PANGO_DEPRECATED_IN_1_44 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_44_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_44 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_44_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_44 +# define PANGO_AVAILABLE_IN_1_44 PANGO_UNAVAILABLE(1, 44) +#else +# define PANGO_AVAILABLE_IN_1_44 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_46 +# define PANGO_DEPRECATED_IN_1_46 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_46_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_46 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_46_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_46 +# define PANGO_AVAILABLE_IN_1_46 PANGO_UNAVAILABLE(1, 46) +#else +# define PANGO_AVAILABLE_IN_1_46 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_48 +# define PANGO_DEPRECATED_IN_1_48 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_48_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_48 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_48_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_48 +# define PANGO_AVAILABLE_IN_1_48 PANGO_UNAVAILABLE(1, 48) +#else +# define PANGO_AVAILABLE_IN_1_48 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_50 +# define PANGO_DEPRECATED_IN_1_50 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_50_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_50 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_50_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_50 +# define PANGO_AVAILABLE_IN_1_50 PANGO_UNAVAILABLE(1, 50) +#else +# define PANGO_AVAILABLE_IN_1_50 _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_52 +# define PANGO_DEPRECATED_IN_1_52 PANGO_DEPRECATED +# define PANGO_DEPRECATED_IN_1_52_FOR(f) PANGO_DEPRECATED_FOR(f) +#else +# define PANGO_DEPRECATED_IN_1_52 _PANGO_EXTERN +# define PANGO_DEPRECATED_IN_1_52_FOR(f) _PANGO_EXTERN +#endif + +#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_52 +# define PANGO_AVAILABLE_IN_1_52 PANGO_UNAVAILABLE(1, 52) +#else +# define PANGO_AVAILABLE_IN_1_52 _PANGO_EXTERN +#endif + +#endif /* __PANGO_VERSION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango.h new file mode 100644 index 0000000..eca6626 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pango.h @@ -0,0 +1,54 @@ +/* Pango + * pango.h: + * + * Copyright (C) 1999 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_H__ +#define __PANGO_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif /* __PANGO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangocairo.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangocairo.h new file mode 100644 index 0000000..7e86055 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangocairo.h @@ -0,0 +1,220 @@ +/* Pango + * pangocairo.h: + * + * Copyright (C) 1999, 2004 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGOCAIRO_H__ +#define __PANGOCAIRO_H__ + +#include +#include + +G_BEGIN_DECLS + +/** + * PangoCairoFont: + * + * `PangoCairoFont` is an interface exported by fonts for + * use with Cairo. + * + * The actual type of the font will depend on the particular + * font technology Cairo was compiled to use. + * + * Since: 1.18 + **/ +typedef struct _PangoCairoFont PangoCairoFont; + +/* This is a hack because PangoCairo is hijacking the Pango namespace, but + * consumers of the PangoCairo API expect these symbols to live under the + * PangoCairo namespace. + */ +#ifdef __GI_SCANNER__ +#define PANGO_CAIRO_TYPE_FONT (pango_cairo_font_get_type()) +#define PANGO_CAIRO_FONT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PANGO_CAIRO_TYPE_FONT, PangoCairoFont)) +#define PANGO_CAIRO_IS_FONT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PANGO_CAIRO_TYPE_FONT)) +#else +#define PANGO_TYPE_CAIRO_FONT (pango_cairo_font_get_type ()) +#define PANGO_CAIRO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_CAIRO_FONT, PangoCairoFont)) +#define PANGO_IS_CAIRO_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_CAIRO_FONT)) +#endif + +/** + * PangoCairoFontMap: + * + * `PangoCairoFontMap` is an interface exported by font maps for + * use with Cairo. + * + * The actual type of the font map will depend on the particular + * font technology Cairo was compiled to use. + * + * Since: 1.10 + **/ +typedef struct _PangoCairoFontMap PangoCairoFontMap; + +#ifdef __GI_SCANNER__ +#define PANGO_CAIRO_TYPE_FONT_MAP (pango_cairo_font_map_get_type()) +#define PANGO_CAIRO_FONT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PANGO_CAIRO_TYPE_FONT_MAP, PangoCairoFontMap)) +#define PANGO_CAIRO_IS_FONT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PANGO_CAIRO_TYPE_FONT_MAP)) +#else +#define PANGO_TYPE_CAIRO_FONT_MAP (pango_cairo_font_map_get_type ()) +#define PANGO_CAIRO_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_CAIRO_FONT_MAP, PangoCairoFontMap)) +#define PANGO_IS_CAIRO_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_CAIRO_FONT_MAP)) +#endif + +/** + * PangoCairoShapeRendererFunc: + * @cr: a Cairo context with current point set to where the shape should + * be rendered + * @attr: the %PANGO_ATTR_SHAPE to render + * @do_path: whether only the shape path should be appended to current + * path of @cr and no filling/stroking done. This will be set + * to %TRUE when called from pango_cairo_layout_path() and + * pango_cairo_layout_line_path() rendering functions. + * @data: (closure): user data passed to pango_cairo_context_set_shape_renderer() + * + * Function type for rendering attributes of type %PANGO_ATTR_SHAPE + * with Pango's Cairo renderer. + */ +typedef void (* PangoCairoShapeRendererFunc) (cairo_t *cr, + PangoAttrShape *attr, + gboolean do_path, + gpointer data); + +/* + * PangoCairoFontMap + */ +PANGO_AVAILABLE_IN_1_10 +GType pango_cairo_font_map_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_10 +PangoFontMap *pango_cairo_font_map_new (void); +PANGO_AVAILABLE_IN_1_18 +PangoFontMap *pango_cairo_font_map_new_for_font_type (cairo_font_type_t fonttype); +PANGO_AVAILABLE_IN_1_10 +PangoFontMap *pango_cairo_font_map_get_default (void); +PANGO_AVAILABLE_IN_1_22 +void pango_cairo_font_map_set_default (PangoCairoFontMap *fontmap); +PANGO_AVAILABLE_IN_1_18 +cairo_font_type_t pango_cairo_font_map_get_font_type (PangoCairoFontMap *fontmap); + +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_font_map_set_resolution (PangoCairoFontMap *fontmap, + double dpi); +PANGO_AVAILABLE_IN_1_10 +double pango_cairo_font_map_get_resolution (PangoCairoFontMap *fontmap); +#ifndef PANGO_DISABLE_DEPRECATED +PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context) +PangoContext *pango_cairo_font_map_create_context (PangoCairoFontMap *fontmap); +#endif + +/* + * PangoCairoFont + */ +PANGO_AVAILABLE_IN_1_18 +GType pango_cairo_font_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_18 +cairo_scaled_font_t *pango_cairo_font_get_scaled_font (PangoCairoFont *font); + +/* Update a Pango context for the current state of a cairo context + */ +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_update_context (cairo_t *cr, + PangoContext *context); + +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_context_set_font_options (PangoContext *context, + const cairo_font_options_t *options); +PANGO_AVAILABLE_IN_1_10 +const cairo_font_options_t *pango_cairo_context_get_font_options (PangoContext *context); + +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_context_set_resolution (PangoContext *context, + double dpi); +PANGO_AVAILABLE_IN_1_10 +double pango_cairo_context_get_resolution (PangoContext *context); + +PANGO_AVAILABLE_IN_1_18 +void pango_cairo_context_set_shape_renderer (PangoContext *context, + PangoCairoShapeRendererFunc func, + gpointer data, + GDestroyNotify dnotify); +PANGO_AVAILABLE_IN_1_18 +PangoCairoShapeRendererFunc pango_cairo_context_get_shape_renderer (PangoContext *context, + gpointer *data); + +/* Convenience + */ +PANGO_AVAILABLE_IN_1_22 +PangoContext *pango_cairo_create_context (cairo_t *cr); +PANGO_AVAILABLE_IN_ALL +PangoLayout *pango_cairo_create_layout (cairo_t *cr); +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_update_layout (cairo_t *cr, + PangoLayout *layout); + +/* + * Rendering + */ +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_show_glyph_string (cairo_t *cr, + PangoFont *font, + PangoGlyphString *glyphs); +PANGO_AVAILABLE_IN_1_22 +void pango_cairo_show_glyph_item (cairo_t *cr, + const char *text, + PangoGlyphItem *glyph_item); +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_show_layout_line (cairo_t *cr, + PangoLayoutLine *line); +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_show_layout (cairo_t *cr, + PangoLayout *layout); + +PANGO_AVAILABLE_IN_1_14 +void pango_cairo_show_error_underline (cairo_t *cr, + double x, + double y, + double width, + double height); + +/* + * Rendering to a path + */ +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_glyph_string_path (cairo_t *cr, + PangoFont *font, + PangoGlyphString *glyphs); +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_layout_line_path (cairo_t *cr, + PangoLayoutLine *line); +PANGO_AVAILABLE_IN_1_10 +void pango_cairo_layout_path (cairo_t *cr, + PangoLayout *layout); + +PANGO_AVAILABLE_IN_1_14 +void pango_cairo_error_underline_path (cairo_t *cr, + double x, + double y, + double width, + double height); + +G_END_DECLS + +#endif /* __PANGOCAIRO_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-decoder.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-decoder.h new file mode 100644 index 0000000..6268c42 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-decoder.h @@ -0,0 +1,122 @@ +/* Pango + * pangofc-decoder.h: Custom encoders/decoders on a per-font basis. + * + * Copyright (C) 2004 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_DECODER_H_ +#define __PANGO_DECODER_H_ + +#include + +G_BEGIN_DECLS + +#ifdef __GI_SCANNER__ +#define PANGO_FC_TYPE_DECODER (pango_fc_decoder_get_type()) +#define PANGO_FC_DECODER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_FC_TYPE_DECODER, PangoFcDecoder)) +#define PANGO_FC_IS_DECODER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_FC_TYPE_DECODER)) +#define PANGO_FC_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_FC_TYPE_DECODER, PangoFcDecoderClass)) +#define PANGO_FC_IS_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_FC_TYPE_DECODER)) +#define PANGO_FC_DECODER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_FC_TYPE_DECODER, PangoFcDecoderClass)) +#else +#define PANGO_TYPE_FC_DECODER (pango_fc_decoder_get_type()) +#define PANGO_FC_DECODER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FC_DECODER, PangoFcDecoder)) +#define PANGO_IS_FC_DECODER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FC_DECODER)) +#define PANGO_FC_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FC_DECODER, PangoFcDecoderClass)) +#define PANGO_IS_FC_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FC_DECODER)) +#define PANGO_FC_DECODER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FC_DECODER, PangoFcDecoderClass)) +#endif + +typedef struct _PangoFcDecoder PangoFcDecoder; +typedef struct _PangoFcDecoderClass PangoFcDecoderClass; + +/** + * PangoFcDecoder: + * + * `PangoFcDecoder` is a virtual base class that implementations will + * inherit from. + * + * It's the interface that is used to define a custom encoding for a font. + * These objects are created in your code from a function callback that was + * originally registered with [method@PangoFc.FontMap.add_decoder_find_func]. + * Pango requires information about the supported charset for a font as well + * as the individual character to glyph conversions. Pango gets that + * information via the #get_charset and #get_glyph callbacks into your + * object implementation. + * + * Since: 1.6 + **/ +struct _PangoFcDecoder +{ + /*< private >*/ + GObject parent_instance; +}; + +/** + * PangoFcDecoderClass: + * @get_charset: This returns an `FcCharset` given a `PangoFcFont` that + * includes a list of supported characters in the font. The + * #FcCharSet that is returned should be an internal reference to your + * code. Pango will not free this structure. It is important that + * you make this callback fast because this callback is called + * separately for each character to determine Unicode coverage. + * @get_glyph: This returns a single `PangoGlyph` for a given Unicode + * code point. + * + * Class structure for `PangoFcDecoder`. + * + * Since: 1.6 + **/ +struct _PangoFcDecoderClass +{ + /*< private >*/ + GObjectClass parent_class; + + /* vtable - not signals */ + /*< public >*/ + FcCharSet *(*get_charset) (PangoFcDecoder *decoder, + PangoFcFont *fcfont); + PangoGlyph (*get_glyph) (PangoFcDecoder *decoder, + PangoFcFont *fcfont, + guint32 wc); + + /*< private >*/ + + /* Padding for future expansion */ + void (*_pango_reserved1) (void); + void (*_pango_reserved2) (void); + void (*_pango_reserved3) (void); + void (*_pango_reserved4) (void); +}; + +PANGO_AVAILABLE_IN_1_6 +GType pango_fc_decoder_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_6 +FcCharSet *pango_fc_decoder_get_charset (PangoFcDecoder *decoder, + PangoFcFont *fcfont); + +PANGO_AVAILABLE_IN_1_6 +PangoGlyph pango_fc_decoder_get_glyph (PangoFcDecoder *decoder, + PangoFcFont *fcfont, + guint32 wc); + +G_END_DECLS + +#endif /* __PANGO_DECODER_H_ */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-font.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-font.h new file mode 100644 index 0000000..25361fa --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-font.h @@ -0,0 +1,120 @@ +/* Pango + * pangofc-font.h: Base fontmap type for fontconfig-based backends + * + * Copyright (C) 2003 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_FC_FONT_H__ +#define __PANGO_FC_FONT_H__ + +#include +#include +#include + +/* Freetype has undefined macros in its header */ +#ifdef PANGO_COMPILATION +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wundef" +#endif + +#include +#include FT_FREETYPE_H +#include + +#ifdef PANGO_COMPILATION +#pragma GCC diagnostic pop +#endif + +G_BEGIN_DECLS + +#ifdef __GI_SCANNER__ +#define PANGO_FC_TYPE_FONT (pango_fc_font_get_type ()) +#define PANGO_FC_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_FC_TYPE_FONT, PangoFcFont)) +#define PANGO_FC_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_FC_TYPE_FONT)) +#else +#define PANGO_TYPE_FC_FONT (pango_fc_font_get_type ()) +#define PANGO_FC_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FC_FONT, PangoFcFont)) +#define PANGO_IS_FC_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FC_FONT)) +#endif + +typedef struct _PangoFcFont PangoFcFont; +typedef struct _PangoFcFontClass PangoFcFontClass; + +#ifndef PANGO_DISABLE_DEPRECATED + +/** + * PangoFcFont: + * + * `PangoFcFont` is a base class for font implementations + * using the Fontconfig and FreeType libraries. + * + * It is used in onjunction with [class@PangoFc.FontMap]. + * When deriving from this class, you need to implement all + * of its virtual functions other than shutdown() along with + * the get_glyph_extents() virtual function from `PangoFont`. + */ +struct _PangoFcFont +{ + PangoFont parent_instance; + + FcPattern *font_pattern; /* fully resolved pattern */ + PangoFontMap *fontmap; /* associated map */ + gpointer priv; /* used internally */ + PangoMatrix matrix; /* unused */ + PangoFontDescription *description; + + GSList *metrics_by_lang; + + guint is_hinted : 1; + guint is_transformed : 1; +}; + +#endif /* PANGO_DISABLE_DEPRECATED */ + +PANGO_AVAILABLE_IN_ALL +GType pango_fc_font_get_type (void) G_GNUC_CONST; + +PANGO_DEPRECATED_IN_1_44 +gboolean pango_fc_font_has_char (PangoFcFont *font, + gunichar wc); +PANGO_AVAILABLE_IN_1_4 +guint pango_fc_font_get_glyph (PangoFcFont *font, + gunichar wc); + +PANGO_DEPRECATED_IN_1_50_FOR(pango_font_get_language) +PangoLanguage ** + pango_fc_font_get_languages (PangoFcFont *font); + +PANGO_AVAILABLE_IN_1_48 +FcPattern *pango_fc_font_get_pattern (PangoFcFont *font); + +PANGO_DEPRECATED_FOR(PANGO_GET_UNKNOWN_GLYPH) +PangoGlyph pango_fc_font_get_unknown_glyph (PangoFcFont *font, + gunichar wc); +PANGO_DEPRECATED_IN_1_32 +void pango_fc_font_kern_glyphs (PangoFcFont *font, + PangoGlyphString *glyphs); + +PANGO_DEPRECATED_IN_1_44_FOR(pango_font_get_hb_font) +FT_Face pango_fc_font_lock_face (PangoFcFont *font); +PANGO_DEPRECATED_IN_1_44_FOR(pango_font_get_hb_font) +void pango_fc_font_unlock_face (PangoFcFont *font); + + +G_END_DECLS +#endif /* __PANGO_FC_FONT_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-fontmap.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-fontmap.h new file mode 100644 index 0000000..e1e56c9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangofc-fontmap.h @@ -0,0 +1,244 @@ +/* Pango + * pangofc-fontmap.h: Base fontmap type for fontconfig-based backends + * + * Copyright (C) 2003 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_FC_FONT_MAP_H__ +#define __PANGO_FC_FONT_MAP_H__ + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + + +/* + * PangoFcFontMap + */ + +#ifdef __GI_SCANNER__ +#define PANGO_FC_TYPE_FONT_MAP (pango_fc_font_map_get_type ()) +#define PANGO_FC_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_FC_TYPE_FONT_MAP, PangoFcFontMap)) +#define PANGO_FC_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_FC_TYPE_FONT_MAP)) +#else +#define PANGO_TYPE_FC_FONT_MAP (pango_fc_font_map_get_type ()) +#define PANGO_FC_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FC_FONT_MAP, PangoFcFontMap)) +#define PANGO_IS_FC_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FC_FONT_MAP)) +#endif + +typedef struct _PangoFcFontMap PangoFcFontMap; +typedef struct _PangoFcFontMapClass PangoFcFontMapClass; +typedef struct _PangoFcFontMapPrivate PangoFcFontMapPrivate; + +PANGO_AVAILABLE_IN_ALL +GType pango_fc_font_map_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_4 +void pango_fc_font_map_cache_clear (PangoFcFontMap *fcfontmap); + +PANGO_AVAILABLE_IN_1_38 +void +pango_fc_font_map_config_changed (PangoFcFontMap *fcfontmap); + +PANGO_AVAILABLE_IN_1_38 +void +pango_fc_font_map_set_config (PangoFcFontMap *fcfontmap, + FcConfig *fcconfig); +PANGO_AVAILABLE_IN_1_38 +FcConfig * +pango_fc_font_map_get_config (PangoFcFontMap *fcfontmap); + +/** + * PangoFcDecoderFindFunc: + * @pattern: a fully resolved `FcPattern` specifying the font on the system + * @user_data: user data passed to + * [method@PangoFc.FontMap.add_decoder_find_func] + * + * Callback function passed to [method@PangoFc.FontMap.add_decoder_find_func]. + * + * Return value: a new reference to a custom decoder for this pattern, + * or %NULL if the default decoder handling should be used. + **/ +typedef PangoFcDecoder * (*PangoFcDecoderFindFunc) (FcPattern *pattern, + gpointer user_data); + +PANGO_AVAILABLE_IN_1_6 +void pango_fc_font_map_add_decoder_find_func (PangoFcFontMap *fcfontmap, + PangoFcDecoderFindFunc findfunc, + gpointer user_data, + GDestroyNotify dnotify); +PANGO_AVAILABLE_IN_1_26 +PangoFcDecoder *pango_fc_font_map_find_decoder (PangoFcFontMap *fcfontmap, + FcPattern *pattern); + +PANGO_AVAILABLE_IN_1_4 +PangoFontDescription *pango_fc_font_description_from_pattern (FcPattern *pattern, + gboolean include_size); + +#ifndef PANGO_DISABLE_DEPRECATED +PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context) +PangoContext * pango_fc_font_map_create_context (PangoFcFontMap *fcfontmap); +#endif +PANGO_AVAILABLE_IN_1_4 +void pango_fc_font_map_shutdown (PangoFcFontMap *fcfontmap); + + +PANGO_AVAILABLE_IN_1_44 +hb_face_t * pango_fc_font_map_get_hb_face (PangoFcFontMap *fcfontmap, + PangoFcFont *fcfont); + +/** + * PangoFcSubstituteFunc: + * @pattern: the FcPattern to tweak. + * @data: user data. + * + * Function type for doing final config tweaking on prepared `FcPattern`s. + */ +typedef void (*PangoFcSubstituteFunc) (FcPattern *pattern, + gpointer data); + +/** + * pango_fc_font_map_set_default_substitute: + * @fontmap: a `PangoFcFontMap` + * @func: function to call to to do final config tweaking on `FcPattern` objects + * @data: data to pass to @func + * @notify: function to call when @data is no longer used + * + * Sets a function that will be called to do final configuration + * substitution on a `FcPattern` before it is used to load + * the font. + * + * This function can be used to do things like set + * hinting and antialiasing options. + * + * Since: 1.48 + */ +PANGO_AVAILABLE_IN_1_48 +void pango_fc_font_map_set_default_substitute (PangoFcFontMap *fontmap, + PangoFcSubstituteFunc func, + gpointer data, + GDestroyNotify notify); + +/** + * pango_fc_font_map_substitute_changed: + * @fontmap: a `PangoFcFontMap` + * + * Call this function any time the results of the default + * substitution function set with + * [method@PangoFc.FontMap.set_default_substitute] change. + * + * That is, if your substitution function will return different + * results for the same input pattern, you must call this function. + * + * Since: 1.48 + */ +PANGO_AVAILABLE_IN_1_48 +void pango_fc_font_map_substitute_changed (PangoFcFontMap *fontmap); + +/** + * PANGO_FC_GRAVITY: + * + * Fontconfig property that Pango sets on any + * fontconfig pattern it passes to fontconfig + * if a `PangoGravity` other than %PANGO_GRAVITY_SOUTH + * is desired. + * + * The property will have a `PangoGravity` value as a string, + * like "east". This can be used to write fontconfig configuration + * rules to choose different fonts for horizontal and vertical + * writing directions. + * + * Since: 1.20 + */ +#define PANGO_FC_GRAVITY "pangogravity" + +/** + * PANGO_FC_VERSION: + * + * Fontconfig property that Pango sets on any + * fontconfig pattern it passes to fontconfig. + * + * The property will have an integer value equal to what + * [func@Pango.version] returns. This can be used to write + * fontconfig configuration rules that only affect certain + * pango versions (or only pango-using applications, or only + * non-pango-using applications). + * + * Since: 1.20 + */ +#define PANGO_FC_VERSION "pangoversion" + +/** + * PANGO_FC_PRGNAME: + * + * Fontconfig property that Pango sets on any + * fontconfig pattern it passes to fontconfig. + * + * The property will have a string equal to what + * g_get_prgname() returns. This can be used to write + * fontconfig configuration rules that only affect + * certain applications. + * + * This is equivalent to FC_PRGNAME in versions of + * fontconfig that have that. + * + * Since: 1.24 + */ +#define PANGO_FC_PRGNAME "prgname" + +/** + * PANGO_FC_FONT_FEATURES: + * + * Fontconfig property that Pango reads from font + * patterns to populate list of OpenType features + * to be enabled for the font by default. + * + * The property will have a number of string elements, + * each of which is the OpenType feature tag of one feature + * to enable. + * + * This is equivalent to FC_FONT_FEATURES in versions of + * fontconfig that have that. + * + * Since: 1.34 + */ +#define PANGO_FC_FONT_FEATURES "fontfeatures" + +/** + * PANGO_FC_FONT_VARIATIONS: + * + * Fontconfig property that Pango reads from font + * patterns to populate list of OpenType font variations + * to be used for a font. + * + * The property will have a string elements, each of which + * a comma-separated list of OpenType axis setting of the + * form AXIS=VALUE. + * + * This is equivalent to FC_FONT_VARIATIONS in versions of + * fontconfig that have that. + */ +#define PANGO_FC_FONT_VARIATIONS "fontvariations" + +G_END_DECLS + +#endif /* __PANGO_FC_FONT_MAP_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangoft2.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangoft2.h new file mode 100644 index 0000000..239eb05 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangoft2.h @@ -0,0 +1,158 @@ +/* Pango + * pangoft2.h: + * + * Copyright (C) 1999 Red Hat Software + * Copyright (C) 2000 Tor Lillqvist + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGOFT2_H__ +#define __PANGOFT2_H__ + +#include + +#include +#include FT_FREETYPE_H + +#include +#include +#include + +G_BEGIN_DECLS + +#ifndef __GI_SCANNER__ + +#ifndef PANGO_DISABLE_DEPRECATED +/** + * PANGO_RENDER_TYPE_FT2: (skip) + * + * A string constant that was used to identify shape engines that work + * with the FreeType backend. See %PANGO_RENDER_TYPE_FC for the replacement. + */ +#define PANGO_RENDER_TYPE_FT2 "PangoRenderFT2" +#endif + +#endif /* __GI_SCANNER__ */ + +#ifdef __GI_SCANNER__ +#define PANGO_FT2_TYPE_FONT_MAP (pango_ft2_font_map_get_type ()) +#define PANGO_FT2_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_FT2_TYPE_FONT_MAP, PangoFT2FontMap)) +#define PANGO_FT2_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_FT2_TYPE_FONT_MAP)) +#else +#define PANGO_TYPE_FT2_FONT_MAP (pango_ft2_font_map_get_type ()) +#define PANGO_FT2_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FT2_FONT_MAP, PangoFT2FontMap)) +#define PANGO_FT2_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FT2_FONT_MAP)) +#endif + +typedef struct _PangoFT2FontMap PangoFT2FontMap; + +/** + * PangoFT2SubstituteFunc: + * @pattern: the FcPattern to tweak. + * @data: user data. + * + * Function type for doing final config tweaking on prepared FcPatterns. + */ +typedef void (*PangoFT2SubstituteFunc) (FcPattern *pattern, + gpointer data); + +/* Calls for applications */ + +PANGO_AVAILABLE_IN_ALL +void pango_ft2_render (FT_Bitmap *bitmap, + PangoFont *font, + PangoGlyphString *glyphs, + gint x, + gint y); +PANGO_AVAILABLE_IN_1_6 +void pango_ft2_render_transformed (FT_Bitmap *bitmap, + const PangoMatrix *matrix, + PangoFont *font, + PangoGlyphString *glyphs, + int x, + int y); + +PANGO_AVAILABLE_IN_ALL +void pango_ft2_render_layout_line (FT_Bitmap *bitmap, + PangoLayoutLine *line, + int x, + int y); +PANGO_AVAILABLE_IN_1_6 +void pango_ft2_render_layout_line_subpixel (FT_Bitmap *bitmap, + PangoLayoutLine *line, + int x, + int y); +PANGO_AVAILABLE_IN_ALL +void pango_ft2_render_layout (FT_Bitmap *bitmap, + PangoLayout *layout, + int x, + int y); +PANGO_AVAILABLE_IN_1_6 +void pango_ft2_render_layout_subpixel (FT_Bitmap *bitmap, + PangoLayout *layout, + int x, + int y); + +PANGO_AVAILABLE_IN_ALL +GType pango_ft2_font_map_get_type (void) G_GNUC_CONST; + +PANGO_AVAILABLE_IN_1_2 +PangoFontMap *pango_ft2_font_map_new (void); +PANGO_AVAILABLE_IN_1_2 +void pango_ft2_font_map_set_resolution (PangoFT2FontMap *fontmap, + double dpi_x, + double dpi_y); +#ifndef PANGO_DISABLE_DEPRECATED +PANGO_DEPRECATED_IN_1_48_FOR(pango_fc_font_map_set_default_substitute) +void pango_ft2_font_map_set_default_substitute (PangoFT2FontMap *fontmap, + PangoFT2SubstituteFunc func, + gpointer data, + GDestroyNotify notify); +PANGO_DEPRECATED_IN_1_48_FOR(pango_fc_font_map_substitute_changed) +void pango_ft2_font_map_substitute_changed (PangoFT2FontMap *fontmap); +PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context) +PangoContext *pango_ft2_font_map_create_context (PangoFT2FontMap *fontmap); +#endif + + +/* API for rendering modules + */ +#ifndef PANGO_DISABLE_DEPRECATED +PANGO_DEPRECATED_FOR(pango_font_map_create_context) +PangoContext *pango_ft2_get_context (double dpi_x, + double dpi_y); +PANGO_DEPRECATED_FOR(pango_ft2_font_map_new) +PangoFontMap *pango_ft2_font_map_for_display (void); +PANGO_DEPRECATED +void pango_ft2_shutdown_display (void); + +PANGO_DEPRECATED_FOR(PANGO_GET_UNKNOWN_GLYPH) +PangoGlyph pango_ft2_get_unknown_glyph (PangoFont *font); +PANGO_DEPRECATED_FOR(pango_fc_font_kern_glyphs) +int pango_ft2_font_get_kerning (PangoFont *font, + PangoGlyph left, + PangoGlyph right); +PANGO_DEPRECATED_FOR(pango_fc_font_lock_face) +FT_Face pango_ft2_font_get_face (PangoFont *font); +PANGO_DEPRECATED_FOR(pango_font_get_coverage) +PangoCoverage *pango_ft2_font_get_coverage (PangoFont *font, + PangoLanguage *language); +#endif /* PANGO_DISABLE_DEPRECATED */ + +G_END_DECLS + +#endif /* __PANGOFT2_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangowin32.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangowin32.h new file mode 100644 index 0000000..406c428 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pango-1.0/pango/pangowin32.h @@ -0,0 +1,148 @@ +/* Pango + * pangowin32.h: + * + * Copyright (C) 1999 Red Hat Software + * Copyright (C) 2000 Tor Lillqvist + * Copyright (C) 2001 Alexander Larsson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGOWIN32_H__ +#define __PANGOWIN32_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +#define STRICT +#ifndef _WIN32_WINNT +#define _WIN32_WINNT 0x0600 /* To get ClearType-related macros */ +#endif +#include +#undef STRICT + +/** + * PANGO_RENDER_TYPE_WIN32: + * + * A string constant identifying the Win32 renderer. The associated quark (see + * g_quark_from_string()) is used to identify the renderer in pango_find_map(). + */ +#define PANGO_RENDER_TYPE_WIN32 "PangoRenderWin32" + +/* Calls for applications + */ +#ifndef PANGO_DISABLE_DEPRECATED +PANGO_DEPRECATED_FOR(pango_font_map_create_context) +PangoContext * pango_win32_get_context (void); +#endif + +PANGO_AVAILABLE_IN_ALL +void pango_win32_render (HDC hdc, + PangoFont *font, + PangoGlyphString *glyphs, + gint x, + gint y); +PANGO_AVAILABLE_IN_ALL +void pango_win32_render_layout_line (HDC hdc, + PangoLayoutLine *line, + int x, + int y); +PANGO_AVAILABLE_IN_ALL +void pango_win32_render_layout (HDC hdc, + PangoLayout *layout, + int x, + int y); + +PANGO_AVAILABLE_IN_ALL +void pango_win32_render_transformed (HDC hdc, + const PangoMatrix *matrix, + PangoFont *font, + PangoGlyphString *glyphs, + int x, + int y); + +#ifndef PANGO_DISABLE_DEPRECATED + +/* For shape engines + */ + +PANGO_DEPRECATED_FOR(PANGO_GET_UNKNOWN_GLYPH) +PangoGlyph pango_win32_get_unknown_glyph (PangoFont *font, + gunichar wc); +PANGO_DEPRECATED +gint pango_win32_font_get_glyph_index(PangoFont *font, + gunichar wc); + +PANGO_DEPRECATED +HDC pango_win32_get_dc (void); + +PANGO_DEPRECATED +gboolean pango_win32_get_debug_flag (void); + +PANGO_DEPRECATED +gboolean pango_win32_font_select_font (PangoFont *font, + HDC hdc); +PANGO_DEPRECATED +void pango_win32_font_done_font (PangoFont *font); +PANGO_DEPRECATED +double pango_win32_font_get_metrics_factor (PangoFont *font); + +#endif + +/* API for libraries that want to use PangoWin32 mixed with classic + * Win32 fonts. + */ +typedef struct _PangoWin32FontCache PangoWin32FontCache; + +PANGO_AVAILABLE_IN_ALL +PangoWin32FontCache *pango_win32_font_cache_new (void); +PANGO_AVAILABLE_IN_ALL +void pango_win32_font_cache_free (PangoWin32FontCache *cache); + +PANGO_AVAILABLE_IN_ALL +HFONT pango_win32_font_cache_load (PangoWin32FontCache *cache, + const LOGFONTA *logfont); +PANGO_AVAILABLE_IN_1_16 +HFONT pango_win32_font_cache_loadw (PangoWin32FontCache *cache, + const LOGFONTW *logfont); +PANGO_AVAILABLE_IN_ALL +void pango_win32_font_cache_unload (PangoWin32FontCache *cache, + HFONT hfont); + +PANGO_AVAILABLE_IN_ALL +PangoFontMap *pango_win32_font_map_for_display (void); +PANGO_AVAILABLE_IN_ALL +void pango_win32_shutdown_display (void); +PANGO_AVAILABLE_IN_ALL +PangoWin32FontCache *pango_win32_font_map_get_font_cache (PangoFontMap *font_map); + +PANGO_AVAILABLE_IN_ALL +LOGFONTA *pango_win32_font_logfont (PangoFont *font); +PANGO_AVAILABLE_IN_1_16 +LOGFONTW *pango_win32_font_logfontw (PangoFont *font); + +PANGO_AVAILABLE_IN_1_12 +PangoFontDescription *pango_win32_font_description_from_logfont (const LOGFONTA *lfp); + +PANGO_AVAILABLE_IN_1_16 +PangoFontDescription *pango_win32_font_description_from_logfontw (const LOGFONTW *lfp); + +G_END_DECLS + +#endif /* __PANGOWIN32_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pixman-1/pixman-version.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pixman-1/pixman-version.h new file mode 100644 index 0000000..f0eec80 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pixman-1/pixman-version.h @@ -0,0 +1,54 @@ +/* + * Copyright © 2008 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Carl D. Worth + */ + +#ifndef PIXMAN_VERSION_H__ +#define PIXMAN_VERSION_H__ + +#ifndef PIXMAN_H__ +# error pixman-version.h should only be included by pixman.h +#endif + +#define PIXMAN_VERSION_MAJOR 0 +#define PIXMAN_VERSION_MINOR 42 +#define PIXMAN_VERSION_MICRO 0 + +#define PIXMAN_VERSION_STRING "0.42.0" + +#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \ + ((major) * 10000) \ + + ((minor) * 100) \ + + ((micro) * 1)) + +#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \ + PIXMAN_VERSION_MAJOR, \ + PIXMAN_VERSION_MINOR, \ + PIXMAN_VERSION_MICRO) + +#ifndef PIXMAN_API +# define PIXMAN_API +#endif + +#endif /* PIXMAN_VERSION_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pixman-1/pixman.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pixman-1/pixman.h new file mode 100644 index 0000000..0070340 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pixman-1/pixman.h @@ -0,0 +1,1419 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* + * Copyright © 1998, 2004 Keith Packard + * Copyright 2007 Red Hat, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef PIXMAN_H__ +#define PIXMAN_H__ + +#include + +#ifdef __cplusplus +#define PIXMAN_BEGIN_DECLS extern "C" { +#define PIXMAN_END_DECLS } +#else +#define PIXMAN_BEGIN_DECLS +#define PIXMAN_END_DECLS +#endif + +PIXMAN_BEGIN_DECLS + +/* + * Standard integers + */ + +#if !defined (PIXMAN_DONT_DEFINE_STDINT) + +#if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || defined (_sgi) || defined (__sun) || defined (sun) || defined (__digital__) || defined (__HP_cc) +# include +/* VS 2010 (_MSC_VER 1600) has stdint.h */ +#elif defined (_MSC_VER) && _MSC_VER < 1600 +typedef __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#elif defined (_AIX) +# include +#else +# include +#endif + +#endif + +/* + * Boolean + */ +typedef int pixman_bool_t; + +/* + * Fixpoint numbers + */ +typedef int64_t pixman_fixed_32_32_t; +typedef pixman_fixed_32_32_t pixman_fixed_48_16_t; +typedef uint32_t pixman_fixed_1_31_t; +typedef uint32_t pixman_fixed_1_16_t; +typedef int32_t pixman_fixed_16_16_t; +typedef pixman_fixed_16_16_t pixman_fixed_t; + +#define pixman_fixed_e ((pixman_fixed_t) 1) +#define pixman_fixed_1 (pixman_int_to_fixed(1)) +#define pixman_fixed_1_minus_e (pixman_fixed_1 - pixman_fixed_e) +#define pixman_fixed_minus_1 (pixman_int_to_fixed(-1)) +#define pixman_fixed_to_int(f) ((int) ((f) >> 16)) +#define pixman_int_to_fixed(i) ((pixman_fixed_t) ((uint32_t) (i) << 16)) +#define pixman_fixed_to_double(f) (double) ((f) / (double) pixman_fixed_1) +#define pixman_double_to_fixed(d) ((pixman_fixed_t) ((d) * 65536.0)) +#define pixman_fixed_frac(f) ((f) & pixman_fixed_1_minus_e) +#define pixman_fixed_floor(f) ((f) & ~pixman_fixed_1_minus_e) +#define pixman_fixed_ceil(f) pixman_fixed_floor ((f) + pixman_fixed_1_minus_e) +#define pixman_fixed_fraction(f) ((f) & pixman_fixed_1_minus_e) +#define pixman_fixed_mod_2(f) ((f) & (pixman_fixed1 | pixman_fixed_1_minus_e)) +#define pixman_max_fixed_48_16 ((pixman_fixed_48_16_t) 0x7fffffff) +#define pixman_min_fixed_48_16 (-((pixman_fixed_48_16_t) 1 << 31)) + +/* + * Misc structs + */ +typedef struct pixman_color pixman_color_t; +typedef struct pixman_point_fixed pixman_point_fixed_t; +typedef struct pixman_line_fixed pixman_line_fixed_t; +typedef struct pixman_vector pixman_vector_t; +typedef struct pixman_transform pixman_transform_t; + +struct pixman_color +{ + uint16_t red; + uint16_t green; + uint16_t blue; + uint16_t alpha; +}; + +struct pixman_point_fixed +{ + pixman_fixed_t x; + pixman_fixed_t y; +}; + +struct pixman_line_fixed +{ + pixman_point_fixed_t p1, p2; +}; + +/* + * Fixed point matrices + */ + +struct pixman_vector +{ + pixman_fixed_t vector[3]; +}; + +struct pixman_transform +{ + pixman_fixed_t matrix[3][3]; +}; + +/* forward declaration (sorry) */ +struct pixman_box16; +typedef union pixman_image pixman_image_t; + +PIXMAN_API +void pixman_transform_init_identity (struct pixman_transform *matrix); + +PIXMAN_API +pixman_bool_t pixman_transform_point_3d (const struct pixman_transform *transform, + struct pixman_vector *vector); + +PIXMAN_API +pixman_bool_t pixman_transform_point (const struct pixman_transform *transform, + struct pixman_vector *vector); + +PIXMAN_API +pixman_bool_t pixman_transform_multiply (struct pixman_transform *dst, + const struct pixman_transform *l, + const struct pixman_transform *r); + +PIXMAN_API +void pixman_transform_init_scale (struct pixman_transform *t, + pixman_fixed_t sx, + pixman_fixed_t sy); + +PIXMAN_API +pixman_bool_t pixman_transform_scale (struct pixman_transform *forward, + struct pixman_transform *reverse, + pixman_fixed_t sx, + pixman_fixed_t sy); + +PIXMAN_API +void pixman_transform_init_rotate (struct pixman_transform *t, + pixman_fixed_t cos, + pixman_fixed_t sin); + +PIXMAN_API +pixman_bool_t pixman_transform_rotate (struct pixman_transform *forward, + struct pixman_transform *reverse, + pixman_fixed_t c, + pixman_fixed_t s); + +PIXMAN_API +void pixman_transform_init_translate (struct pixman_transform *t, + pixman_fixed_t tx, + pixman_fixed_t ty); + +PIXMAN_API +pixman_bool_t pixman_transform_translate (struct pixman_transform *forward, + struct pixman_transform *reverse, + pixman_fixed_t tx, + pixman_fixed_t ty); + +PIXMAN_API +pixman_bool_t pixman_transform_bounds (const struct pixman_transform *matrix, + struct pixman_box16 *b); + +PIXMAN_API +pixman_bool_t pixman_transform_invert (struct pixman_transform *dst, + const struct pixman_transform *src); + +PIXMAN_API +pixman_bool_t pixman_transform_is_identity (const struct pixman_transform *t); + +PIXMAN_API +pixman_bool_t pixman_transform_is_scale (const struct pixman_transform *t); + +PIXMAN_API +pixman_bool_t pixman_transform_is_int_translate (const struct pixman_transform *t); + +PIXMAN_API +pixman_bool_t pixman_transform_is_inverse (const struct pixman_transform *a, + const struct pixman_transform *b); + +/* + * Floating point matrices + */ +typedef struct pixman_f_transform pixman_f_transform_t; +typedef struct pixman_f_vector pixman_f_vector_t; + +struct pixman_f_vector +{ + double v[3]; +}; + +struct pixman_f_transform +{ + double m[3][3]; +}; + + +PIXMAN_API +pixman_bool_t pixman_transform_from_pixman_f_transform (struct pixman_transform *t, + const struct pixman_f_transform *ft); + +PIXMAN_API +void pixman_f_transform_from_pixman_transform (struct pixman_f_transform *ft, + const struct pixman_transform *t); + +PIXMAN_API +pixman_bool_t pixman_f_transform_invert (struct pixman_f_transform *dst, + const struct pixman_f_transform *src); + +PIXMAN_API +pixman_bool_t pixman_f_transform_point (const struct pixman_f_transform *t, + struct pixman_f_vector *v); + +PIXMAN_API +void pixman_f_transform_point_3d (const struct pixman_f_transform *t, + struct pixman_f_vector *v); + +PIXMAN_API +void pixman_f_transform_multiply (struct pixman_f_transform *dst, + const struct pixman_f_transform *l, + const struct pixman_f_transform *r); + +PIXMAN_API +void pixman_f_transform_init_scale (struct pixman_f_transform *t, + double sx, + double sy); + +PIXMAN_API +pixman_bool_t pixman_f_transform_scale (struct pixman_f_transform *forward, + struct pixman_f_transform *reverse, + double sx, + double sy); + +PIXMAN_API +void pixman_f_transform_init_rotate (struct pixman_f_transform *t, + double cos, + double sin); + +PIXMAN_API +pixman_bool_t pixman_f_transform_rotate (struct pixman_f_transform *forward, + struct pixman_f_transform *reverse, + double c, + double s); + +PIXMAN_API +void pixman_f_transform_init_translate (struct pixman_f_transform *t, + double tx, + double ty); + +PIXMAN_API +pixman_bool_t pixman_f_transform_translate (struct pixman_f_transform *forward, + struct pixman_f_transform *reverse, + double tx, + double ty); + +PIXMAN_API +pixman_bool_t pixman_f_transform_bounds (const struct pixman_f_transform *t, + struct pixman_box16 *b); + +PIXMAN_API +void pixman_f_transform_init_identity (struct pixman_f_transform *t); + +typedef enum +{ + PIXMAN_REPEAT_NONE, + PIXMAN_REPEAT_NORMAL, + PIXMAN_REPEAT_PAD, + PIXMAN_REPEAT_REFLECT +} pixman_repeat_t; + +typedef enum +{ + PIXMAN_DITHER_NONE, + PIXMAN_DITHER_FAST, + PIXMAN_DITHER_GOOD, + PIXMAN_DITHER_BEST, + PIXMAN_DITHER_ORDERED_BAYER_8, + PIXMAN_DITHER_ORDERED_BLUE_NOISE_64, +} pixman_dither_t; + +typedef enum +{ + PIXMAN_FILTER_FAST, + PIXMAN_FILTER_GOOD, + PIXMAN_FILTER_BEST, + PIXMAN_FILTER_NEAREST, + PIXMAN_FILTER_BILINEAR, + PIXMAN_FILTER_CONVOLUTION, + + /* The SEPARABLE_CONVOLUTION filter takes the following parameters: + * + * width: integer given as 16.16 fixpoint number + * height: integer given as 16.16 fixpoint number + * x_phase_bits: integer given as 16.16 fixpoint + * y_phase_bits: integer given as 16.16 fixpoint + * xtables: (1 << x_phase_bits) tables of size width + * ytables: (1 << y_phase_bits) tables of size height + * + * When sampling at (x, y), the location is first rounded to one of + * n_x_phases * n_y_phases subpixel positions. These subpixel positions + * determine an xtable and a ytable to use. + * + * Conceptually a width x height matrix is then formed in which each entry + * is the product of the corresponding entries in the x and y tables. + * This matrix is then aligned with the image pixels such that its center + * is as close as possible to the subpixel location chosen earlier. Then + * the image is convolved with the matrix and the resulting pixel returned. + */ + PIXMAN_FILTER_SEPARABLE_CONVOLUTION +} pixman_filter_t; + +typedef enum +{ + PIXMAN_OP_CLEAR = 0x00, + PIXMAN_OP_SRC = 0x01, + PIXMAN_OP_DST = 0x02, + PIXMAN_OP_OVER = 0x03, + PIXMAN_OP_OVER_REVERSE = 0x04, + PIXMAN_OP_IN = 0x05, + PIXMAN_OP_IN_REVERSE = 0x06, + PIXMAN_OP_OUT = 0x07, + PIXMAN_OP_OUT_REVERSE = 0x08, + PIXMAN_OP_ATOP = 0x09, + PIXMAN_OP_ATOP_REVERSE = 0x0a, + PIXMAN_OP_XOR = 0x0b, + PIXMAN_OP_ADD = 0x0c, + PIXMAN_OP_SATURATE = 0x0d, + + PIXMAN_OP_DISJOINT_CLEAR = 0x10, + PIXMAN_OP_DISJOINT_SRC = 0x11, + PIXMAN_OP_DISJOINT_DST = 0x12, + PIXMAN_OP_DISJOINT_OVER = 0x13, + PIXMAN_OP_DISJOINT_OVER_REVERSE = 0x14, + PIXMAN_OP_DISJOINT_IN = 0x15, + PIXMAN_OP_DISJOINT_IN_REVERSE = 0x16, + PIXMAN_OP_DISJOINT_OUT = 0x17, + PIXMAN_OP_DISJOINT_OUT_REVERSE = 0x18, + PIXMAN_OP_DISJOINT_ATOP = 0x19, + PIXMAN_OP_DISJOINT_ATOP_REVERSE = 0x1a, + PIXMAN_OP_DISJOINT_XOR = 0x1b, + + PIXMAN_OP_CONJOINT_CLEAR = 0x20, + PIXMAN_OP_CONJOINT_SRC = 0x21, + PIXMAN_OP_CONJOINT_DST = 0x22, + PIXMAN_OP_CONJOINT_OVER = 0x23, + PIXMAN_OP_CONJOINT_OVER_REVERSE = 0x24, + PIXMAN_OP_CONJOINT_IN = 0x25, + PIXMAN_OP_CONJOINT_IN_REVERSE = 0x26, + PIXMAN_OP_CONJOINT_OUT = 0x27, + PIXMAN_OP_CONJOINT_OUT_REVERSE = 0x28, + PIXMAN_OP_CONJOINT_ATOP = 0x29, + PIXMAN_OP_CONJOINT_ATOP_REVERSE = 0x2a, + PIXMAN_OP_CONJOINT_XOR = 0x2b, + + PIXMAN_OP_MULTIPLY = 0x30, + PIXMAN_OP_SCREEN = 0x31, + PIXMAN_OP_OVERLAY = 0x32, + PIXMAN_OP_DARKEN = 0x33, + PIXMAN_OP_LIGHTEN = 0x34, + PIXMAN_OP_COLOR_DODGE = 0x35, + PIXMAN_OP_COLOR_BURN = 0x36, + PIXMAN_OP_HARD_LIGHT = 0x37, + PIXMAN_OP_SOFT_LIGHT = 0x38, + PIXMAN_OP_DIFFERENCE = 0x39, + PIXMAN_OP_EXCLUSION = 0x3a, + PIXMAN_OP_HSL_HUE = 0x3b, + PIXMAN_OP_HSL_SATURATION = 0x3c, + PIXMAN_OP_HSL_COLOR = 0x3d, + PIXMAN_OP_HSL_LUMINOSITY = 0x3e + +#ifdef PIXMAN_USE_INTERNAL_API + , + PIXMAN_N_OPERATORS, + PIXMAN_OP_NONE = PIXMAN_N_OPERATORS +#endif +} pixman_op_t; + +/* + * Regions + */ +typedef struct pixman_region16_data pixman_region16_data_t; +typedef struct pixman_box16 pixman_box16_t; +typedef struct pixman_rectangle16 pixman_rectangle16_t; +typedef struct pixman_region16 pixman_region16_t; + +struct pixman_region16_data { + long size; + long numRects; +/* pixman_box16_t rects[size]; in memory but not explicitly declared */ +}; + +struct pixman_rectangle16 +{ + int16_t x, y; + uint16_t width, height; +}; + +struct pixman_box16 +{ + int16_t x1, y1, x2, y2; +}; + +struct pixman_region16 +{ + pixman_box16_t extents; + pixman_region16_data_t *data; +}; + +typedef enum +{ + PIXMAN_REGION_OUT, + PIXMAN_REGION_IN, + PIXMAN_REGION_PART +} pixman_region_overlap_t; + +/* This function exists only to make it possible to preserve + * the X ABI - it should go away at first opportunity. + */ +PIXMAN_API +void pixman_region_set_static_pointers (pixman_box16_t *empty_box, + pixman_region16_data_t *empty_data, + pixman_region16_data_t *broken_data); + +/* creation/destruction */ +PIXMAN_API +void pixman_region_init (pixman_region16_t *region); + +PIXMAN_API +void pixman_region_init_rect (pixman_region16_t *region, + int x, + int y, + unsigned int width, + unsigned int height); + +PIXMAN_API +pixman_bool_t pixman_region_init_rects (pixman_region16_t *region, + const pixman_box16_t *boxes, + int count); + +PIXMAN_API +void pixman_region_init_with_extents (pixman_region16_t *region, + const pixman_box16_t *extents); + +PIXMAN_API +void pixman_region_init_from_image (pixman_region16_t *region, + pixman_image_t *image); + +PIXMAN_API +void pixman_region_fini (pixman_region16_t *region); + + +/* manipulation */ +PIXMAN_API +void pixman_region_translate (pixman_region16_t *region, + int x, + int y); + +PIXMAN_API +pixman_bool_t pixman_region_copy (pixman_region16_t *dest, + const pixman_region16_t *source); + +PIXMAN_API +pixman_bool_t pixman_region_intersect (pixman_region16_t *new_reg, + const pixman_region16_t *reg1, + const pixman_region16_t *reg2); + +PIXMAN_API +pixman_bool_t pixman_region_union (pixman_region16_t *new_reg, + const pixman_region16_t *reg1, + const pixman_region16_t *reg2); + +PIXMAN_API +pixman_bool_t pixman_region_union_rect (pixman_region16_t *dest, + const pixman_region16_t *source, + int x, + int y, + unsigned int width, + unsigned int height); + +PIXMAN_API +pixman_bool_t pixman_region_intersect_rect (pixman_region16_t *dest, + const pixman_region16_t *source, + int x, + int y, + unsigned int width, + unsigned int height); + +PIXMAN_API +pixman_bool_t pixman_region_subtract (pixman_region16_t *reg_d, + const pixman_region16_t *reg_m, + const pixman_region16_t *reg_s); + +PIXMAN_API +pixman_bool_t pixman_region_inverse (pixman_region16_t *new_reg, + const pixman_region16_t *reg1, + const pixman_box16_t *inv_rect); + +PIXMAN_API +pixman_bool_t pixman_region_contains_point (const pixman_region16_t *region, + int x, + int y, + pixman_box16_t *box); + +PIXMAN_API +pixman_region_overlap_t pixman_region_contains_rectangle (const pixman_region16_t *region, + const pixman_box16_t *prect); + +PIXMAN_API +pixman_bool_t pixman_region_not_empty (const pixman_region16_t *region); + +PIXMAN_API +pixman_box16_t * pixman_region_extents (const pixman_region16_t *region); + +PIXMAN_API +int pixman_region_n_rects (const pixman_region16_t *region); + +PIXMAN_API +pixman_box16_t * pixman_region_rectangles (const pixman_region16_t *region, + int *n_rects); + +PIXMAN_API +pixman_bool_t pixman_region_equal (const pixman_region16_t *region1, + const pixman_region16_t *region2); + +PIXMAN_API +pixman_bool_t pixman_region_selfcheck (pixman_region16_t *region); + +PIXMAN_API +void pixman_region_reset (pixman_region16_t *region, + const pixman_box16_t *box); + +PIXMAN_API +void pixman_region_clear (pixman_region16_t *region); +/* + * 32 bit regions + */ +typedef struct pixman_region32_data pixman_region32_data_t; +typedef struct pixman_box32 pixman_box32_t; +typedef struct pixman_rectangle32 pixman_rectangle32_t; +typedef struct pixman_region32 pixman_region32_t; + +struct pixman_region32_data { + long size; + long numRects; +/* pixman_box32_t rects[size]; in memory but not explicitly declared */ +}; + +struct pixman_rectangle32 +{ + int32_t x, y; + uint32_t width, height; +}; + +struct pixman_box32 +{ + int32_t x1, y1, x2, y2; +}; + +struct pixman_region32 +{ + pixman_box32_t extents; + pixman_region32_data_t *data; +}; + +/* creation/destruction */ +PIXMAN_API +void pixman_region32_init (pixman_region32_t *region); + +PIXMAN_API +void pixman_region32_init_rect (pixman_region32_t *region, + int x, + int y, + unsigned int width, + unsigned int height); + +PIXMAN_API +pixman_bool_t pixman_region32_init_rects (pixman_region32_t *region, + const pixman_box32_t *boxes, + int count); + +PIXMAN_API +void pixman_region32_init_with_extents (pixman_region32_t *region, + const pixman_box32_t *extents); + +PIXMAN_API +void pixman_region32_init_from_image (pixman_region32_t *region, + pixman_image_t *image); + +PIXMAN_API +void pixman_region32_fini (pixman_region32_t *region); + + +/* manipulation */ +PIXMAN_API +void pixman_region32_translate (pixman_region32_t *region, + int x, + int y); + +PIXMAN_API +pixman_bool_t pixman_region32_copy (pixman_region32_t *dest, + const pixman_region32_t *source); + +PIXMAN_API +pixman_bool_t pixman_region32_intersect (pixman_region32_t *new_reg, + const pixman_region32_t *reg1, + const pixman_region32_t *reg2); + +PIXMAN_API +pixman_bool_t pixman_region32_union (pixman_region32_t *new_reg, + const pixman_region32_t *reg1, + const pixman_region32_t *reg2); + +PIXMAN_API +pixman_bool_t pixman_region32_intersect_rect (pixman_region32_t *dest, + const pixman_region32_t *source, + int x, + int y, + unsigned int width, + unsigned int height); + +PIXMAN_API +pixman_bool_t pixman_region32_union_rect (pixman_region32_t *dest, + const pixman_region32_t *source, + int x, + int y, + unsigned int width, + unsigned int height); + +PIXMAN_API +pixman_bool_t pixman_region32_subtract (pixman_region32_t *reg_d, + const pixman_region32_t *reg_m, + const pixman_region32_t *reg_s); + +PIXMAN_API +pixman_bool_t pixman_region32_inverse (pixman_region32_t *new_reg, + const pixman_region32_t *reg1, + const pixman_box32_t *inv_rect); + +PIXMAN_API +pixman_bool_t pixman_region32_contains_point (const pixman_region32_t *region, + int x, + int y, + pixman_box32_t *box); + +PIXMAN_API +pixman_region_overlap_t pixman_region32_contains_rectangle (const pixman_region32_t *region, + const pixman_box32_t *prect); + +PIXMAN_API +pixman_bool_t pixman_region32_not_empty (const pixman_region32_t *region); + +PIXMAN_API +pixman_box32_t * pixman_region32_extents (const pixman_region32_t *region); + +PIXMAN_API +int pixman_region32_n_rects (const pixman_region32_t *region); + +PIXMAN_API +pixman_box32_t * pixman_region32_rectangles (const pixman_region32_t *region, + int *n_rects); + +PIXMAN_API +pixman_bool_t pixman_region32_equal (const pixman_region32_t *region1, + const pixman_region32_t *region2); + +PIXMAN_API +pixman_bool_t pixman_region32_selfcheck (pixman_region32_t *region); + +PIXMAN_API +void pixman_region32_reset (pixman_region32_t *region, + const pixman_box32_t *box); + +PIXMAN_API +void pixman_region32_clear (pixman_region32_t *region); + + +/* Copy / Fill / Misc */ +PIXMAN_API +pixman_bool_t pixman_blt (uint32_t *src_bits, + uint32_t *dst_bits, + int src_stride, + int dst_stride, + int src_bpp, + int dst_bpp, + int src_x, + int src_y, + int dest_x, + int dest_y, + int width, + int height); + +PIXMAN_API +pixman_bool_t pixman_fill (uint32_t *bits, + int stride, + int bpp, + int x, + int y, + int width, + int height, + uint32_t _xor); + + +PIXMAN_API +int pixman_version (void); + +PIXMAN_API +const char* pixman_version_string (void); + +/* + * Images + */ +typedef struct pixman_indexed pixman_indexed_t; +typedef struct pixman_gradient_stop pixman_gradient_stop_t; + +typedef uint32_t (* pixman_read_memory_func_t) (const void *src, int size); +typedef void (* pixman_write_memory_func_t) (void *dst, uint32_t value, int size); + +typedef void (* pixman_image_destroy_func_t) (pixman_image_t *image, void *data); + +struct pixman_gradient_stop { + pixman_fixed_t x; + pixman_color_t color; +}; + +#define PIXMAN_MAX_INDEXED 256 /* XXX depth must be <= 8 */ + +#if PIXMAN_MAX_INDEXED <= 256 +typedef uint8_t pixman_index_type; +#endif + +struct pixman_indexed +{ + pixman_bool_t color; + uint32_t rgba[PIXMAN_MAX_INDEXED]; + pixman_index_type ent[32768]; +}; + +/* + * While the protocol is generous in format support, the + * sample implementation allows only packed RGB and GBR + * representations for data to simplify software rendering, + */ +#define PIXMAN_FORMAT(bpp,type,a,r,g,b) (((bpp) << 24) | \ + ((type) << 16) | \ + ((a) << 12) | \ + ((r) << 8) | \ + ((g) << 4) | \ + ((b))) + +#define PIXMAN_FORMAT_BYTE(bpp,type,a,r,g,b) \ + (((bpp >> 3) << 24) | \ + (3 << 22) | ((type) << 16) | \ + ((a >> 3) << 12) | \ + ((r >> 3) << 8) | \ + ((g >> 3) << 4) | \ + ((b >> 3))) + +#define PIXMAN_FORMAT_RESHIFT(val, ofs, num) \ + (((val >> (ofs)) & ((1 << (num)) - 1)) << ((val >> 22) & 3)) + +#define PIXMAN_FORMAT_BPP(f) PIXMAN_FORMAT_RESHIFT(f, 24, 8) +#define PIXMAN_FORMAT_SHIFT(f) ((uint32_t)((f >> 22) & 3)) +#define PIXMAN_FORMAT_TYPE(f) (((f) >> 16) & 0x3f) +#define PIXMAN_FORMAT_A(f) PIXMAN_FORMAT_RESHIFT(f, 12, 4) +#define PIXMAN_FORMAT_R(f) PIXMAN_FORMAT_RESHIFT(f, 8, 4) +#define PIXMAN_FORMAT_G(f) PIXMAN_FORMAT_RESHIFT(f, 4, 4) +#define PIXMAN_FORMAT_B(f) PIXMAN_FORMAT_RESHIFT(f, 0, 4) +#define PIXMAN_FORMAT_RGB(f) (((f) ) & 0xfff) +#define PIXMAN_FORMAT_VIS(f) (((f) ) & 0xffff) +#define PIXMAN_FORMAT_DEPTH(f) (PIXMAN_FORMAT_A(f) + \ + PIXMAN_FORMAT_R(f) + \ + PIXMAN_FORMAT_G(f) + \ + PIXMAN_FORMAT_B(f)) + +#define PIXMAN_TYPE_OTHER 0 +#define PIXMAN_TYPE_A 1 +#define PIXMAN_TYPE_ARGB 2 +#define PIXMAN_TYPE_ABGR 3 +#define PIXMAN_TYPE_COLOR 4 +#define PIXMAN_TYPE_GRAY 5 +#define PIXMAN_TYPE_YUY2 6 +#define PIXMAN_TYPE_YV12 7 +#define PIXMAN_TYPE_BGRA 8 +#define PIXMAN_TYPE_RGBA 9 +#define PIXMAN_TYPE_ARGB_SRGB 10 +#define PIXMAN_TYPE_RGBA_FLOAT 11 + +#define PIXMAN_FORMAT_COLOR(f) \ + (PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_ARGB || \ + PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_ABGR || \ + PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_BGRA || \ + PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_RGBA || \ + PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_RGBA_FLOAT) + +typedef enum { +/* 128bpp formats */ + PIXMAN_rgba_float = PIXMAN_FORMAT_BYTE(128,PIXMAN_TYPE_RGBA_FLOAT,32,32,32,32), +/* 96bpp formats */ + PIXMAN_rgb_float = PIXMAN_FORMAT_BYTE(96,PIXMAN_TYPE_RGBA_FLOAT,0,32,32,32), + +/* 32bpp formats */ + PIXMAN_a8r8g8b8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,8,8,8,8), + PIXMAN_x8r8g8b8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,8,8,8), + PIXMAN_a8b8g8r8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,8,8,8,8), + PIXMAN_x8b8g8r8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,8,8,8), + PIXMAN_b8g8r8a8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_BGRA,8,8,8,8), + PIXMAN_b8g8r8x8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_BGRA,0,8,8,8), + PIXMAN_r8g8b8a8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_RGBA,8,8,8,8), + PIXMAN_r8g8b8x8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_RGBA,0,8,8,8), + PIXMAN_x14r6g6b6 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,6,6,6), + PIXMAN_x2r10g10b10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,10,10,10), + PIXMAN_a2r10g10b10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,2,10,10,10), + PIXMAN_x2b10g10r10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,10,10,10), + PIXMAN_a2b10g10r10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,2,10,10,10), + +/* sRGB formats */ + PIXMAN_a8r8g8b8_sRGB = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB_SRGB,8,8,8,8), + +/* 24bpp formats */ + PIXMAN_r8g8b8 = PIXMAN_FORMAT(24,PIXMAN_TYPE_ARGB,0,8,8,8), + PIXMAN_b8g8r8 = PIXMAN_FORMAT(24,PIXMAN_TYPE_ABGR,0,8,8,8), + +/* 16bpp formats */ + PIXMAN_r5g6b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,6,5), + PIXMAN_b5g6r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,6,5), + + PIXMAN_a1r5g5b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,1,5,5,5), + PIXMAN_x1r5g5b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,5,5), + PIXMAN_a1b5g5r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,1,5,5,5), + PIXMAN_x1b5g5r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,5,5), + PIXMAN_a4r4g4b4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,4,4,4,4), + PIXMAN_x4r4g4b4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,4,4,4), + PIXMAN_a4b4g4r4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,4,4,4,4), + PIXMAN_x4b4g4r4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,4,4,4), + +/* 8bpp formats */ + PIXMAN_a8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,8,0,0,0), + PIXMAN_r3g3b2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,0,3,3,2), + PIXMAN_b2g3r3 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,0,3,3,2), + PIXMAN_a2r2g2b2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,2,2,2,2), + PIXMAN_a2b2g2r2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,2,2,2,2), + + PIXMAN_c8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0), + PIXMAN_g8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0), + + PIXMAN_x4a4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,4,0,0,0), + + PIXMAN_x4c4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0), + PIXMAN_x4g4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0), + +/* 4bpp formats */ + PIXMAN_a4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_A,4,0,0,0), + PIXMAN_r1g2b1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,0,1,2,1), + PIXMAN_b1g2r1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,0,1,2,1), + PIXMAN_a1r1g1b1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,1,1,1,1), + PIXMAN_a1b1g1r1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,1,1,1,1), + + PIXMAN_c4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_COLOR,0,0,0,0), + PIXMAN_g4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_GRAY,0,0,0,0), + +/* 1bpp formats */ + PIXMAN_a1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_A,1,0,0,0), + + PIXMAN_g1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_GRAY,0,0,0,0), + +/* YUV formats */ + PIXMAN_yuy2 = PIXMAN_FORMAT(16,PIXMAN_TYPE_YUY2,0,0,0,0), + PIXMAN_yv12 = PIXMAN_FORMAT(12,PIXMAN_TYPE_YV12,0,0,0,0) +} pixman_format_code_t; + +/* Querying supported format values. */ +PIXMAN_API +pixman_bool_t pixman_format_supported_destination (pixman_format_code_t format); + +PIXMAN_API +pixman_bool_t pixman_format_supported_source (pixman_format_code_t format); + +/* Constructors */ +PIXMAN_API +pixman_image_t *pixman_image_create_solid_fill (const pixman_color_t *color); + +PIXMAN_API +pixman_image_t *pixman_image_create_linear_gradient (const pixman_point_fixed_t *p1, + const pixman_point_fixed_t *p2, + const pixman_gradient_stop_t *stops, + int n_stops); + +PIXMAN_API +pixman_image_t *pixman_image_create_radial_gradient (const pixman_point_fixed_t *inner, + const pixman_point_fixed_t *outer, + pixman_fixed_t inner_radius, + pixman_fixed_t outer_radius, + const pixman_gradient_stop_t *stops, + int n_stops); + +PIXMAN_API +pixman_image_t *pixman_image_create_conical_gradient (const pixman_point_fixed_t *center, + pixman_fixed_t angle, + const pixman_gradient_stop_t *stops, + int n_stops); + +PIXMAN_API +pixman_image_t *pixman_image_create_bits (pixman_format_code_t format, + int width, + int height, + uint32_t *bits, + int rowstride_bytes); + +PIXMAN_API +pixman_image_t *pixman_image_create_bits_no_clear (pixman_format_code_t format, + int width, + int height, + uint32_t * bits, + int rowstride_bytes); + +/* Destructor */ +PIXMAN_API +pixman_image_t *pixman_image_ref (pixman_image_t *image); + +PIXMAN_API +pixman_bool_t pixman_image_unref (pixman_image_t *image); + + +PIXMAN_API +void pixman_image_set_destroy_function (pixman_image_t *image, + pixman_image_destroy_func_t function, + void *data); + +PIXMAN_API +void * pixman_image_get_destroy_data (pixman_image_t *image); + +/* Set properties */ +PIXMAN_API +pixman_bool_t pixman_image_set_clip_region (pixman_image_t *image, + pixman_region16_t *region); + +PIXMAN_API +pixman_bool_t pixman_image_set_clip_region32 (pixman_image_t *image, + pixman_region32_t *region); + +PIXMAN_API +void pixman_image_set_has_client_clip (pixman_image_t *image, + pixman_bool_t clien_clip); + +PIXMAN_API +pixman_bool_t pixman_image_set_transform (pixman_image_t *image, + const pixman_transform_t *transform); + +PIXMAN_API +void pixman_image_set_repeat (pixman_image_t *image, + pixman_repeat_t repeat); + +PIXMAN_API +void pixman_image_set_dither (pixman_image_t *image, + pixman_dither_t dither); + +PIXMAN_API +void pixman_image_set_dither_offset (pixman_image_t *image, + int offset_x, + int offset_y); + +PIXMAN_API +pixman_bool_t pixman_image_set_filter (pixman_image_t *image, + pixman_filter_t filter, + const pixman_fixed_t *filter_params, + int n_filter_params); + +PIXMAN_API +void pixman_image_set_source_clipping (pixman_image_t *image, + pixman_bool_t source_clipping); + +PIXMAN_API +void pixman_image_set_alpha_map (pixman_image_t *image, + pixman_image_t *alpha_map, + int16_t x, + int16_t y); + +PIXMAN_API +void pixman_image_set_component_alpha (pixman_image_t *image, + pixman_bool_t component_alpha); + +PIXMAN_API +pixman_bool_t pixman_image_get_component_alpha (pixman_image_t *image); + +PIXMAN_API +void pixman_image_set_accessors (pixman_image_t *image, + pixman_read_memory_func_t read_func, + pixman_write_memory_func_t write_func); + +PIXMAN_API +void pixman_image_set_indexed (pixman_image_t *image, + const pixman_indexed_t *indexed); + +PIXMAN_API +uint32_t *pixman_image_get_data (pixman_image_t *image); + +PIXMAN_API +int pixman_image_get_width (pixman_image_t *image); + +PIXMAN_API +int pixman_image_get_height (pixman_image_t *image); + +PIXMAN_API +int pixman_image_get_stride (pixman_image_t *image); /* in bytes */ + +PIXMAN_API +int pixman_image_get_depth (pixman_image_t *image); + +PIXMAN_API +pixman_format_code_t pixman_image_get_format (pixman_image_t *image); + +typedef enum +{ + PIXMAN_KERNEL_IMPULSE, + PIXMAN_KERNEL_BOX, + PIXMAN_KERNEL_LINEAR, + PIXMAN_KERNEL_CUBIC, + PIXMAN_KERNEL_GAUSSIAN, + PIXMAN_KERNEL_LANCZOS2, + PIXMAN_KERNEL_LANCZOS3, + PIXMAN_KERNEL_LANCZOS3_STRETCHED /* Jim Blinn's 'nice' filter */ +} pixman_kernel_t; + +/* Create the parameter list for a SEPARABLE_CONVOLUTION filter + * with the given kernels and scale parameters. + */ +PIXMAN_API +pixman_fixed_t * +pixman_filter_create_separable_convolution (int *n_values, + pixman_fixed_t scale_x, + pixman_fixed_t scale_y, + pixman_kernel_t reconstruct_x, + pixman_kernel_t reconstruct_y, + pixman_kernel_t sample_x, + pixman_kernel_t sample_y, + int subsample_bits_x, + int subsample_bits_y); + + +PIXMAN_API +pixman_bool_t pixman_image_fill_rectangles (pixman_op_t op, + pixman_image_t *image, + const pixman_color_t *color, + int n_rects, + const pixman_rectangle16_t *rects); + +PIXMAN_API +pixman_bool_t pixman_image_fill_boxes (pixman_op_t op, + pixman_image_t *dest, + const pixman_color_t *color, + int n_boxes, + const pixman_box32_t *boxes); + +/* Composite */ +PIXMAN_API +pixman_bool_t pixman_compute_composite_region (pixman_region16_t *region, + pixman_image_t *src_image, + pixman_image_t *mask_image, + pixman_image_t *dest_image, + int16_t src_x, + int16_t src_y, + int16_t mask_x, + int16_t mask_y, + int16_t dest_x, + int16_t dest_y, + uint16_t width, + uint16_t height); + +PIXMAN_API +void pixman_image_composite (pixman_op_t op, + pixman_image_t *src, + pixman_image_t *mask, + pixman_image_t *dest, + int16_t src_x, + int16_t src_y, + int16_t mask_x, + int16_t mask_y, + int16_t dest_x, + int16_t dest_y, + uint16_t width, + uint16_t height); + +PIXMAN_API +void pixman_image_composite32 (pixman_op_t op, + pixman_image_t *src, + pixman_image_t *mask, + pixman_image_t *dest, + int32_t src_x, + int32_t src_y, + int32_t mask_x, + int32_t mask_y, + int32_t dest_x, + int32_t dest_y, + int32_t width, + int32_t height); + +/* Executive Summary: This function is a no-op that only exists + * for historical reasons. + * + * There used to be a bug in the X server where it would rely on + * out-of-bounds accesses when it was asked to composite with a + * window as the source. It would create a pixman image pointing + * to some bogus position in memory, but then set a clip region + * to the position where the actual bits were. + * + * Due to a bug in old versions of pixman, where it would not clip + * against the image bounds when a clip region was set, this would + * actually work. So when the pixman bug was fixed, a workaround was + * added to allow certain out-of-bound accesses. This function disabled + * those workarounds. + * + * Since 0.21.2, pixman doesn't do these workarounds anymore, so now this + * function is a no-op. + */ +PIXMAN_API +void pixman_disable_out_of_bounds_workaround (void); + +/* + * Glyphs + */ +typedef struct pixman_glyph_cache_t pixman_glyph_cache_t; +typedef struct +{ + int x, y; + const void *glyph; +} pixman_glyph_t; + +PIXMAN_API +pixman_glyph_cache_t *pixman_glyph_cache_create (void); + +PIXMAN_API +void pixman_glyph_cache_destroy (pixman_glyph_cache_t *cache); + +PIXMAN_API +void pixman_glyph_cache_freeze (pixman_glyph_cache_t *cache); + +PIXMAN_API +void pixman_glyph_cache_thaw (pixman_glyph_cache_t *cache); + +PIXMAN_API +const void * pixman_glyph_cache_lookup (pixman_glyph_cache_t *cache, + void *font_key, + void *glyph_key); + +PIXMAN_API +const void * pixman_glyph_cache_insert (pixman_glyph_cache_t *cache, + void *font_key, + void *glyph_key, + int origin_x, + int origin_y, + pixman_image_t *glyph_image); + +PIXMAN_API +void pixman_glyph_cache_remove (pixman_glyph_cache_t *cache, + void *font_key, + void *glyph_key); + +PIXMAN_API +void pixman_glyph_get_extents (pixman_glyph_cache_t *cache, + int n_glyphs, + pixman_glyph_t *glyphs, + pixman_box32_t *extents); + +PIXMAN_API +pixman_format_code_t pixman_glyph_get_mask_format (pixman_glyph_cache_t *cache, + int n_glyphs, + const pixman_glyph_t *glyphs); + +PIXMAN_API +void pixman_composite_glyphs (pixman_op_t op, + pixman_image_t *src, + pixman_image_t *dest, + pixman_format_code_t mask_format, + int32_t src_x, + int32_t src_y, + int32_t mask_x, + int32_t mask_y, + int32_t dest_x, + int32_t dest_y, + int32_t width, + int32_t height, + pixman_glyph_cache_t *cache, + int n_glyphs, + const pixman_glyph_t *glyphs); + +PIXMAN_API +void pixman_composite_glyphs_no_mask (pixman_op_t op, + pixman_image_t *src, + pixman_image_t *dest, + int32_t src_x, + int32_t src_y, + int32_t dest_x, + int32_t dest_y, + pixman_glyph_cache_t *cache, + int n_glyphs, + const pixman_glyph_t *glyphs); + +/* + * Trapezoids + */ +typedef struct pixman_edge pixman_edge_t; +typedef struct pixman_trapezoid pixman_trapezoid_t; +typedef struct pixman_trap pixman_trap_t; +typedef struct pixman_span_fix pixman_span_fix_t; +typedef struct pixman_triangle pixman_triangle_t; + +/* + * An edge structure. This represents a single polygon edge + * and can be quickly stepped across small or large gaps in the + * sample grid + */ +struct pixman_edge +{ + pixman_fixed_t x; + pixman_fixed_t e; + pixman_fixed_t stepx; + pixman_fixed_t signdx; + pixman_fixed_t dy; + pixman_fixed_t dx; + + pixman_fixed_t stepx_small; + pixman_fixed_t stepx_big; + pixman_fixed_t dx_small; + pixman_fixed_t dx_big; +}; + +struct pixman_trapezoid +{ + pixman_fixed_t top, bottom; + pixman_line_fixed_t left, right; +}; + +struct pixman_triangle +{ + pixman_point_fixed_t p1, p2, p3; +}; + +/* whether 't' is a well defined not obviously empty trapezoid */ +#define pixman_trapezoid_valid(t) \ + ((t)->left.p1.y != (t)->left.p2.y && \ + (t)->right.p1.y != (t)->right.p2.y && \ + ((t)->bottom > (t)->top)) + +struct pixman_span_fix +{ + pixman_fixed_t l, r, y; +}; + +struct pixman_trap +{ + pixman_span_fix_t top, bot; +}; + +PIXMAN_API +pixman_fixed_t pixman_sample_ceil_y (pixman_fixed_t y, + int bpp); + +PIXMAN_API +pixman_fixed_t pixman_sample_floor_y (pixman_fixed_t y, + int bpp); + +PIXMAN_API +void pixman_edge_step (pixman_edge_t *e, + int n); + +PIXMAN_API +void pixman_edge_init (pixman_edge_t *e, + int bpp, + pixman_fixed_t y_start, + pixman_fixed_t x_top, + pixman_fixed_t y_top, + pixman_fixed_t x_bot, + pixman_fixed_t y_bot); + +PIXMAN_API +void pixman_line_fixed_edge_init (pixman_edge_t *e, + int bpp, + pixman_fixed_t y, + const pixman_line_fixed_t *line, + int x_off, + int y_off); + +PIXMAN_API +void pixman_rasterize_edges (pixman_image_t *image, + pixman_edge_t *l, + pixman_edge_t *r, + pixman_fixed_t t, + pixman_fixed_t b); + +PIXMAN_API +void pixman_add_traps (pixman_image_t *image, + int16_t x_off, + int16_t y_off, + int ntrap, + const pixman_trap_t *traps); + +PIXMAN_API +void pixman_add_trapezoids (pixman_image_t *image, + int16_t x_off, + int y_off, + int ntraps, + const pixman_trapezoid_t *traps); + +PIXMAN_API +void pixman_rasterize_trapezoid (pixman_image_t *image, + const pixman_trapezoid_t *trap, + int x_off, + int y_off); + +PIXMAN_API +void pixman_composite_trapezoids (pixman_op_t op, + pixman_image_t * src, + pixman_image_t * dst, + pixman_format_code_t mask_format, + int x_src, + int y_src, + int x_dst, + int y_dst, + int n_traps, + const pixman_trapezoid_t * traps); + +PIXMAN_API +void pixman_composite_triangles (pixman_op_t op, + pixman_image_t * src, + pixman_image_t * dst, + pixman_format_code_t mask_format, + int x_src, + int y_src, + int x_dst, + int y_dst, + int n_tris, + const pixman_triangle_t * tris); + +PIXMAN_API +void pixman_add_triangles (pixman_image_t *image, + int32_t x_off, + int32_t y_off, + int n_tris, + const pixman_triangle_t *tris); + +PIXMAN_END_DECLS + +#endif /* PIXMAN_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/png.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/png.h new file mode 100644 index 0000000..5fb494f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/png.h @@ -0,0 +1,3247 @@ + +/* png.h - header file for PNG reference library + * + * libpng version 1.6.38 - September 14, 2022 + * + * Copyright (c) 2018-2022 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 versions 1.6.36, December 2018, through 1.6.38, September 2022: + * Cosmin Truta + * See also "Contributing Authors", below. + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE + * ========================================= + * + * PNG Reference Library License version 2 + * --------------------------------------- + * + * * Copyright (c) 1995-2022 The PNG Reference Library Authors. + * * Copyright (c) 2018-2022 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 event 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.38 16 10638 16.so.16.38[.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.38" +#define PNG_HEADER_VERSION_STRING " libpng version 1.6.38 - September 14, 2022\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 38 + +/* This should be zero for a public release, or non-zero for a + * development version. [Deprecated] + */ +#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 10638 /* 1.6.38 */ + +/* 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_38; + +/* 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 explanation 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 calculations. 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/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pngconf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pngconf.h new file mode 100644 index 0000000..89d28f8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pngconf.h @@ -0,0 +1,623 @@ + +/* pngconf.h - machine-configurable file for libpng + * + * libpng version 1.6.38 + * + * Copyright (c) 2018-2022 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(_WIN32) || defined(__WIN32__) || defined(__NT__) || \ + 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/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pnglibconf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pnglibconf.h new file mode 100644 index 0000000..0132e83 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/pnglibconf.h @@ -0,0 +1,219 @@ +/* pnglibconf.h - library build configuration */ + +/* libpng version 1.6.38 */ + +/* Copyright (c) 2018-2022 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 0x12bf +#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/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/spng.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/spng.h new file mode 100644 index 0000000..38b3627 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/spng.h @@ -0,0 +1,537 @@ +/* SPDX-License-Identifier: (BSD-2-Clause AND libpng-2.0) */ +#ifndef SPNG_H +#define SPNG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(SPNG_STATIC) + #if defined(SPNG__BUILD) + #define SPNG_API __declspec(dllexport) + #else + #define SPNG_API __declspec(dllimport) + #endif +#else + #define SPNG_API +#endif + +#if defined(_MSC_VER) + #define SPNG_CDECL __cdecl +#else + #define SPNG_CDECL +#endif + +#include +#include +#include + +#define SPNG_VERSION_MAJOR 0 +#define SPNG_VERSION_MINOR 7 +#define SPNG_VERSION_PATCH 2 + +enum spng_errno +{ + SPNG_IO_ERROR = -2, + SPNG_IO_EOF = -1, + SPNG_OK = 0, + SPNG_EINVAL, + SPNG_EMEM, + SPNG_EOVERFLOW, + SPNG_ESIGNATURE, + SPNG_EWIDTH, + SPNG_EHEIGHT, + SPNG_EUSER_WIDTH, + SPNG_EUSER_HEIGHT, + SPNG_EBIT_DEPTH, + SPNG_ECOLOR_TYPE, + SPNG_ECOMPRESSION_METHOD, + SPNG_EFILTER_METHOD, + SPNG_EINTERLACE_METHOD, + SPNG_EIHDR_SIZE, + SPNG_ENOIHDR, + SPNG_ECHUNK_POS, + SPNG_ECHUNK_SIZE, + SPNG_ECHUNK_CRC, + SPNG_ECHUNK_TYPE, + SPNG_ECHUNK_UNKNOWN_CRITICAL, + SPNG_EDUP_PLTE, + SPNG_EDUP_CHRM, + SPNG_EDUP_GAMA, + SPNG_EDUP_ICCP, + SPNG_EDUP_SBIT, + SPNG_EDUP_SRGB, + SPNG_EDUP_BKGD, + SPNG_EDUP_HIST, + SPNG_EDUP_TRNS, + SPNG_EDUP_PHYS, + SPNG_EDUP_TIME, + SPNG_EDUP_OFFS, + SPNG_EDUP_EXIF, + SPNG_ECHRM, + SPNG_EPLTE_IDX, + SPNG_ETRNS_COLOR_TYPE, + SPNG_ETRNS_NO_PLTE, + SPNG_EGAMA, + SPNG_EICCP_NAME, + SPNG_EICCP_COMPRESSION_METHOD, + SPNG_ESBIT, + SPNG_ESRGB, + SPNG_ETEXT, + SPNG_ETEXT_KEYWORD, + SPNG_EZTXT, + SPNG_EZTXT_COMPRESSION_METHOD, + SPNG_EITXT, + SPNG_EITXT_COMPRESSION_FLAG, + SPNG_EITXT_COMPRESSION_METHOD, + SPNG_EITXT_LANG_TAG, + SPNG_EITXT_TRANSLATED_KEY, + SPNG_EBKGD_NO_PLTE, + SPNG_EBKGD_PLTE_IDX, + SPNG_EHIST_NO_PLTE, + SPNG_EPHYS, + SPNG_ESPLT_NAME, + SPNG_ESPLT_DUP_NAME, + SPNG_ESPLT_DEPTH, + SPNG_ETIME, + SPNG_EOFFS, + SPNG_EEXIF, + SPNG_EIDAT_TOO_SHORT, + SPNG_EIDAT_STREAM, + SPNG_EZLIB, + SPNG_EFILTER, + SPNG_EBUFSIZ, + SPNG_EIO, + SPNG_EOF, + SPNG_EBUF_SET, + SPNG_EBADSTATE, + SPNG_EFMT, + SPNG_EFLAGS, + SPNG_ECHUNKAVAIL, + SPNG_ENCODE_ONLY, + SPNG_EOI, + SPNG_ENOPLTE, + SPNG_ECHUNK_LIMITS, + SPNG_EZLIB_INIT, + SPNG_ECHUNK_STDLEN, + SPNG_EINTERNAL, + SPNG_ECTXTYPE, + SPNG_ENOSRC, + SPNG_ENODST, + SPNG_EOPSTATE, + SPNG_ENOTFINAL, +}; + +enum spng_text_type +{ + SPNG_TEXT = 1, + SPNG_ZTXT = 2, + SPNG_ITXT = 3 +}; + +enum spng_color_type +{ + SPNG_COLOR_TYPE_GRAYSCALE = 0, + SPNG_COLOR_TYPE_TRUECOLOR = 2, + SPNG_COLOR_TYPE_INDEXED = 3, + SPNG_COLOR_TYPE_GRAYSCALE_ALPHA = 4, + SPNG_COLOR_TYPE_TRUECOLOR_ALPHA = 6 +}; + +enum spng_filter +{ + SPNG_FILTER_NONE = 0, + SPNG_FILTER_SUB = 1, + SPNG_FILTER_UP = 2, + SPNG_FILTER_AVERAGE = 3, + SPNG_FILTER_PAETH = 4 +}; + +enum spng_filter_choice +{ + SPNG_DISABLE_FILTERING = 0, + SPNG_FILTER_CHOICE_NONE = 8, + SPNG_FILTER_CHOICE_SUB = 16, + SPNG_FILTER_CHOICE_UP = 32, + SPNG_FILTER_CHOICE_AVG = 64, + SPNG_FILTER_CHOICE_PAETH = 128, + SPNG_FILTER_CHOICE_ALL = (8|16|32|64|128) +}; + +enum spng_interlace_method +{ + SPNG_INTERLACE_NONE = 0, + SPNG_INTERLACE_ADAM7 = 1 +}; + +/* Channels are always in byte-order */ +enum spng_format +{ + SPNG_FMT_RGBA8 = 1, + SPNG_FMT_RGBA16 = 2, + SPNG_FMT_RGB8 = 4, + + /* Partially implemented, see documentation */ + SPNG_FMT_GA8 = 16, + SPNG_FMT_GA16 = 32, + SPNG_FMT_G8 = 64, + + /* No conversion or scaling */ + SPNG_FMT_PNG = 256, /* host-endian */ + SPNG_FMT_RAW = 512 /* big-endian */ +}; + +enum spng_ctx_flags +{ + SPNG_CTX_IGNORE_ADLER32 = 1, /* Ignore checksum in DEFLATE streams */ + SPNG_CTX_ENCODER = 2 /* Create an encoder context */ +}; + +enum spng_decode_flags +{ + SPNG_DECODE_USE_TRNS = 1, /* Deprecated */ + SPNG_DECODE_USE_GAMA = 2, /* Deprecated */ + SPNG_DECODE_USE_SBIT = 8, /* Undocumented */ + + SPNG_DECODE_TRNS = 1, /* Apply transparency */ + SPNG_DECODE_GAMMA = 2, /* Apply gamma correction */ + SPNG_DECODE_PROGRESSIVE = 256 /* Initialize for progressive reads */ +}; + +enum spng_crc_action +{ + /* Default for critical chunks */ + SPNG_CRC_ERROR = 0, + + /* Discard chunk, invalid for critical chunks. + Since v0.6.2: default for ancillary chunks */ + SPNG_CRC_DISCARD = 1, + + /* Ignore and don't calculate checksum. + Since v0.6.2: also ignores checksums in DEFLATE streams */ + SPNG_CRC_USE = 2 +}; + +enum spng_encode_flags +{ + SPNG_ENCODE_PROGRESSIVE = 1, /* Initialize for progressive writes */ + SPNG_ENCODE_FINALIZE = 2, /* Finalize PNG after encoding image */ +}; + +struct spng_ihdr +{ + uint32_t width; + uint32_t height; + uint8_t bit_depth; + uint8_t color_type; + uint8_t compression_method; + uint8_t filter_method; + uint8_t interlace_method; +}; + +struct spng_plte_entry +{ + uint8_t red; + uint8_t green; + uint8_t blue; + + uint8_t alpha; /* Reserved for internal use */ +}; + +struct spng_plte +{ + uint32_t n_entries; + struct spng_plte_entry entries[256]; +}; + +struct spng_trns +{ + uint16_t gray; + + uint16_t red; + uint16_t green; + uint16_t blue; + + uint32_t n_type3_entries; + uint8_t type3_alpha[256]; +}; + +struct spng_chrm_int +{ + uint32_t white_point_x; + uint32_t white_point_y; + uint32_t red_x; + uint32_t red_y; + uint32_t green_x; + uint32_t green_y; + uint32_t blue_x; + uint32_t blue_y; +}; + +struct spng_chrm +{ + double white_point_x; + double white_point_y; + double red_x; + double red_y; + double green_x; + double green_y; + double blue_x; + double blue_y; +}; + +struct spng_iccp +{ + char profile_name[80]; + size_t profile_len; + char *profile; +}; + +struct spng_sbit +{ + uint8_t grayscale_bits; + uint8_t red_bits; + uint8_t green_bits; + uint8_t blue_bits; + uint8_t alpha_bits; +}; + +struct spng_text +{ + char keyword[80]; + int type; + + size_t length; + char *text; + + uint8_t compression_flag; /* iTXt only */ + uint8_t compression_method; /* iTXt, ztXt only */ + char *language_tag; /* iTXt only */ + char *translated_keyword; /* iTXt only */ +}; + +struct spng_bkgd +{ + uint16_t gray; /* Only for gray/gray alpha */ + uint16_t red; + uint16_t green; + uint16_t blue; + uint16_t plte_index; /* Only for indexed color */ +}; + +struct spng_hist +{ + uint16_t frequency[256]; +}; + +struct spng_phys +{ + uint32_t ppu_x, ppu_y; + uint8_t unit_specifier; +}; + +struct spng_splt_entry +{ + uint16_t red; + uint16_t green; + uint16_t blue; + uint16_t alpha; + uint16_t frequency; +}; + +struct spng_splt +{ + char name[80]; + uint8_t sample_depth; + uint32_t n_entries; + struct spng_splt_entry *entries; +}; + +struct spng_time +{ + uint16_t year; + uint8_t month; + uint8_t day; + uint8_t hour; + uint8_t minute; + uint8_t second; +}; + +struct spng_offs +{ + int32_t x, y; + uint8_t unit_specifier; +}; + +struct spng_exif +{ + size_t length; + char *data; +}; + +struct spng_chunk +{ + size_t offset; + uint32_t length; + uint8_t type[4]; + uint32_t crc; +}; + +enum spng_location +{ + SPNG_AFTER_IHDR = 1, + SPNG_AFTER_PLTE = 2, + SPNG_AFTER_IDAT = 8, +}; + +struct spng_unknown_chunk +{ + uint8_t type[4]; + size_t length; + void *data; + enum spng_location location; +}; + +enum spng_option +{ + SPNG_KEEP_UNKNOWN_CHUNKS = 1, + + SPNG_IMG_COMPRESSION_LEVEL, + SPNG_IMG_WINDOW_BITS, + SPNG_IMG_MEM_LEVEL, + SPNG_IMG_COMPRESSION_STRATEGY, + + SPNG_TEXT_COMPRESSION_LEVEL, + SPNG_TEXT_WINDOW_BITS, + SPNG_TEXT_MEM_LEVEL, + SPNG_TEXT_COMPRESSION_STRATEGY, + + SPNG_FILTER_CHOICE, + SPNG_CHUNK_COUNT_LIMIT, + SPNG_ENCODE_TO_BUFFER, +}; + +typedef void* SPNG_CDECL spng_malloc_fn(size_t size); +typedef void* SPNG_CDECL spng_realloc_fn(void* ptr, size_t size); +typedef void* SPNG_CDECL spng_calloc_fn(size_t count, size_t size); +typedef void SPNG_CDECL spng_free_fn(void* ptr); + +struct spng_alloc +{ + spng_malloc_fn *malloc_fn; + spng_realloc_fn *realloc_fn; + spng_calloc_fn *calloc_fn; + spng_free_fn *free_fn; +}; + +struct spng_row_info +{ + uint32_t scanline_idx; + uint32_t row_num; /* deinterlaced row index */ + int pass; + uint8_t filter; +}; + +typedef struct spng_ctx spng_ctx; + +typedef int spng_read_fn(spng_ctx *ctx, void *user, void *dest, size_t length); +typedef int spng_write_fn(spng_ctx *ctx, void *user, void *src, size_t length); + +typedef int spng_rw_fn(spng_ctx *ctx, void *user, void *dst_src, size_t length); + +SPNG_API spng_ctx *spng_ctx_new(int flags); +SPNG_API spng_ctx *spng_ctx_new2(struct spng_alloc *alloc, int flags); +SPNG_API void spng_ctx_free(spng_ctx *ctx); + +SPNG_API int spng_set_png_buffer(spng_ctx *ctx, const void *buf, size_t size); +SPNG_API int spng_set_png_stream(spng_ctx *ctx, spng_rw_fn *rw_func, void *user); +SPNG_API int spng_set_png_file(spng_ctx *ctx, FILE *file); + +SPNG_API void *spng_get_png_buffer(spng_ctx *ctx, size_t *len, int *error); + +SPNG_API int spng_set_image_limits(spng_ctx *ctx, uint32_t width, uint32_t height); +SPNG_API int spng_get_image_limits(spng_ctx *ctx, uint32_t *width, uint32_t *height); + +SPNG_API int spng_set_chunk_limits(spng_ctx *ctx, size_t chunk_size, size_t cache_size); +SPNG_API int spng_get_chunk_limits(spng_ctx *ctx, size_t *chunk_size, size_t *cache_size); + +SPNG_API int spng_set_crc_action(spng_ctx *ctx, int critical, int ancillary); + +SPNG_API int spng_set_option(spng_ctx *ctx, enum spng_option option, int value); +SPNG_API int spng_get_option(spng_ctx *ctx, enum spng_option option, int *value); + +SPNG_API int spng_decoded_image_size(spng_ctx *ctx, int fmt, size_t *len); + +/* Decode */ +SPNG_API int spng_decode_image(spng_ctx *ctx, void *out, size_t len, int fmt, int flags); + +/* Progressive decode */ +SPNG_API int spng_decode_scanline(spng_ctx *ctx, void *out, size_t len); +SPNG_API int spng_decode_row(spng_ctx *ctx, void *out, size_t len); +SPNG_API int spng_decode_chunks(spng_ctx *ctx); + +/* Encode/decode */ +SPNG_API int spng_get_row_info(spng_ctx *ctx, struct spng_row_info *row_info); + +/* Encode */ +SPNG_API int spng_encode_image(spng_ctx *ctx, const void *img, size_t len, int fmt, int flags); + +/* Progressive encode */ +SPNG_API int spng_encode_scanline(spng_ctx *ctx, const void *scanline, size_t len); +SPNG_API int spng_encode_row(spng_ctx *ctx, const void *row, size_t len); +SPNG_API int spng_encode_chunks(spng_ctx *ctx); + +SPNG_API int spng_get_ihdr(spng_ctx *ctx, struct spng_ihdr *ihdr); +SPNG_API int spng_get_plte(spng_ctx *ctx, struct spng_plte *plte); +SPNG_API int spng_get_trns(spng_ctx *ctx, struct spng_trns *trns); +SPNG_API int spng_get_chrm(spng_ctx *ctx, struct spng_chrm *chrm); +SPNG_API int spng_get_chrm_int(spng_ctx *ctx, struct spng_chrm_int *chrm_int); +SPNG_API int spng_get_gama(spng_ctx *ctx, double *gamma); +SPNG_API int spng_get_gama_int(spng_ctx *ctx, uint32_t *gama_int); +SPNG_API int spng_get_iccp(spng_ctx *ctx, struct spng_iccp *iccp); +SPNG_API int spng_get_sbit(spng_ctx *ctx, struct spng_sbit *sbit); +SPNG_API int spng_get_srgb(spng_ctx *ctx, uint8_t *rendering_intent); +SPNG_API int spng_get_text(spng_ctx *ctx, struct spng_text *text, uint32_t *n_text); +SPNG_API int spng_get_bkgd(spng_ctx *ctx, struct spng_bkgd *bkgd); +SPNG_API int spng_get_hist(spng_ctx *ctx, struct spng_hist *hist); +SPNG_API int spng_get_phys(spng_ctx *ctx, struct spng_phys *phys); +SPNG_API int spng_get_splt(spng_ctx *ctx, struct spng_splt *splt, uint32_t *n_splt); +SPNG_API int spng_get_time(spng_ctx *ctx, struct spng_time *time); +SPNG_API int spng_get_unknown_chunks(spng_ctx *ctx, struct spng_unknown_chunk *chunks, uint32_t *n_chunks); + +/* Official extensions */ +SPNG_API int spng_get_offs(spng_ctx *ctx, struct spng_offs *offs); +SPNG_API int spng_get_exif(spng_ctx *ctx, struct spng_exif *exif); + + +SPNG_API int spng_set_ihdr(spng_ctx *ctx, struct spng_ihdr *ihdr); +SPNG_API int spng_set_plte(spng_ctx *ctx, struct spng_plte *plte); +SPNG_API int spng_set_trns(spng_ctx *ctx, struct spng_trns *trns); +SPNG_API int spng_set_chrm(spng_ctx *ctx, struct spng_chrm *chrm); +SPNG_API int spng_set_chrm_int(spng_ctx *ctx, struct spng_chrm_int *chrm_int); +SPNG_API int spng_set_gama(spng_ctx *ctx, double gamma); +SPNG_API int spng_set_gama_int(spng_ctx *ctx, uint32_t gamma); +SPNG_API int spng_set_iccp(spng_ctx *ctx, struct spng_iccp *iccp); +SPNG_API int spng_set_sbit(spng_ctx *ctx, struct spng_sbit *sbit); +SPNG_API int spng_set_srgb(spng_ctx *ctx, uint8_t rendering_intent); +SPNG_API int spng_set_text(spng_ctx *ctx, struct spng_text *text, uint32_t n_text); +SPNG_API int spng_set_bkgd(spng_ctx *ctx, struct spng_bkgd *bkgd); +SPNG_API int spng_set_hist(spng_ctx *ctx, struct spng_hist *hist); +SPNG_API int spng_set_phys(spng_ctx *ctx, struct spng_phys *phys); +SPNG_API int spng_set_splt(spng_ctx *ctx, struct spng_splt *splt, uint32_t n_splt); +SPNG_API int spng_set_time(spng_ctx *ctx, struct spng_time *time); +SPNG_API int spng_set_unknown_chunks(spng_ctx *ctx, struct spng_unknown_chunk *chunks, uint32_t n_chunks); + +/* Official extensions */ +SPNG_API int spng_set_offs(spng_ctx *ctx, struct spng_offs *offs); +SPNG_API int spng_set_exif(spng_ctx *ctx, struct spng_exif *exif); + + +SPNG_API const char *spng_strerror(int err); +SPNG_API const char *spng_version_string(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SPNG_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiff.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiff.h new file mode 100644 index 0000000..4511130 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiff.h @@ -0,0 +1,814 @@ +/* + * Copyright (c) 1988-1997 Sam Leffler + * Copyright (c) 1991-1997 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the names of + * Sam Leffler and Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Sam Leffler and Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifndef _TIFF_ +#define _TIFF_ + +#include "tiffconf.h" + +/* + * Tag Image File Format (TIFF) + * + * Based on Rev 6.0 from: + * Developer's Desk + * Aldus Corporation + * 411 First Ave. South + * Suite 200 + * Seattle, WA 98104 + * 206-622-5500 + * + * (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf) + * + * For BigTIFF design notes see the following links + * http://www.remotesensing.org/libtiff/bigtiffdesign.html + * http://www.awaresystems.be/imaging/tiff/bigtiff.html + */ + +#define TIFF_VERSION_CLASSIC 42 +#define TIFF_VERSION_BIG 43 + +#define TIFF_BIGENDIAN 0x4d4d +#define TIFF_LITTLEENDIAN 0x4949 +#define MDI_LITTLEENDIAN 0x5045 +#define MDI_BIGENDIAN 0x4550 + +/* + * Intrinsic data types required by the file format: + * + * 8-bit quantities int8_t/uint_8_t + * 16-bit quantities int16_t/uint_16_t + * 32-bit quantities int32_t/uint_32_t + * 64-bit quantities int64_t/uint_64_t + * strings unsigned char* + */ +#ifdef __GNUC__ +#define TIFF_GCC_DEPRECATED __attribute__((deprecated)) +#else +#define TIFF_GCC_DEPRECATED +#endif +#ifdef _MSC_VER +#define TIFF_MSC_DEPRECATED __declspec(deprecated("libtiff type deprecated; please use corresponding C99 stdint.h type")) +#else +#define TIFF_MSC_DEPRECATED +#endif + +#ifndef TIFF_DISABLE_DEPRECATED +typedef TIFF_MSC_DEPRECATED int8_t int8 TIFF_GCC_DEPRECATED; +typedef TIFF_MSC_DEPRECATED uint8_t uint8 TIFF_GCC_DEPRECATED; + +typedef TIFF_MSC_DEPRECATED int16_t int16 TIFF_GCC_DEPRECATED; +typedef TIFF_MSC_DEPRECATED uint16_t uint16 TIFF_GCC_DEPRECATED; + +typedef TIFF_MSC_DEPRECATED int32_t int32 TIFF_GCC_DEPRECATED; +typedef TIFF_MSC_DEPRECATED uint32_t uint32 TIFF_GCC_DEPRECATED; + +typedef TIFF_MSC_DEPRECATED int64_t int64 TIFF_GCC_DEPRECATED; +typedef TIFF_MSC_DEPRECATED uint64_t uint64 TIFF_GCC_DEPRECATED; +#endif /* TIFF_DISABLE_DEPRECATED */ + + +/* + * Some types as promoted in a variable argument list + * We use uint16_vap rather then directly using int, because this way + * we document the type we actually want to pass through, conceptually, + * rather then confusing the issue by merely stating the type it gets + * promoted to + */ + +typedef int uint16_vap; + +/* + * TIFF header. + */ +typedef struct { + uint16_t tiff_magic; /* magic number (defines byte order) */ + uint16_t tiff_version; /* TIFF version number */ +} TIFFHeaderCommon; +typedef struct { + uint16_t tiff_magic; /* magic number (defines byte order) */ + uint16_t tiff_version; /* TIFF version number */ + uint32_t tiff_diroff; /* byte offset to first directory */ +} TIFFHeaderClassic; +typedef struct { + uint16_t tiff_magic; /* magic number (defines byte order) */ + uint16_t tiff_version; /* TIFF version number */ + uint16_t tiff_offsetsize; /* size of offsets, should be 8 */ + uint16_t tiff_unused; /* unused word, should be 0 */ + uint64_t tiff_diroff; /* byte offset to first directory */ +} TIFFHeaderBig; + + +/* + * NB: In the comments below, + * - items marked with a + are obsoleted by revision 5.0, + * - items marked with a ! are introduced in revision 6.0. + * - items marked with a % are introduced post revision 6.0. + * - items marked with a $ are obsoleted by revision 6.0. + * - items marked with a & are introduced by Adobe DNG specification. + */ + +/* + * Tag data type information. + * + * Note: RATIONALs are the ratio of two 32-bit integer values. + *--: + * Note2: TIFF_IFD8 data type is used in tiffFields[]-tag definition in order to distinguish the write-handling + of those tags between ClassicTIFF and BigTiff: + For ClassicTIFF libtiff writes a 32-bit value and the TIFF_IFD type-id into the file + For BigTIFF libtiff writes a 64-bit value and the TIFF_IFD8 type-id into the file + */ +typedef enum { + TIFF_NOTYPE = 0, /* placeholder */ + TIFF_BYTE = 1, /* 8-bit unsigned integer */ + TIFF_ASCII = 2, /* 8-bit bytes w/ last byte null */ + TIFF_SHORT = 3, /* 16-bit unsigned integer */ + TIFF_LONG = 4, /* 32-bit unsigned integer */ + TIFF_RATIONAL = 5, /* 64-bit unsigned fraction */ + TIFF_SBYTE = 6, /* !8-bit signed integer */ + TIFF_UNDEFINED = 7, /* !8-bit untyped data */ + TIFF_SSHORT = 8, /* !16-bit signed integer */ + TIFF_SLONG = 9, /* !32-bit signed integer */ + TIFF_SRATIONAL = 10, /* !64-bit signed fraction */ + TIFF_FLOAT = 11, /* !32-bit IEEE floating point */ + TIFF_DOUBLE = 12, /* !64-bit IEEE floating point */ + TIFF_IFD = 13, /* %32-bit unsigned integer (offset) */ + TIFF_LONG8 = 16, /* BigTIFF 64-bit unsigned integer */ + TIFF_SLONG8 = 17, /* BigTIFF 64-bit signed integer */ + TIFF_IFD8 = 18 /* BigTIFF 64-bit unsigned integer (offset) */ +} TIFFDataType; + +/* + * TIFF Tag Definitions. + */ +#define TIFFTAG_SUBFILETYPE 254 /* subfile data descriptor */ +#define FILETYPE_REDUCEDIMAGE 0x1 /* reduced resolution version */ +#define FILETYPE_PAGE 0x2 /* one page of many */ +#define FILETYPE_MASK 0x4 /* transparency mask */ +#define TIFFTAG_OSUBFILETYPE 255 /* +kind of data in subfile */ +#define OFILETYPE_IMAGE 1 /* full resolution image data */ +#define OFILETYPE_REDUCEDIMAGE 2 /* reduced size image data */ +#define OFILETYPE_PAGE 3 /* one page of many */ +#define TIFFTAG_IMAGEWIDTH 256 /* image width in pixels */ +#define TIFFTAG_IMAGELENGTH 257 /* image height in pixels */ +#define TIFFTAG_BITSPERSAMPLE 258 /* bits per channel (sample) */ +#define TIFFTAG_COMPRESSION 259 /* data compression technique */ +#define COMPRESSION_NONE 1 /* dump mode */ +#define COMPRESSION_CCITTRLE 2 /* CCITT modified Huffman RLE */ +#define COMPRESSION_CCITTFAX3 3 /* CCITT Group 3 fax encoding */ +#define COMPRESSION_CCITT_T4 3 /* CCITT T.4 (TIFF 6 name) */ +#define COMPRESSION_CCITTFAX4 4 /* CCITT Group 4 fax encoding */ +#define COMPRESSION_CCITT_T6 4 /* CCITT T.6 (TIFF 6 name) */ +#define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */ +#define COMPRESSION_OJPEG 6 /* !6.0 JPEG */ +#define COMPRESSION_JPEG 7 /* %JPEG DCT compression */ +#define COMPRESSION_T85 9 /* !TIFF/FX T.85 JBIG compression */ +#define COMPRESSION_T43 10 /* !TIFF/FX T.43 colour by layered JBIG compression */ +#define COMPRESSION_NEXT 32766 /* NeXT 2-bit RLE */ +#define COMPRESSION_CCITTRLEW 32771 /* #1 w/ word alignment */ +#define COMPRESSION_PACKBITS 32773 /* Macintosh RLE */ +#define COMPRESSION_THUNDERSCAN 32809 /* ThunderScan RLE */ +/* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT */ +#define COMPRESSION_DCS 32947 /* Kodak DCS encoding */ +#define COMPRESSION_JBIG 34661 /* ISO JBIG */ +#define COMPRESSION_SGILOG 34676 /* SGI Log Luminance RLE */ +#define COMPRESSION_SGILOG24 34677 /* SGI Log 24-bit packed */ +#define COMPRESSION_JP2000 34712 /* Leadtools JPEG2000 */ +#define COMPRESSION_LERC 34887 /* ESRI Lerc codec: https://github.com/Esri/lerc */ +/* compression codes 34887-34889 are reserved for ESRI */ +#define COMPRESSION_LZMA 34925 /* LZMA2 */ +#define COMPRESSION_ZSTD 50000 /* ZSTD: WARNING not registered in Adobe-maintained registry */ +#define COMPRESSION_WEBP 50001 /* WEBP: WARNING not registered in Adobe-maintained registry */ +#define COMPRESSION_JXL 50002 /* JPEGXL: WARNING not registered in Adobe-maintained registry */ +#define TIFFTAG_PHOTOMETRIC 262 /* photometric interpretation */ +#define PHOTOMETRIC_MINISWHITE 0 /* min value is white */ +#define PHOTOMETRIC_MINISBLACK 1 /* min value is black */ +#define PHOTOMETRIC_RGB 2 /* RGB color model */ +#define PHOTOMETRIC_PALETTE 3 /* color map indexed */ +#define PHOTOMETRIC_MASK 4 /* $holdout mask */ +#define PHOTOMETRIC_SEPARATED 5 /* !color separations */ +#define PHOTOMETRIC_YCBCR 6 /* !CCIR 601 */ +#define PHOTOMETRIC_CIELAB 8 /* !1976 CIE L*a*b* */ +#define PHOTOMETRIC_ICCLAB 9 /* ICC L*a*b* [Adobe TIFF Technote 4] */ +#define PHOTOMETRIC_ITULAB 10 /* ITU L*a*b* */ +#define PHOTOMETRIC_CFA 32803 /* color filter array */ +#define PHOTOMETRIC_LOGL 32844 /* CIE Log2(L) */ +#define PHOTOMETRIC_LOGLUV 32845 /* CIE Log2(L) (u',v') */ +#define TIFFTAG_THRESHHOLDING 263 /* +thresholding used on data */ +#define THRESHHOLD_BILEVEL 1 /* b&w art scan */ +#define THRESHHOLD_HALFTONE 2 /* or dithered scan */ +#define THRESHHOLD_ERRORDIFFUSE 3 /* usually floyd-steinberg */ +#define TIFFTAG_CELLWIDTH 264 /* +dithering matrix width */ +#define TIFFTAG_CELLLENGTH 265 /* +dithering matrix height */ +#define TIFFTAG_FILLORDER 266 /* data order within a byte */ +#define FILLORDER_MSB2LSB 1 /* most significant -> least */ +#define FILLORDER_LSB2MSB 2 /* least significant -> most */ +#define TIFFTAG_DOCUMENTNAME 269 /* name of doc. image is from */ +#define TIFFTAG_IMAGEDESCRIPTION 270 /* info about image */ +#define TIFFTAG_MAKE 271 /* scanner manufacturer name */ +#define TIFFTAG_MODEL 272 /* scanner model name/number */ +#define TIFFTAG_STRIPOFFSETS 273 /* offsets to data strips */ +#define TIFFTAG_ORIENTATION 274 /* +image orientation */ +#define ORIENTATION_TOPLEFT 1 /* row 0 top, col 0 lhs */ +#define ORIENTATION_TOPRIGHT 2 /* row 0 top, col 0 rhs */ +#define ORIENTATION_BOTRIGHT 3 /* row 0 bottom, col 0 rhs */ +#define ORIENTATION_BOTLEFT 4 /* row 0 bottom, col 0 lhs */ +#define ORIENTATION_LEFTTOP 5 /* row 0 lhs, col 0 top */ +#define ORIENTATION_RIGHTTOP 6 /* row 0 rhs, col 0 top */ +#define ORIENTATION_RIGHTBOT 7 /* row 0 rhs, col 0 bottom */ +#define ORIENTATION_LEFTBOT 8 /* row 0 lhs, col 0 bottom */ +#define TIFFTAG_SAMPLESPERPIXEL 277 /* samples per pixel */ +#define TIFFTAG_ROWSPERSTRIP 278 /* rows per strip of data */ +#define TIFFTAG_STRIPBYTECOUNTS 279 /* bytes counts for strips */ +#define TIFFTAG_MINSAMPLEVALUE 280 /* +minimum sample value */ +#define TIFFTAG_MAXSAMPLEVALUE 281 /* +maximum sample value */ +#define TIFFTAG_XRESOLUTION 282 /* pixels/resolution in x */ +#define TIFFTAG_YRESOLUTION 283 /* pixels/resolution in y */ +#define TIFFTAG_PLANARCONFIG 284 /* storage organization */ +#define PLANARCONFIG_CONTIG 1 /* single image plane */ +#define PLANARCONFIG_SEPARATE 2 /* separate planes of data */ +#define TIFFTAG_PAGENAME 285 /* page name image is from */ +#define TIFFTAG_XPOSITION 286 /* x page offset of image lhs */ +#define TIFFTAG_YPOSITION 287 /* y page offset of image lhs */ +#define TIFFTAG_FREEOFFSETS 288 /* +byte offset to free block */ +#define TIFFTAG_FREEBYTECOUNTS 289 /* +sizes of free blocks */ +#define TIFFTAG_GRAYRESPONSEUNIT 290 /* $gray scale curve accuracy */ +#define GRAYRESPONSEUNIT_10S 1 /* tenths of a unit */ +#define GRAYRESPONSEUNIT_100S 2 /* hundredths of a unit */ +#define GRAYRESPONSEUNIT_1000S 3 /* thousandths of a unit */ +#define GRAYRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */ +#define GRAYRESPONSEUNIT_100000S 5 /* hundred-thousandths */ +#define TIFFTAG_GRAYRESPONSECURVE 291 /* $gray scale response curve */ +#define TIFFTAG_GROUP3OPTIONS 292 /* 32 flag bits */ +#define TIFFTAG_T4OPTIONS 292 /* TIFF 6.0 proper name alias */ +#define GROUP3OPT_2DENCODING 0x1 /* 2-dimensional coding */ +#define GROUP3OPT_UNCOMPRESSED 0x2 /* data not compressed */ +#define GROUP3OPT_FILLBITS 0x4 /* fill to byte boundary */ +#define TIFFTAG_GROUP4OPTIONS 293 /* 32 flag bits */ +#define TIFFTAG_T6OPTIONS 293 /* TIFF 6.0 proper name */ +#define GROUP4OPT_UNCOMPRESSED 0x2 /* data not compressed */ +#define TIFFTAG_RESOLUTIONUNIT 296 /* units of resolutions */ +#define RESUNIT_NONE 1 /* no meaningful units */ +#define RESUNIT_INCH 2 /* english */ +#define RESUNIT_CENTIMETER 3 /* metric */ +#define TIFFTAG_PAGENUMBER 297 /* page numbers of multi-page */ +#define TIFFTAG_COLORRESPONSEUNIT 300 /* $color curve accuracy */ +#define COLORRESPONSEUNIT_10S 1 /* tenths of a unit */ +#define COLORRESPONSEUNIT_100S 2 /* hundredths of a unit */ +#define COLORRESPONSEUNIT_1000S 3 /* thousandths of a unit */ +#define COLORRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */ +#define COLORRESPONSEUNIT_100000S 5 /* hundred-thousandths */ +#define TIFFTAG_TRANSFERFUNCTION 301 /* !colorimetry info */ +#define TIFFTAG_SOFTWARE 305 /* name & release */ +#define TIFFTAG_DATETIME 306 /* creation date and time */ +#define TIFFTAG_ARTIST 315 /* creator of image */ +#define TIFFTAG_HOSTCOMPUTER 316 /* machine where created */ +#define TIFFTAG_PREDICTOR 317 /* prediction scheme w/ LZW */ +#define PREDICTOR_NONE 1 /* no prediction scheme used */ +#define PREDICTOR_HORIZONTAL 2 /* horizontal differencing */ +#define PREDICTOR_FLOATINGPOINT 3 /* floating point predictor */ +#define TIFFTAG_WHITEPOINT 318 /* image white point */ +#define TIFFTAG_PRIMARYCHROMATICITIES 319 /* !primary chromaticities */ +#define TIFFTAG_COLORMAP 320 /* RGB map for palette image */ +#define TIFFTAG_HALFTONEHINTS 321 /* !highlight+shadow info */ +#define TIFFTAG_TILEWIDTH 322 /* !tile width in pixels */ +#define TIFFTAG_TILELENGTH 323 /* !tile height in pixels */ +#define TIFFTAG_TILEOFFSETS 324 /* !offsets to data tiles */ +#define TIFFTAG_TILEBYTECOUNTS 325 /* !byte counts for tiles */ +#define TIFFTAG_BADFAXLINES 326 /* lines w/ wrong pixel count */ +#define TIFFTAG_CLEANFAXDATA 327 /* regenerated line info */ +#define CLEANFAXDATA_CLEAN 0 /* no errors detected */ +#define CLEANFAXDATA_REGENERATED 1 /* receiver regenerated lines */ +#define CLEANFAXDATA_UNCLEAN 2 /* uncorrected errors exist */ +#define TIFFTAG_CONSECUTIVEBADFAXLINES 328 /* max consecutive bad lines */ +#define TIFFTAG_SUBIFD 330 /* subimage descriptors */ +#define TIFFTAG_INKSET 332 /* !inks in separated image */ +#define INKSET_CMYK 1 /* !cyan-magenta-yellow-black color */ +#define INKSET_MULTIINK 2 /* !multi-ink or hi-fi color */ +#define TIFFTAG_INKNAMES 333 /* !ascii names of inks */ +#define TIFFTAG_NUMBEROFINKS 334 /* !number of inks */ +#define TIFFTAG_DOTRANGE 336 /* !0% and 100% dot codes */ +#define TIFFTAG_TARGETPRINTER 337 /* !separation target */ +#define TIFFTAG_EXTRASAMPLES 338 /* !info about extra samples */ +#define EXTRASAMPLE_UNSPECIFIED 0 /* !unspecified data */ +#define EXTRASAMPLE_ASSOCALPHA 1 /* !associated alpha data */ +#define EXTRASAMPLE_UNASSALPHA 2 /* !unassociated alpha data */ +#define TIFFTAG_SAMPLEFORMAT 339 /* !data sample format */ +#define SAMPLEFORMAT_UINT 1 /* !unsigned integer data */ +#define SAMPLEFORMAT_INT 2 /* !signed integer data */ +#define SAMPLEFORMAT_IEEEFP 3 /* !IEEE floating point data */ +#define SAMPLEFORMAT_VOID 4 /* !untyped data */ +#define SAMPLEFORMAT_COMPLEXINT 5 /* !complex signed int */ +#define SAMPLEFORMAT_COMPLEXIEEEFP 6 /* !complex ieee floating */ +#define TIFFTAG_SMINSAMPLEVALUE 340 /* !variable MinSampleValue */ +#define TIFFTAG_SMAXSAMPLEVALUE 341 /* !variable MaxSampleValue */ +#define TIFFTAG_CLIPPATH 343 /* %ClipPath + [Adobe TIFF technote 2] */ +#define TIFFTAG_XCLIPPATHUNITS 344 /* %XClipPathUnits + [Adobe TIFF technote 2] */ +#define TIFFTAG_YCLIPPATHUNITS 345 /* %YClipPathUnits + [Adobe TIFF technote 2] */ +#define TIFFTAG_INDEXED 346 /* %Indexed + [Adobe TIFF Technote 3] */ +#define TIFFTAG_JPEGTABLES 347 /* %JPEG table stream */ +#define TIFFTAG_OPIPROXY 351 /* %OPI Proxy [Adobe TIFF technote] */ +/* Tags 400-435 are from the TIFF/FX spec */ +#define TIFFTAG_GLOBALPARAMETERSIFD 400 /* ! */ +#define TIFFTAG_PROFILETYPE 401 /* ! */ +#define PROFILETYPE_UNSPECIFIED 0 /* ! */ +#define PROFILETYPE_G3_FAX 1 /* ! */ +#define TIFFTAG_FAXPROFILE 402 /* ! */ +#define FAXPROFILE_S 1 /* !TIFF/FX FAX profile S */ +#define FAXPROFILE_F 2 /* !TIFF/FX FAX profile F */ +#define FAXPROFILE_J 3 /* !TIFF/FX FAX profile J */ +#define FAXPROFILE_C 4 /* !TIFF/FX FAX profile C */ +#define FAXPROFILE_L 5 /* !TIFF/FX FAX profile L */ +#define FAXPROFILE_M 6 /* !TIFF/FX FAX profile LM */ +#define TIFFTAG_CODINGMETHODS 403 /* !TIFF/FX coding methods */ +#define CODINGMETHODS_T4_1D (1 << 1) /* !T.4 1D */ +#define CODINGMETHODS_T4_2D (1 << 2) /* !T.4 2D */ +#define CODINGMETHODS_T6 (1 << 3) /* !T.6 */ +#define CODINGMETHODS_T85 (1 << 4) /* !T.85 JBIG */ +#define CODINGMETHODS_T42 (1 << 5) /* !T.42 JPEG */ +#define CODINGMETHODS_T43 (1 << 6) /* !T.43 colour by layered JBIG */ +#define TIFFTAG_VERSIONYEAR 404 /* !TIFF/FX version year */ +#define TIFFTAG_MODENUMBER 405 /* !TIFF/FX mode number */ +#define TIFFTAG_DECODE 433 /* !TIFF/FX decode */ +#define TIFFTAG_IMAGEBASECOLOR 434 /* !TIFF/FX image base colour */ +#define TIFFTAG_T82OPTIONS 435 /* !TIFF/FX T.82 options */ +/* + * Tags 512-521 are obsoleted by Technical Note #2 which specifies a + * revised JPEG-in-TIFF scheme. + */ +#define TIFFTAG_JPEGPROC 512 /* !JPEG processing algorithm */ +#define JPEGPROC_BASELINE 1 /* !baseline sequential */ +#define JPEGPROC_LOSSLESS 14 /* !Huffman coded lossless */ +#define TIFFTAG_JPEGIFOFFSET 513 /* !pointer to SOI marker */ +#define TIFFTAG_JPEGIFBYTECOUNT 514 /* !JFIF stream length */ +#define TIFFTAG_JPEGRESTARTINTERVAL 515 /* !restart interval length */ +#define TIFFTAG_JPEGLOSSLESSPREDICTORS 517 /* !lossless proc predictor */ +#define TIFFTAG_JPEGPOINTTRANSFORM 518 /* !lossless point transform */ +#define TIFFTAG_JPEGQTABLES 519 /* !Q matrix offsets */ +#define TIFFTAG_JPEGDCTABLES 520 /* !DCT table offsets */ +#define TIFFTAG_JPEGACTABLES 521 /* !AC coefficient offsets */ +#define TIFFTAG_YCBCRCOEFFICIENTS 529 /* !RGB -> YCbCr transform */ +#define TIFFTAG_YCBCRSUBSAMPLING 530 /* !YCbCr subsampling factors */ +#define TIFFTAG_YCBCRPOSITIONING 531 /* !subsample positioning */ +#define YCBCRPOSITION_CENTERED 1 /* !as in PostScript Level 2 */ +#define YCBCRPOSITION_COSITED 2 /* !as in CCIR 601-1 */ +#define TIFFTAG_REFERENCEBLACKWHITE 532 /* !colorimetry info */ +#define TIFFTAG_STRIPROWCOUNTS 559 /* !TIFF/FX strip row counts */ +#define TIFFTAG_XMLPACKET 700 /* %XML packet + [Adobe XMP Specification, + January 2004 */ +#define TIFFTAG_OPIIMAGEID 32781 /* %OPI ImageID + [Adobe TIFF technote] */ +#define TIFFTAG_TIFFANNOTATIONDATA 32932 /* http://web.archive.org/web/20050309141348/http://www.kofile.com/support%20pro/faqs/annospec.htm */ +/* tags 32952-32956 are private tags registered to Island Graphics */ +#define TIFFTAG_REFPTS 32953 /* image reference points */ +#define TIFFTAG_REGIONTACKPOINT 32954 /* region-xform tack point */ +#define TIFFTAG_REGIONWARPCORNERS 32955 /* warp quadrilateral */ +#define TIFFTAG_REGIONAFFINE 32956 /* affine transformation mat */ +/* tags 32995-32999 are private tags registered to SGI */ +#define TIFFTAG_MATTEING 32995 /* $use ExtraSamples */ +#define TIFFTAG_DATATYPE 32996 /* $use SampleFormat */ +#define TIFFTAG_IMAGEDEPTH 32997 /* z depth of image */ +#define TIFFTAG_TILEDEPTH 32998 /* z depth/data tile */ +/* tags 33300-33309 are private tags registered to Pixar */ +/* + * TIFFTAG_PIXAR_IMAGEFULLWIDTH and TIFFTAG_PIXAR_IMAGEFULLLENGTH + * are set when an image has been cropped out of a larger image. + * They reflect the size of the original uncropped image. + * The TIFFTAG_XPOSITION and TIFFTAG_YPOSITION can be used + * to determine the position of the smaller image in the larger one. + */ +#define TIFFTAG_PIXAR_IMAGEFULLWIDTH 33300 /* full image size in x */ +#define TIFFTAG_PIXAR_IMAGEFULLLENGTH 33301 /* full image size in y */ + /* Tags 33302-33306 are used to identify special image modes and data + * used by Pixar's texture formats. + */ +#define TIFFTAG_PIXAR_TEXTUREFORMAT 33302 /* texture map format */ +#define TIFFTAG_PIXAR_WRAPMODES 33303 /* s & t wrap modes */ +#define TIFFTAG_PIXAR_FOVCOT 33304 /* cotan(fov) for env. maps */ +#define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 33305 +#define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 33306 +/* tag 33405 is a private tag registered to Eastman Kodak */ +#define TIFFTAG_WRITERSERIALNUMBER 33405 /* device serial number */ +#define TIFFTAG_CFAREPEATPATTERNDIM 33421 /* dimensions of CFA pattern */ +#define TIFFTAG_CFAPATTERN 33422 /* color filter array pattern */ +/* tag 33432 is listed in the 6.0 spec w/ unknown ownership */ +#define TIFFTAG_COPYRIGHT 33432 /* copyright string */ +/* Tags 33445-33452 are used for GEL fileformat, see + * http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf + */ +#define TIFFTAG_MD_FILETAG 33445 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +#define TIFFTAG_MD_SCALEPIXEL 33446 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +#define TIFFTAG_MD_COLORTABLE 33447 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +#define TIFFTAG_MD_LABNAME 33448 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +#define TIFFTAG_MD_SAMPLEINFO 33449 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +#define TIFFTAG_MD_PREPDATE 33450 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +#define TIFFTAG_MD_PREPTIME 33451 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +#define TIFFTAG_MD_FILEUNITS 33452 /* http://research.stowers-institute.org/mcm/efg/ScientificSoftware/Utility/TiffTags/GEL-FileFormat.pdf */ +/* IPTC TAG from RichTIFF specifications */ +#define TIFFTAG_RICHTIFFIPTC 33723 +#define TIFFTAG_INGR_PACKET_DATA_TAG 33918 /* Intergraph Application specific storage. */ +#define TIFFTAG_INGR_FLAG_REGISTERS 33919 /* Intergraph Application specific flags. */ +#define TIFFTAG_IRASB_TRANSORMATION_MATRIX 33920 /* Originally part of Intergraph's GeoTIFF tags, but likely understood by IrasB only. */ +#define TIFFTAG_MODELTIEPOINTTAG 33922 /* GeoTIFF */ +/* 34016-34029 are reserved for ANSI IT8 TIFF/IT */ +#define TIFFTAG_STONITS 37439 /* Sample value to Nits */ +/* tag 34929 is a private tag registered to FedEx */ +#define TIFFTAG_FEDEX_EDR 34929 /* unknown use */ +#define TIFFTAG_IMAGESOURCEDATA 37724 /* http://justsolve.archiveteam.org/wiki/PSD, http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/ */ +#define TIFFTAG_INTEROPERABILITYIFD 40965 /* Pointer to Interoperability private directory */ +#define TIFFTAG_GDAL_METADATA 42112 /* Used by the GDAL library */ +#define TIFFTAG_GDAL_NODATA 42113 /* Used by the GDAL library */ +#define TIFFTAG_OCE_SCANJOB_DESCRIPTION 50215 /* Used in the Oce scanning process */ +#define TIFFTAG_OCE_APPLICATION_SELECTOR 50216 /* Used in the Oce scanning process. */ +#define TIFFTAG_OCE_IDENTIFICATION_NUMBER 50217 +#define TIFFTAG_OCE_IMAGELOGIC_CHARACTERISTICS 50218 + +/* tags 50674 to 50677 are reserved for ESRI */ +#define TIFFTAG_LERC_PARAMETERS 50674 /* Stores LERC version and additional compression method */ +/* Adobe Digital Negative (DNG) format tags */ +#define TIFFTAG_DNGVERSION 50706 /* &DNG version number */ +#define TIFFTAG_DNGBACKWARDVERSION 50707 /* &DNG compatibility version */ +#define TIFFTAG_UNIQUECAMERAMODEL 50708 /* &name for the camera model */ +#define TIFFTAG_LOCALIZEDCAMERAMODEL 50709 /* &localized camera model + name */ +#define TIFFTAG_CFAPLANECOLOR 50710 /* &CFAPattern->LinearRaw space + mapping */ +#define TIFFTAG_CFALAYOUT 50711 /* &spatial layout of the CFA */ +#define TIFFTAG_LINEARIZATIONTABLE 50712 /* &lookup table description */ +#define TIFFTAG_BLACKLEVELREPEATDIM 50713 /* &repeat pattern size for + the BlackLevel tag */ +#define TIFFTAG_BLACKLEVEL 50714 /* &zero light encoding level */ +#define TIFFTAG_BLACKLEVELDELTAH 50715 /* &zero light encoding level + differences (columns) */ +#define TIFFTAG_BLACKLEVELDELTAV 50716 /* &zero light encoding level + differences (rows) */ +#define TIFFTAG_WHITELEVEL 50717 /* &fully saturated encoding + level */ +#define TIFFTAG_DEFAULTSCALE 50718 /* &default scale factors */ +#define TIFFTAG_DEFAULTCROPORIGIN 50719 /* &origin of the final image + area */ +#define TIFFTAG_DEFAULTCROPSIZE 50720 /* &size of the final image + area */ +#define TIFFTAG_COLORMATRIX1 50721 /* &XYZ->reference color space + transformation matrix 1 */ +#define TIFFTAG_COLORMATRIX2 50722 /* &XYZ->reference color space + transformation matrix 2 */ +#define TIFFTAG_CAMERACALIBRATION1 50723 /* &calibration matrix 1 */ +#define TIFFTAG_CAMERACALIBRATION2 50724 /* &calibration matrix 2 */ +#define TIFFTAG_REDUCTIONMATRIX1 50725 /* &dimensionality reduction + matrix 1 */ +#define TIFFTAG_REDUCTIONMATRIX2 50726 /* &dimensionality reduction + matrix 2 */ +#define TIFFTAG_ANALOGBALANCE 50727 /* &gain applied the stored raw + values*/ +#define TIFFTAG_ASSHOTNEUTRAL 50728 /* &selected white balance in + linear reference space */ +#define TIFFTAG_ASSHOTWHITEXY 50729 /* &selected white balance in + x-y chromaticity + coordinates */ +#define TIFFTAG_BASELINEEXPOSURE 50730 /* &how much to move the zero + point */ +#define TIFFTAG_BASELINENOISE 50731 /* &relative noise level */ +#define TIFFTAG_BASELINESHARPNESS 50732 /* &relative amount of + sharpening */ +#define TIFFTAG_BAYERGREENSPLIT 50733 /* &how closely the values of + the green pixels in the + blue/green rows track the + values of the green pixels + in the red/green rows */ +#define TIFFTAG_LINEARRESPONSELIMIT 50734 /* &non-linear encoding range */ +#define TIFFTAG_CAMERASERIALNUMBER 50735 /* &camera's serial number */ +#define TIFFTAG_LENSINFO 50736 /* info about the lens */ +#define TIFFTAG_CHROMABLURRADIUS 50737 /* &chroma blur radius */ +#define TIFFTAG_ANTIALIASSTRENGTH 50738 /* &relative strength of the + camera's anti-alias filter */ +#define TIFFTAG_SHADOWSCALE 50739 /* &used by Adobe Camera Raw */ +#define TIFFTAG_DNGPRIVATEDATA 50740 /* &manufacturer's private data */ +#define TIFFTAG_MAKERNOTESAFETY 50741 /* &whether the EXIF MakerNote + tag is safe to preserve + along with the rest of the + EXIF data */ +#define TIFFTAG_CALIBRATIONILLUMINANT1 50778 /* &illuminant 1 */ +#define TIFFTAG_CALIBRATIONILLUMINANT2 50779 /* &illuminant 2 */ +#define TIFFTAG_BESTQUALITYSCALE 50780 /* &best quality multiplier */ +#define TIFFTAG_RAWDATAUNIQUEID 50781 /* &unique identifier for + the raw image data */ +#define TIFFTAG_ORIGINALRAWFILENAME 50827 /* &file name of the original + raw file */ +#define TIFFTAG_ORIGINALRAWFILEDATA 50828 /* &contents of the original + raw file */ +#define TIFFTAG_ACTIVEAREA 50829 /* &active (non-masked) pixels + of the sensor */ +#define TIFFTAG_MASKEDAREAS 50830 /* &list of coordinates + of fully masked pixels */ +#define TIFFTAG_ASSHOTICCPROFILE 50831 /* &these two tags used to */ +#define TIFFTAG_ASSHOTPREPROFILEMATRIX 50832 /* map cameras's color space + into ICC profile space */ +#define TIFFTAG_CURRENTICCPROFILE 50833 /* & */ +#define TIFFTAG_CURRENTPREPROFILEMATRIX 50834 /* & */ + +#define TIFFTAG_RPCCOEFFICIENT 50844 /* Define by GDAL for geospatial georeferencing through RPC: http://geotiff.maptools.org/rpc_prop.html */ + +#define TIFFTAG_ALIAS_LAYER_METADATA 50784 /* Alias Sketchbook Pro layer usage description. */ + +/* GeoTIFF DGIWG */ +#define TIFFTAG_TIFF_RSID 50908 /* https://www.awaresystems.be/imaging/tiff/tifftags/tiff_rsid.html */ +#define TIFFTAG_GEO_METADATA 50909 /* https://www.awaresystems.be/imaging/tiff/tifftags/geo_metadata.html */ + +#define TIFFTAG_EXTRACAMERAPROFILES 50933 /* http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/products/photoshop/pdfs/dng_spec_1.4.0.0.pdf */ + +/* tag 65535 is an undefined tag used by Eastman Kodak */ +#define TIFFTAG_DCSHUESHIFTVALUES 65535 /* hue shift correction data */ + +/* + * The following are ``pseudo tags'' that can be used to control + * codec-specific functionality. These tags are not written to file. + * Note that these values start at 0xffff+1 so that they'll never + * collide with Aldus-assigned tags. + * + * If you want your private pseudo tags ``registered'' (i.e. added to + * this file), please post a bug report via the tracking system at + * http://www.remotesensing.org/libtiff/bugs.html with the appropriate + * C definitions to add. + */ +#define TIFFTAG_FAXMODE 65536 /* Group 3/4 format control */ +#define FAXMODE_CLASSIC 0x0000 /* default, include RTC */ +#define FAXMODE_NORTC 0x0001 /* no RTC at end of data */ +#define FAXMODE_NOEOL 0x0002 /* no EOL code at end of row */ +#define FAXMODE_BYTEALIGN 0x0004 /* byte align row */ +#define FAXMODE_WORDALIGN 0x0008 /* word align row */ +#define FAXMODE_CLASSF FAXMODE_NORTC /* TIFF Class F */ +#define TIFFTAG_JPEGQUALITY 65537 /* Compression quality level */ +/* Note: quality level is on the IJG 0-100 scale. Default value is 75 */ +#define TIFFTAG_JPEGCOLORMODE 65538 /* Auto RGB<=>YCbCr convert? */ +#define JPEGCOLORMODE_RAW 0x0000 /* no conversion (default) */ +#define JPEGCOLORMODE_RGB 0x0001 /* do auto conversion */ +#define TIFFTAG_JPEGTABLESMODE 65539 /* What to put in JPEGTables */ +#define JPEGTABLESMODE_QUANT 0x0001 /* include quantization tbls */ +#define JPEGTABLESMODE_HUFF 0x0002 /* include Huffman tbls */ +/* Note: default is JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF */ +#define TIFFTAG_FAXFILLFUNC 65540 /* G3/G4 fill function */ +#define TIFFTAG_PIXARLOGDATAFMT 65549 /* PixarLogCodec I/O data sz */ +#define PIXARLOGDATAFMT_8BIT 0 /* regular u_char samples */ +#define PIXARLOGDATAFMT_8BITABGR 1 /* ABGR-order u_chars */ +#define PIXARLOGDATAFMT_11BITLOG 2 /* 11-bit log-encoded (raw) */ +#define PIXARLOGDATAFMT_12BITPICIO 3 /* as per PICIO (1.0==2048) */ +#define PIXARLOGDATAFMT_16BIT 4 /* signed short samples */ +#define PIXARLOGDATAFMT_FLOAT 5 /* IEEE float samples */ +/* 65550-65556 are allocated to Oceana Matrix */ +#define TIFFTAG_DCSIMAGERTYPE 65550 /* imager model & filter */ +#define DCSIMAGERMODEL_M3 0 /* M3 chip (1280 x 1024) */ +#define DCSIMAGERMODEL_M5 1 /* M5 chip (1536 x 1024) */ +#define DCSIMAGERMODEL_M6 2 /* M6 chip (3072 x 2048) */ +#define DCSIMAGERFILTER_IR 0 /* infrared filter */ +#define DCSIMAGERFILTER_MONO 1 /* monochrome filter */ +#define DCSIMAGERFILTER_CFA 2 /* color filter array */ +#define DCSIMAGERFILTER_OTHER 3 /* other filter */ +#define TIFFTAG_DCSINTERPMODE 65551 /* interpolation mode */ +#define DCSINTERPMODE_NORMAL 0x0 /* whole image, default */ +#define DCSINTERPMODE_PREVIEW 0x1 /* preview of image (384x256) */ +#define TIFFTAG_DCSBALANCEARRAY 65552 /* color balance values */ +#define TIFFTAG_DCSCORRECTMATRIX 65553 /* color correction values */ +#define TIFFTAG_DCSGAMMA 65554 /* gamma value */ +#define TIFFTAG_DCSTOESHOULDERPTS 65555 /* toe & shoulder points */ +#define TIFFTAG_DCSCALIBRATIONFD 65556 /* calibration file desc */ +/* Note: quality level is on the ZLIB 1-9 scale. Default value is -1 */ +#define TIFFTAG_ZIPQUALITY 65557 /* compression quality level */ +#define TIFFTAG_PIXARLOGQUALITY 65558 /* PixarLog uses same scale */ +/* 65559 is allocated to Oceana Matrix */ +#define TIFFTAG_DCSCLIPRECTANGLE 65559 /* area of image to acquire */ +#define TIFFTAG_SGILOGDATAFMT 65560 /* SGILog user data format */ +#define SGILOGDATAFMT_FLOAT 0 /* IEEE float samples */ +#define SGILOGDATAFMT_16BIT 1 /* 16-bit samples */ +#define SGILOGDATAFMT_RAW 2 /* uninterpreted data */ +#define SGILOGDATAFMT_8BIT 3 /* 8-bit RGB monitor values */ +#define TIFFTAG_SGILOGENCODE 65561 /* SGILog data encoding control*/ +#define SGILOGENCODE_NODITHER 0 /* do not dither encoded values*/ +#define SGILOGENCODE_RANDITHER 1 /* randomly dither encd values */ +#define TIFFTAG_LZMAPRESET 65562 /* LZMA2 preset (compression level) */ +#define TIFFTAG_PERSAMPLE 65563 /* interface for per sample tags */ +#define PERSAMPLE_MERGED 0 /* present as a single value */ +#define PERSAMPLE_MULTI 1 /* present as multiple values */ +#define TIFFTAG_ZSTD_LEVEL 65564 /* ZSTD compression level */ +#define TIFFTAG_LERC_VERSION 65565 /* LERC version */ +#define LERC_VERSION_2_4 4 +#define TIFFTAG_LERC_ADD_COMPRESSION 65566 /* LERC additional compression */ +#define LERC_ADD_COMPRESSION_NONE 0 +#define LERC_ADD_COMPRESSION_DEFLATE 1 +#define LERC_ADD_COMPRESSION_ZSTD 2 +#define TIFFTAG_LERC_MAXZERROR 65567 /* LERC maximum error */ +#define TIFFTAG_WEBP_LEVEL 65568 /* WebP compression level */ +#define TIFFTAG_WEBP_LOSSLESS 65569 /* WebP lossless/lossy */ +#define TIFFTAG_DEFLATE_SUBCODEC 65570 /* ZIP codec: to get/set the sub-codec to use. Will default to libdeflate when available */ +#define DEFLATE_SUBCODEC_ZLIB 0 +#define DEFLATE_SUBCODEC_LIBDEFLATE 1 + +/* + * EXIF tags + */ +#define EXIFTAG_EXPOSURETIME 33434 /* Exposure time */ +#define EXIFTAG_FNUMBER 33437 /* F number */ +#define EXIFTAG_EXPOSUREPROGRAM 34850 /* Exposure program */ +#define EXIFTAG_SPECTRALSENSITIVITY 34852 /* Spectral sensitivity */ +#define EXIFTAG_ISOSPEEDRATINGS 34855 /* ISO speed rating */ +#define EXIFTAG_PHOTOGRAPHICSENSITIVITY 34855 /* Photographic Sensitivity (new name for tag 34855) */ +#define EXIFTAG_OECF 34856 /* Optoelectric conversion factor */ +#define EXIFTAG_EXIFVERSION 36864 /* Exif version */ +#define EXIFTAG_DATETIMEORIGINAL 36867 /* Date and time of original + data generation */ +#define EXIFTAG_DATETIMEDIGITIZED 36868 /* Date and time of digital + data generation */ +#define EXIFTAG_COMPONENTSCONFIGURATION 37121 /* Meaning of each component */ +#define EXIFTAG_COMPRESSEDBITSPERPIXEL 37122 /* Image compression mode */ +#define EXIFTAG_SHUTTERSPEEDVALUE 37377 /* Shutter speed */ +#define EXIFTAG_APERTUREVALUE 37378 /* Aperture */ +#define EXIFTAG_BRIGHTNESSVALUE 37379 /* Brightness */ +#define EXIFTAG_EXPOSUREBIASVALUE 37380 /* Exposure bias */ +#define EXIFTAG_MAXAPERTUREVALUE 37381 /* Maximum lens aperture */ +#define EXIFTAG_SUBJECTDISTANCE 37382 /* Subject distance */ +#define EXIFTAG_METERINGMODE 37383 /* Metering mode */ +#define EXIFTAG_LIGHTSOURCE 37384 /* Light source */ +#define EXIFTAG_FLASH 37385 /* Flash */ +#define EXIFTAG_FOCALLENGTH 37386 /* Lens focal length */ +#define EXIFTAG_SUBJECTAREA 37396 /* Subject area */ +#define EXIFTAG_MAKERNOTE 37500 /* Manufacturer notes */ +#define EXIFTAG_USERCOMMENT 37510 /* User comments */ +#define EXIFTAG_SUBSECTIME 37520 /* DateTime subseconds */ +#define EXIFTAG_SUBSECTIMEORIGINAL 37521 /* DateTimeOriginal subseconds */ +#define EXIFTAG_SUBSECTIMEDIGITIZED 37522 /* DateTimeDigitized subseconds */ +#define EXIFTAG_FLASHPIXVERSION 40960 /* Supported Flashpix version */ +#define EXIFTAG_COLORSPACE 40961 /* Color space information */ +#define EXIFTAG_PIXELXDIMENSION 40962 /* Valid image width */ +#define EXIFTAG_PIXELYDIMENSION 40963 /* Valid image height */ +#define EXIFTAG_RELATEDSOUNDFILE 40964 /* Related audio file */ +#define EXIFTAG_FLASHENERGY 41483 /* Flash energy */ +#define EXIFTAG_SPATIALFREQUENCYRESPONSE 41484 /* Spatial frequency response */ +#define EXIFTAG_FOCALPLANEXRESOLUTION 41486 /* Focal plane X resolution */ +#define EXIFTAG_FOCALPLANEYRESOLUTION 41487 /* Focal plane Y resolution */ +#define EXIFTAG_FOCALPLANERESOLUTIONUNIT 41488 /* Focal plane resolution unit */ +#define EXIFTAG_SUBJECTLOCATION 41492 /* Subject location */ +#define EXIFTAG_EXPOSUREINDEX 41493 /* Exposure index */ +#define EXIFTAG_SENSINGMETHOD 41495 /* Sensing method */ +#define EXIFTAG_FILESOURCE 41728 /* File source */ +#define EXIFTAG_SCENETYPE 41729 /* Scene type */ +#define EXIFTAG_CFAPATTERN 41730 /* CFA pattern */ +#define EXIFTAG_CUSTOMRENDERED 41985 /* Custom image processing */ +#define EXIFTAG_EXPOSUREMODE 41986 /* Exposure mode */ +#define EXIFTAG_WHITEBALANCE 41987 /* White balance */ +#define EXIFTAG_DIGITALZOOMRATIO 41988 /* Digital zoom ratio */ +#define EXIFTAG_FOCALLENGTHIN35MMFILM 41989 /* Focal length in 35 mm film */ +#define EXIFTAG_SCENECAPTURETYPE 41990 /* Scene capture type */ +#define EXIFTAG_GAINCONTROL 41991 /* Gain control */ +#define EXIFTAG_CONTRAST 41992 /* Contrast */ +#define EXIFTAG_SATURATION 41993 /* Saturation */ +#define EXIFTAG_SHARPNESS 41994 /* Sharpness */ +#define EXIFTAG_DEVICESETTINGDESCRIPTION 41995 /* Device settings description */ +#define EXIFTAG_SUBJECTDISTANCERANGE 41996 /* Subject distance range */ +#define EXIFTAG_IMAGEUNIQUEID 42016 /* Unique image ID */ + +/*--: New for EXIF-Version 2.32, May 2019 ... */ +#define EXIFTAG_SENSITIVITYTYPE 34864 /* The SensitivityType tag indicates which one of the parameters of ISO12232 is the PhotographicSensitivity tag. */ +#define EXIFTAG_STANDARDOUTPUTSENSITIVITY 34865 /* This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. */ +#define EXIFTAG_RECOMMENDEDEXPOSUREINDEX 34866 /* recommended exposure index */ +#define EXIFTAG_ISOSPEED 34867 /* ISO speed value */ +#define EXIFTAG_ISOSPEEDLATITUDEYYY 34868 /* ISO speed latitude yyy */ +#define EXIFTAG_ISOSPEEDLATITUDEZZZ 34869 /* ISO speed latitude zzz */ +#define EXIFTAG_OFFSETTIME 36880 /* offset from UTC of the time of DateTime tag. */ +#define EXIFTAG_OFFSETTIMEORIGINAL 36881 /* offset from UTC of the time of DateTimeOriginal tag. */ +#define EXIFTAG_OFFSETTIMEDIGITIZED 36882 /* offset from UTC of the time of DateTimeDigitized tag. */ +#define EXIFTAG_TEMPERATURE 37888 /* Temperature as the ambient situation at the shot in dergee Celsius */ +#define EXIFTAG_HUMIDITY 37889 /* Humidity as the ambient situation at the shot in percent */ +#define EXIFTAG_PRESSURE 37890 /* Pressure as the ambient situation at the shot hecto-Pascal (hPa) */ +#define EXIFTAG_WATERDEPTH 37891 /* WaterDepth as the ambient situation at the shot in meter (m) */ +#define EXIFTAG_ACCELERATION 37892 /* Acceleration (a scalar regardless of direction) as the ambient situation at the shot in units of mGal (10-5 m/s^2) */ +#define EXIFTAG_CAMERAELEVATIONANGLE 37893 /* Elevation/depression. angle of the orientation of the camera(imaging optical axis) as the ambient situation at the shot in degree from -180deg to +180deg. */ +#define EXIFTAG_CAMERAOWNERNAME 42032 /* owner of a camera */ +#define EXIFTAG_BODYSERIALNUMBER 42033 /* serial number of the body of the camera */ +#define EXIFTAG_LENSSPECIFICATION 42034 /* minimum focal length (in mm), maximum focal length (in mm), minimum F number in the minimum focal length, and minimum F number in the maximum focal length, */ +#define EXIFTAG_LENSMAKE 42035 /* the lens manufacturer */ +#define EXIFTAG_LENSMODEL 42036 /* the lens model name and model number */ +#define EXIFTAG_LENSSERIALNUMBER 42037 /* the serial number of the interchangeable lens */ +#define EXIFTAG_GAMMA 42240 /* value of coefficient gamma */ +#define EXIFTAG_COMPOSITEIMAGE 42080 /* composite image */ +#define EXIFTAG_SOURCEIMAGENUMBEROFCOMPOSITEIMAGE 42081 /* source image number of composite image */ +#define EXIFTAG_SOURCEEXPOSURETIMESOFCOMPOSITEIMAGE 42082 /* source exposure times of composite image */ + +/* + * EXIF-GPS tags (Version 2.31, July 2016) + */ +#define GPSTAG_VERSIONID 0 /* Indicates the version of GPSInfoIFD. */ +#define GPSTAG_LATITUDEREF 1 /* Indicates whether the latitude is north or south latitude. */ +#define GPSTAG_LATITUDE 2 /* Indicates the latitude. */ +#define GPSTAG_LONGITUDEREF 3 /* Indicates whether the longitude is east or west longitude. */ +#define GPSTAG_LONGITUDE 4 /* Indicates the longitude. */ +#define GPSTAG_ALTITUDEREF 5 /* Indicates the altitude used as the reference altitude. */ +#define GPSTAG_ALTITUDE 6 /* Indicates the altitude based on the reference in GPSAltitudeRef. */ +#define GPSTAG_TIMESTAMP 7 /* Indicates the time as UTC (Coordinated Universal Time). */ +#define GPSTAG_SATELLITES 8 /* Indicates the GPS satellites used for measurements. */ +#define GPSTAG_STATUS 9 /* Indicates the status of the GPS receiver when the image is recorded. */ +#define GPSTAG_MEASUREMODE 10 /* Indicates the GPS measurement mode. */ +#define GPSTAG_DOP 11 /* Indicates the GPS DOP (data degree of precision). */ +#define GPSTAG_SPEEDREF 12 /* Indicates the unit used to express the GPS receiver speed of movement. */ +#define GPSTAG_SPEED 13 /* Indicates the speed of GPS receiver movement. */ +#define GPSTAG_TRACKREF 14 /* Indicates the reference for giving the direction of GPS receiver movement. */ +#define GPSTAG_TRACK 15 /* Indicates the direction of GPS receiver movement. */ +#define GPSTAG_IMGDIRECTIONREF 16 /* Indicates the reference for giving the direction of the image when it is captured. */ +#define GPSTAG_IMGDIRECTION 17 /* Indicates the direction of the image when it was captured. */ +#define GPSTAG_MAPDATUM 18 /* Indicates the geodetic survey data used by the GPS receiver. (e.g. WGS-84) */ +#define GPSTAG_DESTLATITUDEREF 19 /* Indicates whether the latitude of the destination point is north or south latitude. */ +#define GPSTAG_DESTLATITUDE 20 /* Indicates the latitude of the destination point. */ +#define GPSTAG_DESTLONGITUDEREF 21 /* Indicates whether the longitude of the destination point is east or west longitude. */ +#define GPSTAG_DESTLONGITUDE 22 /* Indicates the longitude of the destination point. */ +#define GPSTAG_DESTBEARINGREF 23 /* Indicates the reference used for giving the bearing to the destination point. */ +#define GPSTAG_DESTBEARING 24 /* Indicates the bearing to the destination point. */ +#define GPSTAG_DESTDISTANCEREF 25 /* Indicates the unit used to express the distance to the destination point. */ +#define GPSTAG_DESTDISTANCE 26 /* Indicates the distance to the destination point. */ +#define GPSTAG_PROCESSINGMETHOD 27 /* A character string recording the name of the method used for location finding. */ +#define GPSTAG_AREAINFORMATION 28 /* A character string recording the name of the GPS area. */ +#define GPSTAG_DATESTAMP 29 /* A character string recording date and time information relative to UTC (Coordinated Universal Time). */ +#define GPSTAG_DIFFERENTIAL 30 /* Indicates whether differential correction is applied to the GPS receiver. */ +#define GPSTAG_GPSHPOSITIONINGERROR 31 /* Indicates horizontal positioning errors in meters. */ + +#endif /* _TIFF_ */ + +/* vim: set ts=8 sts=8 sw=8 noet: */ +/* + * Local Variables: + * mode: c + * c-basic-offset: 8 + * fill-column: 78 + * End: + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffconf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffconf.h new file mode 100644 index 0000000..a60ff86 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffconf.h @@ -0,0 +1,128 @@ +/* libtiff/tiffconf.h. Generated from tiffconf.h.in by configure. */ +/* + Configuration defines for installed libtiff. + This file maintained for backward compatibility. Do not use definitions + from this file in your programs. +*/ + +#ifndef _TIFFCONF_ +#define _TIFFCONF_ + + +#include +#include +#include + + +/* Signed 16-bit type */ +/* #undef TIFF_INT16_T */ + +/* Signed 32-bit type */ +/* #undef TIFF_INT32_T */ + +/* Signed 64-bit type */ +/* #undef TIFF_INT64_T */ + +/* Signed 8-bit type */ +/* #undef TIFF_INT8_T */ + +/* Unsigned 16-bit type */ +/* #undef TIFF_UINT16_T */ + +/* Unsigned 32-bit type */ +/* #undef TIFF_UINT32_T */ + +/* Unsigned 64-bit type */ +/* #undef TIFF_UINT64_T */ + +/* Unsigned 8-bit type */ +/* #undef TIFF_UINT8_T */ + +/* Signed size type */ +#define TIFF_SSIZE_T int64_t + +/* Compatibility stuff. */ + +/* Define as 0 or 1 according to the floating point format supported by the + machine */ +#define HAVE_IEEEFP 1 + +/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ +#define HOST_FILLORDER FILLORDER_LSB2MSB + +/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian + (Intel) */ +#define HOST_BIGENDIAN 0 + +/* Support CCITT Group 3 & 4 algorithms */ +#define CCITT_SUPPORT 1 + +/* Support JPEG compression (requires IJG JPEG library) */ +#define JPEG_SUPPORT 1 + +/* Support JBIG compression (requires JBIG-KIT library) */ +/* #undef JBIG_SUPPORT */ + +/* Support LERC compression */ +/* #undef LERC_SUPPORT */ + +/* Support LogLuv high dynamic range encoding */ +#define LOGLUV_SUPPORT 1 + +/* Support LZW algorithm */ +#define LZW_SUPPORT 1 + +/* Support NeXT 2-bit RLE algorithm */ +#define NEXT_SUPPORT 1 + +/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation + fails with unpatched IJG JPEG library) */ +#define OJPEG_SUPPORT 1 + +/* Support Macintosh PackBits algorithm */ +#define PACKBITS_SUPPORT 1 + +/* Support Pixar log-format algorithm (requires Zlib) */ +#define PIXARLOG_SUPPORT 1 + +/* Support ThunderScan 4-bit RLE algorithm */ +#define THUNDER_SUPPORT 1 + +/* Support Deflate compression */ +#define ZIP_SUPPORT 1 + +/* Support libdeflate enhanced compression */ +/* #undef LIBDEFLATE_SUPPORT */ + +/* Support strip chopping (whether or not to convert single-strip uncompressed + images to multiple strips of ~8Kb to reduce memory usage) */ +#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP + +/* Enable SubIFD tag (330) support */ +#define SUBIFD_SUPPORT 1 + +/* Treat extra sample as alpha (default enabled). The RGBA interface will + treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many + packages produce RGBA files but don't mark the alpha properly. */ +#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 + +/* Pick up YCbCr subsampling info from the JPEG data stream to support files + lacking the tag (default enabled). */ +#define CHECK_JPEG_YCBCR_SUBSAMPLING 1 + +/* Support MS MDI magic number files as TIFF */ +#define MDI_SUPPORT 1 + +/* + * Feature support definitions. + * XXX: These macros are obsoleted. Don't use them in your apps! + * Macros stays here for backward compatibility and should be always defined. + */ +#define COLORIMETRY_SUPPORT +#define YCBCR_SUPPORT +#define CMYK_SUPPORT +#define ICC_SUPPORT +#define PHOTOSHOP_SUPPORT +#define IPTC_SUPPORT + +#endif /* _TIFFCONF_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffio.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffio.h new file mode 100644 index 0000000..18dfd11 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffio.h @@ -0,0 +1,578 @@ +/* + * Copyright (c) 1988-1997 Sam Leffler + * Copyright (c) 1991-1997 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the names of + * Sam Leffler and Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Sam Leffler and Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifndef _TIFFIO_ +#define _TIFFIO_ + +/* + * TIFF I/O Library Definitions. + */ +#include "tiff.h" +#include "tiffvers.h" + +/* + * TIFF is defined as an incomplete type to hide the + * library's internal data structures from clients. + */ +typedef struct tiff TIFF; + +/* + * The following typedefs define the intrinsic size of + * data types used in the *exported* interfaces. These + * definitions depend on the proper definition of types + * in tiff.h. Note also that the varargs interface used + * to pass tag types and values uses the types defined in + * tiff.h directly. + * + * NB: ttag_t is unsigned int and not unsigned short because + * ANSI C requires that the type before the ellipsis be a + * promoted type (i.e. one of int, unsigned int, pointer, + * or double) and because we defined pseudo-tags that are + * outside the range of legal Aldus-assigned tags. + * NB: tsize_t is signed and not unsigned because some functions + * return -1. + * NB: toff_t is not off_t for many reasons; TIFFs max out at + * 32-bit file offsets, and BigTIFF maxes out at 64-bit + * offsets being the most important, and to ensure use of + * a consistently unsigned type across architectures. + * Prior to libtiff 4.0, this was an unsigned 32 bit type. + */ +/* + * this is the machine addressing size type, only it's signed, so make it + * int32_t on 32bit machines, int64_t on 64bit machines + */ +typedef TIFF_SSIZE_T tmsize_t; +#define TIFF_TMSIZE_T_MAX (tmsize_t)(SIZE_MAX >> 1) + +typedef uint64_t toff_t; /* file offset */ +/* the following are deprecated and should be replaced by their defining + counterparts */ +typedef uint32_t ttag_t; /* directory tag */ +typedef uint16_t tdir_t; /* directory index */ +typedef uint16_t tsample_t; /* sample number */ +typedef uint32_t tstrile_t; /* strip or tile number */ +typedef tstrile_t tstrip_t; /* strip number */ +typedef tstrile_t ttile_t; /* tile number */ +typedef tmsize_t tsize_t; /* i/o size in bytes */ +typedef void* tdata_t; /* image data ref */ + +#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32)) +#define __WIN32__ +#endif + +/* + * On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c + * or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c). + * + * By default tif_unix.c is assumed. + */ + +#if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) +# if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO) +# define AVOID_WIN32_FILEIO +# endif +#endif + +#if defined(USE_WIN32_FILEIO) +# define VC_EXTRALEAN +# include +# ifdef __WIN32__ +DECLARE_HANDLE(thandle_t); /* Win32 file handle */ +# else +typedef HFILE thandle_t; /* client data handle */ +# endif /* __WIN32__ */ +#else +typedef void* thandle_t; /* client data handle */ +#endif /* USE_WIN32_FILEIO */ + +/* + * Flags to pass to TIFFPrintDirectory to control + * printing of data structures that are potentially + * very large. Bit-or these flags to enable printing + * multiple items. + */ +#define TIFFPRINT_NONE 0x0 /* no extra info */ +#define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */ +#define TIFFPRINT_CURVES 0x2 /* color/gray response curves */ +#define TIFFPRINT_COLORMAP 0x4 /* colormap */ +#define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */ +#define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */ +#define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */ + +/* + * Colour conversion stuff + */ + +/* reference white */ +#define D65_X0 (95.0470F) +#define D65_Y0 (100.0F) +#define D65_Z0 (108.8827F) + +#define D50_X0 (96.4250F) +#define D50_Y0 (100.0F) +#define D50_Z0 (82.4680F) + +/* Structure for holding information about a display device. */ + +typedef unsigned char TIFFRGBValue; /* 8-bit samples */ + +typedef struct { + float d_mat[3][3]; /* XYZ -> luminance matrix */ + float d_YCR; /* Light o/p for reference white */ + float d_YCG; + float d_YCB; + uint32_t d_Vrwr; /* Pixel values for ref. white */ + uint32_t d_Vrwg; + uint32_t d_Vrwb; + float d_Y0R; /* Residual light for black pixel */ + float d_Y0G; + float d_Y0B; + float d_gammaR; /* Gamma values for the three guns */ + float d_gammaG; + float d_gammaB; +} TIFFDisplay; + +typedef struct { /* YCbCr->RGB support */ + TIFFRGBValue* clamptab; /* range clamping table */ + int* Cr_r_tab; + int* Cb_b_tab; + int32_t* Cr_g_tab; + int32_t* Cb_g_tab; + int32_t* Y_tab; +} TIFFYCbCrToRGB; + +typedef struct { /* CIE Lab 1976->RGB support */ + int range; /* Size of conversion table */ +#define CIELABTORGB_TABLE_RANGE 1500 + float rstep, gstep, bstep; + float X0, Y0, Z0; /* Reference white point */ + TIFFDisplay display; + float Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr to r */ + float Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg to g */ + float Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb to b */ +} TIFFCIELabToRGB; + +/* + * RGBA-style image support. + */ +typedef struct _TIFFRGBAImage TIFFRGBAImage; +/* + * The image reading and conversion routines invoke + * ``put routines'' to copy/image/whatever tiles of + * raw image data. A default set of routines are + * provided to convert/copy raw image data to 8-bit + * packed ABGR format rasters. Applications can supply + * alternate routines that unpack the data into a + * different format or, for example, unpack the data + * and draw the unpacked raster on the display. + */ +typedef void (*tileContigRoutine) + (TIFFRGBAImage*, uint32_t*, uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, + unsigned char*); +typedef void (*tileSeparateRoutine) + (TIFFRGBAImage*, uint32_t*, uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, + unsigned char*, unsigned char*, unsigned char*, unsigned char*); +/* + * RGBA-reader state. + */ +struct _TIFFRGBAImage { + TIFF* tif; /* image handle */ + int stoponerr; /* stop on read error */ + int isContig; /* data is packed/separate */ + int alpha; /* type of alpha data present */ + uint32_t width; /* image width */ + uint32_t height; /* image height */ + uint16_t bitspersample; /* image bits/sample */ + uint16_t samplesperpixel; /* image samples/pixel */ + uint16_t orientation; /* image orientation */ + uint16_t req_orientation; /* requested orientation */ + uint16_t photometric; /* image photometric interp */ + uint16_t* redcmap; /* colormap palette */ + uint16_t* greencmap; + uint16_t* bluecmap; + /* get image data routine */ + int (*get)(TIFFRGBAImage*, uint32_t*, uint32_t, uint32_t); + /* put decoded strip/tile */ + union { + void (*any)(TIFFRGBAImage*); + tileContigRoutine contig; + tileSeparateRoutine separate; + } put; + TIFFRGBValue* Map; /* sample mapping array */ + uint32_t** BWmap; /* black&white map */ + uint32_t** PALmap; /* palette image map */ + TIFFYCbCrToRGB* ycbcr; /* YCbCr conversion state */ + TIFFCIELabToRGB* cielab; /* CIE L*a*b conversion state */ + + uint8_t* UaToAa; /* Unassociated alpha to associated alpha conversion LUT */ + uint8_t* Bitdepth16To8; /* LUT for conversion from 16bit to 8bit values */ + + int row_offset; + int col_offset; +}; + +/* + * Macros for extracting components from the + * packed ABGR form returned by TIFFReadRGBAImage. + */ +#define TIFFGetR(abgr) ((abgr) & 0xff) +#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff) +#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff) +#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff) + +/* + * A CODEC is a software package that implements decoding, + * encoding, or decoding+encoding of a compression algorithm. + * The library provides a collection of builtin codecs. + * More codecs may be registered through calls to the library + * and/or the builtin implementations may be overridden. + */ +typedef int (*TIFFInitMethod)(TIFF*, int); +typedef struct { + char* name; + uint16_t scheme; + TIFFInitMethod init; +} TIFFCodec; + +#include +#include + +/* share internal LogLuv conversion routines? */ +#ifndef LOGLUV_PUBLIC +#define LOGLUV_PUBLIC 1 +#endif + +#if defined(__GNUC__) || defined(__attribute__) +# define TIFF_ATTRIBUTE(x) __attribute__(x) +#else +# define TIFF_ATTRIBUTE(x) /*nothing*/ +#endif + +#if defined(c_plusplus) || defined(__cplusplus) +extern "C" { +#endif +typedef void (*TIFFErrorHandler)(const char*, const char*, va_list); +typedef void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list); +typedef tmsize_t (*TIFFReadWriteProc)(thandle_t, void*, tmsize_t); +typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int); +typedef int (*TIFFCloseProc)(thandle_t); +typedef toff_t (*TIFFSizeProc)(thandle_t); +typedef int (*TIFFMapFileProc)(thandle_t, void** base, toff_t* size); +typedef void (*TIFFUnmapFileProc)(thandle_t, void* base, toff_t size); +typedef void (*TIFFExtendProc)(TIFF*); + +extern const char* TIFFGetVersion(void); + +extern const TIFFCodec* TIFFFindCODEC(uint16_t); +extern TIFFCodec* TIFFRegisterCODEC(uint16_t, const char*, TIFFInitMethod); +extern void TIFFUnRegisterCODEC(TIFFCodec*); +extern int TIFFIsCODECConfigured(uint16_t); +extern TIFFCodec* TIFFGetConfiguredCODECs(void); + +/* + * Auxiliary functions. + */ + +extern void* _TIFFmalloc(tmsize_t s); +extern void* _TIFFcalloc(tmsize_t nmemb, tmsize_t siz); +extern void* _TIFFrealloc(void* p, tmsize_t s); +extern void _TIFFmemset(void* p, int v, tmsize_t c); +extern void _TIFFmemcpy(void* d, const void* s, tmsize_t c); +extern int _TIFFmemcmp(const void* p1, const void* p2, tmsize_t c); +extern void _TIFFfree(void* p); + +/* +** Stuff, related to tag handling and creating custom tags. +*/ +extern int TIFFGetTagListCount( TIFF * ); +extern uint32_t TIFFGetTagListEntry(TIFF *, int tag_index ); + +#define TIFF_ANY TIFF_NOTYPE /* for field descriptor searching */ +#define TIFF_VARIABLE -1 /* marker for variable length tags */ +#define TIFF_SPP -2 /* marker for SamplesPerPixel tags */ +#define TIFF_VARIABLE2 -3 /* marker for uint32_t var-length tags */ + +#define FIELD_CUSTOM 65 + +typedef struct _TIFFField TIFFField; +typedef struct _TIFFFieldArray TIFFFieldArray; + +extern const TIFFField* TIFFFindField(TIFF *, uint32_t, TIFFDataType); +extern const TIFFField* TIFFFieldWithTag(TIFF*, uint32_t); +extern const TIFFField* TIFFFieldWithName(TIFF*, const char *); + +extern uint32_t TIFFFieldTag(const TIFFField*); +extern const char* TIFFFieldName(const TIFFField*); +extern TIFFDataType TIFFFieldDataType(const TIFFField*); +extern int TIFFFieldPassCount(const TIFFField*); +extern int TIFFFieldReadCount(const TIFFField*); +extern int TIFFFieldWriteCount(const TIFFField*); +extern int TIFFFieldSetGetSize(const TIFFField*); /* returns internal storage size of TIFFSetGetFieldType in bytes. */ +extern int TIFFFieldSetGetCountSize(const TIFFField*); /* returns size of count parameter 0=none, 2=uint16_t, 4=uint32_t */ +extern int TIFFFieldIsAnonymous(const TIFFField *); + +typedef int (*TIFFVSetMethod)(TIFF*, uint32_t, va_list); +typedef int (*TIFFVGetMethod)(TIFF*, uint32_t, va_list); +typedef void (*TIFFPrintMethod)(TIFF*, FILE*, long); + +typedef struct { + TIFFVSetMethod vsetfield; /* tag set routine */ + TIFFVGetMethod vgetfield; /* tag get routine */ + TIFFPrintMethod printdir; /* directory print routine */ +} TIFFTagMethods; + +extern TIFFTagMethods *TIFFAccessTagMethods(TIFF *); +extern void *TIFFGetClientInfo(TIFF *, const char *); +extern void TIFFSetClientInfo(TIFF *, void *, const char *); + +extern void TIFFCleanup(TIFF* tif); +extern void TIFFClose(TIFF* tif); +extern int TIFFFlush(TIFF* tif); +extern int TIFFFlushData(TIFF* tif); +extern int TIFFGetField(TIFF* tif, uint32_t tag, ...); +extern int TIFFVGetField(TIFF* tif, uint32_t tag, va_list ap); +extern int TIFFGetFieldDefaulted(TIFF* tif, uint32_t tag, ...); +extern int TIFFVGetFieldDefaulted(TIFF* tif, uint32_t tag, va_list ap); +extern int TIFFReadDirectory(TIFF* tif); +extern int TIFFReadCustomDirectory(TIFF* tif, toff_t diroff, const TIFFFieldArray* infoarray); +extern int TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff); +extern int TIFFReadGPSDirectory(TIFF* tif, toff_t diroff); +extern uint64_t TIFFScanlineSize64(TIFF* tif); +extern tmsize_t TIFFScanlineSize(TIFF* tif); +extern uint64_t TIFFRasterScanlineSize64(TIFF* tif); +extern tmsize_t TIFFRasterScanlineSize(TIFF* tif); +extern uint64_t TIFFStripSize64(TIFF* tif); +extern tmsize_t TIFFStripSize(TIFF* tif); +extern uint64_t TIFFRawStripSize64(TIFF* tif, uint32_t strip); +extern tmsize_t TIFFRawStripSize(TIFF* tif, uint32_t strip); +extern uint64_t TIFFVStripSize64(TIFF* tif, uint32_t nrows); +extern tmsize_t TIFFVStripSize(TIFF* tif, uint32_t nrows); +extern uint64_t TIFFTileRowSize64(TIFF* tif); +extern tmsize_t TIFFTileRowSize(TIFF* tif); +extern uint64_t TIFFTileSize64(TIFF* tif); +extern tmsize_t TIFFTileSize(TIFF* tif); +extern uint64_t TIFFVTileSize64(TIFF* tif, uint32_t nrows); +extern tmsize_t TIFFVTileSize(TIFF* tif, uint32_t nrows); +extern uint32_t TIFFDefaultStripSize(TIFF* tif, uint32_t request); +extern void TIFFDefaultTileSize(TIFF*, uint32_t*, uint32_t*); +extern int TIFFFileno(TIFF*); +extern int TIFFSetFileno(TIFF*, int); +extern thandle_t TIFFClientdata(TIFF*); +extern thandle_t TIFFSetClientdata(TIFF*, thandle_t); +extern int TIFFGetMode(TIFF*); +extern int TIFFSetMode(TIFF*, int); +extern int TIFFIsTiled(TIFF*); +extern int TIFFIsByteSwapped(TIFF*); +extern int TIFFIsUpSampled(TIFF*); +extern int TIFFIsMSB2LSB(TIFF*); +extern int TIFFIsBigEndian(TIFF*); +extern int TIFFIsBigTIFF(TIFF*); +extern TIFFReadWriteProc TIFFGetReadProc(TIFF*); +extern TIFFReadWriteProc TIFFGetWriteProc(TIFF*); +extern TIFFSeekProc TIFFGetSeekProc(TIFF*); +extern TIFFCloseProc TIFFGetCloseProc(TIFF*); +extern TIFFSizeProc TIFFGetSizeProc(TIFF*); +extern TIFFMapFileProc TIFFGetMapFileProc(TIFF*); +extern TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*); +extern uint32_t TIFFCurrentRow(TIFF*); +extern uint16_t TIFFCurrentDirectory(TIFF*); +extern uint16_t TIFFNumberOfDirectories(TIFF*); +extern uint64_t TIFFCurrentDirOffset(TIFF*); +extern uint32_t TIFFCurrentStrip(TIFF*); +extern uint32_t TIFFCurrentTile(TIFF* tif); +extern int TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size); +extern int TIFFWriteBufferSetup(TIFF* tif, void* bp, tmsize_t size); +extern int TIFFSetupStrips(TIFF *); +extern int TIFFWriteCheck(TIFF*, int, const char *); +extern void TIFFFreeDirectory(TIFF*); +extern int TIFFCreateDirectory(TIFF*); +extern int TIFFCreateCustomDirectory(TIFF*,const TIFFFieldArray*); +extern int TIFFCreateEXIFDirectory(TIFF*); +extern int TIFFCreateGPSDirectory(TIFF*); +extern int TIFFLastDirectory(TIFF*); +extern int TIFFSetDirectory(TIFF*, uint16_t); +extern int TIFFSetSubDirectory(TIFF*, uint64_t); +extern int TIFFUnlinkDirectory(TIFF*, uint16_t); +extern int TIFFSetField(TIFF*, uint32_t, ...); +extern int TIFFVSetField(TIFF*, uint32_t, va_list); +extern int TIFFUnsetField(TIFF*, uint32_t); +extern int TIFFWriteDirectory(TIFF *); +extern int TIFFWriteCustomDirectory(TIFF *, uint64_t *); +extern int TIFFCheckpointDirectory(TIFF *); +extern int TIFFRewriteDirectory(TIFF *); +extern int TIFFDeferStrileArrayWriting(TIFF *); +extern int TIFFForceStrileArrayWriting(TIFF* ); + +#if defined(c_plusplus) || defined(__cplusplus) +extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0); +extern int TIFFReadScanline(TIFF* tif, void* buf, uint32_t row, uint16_t sample = 0); +extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32_t row, uint16_t sample = 0); +extern int TIFFReadRGBAImage(TIFF*, uint32_t, uint32_t, uint32_t*, int = 0); +extern int TIFFReadRGBAImageOriented(TIFF*, uint32_t, uint32_t, uint32_t*, + int = ORIENTATION_BOTLEFT, int = 0); +#else +extern void TIFFPrintDirectory(TIFF*, FILE*, long); +extern int TIFFReadScanline(TIFF* tif, void* buf, uint32_t row, uint16_t sample); +extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32_t row, uint16_t sample); +extern int TIFFReadRGBAImage(TIFF*, uint32_t, uint32_t, uint32_t*, int); +extern int TIFFReadRGBAImageOriented(TIFF*, uint32_t, uint32_t, uint32_t*, int, int); +#endif + +extern int TIFFReadRGBAStrip(TIFF*, uint32_t, uint32_t * ); +extern int TIFFReadRGBATile(TIFF*, uint32_t, uint32_t, uint32_t * ); +extern int TIFFReadRGBAStripExt(TIFF*, uint32_t, uint32_t *, int stop_on_error ); +extern int TIFFReadRGBATileExt(TIFF*, uint32_t, uint32_t, uint32_t *, int stop_on_error ); +extern int TIFFRGBAImageOK(TIFF*, char [1024]); +extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]); +extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32_t*, uint32_t, uint32_t); +extern void TIFFRGBAImageEnd(TIFFRGBAImage*); +extern TIFF* TIFFOpen(const char*, const char*); +# ifdef __WIN32__ +extern TIFF* TIFFOpenW(const wchar_t*, const char*); +# endif /* __WIN32__ */ +extern TIFF* TIFFFdOpen(int, const char*, const char*); +extern TIFF* TIFFClientOpen(const char*, const char*, + thandle_t, + TIFFReadWriteProc, TIFFReadWriteProc, + TIFFSeekProc, TIFFCloseProc, + TIFFSizeProc, + TIFFMapFileProc, TIFFUnmapFileProc); +extern const char* TIFFFileName(TIFF*); +extern const char* TIFFSetFileName(TIFF*, const char *); +extern void TIFFError(const char*, const char*, ...) TIFF_ATTRIBUTE((__format__ (__printf__,2,3))); +extern void TIFFErrorExt(thandle_t, const char*, const char*, ...) TIFF_ATTRIBUTE((__format__ (__printf__,3,4))); +extern void TIFFWarning(const char*, const char*, ...) TIFF_ATTRIBUTE((__format__ (__printf__,2,3))); +extern void TIFFWarningExt(thandle_t, const char*, const char*, ...) TIFF_ATTRIBUTE((__format__ (__printf__,3,4))); +extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler); +extern TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt); +extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler); +extern TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt); +extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc); +extern uint32_t TIFFComputeTile(TIFF* tif, uint32_t x, uint32_t y, uint32_t z, uint16_t s); +extern int TIFFCheckTile(TIFF* tif, uint32_t x, uint32_t y, uint32_t z, uint16_t s); +extern uint32_t TIFFNumberOfTiles(TIFF*); +extern tmsize_t TIFFReadTile(TIFF* tif, void* buf, uint32_t x, uint32_t y, uint32_t z, uint16_t s); +extern tmsize_t TIFFWriteTile(TIFF* tif, void* buf, uint32_t x, uint32_t y, uint32_t z, uint16_t s); +extern uint32_t TIFFComputeStrip(TIFF*, uint32_t, uint16_t); +extern uint32_t TIFFNumberOfStrips(TIFF*); +extern tmsize_t TIFFReadEncodedStrip(TIFF* tif, uint32_t strip, void* buf, tmsize_t size); +extern tmsize_t TIFFReadRawStrip(TIFF* tif, uint32_t strip, void* buf, tmsize_t size); +extern tmsize_t TIFFReadEncodedTile(TIFF* tif, uint32_t tile, void* buf, tmsize_t size); +extern tmsize_t TIFFReadRawTile(TIFF* tif, uint32_t tile, void* buf, tmsize_t size); +extern int TIFFReadFromUserBuffer(TIFF* tif, uint32_t strile, + void* inbuf, tmsize_t insize, + void* outbuf, tmsize_t outsize); +extern tmsize_t TIFFWriteEncodedStrip(TIFF* tif, uint32_t strip, void* data, tmsize_t cc); +extern tmsize_t TIFFWriteRawStrip(TIFF* tif, uint32_t strip, void* data, tmsize_t cc); +extern tmsize_t TIFFWriteEncodedTile(TIFF* tif, uint32_t tile, void* data, tmsize_t cc); +extern tmsize_t TIFFWriteRawTile(TIFF* tif, uint32_t tile, void* data, tmsize_t cc); +extern int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths within TIFF file. */ +extern void TIFFSetWriteOffset(TIFF* tif, toff_t off); +extern void TIFFSwabShort(uint16_t*); +extern void TIFFSwabLong(uint32_t*); +extern void TIFFSwabLong8(uint64_t*); +extern void TIFFSwabFloat(float*); +extern void TIFFSwabDouble(double*); +extern void TIFFSwabArrayOfShort(uint16_t* wp, tmsize_t n); +extern void TIFFSwabArrayOfTriples(uint8_t* tp, tmsize_t n); +extern void TIFFSwabArrayOfLong(uint32_t* lp, tmsize_t n); +extern void TIFFSwabArrayOfLong8(uint64_t* lp, tmsize_t n); +extern void TIFFSwabArrayOfFloat(float* fp, tmsize_t n); +extern void TIFFSwabArrayOfDouble(double* dp, tmsize_t n); +extern void TIFFReverseBits(uint8_t* cp, tmsize_t n); +extern const unsigned char* TIFFGetBitRevTable(int); + +extern uint64_t TIFFGetStrileOffset(TIFF *tif, uint32_t strile); +extern uint64_t TIFFGetStrileByteCount(TIFF *tif, uint32_t strile); +extern uint64_t TIFFGetStrileOffsetWithErr(TIFF *tif, uint32_t strile, int *pbErr); +extern uint64_t TIFFGetStrileByteCountWithErr(TIFF *tif, uint32_t strile, int *pbErr); + +#ifdef LOGLUV_PUBLIC +#define U_NEU 0.210526316 +#define V_NEU 0.473684211 +#define UVSCALE 410. +extern double LogL16toY(int); +extern double LogL10toY(int); +extern void XYZtoRGB24(float*, uint8_t*); +extern int uv_decode(double*, double*, int); +extern void LogLuv24toXYZ(uint32_t, float*); +extern void LogLuv32toXYZ(uint32_t, float*); +#if defined(c_plusplus) || defined(__cplusplus) +extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER); +extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER); +extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER); +extern uint32_t LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER); +extern uint32_t LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER); +#else +extern int LogL16fromY(double, int); +extern int LogL10fromY(double, int); +extern int uv_encode(double, double, int); +extern uint32_t LogLuv24fromXYZ(float*, int); +extern uint32_t LogLuv32fromXYZ(float*, int); +#endif +#endif /* LOGLUV_PUBLIC */ + +extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, const TIFFDisplay *, float*); +extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32_t, int32_t, int32_t, + float *, float *, float *); +extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, + uint32_t *, uint32_t *, uint32_t *); + +extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); +extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32_t, int32_t, int32_t, + uint32_t *, uint32_t *, uint32_t *); + +/**************************************************************************** + * O B S O L E T E D I N T E R F A C E S + * + * Don't use this stuff in your applications, it may be removed in the future + * libtiff versions. + ****************************************************************************/ +typedef struct { + ttag_t field_tag; /* field's tag */ + short field_readcount; /* read count/TIFF_VARIABLE/TIFF_SPP */ + short field_writecount; /* write count/TIFF_VARIABLE */ + TIFFDataType field_type; /* type of associated data */ + unsigned short field_bit; /* bit in fieldsset bit vector */ + unsigned char field_oktochange; /* if true, can change while writing */ + unsigned char field_passcount; /* if true, pass dir count on set */ + char *field_name; /* ASCII name */ +} TIFFFieldInfo; + +extern int TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], uint32_t); + +#if defined(c_plusplus) || defined(__cplusplus) +} +#endif + +#endif /* _TIFFIO_ */ + +/* vim: set ts=8 sts=8 sw=8 noet: */ +/* + * Local Variables: + * mode: c + * c-basic-offset: 8 + * fill-column: 78 + * End: + */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffvers.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffvers.h new file mode 100644 index 0000000..084f335 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/tiffvers.h @@ -0,0 +1,9 @@ +#define TIFFLIB_VERSION_STR "LIBTIFF, Version 4.4.0\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc." +/* + * This define can be used in code that requires + * compilation-related definitions specific to a + * version or versions of the library. Runtime + * version checking should be done based on the + * string returned by TIFFGetVersion. + */ +#define TIFFLIB_VERSION 20220520 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VConnection8.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VConnection8.h new file mode 100644 index 0000000..9668dd8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VConnection8.h @@ -0,0 +1,150 @@ +// VIPS connection wrapper + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_VCONNECTION_H +#define VIPS_VCONNECTION_H + +#include + +VIPS_NAMESPACE_START + +/** + * A generic source object. These supply a stream of bytes that loaders can + * use to fetch image files, see VImage::new_from_source(). + * + * Methods let you can connect a source up to memory, a file or + * a file descriptor. Use vips::VSourceCustom to implement custom sources + * using GObject signals. + */ +class VSource : public VObject +{ +public: + /** + * Wrap a VSource around an underlying VipsSource object. + */ + VSource( VipsSource *input, VSteal steal = STEAL ) : + VObject( (VipsObject *) input, steal ) + { + } + + /** + * Make a new VSource from a file descriptor. + */ + static VSource + new_from_descriptor( int descriptor ); + + /** + * Make a new VSource from a file on disc. + */ + static VSource + new_from_file( const char *filename ); + + /** + * Make a new VSource from a binary object. + */ + static VSource + new_from_blob( VipsBlob *blob ); + + /** + * Make a new VSource from an area of memory. + */ + static VSource + new_from_memory( const void *data, size_t size ); + + /** + * Make a new VSource from a set of options encoded as a string. See + * vips_source_new(). + */ + static VSource + new_from_options( const char *options ); + + /** + * Get a pointer to the underlying VipsSoure object. + */ + VipsSource * + get_source() const + { + return( (VipsSource *) VObject::get_object() ); + } + +}; + +/** + * A generic target object. Savers can use these to write a stream of bytes + * somewhere, see VImage::write_to_target(). + * + * Methods let you can connect a target up to memory, a file or + * a file descriptor. Use vips::VTargetCustom to implement custom targets + * using GObject signals. + */ +class VTarget : public VObject +{ +public: + /** + * Wrap a VTarget around an underlying VipsTarget object. + */ + VTarget( VipsTarget *output, VSteal steal = STEAL ) : + VObject( (VipsObject *) output, steal ) + { + } + + /** + * Make a new VTarget which, when written to, will write to a file + * descriptor. + */ + static VTarget + new_to_descriptor( int descriptor ); + + /** + * Make a new VTarget which, when written to, will write to a file. + */ + static + VTarget new_to_file( const char *filename ); + + /** + * Make a new VTarget which, when written to, will write to a file + * descriptor. + */ + static + VTarget new_to_memory(); + + /** + * Get a pointer to the underlying VipsTarget object. + */ + VipsTarget * + get_target() const + { + return( (VipsTarget *) VObject::get_object() ); + } + +}; + +VIPS_NAMESPACE_END + +#endif /*VIPS_VCONNECTION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VError8.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VError8.h new file mode 100644 index 0000000..84ee90e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VError8.h @@ -0,0 +1,76 @@ +// Header for error type + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + + +#ifndef VIPS_VERROR_H +#define VIPS_VERROR_H + +#include +#include +#include + +#include + +VIPS_NAMESPACE_START + +/** + * The libvips error class. It holds a single string containing an + * internationalized error message in utf-8 encoding. + */ +class VIPS_CPLUSPLUS_API VError : public std::exception { + std::string _what; + +public: + /** + * Construct a VError, setting the error message. + */ + VError( const std::string &what ) : _what( what ) {} + + /** + * Construct a VError, fetching the error message from the libvips + * error buffer. + */ + VError() : _what( vips_error_buffer() ) {} + + virtual ~VError() throw() {} + + /** + * Get a reference to the underlying C string. + */ + virtual const char *what() const throw() { return _what.c_str(); } + + /** + * Print the error message to a stream. + */ + void ostream_print( std::ostream & ) const; +}; + +VIPS_NAMESPACE_END + +#endif /*VIPS_VERROR_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VImage8.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VImage8.h new file mode 100644 index 0000000..691e967 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VImage8.h @@ -0,0 +1,6029 @@ +// VIPS image wrapper + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_VIMAGE_H +#define VIPS_VIMAGE_H + +#include +#include +#include + +#include + +#include + +VIPS_NAMESPACE_START + +/* Small utility things. + */ + +VIPS_CPLUSPLUS_API std::vector to_vectorv( int n, ... ); +VIPS_CPLUSPLUS_API std::vector to_vector( double value ); +VIPS_CPLUSPLUS_API std::vector to_vector( int n, double array[] ); +VIPS_CPLUSPLUS_API std::vector negate( std::vector value ); +VIPS_CPLUSPLUS_API std::vector invert( std::vector value ); + +/** + * Whether or not VObject should take over the reference that you pass in. See + * VObject(). + */ +enum VSteal { + NOSTEAL = 0, + STEAL = 1 +}; + +/** + * A smart VipsObject pointer. It calls g_object_ref()/_unref() for you + * automatically. + * + * VObjects can be null (have no value set). See is_null(). + */ +class VObject +{ +private: + // can be NULL, see eg. VObject() + VipsObject *vobject; + +public: + /** + * Wrap a VObject around the underlying VipsObject pointer. + * + * If steal is STEAL, then the new VObject takes over the reference + * that you pass in. + */ + VObject( VipsObject *new_vobject, VSteal steal = STEAL ) : + vobject( new_vobject ) + { + // we allow NULL init, eg. "VImage a;" + g_assert( !new_vobject || + VIPS_IS_OBJECT( new_vobject ) ); + +#ifdef VIPS_DEBUG_VERBOSE + printf( "VObject constructor, obj = %p, steal = %d\n", + new_vobject, steal ); + if( new_vobject ) { + printf( " obj " ); + vips_object_print_name( VIPS_OBJECT( new_vobject ) ); + printf( "\n" ); + } +#endif /*VIPS_DEBUG_VERBOSE*/ + + if( !steal && vobject ) { +#ifdef VIPS_DEBUG_VERBOSE + printf( " reffing object\n" ); +#endif /*VIPS_DEBUG_VERBOSE*/ + g_object_ref( vobject ); + } + } + + VObject() : + vobject( 0 ) + { + } + + VObject( const VObject &a ) : + vobject( a.vobject ) + { + g_assert( !vobject || + VIPS_IS_OBJECT( vobject ) ); + +#ifdef VIPS_DEBUG_VERBOSE + printf( "VObject copy constructor, obj = %p\n", + vobject ); + printf( " reffing object\n" ); +#endif /*VIPS_DEBUG_VERBOSE*/ + if( vobject ) + g_object_ref( vobject ); + } + + // assignment ... we must delete the old ref + VObject &operator=( const VObject &a ) + { +#ifdef VIPS_DEBUG_VERBOSE + printf( "VObject assignment\n" ); + printf( " reffing %p\n", a.vobject ); + printf( " unreffing %p\n", vobject ); +#endif /*VIPS_DEBUG_VERBOSE*/ + + g_assert( !vobject || + VIPS_IS_OBJECT( vobject ) ); + g_assert( !a.vobject || + VIPS_IS_OBJECT( a.vobject ) ); + + // delete the old ref at the end ... otherwise "a = a;" could + // unref before reffing again + if( a.vobject ) + g_object_ref( a.vobject ); + if( vobject ) + g_object_unref( vobject ); + vobject = a.vobject; + + return( *this ); + } + + // this mustn't be virtual: we want this class to only be a pointer, + // no vtable allowed + ~VObject() + { +#ifdef VIPS_DEBUG_VERBOSE + printf( "VObject destructor\n" ); + printf( " unreffing %p\n", vobject ); +#endif /*VIPS_DEBUG_VERBOSE*/ + + g_assert( !vobject || + VIPS_IS_OBJECT( vobject ) ); + + if( vobject ) + g_object_unref( vobject ); + } + + /** + * Return the underlying VipsObject pointer. This does not make a new + * reference -- you'll need to g_object_ref() the result if you want + * to keep it. + */ + VipsObject * + get_object() const + { + g_assert( !vobject || + VIPS_IS_OBJECT( vobject ) ); + + return( vobject ); + } + + /** + * TRUE if this is a null VObject. + */ + bool is_null() const + { + return vobject == 0; + } + +}; + +class VIPS_CPLUSPLUS_API VImage; +class VIPS_CPLUSPLUS_API VInterpolate; +class VIPS_CPLUSPLUS_API VRegion; +class VIPS_CPLUSPLUS_API VSource; +class VIPS_CPLUSPLUS_API VTarget; +class VIPS_CPLUSPLUS_API VOption; + +/** + * A list of name-value pairs. Pass these to libvips operations to set + * options. For example: + * + * VImage out = in.embed( 10, 10, 1000, 1000, VImage::option() + * ->set( "extend", "background" ) + * ->set( "background", 128 ) ); + * + * The `set` member functions will take copies (or hold references to) + * compound objects, so you can free them immediately afterwards if necessary. + * + * You can get values back from operations by using the * form of the set + * member functions. For example: + * + * VImage in = VImage::new_from_file( argv[1] ); + * int x, y; + * double value = in.max( VImage::option() + * set( "x", &x ) + * set( "y", &y ) ); + * + */ +class VOption { +private: + struct Pair { + const char *name; + + // the thing we pass to and from our caller + GValue value; + + // an input or output parameter ... we guess the direction + // from the arg to set() + bool input; + + // the pointer we write output values to + union { + bool *vbool; + int *vint; + double *vdouble; + VImage *vimage; + std::vector *vvector; + VipsBlob **vblob; + }; + + Pair( const char *name ) : + name( name ), input( false ), vimage( 0 ) + { + // argh = {0} won't work wil vanilla C++ + memset( &value, 0, sizeof( GValue ) ); + } + + ~Pair() + { + g_value_unset( &value ); + } + }; + + std::list options; + +public: + VOption() + { + } + + virtual ~VOption(); + + /** + * Set an input boolean option. + */ + VOption * + set( const char *name, bool value ); + + /** + * Set an input int option. This is used for enums as well, or you can + * use the string version. + */ + VOption * + set( const char *name, int value ); + + /** + * Set an input unsigned 64-bit integer option. + */ + VOption * + set( const char *name, guint64 value ); + + /** + * Set an input double option. + */ + VOption * + set( const char *name, double value ); + + /** + * Set an input string option. + * + * A copy is taken of the object. + */ + VOption * + set( const char *name, const char *value ); + + /** + * Set a libvips object as an option. These can be images, sources, + * targets, etc. + * + * A copy is taken of the object. + */ + VOption * + set( const char *name, const VObject value ); + + /** + * Set an array of integers as an input option. + * + * A copy is taken of the object. + */ + VOption * + set( const char *name, std::vector value ); + + /** + * Set an array of doubles as an input option. + * + * A copy is taken of the object. + */ + VOption * + set( const char *name, std::vector value ); + + /** + * Set an array of images as an input option. + * + * A copy is taken of the object. + */ + VOption * + set( const char *name, std::vector value ); + + /** + * Set a binary object an input option. Use vips_blob_new() to make + * blobs. + * + * A copy is taken of the object. + */ + VOption * + set( const char *name, VipsBlob *value ); + + /** + * Set an option which will return a bool value. + */ + VOption * + set( const char *name, bool *value ); + + /** + * Set an option which will return an integer value. + */ + VOption * + set( const char *name, int *value ); + + /** + * Set an option which will return a double value. + */ + VOption * + set( const char *name, double *value ); + + /** + * Set an option which will return a reference to an image. + */ + VOption * + set( const char *name, VImage *value ); + + /** + * Set an option which will return an array of doubles. + */ + VOption * + set( const char *name, std::vector *value ); + + /** + * Set an option which will return a binary object, such as an ICC + * profile. + */ + VOption * + set( const char *name, VipsBlob **blob ); + + /** + * Walk the set of options, setting options on the operation. This is + * used internally by VImage::call(). + */ + void + set_operation( VipsOperation *operation ); + + /** + * Walk the set of options, fetching any output values. This is used + * internally by VImage::call(). + */ + void + get_operation( VipsOperation *operation ); + +}; + +/** + * An image object. + * + * Image processing operations on images are member functions of VImage. For + * example: + * + * VImage in = VImage::new_from_file( argv[1], VImage::option() + * ->set( "access", "sequential" ) ); + * VImage out = in.embed( 10, 10, 1000, 1000, VImage::option() + * ->set( "extend", "copy" ) ); + * out.write_to_file( argv[2] ); + * + * VImage objects are smart pointers over the underlying VipsImage objects. + * They manage the complications of GLib's ref and unref system for you. + */ +class VImage : public VObject +{ +public: + using VObject::is_null; + + /** + * Wrap a VImage around an underlying VipsImage object. + * + * If steal is STEAL, then the VImage will take ownership of the + * reference to the VipsImage. + */ + VImage( VipsImage *image, VSteal steal = STEAL ) : + VObject( (VipsObject *) image, steal ) + { + } + + /** + * An empty (NULL) VImage, eg. "VImage a;" + */ + VImage() : + VObject( 0 ) + { + } + + /** + * Return the underlying VipsImage reference that this VImage holds. + * This does not make a new reference -- you'll need to g_object_ref() + * the pointer if you need it to last. + */ + VipsImage * + get_image() const + { + return( (VipsImage *) VObject::get_object() ); + } + + /** + * Return the width of the image in pixels. + */ + int + width() const + { + return( vips_image_get_width( get_image() ) ); + } + + /** + * Return the height of the image in pixels. + */ + int + height() const + { + return( vips_image_get_height( get_image() ) ); + } + + /** + * Return the number of image bands. + */ + int + bands() const + { + return( vips_image_get_bands( get_image() ) ); + } + + /** + * Return the image format, for example VIPS_FORMAT_UCHAR. + */ + VipsBandFormat + format() const + { + return( vips_image_get_format( get_image() ) ); + } + + /** + * Return the image coding, for example VIPS_CODING_NONE. + */ + VipsCoding + coding() const + { + return( vips_image_get_coding( get_image() ) ); + } + + /** + * Return the image interpretation, for example + * VIPS_INTERPRETATION_sRGB. + */ + VipsInterpretation + interpretation() const + { + return( vips_image_get_interpretation( get_image() ) ); + } + + /** + * Try to guess the image interpretation from other fields. This is + * handy if the interpretation has not been set correctly. + */ + VipsInterpretation + guess_interpretation() const + { + return( vips_image_guess_interpretation( get_image() ) ); + } + + /** + * The horizontal resolution in pixels per millimeter. + */ + double + xres() const + { + return( vips_image_get_xres( get_image() ) ); + } + + /** + * The vertical resolution in pixels per millimeter. + */ + double + yres() const + { + return( vips_image_get_yres( get_image() ) ); + } + + /** + * The horizontal offset of the origin in pixels. + */ + int + xoffset() const + { + return( vips_image_get_xoffset( get_image() ) ); + } + + /** + * The vertical offset of the origin in pixels. + */ + int + yoffset() const + { + return( vips_image_get_yoffset( get_image() ) ); + } + + /** + * TRUE if the image has an alpha channel. + */ + bool + has_alpha() const + { + return( vips_image_hasalpha( get_image() ) ); + } + + /** + * The name of the file this image originally came from, or NULL if + * it's not a file image. + */ + const char * + filename() const + { + return( vips_image_get_filename( get_image() ) ); + } + + /** + * Arrange for the underlying object to be entirely in memory, then + * return a pointer to the first pixel. + * + * This can take a long time and need a very large amount of RAM. + */ + const void * + data() const + { + return( vips_image_get_data( get_image() ) ); + } + + /** + * Set the value of an int metadata item on an image. + */ + void + set( const char *field, int value ) + { + vips_image_set_int( this->get_image(), field, value ); + } + + /** + * Set the value of an int array metadata item on an image. + * + * A copy of the array is taken. + */ + void + set( const char *field, int *value, int n ) + { + vips_image_set_array_int( this->get_image(), field, value, n ); + } + + /** + * Set the value of an int array metadata item on an image. + * + * A copy of the array is taken. + */ + void + set( const char *field, std::vector value ) + { + vips_image_set_array_int( this->get_image(), field, &value[0], + static_cast( value.size() ) ); + } + + /** + * Set the value of an double array metadata item on an image. + * + * A copy of the array is taken. + */ + void + set( const char *field, double *value, int n ) + { + vips_image_set_array_double( this->get_image(), field, value, n ); + } + + /** + * Set the value of an double array metadata item on an image. + * + * A copy of the array is taken. + */ + void + set( const char *field, std::vector value ) + { + vips_image_set_array_double( this->get_image(), field, &value[0], + static_cast( value.size() ) ); + } + + /** + * Set the value of a double metadata item on an image. + */ + void + set( const char *field, double value ) + { + vips_image_set_double( this->get_image(), field, value ); + } + + /** + * Set the value of a string metadata item on an image. + * + * A copy of the string is taken. + */ + void + set( const char *field, const char *value ) + { + vips_image_set_string( this->get_image(), field, value ); + } + + /** + * Set the value of a binary object metadata item on an image, such as + * an ICC profile. + * + * When libvips no longer needs the value, it will be disposed with + * the free function. This can be NULL. + */ + void + set( const char *field, + VipsCallbackFn free_fn, void *data, size_t length ) + { + vips_image_set_blob( this->get_image(), field, + free_fn, data, length ); + } + + /** + * Return the GType of a metadata item, or 0 if the named item does not + * exist. + */ + GType + get_typeof( const char *field ) const + { + return( vips_image_get_typeof( this->get_image(), field ) ); + } + + /** + * Get the value of a metadata item as an int. + * + * If the item is not of this type, an exception is thrown. + */ + int + get_int( const char *field ) const + { + int value; + + if( vips_image_get_int( this->get_image(), field, &value ) ) + throw( VError() ); + + return( value ); + } + + /** + * Get the value of a metadata item as an array of ints. Do not free + * the result. + * + * If the item is not of this type, an exception is thrown. + */ + void + get_array_int( const char *field, int **out, int *n ) const + { + if( vips_image_get_array_int( this->get_image(), + field, out, n ) ) + throw( VError() ); + } + + /** + * Get the value of a metadata item as an array of ints. + * + * If the item is not of this type, an exception is thrown. + */ + std::vector + get_array_int( const char *field ) const + { + int length; + int *array; + + if( vips_image_get_array_int( this->get_image(), + field, &array, &length ) ) + throw( VError() ); + + std::vector vector( array, array + length ); + + return( vector ); + } + + /** + * Get the value of a metadata item as an array of doubles. Do not free + * the result. + * + * If the item is not of this type, an exception is thrown. + */ + void + get_array_double( const char *field, double **out, int *n ) const + { + if( vips_image_get_array_double( this->get_image(), + field, out, n ) ) + throw( VError() ); + } + + /** + * Get the value of a metadata item as an array of doubles. + * + * If the item is not of this type, an exception is thrown. + */ + std::vector + get_array_double( const char *field ) const + { + int length; + double *array; + + if( vips_image_get_array_double( this->get_image(), + field, &array, &length ) ) + throw( VError() ); + + std::vector vector( array, array + length ); + + return( vector ); + } + + /** + * Get the value of a metadata item as a double. + * + * If the item is not of this type, an exception is thrown. + */ + double + get_double( const char *field ) const + { + double value; + + if( vips_image_get_double( this->get_image(), field, &value ) ) + throw( VError() ); + + return( value ); + } + + /** + * Get the value of a metadata item as a string. You must not free the + * result. + * + * If the item is not of this type, an exception is thrown. + */ + const char * + get_string( const char *field ) const + { + const char *value; + + if( vips_image_get_string( this->get_image(), field, &value ) ) + throw( VError() ); + + return( value ); + } + + /** + * Get the value of a metadata item as a binary object. You must not + * free the result. + * + * If the item is not of this type, an exception is thrown. + */ + const void * + get_blob( const char *field, size_t *length ) const + { + const void *value; + + if( vips_image_get_blob( this->get_image(), field, + &value, length ) ) + throw( VError() ); + + return( value ); + } + + /** + * Remove a metadata item. This does nothing if the item does not + * exist. + */ + bool + remove( const char *name ) const + { + return( vips_image_remove( get_image(), name ) ); + } + + /** + * Make a new VOption. Can save some typing. + */ + static VOption * + option() + { + return( new VOption() ); + } + + /** + * Call any libvips operation, with a set of string-encoded options as + * well as VOption. + */ + static void + call_option_string( const char *operation_name, + const char *option_string, VOption *options = 0 ); + + /** + * Call any libvips operation. + */ + static void + call( const char *operation_name, VOption *options = 0 ); + + /** + * Make a new image which, when written to, will create a large memory + * object. See VImage::write(). + */ + static VImage + new_memory() + { + return( VImage( vips_image_new_memory() ) ); + } + + /** + * Make a new VImage which, when written to, will craete a temporary + * file on disc. See VImage::write(). + */ + static VImage + new_temp_file( const char *file_format = ".v" ) + { + VipsImage *image; + + if( !(image = vips_image_new_temp_file( file_format )) ) + throw( VError() ); + + return( VImage( image ) ); + } + + /** + * Create a new VImage object from a file on disc. + * + * The available options depends on the image format. See for example + * VImage::jpegload(). + */ + static VImage + new_from_file( const char *name, VOption *options = 0 ); + + /** + * Create a new VImage object from an area of memory containing an + * image encoded in some format such as JPEG. + * + * The available options depends on the image format. See for example + * VImage::jpegload(). + */ + static VImage + new_from_buffer( const void *buf, size_t len, + const char *option_string, VOption *options = 0 ); + + /** + * Create a new VImage object from an area of memory containing an + * image encoded in some format such as JPEG. + * + * The available options depends on the image format. See for example + * VImage::jpegload(). + */ + static VImage + new_from_buffer( const std::string &buf, + const char *option_string, VOption *options = 0 ); + + /** + * Create a new VImage object from a generic source object. + * + * The available options depends on the image format. See for example + * VImage::jpegload(). + */ + static VImage + new_from_source( VSource source, + const char *option_string, VOption *options = 0 ); + + /** + * Create a new VImage object from an area of memory containing a + * C-style array. + */ + static VImage + new_from_memory( void *data, size_t size, + int width, int height, int bands, VipsBandFormat format ) + { + VipsImage *image; + + if( !(image = vips_image_new_from_memory( data, size, + width, height, bands, format )) ) + throw( VError() ); + + return( VImage( image ) ); + } + + /** + * Create a new VImage object from an area of memory containing a + * C-style array. + * + * The VImage steals ownership of @data and will free() it when it + * goes out of scope. + */ + static VImage + new_from_memory_steal( void *data, size_t size, + int width, int height, int bands, VipsBandFormat format ); + + /** + * Create a matrix image of a specified size. All elements will be + * zero. + */ + static VImage + new_matrix( int width, int height ); + + /** + * Create a matrix image of a specified size, initialized from the + * array. + */ + static VImage + new_matrix( int width, int height, double *array, int size ) + { + VipsImage *image; + + if( !(image = vips_image_new_matrix_from_array( width, height, + array, size )) ) + throw( VError() ); + + return( VImage( image ) ); + } + + /** + * Create a matrix image of a specified size, initialized from the + * function parameters. + */ + static VImage + new_matrixv( int width, int height, ... ); + + /** + * Make a new image of the same size and type as self, but with each + * pixel initialized with the constant. + */ + VImage + new_from_image( std::vector pixel ) const + { + VipsImage *image; + + if( !(image = vips_image_new_from_image( this->get_image(), + &pixel[0], static_cast( pixel.size() ) )) ) + throw( VError() ); + + return( VImage( image ) ); + } + + /** + * Make a new image of the same size and type as self, but with each + * pixel initialized with the constant. + */ + VImage + new_from_image( double pixel ) const + { + return( new_from_image( to_vectorv( 1, pixel ) ) ); + } + + /** + * This operation allocates memory, renders self into it, builds a new + * image around the memory area, and returns that. + * + * If the image is already a simple area of memory, it does nothing. + * + * Call this before using the draw operations to make sure you have a + * memory image that can be modified. + * + * VImage::copy() adds a null "copy" node to a pipeline. Use that + * instead if you want to change metadata and not pixels. + */ + VImage + copy_memory() const + { + VipsImage *image; + + if( !(image = vips_image_copy_memory( this->get_image() )) ) + throw( VError() ); + + return( VImage( image ) ); + } + + /** + * Write self to out. See VImage::new_memory() etc. + */ + VImage write( VImage out ) const; + + /** + * Write an image to a file. + * + * The available options depends on the file format. See + * VImage::jpegsave(), for example. + */ + void write_to_file( const char *name, VOption *options = 0 ) const; + + /** + * Write an image to an area of memory in the specified format. You + * must free() the memory area once you are done with it. + * + * For example: + * + * void *buf; + * size_t size; + * image.write_to_buffer( ".jpg", &buf, &size ); + * + * The available options depends on the file format. See + * VImage::jpegsave(), for example. + */ + void write_to_buffer( const char *suffix, void **buf, size_t *size, + VOption *options = 0 ) const; + + /** + * Write an image to a generic target object in the specified format. + * + * The available options depends on the file format. See + * VImage::jpegsave(), for example. + */ + void write_to_target( const char *suffix, VTarget target, + VOption *options = 0 ) const; + + /** + * Write an image to an area of memory as a C-style array. + */ + void * + write_to_memory( size_t *size ) const + { + void *result; + + if( !(result = vips_image_write_to_memory( this->get_image(), + size )) ) + throw( VError() ); + + return( result ); + } + + /** + * Acquire an unprepared VRegion. + */ + VRegion + region() const; + + /** + * Acquire VRegion covering the given VipsRect. + */ + VRegion + region( VipsRect *rect ) const; + + /** + * Acquire VRegion covering the given coordinates. + */ + VRegion + region( int left, int top, int width, int height ) const; + + /** + * Apply a linear transform to an image. For every pixel, + * + * out = in * a + b + */ + VImage + linear( double a, double b, VOption *options = 0 ) const + { + return( this->linear( to_vector( a ), to_vector( b ), + options ) ); + } + + /** + * Apply a linear transform to an image. For every pixel, + * + * out = in * a + b + */ + VImage + linear( std::vector a, double b, VOption *options = 0 ) const + { + return( this->linear( a, to_vector( b ), options ) ); + } + + /** + * Apply a linear transform to an image. For every pixel, + * + * out = in * a + b + */ + VImage + linear( double a, std::vector b, VOption *options = 0 ) const + { + return( this->linear( to_vector( a ), b, options ) ); + } + + /** + * Split a many-band image into an array of one-band images. + */ + std::vector bandsplit( VOption *options = 0 ) const; + + /** + * Join two images bandwise. + */ + VImage bandjoin( VImage other, VOption *options = 0 ) const; + + /** + * Append a band to an image, with each element initialized to the + * constant value. + */ + VImage + bandjoin( double other, VOption *options = 0 ) const + { + return( bandjoin( to_vector( other ), options ) ); + } + + /** + * Append a series of bands to an image, with each element initialized + * to the constant values. + */ + VImage + bandjoin( std::vector other, VOption *options = 0 ) const + { + return( bandjoin_const( other, options ) ); + } + + /** + * Composite other on top of self using the specified blending mode. + */ + VImage composite( VImage other, VipsBlendMode mode, + VOption *options = 0 ) const; + + /** + * Find the position of the image minimum as (x, y). + */ + std::complex minpos( VOption *options = 0 ) const; + + /** + * Find the position of the image maximum as (x, y). + */ + std::complex maxpos( VOption *options = 0 ) const; + + /** + * Flip the image left-right. + */ + VImage + fliphor( VOption *options = 0 ) const + { + return( flip( VIPS_DIRECTION_HORIZONTAL, options ) ); + } + + /** + * Flip the image top-bottom. + */ + VImage + flipver( VOption *options = 0 ) const + { + return( flip( VIPS_DIRECTION_VERTICAL, options ) ); + } + + /** + * Rotate the image by 90 degrees clockwise. + */ + VImage + rot90( VOption *options = 0 ) const + { + return( rot( VIPS_ANGLE_D90, options ) ); + } + + /** + * Rotate the image by 180 degrees. + */ + VImage + rot180( VOption *options = 0 ) const + { + return( rot( VIPS_ANGLE_D180, options ) ); + } + + /** + * Rotate the image by 270 degrees clockwise. + */ + VImage + rot270( VOption *options = 0 ) const + { + return( rot( VIPS_ANGLE_D270, options ) ); + } + + /** + * Dilate the image with the specified strucuring element, see + * VImage::new_matrix(). Stucturing element values can be 0 for + * black, 255 for white and 128 for don't care. See VImage::morph(). + */ + VImage + dilate( VImage mask, VOption *options = 0 ) const + { + return( morph( mask, VIPS_OPERATION_MORPHOLOGY_DILATE, + options ) ); + } + + /** + * Erode the image with the specified strucuring element, see + * VImage::new_matrix(). Stucturing element values can be 0 for + * black, 255 for white and 128 for don't care. See VImage::morph(). + */ + VImage + erode( VImage mask, VOption *options = 0 ) const + { + return( morph( mask, VIPS_OPERATION_MORPHOLOGY_ERODE, + options ) ); + } + + /** + * A median filter of the specified size. See VImage::rank(). + */ + VImage + median( int size = 3, VOption *options = 0 ) const + { + return( rank( size, size, (size * size) / 2, options ) ); + } + + /** + * Convert to integer, rounding down. + */ + VImage + floor( VOption *options = 0 ) const + { + return( round( VIPS_OPERATION_ROUND_FLOOR, options ) ); + } + + /** + * Convert to integer, rounding up. + */ + VImage + ceil( VOption *options = 0 ) const + { + return( round( VIPS_OPERATION_ROUND_CEIL, options ) ); + } + + /** + * Convert to integer, rounding to nearest. + */ + VImage + rint( VOption *options = 0 ) const + { + return( round( VIPS_OPERATION_ROUND_RINT, options ) ); + } + + /** + * AND all bands of an image together to make a one-band image. Useful + * with the relational operators, for example: + * + * VImage mask = (in > 128).bandand() + */ + VImage + bandand( VOption *options = 0 ) const + { + return( bandbool( VIPS_OPERATION_BOOLEAN_AND, options ) ); + } + + /** + * OR all bands of an image together to make a one-band image. Useful + * with the relational operators, for example: + * + * VImage mask = (in > 128).bandand() + */ + VImage + bandor( VOption *options = 0 ) const + { + return( bandbool( VIPS_OPERATION_BOOLEAN_OR, options ) ); + } + + /** + * EOR all bands of an image together to make a one-band image. Useful + * with the relational operators, for example: + * + * VImage mask = (in > 128).bandand() + */ + VImage + bandeor( VOption *options = 0 ) const + { + return( bandbool( VIPS_OPERATION_BOOLEAN_EOR, options ) ); + } + + /** + * Return the real part of a complex image. + */ + VImage + real( VOption *options = 0 ) const + { + return( complexget( VIPS_OPERATION_COMPLEXGET_REAL, options ) ); + } + + /** + * Return the imaginary part of a complex image. + */ + VImage + imag( VOption *options = 0 ) const + { + return( complexget( VIPS_OPERATION_COMPLEXGET_IMAG, options ) ); + } + + /** + * Convert a complex image to polar coordinates. + */ + VImage + polar( VOption *options = 0 ) const + { + return( complex( VIPS_OPERATION_COMPLEX_POLAR, options ) ); + } + + /** + * Convert a complex image to rectangular coordinates. + */ + VImage + rect( VOption *options = 0 ) const + { + return( complex( VIPS_OPERATION_COMPLEX_RECT, options ) ); + } + + /** + * Find the complex conjugate. + */ + VImage + conj( VOption *options = 0 ) const + { + return( complex( VIPS_OPERATION_COMPLEX_CONJ, options ) ); + } + + /** + * Find the sine of each pixel. Angles are in degrees. + */ + VImage + sin( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_SIN, options ) ); + } + + /** + * Find the cosine of each pixel. Angles are in degrees. + */ + VImage + cos( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_COS, options ) ); + } + + /** + * Find the tangent of each pixel. Angles are in degrees. + */ + VImage + tan( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_TAN, options ) ); + } + + /** + * Find the arc sine of each pixel. Angles are in degrees. + */ + VImage + asin( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_ASIN, options ) ); + } + + /** + * Find the arc cosine of each pixel. Angles are in degrees. + */ + VImage + acos( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_ACOS, options ) ); + } + + /** + * Find the arc tangent of each pixel. Angles are in degrees. + */ + VImage + atan( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_ATAN, options ) ); + } + + /** + * Find the hyperbolic sine of each pixel. Angles are in degrees. + */ + VImage + sinh( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_SINH, options ) ); + } + + /** + * Find the hyperbolic cosine of each pixel. Angles are in degrees. + */ + VImage + cosh( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_COSH, options ) ); + } + + /** + * Find the hyperbolic tangent of each pixel. Angles are in degrees. + */ + VImage + tanh( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_TANH, options ) ); + } + + /** + * Find the hyperbolic arc sine of each pixel. Angles are in radians. + */ + VImage + asinh( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_ASINH, options ) ); + } + + /** + * Find the hyperbolic arc cosine of each pixel. Angles are in radians. + */ + VImage + acosh( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_ACOSH, options ) ); + } + + /** + * Find the hyperbolic arc tangent of each pixel. Angles are in radians. + */ + VImage + atanh( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_ATANH, options ) ); + } + + /** + * Find the natural log of each pixel. + */ + VImage + log( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_LOG, options ) ); + } + + /** + * Find the base 10 log of each pixel. + */ + VImage + log10( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_LOG10, options ) ); + } + + /** + * Find e to the power of each pixel. + */ + VImage + exp( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_EXP, options ) ); + } + + /** + * Find 10 to the power of each pixel. + */ + VImage + exp10( VOption *options = 0 ) const + { + return( math( VIPS_OPERATION_MATH_EXP10, options ) ); + } + + /** + * Raise each pixel to the specified power. + */ + VImage + pow( VImage other, VOption *options = 0 ) const + { + return( math2( other, VIPS_OPERATION_MATH2_POW, options ) ); + } + + /** + * Raise each pixel to the specified power. + */ + VImage + pow( double other, VOption *options = 0 ) const + { + return( math2_const( VIPS_OPERATION_MATH2_POW, + to_vector( other ), options ) ); + } + + /** + * Raise each pixel to the specified power. + */ + VImage + pow( std::vector other, VOption *options = 0 ) const + { + return( math2_const( VIPS_OPERATION_MATH2_POW, + other, options ) ); + } + + /** + * Raise other to the power of each pixel (the opposite of pow). + */ + VImage + wop( VImage other, VOption *options = 0 ) const + { + return( math2( other, VIPS_OPERATION_MATH2_WOP, options ) ); + } + + /** + * Raise the constant to the power of each pixel (the opposite of pow). + */ + VImage + wop( double other, VOption *options = 0 ) const + { + return( math2_const( VIPS_OPERATION_MATH2_WOP, + to_vector( other ), options ) ); + } + + /** + * Raise the constant to the power of each pixel (the opposite of pow). + */ + VImage + wop( std::vector other, VOption *options = 0 ) const + { + return( math2_const( VIPS_OPERATION_MATH2_WOP, + other, options ) ); + } + + /** + * Calculate atan2 of each pixel. + */ + VImage + atan2( VImage other, VOption *options = 0 ) const + { + return( math2( other, VIPS_OPERATION_MATH2_ATAN2, options ) ); + } + + /** + * Calculate atan2 of each pixel. + */ + VImage + atan2( double other, VOption *options = 0 ) const + { + return( math2_const( VIPS_OPERATION_MATH2_ATAN2, + to_vector( other ), options ) ); + } + + /** + * Calculate atan2 of each pixel. + */ + VImage + atan2( std::vector other, VOption *options = 0 ) const + { + return( math2_const( VIPS_OPERATION_MATH2_ATAN2, + other, options ) ); + } + + /** + * Use self as a conditional image (not zero meaning TRUE) to pick + * pixels from th (then) or el (else). + */ + VImage + ifthenelse( std::vector th, VImage el, + VOption *options = 0 ) const + { + return( ifthenelse( el.new_from_image( th ), el, options ) ); + } + + /** + * Use self as a conditional image (not zero meaning TRUE) to pick + * pixels from th (then) or el (else). + */ + VImage + ifthenelse( VImage th, std::vector el, + VOption *options = 0 ) const + { + return( ifthenelse( th, th.new_from_image( el ), options ) ); + } + + /** + * Use self as a conditional image (not zero meaning TRUE) to pick + * pixels from th (then) or el (else). + */ + VImage + ifthenelse( std::vector th, std::vector el, + VOption *options = 0 ) const + { + return( ifthenelse( new_from_image( th ), new_from_image( el ), + options ) ); + } + + /** + * Use self as a conditional image (not zero meaning TRUE) to pick + * pixels from th (then) or el (else). + */ + VImage + ifthenelse( double th, VImage el, VOption *options = 0 ) const + { + return( ifthenelse( to_vector( th ), el, options ) ); + } + + /** + * Use self as a conditional image (not zero meaning TRUE) to pick + * pixels from th (then) or el (else). + */ + VImage + ifthenelse( VImage th, double el, VOption *options = 0 ) const + { + return( ifthenelse( th, to_vector( el ), options ) ); + } + + /** + * Use self as a conditional image (not zero meaning TRUE) to pick + * pixels from th (then) or el (else). + */ + VImage + ifthenelse( double th, double el, VOption *options = 0 ) const + { + return( ifthenelse( to_vector( th ), to_vector( el ), + options ) ); + } + + // Operator overloads + + VImage operator[]( int index ) const; + + std::vector operator()( int x, int y ) const; + + friend VIPS_CPLUSPLUS_API VImage + operator+( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator+( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator+( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator+( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator+( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator+=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator+=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator+=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator-( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator-( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator-( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator-( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator-( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator-=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator-=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator-=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator-( const VImage a ); + + friend VIPS_CPLUSPLUS_API VImage + operator*( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator*( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator*( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator*( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator*( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator*=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator*=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator*=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator/( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator/( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator/( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator/( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator/( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator/=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator/=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator/=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator%( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator%( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator%( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator%=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator%=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator%=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator<( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator<( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator<( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator<( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator<( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator<=( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator<=( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator<=( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator<=( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator<=( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator>( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator>( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator>( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator>( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator>( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator>=( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator>=( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator>=( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator>=( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator>=( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator==( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator==( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator==( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator==( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator==( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator!=( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator!=( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator!=( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator!=( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator!=( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator&( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator&( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator&( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator&( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator&( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator&=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator&=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator&=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator|( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator|( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator|( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator|( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator|( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator|=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator|=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator|=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator^( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator^( const double a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator^( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator^( const std::vector a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator^( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator^=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator^=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator^=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator<<( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator<<( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator<<( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator<<=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator<<=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator<<=( VImage &a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage + operator>>( const VImage a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage + operator>>( const VImage a, const double b ); + friend VIPS_CPLUSPLUS_API VImage + operator>>( const VImage a, const std::vector b ); + + friend VIPS_CPLUSPLUS_API VImage & + operator>>=( VImage &a, const VImage b ); + friend VIPS_CPLUSPLUS_API VImage & + operator>>=( VImage &a, const double b ); + friend VIPS_CPLUSPLUS_API VImage & + operator>>=( VImage &a, const std::vector b ); + + /* Automatically generated members. + * + * Rebuild with: + * + * make vips-operators + * + * Then delete from here to the end of the class and paste in + * vips-operators.h. We could just #include vips-operators.h, but + * that confuses doxygen. + */ + +// headers for vips operations +// this file is generated automatically, do not edit! + +/** + * Transform lch to cmc. + * @param options Set of options. + * @return Output image. + */ +VImage CMC2LCh( VOption *options = 0 ) const; + +/** + * Transform cmyk to xyz. + * @param options Set of options. + * @return Output image. + */ +VImage CMYK2XYZ( VOption *options = 0 ) const; + +/** + * Transform hsv to srgb. + * @param options Set of options. + * @return Output image. + */ +VImage HSV2sRGB( VOption *options = 0 ) const; + +/** + * Transform lch to cmc. + * @param options Set of options. + * @return Output image. + */ +VImage LCh2CMC( VOption *options = 0 ) const; + +/** + * Transform lch to lab. + * @param options Set of options. + * @return Output image. + */ +VImage LCh2Lab( VOption *options = 0 ) const; + +/** + * Transform lab to lch. + * @param options Set of options. + * @return Output image. + */ +VImage Lab2LCh( VOption *options = 0 ) const; + +/** + * Transform float lab to labq coding. + * @param options Set of options. + * @return Output image. + */ +VImage Lab2LabQ( VOption *options = 0 ) const; + +/** + * Transform float lab to signed short. + * @param options Set of options. + * @return Output image. + */ +VImage Lab2LabS( VOption *options = 0 ) const; + +/** + * Transform cielab to xyz. + * + * **Optional parameters** + * - **temp** -- Color temperature, std::vector. + * + * @param options Set of options. + * @return Output image. + */ +VImage Lab2XYZ( VOption *options = 0 ) const; + +/** + * Unpack a labq image to float lab. + * @param options Set of options. + * @return Output image. + */ +VImage LabQ2Lab( VOption *options = 0 ) const; + +/** + * Unpack a labq image to short lab. + * @param options Set of options. + * @return Output image. + */ +VImage LabQ2LabS( VOption *options = 0 ) const; + +/** + * Convert a labq image to srgb. + * @param options Set of options. + * @return Output image. + */ +VImage LabQ2sRGB( VOption *options = 0 ) const; + +/** + * Transform signed short lab to float. + * @param options Set of options. + * @return Output image. + */ +VImage LabS2Lab( VOption *options = 0 ) const; + +/** + * Transform short lab to labq coding. + * @param options Set of options. + * @return Output image. + */ +VImage LabS2LabQ( VOption *options = 0 ) const; + +/** + * Transform xyz to cmyk. + * @param options Set of options. + * @return Output image. + */ +VImage XYZ2CMYK( VOption *options = 0 ) const; + +/** + * Transform xyz to lab. + * + * **Optional parameters** + * - **temp** -- Colour temperature, std::vector. + * + * @param options Set of options. + * @return Output image. + */ +VImage XYZ2Lab( VOption *options = 0 ) const; + +/** + * Transform xyz to yxy. + * @param options Set of options. + * @return Output image. + */ +VImage XYZ2Yxy( VOption *options = 0 ) const; + +/** + * Transform xyz to scrgb. + * @param options Set of options. + * @return Output image. + */ +VImage XYZ2scRGB( VOption *options = 0 ) const; + +/** + * Transform yxy to xyz. + * @param options Set of options. + * @return Output image. + */ +VImage Yxy2XYZ( VOption *options = 0 ) const; + +/** + * Absolute value of an image. + * @param options Set of options. + * @return Output image. + */ +VImage abs( VOption *options = 0 ) const; + +/** + * Add two images. + * @param right Right-hand image argument. + * @param options Set of options. + * @return Output image. + */ +VImage add( VImage right, VOption *options = 0 ) const; + +/** + * Affine transform of an image. + * + * **Optional parameters** + * - **interpolate** -- Interpolate pixels with this, VInterpolate. + * - **oarea** -- Area of output to generate, std::vector. + * - **odx** -- Horizontal output displacement, double. + * - **ody** -- Vertical output displacement, double. + * - **idx** -- Horizontal input displacement, double. + * - **idy** -- Vertical input displacement, double. + * - **background** -- Background value, std::vector. + * - **premultiplied** -- Images have premultiplied alpha, bool. + * - **extend** -- How to generate the extra pixels, VipsExtend. + * + * @param matrix Transformation matrix. + * @param options Set of options. + * @return Output image. + */ +VImage affine( std::vector matrix, VOption *options = 0 ) const; + +/** + * Load an analyze6 image. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage analyzeload( const char *filename, VOption *options = 0 ); + +/** + * Join an array of images. + * + * **Optional parameters** + * - **across** -- Number of images across grid, int. + * - **shim** -- Pixels between images, int. + * - **background** -- Colour for new pixels, std::vector. + * - **halign** -- Align on the left, centre or right, VipsAlign. + * - **valign** -- Align on the top, centre or bottom, VipsAlign. + * - **hspacing** -- Horizontal spacing between images, int. + * - **vspacing** -- Vertical spacing between images, int. + * + * @param in Array of input images. + * @param options Set of options. + * @return Output image. + */ +static VImage arrayjoin( std::vector in, VOption *options = 0 ); + +/** + * Autorotate image by exif tag. + * @param options Set of options. + * @return Output image. + */ +VImage autorot( VOption *options = 0 ) const; + +/** + * Find image average. + * @param options Set of options. + * @return Output value. + */ +double avg( VOption *options = 0 ) const; + +/** + * Boolean operation across image bands. + * @param boolean Boolean to perform. + * @param options Set of options. + * @return Output image. + */ +VImage bandbool( VipsOperationBoolean boolean, VOption *options = 0 ) const; + +/** + * Fold up x axis into bands. + * + * **Optional parameters** + * - **factor** -- Fold by this factor, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage bandfold( VOption *options = 0 ) const; + +/** + * Bandwise join a set of images. + * @param in Array of input images. + * @param options Set of options. + * @return Output image. + */ +static VImage bandjoin( std::vector in, VOption *options = 0 ); + +/** + * Append a constant band to an image. + * @param c Array of constants to add. + * @param options Set of options. + * @return Output image. + */ +VImage bandjoin_const( std::vector c, VOption *options = 0 ) const; + +/** + * Band-wise average. + * @param options Set of options. + * @return Output image. + */ +VImage bandmean( VOption *options = 0 ) const; + +/** + * Band-wise rank of a set of images. + * + * **Optional parameters** + * - **index** -- Select this band element from sorted list, int. + * + * @param in Array of input images. + * @param options Set of options. + * @return Output image. + */ +static VImage bandrank( std::vector in, VOption *options = 0 ); + +/** + * Unfold image bands into x axis. + * + * **Optional parameters** + * - **factor** -- Unfold by this factor, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage bandunfold( VOption *options = 0 ) const; + +/** + * Make a black image. + * + * **Optional parameters** + * - **bands** -- Number of bands in image, int. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage black( int width, int height, VOption *options = 0 ); + +/** + * Boolean operation on two images. + * @param right Right-hand image argument. + * @param boolean Boolean to perform. + * @param options Set of options. + * @return Output image. + */ +VImage boolean( VImage right, VipsOperationBoolean boolean, VOption *options = 0 ) const; + +/** + * Boolean operations against a constant. + * @param boolean Boolean to perform. + * @param c Array of constants. + * @param options Set of options. + * @return Output image. + */ +VImage boolean_const( VipsOperationBoolean boolean, std::vector c, VOption *options = 0 ) const; + +/** + * Build a look-up table. + * @param options Set of options. + * @return Output image. + */ +VImage buildlut( VOption *options = 0 ) const; + +/** + * Byteswap an image. + * @param options Set of options. + * @return Output image. + */ +VImage byteswap( VOption *options = 0 ) const; + +/** + * Cache an image. + * + * **Optional parameters** + * - **max_tiles** -- Maximum number of tiles to cache, int. + * - **tile_height** -- Tile height in pixels, int. + * - **tile_width** -- Tile width in pixels, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage cache( VOption *options = 0 ) const; + +/** + * Canny edge detector. + * + * **Optional parameters** + * - **sigma** -- Sigma of Gaussian, double. + * - **precision** -- Convolve with this precision, VipsPrecision. + * + * @param options Set of options. + * @return Output image. + */ +VImage canny( VOption *options = 0 ) const; + +/** + * Use pixel values to pick cases from an array of images. + * @param cases Array of case images. + * @param options Set of options. + * @return Output image. + */ +VImage case_image( std::vector cases, VOption *options = 0 ) const; + +/** + * Cast an image. + * + * **Optional parameters** + * - **shift** -- Shift integer values up and down, bool. + * + * @param format Format to cast to. + * @param options Set of options. + * @return Output image. + */ +VImage cast( VipsBandFormat format, VOption *options = 0 ) const; + +/** + * Convert to a new colorspace. + * + * **Optional parameters** + * - **source_space** -- Source color space, VipsInterpretation. + * + * @param space Destination color space. + * @param options Set of options. + * @return Output image. + */ +VImage colourspace( VipsInterpretation space, VOption *options = 0 ) const; + +/** + * Convolve with rotating mask. + * + * **Optional parameters** + * - **times** -- Rotate and convolve this many times, int. + * - **angle** -- Rotate mask by this much between convolutions, VipsAngle45. + * - **combine** -- Combine convolution results like this, VipsCombine. + * - **precision** -- Convolve with this precision, VipsPrecision. + * - **layers** -- Use this many layers in approximation, int. + * - **cluster** -- Cluster lines closer than this in approximation, int. + * + * @param mask Input matrix image. + * @param options Set of options. + * @return Output image. + */ +VImage compass( VImage mask, VOption *options = 0 ) const; + +/** + * Perform a complex operation on an image. + * @param cmplx Complex to perform. + * @param options Set of options. + * @return Output image. + */ +VImage complex( VipsOperationComplex cmplx, VOption *options = 0 ) const; + +/** + * Complex binary operations on two images. + * @param right Right-hand image argument. + * @param cmplx Binary complex operation to perform. + * @param options Set of options. + * @return Output image. + */ +VImage complex2( VImage right, VipsOperationComplex2 cmplx, VOption *options = 0 ) const; + +/** + * Form a complex image from two real images. + * @param right Right-hand image argument. + * @param options Set of options. + * @return Output image. + */ +VImage complexform( VImage right, VOption *options = 0 ) const; + +/** + * Get a component from a complex image. + * @param get Complex to perform. + * @param options Set of options. + * @return Output image. + */ +VImage complexget( VipsOperationComplexget get, VOption *options = 0 ) const; + +/** + * Blend an array of images with an array of blend modes. + * + * **Optional parameters** + * - **x** -- Array of x coordinates to join at, std::vector. + * - **y** -- Array of y coordinates to join at, std::vector. + * - **compositing_space** -- Composite images in this colour space, VipsInterpretation. + * - **premultiplied** -- Images have premultiplied alpha, bool. + * + * @param in Array of input images. + * @param mode Array of VipsBlendMode to join with. + * @param options Set of options. + * @return Output image. + */ +static VImage composite( std::vector in, std::vector mode, VOption *options = 0 ); + +/** + * Blend a pair of images with a blend mode. + * + * **Optional parameters** + * - **x** -- x position of overlay, int. + * - **y** -- y position of overlay, int. + * - **compositing_space** -- Composite images in this colour space, VipsInterpretation. + * - **premultiplied** -- Images have premultiplied alpha, bool. + * + * @param overlay Overlay image. + * @param mode VipsBlendMode to join with. + * @param options Set of options. + * @return Output image. + */ +VImage composite2( VImage overlay, VipsBlendMode mode, VOption *options = 0 ) const; + +/** + * Convolution operation. + * + * **Optional parameters** + * - **precision** -- Convolve with this precision, VipsPrecision. + * - **layers** -- Use this many layers in approximation, int. + * - **cluster** -- Cluster lines closer than this in approximation, int. + * + * @param mask Input matrix image. + * @param options Set of options. + * @return Output image. + */ +VImage conv( VImage mask, VOption *options = 0 ) const; + +/** + * Approximate integer convolution. + * + * **Optional parameters** + * - **layers** -- Use this many layers in approximation, int. + * - **cluster** -- Cluster lines closer than this in approximation, int. + * + * @param mask Input matrix image. + * @param options Set of options. + * @return Output image. + */ +VImage conva( VImage mask, VOption *options = 0 ) const; + +/** + * Approximate separable integer convolution. + * + * **Optional parameters** + * - **layers** -- Use this many layers in approximation, int. + * + * @param mask Input matrix image. + * @param options Set of options. + * @return Output image. + */ +VImage convasep( VImage mask, VOption *options = 0 ) const; + +/** + * Float convolution operation. + * @param mask Input matrix image. + * @param options Set of options. + * @return Output image. + */ +VImage convf( VImage mask, VOption *options = 0 ) const; + +/** + * Int convolution operation. + * @param mask Input matrix image. + * @param options Set of options. + * @return Output image. + */ +VImage convi( VImage mask, VOption *options = 0 ) const; + +/** + * Seperable convolution operation. + * + * **Optional parameters** + * - **precision** -- Convolve with this precision, VipsPrecision. + * - **layers** -- Use this many layers in approximation, int. + * - **cluster** -- Cluster lines closer than this in approximation, int. + * + * @param mask Input matrix image. + * @param options Set of options. + * @return Output image. + */ +VImage convsep( VImage mask, VOption *options = 0 ) const; + +/** + * Copy an image. + * + * **Optional parameters** + * - **width** -- Image width in pixels, int. + * - **height** -- Image height in pixels, int. + * - **bands** -- Number of bands in image, int. + * - **format** -- Pixel format in image, VipsBandFormat. + * - **coding** -- Pixel coding, VipsCoding. + * - **interpretation** -- Pixel interpretation, VipsInterpretation. + * - **xres** -- Horizontal resolution in pixels/mm, double. + * - **yres** -- Vertical resolution in pixels/mm, double. + * - **xoffset** -- Horizontal offset of origin, int. + * - **yoffset** -- Vertical offset of origin, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage copy( VOption *options = 0 ) const; + +/** + * Count lines in an image. + * @param direction Countlines left-right or up-down. + * @param options Set of options. + * @return Number of lines. + */ +double countlines( VipsDirection direction, VOption *options = 0 ) const; + +/** + * Extract an area from an image. + * @param left Left edge of extract area. + * @param top Top edge of extract area. + * @param width Width of extract area. + * @param height Height of extract area. + * @param options Set of options. + * @return Output image. + */ +VImage crop( int left, int top, int width, int height, VOption *options = 0 ) const; + +/** + * Load csv. + * + * **Optional parameters** + * - **skip** -- Skip this many lines at the start of the file, int. + * - **lines** -- Read this many lines from the file, int. + * - **whitespace** -- Set of whitespace characters, const char *. + * - **separator** -- Set of separator characters, const char *. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage csvload( const char *filename, VOption *options = 0 ); + +/** + * Load csv. + * + * **Optional parameters** + * - **skip** -- Skip this many lines at the start of the file, int. + * - **lines** -- Read this many lines from the file, int. + * - **whitespace** -- Set of whitespace characters, const char *. + * - **separator** -- Set of separator characters, const char *. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage csvload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to csv. + * + * **Optional parameters** + * - **separator** -- Separator characters, const char *. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void csvsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to csv. + * + * **Optional parameters** + * - **separator** -- Separator characters, const char *. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void csvsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Calculate de00. + * @param right Right-hand input image. + * @param options Set of options. + * @return Output image. + */ +VImage dE00( VImage right, VOption *options = 0 ) const; + +/** + * Calculate de76. + * @param right Right-hand input image. + * @param options Set of options. + * @return Output image. + */ +VImage dE76( VImage right, VOption *options = 0 ) const; + +/** + * Calculate decmc. + * @param right Right-hand input image. + * @param options Set of options. + * @return Output image. + */ +VImage dECMC( VImage right, VOption *options = 0 ) const; + +/** + * Find image standard deviation. + * @param options Set of options. + * @return Output value. + */ +double deviate( VOption *options = 0 ) const; + +/** + * Divide two images. + * @param right Right-hand image argument. + * @param options Set of options. + * @return Output image. + */ +VImage divide( VImage right, VOption *options = 0 ) const; + +/** + * Draw a circle on an image. + * + * **Optional parameters** + * - **fill** -- Draw a solid object, bool. + * + * @param ink Color for pixels. + * @param cx Centre of draw_circle. + * @param cy Centre of draw_circle. + * @param radius Radius in pixels. + * @param options Set of options. + */ +void draw_circle( std::vector ink, int cx, int cy, int radius, VOption *options = 0 ) const; + +/** + * Flood-fill an area. + * + * **Optional parameters** + * - **test** -- Test pixels in this image, VImage. + * - **equal** -- DrawFlood while equal to edge, bool. + * + * @param ink Color for pixels. + * @param x DrawFlood start point. + * @param y DrawFlood start point. + * @param options Set of options. + */ +void draw_flood( std::vector ink, int x, int y, VOption *options = 0 ) const; + +/** + * Paint an image into another image. + * + * **Optional parameters** + * - **mode** -- Combining mode, VipsCombineMode. + * + * @param sub Sub-image to insert into main image. + * @param x Draw image here. + * @param y Draw image here. + * @param options Set of options. + */ +void draw_image( VImage sub, int x, int y, VOption *options = 0 ) const; + +/** + * Draw a line on an image. + * @param ink Color for pixels. + * @param x1 Start of draw_line. + * @param y1 Start of draw_line. + * @param x2 End of draw_line. + * @param y2 End of draw_line. + * @param options Set of options. + */ +void draw_line( std::vector ink, int x1, int y1, int x2, int y2, VOption *options = 0 ) const; + +/** + * Draw a mask on an image. + * @param ink Color for pixels. + * @param mask Mask of pixels to draw. + * @param x Draw mask here. + * @param y Draw mask here. + * @param options Set of options. + */ +void draw_mask( std::vector ink, VImage mask, int x, int y, VOption *options = 0 ) const; + +/** + * Paint a rectangle on an image. + * + * **Optional parameters** + * - **fill** -- Draw a solid object, bool. + * + * @param ink Color for pixels. + * @param left Rect to fill. + * @param top Rect to fill. + * @param width Rect to fill. + * @param height Rect to fill. + * @param options Set of options. + */ +void draw_rect( std::vector ink, int left, int top, int width, int height, VOption *options = 0 ) const; + +/** + * Blur a rectangle on an image. + * @param left Rect to fill. + * @param top Rect to fill. + * @param width Rect to fill. + * @param height Rect to fill. + * @param options Set of options. + */ +void draw_smudge( int left, int top, int width, int height, VOption *options = 0 ) const; + +/** + * Save image to deepzoom file. + * + * **Optional parameters** + * - **basename** -- Base name to save to, const char *. + * - **layout** -- Directory layout, VipsForeignDzLayout. + * - **suffix** -- Filename suffix for tiles, const char *. + * - **overlap** -- Tile overlap in pixels, int. + * - **tile_size** -- Tile size in pixels, int. + * - **centre** -- Center image in tile, bool. + * - **depth** -- Pyramid depth, VipsForeignDzDepth. + * - **angle** -- Rotate image during save, VipsAngle. + * - **container** -- Pyramid container type, VipsForeignDzContainer. + * - **compression** -- ZIP deflate compression level, int. + * - **region_shrink** -- Method to shrink regions, VipsRegionShrink. + * - **skip_blanks** -- Skip tiles which are nearly equal to the background, int. + * - **no_strip** -- Don't strip tile metadata, bool. + * - **id** -- Resource ID, const char *. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void dzsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to dz buffer. + * + * **Optional parameters** + * - **basename** -- Base name to save to, const char *. + * - **layout** -- Directory layout, VipsForeignDzLayout. + * - **suffix** -- Filename suffix for tiles, const char *. + * - **overlap** -- Tile overlap in pixels, int. + * - **tile_size** -- Tile size in pixels, int. + * - **centre** -- Center image in tile, bool. + * - **depth** -- Pyramid depth, VipsForeignDzDepth. + * - **angle** -- Rotate image during save, VipsAngle. + * - **container** -- Pyramid container type, VipsForeignDzContainer. + * - **compression** -- ZIP deflate compression level, int. + * - **region_shrink** -- Method to shrink regions, VipsRegionShrink. + * - **skip_blanks** -- Skip tiles which are nearly equal to the background, int. + * - **no_strip** -- Don't strip tile metadata, bool. + * - **id** -- Resource ID, const char *. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *dzsave_buffer( VOption *options = 0 ) const; + +/** + * Save image to deepzoom target. + * + * **Optional parameters** + * - **basename** -- Base name to save to, const char *. + * - **layout** -- Directory layout, VipsForeignDzLayout. + * - **suffix** -- Filename suffix for tiles, const char *. + * - **overlap** -- Tile overlap in pixels, int. + * - **tile_size** -- Tile size in pixels, int. + * - **centre** -- Center image in tile, bool. + * - **depth** -- Pyramid depth, VipsForeignDzDepth. + * - **angle** -- Rotate image during save, VipsAngle. + * - **container** -- Pyramid container type, VipsForeignDzContainer. + * - **compression** -- ZIP deflate compression level, int. + * - **region_shrink** -- Method to shrink regions, VipsRegionShrink. + * - **skip_blanks** -- Skip tiles which are nearly equal to the background, int. + * - **no_strip** -- Don't strip tile metadata, bool. + * - **id** -- Resource ID, const char *. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void dzsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Embed an image in a larger image. + * + * **Optional parameters** + * - **extend** -- How to generate the extra pixels, VipsExtend. + * - **background** -- Color for background pixels, std::vector. + * + * @param x Left edge of input in output. + * @param y Top edge of input in output. + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +VImage embed( int x, int y, int width, int height, VOption *options = 0 ) const; + +/** + * Extract an area from an image. + * @param left Left edge of extract area. + * @param top Top edge of extract area. + * @param width Width of extract area. + * @param height Height of extract area. + * @param options Set of options. + * @return Output image. + */ +VImage extract_area( int left, int top, int width, int height, VOption *options = 0 ) const; + +/** + * Extract band from an image. + * + * **Optional parameters** + * - **n** -- Number of bands to extract, int. + * + * @param band Band to extract. + * @param options Set of options. + * @return Output image. + */ +VImage extract_band( int band, VOption *options = 0 ) const; + +/** + * Make an image showing the eye's spatial response. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **factor** -- Maximum spatial frequency, double. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage eye( int width, int height, VOption *options = 0 ); + +/** + * False-color an image. + * @param options Set of options. + * @return Output image. + */ +VImage falsecolour( VOption *options = 0 ) const; + +/** + * Fast correlation. + * @param ref Input reference image. + * @param options Set of options. + * @return Output image. + */ +VImage fastcor( VImage ref, VOption *options = 0 ) const; + +/** + * Fill image zeros with nearest non-zero pixel. + * @param options Set of options. + * @return Value of nearest non-zero pixel. + */ +VImage fill_nearest( VOption *options = 0 ) const; + +/** + * Search an image for non-edge areas. + * + * **Optional parameters** + * - **threshold** -- Object threshold, double. + * - **background** -- Color for background pixels, std::vector. + * + * @param top Top edge of extract area. + * @param width Width of extract area. + * @param height Height of extract area. + * @param options Set of options. + * @return Left edge of image. + */ +int find_trim( int *top, int *width, int *height, VOption *options = 0 ) const; + +/** + * Load a fits image. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage fitsload( const char *filename, VOption *options = 0 ); + +/** + * Load fits from a source. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage fitsload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to fits file. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void fitssave( const char *filename, VOption *options = 0 ) const; + +/** + * Flatten alpha out of an image. + * + * **Optional parameters** + * - **background** -- Background value, std::vector. + * - **max_alpha** -- Maximum value of alpha channel, double. + * + * @param options Set of options. + * @return Output image. + */ +VImage flatten( VOption *options = 0 ) const; + +/** + * Flip an image. + * @param direction Direction to flip image. + * @param options Set of options. + * @return Output image. + */ +VImage flip( VipsDirection direction, VOption *options = 0 ) const; + +/** + * Transform float rgb to radiance coding. + * @param options Set of options. + * @return Output image. + */ +VImage float2rad( VOption *options = 0 ) const; + +/** + * Make a fractal surface. + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param fractal_dimension Fractal dimension. + * @param options Set of options. + * @return Output image. + */ +static VImage fractsurf( int width, int height, double fractal_dimension, VOption *options = 0 ); + +/** + * Frequency-domain filtering. + * @param mask Input mask image. + * @param options Set of options. + * @return Output image. + */ +VImage freqmult( VImage mask, VOption *options = 0 ) const; + +/** + * Forward fft. + * @param options Set of options. + * @return Output image. + */ +VImage fwfft( VOption *options = 0 ) const; + +/** + * Gamma an image. + * + * **Optional parameters** + * - **exponent** -- Gamma factor, double. + * + * @param options Set of options. + * @return Output image. + */ +VImage gamma( VOption *options = 0 ) const; + +/** + * Gaussian blur. + * + * **Optional parameters** + * - **min_ampl** -- Minimum amplitude of Gaussian, double. + * - **precision** -- Convolve with this precision, VipsPrecision. + * + * @param sigma Sigma of Gaussian. + * @param options Set of options. + * @return Output image. + */ +VImage gaussblur( double sigma, VOption *options = 0 ) const; + +/** + * Make a gaussian image. + * + * **Optional parameters** + * - **separable** -- Generate separable Gaussian, bool. + * - **precision** -- Generate with this precision, VipsPrecision. + * + * @param sigma Sigma of Gaussian. + * @param min_ampl Minimum amplitude of Gaussian. + * @param options Set of options. + * @return Output image. + */ +static VImage gaussmat( double sigma, double min_ampl, VOption *options = 0 ); + +/** + * Make a gaussnoise image. + * + * **Optional parameters** + * - **sigma** -- Standard deviation of pixels in generated image, double. + * - **mean** -- Mean of pixels in generated image, double. + * - **seed** -- Random number seed, int. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage gaussnoise( int width, int height, VOption *options = 0 ); + +/** + * Read a point from an image. + * @param x Point to read. + * @param y Point to read. + * @param options Set of options. + * @return Array of output values. + */ +std::vector getpoint( int x, int y, VOption *options = 0 ) const; + +/** + * Load gif with libnsgif. + * + * **Optional parameters** + * - **n** -- Load this many pages, int. + * - **page** -- Load this page from the file, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage gifload( const char *filename, VOption *options = 0 ); + +/** + * Load gif with libnsgif. + * + * **Optional parameters** + * - **n** -- Load this many pages, int. + * - **page** -- Load this page from the file, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage gifload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load gif from source. + * + * **Optional parameters** + * - **n** -- Load this many pages, int. + * - **page** -- Load this page from the file, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage gifload_source( VSource source, VOption *options = 0 ); + +/** + * Save as gif. + * + * **Optional parameters** + * - **dither** -- Amount of dithering, double. + * - **effort** -- Quantisation effort, int. + * - **bitdepth** -- Number of bits per pixel, int. + * - **interframe_maxerror** -- Maximum inter-frame error for transparency, double. + * - **reoptimise** -- Reoptimise colour palettes, bool. + * - **interpalette_maxerror** -- Maximum inter-palette error for palette reusage, double. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void gifsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save as gif. + * + * **Optional parameters** + * - **dither** -- Amount of dithering, double. + * - **effort** -- Quantisation effort, int. + * - **bitdepth** -- Number of bits per pixel, int. + * - **interframe_maxerror** -- Maximum inter-frame error for transparency, double. + * - **reoptimise** -- Reoptimise colour palettes, bool. + * - **interpalette_maxerror** -- Maximum inter-palette error for palette reusage, double. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *gifsave_buffer( VOption *options = 0 ) const; + +/** + * Save as gif. + * + * **Optional parameters** + * - **dither** -- Amount of dithering, double. + * - **effort** -- Quantisation effort, int. + * - **bitdepth** -- Number of bits per pixel, int. + * - **interframe_maxerror** -- Maximum inter-frame error for transparency, double. + * - **reoptimise** -- Reoptimise colour palettes, bool. + * - **interpalette_maxerror** -- Maximum inter-palette error for palette reusage, double. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void gifsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Global balance an image mosaic. + * + * **Optional parameters** + * - **gamma** -- Image gamma, double. + * - **int_output** -- Integer output, bool. + * + * @param options Set of options. + * @return Output image. + */ +VImage globalbalance( VOption *options = 0 ) const; + +/** + * Place an image within a larger image with a certain gravity. + * + * **Optional parameters** + * - **extend** -- How to generate the extra pixels, VipsExtend. + * - **background** -- Color for background pixels, std::vector. + * + * @param direction Direction to place image within width/height. + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +VImage gravity( VipsCompassDirection direction, int width, int height, VOption *options = 0 ) const; + +/** + * Make a grey ramp image. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage grey( int width, int height, VOption *options = 0 ); + +/** + * Grid an image. + * @param tile_height Chop into tiles this high. + * @param across Number of tiles across. + * @param down Number of tiles down. + * @param options Set of options. + * @return Output image. + */ +VImage grid( int tile_height, int across, int down, VOption *options = 0 ) const; + +/** + * Load a heif image. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **thumbnail** -- Fetch thumbnail image, bool. + * - **unlimited** -- Remove all denial of service limits, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage heifload( const char *filename, VOption *options = 0 ); + +/** + * Load a heif image. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **thumbnail** -- Fetch thumbnail image, bool. + * - **unlimited** -- Remove all denial of service limits, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage heifload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load a heif image. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **thumbnail** -- Fetch thumbnail image, bool. + * - **unlimited** -- Remove all denial of service limits, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage heifload_source( VSource source, VOption *options = 0 ); + +/** + * Save image in heif format. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **bitdepth** -- Number of bits per pixel, int. + * - **lossless** -- Enable lossless compression, bool. + * - **compression** -- Compression format, VipsForeignHeifCompression. + * - **effort** -- CPU effort, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void heifsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image in heif format. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **bitdepth** -- Number of bits per pixel, int. + * - **lossless** -- Enable lossless compression, bool. + * - **compression** -- Compression format, VipsForeignHeifCompression. + * - **effort** -- CPU effort, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *heifsave_buffer( VOption *options = 0 ) const; + +/** + * Save image in heif format. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **bitdepth** -- Number of bits per pixel, int. + * - **lossless** -- Enable lossless compression, bool. + * - **compression** -- Compression format, VipsForeignHeifCompression. + * - **effort** -- CPU effort, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void heifsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Form cumulative histogram. + * @param options Set of options. + * @return Output image. + */ +VImage hist_cum( VOption *options = 0 ) const; + +/** + * Estimate image entropy. + * @param options Set of options. + * @return Output value. + */ +double hist_entropy( VOption *options = 0 ) const; + +/** + * Histogram equalisation. + * + * **Optional parameters** + * - **band** -- Equalise with this band, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage hist_equal( VOption *options = 0 ) const; + +/** + * Find image histogram. + * + * **Optional parameters** + * - **band** -- Find histogram of band, int. + * + * @param options Set of options. + * @return Output histogram. + */ +VImage hist_find( VOption *options = 0 ) const; + +/** + * Find indexed image histogram. + * + * **Optional parameters** + * - **combine** -- Combine bins like this, VipsCombine. + * + * @param index Index image. + * @param options Set of options. + * @return Output histogram. + */ +VImage hist_find_indexed( VImage index, VOption *options = 0 ) const; + +/** + * Find n-dimensional image histogram. + * + * **Optional parameters** + * - **bins** -- Number of bins in each dimension, int. + * + * @param options Set of options. + * @return Output histogram. + */ +VImage hist_find_ndim( VOption *options = 0 ) const; + +/** + * Test for monotonicity. + * @param options Set of options. + * @return true if in is monotonic. + */ +bool hist_ismonotonic( VOption *options = 0 ) const; + +/** + * Local histogram equalisation. + * + * **Optional parameters** + * - **max_slope** -- Maximum slope (CLAHE), int. + * + * @param width Window width in pixels. + * @param height Window height in pixels. + * @param options Set of options. + * @return Output image. + */ +VImage hist_local( int width, int height, VOption *options = 0 ) const; + +/** + * Match two histograms. + * @param ref Reference histogram. + * @param options Set of options. + * @return Output image. + */ +VImage hist_match( VImage ref, VOption *options = 0 ) const; + +/** + * Normalise histogram. + * @param options Set of options. + * @return Output image. + */ +VImage hist_norm( VOption *options = 0 ) const; + +/** + * Plot histogram. + * @param options Set of options. + * @return Output image. + */ +VImage hist_plot( VOption *options = 0 ) const; + +/** + * Find hough circle transform. + * + * **Optional parameters** + * - **scale** -- Scale down dimensions by this factor, int. + * - **min_radius** -- Smallest radius to search for, int. + * - **max_radius** -- Largest radius to search for, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage hough_circle( VOption *options = 0 ) const; + +/** + * Find hough line transform. + * + * **Optional parameters** + * - **width** -- Horizontal size of parameter space, int. + * - **height** -- Vertical size of parameter space, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage hough_line( VOption *options = 0 ) const; + +/** + * Output to device with icc profile. + * + * **Optional parameters** + * - **pcs** -- Set Profile Connection Space, VipsPCS. + * - **intent** -- Rendering intent, VipsIntent. + * - **black_point_compensation** -- Enable black point compensation, bool. + * - **output_profile** -- Filename to load output profile from, const char *. + * - **depth** -- Output device space depth in bits, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage icc_export( VOption *options = 0 ) const; + +/** + * Import from device with icc profile. + * + * **Optional parameters** + * - **pcs** -- Set Profile Connection Space, VipsPCS. + * - **intent** -- Rendering intent, VipsIntent. + * - **black_point_compensation** -- Enable black point compensation, bool. + * - **embedded** -- Use embedded input profile, if available, bool. + * - **input_profile** -- Filename to load input profile from, const char *. + * + * @param options Set of options. + * @return Output image. + */ +VImage icc_import( VOption *options = 0 ) const; + +/** + * Transform between devices with icc profiles. + * + * **Optional parameters** + * - **pcs** -- Set Profile Connection Space, VipsPCS. + * - **intent** -- Rendering intent, VipsIntent. + * - **black_point_compensation** -- Enable black point compensation, bool. + * - **embedded** -- Use embedded input profile, if available, bool. + * - **input_profile** -- Filename to load input profile from, const char *. + * - **depth** -- Output device space depth in bits, int. + * + * @param output_profile Filename to load output profile from. + * @param options Set of options. + * @return Output image. + */ +VImage icc_transform( const char *output_profile, VOption *options = 0 ) const; + +/** + * Make a 1d image where pixel values are indexes. + * + * **Optional parameters** + * - **bands** -- Number of bands in LUT, int. + * - **ushort** -- Create a 16-bit LUT, bool. + * - **size** -- Size of 16-bit LUT, int. + * + * @param options Set of options. + * @return Output image. + */ +static VImage identity( VOption *options = 0 ); + +/** + * Ifthenelse an image. + * + * **Optional parameters** + * - **blend** -- Blend smoothly between then and else parts, bool. + * + * @param in1 Source for TRUE pixels. + * @param in2 Source for FALSE pixels. + * @param options Set of options. + * @return Output image. + */ +VImage ifthenelse( VImage in1, VImage in2, VOption *options = 0 ) const; + +/** + * Insert image @sub into @main at @x, @y. + * + * **Optional parameters** + * - **expand** -- Expand output to hold all of both inputs, bool. + * - **background** -- Color for new pixels, std::vector. + * + * @param sub Sub-image to insert into main image. + * @param x Left edge of sub in main. + * @param y Top edge of sub in main. + * @param options Set of options. + * @return Output image. + */ +VImage insert( VImage sub, int x, int y, VOption *options = 0 ) const; + +/** + * Invert an image. + * @param options Set of options. + * @return Output image. + */ +VImage invert( VOption *options = 0 ) const; + +/** + * Build an inverted look-up table. + * + * **Optional parameters** + * - **size** -- LUT size to generate, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage invertlut( VOption *options = 0 ) const; + +/** + * Inverse fft. + * + * **Optional parameters** + * - **real** -- Output only the real part of the transform, bool. + * + * @param options Set of options. + * @return Output image. + */ +VImage invfft( VOption *options = 0 ) const; + +/** + * Join a pair of images. + * + * **Optional parameters** + * - **expand** -- Expand output to hold all of both inputs, bool. + * - **shim** -- Pixels between images, int. + * - **background** -- Colour for new pixels, std::vector. + * - **align** -- Align on the low, centre or high coordinate edge, VipsAlign. + * + * @param in2 Second input image. + * @param direction Join left-right or up-down. + * @param options Set of options. + * @return Output image. + */ +VImage join( VImage in2, VipsDirection direction, VOption *options = 0 ) const; + +/** + * Load jpeg2000 image. + * + * **Optional parameters** + * - **page** -- Load this page from the image, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jp2kload( const char *filename, VOption *options = 0 ); + +/** + * Load jpeg2000 image. + * + * **Optional parameters** + * - **page** -- Load this page from the image, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jp2kload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load jpeg2000 image. + * + * **Optional parameters** + * - **page** -- Load this page from the image, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jp2kload_source( VSource source, VOption *options = 0 ); + +/** + * Save image in jpeg2000 format. + * + * **Optional parameters** + * - **tile_width** -- Tile width in pixels, int. + * - **tile_height** -- Tile height in pixels, int. + * - **lossless** -- Enable lossless compression, bool. + * - **Q** -- Q factor, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to load from. + * @param options Set of options. + */ +void jp2ksave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image in jpeg2000 format. + * + * **Optional parameters** + * - **tile_width** -- Tile width in pixels, int. + * - **tile_height** -- Tile height in pixels, int. + * - **lossless** -- Enable lossless compression, bool. + * - **Q** -- Q factor, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *jp2ksave_buffer( VOption *options = 0 ) const; + +/** + * Save image in jpeg2000 format. + * + * **Optional parameters** + * - **tile_width** -- Tile width in pixels, int. + * - **tile_height** -- Tile height in pixels, int. + * - **lossless** -- Enable lossless compression, bool. + * - **Q** -- Q factor, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void jp2ksave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Load jpeg from file. + * + * **Optional parameters** + * - **shrink** -- Shrink factor on load, int. + * - **autorotate** -- Rotate image using exif orientation, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jpegload( const char *filename, VOption *options = 0 ); + +/** + * Load jpeg from buffer. + * + * **Optional parameters** + * - **shrink** -- Shrink factor on load, int. + * - **autorotate** -- Rotate image using exif orientation, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jpegload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load image from jpeg source. + * + * **Optional parameters** + * - **shrink** -- Shrink factor on load, int. + * - **autorotate** -- Rotate image using exif orientation, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jpegload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to jpeg file. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **profile** -- ICC profile to embed, const char *. + * - **optimize_coding** -- Compute optimal Huffman coding tables, bool. + * - **interlace** -- Generate an interlaced (progressive) jpeg, bool. + * - **trellis_quant** -- Apply trellis quantisation to each 8x8 block, bool. + * - **overshoot_deringing** -- Apply overshooting to samples with extreme values, bool. + * - **optimize_scans** -- Split spectrum of DCT coefficients into separate scans, bool. + * - **quant_table** -- Use predefined quantization table with given index, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **restart_interval** -- Add restart markers every specified number of mcu, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void jpegsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to jpeg buffer. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **profile** -- ICC profile to embed, const char *. + * - **optimize_coding** -- Compute optimal Huffman coding tables, bool. + * - **interlace** -- Generate an interlaced (progressive) jpeg, bool. + * - **trellis_quant** -- Apply trellis quantisation to each 8x8 block, bool. + * - **overshoot_deringing** -- Apply overshooting to samples with extreme values, bool. + * - **optimize_scans** -- Split spectrum of DCT coefficients into separate scans, bool. + * - **quant_table** -- Use predefined quantization table with given index, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **restart_interval** -- Add restart markers every specified number of mcu, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *jpegsave_buffer( VOption *options = 0 ) const; + +/** + * Save image to jpeg mime. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **profile** -- ICC profile to embed, const char *. + * - **optimize_coding** -- Compute optimal Huffman coding tables, bool. + * - **interlace** -- Generate an interlaced (progressive) jpeg, bool. + * - **trellis_quant** -- Apply trellis quantisation to each 8x8 block, bool. + * - **overshoot_deringing** -- Apply overshooting to samples with extreme values, bool. + * - **optimize_scans** -- Split spectrum of DCT coefficients into separate scans, bool. + * - **quant_table** -- Use predefined quantization table with given index, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **restart_interval** -- Add restart markers every specified number of mcu, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + */ +void jpegsave_mime( VOption *options = 0 ) const; + +/** + * Save image to jpeg target. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **profile** -- ICC profile to embed, const char *. + * - **optimize_coding** -- Compute optimal Huffman coding tables, bool. + * - **interlace** -- Generate an interlaced (progressive) jpeg, bool. + * - **trellis_quant** -- Apply trellis quantisation to each 8x8 block, bool. + * - **overshoot_deringing** -- Apply overshooting to samples with extreme values, bool. + * - **optimize_scans** -- Split spectrum of DCT coefficients into separate scans, bool. + * - **quant_table** -- Use predefined quantization table with given index, int. + * - **subsample_mode** -- Select chroma subsample operation mode, VipsForeignSubsample. + * - **restart_interval** -- Add restart markers every specified number of mcu, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void jpegsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Load jpeg-xl image. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jxlload( const char *filename, VOption *options = 0 ); + +/** + * Load jpeg-xl image. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jxlload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load jpeg-xl image. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage jxlload_source( VSource source, VOption *options = 0 ); + +/** + * Save image in jpeg-xl format. + * + * **Optional parameters** + * - **tier** -- Decode speed tier, int. + * - **distance** -- Target butteraugli distance, double. + * - **effort** -- Encoding effort, int. + * - **lossless** -- Enable lossless compression, bool. + * - **Q** -- Quality factor, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to load from. + * @param options Set of options. + */ +void jxlsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image in jpeg-xl format. + * + * **Optional parameters** + * - **tier** -- Decode speed tier, int. + * - **distance** -- Target butteraugli distance, double. + * - **effort** -- Encoding effort, int. + * - **lossless** -- Enable lossless compression, bool. + * - **Q** -- Quality factor, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *jxlsave_buffer( VOption *options = 0 ) const; + +/** + * Save image in jpeg-xl format. + * + * **Optional parameters** + * - **tier** -- Decode speed tier, int. + * - **distance** -- Target butteraugli distance, double. + * - **effort** -- Encoding effort, int. + * - **lossless** -- Enable lossless compression, bool. + * - **Q** -- Quality factor, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void jxlsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Label regions in an image. + * @param options Set of options. + * @return Mask of region labels. + */ +VImage labelregions( VOption *options = 0 ) const; + +/** + * Calculate (a * in + b). + * + * **Optional parameters** + * - **uchar** -- Output should be uchar, bool. + * + * @param a Multiply by this. + * @param b Add this. + * @param options Set of options. + * @return Output image. + */ +VImage linear( std::vector a, std::vector b, VOption *options = 0 ) const; + +/** + * Cache an image as a set of lines. + * + * **Optional parameters** + * - **tile_height** -- Tile height in pixels, int. + * - **access** -- Expected access pattern, VipsAccess. + * - **threaded** -- Allow threaded access, bool. + * - **persistent** -- Keep cache between evaluations, bool. + * + * @param options Set of options. + * @return Output image. + */ +VImage linecache( VOption *options = 0 ) const; + +/** + * Make a laplacian of gaussian image. + * + * **Optional parameters** + * - **separable** -- Generate separable Gaussian, bool. + * - **precision** -- Generate with this precision, VipsPrecision. + * + * @param sigma Radius of Gaussian. + * @param min_ampl Minimum amplitude of Gaussian. + * @param options Set of options. + * @return Output image. + */ +static VImage logmat( double sigma, double min_ampl, VOption *options = 0 ); + +/** + * Load file with imagemagick. + * + * **Optional parameters** + * - **density** -- Canvas resolution for rendering vector formats like SVG, const char *. + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage magickload( const char *filename, VOption *options = 0 ); + +/** + * Load buffer with imagemagick. + * + * **Optional parameters** + * - **density** -- Canvas resolution for rendering vector formats like SVG, const char *. + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage magickload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Save file with imagemagick. + * + * **Optional parameters** + * - **format** -- Format to save in, const char *. + * - **quality** -- Quality to use, int. + * - **optimize_gif_frames** -- Apply GIF frames optimization, bool. + * - **optimize_gif_transparency** -- Apply GIF transparency optimization, bool. + * - **bitdepth** -- Number of bits per pixel, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void magicksave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to magick buffer. + * + * **Optional parameters** + * - **format** -- Format to save in, const char *. + * - **quality** -- Quality to use, int. + * - **optimize_gif_frames** -- Apply GIF frames optimization, bool. + * - **optimize_gif_transparency** -- Apply GIF transparency optimization, bool. + * - **bitdepth** -- Number of bits per pixel, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *magicksave_buffer( VOption *options = 0 ) const; + +/** + * Resample with a map image. + * + * **Optional parameters** + * - **interpolate** -- Interpolate pixels with this, VInterpolate. + * - **background** -- Background value, std::vector. + * - **premultiplied** -- Images have premultiplied alpha, bool. + * - **extend** -- How to generate the extra pixels, VipsExtend. + * + * @param index Index pixels with this. + * @param options Set of options. + * @return Output image. + */ +VImage mapim( VImage index, VOption *options = 0 ) const; + +/** + * Map an image though a lut. + * + * **Optional parameters** + * - **band** -- Apply one-band lut to this band of in, int. + * + * @param lut Look-up table image. + * @param options Set of options. + * @return Output image. + */ +VImage maplut( VImage lut, VOption *options = 0 ) const; + +/** + * Make a butterworth filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param order Filter order. + * @param frequency_cutoff Frequency cutoff. + * @param amplitude_cutoff Amplitude cutoff. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_butterworth( int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, VOption *options = 0 ); + +/** + * Make a butterworth_band filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param order Filter order. + * @param frequency_cutoff_x Frequency cutoff x. + * @param frequency_cutoff_y Frequency cutoff y. + * @param radius Radius of circle. + * @param amplitude_cutoff Amplitude cutoff. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_butterworth_band( int width, int height, double order, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, VOption *options = 0 ); + +/** + * Make a butterworth ring filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param order Filter order. + * @param frequency_cutoff Frequency cutoff. + * @param amplitude_cutoff Amplitude cutoff. + * @param ringwidth Ringwidth. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_butterworth_ring( int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, double ringwidth, VOption *options = 0 ); + +/** + * Make fractal filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param fractal_dimension Fractal dimension. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_fractal( int width, int height, double fractal_dimension, VOption *options = 0 ); + +/** + * Make a gaussian filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param frequency_cutoff Frequency cutoff. + * @param amplitude_cutoff Amplitude cutoff. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_gaussian( int width, int height, double frequency_cutoff, double amplitude_cutoff, VOption *options = 0 ); + +/** + * Make a gaussian filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param frequency_cutoff_x Frequency cutoff x. + * @param frequency_cutoff_y Frequency cutoff y. + * @param radius Radius of circle. + * @param amplitude_cutoff Amplitude cutoff. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_gaussian_band( int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, VOption *options = 0 ); + +/** + * Make a gaussian ring filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param frequency_cutoff Frequency cutoff. + * @param amplitude_cutoff Amplitude cutoff. + * @param ringwidth Ringwidth. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_gaussian_ring( int width, int height, double frequency_cutoff, double amplitude_cutoff, double ringwidth, VOption *options = 0 ); + +/** + * Make an ideal filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param frequency_cutoff Frequency cutoff. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_ideal( int width, int height, double frequency_cutoff, VOption *options = 0 ); + +/** + * Make an ideal band filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param frequency_cutoff_x Frequency cutoff x. + * @param frequency_cutoff_y Frequency cutoff y. + * @param radius Radius of circle. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_ideal_band( int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, VOption *options = 0 ); + +/** + * Make an ideal ring filter. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **nodc** -- Remove DC component, bool. + * - **reject** -- Invert the sense of the filter, bool. + * - **optical** -- Rotate quadrants to optical space, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param frequency_cutoff Frequency cutoff. + * @param ringwidth Ringwidth. + * @param options Set of options. + * @return Output image. + */ +static VImage mask_ideal_ring( int width, int height, double frequency_cutoff, double ringwidth, VOption *options = 0 ); + +/** + * First-order match of two images. + * + * **Optional parameters** + * - **hwindow** -- Half window size, int. + * - **harea** -- Half area size, int. + * - **search** -- Search to improve tie-points, bool. + * - **interpolate** -- Interpolate pixels with this, VInterpolate. + * + * @param sec Secondary image. + * @param xr1 Position of first reference tie-point. + * @param yr1 Position of first reference tie-point. + * @param xs1 Position of first secondary tie-point. + * @param ys1 Position of first secondary tie-point. + * @param xr2 Position of second reference tie-point. + * @param yr2 Position of second reference tie-point. + * @param xs2 Position of second secondary tie-point. + * @param ys2 Position of second secondary tie-point. + * @param options Set of options. + * @return Output image. + */ +VImage match( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, VOption *options = 0 ) const; + +/** + * Apply a math operation to an image. + * @param math Math to perform. + * @param options Set of options. + * @return Output image. + */ +VImage math( VipsOperationMath math, VOption *options = 0 ) const; + +/** + * Binary math operations. + * @param right Right-hand image argument. + * @param math2 Math to perform. + * @param options Set of options. + * @return Output image. + */ +VImage math2( VImage right, VipsOperationMath2 math2, VOption *options = 0 ) const; + +/** + * Binary math operations with a constant. + * @param math2 Math to perform. + * @param c Array of constants. + * @param options Set of options. + * @return Output image. + */ +VImage math2_const( VipsOperationMath2 math2, std::vector c, VOption *options = 0 ) const; + +/** + * Load mat from file. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage matload( const char *filename, VOption *options = 0 ); + +/** + * Invert an matrix. + * @param options Set of options. + * @return Output matrix. + */ +VImage matrixinvert( VOption *options = 0 ) const; + +/** + * Load matrix. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage matrixload( const char *filename, VOption *options = 0 ); + +/** + * Load matrix. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage matrixload_source( VSource source, VOption *options = 0 ); + +/** + * Print matrix. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + */ +void matrixprint( VOption *options = 0 ) const; + +/** + * Save image to matrix. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void matrixsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to matrix. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void matrixsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Find image maximum. + * + * **Optional parameters** + * - **size** -- Number of maximum values to find, int. + * + * @param options Set of options. + * @return Output value. + */ +double max( VOption *options = 0 ) const; + +/** + * Measure a set of patches on a color chart. + * + * **Optional parameters** + * - **left** -- Left edge of extract area, int. + * - **top** -- Top edge of extract area, int. + * - **width** -- Width of extract area, int. + * - **height** -- Height of extract area, int. + * + * @param h Number of patches across chart. + * @param v Number of patches down chart. + * @param options Set of options. + * @return Output array of statistics. + */ +VImage measure( int h, int v, VOption *options = 0 ) const; + +/** + * Merge two images. + * + * **Optional parameters** + * - **mblend** -- Maximum blend size, int. + * + * @param sec Secondary image. + * @param direction Horizontal or vertical merge. + * @param dx Horizontal displacement from sec to ref. + * @param dy Vertical displacement from sec to ref. + * @param options Set of options. + * @return Output image. + */ +VImage merge( VImage sec, VipsDirection direction, int dx, int dy, VOption *options = 0 ) const; + +/** + * Find image minimum. + * + * **Optional parameters** + * - **size** -- Number of minimum values to find, int. + * + * @param options Set of options. + * @return Output value. + */ +double min( VOption *options = 0 ) const; + +/** + * Morphology operation. + * @param mask Input matrix image. + * @param morph Morphological operation to perform. + * @param options Set of options. + * @return Output image. + */ +VImage morph( VImage mask, VipsOperationMorphology morph, VOption *options = 0 ) const; + +/** + * Mosaic two images. + * + * **Optional parameters** + * - **hwindow** -- Half window size, int. + * - **harea** -- Half area size, int. + * - **mblend** -- Maximum blend size, int. + * - **bandno** -- Band to search for features on, int. + * + * @param sec Secondary image. + * @param direction Horizontal or vertical mosaic. + * @param xref Position of reference tie-point. + * @param yref Position of reference tie-point. + * @param xsec Position of secondary tie-point. + * @param ysec Position of secondary tie-point. + * @param options Set of options. + * @return Output image. + */ +VImage mosaic( VImage sec, VipsDirection direction, int xref, int yref, int xsec, int ysec, VOption *options = 0 ) const; + +/** + * First-order mosaic of two images. + * + * **Optional parameters** + * - **hwindow** -- Half window size, int. + * - **harea** -- Half area size, int. + * - **search** -- Search to improve tie-points, bool. + * - **interpolate** -- Interpolate pixels with this, VInterpolate. + * - **mblend** -- Maximum blend size, int. + * + * @param sec Secondary image. + * @param direction Horizontal or vertical mosaic. + * @param xr1 Position of first reference tie-point. + * @param yr1 Position of first reference tie-point. + * @param xs1 Position of first secondary tie-point. + * @param ys1 Position of first secondary tie-point. + * @param xr2 Position of second reference tie-point. + * @param yr2 Position of second reference tie-point. + * @param xs2 Position of second secondary tie-point. + * @param ys2 Position of second secondary tie-point. + * @param options Set of options. + * @return Output image. + */ +VImage mosaic1( VImage sec, VipsDirection direction, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, VOption *options = 0 ) const; + +/** + * Pick most-significant byte from an image. + * + * **Optional parameters** + * - **band** -- Band to msb, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage msb( VOption *options = 0 ) const; + +/** + * Multiply two images. + * @param right Right-hand image argument. + * @param options Set of options. + * @return Output image. + */ +VImage multiply( VImage right, VOption *options = 0 ) const; + +/** + * Load nifti volume. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage niftiload( const char *filename, VOption *options = 0 ); + +/** + * Load nifti volumes. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage niftiload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to nifti file. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void niftisave( const char *filename, VOption *options = 0 ) const; + +/** + * Load an openexr image. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage openexrload( const char *filename, VOption *options = 0 ); + +/** + * Load file with openslide. + * + * **Optional parameters** + * - **attach_associated** -- Attach all associated images, bool. + * - **level** -- Load this level from the file, int. + * - **autocrop** -- Crop to image bounds, bool. + * - **associated** -- Load this associated image, const char *. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage openslideload( const char *filename, VOption *options = 0 ); + +/** + * Load source with openslide. + * + * **Optional parameters** + * - **attach_associated** -- Attach all associated images, bool. + * - **level** -- Load this level from the file, int. + * - **autocrop** -- Crop to image bounds, bool. + * - **associated** -- Load this associated image, const char *. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage openslideload_source( VSource source, VOption *options = 0 ); + +/** + * Load pdf from file. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **dpi** -- Render at this DPI, double. + * - **scale** -- Scale output by this factor, double. + * - **background** -- Background value, std::vector. + * - **password** -- Decrypt with this password, const char *. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage pdfload( const char *filename, VOption *options = 0 ); + +/** + * Load pdf from buffer. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **dpi** -- Render at this DPI, double. + * - **scale** -- Scale output by this factor, double. + * - **background** -- Background value, std::vector. + * - **password** -- Decrypt with this password, const char *. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage pdfload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load pdf from source. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **dpi** -- Render at this DPI, double. + * - **scale** -- Scale output by this factor, double. + * - **background** -- Background value, std::vector. + * - **password** -- Decrypt with this password, const char *. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage pdfload_source( VSource source, VOption *options = 0 ); + +/** + * Find threshold for percent of pixels. + * @param percent Percent of pixels. + * @param options Set of options. + * @return Threshold above which lie percent of pixels. + */ +int percent( double percent, VOption *options = 0 ) const; + +/** + * Make a perlin noise image. + * + * **Optional parameters** + * - **cell_size** -- Size of Perlin cells, int. + * - **uchar** -- Output an unsigned char image, bool. + * - **seed** -- Random number seed, int. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage perlin( int width, int height, VOption *options = 0 ); + +/** + * Calculate phase correlation. + * @param in2 Second input image. + * @param options Set of options. + * @return Output image. + */ +VImage phasecor( VImage in2, VOption *options = 0 ) const; + +/** + * Load png from file. + * + * **Optional parameters** + * - **unlimited** -- Remove all denial of service limits, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage pngload( const char *filename, VOption *options = 0 ); + +/** + * Load png from buffer. + * + * **Optional parameters** + * - **unlimited** -- Remove all denial of service limits, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage pngload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load png from source. + * + * **Optional parameters** + * - **unlimited** -- Remove all denial of service limits, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage pngload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to file as png. + * + * **Optional parameters** + * - **compression** -- Compression factor, int. + * - **interlace** -- Interlace image, bool. + * - **profile** -- ICC profile to embed, const char *. + * - **filter** -- libspng row filter flag(s), int. + * - **palette** -- Quantise to 8bpp palette, bool. + * - **Q** -- Quantisation quality, int. + * - **dither** -- Amount of dithering, double. + * - **bitdepth** -- Write as a 1, 2, 4, 8 or 16 bit image, int. + * - **effort** -- Quantisation CPU effort, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void pngsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to buffer as png. + * + * **Optional parameters** + * - **compression** -- Compression factor, int. + * - **interlace** -- Interlace image, bool. + * - **profile** -- ICC profile to embed, const char *. + * - **filter** -- libspng row filter flag(s), int. + * - **palette** -- Quantise to 8bpp palette, bool. + * - **Q** -- Quantisation quality, int. + * - **dither** -- Amount of dithering, double. + * - **bitdepth** -- Write as a 1, 2, 4, 8 or 16 bit image, int. + * - **effort** -- Quantisation CPU effort, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *pngsave_buffer( VOption *options = 0 ) const; + +/** + * Save image to target as png. + * + * **Optional parameters** + * - **compression** -- Compression factor, int. + * - **interlace** -- Interlace image, bool. + * - **profile** -- ICC profile to embed, const char *. + * - **filter** -- libspng row filter flag(s), int. + * - **palette** -- Quantise to 8bpp palette, bool. + * - **Q** -- Quantisation quality, int. + * - **dither** -- Amount of dithering, double. + * - **bitdepth** -- Write as a 1, 2, 4, 8 or 16 bit image, int. + * - **effort** -- Quantisation CPU effort, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void pngsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Load ppm from file. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage ppmload( const char *filename, VOption *options = 0 ); + +/** + * Load ppm base class. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage ppmload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to ppm file. + * + * **Optional parameters** + * - **format** -- Format to save in, VipsForeignPpmFormat. + * - **ascii** -- Save as ascii, bool. + * - **bitdepth** -- Set to 1 to write as a 1 bit image, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void ppmsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save to ppm. + * + * **Optional parameters** + * - **format** -- Format to save in, VipsForeignPpmFormat. + * - **ascii** -- Save as ascii, bool. + * - **bitdepth** -- Set to 1 to write as a 1 bit image, int. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void ppmsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Premultiply image alpha. + * + * **Optional parameters** + * - **max_alpha** -- Maximum value of alpha channel, double. + * + * @param options Set of options. + * @return Output image. + */ +VImage premultiply( VOption *options = 0 ) const; + +/** + * Find image profiles. + * @param rows First non-zero pixel in row. + * @param options Set of options. + * @return First non-zero pixel in column. + */ +VImage profile( VImage *rows, VOption *options = 0 ) const; + +/** + * Load named icc profile. + * @param name Profile name. + * @param options Set of options. + * @return Loaded profile. + */ +static VipsBlob *profile_load( const char *name, VOption *options = 0 ); + +/** + * Find image projections. + * @param rows Sums of rows. + * @param options Set of options. + * @return Sums of columns. + */ +VImage project( VImage *rows, VOption *options = 0 ) const; + +/** + * Resample an image with a quadratic transform. + * + * **Optional parameters** + * - **interpolate** -- Interpolate values with this, VInterpolate. + * + * @param coeff Coefficient matrix. + * @param options Set of options. + * @return Output image. + */ +VImage quadratic( VImage coeff, VOption *options = 0 ) const; + +/** + * Unpack radiance coding to float rgb. + * @param options Set of options. + * @return Output image. + */ +VImage rad2float( VOption *options = 0 ) const; + +/** + * Load a radiance image from a file. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage radload( const char *filename, VOption *options = 0 ); + +/** + * Load rad from buffer. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage radload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load rad from source. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage radload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to radiance file. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void radsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to radiance buffer. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *radsave_buffer( VOption *options = 0 ) const; + +/** + * Save image to radiance target. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void radsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Rank filter. + * @param width Window width in pixels. + * @param height Window height in pixels. + * @param index Select pixel at index. + * @param options Set of options. + * @return Output image. + */ +VImage rank( int width, int height, int index, VOption *options = 0 ) const; + +/** + * Load raw data from a file. + * + * **Optional parameters** + * - **offset** -- Offset in bytes from start of file, guint64. + * - **format** -- Pixel format in image, VipsBandFormat. + * - **interpretation** -- Pixel interpretation, VipsInterpretation. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param bands Number of bands in image. + * @param options Set of options. + * @return Output image. + */ +static VImage rawload( const char *filename, int width, int height, int bands, VOption *options = 0 ); + +/** + * Save image to raw file. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void rawsave( const char *filename, VOption *options = 0 ) const; + +/** + * Write raw image to file descriptor. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param fd File descriptor to write to. + * @param options Set of options. + */ +void rawsave_fd( int fd, VOption *options = 0 ) const; + +/** + * Linear recombination with matrix. + * @param m Matrix of coefficients. + * @param options Set of options. + * @return Output image. + */ +VImage recomb( VImage m, VOption *options = 0 ) const; + +/** + * Reduce an image. + * + * **Optional parameters** + * - **kernel** -- Resampling kernel, VipsKernel. + * - **gap** -- Reducing gap, double. + * + * @param hshrink Horizontal shrink factor. + * @param vshrink Vertical shrink factor. + * @param options Set of options. + * @return Output image. + */ +VImage reduce( double hshrink, double vshrink, VOption *options = 0 ) const; + +/** + * Shrink an image horizontally. + * + * **Optional parameters** + * - **kernel** -- Resampling kernel, VipsKernel. + * - **gap** -- Reducing gap, double. + * + * @param hshrink Horizontal shrink factor. + * @param options Set of options. + * @return Output image. + */ +VImage reduceh( double hshrink, VOption *options = 0 ) const; + +/** + * Shrink an image vertically. + * + * **Optional parameters** + * - **kernel** -- Resampling kernel, VipsKernel. + * - **gap** -- Reducing gap, double. + * + * @param vshrink Vertical shrink factor. + * @param options Set of options. + * @return Output image. + */ +VImage reducev( double vshrink, VOption *options = 0 ) const; + +/** + * Relational operation on two images. + * @param right Right-hand image argument. + * @param relational Relational to perform. + * @param options Set of options. + * @return Output image. + */ +VImage relational( VImage right, VipsOperationRelational relational, VOption *options = 0 ) const; + +/** + * Relational operations against a constant. + * @param relational Relational to perform. + * @param c Array of constants. + * @param options Set of options. + * @return Output image. + */ +VImage relational_const( VipsOperationRelational relational, std::vector c, VOption *options = 0 ) const; + +/** + * Remainder after integer division of two images. + * @param right Right-hand image argument. + * @param options Set of options. + * @return Output image. + */ +VImage remainder( VImage right, VOption *options = 0 ) const; + +/** + * Remainder after integer division of an image and a constant. + * @param c Array of constants. + * @param options Set of options. + * @return Output image. + */ +VImage remainder_const( std::vector c, VOption *options = 0 ) const; + +/** + * Replicate an image. + * @param across Repeat this many times horizontally. + * @param down Repeat this many times vertically. + * @param options Set of options. + * @return Output image. + */ +VImage replicate( int across, int down, VOption *options = 0 ) const; + +/** + * Resize an image. + * + * **Optional parameters** + * - **kernel** -- Resampling kernel, VipsKernel. + * - **gap** -- Reducing gap, double. + * - **vscale** -- Vertical scale image by this factor, double. + * + * @param scale Scale image by this factor. + * @param options Set of options. + * @return Output image. + */ +VImage resize( double scale, VOption *options = 0 ) const; + +/** + * Rotate an image. + * @param angle Angle to rotate image. + * @param options Set of options. + * @return Output image. + */ +VImage rot( VipsAngle angle, VOption *options = 0 ) const; + +/** + * Rotate an image. + * + * **Optional parameters** + * - **angle** -- Angle to rotate image, VipsAngle45. + * + * @param options Set of options. + * @return Output image. + */ +VImage rot45( VOption *options = 0 ) const; + +/** + * Rotate an image by a number of degrees. + * + * **Optional parameters** + * - **interpolate** -- Interpolate pixels with this, VInterpolate. + * - **background** -- Background value, std::vector. + * - **odx** -- Horizontal output displacement, double. + * - **ody** -- Vertical output displacement, double. + * - **idx** -- Horizontal input displacement, double. + * - **idy** -- Vertical input displacement, double. + * + * @param angle Rotate anticlockwise by this many degrees. + * @param options Set of options. + * @return Output image. + */ +VImage rotate( double angle, VOption *options = 0 ) const; + +/** + * Perform a round function on an image. + * @param round Rounding operation to perform. + * @param options Set of options. + * @return Output image. + */ +VImage round( VipsOperationRound round, VOption *options = 0 ) const; + +/** + * Transform srgb to hsv. + * @param options Set of options. + * @return Output image. + */ +VImage sRGB2HSV( VOption *options = 0 ) const; + +/** + * Convert an srgb image to scrgb. + * @param options Set of options. + * @return Output image. + */ +VImage sRGB2scRGB( VOption *options = 0 ) const; + +/** + * Convert scrgb to bw. + * + * **Optional parameters** + * - **depth** -- Output device space depth in bits, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage scRGB2BW( VOption *options = 0 ) const; + +/** + * Transform scrgb to xyz. + * @param options Set of options. + * @return Output image. + */ +VImage scRGB2XYZ( VOption *options = 0 ) const; + +/** + * Convert an scrgb image to srgb. + * + * **Optional parameters** + * - **depth** -- Output device space depth in bits, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage scRGB2sRGB( VOption *options = 0 ) const; + +/** + * Scale an image to uchar. + * + * **Optional parameters** + * - **exp** -- Exponent for log scale, double. + * - **log** -- Log scale, bool. + * + * @param options Set of options. + * @return Output image. + */ +VImage scale( VOption *options = 0 ) const; + +/** + * Check sequential access. + * + * **Optional parameters** + * - **tile_height** -- Tile height in pixels, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage sequential( VOption *options = 0 ) const; + +/** + * Unsharp masking for print. + * + * **Optional parameters** + * - **sigma** -- Sigma of Gaussian, double. + * - **x1** -- Flat/jaggy threshold, double. + * - **y2** -- Maximum brightening, double. + * - **y3** -- Maximum darkening, double. + * - **m1** -- Slope for flat areas, double. + * - **m2** -- Slope for jaggy areas, double. + * + * @param options Set of options. + * @return Output image. + */ +VImage sharpen( VOption *options = 0 ) const; + +/** + * Shrink an image. + * + * **Optional parameters** + * - **ceil** -- Round-up output dimensions, bool. + * + * @param hshrink Horizontal shrink factor. + * @param vshrink Vertical shrink factor. + * @param options Set of options. + * @return Output image. + */ +VImage shrink( double hshrink, double vshrink, VOption *options = 0 ) const; + +/** + * Shrink an image horizontally. + * + * **Optional parameters** + * - **ceil** -- Round-up output dimensions, bool. + * + * @param hshrink Horizontal shrink factor. + * @param options Set of options. + * @return Output image. + */ +VImage shrinkh( int hshrink, VOption *options = 0 ) const; + +/** + * Shrink an image vertically. + * + * **Optional parameters** + * - **ceil** -- Round-up output dimensions, bool. + * + * @param vshrink Vertical shrink factor. + * @param options Set of options. + * @return Output image. + */ +VImage shrinkv( int vshrink, VOption *options = 0 ) const; + +/** + * Unit vector of pixel. + * @param options Set of options. + * @return Output image. + */ +VImage sign( VOption *options = 0 ) const; + +/** + * Similarity transform of an image. + * + * **Optional parameters** + * - **scale** -- Scale by this factor, double. + * - **angle** -- Rotate anticlockwise by this many degrees, double. + * - **interpolate** -- Interpolate pixels with this, VInterpolate. + * - **background** -- Background value, std::vector. + * - **odx** -- Horizontal output displacement, double. + * - **ody** -- Vertical output displacement, double. + * - **idx** -- Horizontal input displacement, double. + * - **idy** -- Vertical input displacement, double. + * + * @param options Set of options. + * @return Output image. + */ +VImage similarity( VOption *options = 0 ) const; + +/** + * Make a 2d sine wave. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * - **hfreq** -- Horizontal spatial frequency, double. + * - **vfreq** -- Vertical spatial frequency, double. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage sines( int width, int height, VOption *options = 0 ); + +/** + * Extract an area from an image. + * + * **Optional parameters** + * - **interesting** -- How to measure interestingness, VipsInteresting. + * + * @param width Width of extract area. + * @param height Height of extract area. + * @param options Set of options. + * @return Output image. + */ +VImage smartcrop( int width, int height, VOption *options = 0 ) const; + +/** + * Sobel edge detector. + * @param options Set of options. + * @return Output image. + */ +VImage sobel( VOption *options = 0 ) const; + +/** + * Spatial correlation. + * @param ref Input reference image. + * @param options Set of options. + * @return Output image. + */ +VImage spcor( VImage ref, VOption *options = 0 ) const; + +/** + * Make displayable power spectrum. + * @param options Set of options. + * @return Output image. + */ +VImage spectrum( VOption *options = 0 ) const; + +/** + * Find many image stats. + * @param options Set of options. + * @return Output array of statistics. + */ +VImage stats( VOption *options = 0 ) const; + +/** + * Statistical difference. + * + * **Optional parameters** + * - **s0** -- New deviation, double. + * - **b** -- Weight of new deviation, double. + * - **m0** -- New mean, double. + * - **a** -- Weight of new mean, double. + * + * @param width Window width in pixels. + * @param height Window height in pixels. + * @param options Set of options. + * @return Output image. + */ +VImage stdif( int width, int height, VOption *options = 0 ) const; + +/** + * Subsample an image. + * + * **Optional parameters** + * - **point** -- Point sample, bool. + * + * @param xfac Horizontal subsample factor. + * @param yfac Vertical subsample factor. + * @param options Set of options. + * @return Output image. + */ +VImage subsample( int xfac, int yfac, VOption *options = 0 ) const; + +/** + * Subtract two images. + * @param right Right-hand image argument. + * @param options Set of options. + * @return Output image. + */ +VImage subtract( VImage right, VOption *options = 0 ) const; + +/** + * Sum an array of images. + * @param in Array of input images. + * @param options Set of options. + * @return Output image. + */ +static VImage sum( std::vector in, VOption *options = 0 ); + +/** + * Load svg with rsvg. + * + * **Optional parameters** + * - **dpi** -- Render at this DPI, double. + * - **scale** -- Scale output by this factor, double. + * - **unlimited** -- Allow SVG of any size, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage svgload( const char *filename, VOption *options = 0 ); + +/** + * Load svg with rsvg. + * + * **Optional parameters** + * - **dpi** -- Render at this DPI, double. + * - **scale** -- Scale output by this factor, double. + * - **unlimited** -- Allow SVG of any size, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage svgload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load svg from source. + * + * **Optional parameters** + * - **dpi** -- Render at this DPI, double. + * - **scale** -- Scale output by this factor, double. + * - **unlimited** -- Allow SVG of any size, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage svgload_source( VSource source, VOption *options = 0 ); + +/** + * Find the index of the first non-zero pixel in tests. + * @param tests Table of images to test. + * @param options Set of options. + * @return Output image. + */ +static VImage switch_image( std::vector tests, VOption *options = 0 ); + +/** + * Run an external command. + * + * **Optional parameters** + * - **in** -- Array of input images, std::vector. + * - **out_format** -- Format for output filename, const char *. + * - **in_format** -- Format for input filename, const char *. + * + * @param cmd_format Command to run. + * @param options Set of options. + */ +static void system( const char *cmd_format, VOption *options = 0 ); + +/** + * Make a text image. + * + * **Optional parameters** + * - **font** -- Font to render with, const char *. + * - **width** -- Maximum image width in pixels, int. + * - **height** -- Maximum image height in pixels, int. + * - **align** -- Align on the low, centre or high edge, VipsAlign. + * - **rgba** -- Enable RGBA output, bool. + * - **dpi** -- DPI to render at, int. + * - **justify** -- Justify lines, bool. + * - **spacing** -- Line spacing, int. + * - **fontfile** -- Load this font file, const char *. + * + * @param text Text to render. + * @param options Set of options. + * @return Output image. + */ +static VImage text( const char *text, VOption *options = 0 ); + +/** + * Generate thumbnail from file. + * + * **Optional parameters** + * - **height** -- Size to this height, int. + * - **size** -- Only upsize, only downsize, or both, VipsSize. + * - **no_rotate** -- Don't use orientation tags to rotate image upright, bool. + * - **crop** -- Reduce to fill target rectangle, then crop, VipsInteresting. + * - **linear** -- Reduce in linear light, bool. + * - **import_profile** -- Fallback import profile, const char *. + * - **export_profile** -- Fallback export profile, const char *. + * - **intent** -- Rendering intent, VipsIntent. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to read from. + * @param width Size to this width. + * @param options Set of options. + * @return Output image. + */ +static VImage thumbnail( const char *filename, int width, VOption *options = 0 ); + +/** + * Generate thumbnail from buffer. + * + * **Optional parameters** + * - **option_string** -- Options that are passed on to the underlying loader, const char *. + * - **height** -- Size to this height, int. + * - **size** -- Only upsize, only downsize, or both, VipsSize. + * - **no_rotate** -- Don't use orientation tags to rotate image upright, bool. + * - **crop** -- Reduce to fill target rectangle, then crop, VipsInteresting. + * - **linear** -- Reduce in linear light, bool. + * - **import_profile** -- Fallback import profile, const char *. + * - **export_profile** -- Fallback export profile, const char *. + * - **intent** -- Rendering intent, VipsIntent. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param width Size to this width. + * @param options Set of options. + * @return Output image. + */ +static VImage thumbnail_buffer( VipsBlob *buffer, int width, VOption *options = 0 ); + +/** + * Generate thumbnail from image. + * + * **Optional parameters** + * - **height** -- Size to this height, int. + * - **size** -- Only upsize, only downsize, or both, VipsSize. + * - **no_rotate** -- Don't use orientation tags to rotate image upright, bool. + * - **crop** -- Reduce to fill target rectangle, then crop, VipsInteresting. + * - **linear** -- Reduce in linear light, bool. + * - **import_profile** -- Fallback import profile, const char *. + * - **export_profile** -- Fallback export profile, const char *. + * - **intent** -- Rendering intent, VipsIntent. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param width Size to this width. + * @param options Set of options. + * @return Output image. + */ +VImage thumbnail_image( int width, VOption *options = 0 ) const; + +/** + * Generate thumbnail from source. + * + * **Optional parameters** + * - **option_string** -- Options that are passed on to the underlying loader, const char *. + * - **height** -- Size to this height, int. + * - **size** -- Only upsize, only downsize, or both, VipsSize. + * - **no_rotate** -- Don't use orientation tags to rotate image upright, bool. + * - **crop** -- Reduce to fill target rectangle, then crop, VipsInteresting. + * - **linear** -- Reduce in linear light, bool. + * - **import_profile** -- Fallback import profile, const char *. + * - **export_profile** -- Fallback export profile, const char *. + * - **intent** -- Rendering intent, VipsIntent. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param width Size to this width. + * @param options Set of options. + * @return Output image. + */ +static VImage thumbnail_source( VSource source, int width, VOption *options = 0 ); + +/** + * Load tiff from file. + * + * **Optional parameters** + * - **page** -- Load this page from the image, int. + * - **subifd** -- Select subifd index, int. + * - **n** -- Load this many pages, int. + * - **autorotate** -- Rotate image using orientation tag, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage tiffload( const char *filename, VOption *options = 0 ); + +/** + * Load tiff from buffer. + * + * **Optional parameters** + * - **page** -- Load this page from the image, int. + * - **subifd** -- Select subifd index, int. + * - **n** -- Load this many pages, int. + * - **autorotate** -- Rotate image using orientation tag, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage tiffload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load tiff from source. + * + * **Optional parameters** + * - **page** -- Load this page from the image, int. + * - **subifd** -- Select subifd index, int. + * - **n** -- Load this many pages, int. + * - **autorotate** -- Rotate image using orientation tag, bool. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage tiffload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to tiff file. + * + * **Optional parameters** + * - **compression** -- Compression for this file, VipsForeignTiffCompression. + * - **Q** -- Q factor, int. + * - **predictor** -- Compression prediction, VipsForeignTiffPredictor. + * - **profile** -- ICC profile to embed, const char *. + * - **tile** -- Write a tiled tiff, bool. + * - **tile_width** -- Tile width in pixels, int. + * - **tile_height** -- Tile height in pixels, int. + * - **pyramid** -- Write a pyramidal tiff, bool. + * - **miniswhite** -- Use 0 for white in 1-bit images, bool. + * - **bitdepth** -- Write as a 1, 2, 4 or 8 bit image, int. + * - **resunit** -- Resolution unit, VipsForeignTiffResunit. + * - **xres** -- Horizontal resolution in pixels/mm, double. + * - **yres** -- Vertical resolution in pixels/mm, double. + * - **bigtiff** -- Write a bigtiff image, bool. + * - **properties** -- Write a properties document to IMAGEDESCRIPTION, bool. + * - **region_shrink** -- Method to shrink regions, VipsRegionShrink. + * - **level** -- ZSTD compression level, int. + * - **lossless** -- Enable WEBP lossless mode, bool. + * - **depth** -- Pyramid depth, VipsForeignDzDepth. + * - **subifd** -- Save pyr layers as sub-IFDs, bool. + * - **premultiply** -- Save with premultiplied alpha, bool. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void tiffsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to tiff buffer. + * + * **Optional parameters** + * - **compression** -- Compression for this file, VipsForeignTiffCompression. + * - **Q** -- Q factor, int. + * - **predictor** -- Compression prediction, VipsForeignTiffPredictor. + * - **profile** -- ICC profile to embed, const char *. + * - **tile** -- Write a tiled tiff, bool. + * - **tile_width** -- Tile width in pixels, int. + * - **tile_height** -- Tile height in pixels, int. + * - **pyramid** -- Write a pyramidal tiff, bool. + * - **miniswhite** -- Use 0 for white in 1-bit images, bool. + * - **bitdepth** -- Write as a 1, 2, 4 or 8 bit image, int. + * - **resunit** -- Resolution unit, VipsForeignTiffResunit. + * - **xres** -- Horizontal resolution in pixels/mm, double. + * - **yres** -- Vertical resolution in pixels/mm, double. + * - **bigtiff** -- Write a bigtiff image, bool. + * - **properties** -- Write a properties document to IMAGEDESCRIPTION, bool. + * - **region_shrink** -- Method to shrink regions, VipsRegionShrink. + * - **level** -- ZSTD compression level, int. + * - **lossless** -- Enable WEBP lossless mode, bool. + * - **depth** -- Pyramid depth, VipsForeignDzDepth. + * - **subifd** -- Save pyr layers as sub-IFDs, bool. + * - **premultiply** -- Save with premultiplied alpha, bool. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *tiffsave_buffer( VOption *options = 0 ) const; + +/** + * Save image to tiff target. + * + * **Optional parameters** + * - **compression** -- Compression for this file, VipsForeignTiffCompression. + * - **Q** -- Q factor, int. + * - **predictor** -- Compression prediction, VipsForeignTiffPredictor. + * - **profile** -- ICC profile to embed, const char *. + * - **tile** -- Write a tiled tiff, bool. + * - **tile_width** -- Tile width in pixels, int. + * - **tile_height** -- Tile height in pixels, int. + * - **pyramid** -- Write a pyramidal tiff, bool. + * - **miniswhite** -- Use 0 for white in 1-bit images, bool. + * - **bitdepth** -- Write as a 1, 2, 4 or 8 bit image, int. + * - **resunit** -- Resolution unit, VipsForeignTiffResunit. + * - **xres** -- Horizontal resolution in pixels/mm, double. + * - **yres** -- Vertical resolution in pixels/mm, double. + * - **bigtiff** -- Write a bigtiff image, bool. + * - **properties** -- Write a properties document to IMAGEDESCRIPTION, bool. + * - **region_shrink** -- Method to shrink regions, VipsRegionShrink. + * - **level** -- ZSTD compression level, int. + * - **lossless** -- Enable WEBP lossless mode, bool. + * - **depth** -- Pyramid depth, VipsForeignDzDepth. + * - **subifd** -- Save pyr layers as sub-IFDs, bool. + * - **premultiply** -- Save with premultiplied alpha, bool. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void tiffsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Cache an image as a set of tiles. + * + * **Optional parameters** + * - **tile_width** -- Tile width in pixels, int. + * - **tile_height** -- Tile height in pixels, int. + * - **max_tiles** -- Maximum number of tiles to cache, int. + * - **access** -- Expected access pattern, VipsAccess. + * - **threaded** -- Allow threaded access, bool. + * - **persistent** -- Keep cache between evaluations, bool. + * + * @param options Set of options. + * @return Output image. + */ +VImage tilecache( VOption *options = 0 ) const; + +/** + * Build a look-up table. + * + * **Optional parameters** + * - **in_max** -- Size of LUT to build, int. + * - **out_max** -- Maximum value in output LUT, int. + * - **Lb** -- Lowest value in output, double. + * - **Lw** -- Highest value in output, double. + * - **Ps** -- Position of shadow, double. + * - **Pm** -- Position of mid-tones, double. + * - **Ph** -- Position of highlights, double. + * - **S** -- Adjust shadows by this much, double. + * - **M** -- Adjust mid-tones by this much, double. + * - **H** -- Adjust highlights by this much, double. + * + * @param options Set of options. + * @return Output image. + */ +static VImage tonelut( VOption *options = 0 ); + +/** + * Transpose3d an image. + * + * **Optional parameters** + * - **page_height** -- Height of each input page, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage transpose3d( VOption *options = 0 ) const; + +/** + * Unpremultiply image alpha. + * + * **Optional parameters** + * - **max_alpha** -- Maximum value of alpha channel, double. + * - **alpha_band** -- Unpremultiply with this alpha, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage unpremultiply( VOption *options = 0 ) const; + +/** + * Load vips from file. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage vipsload( const char *filename, VOption *options = 0 ); + +/** + * Load vips from source. + * + * **Optional parameters** + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage vipsload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to file in vips format. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void vipssave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to target in vips format. + * + * **Optional parameters** + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void vipssave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Load webp from file. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **scale** -- Scale factor on load, double. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param filename Filename to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage webpload( const char *filename, VOption *options = 0 ); + +/** + * Load webp from buffer. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **scale** -- Scale factor on load, double. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param buffer Buffer to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage webpload_buffer( VipsBlob *buffer, VOption *options = 0 ); + +/** + * Load webp from source. + * + * **Optional parameters** + * - **page** -- Load this page from the file, int. + * - **n** -- Load this many pages, int. + * - **scale** -- Scale factor on load, double. + * - **memory** -- Force open via memory, bool. + * - **access** -- Required access pattern for this file, VipsAccess. + * - **fail_on** -- Error level to fail on, VipsFailOn. + * + * @param source Source to load from. + * @param options Set of options. + * @return Output image. + */ +static VImage webpload_source( VSource source, VOption *options = 0 ); + +/** + * Save image to webp file. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **lossless** -- Enable lossless compression, bool. + * - **preset** -- Preset for lossy compression, VipsForeignWebpPreset. + * - **smart_subsample** -- Enable high quality chroma subsampling, bool. + * - **near_lossless** -- Enable preprocessing in lossless mode (uses Q), bool. + * - **alpha_q** -- Change alpha plane fidelity for lossy compression, int. + * - **min_size** -- Optimise for minimum size, bool. + * - **kmin** -- Minimum number of frames between key frames, int. + * - **kmax** -- Maximum number of frames between key frames, int. + * - **effort** -- Level of CPU effort to reduce file size, int. + * - **profile** -- ICC profile to embed, const char *. + * - **mixed** -- Allow mixed encoding (might reduce file size), bool. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param filename Filename to save to. + * @param options Set of options. + */ +void webpsave( const char *filename, VOption *options = 0 ) const; + +/** + * Save image to webp buffer. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **lossless** -- Enable lossless compression, bool. + * - **preset** -- Preset for lossy compression, VipsForeignWebpPreset. + * - **smart_subsample** -- Enable high quality chroma subsampling, bool. + * - **near_lossless** -- Enable preprocessing in lossless mode (uses Q), bool. + * - **alpha_q** -- Change alpha plane fidelity for lossy compression, int. + * - **min_size** -- Optimise for minimum size, bool. + * - **kmin** -- Minimum number of frames between key frames, int. + * - **kmax** -- Maximum number of frames between key frames, int. + * - **effort** -- Level of CPU effort to reduce file size, int. + * - **profile** -- ICC profile to embed, const char *. + * - **mixed** -- Allow mixed encoding (might reduce file size), bool. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param options Set of options. + * @return Buffer to save to. + */ +VipsBlob *webpsave_buffer( VOption *options = 0 ) const; + +/** + * Save image to webp target. + * + * **Optional parameters** + * - **Q** -- Q factor, int. + * - **lossless** -- Enable lossless compression, bool. + * - **preset** -- Preset for lossy compression, VipsForeignWebpPreset. + * - **smart_subsample** -- Enable high quality chroma subsampling, bool. + * - **near_lossless** -- Enable preprocessing in lossless mode (uses Q), bool. + * - **alpha_q** -- Change alpha plane fidelity for lossy compression, int. + * - **min_size** -- Optimise for minimum size, bool. + * - **kmin** -- Minimum number of frames between key frames, int. + * - **kmax** -- Maximum number of frames between key frames, int. + * - **effort** -- Level of CPU effort to reduce file size, int. + * - **profile** -- ICC profile to embed, const char *. + * - **mixed** -- Allow mixed encoding (might reduce file size), bool. + * - **strip** -- Strip all metadata from image, bool. + * - **background** -- Background value, std::vector. + * - **page_height** -- Set page height for multipage save, int. + * + * @param target Target to save to. + * @param options Set of options. + */ +void webpsave_target( VTarget target, VOption *options = 0 ) const; + +/** + * Make a worley noise image. + * + * **Optional parameters** + * - **cell_size** -- Size of Worley cells, int. + * - **seed** -- Random number seed, int. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage worley( int width, int height, VOption *options = 0 ); + +/** + * Wrap image origin. + * + * **Optional parameters** + * - **x** -- Left edge of input in output, int. + * - **y** -- Top edge of input in output, int. + * + * @param options Set of options. + * @return Output image. + */ +VImage wrap( VOption *options = 0 ) const; + +/** + * Make an image where pixel values are coordinates. + * + * **Optional parameters** + * - **csize** -- Size of third dimension, int. + * - **dsize** -- Size of fourth dimension, int. + * - **esize** -- Size of fifth dimension, int. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage xyz( int width, int height, VOption *options = 0 ); + +/** + * Make a zone plate. + * + * **Optional parameters** + * - **uchar** -- Output an unsigned char image, bool. + * + * @param width Image width in pixels. + * @param height Image height in pixels. + * @param options Set of options. + * @return Output image. + */ +static VImage zone( int width, int height, VOption *options = 0 ); + +/** + * Zoom an image. + * @param xfac Horizontal zoom factor. + * @param yfac Vertical zoom factor. + * @param options Set of options. + * @return Output image. + */ +VImage zoom( int xfac, int yfac, VOption *options = 0 ) const; +}; + +VIPS_NAMESPACE_END + +#endif /*VIPS_VIMAGE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VInterpolate8.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VInterpolate8.h new file mode 100644 index 0000000..f5560e1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VInterpolate8.h @@ -0,0 +1,77 @@ +// VIPS interpolate wrapper + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_VINTERPOLATE_H +#define VIPS_VINTERPOLATE_H + +#include + +VIPS_NAMESPACE_START + +/** + * An interpolation. You can pass one of these to something like + * VImage::affine for it to use to interpolate pixels. + * + * The available interpolators vary a bit with your libvips version and how it + * was built, but will include `nearest`, `bilinear` and `bicubic`. Run + * vips -l interpolate` to see them all. + */ +class VInterpolate : public VObject +{ +public: + /** + * Create a VInterpolate that wraps a VipsInterpolate object. If steal + * is STEAL, then this VInterpolate takes over ownership of the libvips + * object and will automatically unref it. + */ + VInterpolate( VipsInterpolate *interpolate, VSteal steal = STEAL ) : + VObject( (VipsObject *) interpolate, steal ) + { + } + + /** + * Create a VInterpolate from a name, for example `"bicubic"`. + */ + static + VInterpolate new_from_name( const char *name, VOption *options = 0 ); + + /** + * Get a pointer to the underlying VipsInterpolate object. + */ + VipsInterpolate * + get_interpolate() const + { + return( (VipsInterpolate *) VObject::get_object() ); + } + +}; + +VIPS_NAMESPACE_END + +#endif /*VIPS_VINTERPOLATE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VRegion8.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VRegion8.h new file mode 100644 index 0000000..c841aac --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/VRegion8.h @@ -0,0 +1,155 @@ +// VIPS region wrapper + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_VREGION_H +#define VIPS_VREGION_H + +#include + +VIPS_NAMESPACE_START + +/** + * A region of an image. Can be used to access raw pixel data. + * */ +class VRegion : public VObject +{ +public: + /** + * Create a VRegion that wraps a VipsRegion object. If steal + * is STEAL, then this VRegion takes over ownership of the libvips + * object and will automatically unref it. + */ + VRegion( VipsRegion *region, VSteal steal = STEAL ) : + VObject( (VipsObject *) region, steal ) + { + } + + /** + * Create a VRegion from an image. + */ + static VRegion + new_from_image( VImage image ); + + /** + * Get a pointer to the underlying VipsRegion object. + */ + VipsRegion * + get_region() const + { + return (VipsRegion *) VObject::get_object(); + } + + /** + * Prepare the region from VipsRect. + */ + void + prepare( const VipsRect *rect ) const + { + if ( vips_region_prepare( get_region(), rect ) ) + throw VError(); + } + + /** + * Prepare the region from rectangle coordinates. + */ + void + prepare( int left, int top, int width, int height ) const + { + VipsRect rect = { left, top, width, height }; + + prepare( &rect ); + } + + /** + * Get valid bounds of the region. + */ + VipsRect + valid() const + { + return get_region()->valid; + } + + /** + * Get pointer to the start of the region. + */ + VipsPel * + addr() const + { + return addr( 0 ); + } + + /** + * Get pointer at the given index of the region. + */ + VipsPel * + addr( size_t i ) const + { + return &VIPS_REGION_ADDR_TOPLEFT( get_region() )[i]; + } + + /** + * Get pointer at the given coordinates of the region. + */ + VipsPel * + addr( int x, int y ) const + { + return VIPS_REGION_ADDR( get_region(), x, y ); + } + + /** + * Get the stride (bytes per row, including padding) of the region. + */ + size_t + stride() const + { + return VIPS_REGION_LSKIP( get_region() ); + } + + /** + * Get VipsPel at the given index of the region. + */ + VipsPel + operator[]( size_t i ) const + { + return *addr( i ); + } + + /** + * Get VipsPel at the given coordinates of the region. + */ + VipsPel + operator()( int x, int y ) const + { + return *addr( x, y ); + } +}; + +VIPS_NAMESPACE_END + +#endif /*VIPS_VREGION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/arithmetic.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/arithmetic.h new file mode 100644 index 0000000..4ec907a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/arithmetic.h @@ -0,0 +1,571 @@ +/* Headers for arithmetic + * + * 30/6/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_ARITHMETIC_H +#define VIPS_ARITHMETIC_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/** + * VipsOperationMath: + * @VIPS_OPERATION_MATH_SIN: sin(), angles in degrees + * @VIPS_OPERATION_MATH_COS: cos(), angles in degrees + * @VIPS_OPERATION_MATH_TAN: tan(), angles in degrees + * @VIPS_OPERATION_MATH_ASIN: asin(), angles in degrees + * @VIPS_OPERATION_MATH_ACOS: acos(), angles in degrees + * @VIPS_OPERATION_MATH_ATAN: atan(), angles in degrees + * @VIPS_OPERATION_MATH_LOG: log base e + * @VIPS_OPERATION_MATH_LOG10: log base 10 + * @VIPS_OPERATION_MATH_EXP: e to the something + * @VIPS_OPERATION_MATH_EXP10: 10 to the something + * @VIPS_OPERATION_MATH_SINH: sinh(), angles in radians + * @VIPS_OPERATION_MATH_COSH: cosh(), angles in radians + * @VIPS_OPERATION_MATH_TANH: tanh(), angles in radians + * @VIPS_OPERATION_MATH_ASINH: asinh(), angles in radians + * @VIPS_OPERATION_MATH_ACOSH: acosh(), angles in radians + * @VIPS_OPERATION_MATH_ATANH: atanh(), angles in radians + * + * See also: vips_math(). + */ +typedef enum { + VIPS_OPERATION_MATH_SIN, + VIPS_OPERATION_MATH_COS, + VIPS_OPERATION_MATH_TAN, + VIPS_OPERATION_MATH_ASIN, + VIPS_OPERATION_MATH_ACOS, + VIPS_OPERATION_MATH_ATAN, + VIPS_OPERATION_MATH_LOG, + VIPS_OPERATION_MATH_LOG10, + VIPS_OPERATION_MATH_EXP, + VIPS_OPERATION_MATH_EXP10, + VIPS_OPERATION_MATH_SINH, + VIPS_OPERATION_MATH_COSH, + VIPS_OPERATION_MATH_TANH, + VIPS_OPERATION_MATH_ASINH, + VIPS_OPERATION_MATH_ACOSH, + VIPS_OPERATION_MATH_ATANH, + VIPS_OPERATION_MATH_LAST +} VipsOperationMath; + +/** + * VipsOperationMath2: + * @VIPS_OPERATION_MATH2_POW: pow( left, right ) + * @VIPS_OPERATION_MATH2_WOP: pow( right, left ) + * @VIPS_OPERATION_MATH2_ATAN2: atan2( left, right ) + * + * See also: vips_math(). + */ +typedef enum { + VIPS_OPERATION_MATH2_POW, + VIPS_OPERATION_MATH2_WOP, + VIPS_OPERATION_MATH2_ATAN2, + VIPS_OPERATION_MATH2_LAST +} VipsOperationMath2; + +/** + * VipsOperationRound: + * @VIPS_OPERATION_ROUND_RINT: round to nearest + * @VIPS_OPERATION_ROUND_FLOOR: largest integral value not greater than + * @VIPS_OPERATION_ROUND_CEIL: the smallest integral value not less than + * + * See also: vips_round(). + */ +typedef enum { + VIPS_OPERATION_ROUND_RINT, + VIPS_OPERATION_ROUND_CEIL, + VIPS_OPERATION_ROUND_FLOOR, + VIPS_OPERATION_ROUND_LAST +} VipsOperationRound; + +/** + * VipsOperationRelational: + * @VIPS_OPERATION_RELATIONAL_EQUAL: == + * @VIPS_OPERATION_RELATIONAL_NOTEQ: != + * @VIPS_OPERATION_RELATIONAL_LESS: < + * @VIPS_OPERATION_RELATIONAL_LESSEQ: <= + * @VIPS_OPERATION_RELATIONAL_MORE: > + * @VIPS_OPERATION_RELATIONAL_MOREEQ: >= + * + * See also: vips_relational(). + */ +typedef enum { + VIPS_OPERATION_RELATIONAL_EQUAL, + VIPS_OPERATION_RELATIONAL_NOTEQ, + VIPS_OPERATION_RELATIONAL_LESS, + VIPS_OPERATION_RELATIONAL_LESSEQ, + VIPS_OPERATION_RELATIONAL_MORE, + VIPS_OPERATION_RELATIONAL_MOREEQ, + VIPS_OPERATION_RELATIONAL_LAST +} VipsOperationRelational; + +/** + * VipsOperationBoolean: + * @VIPS_OPERATION_BOOLEAN_AND: & + * @VIPS_OPERATION_BOOLEAN_OR: | + * @VIPS_OPERATION_BOOLEAN_EOR: ^ + * @VIPS_OPERATION_BOOLEAN_LSHIFT: >> + * @VIPS_OPERATION_BOOLEAN_RSHIFT: << + * + * See also: vips_boolean(). + */ +typedef enum { + VIPS_OPERATION_BOOLEAN_AND, + VIPS_OPERATION_BOOLEAN_OR, + VIPS_OPERATION_BOOLEAN_EOR, + VIPS_OPERATION_BOOLEAN_LSHIFT, + VIPS_OPERATION_BOOLEAN_RSHIFT, + VIPS_OPERATION_BOOLEAN_LAST +} VipsOperationBoolean; + +/** + * VipsOperationComplex: + * @VIPS_OPERATION_COMPLEX_POLAR: convert to polar coordinates + * @VIPS_OPERATION_COMPLEX_RECT: convert to rectangular coordinates + * @VIPS_OPERATION_COMPLEX_CONJ: complex conjugate + * + * See also: vips_complex(). + */ +typedef enum { + VIPS_OPERATION_COMPLEX_POLAR, + VIPS_OPERATION_COMPLEX_RECT, + VIPS_OPERATION_COMPLEX_CONJ, + VIPS_OPERATION_COMPLEX_LAST +} VipsOperationComplex; + +/** + * VipsOperationComplex2: + * @VIPS_OPERATION_COMPLEX2_CROSS_PHASE: convert to polar coordinates + * + * See also: vips_complex2(). + */ +typedef enum { + VIPS_OPERATION_COMPLEX2_CROSS_PHASE, + VIPS_OPERATION_COMPLEX2_LAST +} VipsOperationComplex2; + +/** + * VipsOperationComplexget: + * @VIPS_OPERATION_COMPLEXGET_REAL: get real component + * @VIPS_OPERATION_COMPLEXGET_IMAG: get imaginary component + * + * See also: vips_complexget(). + */ +typedef enum { + VIPS_OPERATION_COMPLEXGET_REAL, + VIPS_OPERATION_COMPLEXGET_IMAG, + VIPS_OPERATION_COMPLEXGET_LAST +} VipsOperationComplexget; + +VIPS_API +int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sum( VipsImage **in, VipsImage **out, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_subtract( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_multiply( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_divide( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_linear( VipsImage *in, VipsImage **out, + const double *a, const double *b, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_linear1( VipsImage *in, VipsImage **out, double a, double b, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_remainder( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_remainder_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_remainder_const1( VipsImage *in, VipsImage **out, + double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_invert( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_abs( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sign( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_round( VipsImage *in, VipsImage **out, VipsOperationRound round, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_floor( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_ceil( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rint( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_math( VipsImage *in, VipsImage **out, + VipsOperationMath math, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sin( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cos( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tan( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_asin( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_acos( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_atan( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_exp( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_exp10( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_log( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_log10( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sinh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cosh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tanh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_asinh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_acosh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_atanh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_complex( VipsImage *in, VipsImage **out, + VipsOperationComplex cmplx, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_polar( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rect( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_conj( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_complex2( VipsImage *left, VipsImage *right, VipsImage **out, + VipsOperationComplex2 cmplx, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cross_phase( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_complexget( VipsImage *in, VipsImage **out, + VipsOperationComplexget get, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_real( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_imag( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_complexform( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_relational( VipsImage *left, VipsImage *right, VipsImage **out, + VipsOperationRelational relational, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_equal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_notequal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_less( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_lesseq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_more( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_moreeq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_relational_const( VipsImage *in, VipsImage **out, + VipsOperationRelational relational, const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_equal_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_notequal_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_less_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_lesseq_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_more_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_moreeq_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_relational_const1( VipsImage *in, VipsImage **out, + VipsOperationRelational relational, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_equal_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_notequal_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_less_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_lesseq_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_more_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_moreeq_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_boolean( VipsImage *left, VipsImage *right, VipsImage **out, + VipsOperationBoolean boolean, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_andimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_orimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_eorimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_lshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_boolean_const( VipsImage *in, VipsImage **out, + VipsOperationBoolean boolean, const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_andimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_orimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_eorimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_lshift_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rshift_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_boolean_const1( VipsImage *in, VipsImage **out, + VipsOperationBoolean boolean, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_andimage_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_orimage_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_eorimage_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_lshift_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rshift_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_math2( VipsImage *left, VipsImage *right, VipsImage **out, + VipsOperationMath2 math2, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pow( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_wop( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_atan2( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_math2_const( VipsImage *in, VipsImage **out, + VipsOperationMath2 math2, const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pow_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_wop_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_atan2_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_math2_const1( VipsImage *in, VipsImage **out, + VipsOperationMath2 math2, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pow_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_wop_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_atan2_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_avg( VipsImage *in, double *out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_deviate( VipsImage *in, double *out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_min( VipsImage *in, double *out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_max( VipsImage *in, double *out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_stats( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_measure( VipsImage *in, VipsImage **out, int h, int v, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_find_trim( VipsImage *in, + int *left, int *top, int *width, int *height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_getpoint( VipsImage *in, double **vector, int *n, int x, int y, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_find( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_find_ndim( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_find_indexed( VipsImage *in, VipsImage *index, + VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hough_line( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hough_circle( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_project( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_profile( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_ARITHMETIC_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/basic.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/basic.h new file mode 100644 index 0000000..4db1384 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/basic.h @@ -0,0 +1,113 @@ +/* A few basic types needed everywhere. + * + * 27/10/11 + * - from type.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_BASIC_H +#define VIPS_BASIC_H + +/* Defined in config.h + */ +#ifdef _VIPS_PUBLIC +# define VIPS_API _VIPS_PUBLIC extern +#else +# define VIPS_API extern +#endif + +/* VIPS_DISABLE_DEPRECATION_WARNINGS: + * + * Disable deprecation warnings from VIPS API. + * + * Must be defined before including `vips/vips.h`. + */ +#ifdef VIPS_DISABLE_DEPRECATION_WARNINGS +# define VIPS_DEPRECATED VIPS_API +# define VIPS_DEPRECATED_FOR(f) VIPS_API +#else +# define VIPS_DEPRECATED G_DEPRECATED VIPS_API +# define VIPS_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) VIPS_API +#endif + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/** + * VipsPel: + * + * A picture element. Cast this to whatever the associated VipsBandFormat says + * to get the value. + */ +typedef unsigned char VipsPel; + +/* Also used for eg. vips_local() and friends. + */ +typedef int (*VipsCallbackFn)( void *a, void *b ); + +/* Like GFunc, but return a value. + */ +typedef void *(*VipsSListMap2Fn)( void *item, + void *a, void *b ); +typedef void *(*VipsSListMap4Fn)( void *item, + void *a, void *b, void *c, void *d ); +typedef void *(*VipsSListFold2Fn)( void *item, + void *a, void *b, void *c ); + +typedef enum { + VIPS_PRECISION_INTEGER, + VIPS_PRECISION_FLOAT, + VIPS_PRECISION_APPROXIMATE, + VIPS_PRECISION_LAST +} VipsPrecision; + +/* Just for testing. + */ +VIPS_API +char *vips_path_filename7( const char *path ); +VIPS_API +char *vips_path_mode7( const char *path ); + +struct _VipsImage; +typedef struct _VipsImage VipsImage; +struct _VipsRegion; +typedef struct _VipsRegion VipsRegion; +struct _VipsBuf; +typedef struct _VipsBuf VipsBuf; +struct _VipsSource; +typedef struct _VipsSource VipsSource; +struct _VipsTarget; +typedef struct _VipsTarget VipsTarget; + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_BASIC_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/buf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/buf.h new file mode 100644 index 0000000..00bf601 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/buf.h @@ -0,0 +1,118 @@ +/* A static string buffer, with overflow protection. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_BUF_H +#define VIPS_BUF_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* A string in the process of being written to ... multiple calls to + * vips_buf_append add to it. On overflow append "..." and block further + * writes. + */ + +struct _VipsBuf { + /* All fields are private. + */ + /*< private >*/ + char *base; /* String base */ + int mx; /* Maximum length */ + int i; /* Current write point */ + gboolean full; /* String has filled, block writes */ + int lasti; /* For read-recent */ + gboolean dynamic; /* We own the string with malloc() */ +}; + +#define VIPS_BUF_STATIC( TEXT ) \ + { &TEXT[0], sizeof( TEXT ), 0, FALSE, 0, FALSE } + +/* Init and append to one of the above. + */ +VIPS_API +void vips_buf_rewind( VipsBuf *buf ); +VIPS_API +void vips_buf_destroy( VipsBuf *buf ); +VIPS_API +void vips_buf_init( VipsBuf *buf ); +VIPS_API +void vips_buf_set_static( VipsBuf *buf, char *base, int mx ); +VIPS_API +void vips_buf_set_dynamic( VipsBuf *buf, int mx ); +VIPS_API +void vips_buf_init_static( VipsBuf *buf, char *base, int mx ); +VIPS_API +void vips_buf_init_dynamic( VipsBuf *buf, int mx ); +VIPS_API +gboolean vips_buf_appendns( VipsBuf *buf, const char *str, int sz ); +VIPS_API +gboolean vips_buf_appends( VipsBuf *buf, const char *str ); +VIPS_API +gboolean vips_buf_appendf( VipsBuf *buf, const char *fmt, ... ) + __attribute__((format(printf, 2, 3))); +VIPS_API +gboolean vips_buf_vappendf( VipsBuf *buf, const char *fmt, va_list ap ); +VIPS_API +gboolean vips_buf_appendc( VipsBuf *buf, char ch ); +VIPS_API +gboolean vips_buf_appendsc( VipsBuf *buf, gboolean quote, const char *str ); +VIPS_API +gboolean vips_buf_appendgv( VipsBuf *buf, GValue *value ); +VIPS_API +gboolean vips_buf_append_size( VipsBuf *buf, size_t n ); +VIPS_API +gboolean vips_buf_removec( VipsBuf *buf, char ch ); +VIPS_API +gboolean vips_buf_change( VipsBuf *buf, const char *o, const char *n ); +VIPS_API +gboolean vips_buf_is_empty( VipsBuf *buf ); +VIPS_API +gboolean vips_buf_is_full( VipsBuf *buf ); +VIPS_API +const char *vips_buf_all( VipsBuf *buf ); +VIPS_API +const char *vips_buf_firstline( VipsBuf *buf ); +VIPS_API +gboolean vips_buf_appendg( VipsBuf *buf, double g ); +VIPS_API +gboolean vips_buf_appendd( VipsBuf *buf, int d ); +VIPS_API +int vips_buf_len( VipsBuf *buf ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_BUF_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/colour.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/colour.h new file mode 100644 index 0000000..8bec438 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/colour.h @@ -0,0 +1,306 @@ +/* Definitions for VIPS colour package. + * + * J.Cupitt, 8/4/93 + * 15/7/96 JC + * - C++ stuff added + * 20/2/98 JC + * - new display calibration added + * 26/9/05 + * - added IM_ prefix to colour temps + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_COLOUR_H +#define VIPS_COLOUR_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* Areas under curves for Dxx. 2 degree observer. + */ +#define VIPS_D93_X0 (89.7400) +#define VIPS_D93_Y0 (100.0) +#define VIPS_D93_Z0 (130.7700) + +#define VIPS_D75_X0 (94.9682) +#define VIPS_D75_Y0 (100.0) +#define VIPS_D75_Z0 (122.5710) + +/* D65 temp 6504. + */ +#define VIPS_D65_X0 (95.0470) +#define VIPS_D65_Y0 (100.0) +#define VIPS_D65_Z0 (108.8827) + +#define VIPS_D55_X0 (95.6831) +#define VIPS_D55_Y0 (100.0) +#define VIPS_D55_Z0 (92.0871) + +#define VIPS_D50_X0 (96.4250) +#define VIPS_D50_Y0 (100.0) +#define VIPS_D50_Z0 (82.4680) + +/* A temp 2856k. + */ +#define VIPS_A_X0 (109.8503) +#define VIPS_A_Y0 (100.0) +#define VIPS_A_Z0 (35.5849) + +/* B temp 4874k. + */ +#define VIPS_B_X0 (99.0720) +#define VIPS_B_Y0 (100.0) +#define VIPS_B_Z0 (85.2230) + +/* C temp 6774k. + */ +#define VIPS_C_X0 (98.0700) +#define VIPS_C_Y0 (100.0) +#define VIPS_C_Z0 (118.2300) + +#define VIPS_E_X0 (100.0) +#define VIPS_E_Y0 (100.0) +#define VIPS_E_Z0 (100.0) + +#define VIPS_D3250_X0 (105.6590) +#define VIPS_D3250_Y0 (100.0) +#define VIPS_D3250_Z0 (45.8501) + +typedef enum { + VIPS_INTENT_PERCEPTUAL = 0, + VIPS_INTENT_RELATIVE, + VIPS_INTENT_SATURATION, + VIPS_INTENT_ABSOLUTE, + VIPS_INTENT_LAST +} VipsIntent; + +typedef enum { + VIPS_PCS_LAB, + VIPS_PCS_XYZ, + VIPS_PCS_LAST +} VipsPCS; + +VIPS_API +gboolean vips_colourspace_issupported( const VipsImage *image ); +VIPS_API +int vips_colourspace( VipsImage *in, VipsImage **out, + VipsInterpretation space, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_LabQ2sRGB( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rad2float( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_float2rad( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_LabS2LabQ( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_LabQ2LabS( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_LabQ2Lab( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_Lab2LabQ( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_LCh2Lab( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_Lab2LCh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_Yxy2Lab( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_CMC2XYZ( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_Lab2XYZ( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_XYZ2Lab( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_XYZ2scRGB( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_scRGB2sRGB( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_scRGB2BW( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sRGB2scRGB( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_scRGB2XYZ( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_HSV2sRGB( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sRGB2HSV( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_LCh2CMC( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_CMC2LCh( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_XYZ2Yxy( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_Yxy2XYZ( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_LabS2Lab( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_Lab2LabS( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_CMYK2XYZ( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_XYZ2CMYK( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_profile_load( const char *name, VipsBlob **profile, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_icc_present( void ); +VIPS_API +int vips_icc_transform( VipsImage *in, VipsImage **out, + const char *output_profile, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_icc_import( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_icc_export( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_icc_ac2rc( VipsImage *in, VipsImage **out, + const char *profile_filename ); +VIPS_API +gboolean vips_icc_is_compatible_profile( VipsImage *image, + const void *data, size_t data_length ); + +VIPS_API +int vips_dE76( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_dE00( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_dECMC( VipsImage *left, VipsImage *right, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +void vips_col_Lab2XYZ( float L, float a, float b, + float *X, float *Y, float *Z ); +VIPS_API +void vips_col_XYZ2Lab( float X, float Y, float Z, + float *L, float *a, float *b ); +VIPS_API +double vips_col_ab2h( double a, double b ); +VIPS_API +void vips_col_ab2Ch( float a, float b, float *C, float *h ); +VIPS_API +void vips_col_Ch2ab( float C, float h, float *a, float *b ); + +VIPS_API +float vips_col_L2Lcmc( float L ); +VIPS_API +float vips_col_C2Ccmc( float C ); +VIPS_API +float vips_col_Ch2hcmc( float C, float h ); + +VIPS_API +void vips_col_make_tables_CMC( void ); +VIPS_API +float vips_col_Lcmc2L( float Lcmc ); +VIPS_API +float vips_col_Ccmc2C( float Ccmc ); +VIPS_API +float vips_col_Chcmc2h( float C, float hcmc ); + +VIPS_API +int vips_col_sRGB2scRGB_8( int r, int g, int b, float *R, float *G, float *B ); +VIPS_API +int vips_col_sRGB2scRGB_16( int r, int g, int b, float *R, float *G, float *B ); +VIPS_API +int vips_col_sRGB2scRGB_8_noclip( int r, int g, int b, + float *R, float *G, float *B ); +VIPS_API +int vips_col_sRGB2scRGB_16_noclip( int r, int g, int b, + float *R, float *G, float *B ); + +VIPS_API +int vips_col_scRGB2XYZ( float R, float G, float B, + float *X, float *Y, float *Z ); +VIPS_API +int vips_col_XYZ2scRGB( float X, float Y, float Z, + float *R, float *G, float *B ); + +VIPS_API +int vips_col_scRGB2sRGB_8( float R, float G, float B, + int *r, int *g, int *b, int *og ); +VIPS_API +int vips_col_scRGB2sRGB_16( float R, float G, float B, + int *r, int *g, int *b, int *og ); +VIPS_API +int vips_col_scRGB2BW_16( float R, float G, float B, int *g, int *og ); +VIPS_API +int vips_col_scRGB2BW_8( float R, float G, float B, int *g, int *og ); + +VIPS_API +float vips_pythagoras( float L1, float a1, float b1, + float L2, float a2, float b2 ); +VIPS_API +float vips_col_dE00( + float L1, float a1, float b1, float L2, float a2, float b2 ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_COLOUR_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/connection.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/connection.h new file mode 100644 index 0000000..47da0ec --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/connection.h @@ -0,0 +1,570 @@ +/* A byte source/sink .. it can be a pipe, socket, or perhaps a node.js stream. + * + * J.Cupitt, 19/6/14 + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_CONNECTION_H +#define VIPS_CONNECTION_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_TYPE_CONNECTION (vips_connection_get_type()) +#define VIPS_CONNECTION( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_CONNECTION, VipsConnection )) +#define VIPS_CONNECTION_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_CONNECTION, VipsConnectionClass)) +#define VIPS_IS_CONNECTION( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CONNECTION )) +#define VIPS_IS_CONNECTION_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CONNECTION )) +#define VIPS_CONNECTION_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_CONNECTION, VipsConnectionClass )) + +/* Communicate with something like a socket or pipe. + */ +typedef struct _VipsConnection { + VipsObject parent_object; + + /*< private >*/ + + /* Read/write this fd if connected to a system pipe/socket. Override + * ::read() and ::write() to do something else. + */ + int descriptor; + + /* A descriptor we close with vips_tracked_close(). + */ + int tracked_descriptor; + + /* A descriptor we close with close(). + */ + int close_descriptor; + + /* If descriptor is a file, the filename we opened. Handy for error + * messages. + */ + char *filename; + +} VipsConnection; + +typedef struct _VipsConnectionClass { + VipsObjectClass parent_class; + +} VipsConnectionClass; + +VIPS_API +GType vips_connection_get_type( void ); + +VIPS_API +const char *vips_connection_filename( VipsConnection *connection ); +VIPS_API +const char *vips_connection_nick( VipsConnection *connection ); + +VIPS_API +void vips_pipe_read_limit_set( gint64 limit ); + +#define VIPS_TYPE_SOURCE (vips_source_get_type()) +#define VIPS_SOURCE( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_SOURCE, VipsSource )) +#define VIPS_SOURCE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_SOURCE, VipsSourceClass)) +#define VIPS_IS_SOURCE( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_SOURCE )) +#define VIPS_IS_SOURCE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_SOURCE )) +#define VIPS_SOURCE_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_SOURCE, VipsSourceClass )) + +/* Read from something like a socket, file or memory area and present the data + * with a unified seek / read / map interface. + * + * During the header phase, we save data from unseekable sources in a buffer + * so readers can rewind and read again. We don't buffer data during the + * decode stage. + */ +struct _VipsSource { + VipsConnection parent_object; + + /* We have two phases: + * + * During the header phase, we save bytes read from the input (if this + * is an unseekable source) so that we can rewind and try again, if + * necessary. + * + * Once we reach decode phase, we no longer support rewind and the + * buffer of saved data is discarded. + */ + gboolean decode; + + /* TRUE if this input is something like a pipe. These don't support + * seek or map -- all you can do is read() bytes sequentially. + * + * If you attempt to map or get the size of a pipe-style input, it'll + * get read entirely into memory. Seeks will cause read up to the seek + * point. + */ + gboolean have_tested_seek; + gboolean is_pipe; + + /* The current read point and length. + * + * length is -1 for is_pipe sources. + * + * off_t can be 32 bits on some platforms, so make sure we have a + * full 64. + */ + gint64 read_position; + gint64 length; + + /*< private >*/ + + /* For sources where we have the whole image in memory (from a memory + * buffer, from mmaping the file, from reading the pipe into memory), + * a pointer to the start. + */ + const void *data; + + /* For is_pipe sources, save data read during header phase here. If + * we rewind and try again, serve data from this until it runs out. + * + * If we need to force the whole pipe into memory, read everything to + * this and put a copy of the pointer in data. + */ + GByteArray *header_bytes; + + /* Save the first few bytes here for file type sniffing. + */ + GByteArray *sniff; + + /* For a memory source, the blob we read from. + */ + VipsBlob *blob; + + /* If we mmaped the file, what we need to unmmap on finalize. + */ + void *mmap_baseaddr; + size_t mmap_length; + +}; + +typedef struct _VipsSourceClass { + VipsConnectionClass parent_class; + + /* Subclasses can define these to implement other source methods. + */ + + /* Read from the source into the supplied buffer, args exactly as + * read(2). Set errno on error. + * + * We must return gint64, since ssize_t is often defined as unsigned + * on Windows. + */ + gint64 (*read)( VipsSource *, void *, size_t ); + + /* Seek to a certain position, args exactly as lseek(2). Set errno on + * error. + * + * Unseekable sources should always return -1. VipsSource will then + * seek by _read()ing bytes into memory as required. + * + * We have to use int64 rather than off_t, since we must work on + * Windows, where off_t can be 32-bits. + */ + gint64 (*seek)( VipsSource *, gint64, int ); + +} VipsSourceClass; + +VIPS_API +GType vips_source_get_type( void ); + +VIPS_API +VipsSource *vips_source_new_from_descriptor( int descriptor ); +VIPS_API +VipsSource *vips_source_new_from_file( const char *filename ); +VIPS_API +VipsSource *vips_source_new_from_blob( VipsBlob *blob ); +VIPS_API +VipsSource *vips_source_new_from_target( VipsTarget *target ); +VIPS_API +VipsSource *vips_source_new_from_memory( const void *data, size_t size ); +VIPS_API +VipsSource *vips_source_new_from_options( const char *options ); + +VIPS_API +void vips_source_minimise( VipsSource *source ); +VIPS_API +int vips_source_unminimise( VipsSource *source ); +VIPS_API +int vips_source_decode( VipsSource *source ); +VIPS_API +gint64 vips_source_read( VipsSource *source, void *data, size_t length ); +VIPS_API +gboolean vips_source_is_mappable( VipsSource *source ); +VIPS_API +gboolean vips_source_is_file( VipsSource *source ); +VIPS_API +const void *vips_source_map( VipsSource *source, size_t *length ); +VIPS_API +VipsBlob *vips_source_map_blob( VipsSource *source ); +VIPS_API +gint64 vips_source_seek( VipsSource *source, gint64 offset, int whence ); +VIPS_API +int vips_source_rewind( VipsSource *source ); +VIPS_API +gint64 vips_source_sniff_at_most( VipsSource *source, + unsigned char **data, size_t length ); +VIPS_API +unsigned char *vips_source_sniff( VipsSource *source, size_t length ); +VIPS_API +gint64 vips_source_length( VipsSource *source ); + +#define VIPS_TYPE_SOURCE_CUSTOM (vips_source_custom_get_type()) +#define VIPS_SOURCE_CUSTOM( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_SOURCE_CUSTOM, VipsSourceCustom )) +#define VIPS_SOURCE_CUSTOM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_SOURCE_CUSTOM, VipsSourceCustomClass)) +#define VIPS_IS_SOURCE_CUSTOM( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_SOURCE_CUSTOM )) +#define VIPS_IS_SOURCE_CUSTOM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_SOURCE_CUSTOM )) +#define VIPS_SOURCE_CUSTOM_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_SOURCE_CUSTOM, VipsSourceCustomClass )) + +/* Subclass of source_custom with signals for handlers. This is supposed to be + * useful for language bindings. + */ +typedef struct _VipsSourceCustom { + VipsSource parent_object; + +} VipsSourceCustom; + +typedef struct _VipsSourceCustomClass { + VipsSourceClass parent_class; + + /* The action signals clients can use to implement read and seek. + * We must use gint64 everywhere since there's no G_TYPE_SIZE. + */ + + gint64 (*read)( VipsSourceCustom *, void *, gint64 ); + gint64 (*seek)( VipsSourceCustom *, gint64, int ); + +} VipsSourceCustomClass; + +VIPS_API +GType vips_source_custom_get_type( void ); +VIPS_API +VipsSourceCustom *vips_source_custom_new( void ); + +/* A GInputStream that wraps a VipsSource. This lets us eg. + * hook librsvg up to libvips using their GInputStream interface. + */ + +#define VIPS_TYPE_G_INPUT_STREAM (vips_g_input_stream_get_type()) +#define VIPS_G_INPUT_STREAM( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_G_INPUT_STREAM, VipsGInputStream )) +#define VIPS_G_INPUT_STREAM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_G_INPUT_STREAM, VipsGInputStreamClass)) +#define VIPS_IS_G_INPUT_STREAM( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_G_INPUT_STREAM )) +#define VIPS_IS_G_INPUT_STREAM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_G_INPUT_STREAM )) +#define VIPS_G_INPUT_STREAM_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_G_INPUT_STREAM, VipsGInputStreamClass )) + +typedef struct _VipsGInputStream { + GInputStream parent_instance; + + /*< private >*/ + + /* The VipsSource we wrap. + */ + VipsSource *source; + +} VipsGInputStream; + +typedef struct _VipsGInputStreamClass { + GInputStreamClass parent_class; + +} VipsGInputStreamClass; + +VIPS_API +GInputStream *vips_g_input_stream_new_from_source( VipsSource *source ); + +/* A VipsSource that wraps a GInputStream. This lets us eg. load PNGs from + * GFile objects. + */ + +#define VIPS_TYPE_SOURCE_G_INPUT_STREAM (vips_source_g_input_stream_get_type()) +#define VIPS_SOURCE_G_INPUT_STREAM( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_SOURCE_G_INPUT_STREAM, VipsSourceGInputStream )) +#define VIPS_SOURCE_G_INPUT_STREAM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_SOURCE_G_INPUT_STREAM, VipsSourceGInputStreamClass)) +#define VIPS_IS_SOURCE_G_INPUT_STREAM( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_SOURCE_G_INPUT_STREAM )) +#define VIPS_IS_SOURCE_G_INPUT_STREAM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_SOURCE_G_INPUT_STREAM )) +#define VIPS_SOURCE_G_INPUT_STREAM_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_SOURCE_G_INPUT_STREAM, VipsSourceGInputStreamClass )) + +typedef struct _VipsSourceGInputStream { + VipsSource parent_instance; + + /*< private >*/ + + /* The GInputStream we wrap. + */ + GInputStream *stream; + + GSeekable *seekable; + GFileInfo *info; + +} VipsSourceGInputStream; + +typedef struct _VipsSourceGInputStreamClass { + VipsSourceClass parent_class; + +} VipsSourceGInputStreamClass; + +VIPS_API +VipsSourceGInputStream *vips_source_g_input_stream_new( GInputStream *stream ); + +#define VIPS_TYPE_TARGET (vips_target_get_type()) +#define VIPS_TARGET( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_TARGET, VipsTarget )) +#define VIPS_TARGET_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_TARGET, VipsTargetClass)) +#define VIPS_IS_TARGET( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_TARGET )) +#define VIPS_IS_TARGET_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_TARGET )) +#define VIPS_TARGET_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_TARGET, VipsTargetClass )) + +/* PNG writes in 8kb chunks, so we need to be a little larger than that. + */ +#define VIPS_TARGET_BUFFER_SIZE (8500) + +/* Output to something like a socket, pipe or memory area. + */ +struct _VipsTarget { + VipsConnection parent_object; + + /*< private >*/ + + /* This target should write to memory. + */ + gboolean memory; + + /* The target has been ended and can no longer be written. + */ + gboolean ended; + + /* Write memory output here. We use a GString rather than a + * GByteArray since we need eg. g_string_overwrite_len(). + * @position tracks the current write position in this. + */ + GString *memory_buffer; + + /* And return memory via this blob. + */ + VipsBlob *blob; + + /* Buffer small writes here. write_point is the index of the next + * character to write. + */ + unsigned char output_buffer[VIPS_TARGET_BUFFER_SIZE]; + int write_point; + + /* Write position in memory_buffer. + */ + off_t position; + + /* Temp targets on the filesystem need deleting, sometimes. + */ + gboolean delete_on_close; + char *delete_on_close_filename; + +}; + +typedef struct _VipsTargetClass { + VipsConnectionClass parent_class; + + /* Write to output. Args exactly as write(2). + * + * We must return gint64, since ssize_t is often defined as unsigned + * on Windows. + */ + gint64 (*write)( VipsTarget *, const void *, size_t ); + + /* Deprecated in favour of ::end. + */ + void (*finish)( VipsTarget * ); + + /* libtiff needs to be able to seek and read on targets, + * unfortunately. + * + * This will not work for eg. pipes, of course. + */ + + /* Read from the target into the supplied buffer, args exactly as + * read(2). Set errno on error. + * + * We must return gint64, since ssize_t is often defined as unsigned + * on Windows. + */ + gint64 (*read)( VipsTarget *, void *, size_t ); + + /* Seek output. Args exactly as lseek(2). + */ + off_t (*seek)( VipsTarget *, off_t offset, int whence); + + /* Output has been generated, so do any clearing up, + * eg. copy the bytes we saved in memory to the target blob. + */ + int (*end)( VipsTarget * ); + +} VipsTargetClass; + +VIPS_API +GType vips_target_get_type( void ); + +VIPS_API +VipsTarget *vips_target_new_to_descriptor( int descriptor ); +VIPS_API +VipsTarget *vips_target_new_to_file( const char *filename ); +VIPS_API +VipsTarget *vips_target_new_to_memory( void ); +VIPS_API +VipsTarget *vips_target_new_temp( VipsTarget *target ); +VIPS_API +int vips_target_write( VipsTarget *target, const void *data, size_t length ); +VIPS_API +gint64 vips_target_read( VipsTarget *target, void *buffer, size_t length ); +VIPS_API +off_t vips_target_seek( VipsTarget *target, off_t offset, int whence ); +VIPS_API +int vips_target_end( VipsTarget *target ); +VIPS_DEPRECATED_FOR(vips_target_end) +void vips_target_finish( VipsTarget *target ); +VIPS_API +unsigned char *vips_target_steal( VipsTarget *target, size_t *length ); +VIPS_API +char *vips_target_steal_text( VipsTarget *target ); + +VIPS_API +int vips_target_putc( VipsTarget *target, int ch ); +#define VIPS_TARGET_PUTC( S, C ) ( \ + (S)->write_point < VIPS_TARGET_BUFFER_SIZE ? \ + ((S)->output_buffer[(S)->write_point++] = (C), 0) : \ + vips_target_putc( (S), (C) ) \ +) +VIPS_API +int vips_target_writes( VipsTarget *target, const char *str ); +VIPS_API +int vips_target_writef( VipsTarget *target, const char *fmt, ... ) + __attribute__((format(printf, 2, 3))); +VIPS_API +int vips_target_write_amp( VipsTarget *target, const char *str ); + +#define VIPS_TYPE_TARGET_CUSTOM (vips_target_custom_get_type()) +#define VIPS_TARGET_CUSTOM( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_TARGET_CUSTOM, VipsTargetCustom )) +#define VIPS_TARGET_CUSTOM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_TARGET_CUSTOM, VipsTargetCustomClass)) +#define VIPS_IS_TARGET_CUSTOM( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_TARGET_CUSTOM )) +#define VIPS_IS_TARGET_CUSTOM_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_TARGET_CUSTOM )) +#define VIPS_TARGET_CUSTOM_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_TARGET_CUSTOM, VipsTargetCustomClass )) + +#define VIPS_TARGET_CUSTOM_BUFFER_SIZE (4096) + +/* Output to something like a socket, pipe or memory area. + */ +typedef struct _VipsTargetCustom { + VipsTarget parent_object; + +} VipsTargetCustom; + +typedef struct _VipsTargetCustomClass { + VipsTargetClass parent_class; + + /* The action signals clients can use to implement write and finish. + * We must use gint64 everywhere since there's no G_TYPE_SIZE. + */ + + gint64 (*write)( VipsTargetCustom *, const void *, gint64 ); + void (*finish)( VipsTargetCustom * ); + gint64 (*read)( VipsTargetCustom *, void *, gint64 ); + gint64 (*seek)( VipsTargetCustom *, gint64, int ); + int (*end)( VipsTargetCustom * ); + +} VipsTargetCustomClass; + +VIPS_API +GType vips_target_custom_get_type( void ); +VIPS_API +VipsTargetCustom *vips_target_custom_new( void ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_CONNECTION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/conversion.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/conversion.h new file mode 100644 index 0000000..b93e205 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/conversion.h @@ -0,0 +1,357 @@ +/* conversion.h + * + * 20/9/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_CONVERSION_H +#define VIPS_CONVERSION_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef enum { + VIPS_EXTEND_BLACK, + VIPS_EXTEND_COPY, + VIPS_EXTEND_REPEAT, + VIPS_EXTEND_MIRROR, + VIPS_EXTEND_WHITE, + VIPS_EXTEND_BACKGROUND, + VIPS_EXTEND_LAST +} VipsExtend; + +typedef enum { + VIPS_COMPASS_DIRECTION_CENTRE, + VIPS_COMPASS_DIRECTION_NORTH, + VIPS_COMPASS_DIRECTION_EAST, + VIPS_COMPASS_DIRECTION_SOUTH, + VIPS_COMPASS_DIRECTION_WEST, + VIPS_COMPASS_DIRECTION_NORTH_EAST, + VIPS_COMPASS_DIRECTION_SOUTH_EAST, + VIPS_COMPASS_DIRECTION_SOUTH_WEST, + VIPS_COMPASS_DIRECTION_NORTH_WEST, + VIPS_COMPASS_DIRECTION_LAST +} VipsCompassDirection; + +typedef enum { + VIPS_DIRECTION_HORIZONTAL, + VIPS_DIRECTION_VERTICAL, + VIPS_DIRECTION_LAST +} VipsDirection; + +typedef enum { + VIPS_ALIGN_LOW, + VIPS_ALIGN_CENTRE, + VIPS_ALIGN_HIGH, + VIPS_ALIGN_LAST +} VipsAlign; + +typedef enum { + VIPS_ANGLE_D0, + VIPS_ANGLE_D90, + VIPS_ANGLE_D180, + VIPS_ANGLE_D270, + VIPS_ANGLE_LAST +} VipsAngle; + +typedef enum { + VIPS_ANGLE45_D0, + VIPS_ANGLE45_D45, + VIPS_ANGLE45_D90, + VIPS_ANGLE45_D135, + VIPS_ANGLE45_D180, + VIPS_ANGLE45_D225, + VIPS_ANGLE45_D270, + VIPS_ANGLE45_D315, + VIPS_ANGLE45_LAST +} VipsAngle45; + +typedef enum { + VIPS_INTERESTING_NONE, + VIPS_INTERESTING_CENTRE, + VIPS_INTERESTING_ENTROPY, + VIPS_INTERESTING_ATTENTION, + VIPS_INTERESTING_LOW, + VIPS_INTERESTING_HIGH, + VIPS_INTERESTING_ALL, + VIPS_INTERESTING_LAST +} VipsInteresting; + +typedef enum { + VIPS_BLEND_MODE_CLEAR, + VIPS_BLEND_MODE_SOURCE, + VIPS_BLEND_MODE_OVER, + VIPS_BLEND_MODE_IN, + VIPS_BLEND_MODE_OUT, + VIPS_BLEND_MODE_ATOP, + VIPS_BLEND_MODE_DEST, + VIPS_BLEND_MODE_DEST_OVER, + VIPS_BLEND_MODE_DEST_IN, + VIPS_BLEND_MODE_DEST_OUT, + VIPS_BLEND_MODE_DEST_ATOP, + VIPS_BLEND_MODE_XOR, + VIPS_BLEND_MODE_ADD, + VIPS_BLEND_MODE_SATURATE, + VIPS_BLEND_MODE_MULTIPLY, + VIPS_BLEND_MODE_SCREEN, + VIPS_BLEND_MODE_OVERLAY, + VIPS_BLEND_MODE_DARKEN, + VIPS_BLEND_MODE_LIGHTEN, + VIPS_BLEND_MODE_COLOUR_DODGE, + VIPS_BLEND_MODE_COLOUR_BURN, + VIPS_BLEND_MODE_HARD_LIGHT, + VIPS_BLEND_MODE_SOFT_LIGHT, + VIPS_BLEND_MODE_DIFFERENCE, + VIPS_BLEND_MODE_EXCLUSION, + VIPS_BLEND_MODE_LAST +} VipsBlendMode; + +VIPS_API +int vips_copy( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tilecache( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_linecache( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sequential( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cache( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_copy_file( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_embed( VipsImage *in, VipsImage **out, + int x, int y, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gravity( VipsImage *in, VipsImage **out, + VipsCompassDirection direction, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_flip( VipsImage *in, VipsImage **out, VipsDirection direction, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_insert( VipsImage *main, VipsImage *sub, VipsImage **out, + int x, int y, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_join( VipsImage *in1, VipsImage *in2, VipsImage **out, + VipsDirection direction, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_arrayjoin( VipsImage **in, VipsImage **out, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_extract_area( VipsImage *in, VipsImage **out, + int left, int top, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_crop( VipsImage *in, VipsImage **out, + int left, int top, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_smartcrop( VipsImage *in, VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_extract_band( VipsImage *in, VipsImage **out, int band, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_replicate( VipsImage *in, VipsImage **out, int across, int down, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_grid( VipsImage *in, VipsImage **out, + int tile_height, int across, int down, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_transpose3d( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_wrap( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rot( VipsImage *in, VipsImage **out, VipsAngle angle, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rot90( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rot180( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rot270( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rot45( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +void vips_autorot_remove_angle( VipsImage *image ); +VIPS_API +int vips_autorot( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_zoom( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_subsample( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_cast( VipsImage *in, VipsImage **out, VipsBandFormat format, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_uchar( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_char( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_ushort( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_short( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_uint( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_int( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_float( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_double( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_complex( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_cast_dpcomplex( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_scale( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_msb( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_byteswap( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_bandjoin( VipsImage **in, VipsImage **out, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandjoin2( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandjoin_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandjoin_const1( VipsImage *in, VipsImage **out, double c, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandrank( VipsImage **in, VipsImage **out, int n, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandfold( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandunfold( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_bandbool( VipsImage *in, VipsImage **out, + VipsOperationBoolean boolean, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandand( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandor( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandeor( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_bandmean( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_recomb( VipsImage *in, VipsImage **out, VipsImage *m, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_ifthenelse( VipsImage *cond, VipsImage *in1, VipsImage *in2, + VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_switch( VipsImage **tests, VipsImage **out, int n, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_flatten( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_addalpha( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_premultiply( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_unpremultiply( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_composite( VipsImage **in, VipsImage **out, int n, int *mode, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_composite2( VipsImage *base, VipsImage *overlay, VipsImage **out, + VipsBlendMode mode, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_falsecolour( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gamma( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_CONVERSION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/convolution.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/convolution.h new file mode 100644 index 0000000..1c33e7b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/convolution.h @@ -0,0 +1,95 @@ +/* convolution.h + * + * 20/9/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_CONVOLUTION_H +#define VIPS_CONVOLUTION_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef enum { + VIPS_COMBINE_MAX, + VIPS_COMBINE_SUM, + VIPS_COMBINE_MIN, + VIPS_COMBINE_LAST +} VipsCombine; + +VIPS_API +int vips_conv( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_convf( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_convi( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_conva( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_convsep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_convasep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_compass( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gaussblur( VipsImage *in, VipsImage **out, double sigma, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sharpen( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_spcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_fastcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_sobel( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_canny( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_CONVOLUTION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/create.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/create.h new file mode 100644 index 0000000..2b603db --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/create.h @@ -0,0 +1,153 @@ +/* create.h + * + * 20/9/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_CREATE_H +#define VIPS_CREATE_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +VIPS_API +int vips_black( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_xyz( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_grey( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gaussmat( VipsImage **out, double sigma, double min_ampl, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_logmat( VipsImage **out, double sigma, double min_ampl, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_text( VipsImage **out, const char *text, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_gaussnoise( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_eye( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_sines( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_zone( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_identity( VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_buildlut( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_invertlut( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tonelut( VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_mask_ideal( VipsImage **out, int width, int height, + double frequency_cutoff, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_ideal_ring( VipsImage **out, int width, int height, + double frequency_cutoff, double ringwidth, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_ideal_band( VipsImage **out, int width, int height, + double frequency_cutoff_x, double frequency_cutoff_y, + double radius, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_butterworth( VipsImage **out, int width, int height, + double order, + double frequency_cutoff, double amplitude_cutoff, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_butterworth_ring( VipsImage **out, int width, int height, + double order, + double frequency_cutoff, double amplitude_cutoff, + double ringwidth, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_butterworth_band( VipsImage **out, int width, int height, + double order, + double frequency_cutoff_x, double frequency_cutoff_y, double radius, + double amplitude_cutoff, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_gaussian( VipsImage **out, int width, int height, + double frequency_cutoff, double amplitude_cutoff, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_gaussian_ring( VipsImage **out, int width, int height, + double frequency_cutoff, double amplitude_cutoff, + double ringwidth, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_gaussian_band( VipsImage **out, int width, int height, + double frequency_cutoff_x, double frequency_cutoff_y, double radius, + double amplitude_cutoff, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mask_fractal( VipsImage **out, int width, int height, + double fractal_dimension, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_fractsurf( VipsImage **out, + int width, int height, double fractal_dimension, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_worley( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_perlin( VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_CREATE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/dbuf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/dbuf.h new file mode 100644 index 0000000..f00b375 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/dbuf.h @@ -0,0 +1,103 @@ +/* A dynamic memory buffer that expands as you write. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_DBUF_H +#define VIPS_DBUF_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#include + +/* A buffer in the process of being written to. + */ + +typedef struct _VipsDbuf { + /* All fields are private. + */ + /*< private >*/ + + /* The current base, and the size of the allocated memory area. + */ + unsigned char *data; + size_t allocated_size; + + /* The size of the actual data that's been written. This will usually + * be <= allocated_size, but always >= write_point. + */ + size_t data_size; + + /* The write point. + */ + size_t write_point; + +} VipsDbuf; + +VIPS_API +void vips_dbuf_destroy( VipsDbuf *dbuf ); +VIPS_API +void vips_dbuf_init( VipsDbuf *dbuf ); +VIPS_API +gboolean vips_dbuf_minimum_size( VipsDbuf *dbuf, size_t size ); +VIPS_API +gboolean vips_dbuf_allocate( VipsDbuf *dbuf, size_t size ); +VIPS_API +size_t vips_dbuf_read( VipsDbuf *dbuf, unsigned char *data, size_t size ); +VIPS_API +unsigned char *vips_dbuf_get_write( VipsDbuf *dbuf, size_t *size ); +VIPS_API +gboolean vips_dbuf_write( VipsDbuf *dbuf, + const unsigned char *data, size_t size ); +VIPS_API +gboolean vips_dbuf_writef( VipsDbuf *dbuf, const char *fmt, ... ) + __attribute__((format(printf, 2, 3))); +VIPS_API +gboolean vips_dbuf_write_amp( VipsDbuf *dbuf, const char *str ); +VIPS_API +void vips_dbuf_reset( VipsDbuf *dbuf ); +VIPS_API +void vips_dbuf_destroy( VipsDbuf *dbuf ); +VIPS_API +gboolean vips_dbuf_seek( VipsDbuf *dbuf, off_t offset, int whence ); +VIPS_API +void vips_dbuf_truncate( VipsDbuf *dbuf ); +VIPS_API +off_t vips_dbuf_tell( VipsDbuf *dbuf ); +VIPS_API +unsigned char *vips_dbuf_string( VipsDbuf *dbuf, size_t *size ); +VIPS_API +unsigned char *vips_dbuf_steal( VipsDbuf *dbuf, size_t *size ); + +#endif /*VIPS_DBUF_H*/ + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/debug.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/debug.h new file mode 100644 index 0000000..de2fa24 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/debug.h @@ -0,0 +1,74 @@ +/* Support for debug.c in iofuncs. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_DEBUG_H +#define VIPS_DEBUG_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#ifdef VIPS_DEBUG +#define VIPS_DEBUG_MSG( ... ) \ + G_STMT_START { printf( __VA_ARGS__ ); } G_STMT_END +#else +#define VIPS_DEBUG_MSG( ... ) \ + G_STMT_START { ; } G_STMT_END +#endif /*VIPS_DEBUG*/ + +#ifdef VIPS_DEBUG_RED +#define VIPS_DEBUG_MSG_RED( ... ) \ + G_STMT_START { printf( "red: " __VA_ARGS__ ); } G_STMT_END +#else +#define VIPS_DEBUG_MSG_RED( ... ) \ + G_STMT_START { ; } G_STMT_END +#endif /*VIPS_DEBUG_RED*/ + +#ifdef VIPS_DEBUG_AMBER +#define VIPS_DEBUG_MSG_AMBER( ... ) \ + G_STMT_START { printf( "amber: " __VA_ARGS__ ); } G_STMT_END +#else +#define VIPS_DEBUG_MSG_AMBER( ... ) \ + G_STMT_START { ; } G_STMT_END +#endif /*VIPS_DEBUG_AMBER*/ + +#ifdef VIPS_DEBUG_GREEN +#define VIPS_DEBUG_MSG_GREEN( ... ) \ + G_STMT_START { printf( "green: " __VA_ARGS__ ); } G_STMT_END +#else +#define VIPS_DEBUG_MSG_GREEN( ... ) \ + G_STMT_START { ; } G_STMT_END +#endif /*VIPS_DEBUG_GREEN*/ + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /* VIPS_DEBUG_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/draw.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/draw.h new file mode 100644 index 0000000..889543b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/draw.h @@ -0,0 +1,113 @@ +/* draw.h + * + * 3/11/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_DRAW_H +#define VIPS_DRAW_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef enum { + VIPS_COMBINE_MODE_SET, + VIPS_COMBINE_MODE_ADD, + VIPS_COMBINE_MODE_LAST +} VipsCombineMode; + +VIPS_API +int vips_draw_rect( VipsImage *image, + double *ink, int n, int left, int top, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_draw_rect1( VipsImage *image, + double ink, int left, int top, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_draw_point( VipsImage *image, double *ink, int n, int x, int y, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_draw_point1( VipsImage *image, double ink, int x, int y, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_draw_image( VipsImage *image, VipsImage *sub, int x, int y, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_draw_mask( VipsImage *image, + double *ink, int n, VipsImage *mask, int x, int y, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_draw_mask1( VipsImage *image, + double ink, VipsImage *mask, int x, int y, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_draw_line( VipsImage *image, + double *ink, int n, int x1, int y1, int x2, int y2, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_draw_line1( VipsImage *image, + double ink, int x1, int y1, int x2, int y2, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_draw_circle( VipsImage *image, + double *ink, int n, int cx, int cy, int radius, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_draw_circle1( VipsImage *image, + double ink, int cx, int cy, int radius, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_draw_flood( VipsImage *image, double *ink, int n, int x, int y, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_draw_flood1( VipsImage *image, double ink, int x, int y, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_draw_smudge( VipsImage *image, + int left, int top, int width, int height, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_DRAW_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/enumtypes.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/enumtypes.h new file mode 100644 index 0000000..aabb8f2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/enumtypes.h @@ -0,0 +1,174 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +#ifndef VIPS_ENUM_TYPES_H +#define VIPS_ENUM_TYPES_H + +G_BEGIN_DECLS +/* enumerations from "arithmetic.h" */ +VIPS_API +GType vips_operation_math_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_MATH (vips_operation_math_get_type()) +VIPS_API +GType vips_operation_math2_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_MATH2 (vips_operation_math2_get_type()) +VIPS_API +GType vips_operation_round_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_ROUND (vips_operation_round_get_type()) +VIPS_API +GType vips_operation_relational_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_RELATIONAL (vips_operation_relational_get_type()) +VIPS_API +GType vips_operation_boolean_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_BOOLEAN (vips_operation_boolean_get_type()) +VIPS_API +GType vips_operation_complex_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_COMPLEX (vips_operation_complex_get_type()) +VIPS_API +GType vips_operation_complex2_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_COMPLEX2 (vips_operation_complex2_get_type()) +VIPS_API +GType vips_operation_complexget_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_COMPLEXGET (vips_operation_complexget_get_type()) +/* enumerations from "basic.h" */ +VIPS_API +GType vips_precision_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_PRECISION (vips_precision_get_type()) +/* enumerations from "colour.h" */ +VIPS_API +GType vips_intent_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_INTENT (vips_intent_get_type()) +VIPS_API +GType vips_pcs_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_PCS (vips_pcs_get_type()) +/* enumerations from "conversion.h" */ +VIPS_API +GType vips_extend_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_EXTEND (vips_extend_get_type()) +VIPS_API +GType vips_compass_direction_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_COMPASS_DIRECTION (vips_compass_direction_get_type()) +VIPS_API +GType vips_direction_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_DIRECTION (vips_direction_get_type()) +VIPS_API +GType vips_align_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_ALIGN (vips_align_get_type()) +VIPS_API +GType vips_angle_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_ANGLE (vips_angle_get_type()) +VIPS_API +GType vips_angle45_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_ANGLE45 (vips_angle45_get_type()) +VIPS_API +GType vips_interesting_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_INTERESTING (vips_interesting_get_type()) +VIPS_API +GType vips_blend_mode_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_BLEND_MODE (vips_blend_mode_get_type()) +/* enumerations from "convolution.h" */ +VIPS_API +GType vips_combine_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_COMBINE (vips_combine_get_type()) +/* enumerations from "draw.h" */ +VIPS_API +GType vips_combine_mode_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_COMBINE_MODE (vips_combine_mode_get_type()) +/* enumerations from "foreign.h" */ +VIPS_API +GType vips_foreign_flags_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_FLAGS (vips_foreign_flags_get_type()) +VIPS_API +GType vips_fail_on_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FAIL_ON (vips_fail_on_get_type()) +VIPS_API +GType vips_saveable_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_SAVEABLE (vips_saveable_get_type()) +VIPS_API +GType vips_foreign_subsample_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_SUBSAMPLE (vips_foreign_subsample_get_type()) +VIPS_API +GType vips_foreign_jpeg_subsample_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_JPEG_SUBSAMPLE (vips_foreign_jpeg_subsample_get_type()) +VIPS_API +GType vips_foreign_webp_preset_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_WEBP_PRESET (vips_foreign_webp_preset_get_type()) +VIPS_API +GType vips_foreign_tiff_compression_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_TIFF_COMPRESSION (vips_foreign_tiff_compression_get_type()) +VIPS_API +GType vips_foreign_tiff_predictor_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_TIFF_PREDICTOR (vips_foreign_tiff_predictor_get_type()) +VIPS_API +GType vips_foreign_tiff_resunit_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_TIFF_RESUNIT (vips_foreign_tiff_resunit_get_type()) +VIPS_API +GType vips_foreign_png_filter_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_PNG_FILTER (vips_foreign_png_filter_get_type()) +VIPS_API +GType vips_foreign_ppm_format_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_PPM_FORMAT (vips_foreign_ppm_format_get_type()) +VIPS_API +GType vips_foreign_dz_layout_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_DZ_LAYOUT (vips_foreign_dz_layout_get_type()) +VIPS_API +GType vips_foreign_dz_depth_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_DZ_DEPTH (vips_foreign_dz_depth_get_type()) +VIPS_API +GType vips_foreign_dz_container_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_DZ_CONTAINER (vips_foreign_dz_container_get_type()) +VIPS_API +GType vips_foreign_heif_compression_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_FOREIGN_HEIF_COMPRESSION (vips_foreign_heif_compression_get_type()) +/* enumerations from "image.h" */ +VIPS_API +GType vips_demand_style_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_DEMAND_STYLE (vips_demand_style_get_type()) +VIPS_API +GType vips_image_type_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_IMAGE_TYPE (vips_image_type_get_type()) +VIPS_API +GType vips_interpretation_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_INTERPRETATION (vips_interpretation_get_type()) +VIPS_API +GType vips_band_format_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_BAND_FORMAT (vips_band_format_get_type()) +VIPS_API +GType vips_coding_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_CODING (vips_coding_get_type()) +VIPS_API +GType vips_access_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_ACCESS (vips_access_get_type()) +/* enumerations from "morphology.h" */ +VIPS_API +GType vips_operation_morphology_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_MORPHOLOGY (vips_operation_morphology_get_type()) +/* enumerations from "object.h" */ +VIPS_API +GType vips_argument_flags_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_ARGUMENT_FLAGS (vips_argument_flags_get_type()) +/* enumerations from "operation.h" */ +VIPS_API +GType vips_operation_flags_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_OPERATION_FLAGS (vips_operation_flags_get_type()) +/* enumerations from "region.h" */ +VIPS_API +GType vips_region_shrink_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_REGION_SHRINK (vips_region_shrink_get_type()) +/* enumerations from "resample.h" */ +VIPS_API +GType vips_kernel_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_KERNEL (vips_kernel_get_type()) +VIPS_API +GType vips_size_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_SIZE (vips_size_get_type()) +/* enumerations from "util.h" */ +VIPS_API +GType vips_token_get_type (void) G_GNUC_CONST; +#define VIPS_TYPE_TOKEN (vips_token_get_type()) +G_END_DECLS + +#endif /*VIPS_ENUM_TYPES_H*/ + +/* Generated data ends here */ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/error.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/error.h new file mode 100644 index 0000000..8cdbcab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/error.h @@ -0,0 +1,142 @@ +/* Error handling. + */ + +/* + + Copyright (C) 1991-2005 The National Gallery + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_ERROR_H +#define VIPS_ERROR_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +VIPS_API +const char *vips_error_buffer( void ); +VIPS_API +char *vips_error_buffer_copy( void ); +VIPS_API +void vips_error_clear( void ); + +VIPS_API +void vips_error_freeze( void ); +VIPS_API +void vips_error_thaw( void ); + +VIPS_API +void vips_error( const char *domain, const char *fmt, ... ) + __attribute__((format(printf, 2, 3))); +VIPS_API +void vips_verror( const char *domain, const char *fmt, va_list ap ); +VIPS_API +void vips_error_system( int err, const char *domain, const char *fmt, ... ) + __attribute__((format(printf, 3, 4))); +VIPS_API +void vips_verror_system( int err, const char *domain, + const char *fmt, va_list ap ); +VIPS_API +void vips_error_g( GError **error ); +VIPS_API +void vips_g_error( GError **error ); + +VIPS_API +void vips_error_exit( const char *fmt, ... ) + __attribute__((noreturn, format(printf, 1, 2))); + +VIPS_API +int vips_check_uncoded( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_coding( const char *domain, VipsImage *im, VipsCoding coding ); +VIPS_API +int vips_check_coding_known( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_coding_noneorlabq( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_coding_same( const char *domain, VipsImage *im1, VipsImage *im2 ); +VIPS_API +int vips_check_mono( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_bands( const char *domain, VipsImage *im, int bands ); +VIPS_API +int vips_check_bands_1or3( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_bands_atleast( const char *domain, VipsImage *im, int bands ); +VIPS_API +int vips_check_bands_1orn( const char *domain, VipsImage *im1, VipsImage *im2 ); +VIPS_API +int vips_check_bands_1orn_unary( const char *domain, VipsImage *im, int n ); +VIPS_API +int vips_check_bands_same( const char *domain, VipsImage *im1, VipsImage *im2 ); +VIPS_API +int vips_check_bandno( const char *domain, VipsImage *im, int bandno ); + +VIPS_API +int vips_check_int( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_uint( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_uintorf( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_noncomplex( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_complex( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_twocomponents( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_format( const char *domain, VipsImage *im, VipsBandFormat fmt ); +VIPS_API +int vips_check_u8or16( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_8or16( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_u8or16orf( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_format_same( const char *domain, VipsImage *im1, VipsImage *im2 ); +VIPS_API +int vips_check_size_same( const char *domain, VipsImage *im1, VipsImage *im2 ); +VIPS_API +int vips_check_oddsquare( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_vector_length( const char *domain, int n, int len ); +VIPS_API +int vips_check_vector( const char *domain, int n, VipsImage *im ); +VIPS_API +int vips_check_hist( const char *domain, VipsImage *im ); +VIPS_API +int vips_check_matrix( const char *domain, VipsImage *im, VipsImage **out ); +VIPS_API +int vips_check_separable( const char *domain, VipsImage *im ); + +VIPS_API +int vips_check_precision_intfloat( const char *domain, + VipsPrecision precision ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_ERROR_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/foreign.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/foreign.h new file mode 100644 index 0000000..dba1bd1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/foreign.h @@ -0,0 +1,965 @@ +/* Base type for supported image formats. Subclass this to add a new + * format. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_FOREIGN_H +#define VIPS_FOREIGN_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_TYPE_FOREIGN (vips_foreign_get_type()) +#define VIPS_FOREIGN( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_FOREIGN, VipsForeign )) +#define VIPS_FOREIGN_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_FOREIGN, VipsForeignClass)) +#define VIPS_IS_FOREIGN( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN )) +#define VIPS_IS_FOREIGN_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN )) +#define VIPS_FOREIGN_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_FOREIGN, VipsForeignClass )) + +typedef struct _VipsForeign { + VipsOperation parent_object; + + /*< public >*/ + +} VipsForeign; + +typedef struct _VipsForeignClass { + VipsOperationClass parent_class; + + /*< public >*/ + + /* Loop over formats in this order, default 0. We need this because + * some formats can be read by several loaders (eg. tiff can be read + * by the libMagick loader as well as by the tiff loader), and we want + * to make sure the better loader comes first. + */ + int priority; + + /* Null-terminated list of recommended suffixes, eg. ".tif", ".tiff". + * This can be used by both load and save, so it's in the base class. + */ + const char **suffs; + +} VipsForeignClass; + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_foreign_get_type(void); + +/* Map over and find formats. This uses type introspection to loop over + * subclasses of VipsForeign. + */ +VIPS_API +void *vips_foreign_map( const char *base, + VipsSListMap2Fn fn, void *a, void *b ); + +/* Image file load properties. + * + * Keep in sync with the deprecated VipsFormatFlags, we need to be able to + * cast between them. + */ +typedef enum /*< flags >*/ { + VIPS_FOREIGN_NONE = 0, /* No flags set */ + VIPS_FOREIGN_PARTIAL = 1, /* Lazy read OK (eg. tiled tiff) */ + VIPS_FOREIGN_BIGENDIAN = 2, /* Most-significant byte first */ + VIPS_FOREIGN_SEQUENTIAL = 4, /* Top-to-bottom lazy read OK */ + VIPS_FOREIGN_ALL = 7 /* All flags set */ +} VipsForeignFlags; + +/** + * VipsFailOn: + * @VIPS_FAIL_ON_NONE: never stop + * @VIPS_FAIL_ON_TRUNCATED: stop on image truncated, nothing else + * @VIPS_FAIL_ON_ERROR: stop on serious error or truncation + * @VIPS_FAIL_ON_WARNING: stop on anything, even warnings + * + * How sensitive loaders are to errors, from never stop (very insensitive), to + * stop on the smallest warning (very sensitive). + * + * Each one implies the ones before it, so #VIPS_FAIL_ON_ERROR implies + * #VIPS_FAIL_ON_TRUNCATED. + */ +typedef enum { + VIPS_FAIL_ON_NONE, + VIPS_FAIL_ON_TRUNCATED, + VIPS_FAIL_ON_ERROR, + VIPS_FAIL_ON_WARNING, + VIPS_FAIL_ON_LAST +} VipsFailOn; + +#define VIPS_TYPE_FOREIGN_LOAD (vips_foreign_load_get_type()) +#define VIPS_FOREIGN_LOAD( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoad )) +#define VIPS_FOREIGN_LOAD_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoadClass)) +#define VIPS_IS_FOREIGN_LOAD( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_LOAD )) +#define VIPS_IS_FOREIGN_LOAD_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_LOAD )) +#define VIPS_FOREIGN_LOAD_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoadClass )) + +typedef struct _VipsForeignLoad { + VipsForeign parent_object; + /*< private >*/ + + /* Set TRUE to force open via memory. + */ + gboolean memory; + + /* Type of access upstream wants and the loader must supply. + */ + VipsAccess access; + + /* Flags for this load operation. + */ + VipsForeignFlags flags; + + /* Behaviour on error. + */ + VipsFailOn fail_on; + + /* Deprecated and unused. Just here for compat. + */ + gboolean fail; + gboolean sequential; + + /*< public >*/ + + /* The image we generate. This must be set by ->header(). + */ + VipsImage *out; + + /* The behind-the-scenes real image we decompress to. This can be a + * disc file or a memory buffer. This must be set by ->load(). + */ + VipsImage *real; + + /* Set this to tag the operation as nocache. + */ + gboolean nocache; + + /* Deprecated: the memory option used to be called disc and default + * TRUE. + */ + gboolean disc; + + /* Set if a start function fails. We want to prevent the other starts + * from also triggering the load. + */ + gboolean error; +} VipsForeignLoad; + +typedef struct _VipsForeignLoadClass { + VipsForeignClass parent_class; + /*< public >*/ + + /* Is a file in this format. + * + * This function should return %TRUE if the file contains an image of + * this type. If you don't define this function, #VipsForeignLoad + * will use @suffs instead. + */ + gboolean (*is_a)( const char *filename ); + + /* Is a buffer in this format. + * + * This function should return %TRUE if the buffer contains an image of + * this type. + */ + gboolean (*is_a_buffer)( const void *data, size_t size ); + + /* Is a stream in this format. + * + * This function should return %TRUE if the stream contains an image of + * this type. + */ + gboolean (*is_a_source)( VipsSource *source ); + + /* Get the flags from a filename. + * + * This function should examine the file and return a set + * of flags. If you don't define it, vips will default to 0 (no flags + * set). + * + * This method is necessary for vips7 compatibility. Don't define + * it if you don't need vips7. + */ + VipsForeignFlags (*get_flags_filename)( const char *filename ); + + /* Get the flags for this load operation. Images can be loaded from + * (for example) memory areas rather than files, so you can't just use + * @get_flags_filename(). + */ + VipsForeignFlags (*get_flags)( VipsForeignLoad *load ); + + /* Do the minimum read we can. + * + * Set the header fields in @out from @filename. If you can read the + * whole image as well with no performance cost (as with vipsload), + * or if your loader does not support reading only the header, read + * the entire image in this method and leave @load() NULL. + * + * @header() needs to set the dhint on the image .. otherwise you get + * the default SMALLTILE. + * + * Return 0 for success, -1 for error, setting vips_error(). + */ + int (*header)( VipsForeignLoad *load ); + + /* Read the whole image into @real. The pixels will get copied to @out + * later. + * + * You can omit this method if you define a @header() method which + * loads the whole file. + * + * Return 0 for success, -1 for error, setting + * vips_error(). + */ + int (*load)( VipsForeignLoad *load ); +} VipsForeignLoadClass; + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_foreign_load_get_type(void); + +VIPS_API +const char *vips_foreign_find_load( const char *filename ); +VIPS_API +const char *vips_foreign_find_load_buffer( const void *data, size_t size ); +VIPS_API +const char *vips_foreign_find_load_source( VipsSource *source ); + +VIPS_API +VipsForeignFlags vips_foreign_flags( const char *loader, const char *filename ); +VIPS_API +gboolean vips_foreign_is_a( const char *loader, const char *filename ); +VIPS_API +gboolean vips_foreign_is_a_buffer( const char *loader, + const void *data, size_t size ); +VIPS_API +gboolean vips_foreign_is_a_source( const char *loader, + VipsSource *source ); + +VIPS_API +void vips_foreign_load_invalidate( VipsImage *image ); + +#define VIPS_TYPE_FOREIGN_SAVE (vips_foreign_save_get_type()) +#define VIPS_FOREIGN_SAVE( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_FOREIGN_SAVE, VipsForeignSave )) +#define VIPS_FOREIGN_SAVE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_FOREIGN_SAVE, VipsForeignSaveClass)) +#define VIPS_IS_FOREIGN_SAVE( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_SAVE )) +#define VIPS_IS_FOREIGN_SAVE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_SAVE )) +#define VIPS_FOREIGN_SAVE_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_FOREIGN_SAVE, VipsForeignSaveClass )) + +/** + * VipsSaveable: + * @VIPS_SAVEABLE_MONO: 1 band (eg. CSV) + * @VIPS_SAVEABLE_RGB: 1 or 3 bands (eg. PPM) + * @VIPS_SAVEABLE_RGBA: 1, 2, 3 or 4 bands (eg. PNG) + * @VIPS_SAVEABLE_RGBA_ONLY: 3 or 4 bands (eg. WEBP) + * @VIPS_SAVEABLE_RGB_CMYK: 1, 3 or 4 bands (eg. JPEG) + * @VIPS_SAVEABLE_ANY: any number of bands (eg. TIFF) + * + * See also: #VipsForeignSave. + */ +typedef enum { + VIPS_SAVEABLE_MONO, + VIPS_SAVEABLE_RGB, + VIPS_SAVEABLE_RGBA, + VIPS_SAVEABLE_RGBA_ONLY, + VIPS_SAVEABLE_RGB_CMYK, + VIPS_SAVEABLE_ANY, + VIPS_SAVEABLE_LAST +} VipsSaveable; + +typedef struct _VipsForeignSave { + VipsForeign parent_object; + + /* Don't attach metadata. + */ + gboolean strip; + + /* If flattening out alpha, the background colour to use. Default to + * 0 (black). + */ + VipsArrayDouble *background; + + /* Set to non-zero to set the page size for multi-page save. + */ + int page_height; + + /*< public >*/ + + /* The image we are to save, as supplied by our caller. + */ + VipsImage *in; + + /* @in converted to a saveable format (eg. 8-bit RGB) according to the + * instructions you give in the class fields below. + * + * This is the image you should actually write to the output. + */ + VipsImage *ready; + +} VipsForeignSave; + +typedef struct _VipsForeignSaveClass { + VipsForeignClass parent_class; + + /*< public >*/ + + /* How this format treats bands. + * + * @saveable describes the bands that your saver can handle. For + * example, PPM images can have 1 or 3 bands (mono or RGB), so it + * uses #VIPS_SAVEABLE_RGB. + */ + VipsSaveable saveable; + + /* How this format treats band formats. + * + * @format_table describes the band formats that your saver can + * handle. For each of the 10 #VipsBandFormat values, the array + * should give the format your saver will accept. + */ + VipsBandFormat *format_table; + + /* The set of coding types this format can save. For example, jpeg can + * only save NONE, so has NONE TRUE and RAD and LABQ FALSE. + * + * Default NONE TRUE, RAD and LABQ FALSE. + */ + gboolean coding[VIPS_CODING_LAST]; +} VipsForeignSaveClass; + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_foreign_save_get_type(void); + +VIPS_API +const char *vips_foreign_find_save( const char *filename ); +VIPS_API +gchar **vips_foreign_get_suffixes( void ); +VIPS_API +const char *vips_foreign_find_save_buffer( const char *suffix ); +VIPS_API +const char *vips_foreign_find_save_target( const char *suffix ); + +VIPS_API +int vips_vipsload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_vipsload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_vipssave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_vipssave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_openslideload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_openslideload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); + +/** + * VipsForeignSubsample: + * @VIPS_FOREIGN_SUBSAMPLE_AUTO: prevent subsampling when quality >= 90 + * @VIPS_FOREIGN_SUBSAMPLE_ON: always perform subsampling + * @VIPS_FOREIGN_SUBSAMPLE_OFF: never perform subsampling + * + * Set subsampling mode. + */ +typedef enum { + VIPS_FOREIGN_SUBSAMPLE_AUTO, + VIPS_FOREIGN_SUBSAMPLE_ON, + VIPS_FOREIGN_SUBSAMPLE_OFF, + VIPS_FOREIGN_SUBSAMPLE_LAST +} VipsForeignSubsample; + +/** + * VipsForeignJpegSubsample: + * @VIPS_FOREIGN_JPEG_SUBSAMPLE_AUTO: default preset + * @VIPS_FOREIGN_JPEG_SUBSAMPLE_ON: always perform subsampling + * @VIPS_FOREIGN_JPEG_SUBSAMPLE_OFF: never perform subsampling + * + * Set jpeg subsampling mode. + * + * DEPRECATED: use #VipsForeignSubsample + */ +typedef enum { + VIPS_FOREIGN_JPEG_SUBSAMPLE_AUTO, + VIPS_FOREIGN_JPEG_SUBSAMPLE_ON, + VIPS_FOREIGN_JPEG_SUBSAMPLE_OFF, + VIPS_FOREIGN_JPEG_SUBSAMPLE_LAST +} VipsForeignJpegSubsample; + +VIPS_API +int vips_jpegload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jpegload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jpegload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_jpegsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jpegsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jpegsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jpegsave_mime( VipsImage *in, ... ) + __attribute__((sentinel)); + +/** + * VipsForeignWebpPreset: + * @VIPS_FOREIGN_WEBP_PRESET_DEFAULT: default preset + * @VIPS_FOREIGN_WEBP_PRESET_PICTURE: digital picture, like portrait, inner shot + * @VIPS_FOREIGN_WEBP_PRESET_PHOTO: outdoor photograph, with natural lighting + * @VIPS_FOREIGN_WEBP_PRESET_DRAWING: hand or line drawing, with high-contrast details + * @VIPS_FOREIGN_WEBP_PRESET_ICON: small-sized colorful images + * @VIPS_FOREIGN_WEBP_PRESET_TEXT: text-like + * + * Tune lossy encoder settings for different image types. + */ +typedef enum { + VIPS_FOREIGN_WEBP_PRESET_DEFAULT, + VIPS_FOREIGN_WEBP_PRESET_PICTURE, + VIPS_FOREIGN_WEBP_PRESET_PHOTO, + VIPS_FOREIGN_WEBP_PRESET_DRAWING, + VIPS_FOREIGN_WEBP_PRESET_ICON, + VIPS_FOREIGN_WEBP_PRESET_TEXT, + VIPS_FOREIGN_WEBP_PRESET_LAST +} VipsForeignWebpPreset; + +VIPS_API +int vips_webpload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_webpload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_webpload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_webpsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_webpsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_webpsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_webpsave_mime( VipsImage *in, ... ) + __attribute__((sentinel)); + +/** + * VipsForeignTiffCompression: + * @VIPS_FOREIGN_TIFF_COMPRESSION_NONE: no compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_JPEG: jpeg compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE: deflate (zip) compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS: packbits compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4: fax4 compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_LZW: LZW compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_WEBP: WEBP compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD: ZSTD compression + * @VIPS_FOREIGN_TIFF_COMPRESSION_JP2K: JP2K compression + * + * The compression types supported by the tiff writer. + * + * Use @Q to set the jpeg compression level, default 75. + * + * Use @predictor to set the lzw or deflate prediction, default horizontal. + * + * Use @lossless to set WEBP lossless compression. + * + * Use @level to set webp and zstd compression level. + */ +typedef enum { + VIPS_FOREIGN_TIFF_COMPRESSION_NONE, + VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, + VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE, + VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS, + VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4, + VIPS_FOREIGN_TIFF_COMPRESSION_LZW, + VIPS_FOREIGN_TIFF_COMPRESSION_WEBP, + VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD, + VIPS_FOREIGN_TIFF_COMPRESSION_JP2K, + VIPS_FOREIGN_TIFF_COMPRESSION_LAST +} VipsForeignTiffCompression; + +/** + * VipsForeignTiffPredictor: + * @VIPS_FOREIGN_TIFF_PREDICTOR_NONE: no prediction + * @VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL: horizontal differencing + * @VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT: float predictor + * + * The predictor can help deflate and lzw compression. The values are fixed by + * the tiff library. + */ +typedef enum { + VIPS_FOREIGN_TIFF_PREDICTOR_NONE = 1, + VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL = 2, + VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT = 3, + VIPS_FOREIGN_TIFF_PREDICTOR_LAST +} VipsForeignTiffPredictor; + +/** + * VipsForeignTiffResunit: + * @VIPS_FOREIGN_TIFF_RESUNIT_CM: use centimeters + * @VIPS_FOREIGN_TIFF_RESUNIT_INCH: use inches + * + * Use inches or centimeters as the resolution unit for a tiff file. + */ +typedef enum { + VIPS_FOREIGN_TIFF_RESUNIT_CM, + VIPS_FOREIGN_TIFF_RESUNIT_INCH, + VIPS_FOREIGN_TIFF_RESUNIT_LAST +} VipsForeignTiffResunit; + +VIPS_API +int vips_tiffload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tiffload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tiffload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tiffsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tiffsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_tiffsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_openexrload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_fitsload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_fitssave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_analyzeload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_rawload( const char *filename, VipsImage **out, + int width, int height, int bands, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rawsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rawsave_fd( VipsImage *in, int fd, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_csvload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_csvload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_csvsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_csvsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_matrixload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_matrixload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_matrixsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_matrixsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_matrixprint( VipsImage *in, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_magickload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_magickload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_magicksave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_magicksave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); + +/** + * VipsForeignPngFilter: + * @VIPS_FOREIGN_PNG_FILTER_NONE: no filtering + * @VIPS_FOREIGN_PNG_FILTER_SUB: difference to the left + * @VIPS_FOREIGN_PNG_FILTER_UP: difference up + * @VIPS_FOREIGN_PNG_FILTER_AVG: average of left and up + * @VIPS_FOREIGN_PNG_FILTER_PAETH: pick best neighbor predictor automatically + * @VIPS_FOREIGN_PNG_FILTER_ALL: adaptive + * + * http://www.w3.org/TR/PNG-Filters.html + * The values mirror those of png.h in libpng. + */ +typedef enum /*< flags >*/ { + VIPS_FOREIGN_PNG_FILTER_NONE = 0x08, + VIPS_FOREIGN_PNG_FILTER_SUB = 0x10, + VIPS_FOREIGN_PNG_FILTER_UP = 0x20, + VIPS_FOREIGN_PNG_FILTER_AVG = 0x40, + VIPS_FOREIGN_PNG_FILTER_PAETH = 0x80, + VIPS_FOREIGN_PNG_FILTER_ALL = 0xF8 +} VipsForeignPngFilter; + +VIPS_API +int vips_pngload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pngload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pngload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pngsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pngsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pngsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); + +/** + * VipsForeignPpmFormat: + * @VIPS_FOREIGN_PPM_FORMAT_PBM: portable bitmap + * @VIPS_FOREIGN_PPM_FORMAT_PGM: portable greymap + * @VIPS_FOREIGN_PPM_FORMAT_PPM: portable pixmap + * @VIPS_FOREIGN_PPM_FORMAT_PFM: portable float map + * + * The netpbm file format to save as. + * + * #VIPS_FOREIGN_PPM_FORMAT_PBM images are single bit. + * + * #VIPS_FOREIGN_PPM_FORMAT_PGM images are 8, 16, or 32-bits, one band. + * + * #VIPS_FOREIGN_PPM_FORMAT_PPM images are 8, 16, or 32-bits, three bands. + * + * #VIPS_FOREIGN_PPM_FORMAT_PFM images are 32-bit float pixels. + */ +typedef enum { + VIPS_FOREIGN_PPM_FORMAT_PBM, + VIPS_FOREIGN_PPM_FORMAT_PGM, + VIPS_FOREIGN_PPM_FORMAT_PPM, + VIPS_FOREIGN_PPM_FORMAT_PFM, + VIPS_FOREIGN_PPM_FORMAT_LAST +} VipsForeignPpmFormat; + +VIPS_API +int vips_ppmload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_ppmload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_ppmsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_ppmsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_matload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_radload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_radload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_radload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_radsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_radsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_radsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_pdfload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pdfload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_pdfload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_svgload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_svgload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_svgload_string( const char *str, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_svgload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_gifload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gifload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gifload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_gifsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gifsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_gifsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_heifload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_heifload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_heifload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_heifsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_heifsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_heifsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_niftiload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_niftiload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_niftisave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_jp2kload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jp2kload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jp2kload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jp2ksave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jp2ksave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jp2ksave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_jxlload_source( VipsSource *source, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jxlload_buffer( void *buf, size_t len, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jxlload( const char *filename, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jxlsave( VipsImage *in, const char *filename, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jxlsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_jxlsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +/** + * VipsForeignDzLayout: + * @VIPS_FOREIGN_DZ_LAYOUT_DZ: use DeepZoom directory layout + * @VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY: use Zoomify directory layout + * @VIPS_FOREIGN_DZ_LAYOUT_GOOGLE: use Google maps directory layout + * @VIPS_FOREIGN_DZ_LAYOUT_IIIF: use IIIF v2 directory layout + * @VIPS_FOREIGN_DZ_LAYOUT_IIIF3: use IIIF v3 directory layout + * + * What directory layout and metadata standard to use. + */ +typedef enum { + VIPS_FOREIGN_DZ_LAYOUT_DZ, + VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY, + VIPS_FOREIGN_DZ_LAYOUT_GOOGLE, + VIPS_FOREIGN_DZ_LAYOUT_IIIF, + VIPS_FOREIGN_DZ_LAYOUT_IIIF3, + VIPS_FOREIGN_DZ_LAYOUT_LAST +} VipsForeignDzLayout; + +/** + * VipsForeignDzDepth: + * @VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL: create layers down to 1x1 pixel + * @VIPS_FOREIGN_DZ_DEPTH_ONETILE: create layers down to 1x1 tile + * @VIPS_FOREIGN_DZ_DEPTH_ONE: only create a single layer + * + * How many pyramid layers to create. + */ +typedef enum { + VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL, + VIPS_FOREIGN_DZ_DEPTH_ONETILE, + VIPS_FOREIGN_DZ_DEPTH_ONE, + VIPS_FOREIGN_DZ_DEPTH_LAST +} VipsForeignDzDepth; + +/** + * VipsForeignDzContainer: + * @VIPS_FOREIGN_DZ_CONTAINER_FS: write tiles to the filesystem + * @VIPS_FOREIGN_DZ_CONTAINER_ZIP: write tiles to a zip file + * @VIPS_FOREIGN_DZ_CONTAINER_SZI: write to a szi file + * + * How many pyramid layers to create. + */ +typedef enum { + VIPS_FOREIGN_DZ_CONTAINER_FS, + VIPS_FOREIGN_DZ_CONTAINER_ZIP, + VIPS_FOREIGN_DZ_CONTAINER_SZI, + VIPS_FOREIGN_DZ_CONTAINER_LAST +} VipsForeignDzContainer; + +VIPS_API +int vips_dzsave( VipsImage *in, const char *name, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_dzsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_dzsave_target( VipsImage *in, VipsTarget *target, ... ) + __attribute__((sentinel)); + +/** + * VipsForeignHeifCompression: + * @VIPS_FOREIGN_HEIF_COMPRESSION_HEVC: x265 + * @VIPS_FOREIGN_HEIF_COMPRESSION_AVC: x264 + * @VIPS_FOREIGN_HEIF_COMPRESSION_JPEG: jpeg + * @VIPS_FOREIGN_HEIF_COMPRESSION_AV1: aom + * + * The compression format to use inside a HEIF container. + * + * This is assumed to use the same numbering as %heif_compression_format. + */ +typedef enum { + VIPS_FOREIGN_HEIF_COMPRESSION_HEVC = 1, + VIPS_FOREIGN_HEIF_COMPRESSION_AVC = 2, + VIPS_FOREIGN_HEIF_COMPRESSION_JPEG = 3, + VIPS_FOREIGN_HEIF_COMPRESSION_AV1 = 4, + VIPS_FOREIGN_HEIF_COMPRESSION_LAST +} VipsForeignHeifCompression; + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_FOREIGN_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/format.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/format.h new file mode 100644 index 0000000..5c2d572 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/format.h @@ -0,0 +1,135 @@ +/* Base type for supported image formats. Subclass this to add a new + * format. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_FORMAT_H +#define VIPS_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_TYPE_FORMAT (vips_format_get_type()) +#define VIPS_FORMAT( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_FORMAT, VipsFormat )) +#define VIPS_FORMAT_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_FORMAT, VipsFormatClass)) +#define VIPS_IS_FORMAT( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FORMAT )) +#define VIPS_IS_FORMAT_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FORMAT )) +#define VIPS_FORMAT_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_FORMAT, VipsFormatClass )) + +/* Image file properties. + */ +typedef enum { + VIPS_FORMAT_NONE = 0, /* No flags set */ + VIPS_FORMAT_PARTIAL = 1, /* Lazy read OK (eg. tiled tiff) */ + VIPS_FORMAT_BIGENDIAN = 2 /* Most-significant byte first */ +} VipsFormatFlags; + +/* Don't instantiate these things, just use the class stuff. + */ + +typedef struct _VipsFormat { + VipsObject parent_object; + /*< public >*/ + +} VipsFormat; + +typedef struct _VipsFormatClass { + VipsObjectClass parent_class; + + /*< public >*/ + /* Is a file in this format. + */ + gboolean (*is_a)( const char * ); + + /* Read just the header into the VipsImage. + */ + int (*header)( const char *, VipsImage * ); + + /* Load the whole image. + */ + int (*load)( const char *, VipsImage * ); + + /* Write the VipsImage to the file in this format. + */ + int (*save)( VipsImage *, const char * ); + + /* Get the flags for this file in this format. + */ + VipsFormatFlags (*get_flags)( const char * ); + + /* Loop over formats in this order, default 0. We need this because + * some formats can be read by several loaders (eg. tiff can be read + * by the libMagick loader as well as by the tiff loader), and we want + * to make sure the better loader comes first. + */ + int priority; + + /* Null-terminated list of allowed suffixes, eg. ".tif", ".tiff". + */ + const char **suffs; +} VipsFormatClass; + +VIPS_API +GType vips_format_get_type( void ); + +/* Map over and find formats. This uses type introspection to loop over + * subclasses of VipsFormat. + */ +VIPS_API +void *vips_format_map( VipsSListMap2Fn fn, void *a, void *b ); +VIPS_API +VipsFormatClass *vips_format_for_file( const char *filename ); +VIPS_API +VipsFormatClass *vips_format_for_name( const char *filename ); + +VIPS_API +VipsFormatFlags vips_format_get_flags( VipsFormatClass *format, + const char *filename ); + +/* Read/write an image convenience functions. + */ +VIPS_API +int vips_format_read( const char *filename, VipsImage *out ); +VIPS_API +int vips_format_write( VipsImage *in, const char *filename ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_FORMAT_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/freqfilt.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/freqfilt.h new file mode 100644 index 0000000..1f2bc19 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/freqfilt.h @@ -0,0 +1,64 @@ +/* freq_filt.h + * + * 2/11/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_FREQFILT_H +#define VIPS_FREQFILT_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +VIPS_API +int vips_fwfft( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_invfft( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_freqmult( VipsImage *in, VipsImage *mask, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_spectrum( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_phasecor( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_FREQFILT_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/gate.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/gate.h new file mode 100644 index 0000000..a349bc3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/gate.h @@ -0,0 +1,82 @@ +/* Thread profiling. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_GATE_H +#define VIPS_GATE_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#include + +#define VIPS_GATE_START( NAME ) \ +G_STMT_START { \ + if( vips__thread_profile ) \ + vips__thread_gate_start( NAME ); \ +} G_STMT_END + +#define VIPS_GATE_STOP( NAME ) \ +G_STMT_START { \ + if( vips__thread_profile ) \ + vips__thread_gate_stop( NAME ); \ +} G_STMT_END + +#define VIPS_GATE_MALLOC( SIZE ) \ +G_STMT_START { \ + if( vips__thread_profile ) \ + vips__thread_malloc_free( (gint64) (SIZE) ); \ +} G_STMT_END + +#define VIPS_GATE_FREE( SIZE ) \ +G_STMT_START { \ + if( vips__thread_profile ) \ + vips__thread_malloc_free( -((gint64) (SIZE)) ); \ +} G_STMT_END + +extern gboolean vips__thread_profile; + +VIPS_API +void vips_profile_set( gboolean profile ); + +void vips__thread_profile_attach( const char *thread_name ); +void vips__thread_profile_detach( void ); +void vips__thread_profile_stop( void ); + +void vips__thread_gate_start( const char *gate_name ); +void vips__thread_gate_stop( const char *gate_name ); + +void vips__thread_malloc_free( gint64 size ); + +#endif /*VIPS_GATE_H*/ + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/generate.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/generate.h new file mode 100644 index 0000000..cba12ea --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/generate.h @@ -0,0 +1,92 @@ +/* Generate pixels. + * + * J.Cupitt, 8/4/93 + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_GENERATE_H +#define VIPS_GENERATE_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef int (*VipsRegionWrite)( VipsRegion *region, VipsRect *area, void *a ); +VIPS_API +int vips_sink_disc( VipsImage *im, VipsRegionWrite write_fn, void *a ); + +VIPS_API +int vips_sink( VipsImage *im, + VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, + void *a, void *b ); +VIPS_API +int vips_sink_tile( VipsImage *im, + int tile_width, int tile_height, + VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, + void *a, void *b ); + +typedef void (*VipsSinkNotify)( VipsImage *im, VipsRect *rect, void *a ); +VIPS_API +int vips_sink_screen( VipsImage *in, VipsImage *out, VipsImage *mask, + int tile_width, int tile_height, int max_tiles, + int priority, + VipsSinkNotify notify_fn, void *a ); + +VIPS_API +int vips_sink_memory( VipsImage *im ); + +VIPS_API +void *vips_start_one( VipsImage *out, void *a, void *b ); +VIPS_API +int vips_stop_one( void *seq, void *a, void *b ); +VIPS_API +void *vips_start_many( VipsImage *out, void *a, void *b ); +VIPS_API +int vips_stop_many( void *seq, void *a, void *b ); +VIPS_API +VipsImage **vips_allocate_input_array( VipsImage *out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_image_generate( VipsImage *image, + VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, + void *a, void *b ); + +VIPS_API +int vips_image_pipeline_array( VipsImage *image, + VipsDemandStyle hint, VipsImage **in ); +VIPS_API +int vips_image_pipelinev( VipsImage *image, VipsDemandStyle hint, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_GENERATE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/header.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/header.h new file mode 100644 index 0000000..1251fb4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/header.h @@ -0,0 +1,303 @@ +/* image header funcs + * + * 20/9/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_HEADER_H +#define VIPS_HEADER_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/** + * VIPS_META_EXIF_NAME: + * + * The name that JPEG read and write operations use for the image's EXIF data. + */ +#define VIPS_META_EXIF_NAME "exif-data" + +/** + * VIPS_META_XMP_NAME: + * + * The name that read and write operations use for the image's XMP data. + */ +#define VIPS_META_XMP_NAME "xmp-data" + +/** + * VIPS_META_IPTC_NAME: + * + * The name that read and write operations use for the image's IPTC data. + */ +#define VIPS_META_IPTC_NAME "iptc-data" + +/** + * VIPS_META_PHOTOSHOP_NAME: + * + * The name that TIFF read and write operations use for the image's + * TIFFTAG_PHOTOSHOP data. + */ +#define VIPS_META_PHOTOSHOP_NAME "photoshop-data" + +/** + * VIPS_META_ICC_NAME: + * + * The name we use to attach an ICC profile. The file read and write + * operations for TIFF, JPEG, PNG and others use this item of metadata to + * attach and save ICC profiles. The profile is updated by the + * vips_icc_transform() operations. + */ +#define VIPS_META_ICC_NAME "icc-profile-data" + +/** + * VIPS_META_IMAGEDESCRIPTION: + * + * The IMAGEDESCRIPTION tag. Often has useful metadata. + */ +#define VIPS_META_IMAGEDESCRIPTION "image-description" + +/** + * VIPS_META_RESOLUTION_UNIT: + * + * The JPEG and TIFF read and write operations use this to record the + * file's preferred unit for resolution. + */ +#define VIPS_META_RESOLUTION_UNIT "resolution-unit" + +/** + * VIPS_META_LOADER: + * + * Record the name of the original loader here. Handy for hinting file formats + * and for debugging. + */ +#define VIPS_META_LOADER "vips-loader" + +/** + * VIPS_META_SEQUENTIAL: + * + * Images loaded via vips_sequential() have this int field defined. Some + * operations (eg. vips_shrinkv()) add extra caches if they see it on their + * input. + */ +#define VIPS_META_SEQUENTIAL "vips-sequential" + +/** + * VIPS_META_ORIENTATION: + * + * The orientation tag for this image. An int from 1 - 8 using the standard + * exif/tiff meanings. + * + * * 1 - The 0th row represents the visual top of the image, and the 0th column + * represents the visual left-hand side. + * * 2 - The 0th row represents the visual top of the image, and the 0th column + * represents the visual right-hand side. + * * 3 - The 0th row represents the visual bottom of the image, and the 0th + * column represents the visual right-hand side. + * * 4 - The 0th row represents the visual bottom of the image, and the 0th + * column represents the visual left-hand side. + * * 5 - The 0th row represents the visual left-hand side of the image, and the + * 0th column represents the visual top. + * * 6 - The 0th row represents the visual right-hand side of the image, and the + * 0th column represents the visual top. + * * 7 - The 0th row represents the visual right-hand side of the image, and the + * 0th column represents the visual bottom. + * * 8 - The 0th row represents the visual left-hand side of the image, and the + * 0th column represents the visual bottom. + */ +#define VIPS_META_ORIENTATION "orientation" + +/** + * VIPS_META_PAGE_HEIGHT: + * + * If set, the height of each page when this image was loaded. If you save an + * image with "page-height" set to a format that supports multiple pages, such + * as tiff, the image will be saved as a series of pages. + */ +#define VIPS_META_PAGE_HEIGHT "page-height" + +/** + * VIPS_META_N_PAGES: + * + * If set, the number of pages in the original file. + */ +#define VIPS_META_N_PAGES "n-pages" + +/** + * VIPS_META_N_SUBIFDS: + * + * If set, the number of subifds in the first page of the file. + */ +#define VIPS_META_N_SUBIFDS "n-subifds" + +VIPS_API +guint64 vips_format_sizeof( VipsBandFormat format ); +VIPS_API +guint64 vips_format_sizeof_unsafe( VipsBandFormat format ); + +VIPS_API +int vips_image_get_width( const VipsImage *image ); +VIPS_API +int vips_image_get_height( const VipsImage *image ); +VIPS_API +int vips_image_get_bands( const VipsImage *image ); +VIPS_API +VipsBandFormat vips_image_get_format( const VipsImage *image ); +VIPS_API +double vips_image_get_format_max( VipsBandFormat format ); +VIPS_API +VipsBandFormat vips_image_guess_format( const VipsImage *image ); +VIPS_API +VipsCoding vips_image_get_coding( const VipsImage *image ); +VIPS_API +VipsInterpretation vips_image_get_interpretation( const VipsImage *image ); +VIPS_API +VipsInterpretation vips_image_guess_interpretation( const VipsImage *image ); +VIPS_API +double vips_image_get_xres( const VipsImage *image ); +VIPS_API +double vips_image_get_yres( const VipsImage *image ); +VIPS_API +int vips_image_get_xoffset( const VipsImage *image ); +VIPS_API +int vips_image_get_yoffset( const VipsImage *image ); +VIPS_API +const char *vips_image_get_filename( const VipsImage *image ); +VIPS_API +const char *vips_image_get_mode( const VipsImage *image ); +VIPS_API +double vips_image_get_scale( const VipsImage *image ); +VIPS_API +double vips_image_get_offset( const VipsImage *image ); +VIPS_API +int vips_image_get_page_height( VipsImage *image ); +VIPS_API +int vips_image_get_n_pages( VipsImage *image ); +VIPS_API +int vips_image_get_n_subifds( VipsImage *image ); +VIPS_API +int vips_image_get_orientation( VipsImage *image ); +VIPS_API +gboolean vips_image_get_orientation_swap( VipsImage *image ); +VIPS_API +const void *vips_image_get_data( VipsImage *image ); + +VIPS_API +void vips_image_init_fields( VipsImage *image, + int xsize, int ysize, int bands, + VipsBandFormat format, VipsCoding coding, + VipsInterpretation interpretation, + double xres, double yres ); + +VIPS_API +void vips_image_set( VipsImage *image, const char *name, GValue *value ); +VIPS_API +int vips_image_get( const VipsImage *image, + const char *name, GValue *value_copy ); +VIPS_API +int vips_image_get_as_string( const VipsImage *image, + const char *name, char **out ); +VIPS_API +GType vips_image_get_typeof( const VipsImage *image, const char *name ); +VIPS_API +gboolean vips_image_remove( VipsImage *image, const char *name ); +typedef void *(*VipsImageMapFn)( VipsImage *image, + const char *name, GValue *value, void *a ); +VIPS_API +void *vips_image_map( VipsImage *image, VipsImageMapFn fn, void *a ); +VIPS_API +gchar **vips_image_get_fields( VipsImage *image ); + +VIPS_API +void vips_image_set_area( VipsImage *image, + const char *name, VipsCallbackFn free_fn, void *data ); +VIPS_API +int vips_image_get_area( const VipsImage *image, + const char *name, const void **data ); +VIPS_API +void vips_image_set_blob( VipsImage *image, + const char *name, + VipsCallbackFn free_fn, const void *data, size_t length ); +VIPS_API +void vips_image_set_blob_copy( VipsImage *image, + const char *name, const void *data, size_t length ); +VIPS_API +int vips_image_get_blob( const VipsImage *image, + const char *name, const void **data, size_t *length ); + +VIPS_API +int vips_image_get_int( const VipsImage *image, const char *name, int *out ); +VIPS_API +void vips_image_set_int( VipsImage *image, const char *name, int i ); +VIPS_API +int vips_image_get_double( const VipsImage *image, + const char *name, double *out ); +VIPS_API +void vips_image_set_double( VipsImage *image, const char *name, double d ); +VIPS_API +int vips_image_get_string( const VipsImage *image, + const char *name, const char **out ); +VIPS_API +void vips_image_set_string( VipsImage *image, + const char *name, const char *str ); +VIPS_API +void vips_image_print_field( const VipsImage *image, const char *name ); +VIPS_API +int vips_image_get_image( const VipsImage *image, + const char *name, VipsImage **out ); +VIPS_API +void vips_image_set_image( VipsImage *image, const char *name, VipsImage *im ); +VIPS_API +void vips_image_set_array_int( VipsImage *image, const char *name, + const int *array, int n ); +VIPS_API +int vips_image_get_array_int( VipsImage *image, const char *name, + int **out, int *n ); +VIPS_API +int vips_image_get_array_double( VipsImage *image, const char *name, + double **out, int *n ); +VIPS_API +void vips_image_set_array_double( VipsImage *image, const char *name, + const double *array, int n ); + +VIPS_API +int vips_image_history_printf( VipsImage *image, const char *format, ... ) + __attribute__((format(printf, 2, 3))); +VIPS_API +int vips_image_history_args( VipsImage *image, + const char *name, int argc, char *argv[] ); +VIPS_API +const char *vips_image_get_history( VipsImage *image ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_HEADER_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/histogram.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/histogram.h new file mode 100644 index 0000000..db6a9ff --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/histogram.h @@ -0,0 +1,85 @@ +/* histograms_lut.h + * + * 3/11/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_HISTOGRAM_H +#define VIPS_HISTOGRAM_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +VIPS_API +int vips_maplut( VipsImage *in, VipsImage **out, VipsImage *lut, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_percent( VipsImage *in, double percent, int *threshold, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_stdif( VipsImage *in, VipsImage **out, int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_cum( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_norm( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_equal( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_plot( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_match( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_local( VipsImage *in, VipsImage **out, + int width, int height, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_ismonotonic( VipsImage *in, gboolean *out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_hist_entropy( VipsImage *in, double *out, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_case( VipsImage *index, VipsImage **cases, VipsImage **out, int n, + ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_HISTOGRAM_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/image.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/image.h new file mode 100644 index 0000000..458e63a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/image.h @@ -0,0 +1,605 @@ +/* VIPS image class. + * + * 7/7/09 + * - from vips.h + * 2/3/11 + * - move to GObject + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_IMAGE_H +#define VIPS_IMAGE_H + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* If you read MSB first, you get these two values. + * intel order: byte 0 = b6 + * SPARC order: byte 0 = 08 + */ +#define VIPS_MAGIC_INTEL (0xb6a6f208U) +#define VIPS_MAGIC_SPARC (0x08f2a6b6U) + +/* We have a maximum value for a coordinate at various points for sanity + * checking. For example, vips_black() has a max with and height. We use int + * for width/height so we could go up to 2bn, but it's good to have a lower + * value set so we can see crazy numbers early. + * + * This was 1m for a while, but someone found a use for a 4m wide image. + */ +#define VIPS_MAX_COORD (10000000) + +typedef enum { + VIPS_DEMAND_STYLE_ERROR = -1, + VIPS_DEMAND_STYLE_SMALLTILE, + VIPS_DEMAND_STYLE_FATSTRIP, + VIPS_DEMAND_STYLE_THINSTRIP, + VIPS_DEMAND_STYLE_ANY +} VipsDemandStyle; + +/* Types of image descriptor we may have. The type field is advisory only: it + * does not imply that any fields in IMAGE have valid data. + */ +typedef enum { + VIPS_IMAGE_ERROR = -1, + VIPS_IMAGE_NONE, /* no type set */ + VIPS_IMAGE_SETBUF, /* malloced memory array */ + VIPS_IMAGE_SETBUF_FOREIGN, /* memory array, don't free on close */ + VIPS_IMAGE_OPENIN, /* input from fd with a window */ + VIPS_IMAGE_MMAPIN, /* memory mapped input file */ + VIPS_IMAGE_MMAPINRW, /* memory mapped read/write file */ + VIPS_IMAGE_OPENOUT, /* output to fd */ + VIPS_IMAGE_PARTIAL /* partial image */ +} VipsImageType; + +typedef enum { + VIPS_INTERPRETATION_ERROR = -1, + VIPS_INTERPRETATION_MULTIBAND = 0, + VIPS_INTERPRETATION_B_W = 1, + VIPS_INTERPRETATION_HISTOGRAM = 10, + VIPS_INTERPRETATION_XYZ = 12, + VIPS_INTERPRETATION_LAB = 13, + VIPS_INTERPRETATION_CMYK = 15, + VIPS_INTERPRETATION_LABQ = 16, + VIPS_INTERPRETATION_RGB = 17, + VIPS_INTERPRETATION_CMC = 18, + VIPS_INTERPRETATION_LCH = 19, + VIPS_INTERPRETATION_LABS = 21, + VIPS_INTERPRETATION_sRGB = 22, + VIPS_INTERPRETATION_YXY = 23, + VIPS_INTERPRETATION_FOURIER = 24, + VIPS_INTERPRETATION_RGB16 = 25, + VIPS_INTERPRETATION_GREY16 = 26, + VIPS_INTERPRETATION_MATRIX = 27, + VIPS_INTERPRETATION_scRGB = 28, + VIPS_INTERPRETATION_HSV = 29, + VIPS_INTERPRETATION_LAST = 30 +} VipsInterpretation; + +typedef enum { + VIPS_FORMAT_NOTSET = -1, + VIPS_FORMAT_UCHAR = 0, + VIPS_FORMAT_CHAR = 1, + VIPS_FORMAT_USHORT = 2, + VIPS_FORMAT_SHORT = 3, + VIPS_FORMAT_UINT = 4, + VIPS_FORMAT_INT = 5, + VIPS_FORMAT_FLOAT = 6, + VIPS_FORMAT_COMPLEX = 7, + VIPS_FORMAT_DOUBLE = 8, + VIPS_FORMAT_DPCOMPLEX = 9, + VIPS_FORMAT_LAST = 10 +} VipsBandFormat; + +typedef enum { + VIPS_CODING_ERROR = -1, + VIPS_CODING_NONE = 0, + VIPS_CODING_LABQ = 2, + VIPS_CODING_RAD = 6, + VIPS_CODING_LAST = 7 +} VipsCoding; + +typedef enum { + VIPS_ACCESS_RANDOM, + VIPS_ACCESS_SEQUENTIAL, + VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, + VIPS_ACCESS_LAST +} VipsAccess; + +typedef void *(*VipsStartFn)( VipsImage *out, void *a, void *b ); +typedef int (*VipsGenerateFn)( VipsRegion *out, + void *seq, void *a, void *b, gboolean *stop ); +typedef int (*VipsStopFn)( void *seq, void *a, void *b ); + +/* Struct we keep a record of execution time in. Passed to eval signal so + * it can assess progress. + */ +typedef struct _VipsProgress { + /*< private >*/ + VipsImage *im; /* Image we are part of */ + + /*< public >*/ + int run; /* Time we have been running */ + int eta; /* Estimated seconds of computation left */ + gint64 tpels; /* Number of pels we expect to calculate */ + gint64 npels; /* Number of pels calculated so far */ + int percent; /* Percent complete */ + GTimer *start; /* Start time */ +} VipsProgress; + +#define VIPS_TYPE_IMAGE (vips_image_get_type()) +#define VIPS_IMAGE( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_IMAGE, VipsImage )) +#define VIPS_IMAGE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_IMAGE, VipsImageClass)) +#define VIPS_IS_IMAGE( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_IMAGE )) +#define VIPS_IS_IMAGE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_IMAGE )) +#define VIPS_IMAGE_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_IMAGE, VipsImageClass )) + +/* Matching typedef in basic.h. + */ +struct _VipsImage { + VipsObject parent_instance; + + /*< private >*/ + + /* We have to keep these names for compatibility with the old API. + * Don't use them though, use vips_image_get_width() and friends. + */ + + int Xsize; /* image width, in pixels */ + int Ysize; /* image height, in pixels */ + int Bands; /* number of image bands */ + + VipsBandFormat BandFmt; /* pixel format */ + VipsCoding Coding; /* pixel coding */ + VipsInterpretation Type;/* pixel interpretation */ + double Xres; /* horizontal pixels per millimetre */ + double Yres; /* vertical pixels per millimetre */ + + int Xoffset; /* image origin hint */ + int Yoffset; /* image origin hint */ + + /* No longer used, the names are here for compat with very, very old + * code. + */ + int Length; + short Compression; + short Level; + int Bbits; /* was number of bits in this format */ + + /* Old code expects to see this member, newer code has a param on + * eval(). + */ + VipsProgress *time; + + /* Derived fields that some code can fiddle with. New code should use + * vips_image_get_history() and friends. + */ + char *Hist; /* don't use, see vips_image_get_history() */ + char *filename; /* pointer to copy of filename */ + VipsPel *data; /* start of image data for WIO */ + int kill; /* set to non-zero to block eval */ + + /* Everything below this private and only used internally by + * VipsImage. + */ + + /* During vips image read and write we need temporary float-sized + * fields in the struct for staging xres/yres. Don't use these any + * other time. + */ + float Xres_float; + float Yres_float; + + char *mode; /* mode string passed to _new() */ + VipsImageType dtype; /* descriptor type */ + int fd; /* file descriptor */ + void *baseaddr; /* pointer to the start of an mmap file */ + size_t length; /* size of mmap area */ + guint32 magic; /* magic from header, endian-ness of image */ + + /* Partial image stuff. All these fields are initialised + * to NULL and ignored unless set by vips_image_generate() etc. + */ + VipsStartFn start_fn; + VipsGenerateFn generate_fn; + VipsStopFn stop_fn; + void *client1; /* user arguments */ + void *client2; + GMutex *sslock; /* start-stop lock */ + GSList *regions; /* list of regions current for this image */ + VipsDemandStyle dhint; /* demand style hint */ + + /* Extra user-defined fields ... see vips_image_get() etc. + */ + GHashTable *meta; /* GhashTable of GValue */ + GSList *meta_traverse; /* traverse order for Meta */ + + /* Part of mmap() read ... the sizeof() the header we skip from the + * file start. Usually VIPS_SIZEOF_HEADER, but can be something else + * for binary file read. + * + * guint64 so that we can guarantee to work even on systems with + * strange ideas about large files. + */ + gint64 sizeof_header; + + /* If this is a large disc image, don't map the whole thing, instead + * have a set of windows shared between the regions active on the + * image. List of VipsWindow. + */ + GSList *windows; + + /* Upstream/downstream relationships, built from args to + * vips_demand_hint(). + * + * We use these to invalidate downstream pixel buffers. + * Use 'serial' to spot circular dependencies. + * + * See also hint_set below. + */ + GSList *upstream; + GSList *downstream; + int serial; + + /* Keep a list of recounted GValue strings so we can share hist + * efficiently. + */ + GSList *history_list; + + /* The VipsImage (if any) we should signal eval progress on. + */ + VipsImage *progress_signal; + + /* Record the file length here. We use this to stop ourselves mapping + * things beyond the end of the file in the case that the file has + * been truncated. + * + * gint64 so that we can guarantee to work even on systems with + * strange ideas about large files. + */ + gint64 file_length; + + /* Set this when vips_demand_hint_array() is called, and check in any + * operation that will demand pixels from the image. + * + * We use vips_demand_hint_array() to build the tree of + * upstream/downstream relationships, so it's a mandatory thing. + */ + gboolean hint_set; + + /* Delete-on-close is hard to do with signals and callbacks since we + * really need to do this in finalize after the fd has been closed, + * but you can't emit signals then. + * + * Also keep a private copy of the filename string to be deleted, + * since image->filename will be freed in _dispose(). + */ + gboolean delete_on_close; + char *delete_on_close_filename; +}; + +typedef struct _VipsImageClass { + VipsObjectClass parent_class; + + /* Signals we emit. + */ + + /* Evaluation is starting. + */ + void (*preeval)( VipsImage *image, VipsProgress *progress, void *data ); + + /* Evaluation progress. + */ + void (*eval)( VipsImage *image, VipsProgress *progress, void *data ); + + /* Evaluation is ending. + */ + void (*posteval)( VipsImage *image, VipsProgress *progress, void *data ); + + /* An image has been written to. + * Used by eg. vips_image_new_mode("x.jpg", "w") to do the + * final write to jpeg. + * Set *result to non-zero to indicate an error on write. + */ + void (*written)( VipsImage *image, int *result, void *data ); + + /* An image has been modified in some way and all caches + * need dropping. + */ + void (*invalidate)( VipsImage *image, void *data ); + + /* Minimise this pipeline. + * + * This is triggered (sometimes) at the end of eval to signal that + * we're probably done and that operations involved should try to + * minimise memory use by, for example, dropping caches. + * + * See vips_tilecache(). + */ + void (*minimise)( VipsImage *image, void *data ); + +} VipsImageClass; + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_image_get_type(void); + +/* Has to be guint64 and not size_t/off_t since we have to be able to address + * huge images on platforms with 32-bit files. + */ + +/* Pixel address calculation macros. + */ +#define VIPS_IMAGE_SIZEOF_ELEMENT( I ) \ + (vips_format_sizeof_unsafe((I)->BandFmt)) +#define VIPS_IMAGE_SIZEOF_PEL( I ) \ + (VIPS_IMAGE_SIZEOF_ELEMENT( I ) * (I)->Bands) +#define VIPS_IMAGE_SIZEOF_LINE( I ) \ + (VIPS_IMAGE_SIZEOF_PEL( I ) * (I)->Xsize) +#define VIPS_IMAGE_SIZEOF_IMAGE( I ) \ + (VIPS_IMAGE_SIZEOF_LINE( I ) * (I)->Ysize) +#define VIPS_IMAGE_N_ELEMENTS( I ) \ + ((I)->Bands * (I)->Xsize) +#define VIPS_IMAGE_N_PELS( I ) \ + ((guint64) (I)->Xsize * (I)->Ysize) + +/* If VIPS_DEBUG is defined, add bounds checking. + */ +#ifdef VIPS_DEBUG +#define VIPS_IMAGE_ADDR( I, X, Y ) \ + ( ((X) >= 0 && (X) < VIPS_IMAGE( I )->Xsize && \ + (Y) >= 0 && (Y) < VIPS_IMAGE( I )->Ysize && \ + VIPS_IMAGE( I )->data) ? \ + (VIPS_IMAGE( I )->data + \ + (Y) * VIPS_IMAGE_SIZEOF_LINE( I ) + \ + (X) * VIPS_IMAGE_SIZEOF_PEL( I )) : \ + (fprintf( stderr, \ + "VIPS_IMAGE_ADDR: point out of bounds, " \ + "file \"%s\", line %d\n" \ + "(point x=%d, y=%d\n" \ + " should have been within VipsRect left=%d, top=%d, " \ + "width=%d, height=%d)\n", \ + __FILE__, __LINE__, \ + (X), (Y), \ + 0, 0, \ + VIPS_IMAGE( I )->Xsize, \ + VIPS_IMAGE( I )->Ysize ), (VipsPel *) NULL) \ + ) +#else /*!VIPS_DEBUG*/ +#define VIPS_IMAGE_ADDR( I, X, Y ) \ + ((I)->data + \ + (Y) * VIPS_IMAGE_SIZEOF_LINE( I ) + \ + (X) * VIPS_IMAGE_SIZEOF_PEL( I )) +#endif /*VIPS_DEBUG*/ + +#ifdef VIPS_DEBUG +#define VIPS_MATRIX( I, X, Y ) \ + ((VIPS_IMAGE( I )->BandFmt == VIPS_FORMAT_DOUBLE && \ + VIPS_IMAGE( I )->Bands == 1) ? \ + ((double *) VIPS_IMAGE_ADDR( I, X, Y )) : \ + (fprintf( stderr, "VIPS_MATRIX: not a matrix image\n" ), \ + (double *) NULL)) +#else /*!VIPS_DEBUG*/ +#define VIPS_MATRIX( I, X, Y ) \ + ((double *) VIPS_IMAGE_ADDR( I, X, Y )) +#endif /*VIPS_DEBUG*/ + +VIPS_API +void vips_progress_set( gboolean progress ); + +VIPS_API +void vips_image_invalidate_all( VipsImage *image ); + +VIPS_API +void vips_image_minimise_all( VipsImage *image ); + +VIPS_API +gboolean vips_image_is_sequential( VipsImage *image ); + +VIPS_API +void vips_image_set_progress( VipsImage *image, gboolean progress ); +VIPS_API +gboolean vips_image_iskilled( VipsImage *image ); +VIPS_API +void vips_image_set_kill( VipsImage *image, gboolean kill ); + +VIPS_API +char *vips_filename_get_filename( const char *vips_filename ); +VIPS_API +char *vips_filename_get_options( const char *vips_filename ); + +VIPS_API +VipsImage *vips_image_new( void ); +VIPS_API +VipsImage *vips_image_new_memory( void ); +VIPS_API +VipsImage *vips_image_memory( void ); +VIPS_API +VipsImage *vips_image_new_from_file( const char *name, ... ) + __attribute__((sentinel)); +VIPS_API +VipsImage *vips_image_new_from_file_RW( const char *filename ); +VIPS_API +VipsImage *vips_image_new_from_file_raw( const char *filename, + int xsize, int ysize, int bands, guint64 offset ); +VIPS_API +VipsImage *vips_image_new_from_memory( const void *data, size_t size, + int width, int height, int bands, VipsBandFormat format ); +VIPS_API +VipsImage *vips_image_new_from_memory_copy( const void *data, size_t size, + int width, int height, int bands, VipsBandFormat format ); +VIPS_API +VipsImage *vips_image_new_from_buffer( const void *buf, size_t len, + const char *option_string, ... ) + __attribute__((sentinel)); +VIPS_API +VipsImage *vips_image_new_from_source( VipsSource *source, + const char *option_string, ... ) __attribute__((sentinel)); +VIPS_API +VipsImage *vips_image_new_matrix( int width, int height ); +VIPS_API +VipsImage *vips_image_new_matrixv( int width, int height, ... ); +VIPS_API +VipsImage *vips_image_new_matrix_from_array( int width, int height, + const double *array, int size ); +VIPS_API +VipsImage *vips_image_matrix_from_array( int width, int height, + const double *array, int size ); +VIPS_API +VipsImage *vips_image_new_from_image( VipsImage *image, + const double *c, int n ); +VIPS_API +VipsImage *vips_image_new_from_image1( VipsImage *image, double c ); + +VIPS_API +void vips_image_set_delete_on_close( VipsImage *image, + gboolean delete_on_close ); +VIPS_API +guint64 vips_get_disc_threshold( void ); +VIPS_API +VipsImage *vips_image_new_temp_file( const char *format ); + +VIPS_API +int vips_image_write( VipsImage *image, VipsImage *out ); +VIPS_API +int vips_image_write_to_file( VipsImage *image, const char *name, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_image_write_to_buffer( VipsImage *in, + const char *suffix, void **buf, size_t *size, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_image_write_to_target( VipsImage *in, + const char *suffix, VipsTarget *target, ... ) + __attribute__((sentinel)); +VIPS_API +void *vips_image_write_to_memory( VipsImage *in, size_t *size ); + +VIPS_API +int vips_image_decode_predict( VipsImage *in, + int *bands, VipsBandFormat *format ); +VIPS_API +int vips_image_decode( VipsImage *in, VipsImage **out ); +VIPS_API +int vips_image_encode( VipsImage *in, VipsImage **out, VipsCoding coding ); + +VIPS_API +gboolean vips_image_isMSBfirst( VipsImage *image ); +VIPS_API +gboolean vips_image_isfile( VipsImage *image ); +VIPS_API +gboolean vips_image_ispartial( VipsImage *image ); +VIPS_API +gboolean vips_image_hasalpha( VipsImage *image ); + +VIPS_API +VipsImage *vips_image_copy_memory( VipsImage *image ); +VIPS_API +int vips_image_wio_input( VipsImage *image ); +VIPS_API +int vips_image_pio_input( VipsImage *image ); +VIPS_API +int vips_image_pio_output( VipsImage *image ); +VIPS_API +int vips_image_inplace( VipsImage *image ); +VIPS_API +int vips_image_write_prepare( VipsImage *image ); + +VIPS_API +int vips_image_write_line( VipsImage *image, int ypos, VipsPel *linebuffer ); + +VIPS_API +gboolean vips_band_format_isint( VipsBandFormat format ); +VIPS_API +gboolean vips_band_format_isuint( VipsBandFormat format ); +VIPS_API +gboolean vips_band_format_is8bit( VipsBandFormat format ); +VIPS_API +gboolean vips_band_format_isfloat( VipsBandFormat format ); +VIPS_API +gboolean vips_band_format_iscomplex( VipsBandFormat format ); + +VIPS_API +int vips_system( const char *cmd_format, ... ) + __attribute__((sentinel)); + +/* Defined in type.c but declared here, since they use VipsImage. + */ +VIPS_API +VipsArrayImage *vips_array_image_new( VipsImage **array, int n ); +VIPS_API +VipsArrayImage *vips_array_image_newv( int n, ... ); +VIPS_API +VipsArrayImage *vips_array_image_new_from_string( const char *string, + VipsAccess flags ); +VIPS_API +VipsArrayImage *vips_array_image_empty( void ); +VIPS_API +VipsArrayImage *vips_array_image_append( VipsArrayImage *array, + VipsImage *image ); +VIPS_API +VipsImage **vips_array_image_get( VipsArrayImage *array, int *n ); +VIPS_API +VipsImage **vips_value_get_array_image( const GValue *value, int *n ); +VIPS_API +void vips_value_set_array_image( GValue *value, int n ); + +/* Defined in reorder.c, but really a function on image. + */ +VIPS_API +int vips_reorder_prepare_many( VipsImage *image, + VipsRegion **regions, VipsRect *r ); +VIPS_API +void vips_reorder_margin_hint( VipsImage *image, int margin ); + +VIPS_API +void vips_image_free_buffer( VipsImage *image, void *buffer ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_IMAGE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/interpolate.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/interpolate.h new file mode 100644 index 0000000..2d7b9ba --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/interpolate.h @@ -0,0 +1,141 @@ +/* Various interpolators. + * + * J.Cupitt, 15/10/08 + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_INTERPOLATE_H +#define VIPS_INTERPOLATE_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_TYPE_INTERPOLATE (vips_interpolate_get_type()) +#define VIPS_INTERPOLATE( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_INTERPOLATE, VipsInterpolate )) +#define VIPS_INTERPOLATE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_INTERPOLATE, VipsInterpolateClass)) +#define VIPS_IS_INTERPOLATE( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE )) +#define VIPS_IS_INTERPOLATE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE )) +#define VIPS_INTERPOLATE_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_INTERPOLATE, VipsInterpolateClass )) + +typedef struct _VipsInterpolate { + VipsObject parent_object; + +} VipsInterpolate; + +/* An interpolation function. This is a class method, but we have a lookup + * function for it to speed up dispatch. Write to the memory at "out", + * interpolate the value at position (x, y) in "in". + */ +typedef void (*VipsInterpolateMethod)( VipsInterpolate *interpolate, + void *out, VipsRegion *in, double x, double y ); + +typedef struct _VipsInterpolateClass { + VipsObjectClass parent_class; + + /* Write to pixel out(x,y), interpolating from in(x,y). The caller has + * to set the regions up. + */ + VipsInterpolateMethod interpolate; + + /* This interpolator needs a window this many pixels across and down. + */ + int (*get_window_size)( VipsInterpolate *interpolate ); + + /* Or just set this if you want a constant. + */ + int window_size; + + /* Stencils are offset by this much. Default to window_size / 2 - 1 + * (centering) if get_window_offset is NULL and window_offset is -1. + */ + int (*get_window_offset)( VipsInterpolate *interpolate ); + int window_offset; +} VipsInterpolateClass; + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_interpolate_get_type(void); +VIPS_API +void vips_interpolate( VipsInterpolate *interpolate, + void *out, VipsRegion *in, double x, double y ); +VIPS_API +VipsInterpolateMethod vips_interpolate_get_method( VipsInterpolate *interpolate ); +VIPS_API +int vips_interpolate_get_window_size( VipsInterpolate *interpolate ); +VIPS_API +int vips_interpolate_get_window_offset( VipsInterpolate *interpolate ); + +/* How many bits of precision we keep for transformations, ie. how many + * pre-computed matricies we have. + */ +#define VIPS_TRANSFORM_SHIFT (6) +#define VIPS_TRANSFORM_SCALE (1 << VIPS_TRANSFORM_SHIFT) + +/* How many bits of precision we keep for interpolation, ie. where the decimal + * is in the fixed-point tables. For 16-bit pixels, we need 16 bits for the + * data and 4 bits to add 16 values together. That leaves 12 bits for the + * fractional part. + */ +#define VIPS_INTERPOLATE_SHIFT (12) +#define VIPS_INTERPOLATE_SCALE (1 << VIPS_INTERPOLATE_SHIFT) + +/* Convenience: return static interpolators, no need to unref. + */ +VIPS_API +VipsInterpolate *vips_interpolate_nearest_static( void ); +VIPS_API +VipsInterpolate *vips_interpolate_bilinear_static( void ); + +/* Convenience: make an interpolator from a nickname. g_object_unref() when + * you're done with it. + */ +VIPS_API +VipsInterpolate *vips_interpolate_new( const char *nickname ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_INTERPOLATE_H*/ + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/memory.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/memory.h new file mode 100644 index 0000000..3281758 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/memory.h @@ -0,0 +1,94 @@ +/* memory utilities + * + * J.Cupitt, 8/4/93 + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_MEMORY_H +#define VIPS_MEMORY_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_FREEF( F, S ) G_STMT_START { \ + if( S ) { \ + (void) F( (S) ); \ + (S) = 0; \ + } \ +} G_STMT_END + +#define VIPS_FREE( S ) VIPS_FREEF( g_free, (S) ); + +#define VIPS_SETSTR( S, V ) \ +G_STMT_START { \ + const char *sst = (V); \ + \ + if( (S) != sst ) { \ + if( !(S) || !sst || strcmp( (S), sst ) != 0 ) { \ + VIPS_FREE( S ); \ + if( sst ) \ + (S) = g_strdup( sst ); \ + } \ + } \ +} G_STMT_END + +#define VIPS_NEW( OBJ, T ) \ + ((T *) vips_malloc( VIPS_OBJECT( OBJ ), sizeof( T ))) +#define VIPS_ARRAY( OBJ, N, T ) \ + ((T *) vips_malloc( VIPS_OBJECT( OBJ ), (N) * sizeof( T ))) + +VIPS_API +void *vips_malloc( VipsObject *object, size_t size ); +VIPS_API +char *vips_strdup( VipsObject *object, const char *str ); + +VIPS_API +void vips_tracked_free( void *s ); +VIPS_API +void *vips_tracked_malloc( size_t size ); +VIPS_API +size_t vips_tracked_get_mem( void ); +VIPS_API +size_t vips_tracked_get_mem_highwater( void ); +VIPS_API +int vips_tracked_get_allocs( void ); + +VIPS_API +int vips_tracked_open( const char *pathname, int flags, int mode ); +VIPS_API +int vips_tracked_close( int fd ); +VIPS_API +int vips_tracked_get_files( void ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_MEMORY_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/morphology.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/morphology.h new file mode 100644 index 0000000..0115ea5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/morphology.h @@ -0,0 +1,73 @@ +/* morphology.h + * + * 20/9/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_MORPHOLOGY_H +#define VIPS_MORPHOLOGY_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef enum { + VIPS_OPERATION_MORPHOLOGY_ERODE, + VIPS_OPERATION_MORPHOLOGY_DILATE, + VIPS_OPERATION_MORPHOLOGY_LAST +} VipsOperationMorphology; + +VIPS_API +int vips_morph( VipsImage *in, VipsImage **out, VipsImage *mask, + VipsOperationMorphology morph, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rank( VipsImage *in, VipsImage **out, + int width, int height, int index, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_median( VipsImage *in, VipsImage **out, int size, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_countlines( VipsImage *in, double *nolines, + VipsDirection direction, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_labelregions( VipsImage *in, VipsImage **mask, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_fill_nearest( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_MORPHOLOGY_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/mosaicing.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/mosaicing.h new file mode 100644 index 0000000..26ec092 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/mosaicing.h @@ -0,0 +1,80 @@ +/* mosaicing.h + * + * 20/9/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_MOSAICING_H +#define VIPS_MOSAICING_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +VIPS_API +int vips_merge( VipsImage *ref, VipsImage *sec, VipsImage **out, + VipsDirection direction, int dx, int dy, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_mosaic( VipsImage *ref, VipsImage *sec, VipsImage **out, + VipsDirection direction, int xref, int yref, int xsec, int ysec, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_mosaic1( VipsImage *ref, VipsImage *sec, VipsImage **out, + VipsDirection direction, + int xr1, int yr1, int xs1, int ys1, + int xr2, int yr2, int xs2, int ys2, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_match( VipsImage *ref, VipsImage *sec, VipsImage **out, + int xr1, int yr1, int xs1, int ys1, + int xr2, int yr2, int xs2, int ys2, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_globalbalance( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_remosaic( VipsImage *in, VipsImage **out, + const char *old_str, const char *new_str, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_matrixinvert( VipsImage *m, VipsImage **out, ... ) + __attribute__((sentinel)); + + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_MOSAICING_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/object.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/object.h new file mode 100644 index 0000000..bd1d106 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/object.h @@ -0,0 +1,706 @@ +/* abstract base class for all vips objects + */ + +/* + + Copyright (C) 1991-2003 The National Gallery + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_OBJECT_H +#define VIPS_OBJECT_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* Handy! + */ +#ifdef VIPS_DEBUG +#define VIPS_UNREF( X ) G_STMT_START { \ + if( X ) { \ + g_assert( G_OBJECT( X )->ref_count > 0 ); \ + g_object_unref( X ); \ + (X) = 0; \ + } \ +} G_STMT_END +#else /*!VIPS_DEBUG*/ +#define VIPS_UNREF( X ) VIPS_FREEF( g_object_unref, (X) ) +#endif /*VIPS_DEBUG*/ + +typedef struct _VipsObject VipsObject; +typedef struct _VipsObjectClass VipsObjectClass; + +/* Track extra stuff for arguments to objects + */ + +typedef enum /*< flags >*/ { + VIPS_ARGUMENT_NONE = 0, + VIPS_ARGUMENT_REQUIRED = 1, + VIPS_ARGUMENT_CONSTRUCT = 2, + VIPS_ARGUMENT_SET_ONCE = 4, + VIPS_ARGUMENT_SET_ALWAYS = 8, + VIPS_ARGUMENT_INPUT = 16, + VIPS_ARGUMENT_OUTPUT = 32, + VIPS_ARGUMENT_DEPRECATED = 64, + VIPS_ARGUMENT_MODIFY = 128 +} VipsArgumentFlags; + +/* Useful flag combinations. User-visible ones are: + +VIPS_ARGUMENT_REQUIRED_INPUT Eg. the "left" argument for an add operation + +VIPS_ARGUMENT_OPTIONAL_INPUT Eg. the "caption" for an object + +VIPS_ARGUMENT_REQUIRED_OUTPUT Eg. the "result" of an add operation + +VIPS_ARGUMENT_OPTIONAL_OUTPUT Eg. the x pos of the image minimum + + Other combinations are used internally, eg. supplying the cast-table for an + arithmetic operation + + */ + +#define VIPS_ARGUMENT_REQUIRED_INPUT \ + (VIPS_ARGUMENT_INPUT | \ + VIPS_ARGUMENT_REQUIRED | \ + VIPS_ARGUMENT_CONSTRUCT) + +#define VIPS_ARGUMENT_OPTIONAL_INPUT \ + (VIPS_ARGUMENT_INPUT | \ + VIPS_ARGUMENT_CONSTRUCT) + +#define VIPS_ARGUMENT_REQUIRED_OUTPUT \ + (VIPS_ARGUMENT_OUTPUT | \ + VIPS_ARGUMENT_REQUIRED | \ + VIPS_ARGUMENT_CONSTRUCT) + +#define VIPS_ARGUMENT_OPTIONAL_OUTPUT \ + (VIPS_ARGUMENT_OUTPUT | \ + VIPS_ARGUMENT_CONSTRUCT) + +#define VIPS_ARG_IMAGE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_object( (NAME), (LONG), (DESC), \ + VIPS_TYPE_IMAGE, \ + (GParamFlags) (G_PARAM_READWRITE) ); \ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_OBJECT( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, TYPE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_object( (NAME), (LONG), (DESC), \ + TYPE, \ + (GParamFlags) (G_PARAM_READWRITE) ); \ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_INTERPOLATE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) \ + VIPS_ARG_OBJECT( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, VIPS_TYPE_INTERPOLATE ) + +#define VIPS_ARG_BOOL( CLASS, NAME, PRIORITY, LONG, DESC, \ + FLAGS, OFFSET, VALUE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_boolean( (NAME), (LONG), (DESC), \ + (VALUE), \ + (GParamFlags) (G_PARAM_READWRITE) ); \ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_DOUBLE( CLASS, NAME, PRIORITY, LONG, DESC, \ + FLAGS, OFFSET, MIN, MAX, VALUE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_double( (NAME), (LONG), (DESC), \ + (MIN), (MAX), (VALUE), \ + (GParamFlags) (G_PARAM_READWRITE) );\ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_BOXED( CLASS, NAME, PRIORITY, LONG, DESC, \ + FLAGS, OFFSET, TYPE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_boxed( (NAME), (LONG), (DESC), \ + (TYPE), \ + (GParamFlags) (G_PARAM_READWRITE) );\ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_INT( CLASS, NAME, PRIORITY, LONG, DESC, \ + FLAGS, OFFSET, MIN, MAX, VALUE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_int( (NAME), (LONG), (DESC), \ + (MIN), (MAX), (VALUE), \ + (GParamFlags) (G_PARAM_READWRITE) );\ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_UINT64( CLASS, NAME, PRIORITY, LONG, DESC, \ + FLAGS, OFFSET, MIN, MAX, VALUE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_uint64( (NAME), (LONG), (DESC), \ + (MIN), (MAX), (VALUE), \ + (GParamFlags) (G_PARAM_READWRITE) );\ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_ENUM( CLASS, NAME, PRIORITY, LONG, DESC, \ + FLAGS, OFFSET, TYPE, VALUE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_enum( (NAME), (LONG), (DESC), \ + (TYPE), (VALUE), \ + (GParamFlags) (G_PARAM_READWRITE) );\ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_FLAGS( CLASS, NAME, PRIORITY, LONG, DESC, \ + FLAGS, OFFSET, TYPE, VALUE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_flags( (NAME), (LONG), (DESC), \ + (TYPE), (VALUE), \ + (GParamFlags) (G_PARAM_READWRITE) );\ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_STRING( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, \ + VALUE ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_string( (NAME), (LONG), (DESC), \ + (VALUE), \ + (GParamFlags) (G_PARAM_READWRITE) ); \ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +#define VIPS_ARG_POINTER( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) { \ + GParamSpec *pspec; \ + \ + pspec = g_param_spec_pointer( (NAME), (LONG), (DESC), \ + (GParamFlags) (G_PARAM_READWRITE) ); \ + g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ + vips_argument_get_id(), pspec ); \ + vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ + pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ +} + +/* Keep one of these for every argument. + */ +typedef struct _VipsArgument { + GParamSpec *pspec; /* pspec for this argument */ + + /* More stuff, see below */ +} VipsArgument; + +/* Keep one of these in the class struct for every argument. + */ +typedef struct _VipsArgumentClass { + VipsArgument parent; + + /* The class of the object we are an arg for. + */ + VipsObjectClass *object_class; + + VipsArgumentFlags flags; + int priority; /* Order args by this */ + guint offset; /* G_STRUCT_OFFSET of member in object */ +} VipsArgumentClass; + +/* Keep one of these in the object struct for every argument instance. + */ +typedef struct _VipsArgumentInstance { + VipsArgument parent; + + /* The class we are part of. + */ + VipsArgumentClass *argument_class; + + /* The object we are attached to. + */ + VipsObject *object; + + /* Has been set. + */ + gboolean assigned; + + /* If this is an output argument, keep the id of our "close" handler + * here. + */ + gulong close_id; + + /* We need to listen for "invalidate" on input images and send our own + * "invalidate" out. If we go, we need to disconnect. + */ + gulong invalidate_id; +} VipsArgumentInstance; + +/* Need to look up our VipsArgument structs from a pspec. Just hash the + * pointer (ie. we assume pspecs are never shared, is this correct?) + */ +typedef GHashTable VipsArgumentTable; + +VIPS_API +int vips_argument_get_id( void ); +void vips__object_set_member( VipsObject *object, GParamSpec *pspec, + GObject **member, GObject *argument ); +typedef void *(*VipsArgumentMapFn)( VipsObject *object, GParamSpec *pspec, + VipsArgumentClass *argument_class, + VipsArgumentInstance *argument_instance, void *a, void *b ); +VIPS_API +void *vips_argument_map( VipsObject *object, + VipsArgumentMapFn fn, void *a, void *b ); +VIPS_API +int vips_object_get_args( VipsObject *object, + const char ***names, int **flags, int *n_args ); +typedef void *(*VipsArgumentClassMapFn)( VipsObjectClass *object_class, + GParamSpec *pspec, + VipsArgumentClass *argument_class, void *a, void *b ); +VIPS_API +void *vips_argument_class_map( VipsObjectClass *object_class, + VipsArgumentClassMapFn fn, void *a, void *b ); +VIPS_API +gboolean vips_argument_class_needsstring( VipsArgumentClass *argument_class ); +VIPS_API +int vips_object_get_argument( VipsObject *object, const char *name, + GParamSpec **pspec, + VipsArgumentClass **argument_class, + VipsArgumentInstance **argument_instance ); +VIPS_API +gboolean vips_object_argument_isset( VipsObject *object, const char *name ); +VIPS_API +VipsArgumentFlags vips_object_get_argument_flags( VipsObject *object, + const char *name ); +VIPS_API +int vips_object_get_argument_priority( VipsObject *object, const char *name ); + +/* We have to loop over an objects args in several places, and we can't always + * use vips_argument_map(), the preferred looper. Have the loop code as a + * macro as well for these odd cases. + */ +#define VIPS_ARGUMENT_FOR_ALL( OBJECT, PSPEC, ARG_CLASS, ARG_INSTANCE ) { \ + VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( OBJECT ); \ + GSList *p; \ + \ + for( p = object_class->argument_table_traverse; p; p = p->next ) { \ + VipsArgumentClass *ARG_CLASS = \ + (VipsArgumentClass *) p->data; \ + VipsArgument *argument = (VipsArgument *) argument_class; \ + GParamSpec *PSPEC = argument->pspec; \ + VipsArgumentInstance *ARG_INSTANCE __attribute__ ((unused)) = \ + vips__argument_get_instance( argument_class, \ + VIPS_OBJECT( OBJECT ) ); \ + +#define VIPS_ARGUMENT_FOR_ALL_END } } + +/* And some macros to collect args from a va list. + * + * Use something like this: + + GParamSpec *pspec; + VipsArgumentClass *argument_class; + VipsArgumentInstance *argument_instance; + + if( vips_object_get_argument( VIPS_OBJECT( operation ), name, + &pspec, &argument_class, &argument_instance ) ) + return( -1 ); + + VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); + + GValue value holds the value of an input argument, do + something with it + + VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); + + void **arg points to where to write an output argument + + VIPS_ARGUMENT_COLLECT_END + + */ +#define VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP ) \ + if( (ARG_CLASS->flags & VIPS_ARGUMENT_INPUT) ) { \ + GValue value = { 0, }; \ + gchar *error = NULL; \ + \ + /* Input args are given inline, eg. ("factor", 12.0) \ + * and must be collected. \ + */ \ + G_VALUE_COLLECT_INIT( &value, \ + G_PARAM_SPEC_VALUE_TYPE( PSPEC ), AP, 0, &error ); \ + \ + /* Don't bother with the error message. \ + */ \ + if( error ) { \ + VIPS_DEBUG_MSG( "VIPS_OBJECT_COLLECT_SET: err\n" ); \ + g_free( error ); \ + } + +#define VIPS_ARGUMENT_COLLECT_GET( PSPEC, ARG_CLASS, AP ) \ + g_value_unset( &value ); \ + } \ + else if( (ARG_CLASS->flags & VIPS_ARGUMENT_OUTPUT) ) { \ + void **arg __attribute__ ((unused)); \ + \ + /* Output args are a pointer to where to send the \ + * result. \ + */ \ + arg = va_arg( AP, void ** ); + +#define VIPS_ARGUMENT_COLLECT_END \ + } + +#define VIPS_TYPE_OBJECT (vips_object_get_type()) +#define VIPS_OBJECT( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_OBJECT, VipsObject )) +#define VIPS_OBJECT_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_OBJECT, VipsObjectClass)) +#define VIPS_IS_OBJECT( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_OBJECT )) +#define VIPS_IS_OBJECT_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_OBJECT )) +#define VIPS_OBJECT_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_OBJECT, VipsObjectClass )) + +struct _VipsObject { + GObject parent_instance; + + /* Set after ->build() has run succesfully: construct is fully done + * and checked. + */ + gboolean constructed; + + /* Set for static objects which are allocated at startup and never + * freed. These objects are ommitted from leak reports. + */ + gboolean static_object; + + /* Table of argument instances for this class and any derived classes. + */ + VipsArgumentTable *argument_table; + + /* Class properties (see below), duplicated in the instance so we can + * get at them easily via the property system. + */ + char *nickname; + char *description; + + /* The pre/post/close callbacks are all fire-once. + */ + gboolean preclose; + gboolean close; + gboolean postclose; + + /* Total memory allocated relative to this object, handy for + * profiling. + */ + size_t local_memory; + +}; + +struct _VipsObjectClass { + GObjectClass parent_class; + + /* Build the object ... all argument properties have been set, + * now build the thing. + */ + int (*build)( VipsObject *object ); + + /* Just after build ... the object is fully ready for work. + */ + int (*postbuild)( VipsObject *object, void *data ); + + /* Try to print something about the class, handy for help displays. + * Keep to one line. + */ + void (*summary_class)( struct _VipsObjectClass *cls, VipsBuf *buf ); + + /* Try to print a one-line summary for the object, the user can see + * this output via things like "header fred.tif", --vips-cache-trace, + * etc. + */ + void (*summary)( VipsObject *object, VipsBuf *buf ); + + /* Try to print everything about the object, handy for debugging. + */ + void (*dump)( VipsObject *object, VipsBuf *buf ); + + /* Sanity-check the object. Print messages and stuff. + * Handy for debugging. + */ + void (*sanity)( VipsObject *object, VipsBuf *buf ); + + /* Rewind. Save and restore any stuff that needs to survive a + * dispose(). + */ + void (*rewind)( VipsObject *object ); + + /* Just before close, everything is still alive. + */ + void (*preclose)( VipsObject *object ); + + /* Close, time to free stuff. + */ + void (*close)( VipsObject *object ); + + /* Post-close, everything is dead, except the VipsObject pointer. + * Useful for eg. deleting the file associated with a temp image. + */ + void (*postclose)( VipsObject *object ); + + /* The CLI interface. Implement these four to get CLI input and output + * for your object. + */ + + /* Given a command-line arg (eg. a filename), make an instance of the + * object. Just do the g_object_new(), don't call _build(). + * + * Don't call this directly, see vips_object_new_from_string(). + */ + VipsObject *(*new_from_string)( const char *string ); + + /* The inverse of ^^. Given an object, output what ->new_from_string() + * would have been given to make that object. + */ + void (*to_string)( VipsObject *object, VipsBuf *buf ); + + /* Does this output arg need an arg from the command line? Image + * output, for example, needs a filename to write to. + */ + gboolean output_needs_arg; + + /* Write the object to the string. Return 0 for success, or -1 on + * error, setting vips_error(). string is NULL if output_needs_arg() + * was FALSE. + */ + int (*output_to_arg)( VipsObject *object, const char *string ); + + /* Class nickname, eg. "VipsInterpolateBicubic" has "bicubic" as a + * nickname. Not internationalised. + */ + const char *nickname; + + /* Class description. Used for help messages, so internationalised. + */ + const char *description; + + /* Hash from pspec to VipsArgumentClass. + * + * This records the VipsArgumentClass for every pspec used in + * VipsObject and any subclass (ie. everywhere), so it's huge. Don't + * loop over this hash! Fine for lookups though. + */ + VipsArgumentTable *argument_table; + + /* A sorted (by priority) list of the VipsArgumentClass for this class + * and any superclasses. This is small and specific to this class. + * + * Use the stored GType to work out when to restart the list for a + * subclass. + */ + GSList *argument_table_traverse; + GType argument_table_traverse_gtype; + + /* This class is deprecated and therefore hidden from various UI bits. + * + * VipsOperation has a deprecated flag, use that in preference to this + * if you can. + */ + gboolean deprecated; + + /* Reserved for future expansion. + */ + void (*_vips_reserved1)( void ); + void (*_vips_reserved2)( void ); + void (*_vips_reserved3)( void ); + void (*_vips_reserved4)( void ); +}; + +VIPS_API +gboolean vips_value_is_null( GParamSpec *psoec, const GValue *value ); +VIPS_API +void vips_object_set_property( GObject *gobject, + guint property_id, const GValue *value, GParamSpec *pspec ); +VIPS_API +void vips_object_get_property( GObject *gobject, + guint property_id, GValue *value, GParamSpec *pspec ); + +VIPS_API +void vips_object_preclose( VipsObject *object ); +VIPS_API +int vips_object_build( VipsObject *object ); + +VIPS_API +void vips_object_summary_class( VipsObjectClass *klass, VipsBuf *buf ); +VIPS_API +void vips_object_summary( VipsObject *object, VipsBuf *buf ); +VIPS_API +void vips_object_dump( VipsObject *object, VipsBuf *buf ); + +VIPS_API +void vips_object_print_summary_class( VipsObjectClass *klass ); +VIPS_API +void vips_object_print_summary( VipsObject *object ); +VIPS_API +void vips_object_print_dump( VipsObject *object ); +VIPS_API +void vips_object_print_name( VipsObject *object ); + +VIPS_API +gboolean vips_object_sanity( VipsObject *object ); + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_object_get_type(void); + +VIPS_API +void vips_object_class_install_argument( VipsObjectClass *cls, + GParamSpec *pspec, VipsArgumentFlags flags, + int priority, guint offset ); +VIPS_API +int vips_object_set_argument_from_string( VipsObject *object, + const char *name, const char *value ); +VIPS_API +gboolean vips_object_argument_needsstring( VipsObject *object, + const char *name ); +VIPS_API +int vips_object_get_argument_to_string( VipsObject *object, + const char *name, const char *arg ); +VIPS_API +int vips_object_set_required( VipsObject *object, const char *value ); + +typedef void *(*VipsObjectSetArguments)( VipsObject *object, void *a, void *b ); +VIPS_API +VipsObject *vips_object_new( GType type, + VipsObjectSetArguments set, void *a, void *b ); + +VIPS_API +int vips_object_set_valist( VipsObject *object, va_list ap ); +VIPS_API +int vips_object_set( VipsObject *object, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_object_set_from_string( VipsObject *object, const char *string ); + +VIPS_API +VipsObject *vips_object_new_from_string( VipsObjectClass *object_class, + const char *p ); +VIPS_API +void vips_object_to_string( VipsObject *object, VipsBuf *buf ); + +VIPS_API +void *vips_object_map( VipsSListMap2Fn fn, void *a, void *b ); + +typedef void *(*VipsTypeMapFn)( GType type, void *a ); +typedef void *(*VipsTypeMap2Fn)( GType type, void *a, void *b ); +typedef void *(*VipsClassMapFn)( VipsObjectClass *cls, void *a ); +VIPS_API +void *vips_type_map( GType base, VipsTypeMap2Fn fn, void *a, void *b ); +VIPS_API +void *vips_type_map_all( GType base, VipsTypeMapFn fn, void *a ); +VIPS_API +int vips_type_depth( GType type ); +VIPS_API +GType vips_type_find( const char *basename, const char *nickname ); +VIPS_API +const char *vips_nickname_find( GType type ); + +VIPS_API +void *vips_class_map_all( GType type, VipsClassMapFn fn, void *a ); +VIPS_API +const VipsObjectClass *vips_class_find( const char *basename, + const char *nickname ); + +VIPS_API +VipsObject **vips_object_local_array( VipsObject *parent, int n ); + +VIPS_API +void vips_object_local_cb( VipsObject *vobject, GObject *gobject ); +#define vips_object_local( V, G ) \ + (g_signal_connect( V, "close", G_CALLBACK( vips_object_local_cb ), G )) + +VIPS_API +void vips_object_set_static( VipsObject *object, gboolean static_object ); +VIPS_API +void vips_object_print_all( void ); +VIPS_API +void vips_object_sanity_all( void ); + +VIPS_API +void vips_object_rewind( VipsObject *object ); + +VIPS_API +void vips_object_unref_outputs( VipsObject *object ); + +VIPS_API +const char *vips_object_get_description( VipsObject *object ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_OBJECT_H*/ + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/operation.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/operation.h new file mode 100644 index 0000000..11f27a7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/operation.h @@ -0,0 +1,182 @@ +/* base class for all vips operations + */ + +/* + + Copyright (C) 1991-2005 The National Gallery + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_OPERATION_H +#define VIPS_OPERATION_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef enum /*< flags >*/ { + VIPS_OPERATION_NONE = 0, + VIPS_OPERATION_SEQUENTIAL = 1, + VIPS_OPERATION_SEQUENTIAL_UNBUFFERED = 2, + VIPS_OPERATION_NOCACHE = 4, + VIPS_OPERATION_DEPRECATED = 8, + VIPS_OPERATION_UNTRUSTED = 16, + VIPS_OPERATION_BLOCKED = 32 +} VipsOperationFlags; + +#define VIPS_TYPE_OPERATION (vips_operation_get_type()) +#define VIPS_OPERATION( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_OPERATION, VipsOperation )) +#define VIPS_OPERATION_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_OPERATION, VipsOperationClass )) +#define VIPS_IS_OPERATION( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_OPERATION )) +#define VIPS_IS_OPERATION_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_OPERATION )) +#define VIPS_OPERATION_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_OPERATION, VipsOperationClass )) + +typedef gboolean (*VipsOperationBuildFn)( VipsObject *object ); + +typedef struct _VipsOperation { + VipsObject parent_instance; + + /* Keep the hash here. + */ + guint hash; + gboolean found_hash; + + /* Pixels calculated ... handy for measuring over-calculation. + */ + int pixels; + +} VipsOperation; + +typedef struct _VipsOperationClass { + VipsObjectClass parent_class; + + /* Print the usage message. + */ + void (*usage)( struct _VipsOperationClass *cls, VipsBuf *buf ); + + /* Return a set of operation flags. + */ + VipsOperationFlags (*get_flags)( VipsOperation *operation ); + VipsOperationFlags flags; + + /* One of our input images has signalled "invalidate". The cache uses + * VipsOperation::invalidate to drop dirty ops. + */ + void (*invalidate)( VipsOperation *operation ); +} VipsOperationClass; + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_operation_get_type(void); + +VIPS_API +VipsOperationFlags vips_operation_get_flags( VipsOperation *operation ); +VIPS_API +void vips_operation_class_print_usage( VipsOperationClass *operation_class ); +VIPS_API +void vips_operation_invalidate( VipsOperation *operation ); + +VIPS_API +int vips_operation_call_valist( VipsOperation *operation, va_list ap ); +VIPS_API +VipsOperation *vips_operation_new( const char *name ); +VIPS_API +int vips_call_required_optional( VipsOperation **operation, + va_list required, va_list optional ); +VIPS_API +int vips_call( const char *operation_name, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_call_split( const char *operation_name, va_list optional, ... ); +VIPS_API +int vips_call_split_option_string( const char *operation_name, + const char *option_string, va_list optional, ... ); + +VIPS_API +void vips_call_options( GOptionGroup *group, VipsOperation *operation ); +VIPS_API +int vips_call_argv( VipsOperation *operation, int argc, char **argv ); + +VIPS_API +void vips_cache_drop_all( void ); +VIPS_API +VipsOperation *vips_cache_operation_lookup( VipsOperation *operation ); +VIPS_API +void vips_cache_operation_add( VipsOperation *operation ); +VIPS_API +int vips_cache_operation_buildp( VipsOperation **operation ); +VIPS_API +VipsOperation *vips_cache_operation_build( VipsOperation *operation ); +VIPS_API +void vips_cache_print( void ); +VIPS_API +void vips_cache_set_max( int max ); +VIPS_API +void vips_cache_set_max_mem( size_t max_mem ); +VIPS_API +int vips_cache_get_max( void ); +VIPS_API +int vips_cache_get_size( void ); +VIPS_API +size_t vips_cache_get_max_mem( void ); +VIPS_API +int vips_cache_get_max_files( void ); +VIPS_API +void vips_cache_set_max_files( int max_files ); +VIPS_API +void vips_cache_set_dump( gboolean dump ); +VIPS_API +void vips_cache_set_trace( gboolean trace ); + +/* Part of threadpool, really, but we want these in a header that gets scanned + * for our typelib. + */ +VIPS_API +void vips_concurrency_set( int concurrency ); +VIPS_API +int vips_concurrency_get( void ); + +VIPS_API +void vips_operation_block_set( const char *name, gboolean state ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_OPERATION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/private.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/private.h new file mode 100644 index 0000000..d6be94e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/private.h @@ -0,0 +1,227 @@ +/* Declarations which are public-facing, but private. See internal.h for + * declarations which are only used internally by vips and which are not + * externally visible. + * + * 6/7/09 + * - from vips.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_PRIVATE_H +#define VIPS_PRIVATE_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_SPARE (8) + +/* Private to iofuncs: the minimum number of scanlines we add above and below + * the window as a margin for slop. + */ +#define VIPS__WINDOW_MARGIN_PIXELS (128) + +/* Private to iofuncs: add at least this many bytes above and below the window. + * There's no point mapping just a few KB of a small image. + */ +#define VIPS__WINDOW_MARGIN_BYTES (1024 * 1024 * 10) + +/* sizeof() a VIPS header on disc. + */ +#define VIPS_SIZEOF_HEADER (64) + +/* What we track for each mmap window. Have a list of these on an openin + * VipsImage. + */ +typedef struct { + int ref_count; /* # of regions referencing us */ + struct _VipsImage *im; /* VipsImage we are attached to */ + + int top; /* Area of image we have mapped, in pixels */ + int height; + VipsPel *data; /* First pixel of line 'top' */ + + void *baseaddr; /* Base of window */ + size_t length; /* Size of window */ +} VipsWindow; + +VIPS_API +int vips_window_unref( VipsWindow *window ); +VIPS_API +void vips_window_print( VipsWindow *window ); + +/* Per-thread buffer state. Held in a GPrivate. + */ +typedef struct { + GHashTable *hash; /* VipsImage -> VipsBufferCache* */ + GThread *thread; /* Just for sanity checking */ +} VipsBufferThread; + +/* Per-image buffer cache. This keeps a list of "done" VipsBuffer that this + * worker has generated. We use this to reuse results within a thread. + * + * Hash to this from VipsBufferThread::hash. + * We can't store the GSList directly in the hash table as GHashTable lacks an + * update operation and we'd need to _remove() and _insert() on every list + * operation. + */ +typedef struct _VipsBufferCache { + GSList *buffers; /* GSList of "done" VipsBuffer* */ + GThread *thread; /* Just for sanity checking */ + struct _VipsImage *im; + VipsBufferThread *buffer_thread; + GSList *reserve; /* VipsBuffer kept in reserve */ + int n_reserve; /* Number in reserve */ +} VipsBufferCache; + +/* What we track for each pixel buffer. These can move between caches and + * between threads, but not between images. + * + * Moving between threads is difficult, use region ownership stuff. + */ +typedef struct _VipsBuffer { + int ref_count; /* # of regions referencing us */ + struct _VipsImage *im; /* VipsImage we are attached to */ + + VipsRect area; /* Area this pixel buffer covers */ + gboolean done; /* Calculated and in a cache */ + VipsBufferCache *cache; /* The cache this buffer is published on */ + VipsPel *buf; /* Private malloc() area */ + size_t bsize; /* Size of private malloc() */ +} VipsBuffer; + +VIPS_API +void vips_buffer_dump_all( void ); +VIPS_API +void vips_buffer_done( VipsBuffer *buffer ); +VIPS_API +void vips_buffer_undone( VipsBuffer *buffer ); +VIPS_API +void vips_buffer_unref( VipsBuffer *buffer ); +VIPS_API +VipsBuffer *vips_buffer_new( struct _VipsImage *im, VipsRect *area ); +VIPS_API +VipsBuffer *vips_buffer_ref( struct _VipsImage *im, VipsRect *area ); +VIPS_API +VipsBuffer *vips_buffer_unref_ref( VipsBuffer *buffer, + struct _VipsImage *im, VipsRect *area ); +VIPS_API +void vips_buffer_print( VipsBuffer *buffer ); + +void vips__render_shutdown( void ); + +/* Sections of region.h that are private to VIPS. + */ + +/* Region types. + */ +typedef enum _RegionType { + VIPS_REGION_NONE, + VIPS_REGION_BUFFER, /* A VipsBuffer */ + VIPS_REGION_OTHER_REGION, /* Memory on another region */ + VIPS_REGION_OTHER_IMAGE, /* Memory on another image */ + VIPS_REGION_WINDOW /* A VipsWindow on fd */ +} RegionType; + +/* Private to iofuncs: the size of the `tiles' requested by + * vips_image_generate() when acting as a data sink. + */ +#define VIPS__TILE_WIDTH (128) +#define VIPS__TILE_HEIGHT (128) + +/* The height of the strips for the other two request styles. + */ +#define VIPS__THINSTRIP_HEIGHT (1) +#define VIPS__FATSTRIP_HEIGHT (16) + +/* Functions on regions. + */ +struct _VipsRegion; +void vips__region_take_ownership( struct _VipsRegion *reg ); +void vips__region_check_ownership( struct _VipsRegion *reg ); +/* TODO(kleisauke): VIPS_API is required by vipsdisp. + */ +VIPS_API +void vips__region_no_ownership( struct _VipsRegion *reg ); + +typedef int (*VipsRegionFillFn)( struct _VipsRegion *, void * ); +VIPS_API +int vips_region_fill( struct _VipsRegion *reg, + const VipsRect *r, VipsRegionFillFn fn, void *a ); + +int vips__image_wio_output( struct _VipsImage *image ); +int vips__image_pio_output( struct _VipsImage *image ); + +/* VIPS_ARGUMENT_FOR_ALL() needs to have this visible. + */ +VIPS_API +VipsArgumentInstance *vips__argument_get_instance( + VipsArgumentClass *argument_class, + VipsObject *object); +VipsArgument *vips__argument_table_lookup( VipsArgumentTable *table, + GParamSpec *pspec); + +/* im_demand_hint_array() needs to have this visible. + */ +#if VIPS_ENABLE_DEPRECATED +VIPS_API +#endif +void vips__demand_hint_array( struct _VipsImage *image, + int hint, struct _VipsImage **in ); +/* im_cp_desc_array() needs to have this visible. + */ +#if VIPS_ENABLE_DEPRECATED +VIPS_API +#endif +int vips__image_copy_fields_array( struct _VipsImage *out, + struct _VipsImage *in[] ); + +void vips__region_count_pixels( struct _VipsRegion *region, const char *nickname ); +VIPS_API +void vips_region_dump_all( void ); + +VIPS_API +int vips_region_prepare_many( struct _VipsRegion **reg, const VipsRect *r ); + +/* Handy for debugging. + */ +int vips__view_image( struct _VipsImage *image ); + +/* Pre 8.7 libvipses used this for allocating argument ids. + */ +VIPS_API +int _vips__argument_id; + +void vips__meta_init( void ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_PRIVATE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/rect.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/rect.h new file mode 100644 index 0000000..34498db --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/rect.h @@ -0,0 +1,80 @@ +/* Simple rectangle algebra. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_RECT_H +#define VIPS_RECT_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef struct _VipsRect { + /*< public >*/ + int left; + int top; + int width; + int height; +} VipsRect; + +#define VIPS_RECT_RIGHT(R) ((R)->left + (R)->width) +#define VIPS_RECT_BOTTOM(R) ((R)->top + (R)->height) +#define VIPS_RECT_HCENTRE(R) ((R)->left + (R)->width / 2) +#define VIPS_RECT_VCENTRE(R) ((R)->top + (R)->height / 2) + +VIPS_API +gboolean vips_rect_isempty( const VipsRect *r ); +VIPS_API +gboolean vips_rect_includespoint( const VipsRect *r, int x, int y ); +VIPS_API +gboolean vips_rect_includesrect( const VipsRect *r1, const VipsRect *r2 ); +VIPS_API +gboolean vips_rect_equalsrect( const VipsRect *r1, const VipsRect *r2 ); +VIPS_API +gboolean vips_rect_overlapsrect( const VipsRect *r1, const VipsRect *r2 ); +VIPS_API +void vips_rect_marginadjust( VipsRect *r, int n ); +VIPS_API +void vips_rect_intersectrect( const VipsRect *r1, const VipsRect *r2, + VipsRect *out ); +VIPS_API +void vips_rect_unionrect( const VipsRect *r1, const VipsRect *r2, + VipsRect *out ); +VIPS_API +VipsRect *vips_rect_dup( const VipsRect *r ); +VIPS_API +void vips_rect_normalise( VipsRect *r ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_RECT_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/region.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/region.h new file mode 100644 index 0000000..f18035c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/region.h @@ -0,0 +1,238 @@ +/* Definitions for partial image regions. + * + * J.Cupitt, 8/4/93 + * + * 2/3/11 + * - move to GObject + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_REGION_H +#define VIPS_REGION_H + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_TYPE_REGION (vips_region_get_type()) +#define VIPS_REGION( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_REGION, VipsRegion )) +#define VIPS_REGION_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_REGION, VipsRegionClass)) +#define VIPS_IS_REGION( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_REGION )) +#define VIPS_IS_REGION_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_REGION )) +#define VIPS_REGION_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_REGION, VipsRegionClass )) + +/** + * VipsRegionShrink: + * @VIPS_REGION_SHRINK_MEAN: use the average + * @VIPS_REGION_SHRINK_MEDIAN: use the median + * @VIPS_REGION_SHRINK_MODE: use the mode + * @VIPS_REGION_SHRINK_MAX: use the maximum + * @VIPS_REGION_SHRINK_MIN: use the minimum + * @VIPS_REGION_SHRINK_NEAREST: use the top-left pixel + * + * How to calculate the output pixels when shrinking a 2x2 region. + */ +typedef enum { + VIPS_REGION_SHRINK_MEAN, + VIPS_REGION_SHRINK_MEDIAN, + VIPS_REGION_SHRINK_MODE, + VIPS_REGION_SHRINK_MAX, + VIPS_REGION_SHRINK_MIN, + VIPS_REGION_SHRINK_NEAREST, + VIPS_REGION_SHRINK_LAST +} VipsRegionShrink; + +/* Sub-area of image. + * + * Matching typedef in basic.h. + */ +struct _VipsRegion { + VipsObject parent_object; + + /*< public >*/ + /* Users may read these two fields. + */ + VipsImage *im; /* Link back to parent image */ + VipsRect valid; /* Area of parent we can see */ + + /* The rest of VipsRegion is private. + */ + /*< private >*/ + RegionType type; /* What kind of attachment */ + VipsPel *data; /* Off here to get data */ + int bpl; /* Bytes-per-line for data */ + void *seq; /* Sequence we are using to fill region */ + + /* The thread that made this region. Used to assert() test that + * regions are not being shared between threads. + */ + GThread *thread; + + /* Ref to the window we use for this region, if any. + */ + VipsWindow *window; + + /* Ref to the buffer we use for this region, if any. + */ + VipsBuffer *buffer; + + /* The image this region is on has changed and caches need to be + * dropped. + */ + gboolean invalid; +}; + +typedef struct _VipsRegionClass { + VipsObjectClass parent_class; + +} VipsRegionClass; + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_region_get_type(void); + +VIPS_API +VipsRegion *vips_region_new( VipsImage *image ); + +VIPS_API +int vips_region_buffer( VipsRegion *reg, const VipsRect *r ); +VIPS_API +int vips_region_image( VipsRegion *reg, const VipsRect *r ); +VIPS_API +int vips_region_region( VipsRegion *reg, VipsRegion *dest, + const VipsRect *r, int x, int y ); +VIPS_API +int vips_region_equalsregion( VipsRegion *reg1, VipsRegion *reg2 ); +VIPS_API +int vips_region_position( VipsRegion *reg, int x, int y ); + +VIPS_API +void vips_region_paint( VipsRegion *reg, const VipsRect *r, int value ); +VIPS_API +void vips_region_paint_pel( VipsRegion *reg, + const VipsRect *r, const VipsPel *ink ); +VIPS_API +void vips_region_black( VipsRegion *reg ); +VIPS_API +void vips_region_copy( VipsRegion *reg, VipsRegion *dest, + const VipsRect *r, int x, int y ); +VIPS_API +int vips_region_shrink_method( VipsRegion *from, VipsRegion *to, + const VipsRect *target, VipsRegionShrink method ); +VIPS_API +int vips_region_shrink( VipsRegion *from, VipsRegion *to, + const VipsRect *target ); + +VIPS_API +int vips_region_prepare( VipsRegion *reg, const VipsRect *r ); +VIPS_API +int vips_region_prepare_to( VipsRegion *reg, + VipsRegion *dest, const VipsRect *r, int x, int y ); + +VIPS_API +VipsPel *vips_region_fetch( VipsRegion *region, + int left, int top, int width, int height, size_t *len ); +VIPS_API +int vips_region_width( VipsRegion *region ); +VIPS_API +int vips_region_height( VipsRegion *region ); + +VIPS_API +void vips_region_invalidate( VipsRegion *reg ); + +/* Use this to count pixels passing through key points. Handy for spotting bad + * overcomputation. + */ +#ifdef DEBUG_LEAK +#define VIPS_COUNT_PIXELS( R, N ) vips__region_count_pixels( R, N ) +#else /*!DEBUG_LEAK*/ +#define VIPS_COUNT_PIXELS( R, N ) +#endif /*DEBUG_LEAK*/ + +#define VIPS_REGION_LSKIP( R ) \ + ((size_t)((R)->bpl)) +#define VIPS_REGION_N_ELEMENTS( R ) \ + ((size_t)((R)->valid.width * (R)->im->Bands)) +#define VIPS_REGION_SIZEOF_ELEMENT( R ) \ + (VIPS_IMAGE_SIZEOF_ELEMENT( (R)->im )) +#define VIPS_REGION_SIZEOF_PEL( R ) \ + (VIPS_IMAGE_SIZEOF_PEL( (R)->im )) +#define VIPS_REGION_SIZEOF_LINE( R ) \ + ((size_t)((R)->valid.width * VIPS_REGION_SIZEOF_PEL( R ))) + +/* If DEBUG is defined, add bounds checking. + */ +#ifdef DEBUG +#define VIPS_REGION_ADDR( R, X, Y ) \ + ( (vips_rect_includespoint( &(R)->valid, (X), (Y) ))? \ + ((R)->data + ((Y) - (R)->valid.top) * VIPS_REGION_LSKIP(R) + \ + ((X) - (R)->valid.left) * VIPS_REGION_SIZEOF_PEL( R )): \ + (fprintf( stderr, \ + "VIPS_REGION_ADDR: point out of bounds, " \ + "file \"%s\", line %d\n" \ + "(point x=%d, y=%d\n" \ + " should have been within VipsRect left=%d, top=%d, " \ + "width=%d, height=%d)\n", \ + __FILE__, __LINE__, \ + (X), (Y), \ + (R)->valid.left, \ + (R)->valid.top, \ + (R)->valid.width, \ + (R)->valid.height ), abort(), (VipsPel *) NULL) \ + ) +#else /*DEBUG*/ +#define VIPS_REGION_ADDR( R, X, Y ) \ + ((R)->data + \ + ((Y)-(R)->valid.top) * VIPS_REGION_LSKIP( R ) + \ + ((X)-(R)->valid.left) * VIPS_REGION_SIZEOF_PEL( R )) +#endif /*DEBUG*/ + +#define VIPS_REGION_ADDR_TOPLEFT( R ) ((R)->data) + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_REGION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/resample.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/resample.h new file mode 100644 index 0000000..34da582 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/resample.h @@ -0,0 +1,123 @@ +/* resample.h + * + * 20/9/09 + * - from proto.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_RESAMPLE_H +#define VIPS_RESAMPLE_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +typedef enum { + VIPS_KERNEL_NEAREST, + VIPS_KERNEL_LINEAR, + VIPS_KERNEL_CUBIC, + VIPS_KERNEL_MITCHELL, + VIPS_KERNEL_LANCZOS2, + VIPS_KERNEL_LANCZOS3, + VIPS_KERNEL_LAST +} VipsKernel; + +typedef enum { + VIPS_SIZE_BOTH, + VIPS_SIZE_UP, + VIPS_SIZE_DOWN, + VIPS_SIZE_FORCE, + VIPS_SIZE_LAST +} VipsSize; + +VIPS_API +int vips_shrink( VipsImage *in, VipsImage **out, + double hshrink, double vshrink, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_shrinkh( VipsImage *in, VipsImage **out, int hshrink, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_shrinkv( VipsImage *in, VipsImage **out, int vshrink, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_reduce( VipsImage *in, VipsImage **out, + double hshrink, double vshrink, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_reduceh( VipsImage *in, VipsImage **out, double hshrink, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_reducev( VipsImage *in, VipsImage **out, double vshrink, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_thumbnail( const char *filename, VipsImage **out, int width, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_thumbnail_buffer( void *buf, size_t len, VipsImage **out, + int width, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_thumbnail_image( VipsImage *in, VipsImage **out, int width, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_thumbnail_source( VipsSource *source, VipsImage **out, + int width, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_similarity( VipsImage *in, VipsImage **out, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_rotate( VipsImage *in, VipsImage **out, double angle, ... ) + __attribute__((sentinel)); +VIPS_API +int vips_affine( VipsImage *in, VipsImage **out, + double a, double b, double c, double d, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_resize( VipsImage *in, VipsImage **out, double scale, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_mapim( VipsImage *in, VipsImage **out, VipsImage *index, ... ) + __attribute__((sentinel)); + +VIPS_API +int vips_quadratic( VipsImage *in, VipsImage **out, VipsImage *coeff, ... ) + __attribute__((sentinel)); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_RESAMPLE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/sbuf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/sbuf.h new file mode 100644 index 0000000..1fb2895 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/sbuf.h @@ -0,0 +1,144 @@ +/* Buffered inputput from a VipsSource + * + * J.Cupitt, 18/11/19 + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_SBUF_H +#define VIPS_SBUF_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_TYPE_SBUF (vips_sbuf_get_type()) +#define VIPS_SBUF( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_SBUF, VipsSbuf )) +#define VIPS_SBUF_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_SBUF, VipsSbufClass)) +#define VIPS_IS_SBUF( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_SBUF )) +#define VIPS_IS_SBUF_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_SBUF )) +#define VIPS_SBUF_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_SBUF, VipsSbufClass )) + +#define VIPS_SBUF_BUFFER_SIZE (4096) + +/* Layer over source: read with an input buffer. + * + * Libraries like libjpeg do their own input buffering and need raw IO, but + * others, like radiance, need to parse the input into lines. A buffered read + * class is very convenient. + */ +typedef struct _VipsSbuf { + VipsObject parent_object; + + /*< private >*/ + + /* The VipsSource we wrap. + */ + VipsSource *source; + + /* The +1 means there's always a \0 byte at the end. + * + * Unsigned char, since we don't want >127 to be -ve. + * + * chars_in_buffer is how many chars we have in input_buffer, + * read_point is the current read position in that buffer. + */ + unsigned char input_buffer[VIPS_SBUF_BUFFER_SIZE + 1]; + int chars_in_buffer; + int read_point; + + /* Build lines of text here. + */ + unsigned char line[VIPS_SBUF_BUFFER_SIZE + 1]; + +} VipsSbuf; + +typedef struct _VipsSbufClass { + VipsObjectClass parent_class; + +} VipsSbufClass; + +VIPS_API +GType vips_sbuf_get_type( void ); + +VIPS_API +VipsSbuf *vips_sbuf_new_from_source( VipsSource *source ); + +VIPS_API +void vips_sbuf_unbuffer( VipsSbuf *sbuf ); + +VIPS_API +int vips_sbuf_getc( VipsSbuf *sbuf ); +#define VIPS_SBUF_GETC( S ) ( \ + (S)->read_point < (S)->chars_in_buffer ? \ + (S)->input_buffer[(S)->read_point++] : \ + vips_sbuf_getc( S ) \ +) +VIPS_API +void vips_sbuf_ungetc( VipsSbuf *sbuf ); +#define VIPS_SBUF_UNGETC( S ) { \ + if( (S)->read_point > 0 ) \ + (S)->read_point -= 1; \ +} + +VIPS_API +int vips_sbuf_require( VipsSbuf *sbuf, int require ); +#define VIPS_SBUF_REQUIRE( S, R ) ( \ + (S)->read_point + (R) <= (S)->chars_in_buffer ? \ + 0 : \ + vips_sbuf_require( (S), (R) ) \ +) +#define VIPS_SBUF_PEEK( S ) ((S)->input_buffer + (S)->read_point) +#define VIPS_SBUF_FETCH( S ) ((S)->input_buffer[(S)->read_point++]) + +VIPS_API +const char *vips_sbuf_get_line( VipsSbuf *sbuf ); +VIPS_API +char *vips_sbuf_get_line_copy( VipsSbuf *sbuf ); +VIPS_API +const char *vips_sbuf_get_non_whitespace( VipsSbuf *sbuf ); +VIPS_API +int vips_sbuf_skip_whitespace( VipsSbuf *sbuf ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_SBUF_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/semaphore.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/semaphore.h new file mode 100644 index 0000000..0762aa4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/semaphore.h @@ -0,0 +1,75 @@ +/* Definitions for thread support. + * + * JC, 9/5/94 + * 30/7/99 RP, JC + * - reworked for posix/solaris threads + * 28/9/99 JC + * - restructured, made part of public API + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_SEMAPHORE_H +#define VIPS_SEMAPHORE_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* Implement our own semaphores. + */ +typedef struct { + char *name; + int v; + + GMutex *mutex; + GCond *cond; +} VipsSemaphore; + +VIPS_API +int vips_semaphore_up( VipsSemaphore *s ); +VIPS_API +int vips_semaphore_down( VipsSemaphore *s ); +VIPS_API +int vips_semaphore_upn( VipsSemaphore *s, int n ); +VIPS_API +int vips_semaphore_downn( VipsSemaphore *s, int n ); +VIPS_API +void vips_semaphore_destroy( VipsSemaphore *s ); +VIPS_API +void vips_semaphore_init( VipsSemaphore *s, int v, char *name ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_SEMAPHORE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/thread.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/thread.h new file mode 100644 index 0000000..964c94f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/thread.h @@ -0,0 +1,68 @@ +/* Private include file ... if we've been configured without gthread, we need + * to point the g_thread_*() and g_mutex_*() functions at our own stubs. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_THREAD_H +#define VIPS_THREAD_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* We need wrappers over g_mutex_new(), it was replaced by g_mutex_init() in + * glib 2.32+ + */ +VIPS_API +GMutex *vips_g_mutex_new( void ); +VIPS_API +void vips_g_mutex_free( GMutex * ); + +/* Same for GCond. + */ +VIPS_API +GCond *vips_g_cond_new( void ); +VIPS_API +void vips_g_cond_free( GCond * ); + +/* ... and for GThread. + */ +VIPS_API +GThread *vips_g_thread_new( const char *, GThreadFunc, gpointer ); +VIPS_API +void *vips_g_thread_join( GThread *thread ); + +VIPS_API +gboolean vips_thread_isworker( void ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_THREAD_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/threadpool.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/threadpool.h new file mode 100644 index 0000000..1b50aa8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/threadpool.h @@ -0,0 +1,160 @@ +/* Thread eval for VIPS. + * + * 29/9/99 JC + * - from thread.h + * 17/3/10 + * - from threadgroup + * - rework with a simpler distributed work allocation model + * 02/02/20 kleisauke + * - reuse threads by using GLib's threadpool + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_THREADPOOL_H +#define VIPS_THREADPOOL_H + +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + + +/* Per-thread state. Allocate functions can use these members to + * communicate with work functions. + */ + +#define VIPS_TYPE_THREAD_STATE (vips_thread_state_get_type()) +#define VIPS_THREAD_STATE( obj ) \ + (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ + VIPS_TYPE_THREAD_STATE, VipsThreadState )) +#define VIPS_THREAD_STATE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_CAST( (klass), \ + VIPS_TYPE_THREAD_STATE, VipsThreadStateClass)) +#define VIPS_IS_THREAD_STATE( obj ) \ + (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_THREAD_STATE )) +#define VIPS_IS_THREAD_STATE_CLASS( klass ) \ + (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_THREAD_STATE )) +#define VIPS_THREAD_STATE_GET_CLASS( obj ) \ + (G_TYPE_INSTANCE_GET_CLASS( (obj), \ + VIPS_TYPE_THREAD_STATE, VipsThreadStateClass )) + +typedef struct _VipsThreadState { + VipsObject parent_object; + + /*< public >*/ + /* Image we run on. + */ + VipsImage *im; + + /* This region is created and destroyed by the threadpool for the + * use of the worker. + */ + VipsRegion *reg; + + /* Neither used nor set, do what you like with them. + */ + VipsRect pos; + int x, y; + + /* Set in work to get the allocate to signal stop. + */ + gboolean stop; + + /* The client data passed to the enclosing vips_threadpool_run(). + */ + void *a; + + /* Set in allocate to stall this thread for a moment. Handy for + * debugging race conditions. + */ + gboolean stall; + +} VipsThreadState; + +typedef struct _VipsThreadStateClass { + VipsObjectClass parent_class; + /*< public >*/ + +} VipsThreadStateClass; + +VIPS_API +void *vips_thread_state_set( VipsObject *object, void *a, void *b ); + +/* Don't put spaces around void here, it breaks gtk-doc. + */ +VIPS_API +GType vips_thread_state_get_type(void); + +VIPS_API +VipsThreadState *vips_thread_state_new( VipsImage *im, void *a ); + +/* Constructor for per-thread state. + */ +typedef VipsThreadState *(*VipsThreadStartFn)( VipsImage *im, void *a ); + +/* A work allocate function. This is run single-threaded by a worker to + * set up a new work unit. + * Return non-zero for errors. Set *stop for "no more work to do" + */ +typedef int (*VipsThreadpoolAllocateFn)( VipsThreadState *state, + void *a, gboolean *stop ); + +/* A work function. This does a unit of work (eg. processing a tile or + * whatever). Return non-zero for errors. + */ +typedef int (*VipsThreadpoolWorkFn)( VipsThreadState *state, void *a ); + +/* A progress function. This is run by the main thread once for every + * allocation. Return an error to kill computation early. + */ +typedef int (*VipsThreadpoolProgressFn)( void *a ); + +VIPS_API +int vips_threadpool_run( VipsImage *im, + VipsThreadStartFn start, + VipsThreadpoolAllocateFn allocate, + VipsThreadpoolWorkFn work, + VipsThreadpoolProgressFn progress, + void *a ); +VIPS_API +void vips_get_tile_size( VipsImage *im, + int *tile_width, int *tile_height, int *n_lines ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_THREADPOOL_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/transform.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/transform.h new file mode 100644 index 0000000..d1684a0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/transform.h @@ -0,0 +1,89 @@ +/* Affine transforms. + */ + +/* + + Copyright (C) 1991-2003 The National Gallery + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_TRANSFORM_H +#define VIPS_TRANSFORM_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* Params for an affine transformation. + */ +typedef struct { + /* Area of input we can use. This can be smaller than the real input + * image: we expand the input to add extra pixels for interpolation. + */ + VipsRect iarea; + + /* The area of the output we've been asked to generate. left/top can + * be negative. + */ + VipsRect oarea; + + /* The transform. + */ + double a, b, c, d; + double idx, idy; + double odx, ody; + + double ia, ib, ic, id; /* Inverse of matrix abcd */ +} VipsTransformation; + +void vips__transform_init( VipsTransformation *trn ); +int vips__transform_calc_inverse( VipsTransformation *trn ); +int vips__transform_isidentity( const VipsTransformation *trn ); +int vips__transform_add( const VipsTransformation *in1, + const VipsTransformation *in2, + VipsTransformation *out ); +void vips__transform_print( const VipsTransformation *trn ); + +void vips__transform_forward_point( const VipsTransformation *trn, + const double x, const double y, double *ox, double *oy ); +void vips__transform_invert_point( const VipsTransformation *trn, + const double x, const double y, double *ox, double *oy ); +void vips__transform_forward_rect( const VipsTransformation *trn, + const VipsRect *in, VipsRect *out ); +void vips__transform_invert_rect( const VipsTransformation *trn, + const VipsRect *in, VipsRect *out ); + +void vips__transform_set_area( VipsTransformation * ); + +int vips__affine( VipsImage *in, VipsImage *out, VipsTransformation *trn ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_TRANSFORM_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/type.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/type.h new file mode 100644 index 0000000..6a8481d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/type.h @@ -0,0 +1,305 @@ +/* the GTypes we define + * + * 27/10/11 + * - from header.h + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_TYPE_H +#define VIPS_TYPE_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* A very simple boxed type for testing. Just holds an int. + */ +typedef struct _VipsThing { + int i; +} VipsThing; + +/** + * VIPS_TYPE_THING: + * + * The #GType for a #VipsThing. + */ +#define VIPS_TYPE_THING (vips_thing_get_type()) +VIPS_API +GType vips_thing_get_type(void); +VIPS_API +VipsThing *vips_thing_new( int i ); + +/* A ref-counted area of memory. Can hold arrays of things as well. + */ +typedef struct _VipsArea { + void *data; + size_t length; /* 0 if not known */ + + /* If this area represents an array, the number of elements in the + * array. Equal to length / sizeof(element). + */ + int n; + + /*< private >*/ + + /* Reference count and lock. + * + * We could use an atomic int, but this is not a high-traffic data + * structure, so a simple GMutex is OK. + */ + int count; + GMutex *lock; + + /* Things like ICC profiles need their own free functions. + * + * Set client to anything you like -- VipsArea doesn't use this. + */ + VipsCallbackFn free_fn; + void *client; + + /* If we are holding an array (for example, an array of double), the + * GType of the elements and their size. 0 for not known. + * + * n is always length / sizeof_type, we keep it as a member for + * convenience. + */ + GType type; + size_t sizeof_type; +} VipsArea; + +VIPS_API +VipsArea *vips_area_copy( VipsArea *area ); +VIPS_API +int vips_area_free_cb( void *mem, VipsArea *area ); +VIPS_API +void vips_area_unref( VipsArea *area ); + +VIPS_API +VipsArea *vips_area_new( VipsCallbackFn free_fn, void *data ); +VIPS_API +VipsArea *vips_area_new_array( GType type, size_t sizeof_type, int n ); +VIPS_API +VipsArea *vips_area_new_array_object( int n ); +VIPS_API +void *vips_area_get_data( VipsArea *area, + size_t *length, int *n, GType *type, size_t *sizeof_type ); + +#ifdef VIPS_DEBUG +#define VIPS_ARRAY_ADDR( X, I ) \ + (((I) >= 0 && (I) < VIPS_AREA( X )->n) ? \ + (void *) ((VipsPel *) VIPS_AREA( X )->data + \ + VIPS_AREA( X )->sizeof_type * (I)) : \ + (fprintf( stderr, \ + "VIPS_ARRAY_ADDR: index out of bounds, " \ + "file \"%s\", line %d\n" \ + "(index %d should have been within [0,%d])\n", \ + __FILE__, __LINE__, \ + (I), VIPS_AREA( X )->n ), NULL )) +#else /*!VIPS_DEBUG*/ +#define VIPS_ARRAY_ADDR( X, I ) \ + ((void *) \ + ((VipsPel *) VIPS_AREA( X )->data + VIPS_AREA( X )->sizeof_type * (I))) +#endif /*VIPS_DEBUG*/ + +/** + * VIPS_TYPE_AREA: + * + * The #GType for a #VipsArea. + */ +#define VIPS_TYPE_AREA (vips_area_get_type()) +#define VIPS_AREA( X ) ((VipsArea *) (X)) +VIPS_API +GType vips_area_get_type(void); + +/** + * VIPS_TYPE_SAVE_STRING: + * + * The #GType for a #VipsSaveString. + */ +#define VIPS_TYPE_SAVE_STRING (vips_save_string_get_type()) +VIPS_API +GType vips_save_string_get_type(void); + +/** + * VIPS_TYPE_REF_STRING: + * + * The #GType for a #VipsRefString. + */ +#define VIPS_TYPE_REF_STRING (vips_ref_string_get_type()) + +typedef struct _VipsRefString { + VipsArea area; +} VipsRefString; + +VIPS_API +VipsRefString *vips_ref_string_new( const char *str ); +VIPS_API +const char *vips_ref_string_get( VipsRefString *refstr, size_t *length ); +VIPS_API +GType vips_ref_string_get_type(void); + +/** + * VIPS_TYPE_BLOB: + * + * The %GType for a #VipsBlob. + */ +#define VIPS_TYPE_BLOB (vips_blob_get_type()) + +typedef struct _VipsBlob { + VipsArea area; +} VipsBlob; + +VIPS_API +VipsBlob *vips_blob_new( VipsCallbackFn free_fn, + const void *data, size_t length ); +VIPS_API +VipsBlob *vips_blob_copy( const void *data, size_t length ); +VIPS_API +const void *vips_blob_get( VipsBlob *blob, size_t *length ); +VIPS_API +void vips_blob_set( VipsBlob *blob, + VipsCallbackFn free_fn, const void *data, size_t length ); +VIPS_API +GType vips_blob_get_type(void); + +/** + * VIPS_TYPE_ARRAY_DOUBLE: + * + * The #GType for a #VipsArrayDouble. + */ +#define VIPS_TYPE_ARRAY_DOUBLE (vips_array_double_get_type()) + +typedef struct _VipsArrayDouble { + VipsArea area; +} VipsArrayDouble; + +VIPS_API +VipsArrayDouble *vips_array_double_new( const double *array, int n ); +VIPS_API +VipsArrayDouble *vips_array_double_newv( int n, ... ); +VIPS_API +double *vips_array_double_get( VipsArrayDouble *array, int *n ); +VIPS_API +GType vips_array_double_get_type(void); + +/** + * VIPS_TYPE_ARRAY_INT: + * + * The #GType for a #VipsArrayInt. + */ +#define VIPS_TYPE_ARRAY_INT (vips_array_int_get_type()) + +typedef struct _VipsArrayInt { + VipsArea area; +} VipsArrayInt; + +VIPS_API +VipsArrayInt *vips_array_int_new( const int *array, int n ); +VIPS_API +VipsArrayInt *vips_array_int_newv( int n, ... ); +VIPS_API +int *vips_array_int_get( VipsArrayInt *array, int *n ); +VIPS_API +GType vips_array_int_get_type(void); + +/** + * VIPS_TYPE_ARRAY_IMAGE: + * + * The #GType for a #VipsArrayImage. + */ +#define VIPS_TYPE_ARRAY_IMAGE (vips_array_image_get_type()) + +typedef struct _VipsArrayImage { + VipsArea area; +} VipsArrayImage; + +/* See image.h for vips_array_image_new() etc., they need to be declared after + * VipsImage. + */ +VIPS_API +GType vips_array_image_get_type(void); + +VIPS_API +void vips_value_set_area( GValue *value, VipsCallbackFn free_fn, void *data ); +VIPS_API +void *vips_value_get_area( const GValue *value, size_t *length ); + +VIPS_API +const char *vips_value_get_save_string( const GValue *value ); +VIPS_API +void vips_value_set_save_string( GValue *value, const char *str ); +VIPS_API +void vips_value_set_save_stringf( GValue *value, const char *fmt, ... ) + __attribute__((format(printf, 2, 3))); + +VIPS_API +const char *vips_value_get_ref_string( const GValue *value, size_t *length ); +VIPS_API +void vips_value_set_ref_string( GValue *value, const char *str ); + +VIPS_API +void *vips_value_get_blob( const GValue *value, size_t *length ); +VIPS_API +void vips_value_set_blob( GValue *value, + VipsCallbackFn free_fn, const void *data, size_t length ); +VIPS_API +void vips_value_set_blob_free( GValue *value, void *data, size_t length ); + +VIPS_API +void vips_value_set_array( GValue *value, + int n, GType type, size_t sizeof_type ); +VIPS_API +void *vips_value_get_array( const GValue *value, + int *n, GType *type, size_t *sizeof_type ); + +VIPS_API +double *vips_value_get_array_double( const GValue *value, int *n ); +VIPS_API +void vips_value_set_array_double( GValue *value, const double *array, int n ); + +VIPS_API +int *vips_value_get_array_int( const GValue *value, int *n ); +VIPS_API +void vips_value_set_array_int( GValue *value, const int *array, int n ); + +VIPS_API +GObject **vips_value_get_array_object( const GValue *value, int *n ); +VIPS_API +void vips_value_set_array_object( GValue *value, int n ); + +/* See also image.h, that has vips_array_image_get(), vips_array_image_new(), + * vips_value_get_array_image() and vips_value_set_array_image(). They need + * to be declared after VipsImage. + */ + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_TYPE_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/util.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/util.h new file mode 100644 index 0000000..1f5e543 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/util.h @@ -0,0 +1,407 @@ +/* Various useful definitions. + * + * J.Cupitt, 8/4/93 + * 15/7/96 JC + * - C++ stuff added + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_UTIL_H +#define VIPS_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#include +#include + +/* Some platforms don't have M_PI :-( + */ +#define VIPS_PI (3.14159265358979323846) + +/* Convert degrees->rads and vice-versa. + */ +#define VIPS_RAD( R ) (((R) / 360.0) * 2.0 * VIPS_PI) +#define VIPS_DEG( A ) (((A) / (2.0 * VIPS_PI)) * 360.0) + +#define VIPS_MAX( A, B ) ((A) > (B) ? (A) : (B)) +#define VIPS_MIN( A, B ) ((A) < (B) ? (A) : (B)) + +#define VIPS_CLIP( A, V, B ) VIPS_MAX( (A), VIPS_MIN( (B), (V) ) ) +#define VIPS_FCLIP( A, V, B ) VIPS_FMAX( (A), VIPS_FMIN( (B), (V) ) ) + +#define VIPS_NUMBER( R ) ((int) (sizeof(R) / sizeof(R[0]))) + +#define VIPS_ABS( X ) (((X) >= 0) ? (X) : -(X)) + +/* The built-in isnan and isinf functions provided by gcc 4+ and clang are + * up to 7x faster than their libc equivalent included from . + */ +#if defined(__clang__) || (__GNUC__ >= 4) +#define VIPS_ISNAN( V ) __builtin_isnan( V ) +#define VIPS_FLOOR( V ) __builtin_floor( V ) +#define VIPS_CEIL( V ) __builtin_ceil( V ) +#define VIPS_RINT( V ) __builtin_rint( V ) +#define VIPS_ROUND( V ) __builtin_round( V ) +#define VIPS_FABS( V ) __builtin_fabs( V ) +#define VIPS_FMAX( A, B ) __builtin_fmax( A, B ) +#define VIPS_FMIN( A, B ) __builtin_fmin( A, B ) +#else +#define VIPS_ISNAN( V ) isnan( V ) +#define VIPS_FLOOR( V ) floor( V ) +#define VIPS_CEIL( V ) ceil( V ) +#define VIPS_RINT( V ) rint( V ) +#define VIPS_ROUND( V ) round( V ) +#define VIPS_FABS( V ) VIPS_ABS( V ) +#define VIPS_FMAX( A, B ) VIPS_MAX( A, B ) +#define VIPS_FMIN( A, B ) VIPS_MIN( A, B ) +#endif + +/* Testing status before the function call saves a lot of time. + */ +#define VIPS_ONCE( ONCE, FUNC, CLIENT ) \ +G_STMT_START { \ + if( G_UNLIKELY( (ONCE)->status != G_ONCE_STATUS_READY ) ) \ + (void) g_once( ONCE, FUNC, CLIENT ); \ +} G_STMT_END + +/* VIPS_RINT() does "bankers rounding", it rounds to the nearest even integer. + * For things like image geometry, we want strict nearest int. + * + * If you know it's unsigned, _UINT is a little faster. + */ +#define VIPS_ROUND_INT( R ) ((int) ((R) > 0 ? ((R) + 0.5) : ((R) - 0.5))) +#define VIPS_ROUND_UINT( R ) ((int) ((R) + 0.5)) + +/* Round N down and up to the nearest multiple of P. + */ +#define VIPS_ROUND_DOWN( N, P ) ((N) - ((N) % (P))) +#define VIPS_ROUND_UP( N, P ) (VIPS_ROUND_DOWN( (N) + (P) - 1, (P) )) + +#define VIPS_SWAP( TYPE, A, B ) \ +G_STMT_START { \ + TYPE t = (A); \ + (A) = (B); \ + (B) = t; \ +} G_STMT_END + +/* Duff's device. Do OPERation N times in a 16-way unrolled loop. + */ +#define VIPS_UNROLL( N, OPER ) \ +G_STMT_START { \ + if( (N) ) { \ + int duff_count = ((N) + 15) / 16; \ + \ + switch( (N) % 16 ) { \ + case 0: do { OPER; \ + case 15: OPER; \ + case 14: OPER; \ + case 13: OPER; \ + case 12: OPER; \ + case 11: OPER; \ + case 10: OPER; \ + case 9: OPER; \ + case 8: OPER; \ + case 7: OPER; \ + case 6: OPER; \ + case 5: OPER; \ + case 4: OPER; \ + case 3: OPER; \ + case 2: OPER; \ + case 1: OPER; \ + } while( --duff_count > 0 ); \ + } \ + } \ +} G_STMT_END + +/* The g_info() macro was added in 2.40. + */ +#ifndef g_info +/* Hopefully we have varargs macros. Maybe revisit this. + */ +#define g_info(...) \ + g_log( G_LOG_DOMAIN, G_LOG_LEVEL_INFO, __VA_ARGS__ ) +#endif + +/* Various integer range clips. Record over/under flows. + */ +#define VIPS_CLIP_UCHAR( V, SEQ ) \ +G_STMT_START { \ + if( (V) < 0 ) { \ + (SEQ)->underflow++; \ + (V) = 0; \ + } \ + else if( (V) > UCHAR_MAX ) { \ + (SEQ)->overflow++; \ + (V) = UCHAR_MAX; \ + } \ +} G_STMT_END + +#define VIPS_CLIP_CHAR( V, SEQ ) \ +G_STMT_START { \ + if( (V) < SCHAR_MIN ) { \ + (SEQ)->underflow++; \ + (V) = SCHAR_MIN; \ + } \ + else if( (V) > SCHAR_MAX ) { \ + (SEQ)->overflow++; \ + (V) = SCHAR_MAX; \ + } \ +} G_STMT_END + +#define VIPS_CLIP_USHORT( V, SEQ ) \ +G_STMT_START { \ + if( (V) < 0 ) { \ + (SEQ)->underflow++; \ + (V) = 0; \ + } \ + else if( (V) > USHRT_MAX ) { \ + (SEQ)->overflow++; \ + (V) = USHRT_MAX; \ + } \ +} G_STMT_END + +#define VIPS_CLIP_SHORT( V, SEQ ) \ +G_STMT_START { \ + if( (V) < SHRT_MIN ) { \ + (SEQ)->underflow++; \ + (V) = SHRT_MIN; \ + } \ + else if( (V) > SHRT_MAX ) { \ + (SEQ)->overflow++; \ + (V) = SHRT_MAX; \ + } \ +} G_STMT_END + +#define VIPS_CLIP_UINT( V, SEQ ) \ +G_STMT_START { \ + if( (V) < 0 ) { \ + (SEQ)->underflow++; \ + (V) = 0; \ + } \ +} G_STMT_END + +#define VIPS_CLIP_NONE( V, SEQ ) {} + +/* Not all platforms have PATH_MAX (eg. Hurd) and we don't need a platform one + * anyway, just a static buffer big enough for almost any path. + */ +#define VIPS_PATH_MAX (4096) + +VIPS_API +const char *vips_enum_string( GType enm, int value ); +VIPS_API +const char *vips_enum_nick( GType enm, int value ); +VIPS_API +int vips_enum_from_nick( const char *domain, GType type, const char *str ); +VIPS_API +int vips_flags_from_nick( const char *domain, GType type, const char *nick ); + +VIPS_API +gboolean vips_slist_equal( GSList *l1, GSList *l2 ); +VIPS_API +void *vips_slist_map2( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); +VIPS_API +void *vips_slist_map2_rev( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); +VIPS_API +void *vips_slist_map4( GSList *list, + VipsSListMap4Fn fn, void *a, void *b, void *c, void *d ); +VIPS_API +void *vips_slist_fold2( GSList *list, void *start, + VipsSListFold2Fn fn, void *a, void *b ); +VIPS_API +GSList *vips_slist_filter( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); +VIPS_API +void vips_slist_free_all( GSList *list ); +VIPS_API +void *vips_map_equal( void *a, void *b ); + +VIPS_API +void *vips_hash_table_map( GHashTable *hash, + VipsSListMap2Fn fn, void *a, void *b ); + +VIPS_API +char *vips_strncpy( char *dest, const char *src, int n ); +VIPS_API +char *vips_strrstr( const char *haystack, const char *needle ); +VIPS_API +gboolean vips_ispostfix( const char *a, const char *b ); +VIPS_API +gboolean vips_iscasepostfix( const char *a, const char *b ); +VIPS_API +gboolean vips_isprefix( const char *a, const char *b ); +VIPS_API +char *vips_break_token( char *str, const char *brk ); + +void vips__chomp( char *str ); + +VIPS_API +int vips_vsnprintf( char *str, size_t size, const char *format, va_list ap ); +VIPS_API +int vips_snprintf( char *str, size_t size, const char *format, ... ) + __attribute__((format(printf, 3, 4))); + +VIPS_API +int vips_filename_suffix_match( const char *path, const char *suffixes[] ); + +VIPS_API +gint64 vips_file_length( int fd ); +/* TODO(kleisauke): VIPS_API is required by vipsedit. + */ +VIPS_API +int vips__write( int fd, const void *buf, size_t count ); + +/* TODO(kleisauke): VIPS_API is required by test_connections. + */ +VIPS_API +int vips__open( const char *filename, int flags, int mode ); +int vips__open_read( const char *filename ); +FILE *vips__fopen( const char *filename, const char *mode ); + +FILE *vips__file_open_read( const char *filename, + const char *fallback_dir, gboolean text_mode ); +FILE *vips__file_open_write( const char *filename, + gboolean text_mode ); +/* TODO(kleisauke): VIPS_API is required by vipsedit. + */ +VIPS_API +char *vips__file_read( FILE *fp, const char *name, size_t *length_out ); +char *vips__file_read_name( const char *name, const char *fallback_dir, + size_t *length_out ); +int vips__file_write( void *data, size_t size, size_t nmemb, FILE *stream ); +/* TODO(kleisauke): VIPS_API is required by the magick module. + */ +VIPS_API +gint64 vips__get_bytes( const char *filename, + unsigned char buf[], gint64 len ); +int vips__fgetc( FILE *fp ); + +GValue *vips__gvalue_ref_string_new( const char *text ); +void vips__gslist_gvalue_free( GSList *list ); +GSList *vips__gslist_gvalue_copy( const GSList *list ); +GSList *vips__gslist_gvalue_merge( GSList *a, const GSList *b ); +char *vips__gslist_gvalue_get( const GSList *list ); + +gint64 vips__seek_no_error( int fd, gint64 pos, int whence ); +/* TODO(kleisauke): VIPS_API is required by vipsedit. + */ +VIPS_API +gint64 vips__seek( int fd, gint64 pos, int whence ); +int vips__ftruncate( int fd, gint64 pos ); +VIPS_API +int vips_existsf( const char *name, ... ) + __attribute__((format(printf, 1, 2))); +VIPS_API +int vips_isdirf( const char *name, ... ) + __attribute__((format(printf, 1, 2))); +VIPS_API +int vips_mkdirf( const char *name, ... ) + __attribute__((format(printf, 1, 2))); +VIPS_API +int vips_rmdirf( const char *name, ... ) + __attribute__((format(printf, 1, 2))); +VIPS_API +int vips_rename( const char *old_name, const char *new_name ); + +/** + * VipsToken: + * @VIPS_TOKEN_LEFT: left bracket + * @VIPS_TOKEN_RIGHT: right bracket + * @VIPS_TOKEN_STRING: string constant + * @VIPS_TOKEN_EQUALS: equals sign + * @VIPS_TOKEN_COMMA: comma + * + * Tokens returned by the vips lexical analyzer, see vips__token_get(). This + * is used to parse option strings for arguments. + * + * Left and right brackets can be any of (, {, [, <. + * + * Strings may be in double quotes, and may contain escaped quote characters, + * for example string, "string" and "str\"ing". + * + */ +typedef enum { + VIPS_TOKEN_LEFT = 1, + VIPS_TOKEN_RIGHT, + VIPS_TOKEN_STRING, + VIPS_TOKEN_EQUALS, + VIPS_TOKEN_COMMA +} VipsToken; + +const char *vips__token_get( const char *buffer, + VipsToken *token, char *string, int size ); +const char *vips__token_must( const char *buffer, VipsToken *token, + char *string, int size ); +const char *vips__token_need( const char *buffer, VipsToken need_token, + char *string, int size ); +const char *vips__token_segment( const char *p, VipsToken *token, + char *string, int size ); +const char *vips__token_segment_need( const char *p, VipsToken need_token, + char *string, int size ); +const char *vips__find_rightmost_brackets( const char *p ); +/* TODO(kleisauke): VIPS_API is required by libvips-cpp and vipsheader. + */ +VIPS_API +void vips__filename_split8( const char *name, + char *filename, char *option_string ); + +VIPS_API +int vips_ispoweroftwo( int p ); +VIPS_API +int vips_amiMSBfirst( void ); + +/* TODO(kleisauke): VIPS_API is required by jpegsave_file_fuzzer. + */ +VIPS_API +char *vips__temp_name( const char *format ); + +void vips__change_suffix( const char *name, char *out, int mx, + const char *new_suff, const char **olds, int nolds ); + +VIPS_API +char *vips_realpath( const char *path ); + +guint32 vips__random( guint32 seed ); +guint32 vips__random_add( guint32 seed, int value ); + +const char *vips__icc_dir( void ); +const char *vips__dll_dir( void ); +const char *vips__windows_prefix( void ); + +char *vips__get_iso8601( void ); + +VIPS_API +int vips_strtod( const char *str, double *out ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_UTIL_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vector.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vector.h new file mode 100644 index 0000000..6dc4bc3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vector.h @@ -0,0 +1,183 @@ +/* helper stuff for Orc + * + * 29/10/10 + * - from im_dilate hackery + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_VECTOR_H +#define VIPS_VECTOR_H + +/* If we are building with -fcf-protection (run-time checking of + * indirect jumps) then Orc won't work. Make sure it's off. + * + * https://gcc.gnu.org/onlinedocs/gcc/\ + * Instrumentation-Options.html#index-fcf-protection + * https://gitlab.freedesktop.org/gstreamer/orc/issues/17 + * + * orc 0.4.30 and later work with cf-protection. + */ +#ifdef __CET__ +#ifndef HAVE_ORC_CF_PROTECTION +#undef HAVE_ORC +#endif +#endif + +#ifdef HAVE_ORC +#include +#endif /*HAVE_ORC*/ + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +#define VIPS_VECTOR_SOURCE_MAX (10) + +/* An Orc program. + */ +typedef struct { + /* Handy for debugging. + */ + const char *name; + char *unique_name; + + /* How many resources we've used so far in this codegen. + */ + int n_temp; + int n_scanline; + int n_source; + int n_destination; + int n_constant; + int n_parameter; + int n_instruction; + + /* The scanline sources, and for each variable, the associated line. + * "sl0" onwards. + */ + int sl[VIPS_VECTOR_SOURCE_MAX]; + int line[VIPS_VECTOR_SOURCE_MAX]; + + /* Non-scanline sources, "s1" etc. s[0] is the var for "s1". + */ + int s[VIPS_VECTOR_SOURCE_MAX]; + + /* The destination var. + */ + int d1; + +#ifdef HAVE_ORC + /* The code we have generated. + */ + OrcProgram *program; +#endif /*HAVE_ORC*/ + + /* Compiled successfully. + */ + gboolean compiled; +} VipsVector; + +/* An executor. + */ +typedef struct { +#ifdef HAVE_ORC + OrcExecutor executor; +#endif /*HAVE_ORC*/ + + VipsVector *vector; +} VipsExecutor; + +/* Set from the command-line. + */ +extern gboolean vips__vector_enabled; + +VIPS_API +void vips_vector_init( void ); +VIPS_API +gboolean vips_vector_isenabled( void ); +VIPS_API +void vips_vector_set_enabled( gboolean enabled ); + +VIPS_API +void vips_vector_free( VipsVector *vector ); +VIPS_API +VipsVector *vips_vector_new( const char *name, int dsize ); + +VIPS_API +void vips_vector_constant( VipsVector *vector, + char *name, int value, int size ); +VIPS_API +void vips_vector_source_scanline( VipsVector *vector, + char *name, int line, int size ); +VIPS_API +int vips_vector_source_name( VipsVector *vector, const char *name, int size ); +VIPS_API +void vips_vector_temporary( VipsVector *vector, const char *name, int size ); +VIPS_API +int vips_vector_parameter( VipsVector *vector, const char *name, int size ); +VIPS_API +int vips_vector_destination( VipsVector *vector, const char *name, int size ); +VIPS_API +void vips_vector_asm2( VipsVector *vector, + const char *op, const char *a, const char *b ); +VIPS_API +void vips_vector_asm3( VipsVector *vector, + const char *op, const char *a, const char *b, const char *c ); +VIPS_API +gboolean vips_vector_full( VipsVector *vector ); + +VIPS_API +gboolean vips_vector_compile( VipsVector *vector ); + +VIPS_API +void vips_vector_print( VipsVector *vector ); + +VIPS_API +void vips_executor_set_program( VipsExecutor *executor, + VipsVector *vector, int n ); +VIPS_API +void vips_executor_set_scanline( VipsExecutor *executor, + VipsRegion *ir, int x, int y ); +VIPS_API +void vips_executor_set_destination( VipsExecutor *executor, void *value ); +VIPS_API +void vips_executor_set_parameter( VipsExecutor *executor, int var, int value ); +VIPS_API +void vips_executor_set_array( VipsExecutor *executor, int var, void *value ); + +VIPS_API +void vips_executor_run( VipsExecutor *executor ); + +VIPS_API +void vips_vector_to_fixed_point( double *in, int *out, int n, int scale ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_VECTOR_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/version.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/version.h new file mode 100644 index 0000000..540883e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/version.h @@ -0,0 +1,26 @@ +/* Macros for the header version. + */ + +#ifndef VIPS_VERSION_H +#define VIPS_VERSION_H + +#define VIPS_VERSION "8.13.3" +#define VIPS_VERSION_STRING "8.13.3" +#define VIPS_MAJOR_VERSION (8) +#define VIPS_MINOR_VERSION (13) +#define VIPS_MICRO_VERSION (3) + +/* The ABI version, as used for library versioning. + */ +#define VIPS_LIBRARY_CURRENT (57) +#define VIPS_LIBRARY_REVISION (3) +#define VIPS_LIBRARY_AGE (15) + +#define VIPS_CONFIG "enable debug: false, enable deprecated: false, enable modules: false, enable RAD load/save: false, enable Analyze7 load/save: false, enable PPM load/save: false, enable GIF load: true, use fftw for FFTs: false, accelerate loops with ORC: true, ICC profile support with lcms: true, zlib: true, text rendering with pangocairo: true, font file support with fontconfig: true, EXIF metadata support with libexif: true, JPEG load/save with libjpeg: true, JXL load/save with libjxl: false (dynamic module: false), JPEG2000 load/save with OpenJPEG: false, PNG load/save with libspng: true, PNG load/save with libpng: false, selected quantisation package: imagequant, TIFF load/save with libtiff: true, image pyramid save with libgsf: true, HEIC/AVIF load/save with libheif: true (dynamic module: false), WebP load/save with libwebp: true, PDF load with PDFium: false, PDF load with poppler-glib: false (dynamic module: false), SVG load with librsvg: true, EXR load with OpenEXR: false, OpenSlide load: false (dynamic module: false), Matlab load with libmatio: false, NIfTI load/save with niftiio: false, FITS load/save with cfitsio: false, GIF save with cgif: true, selected Magick package: none (dynamic module: false), Magick API version: none, Magick load: false, Magick save: false" + +/* Not really anything to do with versions, but this is a handy place to put + * it. + */ +#define VIPS_ENABLE_DEPRECATED 0 + +#endif /*VIPS_VERSION_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vips.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vips.h new file mode 100644 index 0000000..d9e575d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vips.h @@ -0,0 +1,210 @@ +/* @(#) Header file for Birkbeck/VIPS Image Processing Library + * Authors: N. Dessipris, K. Martinez, Birkbeck College, London. + * Sept 94 + * + * 15/7/96 JC + * - now does C++ extern stuff + * - many more protos + * 15/4/97 JC + * - protos split out + * 4/3/98 JC + * - IM_ANY added + * - sRGB colourspace added + * 28/10/98 JC + * - VASARI_MAGIC_INTEL and VASARI_MAGIC_SPARC added + * 29/9/99 JC + * - new locks for threading, no more threadgroup stuff in IMAGE + * 30/11/00 JC + * - override RGB/CMYK macros on cygwin + * 21/9/02 JC + * - new Xoffset/Yoffset fields + * - rationalized macro names + * 6/6/05 Markus Wollgarten + * - added Meta header field + * 31/7/05 + * - added meta.h for new metadata API + * 22/8/05 + * - scrapped stupid VAS_HD + * 30/9/05 + * - added sizeof_header field for mmap window read of RAW files + * 4/10/05 + * - now you have to define IM_ENABLE_DEPRECATED to get broken #defined + * 5/10/05 + * - added GNUC attributes + * 8/5/06 + * - added RGB16, GREY16 + * 30/10/06 + * - added im_window_t + * 7/11/07 + * - added preclose and evalstart callbacks + * - brought time struct in here + * 7/3/08 + * - MAGIC values should be unsigned + * 2/7/08 + * - added invalidate callbacks + * 7/8/08 + * - include , thanks nicola + * 30/6/09 + * - move deprecated stuff to its own header + * 16/5/18 + * - remove old vips7 stuff, you must explicitly include it now + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_VIPS_H +#define VIPS_VIPS_H + +#include +#include +#include +#include + +/* Needed for VipsGInputStream. + */ +#include + +#ifdef __cplusplus +extern "C" { +#endif /*__cplusplus*/ + +/* If we're being parsed by SWIG, remove gcc attributes. + */ +#ifdef SWIG +# ifndef __attribute__ +# define __attribute__(x) /*NOTHING*/ +# endif +#endif /*SWIG*/ + +/* Or if this isn't gcc. + */ +#ifndef __GNUC__ +# ifndef __attribute__ +# define __attribute__(x) /*NOTHING*/ +# endif +#endif /*__GNUC__*/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#if VIPS_ENABLE_DEPRECATED +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if VIPS_ENABLE_DEPRECATED +#include +#endif + +/* We can't use _ here since this will be compiled by our clients and they may + * not have _(). + */ +#define VIPS_INIT( ARGV0 ) \ + (vips_version( 3 ) - vips_version( 5 ) != \ + VIPS_LIBRARY_CURRENT - VIPS_LIBRARY_AGE ? ( \ + g_warning( "ABI mismatch" ), \ + g_warning( "library has ABI version %d", \ + vips_version( 3 ) - vips_version( 5 ) ), \ + g_warning( "application needs ABI version %d", \ + VIPS_LIBRARY_CURRENT - VIPS_LIBRARY_AGE ), \ + vips_error( "vips_init", "ABI mismatch" ), \ + -1 ) : \ + vips_init( ARGV0 )) + +VIPS_API +int vips_init( const char *argv0 ); +VIPS_API +const char *vips_get_argv0( void ); +VIPS_API +const char *vips_get_prgname( void ); +VIPS_API +void vips_shutdown( void ); +VIPS_API +void vips_thread_shutdown( void ); + +VIPS_API +void vips_add_option_entries( GOptionGroup *option_group ); + +VIPS_API +void vips_leak_set( gboolean leak ); + +VIPS_API +void vips_block_untrusted_set( gboolean state ); + +VIPS_API +const char *vips_version_string( void ); +VIPS_API +int vips_version( int flag ); + +VIPS_API +const char *vips_guess_prefix( const char *argv0, const char *env_name ); +VIPS_API +const char *vips_guess_libdir( const char *argv0, const char *env_name ); + +#ifdef __cplusplus +} +#endif /*__cplusplus*/ + +#endif /*VIPS_VIPS_H*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vips8 b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vips8 new file mode 100644 index 0000000..837a29a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/vips/vips8 @@ -0,0 +1,60 @@ +// Include file to get vips C++ binding + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifndef VIPS_CPLUSPLUS +#define VIPS_CPLUSPLUS + +#include + +#include + +/* Define VIPS_CPLUSPLUS_EXPORTS to build a DLL using MSVC. + */ +#ifdef _VIPS_PUBLIC +# define VIPS_CPLUSPLUS_API _VIPS_PUBLIC +#elif defined(_MSC_VER) +# ifdef VIPS_CPLUSPLUS_EXPORTS +# define VIPS_CPLUSPLUS_API __declspec(dllexport) +# else +# define VIPS_CPLUSPLUS_API __declspec(dllimport) +# endif +#else +# define VIPS_CPLUSPLUS_API +#endif + +#define VIPS_NAMESPACE_START namespace vips { +#define VIPS_NAMESPACE_END } + +#include "VError8.h" +#include "VImage8.h" +#include "VInterpolate8.h" +#include "VRegion8.h" +#include "VConnection8.h" + +#endif /*VIPS_CPLUSPLUS*/ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/decode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/decode.h new file mode 100644 index 0000000..d982475 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/decode.h @@ -0,0 +1,503 @@ +// Copyright 2010 Google Inc. All Rights Reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the COPYING file in the root of the source +// tree. An additional intellectual property rights grant can be found +// in the file PATENTS. All contributing project authors may +// be found in the AUTHORS file in the root of the source tree. +// ----------------------------------------------------------------------------- +// +// Main decoding functions for WebP images. +// +// Author: Skal (pascal.massimino@gmail.com) + +#ifndef WEBP_WEBP_DECODE_H_ +#define WEBP_WEBP_DECODE_H_ + +#include "./types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define WEBP_DECODER_ABI_VERSION 0x0209 // MAJOR(8b) + MINOR(8b) + +// Note: forward declaring enumerations is not allowed in (strict) C and C++, +// the types are left here for reference. +// typedef enum VP8StatusCode VP8StatusCode; +// typedef enum WEBP_CSP_MODE WEBP_CSP_MODE; +typedef struct WebPRGBABuffer WebPRGBABuffer; +typedef struct WebPYUVABuffer WebPYUVABuffer; +typedef struct WebPDecBuffer WebPDecBuffer; +typedef struct WebPIDecoder WebPIDecoder; +typedef struct WebPBitstreamFeatures WebPBitstreamFeatures; +typedef struct WebPDecoderOptions WebPDecoderOptions; +typedef struct WebPDecoderConfig WebPDecoderConfig; + +// Return the decoder's version number, packed in hexadecimal using 8bits for +// each of major/minor/revision. E.g: v2.5.7 is 0x020507. +WEBP_EXTERN int WebPGetDecoderVersion(void); + +// Retrieve basic header information: width, height. +// This function will also validate the header, returning true on success, +// false otherwise. '*width' and '*height' are only valid on successful return. +// Pointers 'width' and 'height' can be passed NULL if deemed irrelevant. +// Note: The following chunk sequences (before the raw VP8/VP8L data) are +// considered valid by this function: +// RIFF + VP8(L) +// RIFF + VP8X + (optional chunks) + VP8(L) +// ALPH + VP8 <-- Not a valid WebP format: only allowed for internal purpose. +// VP8(L) <-- Not a valid WebP format: only allowed for internal purpose. +WEBP_EXTERN int WebPGetInfo(const uint8_t* data, size_t data_size, + int* width, int* height); + +// Decodes WebP images pointed to by 'data' and returns RGBA samples, along +// with the dimensions in *width and *height. The ordering of samples in +// memory is R, G, B, A, R, G, B, A... in scan order (endian-independent). +// The returned pointer should be deleted calling WebPFree(). +// Returns NULL in case of error. +WEBP_EXTERN uint8_t* WebPDecodeRGBA(const uint8_t* data, size_t data_size, + int* width, int* height); + +// Same as WebPDecodeRGBA, but returning A, R, G, B, A, R, G, B... ordered data. +WEBP_EXTERN uint8_t* WebPDecodeARGB(const uint8_t* data, size_t data_size, + int* width, int* height); + +// Same as WebPDecodeRGBA, but returning B, G, R, A, B, G, R, A... ordered data. +WEBP_EXTERN uint8_t* WebPDecodeBGRA(const uint8_t* data, size_t data_size, + int* width, int* height); + +// Same as WebPDecodeRGBA, but returning R, G, B, R, G, B... ordered data. +// If the bitstream contains transparency, it is ignored. +WEBP_EXTERN uint8_t* WebPDecodeRGB(const uint8_t* data, size_t data_size, + int* width, int* height); + +// Same as WebPDecodeRGB, but returning B, G, R, B, G, R... ordered data. +WEBP_EXTERN uint8_t* WebPDecodeBGR(const uint8_t* data, size_t data_size, + int* width, int* height); + + +// Decode WebP images pointed to by 'data' to Y'UV format(*). The pointer +// returned is the Y samples buffer. Upon return, *u and *v will point to +// the U and V chroma data. These U and V buffers need NOT be passed to +// WebPFree(), unlike the returned Y luma one. The dimension of the U and V +// planes are both (*width + 1) / 2 and (*height + 1)/ 2. +// Upon return, the Y buffer has a stride returned as '*stride', while U and V +// have a common stride returned as '*uv_stride'. +// Return NULL in case of error. +// (*) Also named Y'CbCr. See: https://en.wikipedia.org/wiki/YCbCr +WEBP_EXTERN uint8_t* WebPDecodeYUV(const uint8_t* data, size_t data_size, + int* width, int* height, + uint8_t** u, uint8_t** v, + int* stride, int* uv_stride); + +// These five functions are variants of the above ones, that decode the image +// directly into a pre-allocated buffer 'output_buffer'. The maximum storage +// available in this buffer is indicated by 'output_buffer_size'. If this +// storage is not sufficient (or an error occurred), NULL is returned. +// Otherwise, output_buffer is returned, for convenience. +// The parameter 'output_stride' specifies the distance (in bytes) +// between scanlines. Hence, output_buffer_size is expected to be at least +// output_stride x picture-height. +WEBP_EXTERN uint8_t* WebPDecodeRGBAInto( + const uint8_t* data, size_t data_size, + uint8_t* output_buffer, size_t output_buffer_size, int output_stride); +WEBP_EXTERN uint8_t* WebPDecodeARGBInto( + const uint8_t* data, size_t data_size, + uint8_t* output_buffer, size_t output_buffer_size, int output_stride); +WEBP_EXTERN uint8_t* WebPDecodeBGRAInto( + const uint8_t* data, size_t data_size, + uint8_t* output_buffer, size_t output_buffer_size, int output_stride); + +// RGB and BGR variants. Here too the transparency information, if present, +// will be dropped and ignored. +WEBP_EXTERN uint8_t* WebPDecodeRGBInto( + const uint8_t* data, size_t data_size, + uint8_t* output_buffer, size_t output_buffer_size, int output_stride); +WEBP_EXTERN uint8_t* WebPDecodeBGRInto( + const uint8_t* data, size_t data_size, + uint8_t* output_buffer, size_t output_buffer_size, int output_stride); + +// WebPDecodeYUVInto() is a variant of WebPDecodeYUV() that operates directly +// into pre-allocated luma/chroma plane buffers. This function requires the +// strides to be passed: one for the luma plane and one for each of the +// chroma ones. The size of each plane buffer is passed as 'luma_size', +// 'u_size' and 'v_size' respectively. +// Pointer to the luma plane ('*luma') is returned or NULL if an error occurred +// during decoding (or because some buffers were found to be too small). +WEBP_EXTERN uint8_t* WebPDecodeYUVInto( + const uint8_t* data, size_t data_size, + uint8_t* luma, size_t luma_size, int luma_stride, + uint8_t* u, size_t u_size, int u_stride, + uint8_t* v, size_t v_size, int v_stride); + +//------------------------------------------------------------------------------ +// Output colorspaces and buffer + +// Colorspaces +// Note: the naming describes the byte-ordering of packed samples in memory. +// For instance, MODE_BGRA relates to samples ordered as B,G,R,A,B,G,R,A,... +// Non-capital names (e.g.:MODE_Argb) relates to pre-multiplied RGB channels. +// RGBA-4444 and RGB-565 colorspaces are represented by following byte-order: +// RGBA-4444: [r3 r2 r1 r0 g3 g2 g1 g0], [b3 b2 b1 b0 a3 a2 a1 a0], ... +// RGB-565: [r4 r3 r2 r1 r0 g5 g4 g3], [g2 g1 g0 b4 b3 b2 b1 b0], ... +// In the case WEBP_SWAP_16BITS_CSP is defined, the bytes are swapped for +// these two modes: +// RGBA-4444: [b3 b2 b1 b0 a3 a2 a1 a0], [r3 r2 r1 r0 g3 g2 g1 g0], ... +// RGB-565: [g2 g1 g0 b4 b3 b2 b1 b0], [r4 r3 r2 r1 r0 g5 g4 g3], ... + +typedef enum WEBP_CSP_MODE { + MODE_RGB = 0, MODE_RGBA = 1, + MODE_BGR = 2, MODE_BGRA = 3, + MODE_ARGB = 4, MODE_RGBA_4444 = 5, + MODE_RGB_565 = 6, + // RGB-premultiplied transparent modes (alpha value is preserved) + MODE_rgbA = 7, + MODE_bgrA = 8, + MODE_Argb = 9, + MODE_rgbA_4444 = 10, + // YUV modes must come after RGB ones. + MODE_YUV = 11, MODE_YUVA = 12, // yuv 4:2:0 + MODE_LAST = 13 +} WEBP_CSP_MODE; + +// Some useful macros: +static WEBP_INLINE int WebPIsPremultipliedMode(WEBP_CSP_MODE mode) { + return (mode == MODE_rgbA || mode == MODE_bgrA || mode == MODE_Argb || + mode == MODE_rgbA_4444); +} + +static WEBP_INLINE int WebPIsAlphaMode(WEBP_CSP_MODE mode) { + return (mode == MODE_RGBA || mode == MODE_BGRA || mode == MODE_ARGB || + mode == MODE_RGBA_4444 || mode == MODE_YUVA || + WebPIsPremultipliedMode(mode)); +} + +static WEBP_INLINE int WebPIsRGBMode(WEBP_CSP_MODE mode) { + return (mode < MODE_YUV); +} + +//------------------------------------------------------------------------------ +// WebPDecBuffer: Generic structure for describing the output sample buffer. + +struct WebPRGBABuffer { // view as RGBA + uint8_t* rgba; // pointer to RGBA samples + int stride; // stride in bytes from one scanline to the next. + size_t size; // total size of the *rgba buffer. +}; + +struct WebPYUVABuffer { // view as YUVA + uint8_t* y, *u, *v, *a; // pointer to luma, chroma U/V, alpha samples + int y_stride; // luma stride + int u_stride, v_stride; // chroma strides + int a_stride; // alpha stride + size_t y_size; // luma plane size + size_t u_size, v_size; // chroma planes size + size_t a_size; // alpha-plane size +}; + +// Output buffer +struct WebPDecBuffer { + WEBP_CSP_MODE colorspace; // Colorspace. + int width, height; // Dimensions. + int is_external_memory; // If non-zero, 'internal_memory' pointer is not + // used. If value is '2' or more, the external + // memory is considered 'slow' and multiple + // read/write will be avoided. + union { + WebPRGBABuffer RGBA; + WebPYUVABuffer YUVA; + } u; // Nameless union of buffer parameters. + uint32_t pad[4]; // padding for later use + + uint8_t* private_memory; // Internally allocated memory (only when + // is_external_memory is 0). Should not be used + // externally, but accessed via the buffer union. +}; + +// Internal, version-checked, entry point +WEBP_EXTERN int WebPInitDecBufferInternal(WebPDecBuffer*, int); + +// Initialize the structure as empty. Must be called before any other use. +// Returns false in case of version mismatch +static WEBP_INLINE int WebPInitDecBuffer(WebPDecBuffer* buffer) { + return WebPInitDecBufferInternal(buffer, WEBP_DECODER_ABI_VERSION); +} + +// Free any memory associated with the buffer. Must always be called last. +// Note: doesn't free the 'buffer' structure itself. +WEBP_EXTERN void WebPFreeDecBuffer(WebPDecBuffer* buffer); + +//------------------------------------------------------------------------------ +// Enumeration of the status codes + +typedef enum VP8StatusCode { + VP8_STATUS_OK = 0, + VP8_STATUS_OUT_OF_MEMORY, + VP8_STATUS_INVALID_PARAM, + VP8_STATUS_BITSTREAM_ERROR, + VP8_STATUS_UNSUPPORTED_FEATURE, + VP8_STATUS_SUSPENDED, + VP8_STATUS_USER_ABORT, + VP8_STATUS_NOT_ENOUGH_DATA +} VP8StatusCode; + +//------------------------------------------------------------------------------ +// Incremental decoding +// +// This API allows streamlined decoding of partial data. +// Picture can be incrementally decoded as data become available thanks to the +// WebPIDecoder object. This object can be left in a SUSPENDED state if the +// picture is only partially decoded, pending additional input. +// Code example: +// +// WebPInitDecBuffer(&output_buffer); +// output_buffer.colorspace = mode; +// ... +// WebPIDecoder* idec = WebPINewDecoder(&output_buffer); +// while (additional_data_is_available) { +// // ... (get additional data in some new_data[] buffer) +// status = WebPIAppend(idec, new_data, new_data_size); +// if (status != VP8_STATUS_OK && status != VP8_STATUS_SUSPENDED) { +// break; // an error occurred. +// } +// +// // The above call decodes the current available buffer. +// // Part of the image can now be refreshed by calling +// // WebPIDecGetRGB()/WebPIDecGetYUVA() etc. +// } +// WebPIDelete(idec); + +// Creates a new incremental decoder with the supplied buffer parameter. +// This output_buffer can be passed NULL, in which case a default output buffer +// is used (with MODE_RGB). Otherwise, an internal reference to 'output_buffer' +// is kept, which means that the lifespan of 'output_buffer' must be larger than +// that of the returned WebPIDecoder object. +// The supplied 'output_buffer' content MUST NOT be changed between calls to +// WebPIAppend() or WebPIUpdate() unless 'output_buffer.is_external_memory' is +// not set to 0. In such a case, it is allowed to modify the pointers, size and +// stride of output_buffer.u.RGBA or output_buffer.u.YUVA, provided they remain +// within valid bounds. +// All other fields of WebPDecBuffer MUST remain constant between calls. +// Returns NULL if the allocation failed. +WEBP_EXTERN WebPIDecoder* WebPINewDecoder(WebPDecBuffer* output_buffer); + +// This function allocates and initializes an incremental-decoder object, which +// will output the RGB/A samples specified by 'csp' into a preallocated +// buffer 'output_buffer'. The size of this buffer is at least +// 'output_buffer_size' and the stride (distance in bytes between two scanlines) +// is specified by 'output_stride'. +// Additionally, output_buffer can be passed NULL in which case the output +// buffer will be allocated automatically when the decoding starts. The +// colorspace 'csp' is taken into account for allocating this buffer. All other +// parameters are ignored. +// Returns NULL if the allocation failed, or if some parameters are invalid. +WEBP_EXTERN WebPIDecoder* WebPINewRGB( + WEBP_CSP_MODE csp, + uint8_t* output_buffer, size_t output_buffer_size, int output_stride); + +// This function allocates and initializes an incremental-decoder object, which +// will output the raw luma/chroma samples into a preallocated planes if +// supplied. The luma plane is specified by its pointer 'luma', its size +// 'luma_size' and its stride 'luma_stride'. Similarly, the chroma-u plane +// is specified by the 'u', 'u_size' and 'u_stride' parameters, and the chroma-v +// plane by 'v' and 'v_size'. And same for the alpha-plane. The 'a' pointer +// can be pass NULL in case one is not interested in the transparency plane. +// Conversely, 'luma' can be passed NULL if no preallocated planes are supplied. +// In this case, the output buffer will be automatically allocated (using +// MODE_YUVA) when decoding starts. All parameters are then ignored. +// Returns NULL if the allocation failed or if a parameter is invalid. +WEBP_EXTERN WebPIDecoder* WebPINewYUVA( + uint8_t* luma, size_t luma_size, int luma_stride, + uint8_t* u, size_t u_size, int u_stride, + uint8_t* v, size_t v_size, int v_stride, + uint8_t* a, size_t a_size, int a_stride); + +// Deprecated version of the above, without the alpha plane. +// Kept for backward compatibility. +WEBP_EXTERN WebPIDecoder* WebPINewYUV( + uint8_t* luma, size_t luma_size, int luma_stride, + uint8_t* u, size_t u_size, int u_stride, + uint8_t* v, size_t v_size, int v_stride); + +// Deletes the WebPIDecoder object and associated memory. Must always be called +// if WebPINewDecoder, WebPINewRGB or WebPINewYUV succeeded. +WEBP_EXTERN void WebPIDelete(WebPIDecoder* idec); + +// Copies and decodes the next available data. Returns VP8_STATUS_OK when +// the image is successfully decoded. Returns VP8_STATUS_SUSPENDED when more +// data is expected. Returns error in other cases. +WEBP_EXTERN VP8StatusCode WebPIAppend( + WebPIDecoder* idec, const uint8_t* data, size_t data_size); + +// A variant of the above function to be used when data buffer contains +// partial data from the beginning. In this case data buffer is not copied +// to the internal memory. +// Note that the value of the 'data' pointer can change between calls to +// WebPIUpdate, for instance when the data buffer is resized to fit larger data. +WEBP_EXTERN VP8StatusCode WebPIUpdate( + WebPIDecoder* idec, const uint8_t* data, size_t data_size); + +// Returns the RGB/A image decoded so far. Returns NULL if output params +// are not initialized yet. The RGB/A output type corresponds to the colorspace +// specified during call to WebPINewDecoder() or WebPINewRGB(). +// *last_y is the index of last decoded row in raster scan order. Some pointers +// (*last_y, *width etc.) can be NULL if corresponding information is not +// needed. The values in these pointers are only valid on successful (non-NULL) +// return. +WEBP_EXTERN uint8_t* WebPIDecGetRGB( + const WebPIDecoder* idec, int* last_y, + int* width, int* height, int* stride); + +// Same as above function to get a YUVA image. Returns pointer to the luma +// plane or NULL in case of error. If there is no alpha information +// the alpha pointer '*a' will be returned NULL. +WEBP_EXTERN uint8_t* WebPIDecGetYUVA( + const WebPIDecoder* idec, int* last_y, + uint8_t** u, uint8_t** v, uint8_t** a, + int* width, int* height, int* stride, int* uv_stride, int* a_stride); + +// Deprecated alpha-less version of WebPIDecGetYUVA(): it will ignore the +// alpha information (if present). Kept for backward compatibility. +static WEBP_INLINE uint8_t* WebPIDecGetYUV( + const WebPIDecoder* idec, int* last_y, uint8_t** u, uint8_t** v, + int* width, int* height, int* stride, int* uv_stride) { + return WebPIDecGetYUVA(idec, last_y, u, v, NULL, width, height, + stride, uv_stride, NULL); +} + +// Generic call to retrieve information about the displayable area. +// If non NULL, the left/right/width/height pointers are filled with the visible +// rectangular area so far. +// Returns NULL in case the incremental decoder object is in an invalid state. +// Otherwise returns the pointer to the internal representation. This structure +// is read-only, tied to WebPIDecoder's lifespan and should not be modified. +WEBP_EXTERN const WebPDecBuffer* WebPIDecodedArea( + const WebPIDecoder* idec, int* left, int* top, int* width, int* height); + +//------------------------------------------------------------------------------ +// Advanced decoding parametrization +// +// Code sample for using the advanced decoding API +/* + // A) Init a configuration object + WebPDecoderConfig config; + CHECK(WebPInitDecoderConfig(&config)); + + // B) optional: retrieve the bitstream's features. + CHECK(WebPGetFeatures(data, data_size, &config.input) == VP8_STATUS_OK); + + // C) Adjust 'config', if needed + config.no_fancy_upsampling = 1; + config.output.colorspace = MODE_BGRA; + // etc. + + // Note that you can also make config.output point to an externally + // supplied memory buffer, provided it's big enough to store the decoded + // picture. Otherwise, config.output will just be used to allocate memory + // and store the decoded picture. + + // D) Decode! + CHECK(WebPDecode(data, data_size, &config) == VP8_STATUS_OK); + + // E) Decoded image is now in config.output (and config.output.u.RGBA) + + // F) Reclaim memory allocated in config's object. It's safe to call + // this function even if the memory is external and wasn't allocated + // by WebPDecode(). + WebPFreeDecBuffer(&config.output); +*/ + +// Features gathered from the bitstream +struct WebPBitstreamFeatures { + int width; // Width in pixels, as read from the bitstream. + int height; // Height in pixels, as read from the bitstream. + int has_alpha; // True if the bitstream contains an alpha channel. + int has_animation; // True if the bitstream is an animation. + int format; // 0 = undefined (/mixed), 1 = lossy, 2 = lossless + + uint32_t pad[5]; // padding for later use +}; + +// Internal, version-checked, entry point +WEBP_EXTERN VP8StatusCode WebPGetFeaturesInternal( + const uint8_t*, size_t, WebPBitstreamFeatures*, int); + +// Retrieve features from the bitstream. The *features structure is filled +// with information gathered from the bitstream. +// Returns VP8_STATUS_OK when the features are successfully retrieved. Returns +// VP8_STATUS_NOT_ENOUGH_DATA when more data is needed to retrieve the +// features from headers. Returns error in other cases. +// Note: The following chunk sequences (before the raw VP8/VP8L data) are +// considered valid by this function: +// RIFF + VP8(L) +// RIFF + VP8X + (optional chunks) + VP8(L) +// ALPH + VP8 <-- Not a valid WebP format: only allowed for internal purpose. +// VP8(L) <-- Not a valid WebP format: only allowed for internal purpose. +static WEBP_INLINE VP8StatusCode WebPGetFeatures( + const uint8_t* data, size_t data_size, + WebPBitstreamFeatures* features) { + return WebPGetFeaturesInternal(data, data_size, features, + WEBP_DECODER_ABI_VERSION); +} + +// Decoding options +struct WebPDecoderOptions { + int bypass_filtering; // if true, skip the in-loop filtering + int no_fancy_upsampling; // if true, use faster pointwise upsampler + int use_cropping; // if true, cropping is applied _first_ + int crop_left, crop_top; // top-left position for cropping. + // Will be snapped to even values. + int crop_width, crop_height; // dimension of the cropping area + int use_scaling; // if true, scaling is applied _afterward_ + int scaled_width, scaled_height; // final resolution + int use_threads; // if true, use multi-threaded decoding + int dithering_strength; // dithering strength (0=Off, 100=full) + int flip; // if true, flip output vertically + int alpha_dithering_strength; // alpha dithering strength in [0..100] + + uint32_t pad[5]; // padding for later use +}; + +// Main object storing the configuration for advanced decoding. +struct WebPDecoderConfig { + WebPBitstreamFeatures input; // Immutable bitstream features (optional) + WebPDecBuffer output; // Output buffer (can point to external mem) + WebPDecoderOptions options; // Decoding options +}; + +// Internal, version-checked, entry point +WEBP_EXTERN int WebPInitDecoderConfigInternal(WebPDecoderConfig*, int); + +// Initialize the configuration as empty. This function must always be +// called first, unless WebPGetFeatures() is to be called. +// Returns false in case of mismatched version. +static WEBP_INLINE int WebPInitDecoderConfig(WebPDecoderConfig* config) { + return WebPInitDecoderConfigInternal(config, WEBP_DECODER_ABI_VERSION); +} + +// Instantiate a new incremental decoder object with the requested +// configuration. The bitstream can be passed using 'data' and 'data_size' +// parameter, in which case the features will be parsed and stored into +// config->input. Otherwise, 'data' can be NULL and no parsing will occur. +// Note that 'config' can be NULL too, in which case a default configuration +// is used. If 'config' is not NULL, it must outlive the WebPIDecoder object +// as some references to its fields will be used. No internal copy of 'config' +// is made. +// The return WebPIDecoder object must always be deleted calling WebPIDelete(). +// Returns NULL in case of error (and config->status will then reflect +// the error condition, if available). +WEBP_EXTERN WebPIDecoder* WebPIDecode(const uint8_t* data, size_t data_size, + WebPDecoderConfig* config); + +// Non-incremental version. This version decodes the full data at once, taking +// 'config' into account. Returns decoding status (which should be VP8_STATUS_OK +// if the decoding was successful). Note that 'config' cannot be NULL. +WEBP_EXTERN VP8StatusCode WebPDecode(const uint8_t* data, size_t data_size, + WebPDecoderConfig* config); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // WEBP_WEBP_DECODE_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/demux.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/demux.h new file mode 100644 index 0000000..846eeb1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/demux.h @@ -0,0 +1,363 @@ +// Copyright 2012 Google Inc. All Rights Reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the COPYING file in the root of the source +// tree. An additional intellectual property rights grant can be found +// in the file PATENTS. All contributing project authors may +// be found in the AUTHORS file in the root of the source tree. +// ----------------------------------------------------------------------------- +// +// Demux API. +// Enables extraction of image and extended format data from WebP files. + +// Code Example: Demuxing WebP data to extract all the frames, ICC profile +// and EXIF/XMP metadata. +/* + WebPDemuxer* demux = WebPDemux(&webp_data); + + uint32_t width = WebPDemuxGetI(demux, WEBP_FF_CANVAS_WIDTH); + uint32_t height = WebPDemuxGetI(demux, WEBP_FF_CANVAS_HEIGHT); + // ... (Get information about the features present in the WebP file). + uint32_t flags = WebPDemuxGetI(demux, WEBP_FF_FORMAT_FLAGS); + + // ... (Iterate over all frames). + WebPIterator iter; + if (WebPDemuxGetFrame(demux, 1, &iter)) { + do { + // ... (Consume 'iter'; e.g. Decode 'iter.fragment' with WebPDecode(), + // ... and get other frame properties like width, height, offsets etc. + // ... see 'struct WebPIterator' below for more info). + } while (WebPDemuxNextFrame(&iter)); + WebPDemuxReleaseIterator(&iter); + } + + // ... (Extract metadata). + WebPChunkIterator chunk_iter; + if (flags & ICCP_FLAG) WebPDemuxGetChunk(demux, "ICCP", 1, &chunk_iter); + // ... (Consume the ICC profile in 'chunk_iter.chunk'). + WebPDemuxReleaseChunkIterator(&chunk_iter); + if (flags & EXIF_FLAG) WebPDemuxGetChunk(demux, "EXIF", 1, &chunk_iter); + // ... (Consume the EXIF metadata in 'chunk_iter.chunk'). + WebPDemuxReleaseChunkIterator(&chunk_iter); + if (flags & XMP_FLAG) WebPDemuxGetChunk(demux, "XMP ", 1, &chunk_iter); + // ... (Consume the XMP metadata in 'chunk_iter.chunk'). + WebPDemuxReleaseChunkIterator(&chunk_iter); + WebPDemuxDelete(demux); +*/ + +#ifndef WEBP_WEBP_DEMUX_H_ +#define WEBP_WEBP_DEMUX_H_ + +#include "./decode.h" // for WEBP_CSP_MODE +#include "./mux_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define WEBP_DEMUX_ABI_VERSION 0x0107 // MAJOR(8b) + MINOR(8b) + +// Note: forward declaring enumerations is not allowed in (strict) C and C++, +// the types are left here for reference. +// typedef enum WebPDemuxState WebPDemuxState; +// typedef enum WebPFormatFeature WebPFormatFeature; +typedef struct WebPDemuxer WebPDemuxer; +typedef struct WebPIterator WebPIterator; +typedef struct WebPChunkIterator WebPChunkIterator; +typedef struct WebPAnimInfo WebPAnimInfo; +typedef struct WebPAnimDecoderOptions WebPAnimDecoderOptions; + +//------------------------------------------------------------------------------ + +// Returns the version number of the demux library, packed in hexadecimal using +// 8bits for each of major/minor/revision. E.g: v2.5.7 is 0x020507. +WEBP_EXTERN int WebPGetDemuxVersion(void); + +//------------------------------------------------------------------------------ +// Life of a Demux object + +typedef enum WebPDemuxState { + WEBP_DEMUX_PARSE_ERROR = -1, // An error occurred while parsing. + WEBP_DEMUX_PARSING_HEADER = 0, // Not enough data to parse full header. + WEBP_DEMUX_PARSED_HEADER = 1, // Header parsing complete, + // data may be available. + WEBP_DEMUX_DONE = 2 // Entire file has been parsed. +} WebPDemuxState; + +// Internal, version-checked, entry point +WEBP_EXTERN WebPDemuxer* WebPDemuxInternal( + const WebPData*, int, WebPDemuxState*, int); + +// Parses the full WebP file given by 'data'. For single images the WebP file +// header alone or the file header and the chunk header may be absent. +// Returns a WebPDemuxer object on successful parse, NULL otherwise. +static WEBP_INLINE WebPDemuxer* WebPDemux(const WebPData* data) { + return WebPDemuxInternal(data, 0, NULL, WEBP_DEMUX_ABI_VERSION); +} + +// Parses the possibly incomplete WebP file given by 'data'. +// If 'state' is non-NULL it will be set to indicate the status of the demuxer. +// Returns NULL in case of error or if there isn't enough data to start parsing; +// and a WebPDemuxer object on successful parse. +// Note that WebPDemuxer keeps internal pointers to 'data' memory segment. +// If this data is volatile, the demuxer object should be deleted (by calling +// WebPDemuxDelete()) and WebPDemuxPartial() called again on the new data. +// This is usually an inexpensive operation. +static WEBP_INLINE WebPDemuxer* WebPDemuxPartial( + const WebPData* data, WebPDemuxState* state) { + return WebPDemuxInternal(data, 1, state, WEBP_DEMUX_ABI_VERSION); +} + +// Frees memory associated with 'dmux'. +WEBP_EXTERN void WebPDemuxDelete(WebPDemuxer* dmux); + +//------------------------------------------------------------------------------ +// Data/information extraction. + +typedef enum WebPFormatFeature { + WEBP_FF_FORMAT_FLAGS, // bit-wise combination of WebPFeatureFlags + // corresponding to the 'VP8X' chunk (if present). + WEBP_FF_CANVAS_WIDTH, + WEBP_FF_CANVAS_HEIGHT, + WEBP_FF_LOOP_COUNT, // only relevant for animated file + WEBP_FF_BACKGROUND_COLOR, // idem. + WEBP_FF_FRAME_COUNT // Number of frames present in the demux object. + // In case of a partial demux, this is the number + // of frames seen so far, with the last frame + // possibly being partial. +} WebPFormatFeature; + +// Get the 'feature' value from the 'dmux'. +// NOTE: values are only valid if WebPDemux() was used or WebPDemuxPartial() +// returned a state > WEBP_DEMUX_PARSING_HEADER. +// If 'feature' is WEBP_FF_FORMAT_FLAGS, the returned value is a bit-wise +// combination of WebPFeatureFlags values. +// If 'feature' is WEBP_FF_LOOP_COUNT, WEBP_FF_BACKGROUND_COLOR, the returned +// value is only meaningful if the bitstream is animated. +WEBP_EXTERN uint32_t WebPDemuxGetI( + const WebPDemuxer* dmux, WebPFormatFeature feature); + +//------------------------------------------------------------------------------ +// Frame iteration. + +struct WebPIterator { + int frame_num; + int num_frames; // equivalent to WEBP_FF_FRAME_COUNT. + int x_offset, y_offset; // offset relative to the canvas. + int width, height; // dimensions of this frame. + int duration; // display duration in milliseconds. + WebPMuxAnimDispose dispose_method; // dispose method for the frame. + int complete; // true if 'fragment' contains a full frame. partial images + // may still be decoded with the WebP incremental decoder. + WebPData fragment; // The frame given by 'frame_num'. Note for historical + // reasons this is called a fragment. + int has_alpha; // True if the frame contains transparency. + WebPMuxAnimBlend blend_method; // Blend operation for the frame. + + uint32_t pad[2]; // padding for later use. + void* private_; // for internal use only. +}; + +// Retrieves frame 'frame_number' from 'dmux'. +// 'iter->fragment' points to the frame on return from this function. +// Setting 'frame_number' equal to 0 will return the last frame of the image. +// Returns false if 'dmux' is NULL or frame 'frame_number' is not present. +// Call WebPDemuxReleaseIterator() when use of the iterator is complete. +// NOTE: 'dmux' must persist for the lifetime of 'iter'. +WEBP_EXTERN int WebPDemuxGetFrame( + const WebPDemuxer* dmux, int frame_number, WebPIterator* iter); + +// Sets 'iter->fragment' to point to the next ('iter->frame_num' + 1) or +// previous ('iter->frame_num' - 1) frame. These functions do not loop. +// Returns true on success, false otherwise. +WEBP_EXTERN int WebPDemuxNextFrame(WebPIterator* iter); +WEBP_EXTERN int WebPDemuxPrevFrame(WebPIterator* iter); + +// Releases any memory associated with 'iter'. +// Must be called before any subsequent calls to WebPDemuxGetChunk() on the same +// iter. Also, must be called before destroying the associated WebPDemuxer with +// WebPDemuxDelete(). +WEBP_EXTERN void WebPDemuxReleaseIterator(WebPIterator* iter); + +//------------------------------------------------------------------------------ +// Chunk iteration. + +struct WebPChunkIterator { + // The current and total number of chunks with the fourcc given to + // WebPDemuxGetChunk(). + int chunk_num; + int num_chunks; + WebPData chunk; // The payload of the chunk. + + uint32_t pad[6]; // padding for later use + void* private_; +}; + +// Retrieves the 'chunk_number' instance of the chunk with id 'fourcc' from +// 'dmux'. +// 'fourcc' is a character array containing the fourcc of the chunk to return, +// e.g., "ICCP", "XMP ", "EXIF", etc. +// Setting 'chunk_number' equal to 0 will return the last chunk in a set. +// Returns true if the chunk is found, false otherwise. Image related chunk +// payloads are accessed through WebPDemuxGetFrame() and related functions. +// Call WebPDemuxReleaseChunkIterator() when use of the iterator is complete. +// NOTE: 'dmux' must persist for the lifetime of the iterator. +WEBP_EXTERN int WebPDemuxGetChunk(const WebPDemuxer* dmux, + const char fourcc[4], int chunk_number, + WebPChunkIterator* iter); + +// Sets 'iter->chunk' to point to the next ('iter->chunk_num' + 1) or previous +// ('iter->chunk_num' - 1) chunk. These functions do not loop. +// Returns true on success, false otherwise. +WEBP_EXTERN int WebPDemuxNextChunk(WebPChunkIterator* iter); +WEBP_EXTERN int WebPDemuxPrevChunk(WebPChunkIterator* iter); + +// Releases any memory associated with 'iter'. +// Must be called before destroying the associated WebPDemuxer with +// WebPDemuxDelete(). +WEBP_EXTERN void WebPDemuxReleaseChunkIterator(WebPChunkIterator* iter); + +//------------------------------------------------------------------------------ +// WebPAnimDecoder API +// +// This API allows decoding (possibly) animated WebP images. +// +// Code Example: +/* + WebPAnimDecoderOptions dec_options; + WebPAnimDecoderOptionsInit(&dec_options); + // Tune 'dec_options' as needed. + WebPAnimDecoder* dec = WebPAnimDecoderNew(webp_data, &dec_options); + WebPAnimInfo anim_info; + WebPAnimDecoderGetInfo(dec, &anim_info); + for (uint32_t i = 0; i < anim_info.loop_count; ++i) { + while (WebPAnimDecoderHasMoreFrames(dec)) { + uint8_t* buf; + int timestamp; + WebPAnimDecoderGetNext(dec, &buf, ×tamp); + // ... (Render 'buf' based on 'timestamp'). + // ... (Do NOT free 'buf', as it is owned by 'dec'). + } + WebPAnimDecoderReset(dec); + } + const WebPDemuxer* demuxer = WebPAnimDecoderGetDemuxer(dec); + // ... (Do something using 'demuxer'; e.g. get EXIF/XMP/ICC data). + WebPAnimDecoderDelete(dec); +*/ + +typedef struct WebPAnimDecoder WebPAnimDecoder; // Main opaque object. + +// Global options. +struct WebPAnimDecoderOptions { + // Output colorspace. Only the following modes are supported: + // MODE_RGBA, MODE_BGRA, MODE_rgbA and MODE_bgrA. + WEBP_CSP_MODE color_mode; + int use_threads; // If true, use multi-threaded decoding. + uint32_t padding[7]; // Padding for later use. +}; + +// Internal, version-checked, entry point. +WEBP_EXTERN int WebPAnimDecoderOptionsInitInternal( + WebPAnimDecoderOptions*, int); + +// Should always be called, to initialize a fresh WebPAnimDecoderOptions +// structure before modification. Returns false in case of version mismatch. +// WebPAnimDecoderOptionsInit() must have succeeded before using the +// 'dec_options' object. +static WEBP_INLINE int WebPAnimDecoderOptionsInit( + WebPAnimDecoderOptions* dec_options) { + return WebPAnimDecoderOptionsInitInternal(dec_options, + WEBP_DEMUX_ABI_VERSION); +} + +// Internal, version-checked, entry point. +WEBP_EXTERN WebPAnimDecoder* WebPAnimDecoderNewInternal( + const WebPData*, const WebPAnimDecoderOptions*, int); + +// Creates and initializes a WebPAnimDecoder object. +// Parameters: +// webp_data - (in) WebP bitstream. This should remain unchanged during the +// lifetime of the output WebPAnimDecoder object. +// dec_options - (in) decoding options. Can be passed NULL to choose +// reasonable defaults (in particular, color mode MODE_RGBA +// will be picked). +// Returns: +// A pointer to the newly created WebPAnimDecoder object, or NULL in case of +// parsing error, invalid option or memory error. +static WEBP_INLINE WebPAnimDecoder* WebPAnimDecoderNew( + const WebPData* webp_data, const WebPAnimDecoderOptions* dec_options) { + return WebPAnimDecoderNewInternal(webp_data, dec_options, + WEBP_DEMUX_ABI_VERSION); +} + +// Global information about the animation.. +struct WebPAnimInfo { + uint32_t canvas_width; + uint32_t canvas_height; + uint32_t loop_count; + uint32_t bgcolor; + uint32_t frame_count; + uint32_t pad[4]; // padding for later use +}; + +// Get global information about the animation. +// Parameters: +// dec - (in) decoder instance to get information from. +// info - (out) global information fetched from the animation. +// Returns: +// True on success. +WEBP_EXTERN int WebPAnimDecoderGetInfo(const WebPAnimDecoder* dec, + WebPAnimInfo* info); + +// Fetch the next frame from 'dec' based on options supplied to +// WebPAnimDecoderNew(). This will be a fully reconstructed canvas of size +// 'canvas_width * 4 * canvas_height', and not just the frame sub-rectangle. The +// returned buffer 'buf' is valid only until the next call to +// WebPAnimDecoderGetNext(), WebPAnimDecoderReset() or WebPAnimDecoderDelete(). +// Parameters: +// dec - (in/out) decoder instance from which the next frame is to be fetched. +// buf - (out) decoded frame. +// timestamp - (out) timestamp of the frame in milliseconds. +// Returns: +// False if any of the arguments are NULL, or if there is a parsing or +// decoding error, or if there are no more frames. Otherwise, returns true. +WEBP_EXTERN int WebPAnimDecoderGetNext(WebPAnimDecoder* dec, + uint8_t** buf, int* timestamp); + +// Check if there are more frames left to decode. +// Parameters: +// dec - (in) decoder instance to be checked. +// Returns: +// True if 'dec' is not NULL and some frames are yet to be decoded. +// Otherwise, returns false. +WEBP_EXTERN int WebPAnimDecoderHasMoreFrames(const WebPAnimDecoder* dec); + +// Resets the WebPAnimDecoder object, so that next call to +// WebPAnimDecoderGetNext() will restart decoding from 1st frame. This would be +// helpful when all frames need to be decoded multiple times (e.g. +// info.loop_count times) without destroying and recreating the 'dec' object. +// Parameters: +// dec - (in/out) decoder instance to be reset +WEBP_EXTERN void WebPAnimDecoderReset(WebPAnimDecoder* dec); + +// Grab the internal demuxer object. +// Getting the demuxer object can be useful if one wants to use operations only +// available through demuxer; e.g. to get XMP/EXIF/ICC metadata. The returned +// demuxer object is owned by 'dec' and is valid only until the next call to +// WebPAnimDecoderDelete(). +// +// Parameters: +// dec - (in) decoder instance from which the demuxer object is to be fetched. +WEBP_EXTERN const WebPDemuxer* WebPAnimDecoderGetDemuxer( + const WebPAnimDecoder* dec); + +// Deletes the WebPAnimDecoder object. +// Parameters: +// dec - (in/out) decoder instance to be deleted +WEBP_EXTERN void WebPAnimDecoderDelete(WebPAnimDecoder* dec); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // WEBP_WEBP_DEMUX_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/encode.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/encode.h new file mode 100644 index 0000000..56b68e2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/encode.h @@ -0,0 +1,552 @@ +// Copyright 2011 Google Inc. All Rights Reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the COPYING file in the root of the source +// tree. An additional intellectual property rights grant can be found +// in the file PATENTS. All contributing project authors may +// be found in the AUTHORS file in the root of the source tree. +// ----------------------------------------------------------------------------- +// +// WebP encoder: main interface +// +// Author: Skal (pascal.massimino@gmail.com) + +#ifndef WEBP_WEBP_ENCODE_H_ +#define WEBP_WEBP_ENCODE_H_ + +#include "./types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define WEBP_ENCODER_ABI_VERSION 0x020f // MAJOR(8b) + MINOR(8b) + +// Note: forward declaring enumerations is not allowed in (strict) C and C++, +// the types are left here for reference. +// typedef enum WebPImageHint WebPImageHint; +// typedef enum WebPEncCSP WebPEncCSP; +// typedef enum WebPPreset WebPPreset; +// typedef enum WebPEncodingError WebPEncodingError; +typedef struct WebPConfig WebPConfig; +typedef struct WebPPicture WebPPicture; // main structure for I/O +typedef struct WebPAuxStats WebPAuxStats; +typedef struct WebPMemoryWriter WebPMemoryWriter; + +// Return the encoder's version number, packed in hexadecimal using 8bits for +// each of major/minor/revision. E.g: v2.5.7 is 0x020507. +WEBP_EXTERN int WebPGetEncoderVersion(void); + +//------------------------------------------------------------------------------ +// One-stop-shop call! No questions asked: + +// Returns the size of the compressed data (pointed to by *output), or 0 if +// an error occurred. The compressed data must be released by the caller +// using the call 'WebPFree(*output)'. +// These functions compress using the lossy format, and the quality_factor +// can go from 0 (smaller output, lower quality) to 100 (best quality, +// larger output). +WEBP_EXTERN size_t WebPEncodeRGB(const uint8_t* rgb, + int width, int height, int stride, + float quality_factor, uint8_t** output); +WEBP_EXTERN size_t WebPEncodeBGR(const uint8_t* bgr, + int width, int height, int stride, + float quality_factor, uint8_t** output); +WEBP_EXTERN size_t WebPEncodeRGBA(const uint8_t* rgba, + int width, int height, int stride, + float quality_factor, uint8_t** output); +WEBP_EXTERN size_t WebPEncodeBGRA(const uint8_t* bgra, + int width, int height, int stride, + float quality_factor, uint8_t** output); + +// These functions are the equivalent of the above, but compressing in a +// lossless manner. Files are usually larger than lossy format, but will +// not suffer any compression loss. +// Note these functions, like the lossy versions, use the library's default +// settings. For lossless this means 'exact' is disabled. RGB values in +// transparent areas will be modified to improve compression. To avoid this, +// use WebPEncode() and set WebPConfig::exact to 1. +WEBP_EXTERN size_t WebPEncodeLosslessRGB(const uint8_t* rgb, + int width, int height, int stride, + uint8_t** output); +WEBP_EXTERN size_t WebPEncodeLosslessBGR(const uint8_t* bgr, + int width, int height, int stride, + uint8_t** output); +WEBP_EXTERN size_t WebPEncodeLosslessRGBA(const uint8_t* rgba, + int width, int height, int stride, + uint8_t** output); +WEBP_EXTERN size_t WebPEncodeLosslessBGRA(const uint8_t* bgra, + int width, int height, int stride, + uint8_t** output); + +//------------------------------------------------------------------------------ +// Coding parameters + +// Image characteristics hint for the underlying encoder. +typedef enum WebPImageHint { + WEBP_HINT_DEFAULT = 0, // default preset. + WEBP_HINT_PICTURE, // digital picture, like portrait, inner shot + WEBP_HINT_PHOTO, // outdoor photograph, with natural lighting + WEBP_HINT_GRAPH, // Discrete tone image (graph, map-tile etc). + WEBP_HINT_LAST +} WebPImageHint; + +// Compression parameters. +struct WebPConfig { + int lossless; // Lossless encoding (0=lossy(default), 1=lossless). + float quality; // between 0 and 100. For lossy, 0 gives the smallest + // size and 100 the largest. For lossless, this + // parameter is the amount of effort put into the + // compression: 0 is the fastest but gives larger + // files compared to the slowest, but best, 100. + int method; // quality/speed trade-off (0=fast, 6=slower-better) + + WebPImageHint image_hint; // Hint for image type (lossless only for now). + + int target_size; // if non-zero, set the desired target size in bytes. + // Takes precedence over the 'compression' parameter. + float target_PSNR; // if non-zero, specifies the minimal distortion to + // try to achieve. Takes precedence over target_size. + int segments; // maximum number of segments to use, in [1..4] + int sns_strength; // Spatial Noise Shaping. 0=off, 100=maximum. + int filter_strength; // range: [0 = off .. 100 = strongest] + int filter_sharpness; // range: [0 = off .. 7 = least sharp] + int filter_type; // filtering type: 0 = simple, 1 = strong (only used + // if filter_strength > 0 or autofilter > 0) + int autofilter; // Auto adjust filter's strength [0 = off, 1 = on] + int alpha_compression; // Algorithm for encoding the alpha plane (0 = none, + // 1 = compressed with WebP lossless). Default is 1. + int alpha_filtering; // Predictive filtering method for alpha plane. + // 0: none, 1: fast, 2: best. Default if 1. + int alpha_quality; // Between 0 (smallest size) and 100 (lossless). + // Default is 100. + int pass; // number of entropy-analysis passes (in [1..10]). + + int show_compressed; // if true, export the compressed picture back. + // In-loop filtering is not applied. + int preprocessing; // preprocessing filter: + // 0=none, 1=segment-smooth, 2=pseudo-random dithering + int partitions; // log2(number of token partitions) in [0..3]. Default + // is set to 0 for easier progressive decoding. + int partition_limit; // quality degradation allowed to fit the 512k limit + // on prediction modes coding (0: no degradation, + // 100: maximum possible degradation). + int emulate_jpeg_size; // If true, compression parameters will be remapped + // to better match the expected output size from + // JPEG compression. Generally, the output size will + // be similar but the degradation will be lower. + int thread_level; // If non-zero, try and use multi-threaded encoding. + int low_memory; // If set, reduce memory usage (but increase CPU use). + + int near_lossless; // Near lossless encoding [0 = max loss .. 100 = off + // (default)]. + int exact; // if non-zero, preserve the exact RGB values under + // transparent area. Otherwise, discard this invisible + // RGB information for better compression. The default + // value is 0. + + int use_delta_palette; // reserved for future lossless feature + int use_sharp_yuv; // if needed, use sharp (and slow) RGB->YUV conversion + + int qmin; // minimum permissible quality factor + int qmax; // maximum permissible quality factor +}; + +// Enumerate some predefined settings for WebPConfig, depending on the type +// of source picture. These presets are used when calling WebPConfigPreset(). +typedef enum WebPPreset { + WEBP_PRESET_DEFAULT = 0, // default preset. + WEBP_PRESET_PICTURE, // digital picture, like portrait, inner shot + WEBP_PRESET_PHOTO, // outdoor photograph, with natural lighting + WEBP_PRESET_DRAWING, // hand or line drawing, with high-contrast details + WEBP_PRESET_ICON, // small-sized colorful images + WEBP_PRESET_TEXT // text-like +} WebPPreset; + +// Internal, version-checked, entry point +WEBP_EXTERN int WebPConfigInitInternal(WebPConfig*, WebPPreset, float, int); + +// Should always be called, to initialize a fresh WebPConfig structure before +// modification. Returns false in case of version mismatch. WebPConfigInit() +// must have succeeded before using the 'config' object. +// Note that the default values are lossless=0 and quality=75. +static WEBP_INLINE int WebPConfigInit(WebPConfig* config) { + return WebPConfigInitInternal(config, WEBP_PRESET_DEFAULT, 75.f, + WEBP_ENCODER_ABI_VERSION); +} + +// This function will initialize the configuration according to a predefined +// set of parameters (referred to by 'preset') and a given quality factor. +// This function can be called as a replacement to WebPConfigInit(). Will +// return false in case of error. +static WEBP_INLINE int WebPConfigPreset(WebPConfig* config, + WebPPreset preset, float quality) { + return WebPConfigInitInternal(config, preset, quality, + WEBP_ENCODER_ABI_VERSION); +} + +// Activate the lossless compression mode with the desired efficiency level +// between 0 (fastest, lowest compression) and 9 (slower, best compression). +// A good default level is '6', providing a fair tradeoff between compression +// speed and final compressed size. +// This function will overwrite several fields from config: 'method', 'quality' +// and 'lossless'. Returns false in case of parameter error. +WEBP_EXTERN int WebPConfigLosslessPreset(WebPConfig* config, int level); + +// Returns true if 'config' is non-NULL and all configuration parameters are +// within their valid ranges. +WEBP_EXTERN int WebPValidateConfig(const WebPConfig* config); + +//------------------------------------------------------------------------------ +// Input / Output +// Structure for storing auxiliary statistics. + +struct WebPAuxStats { + int coded_size; // final size + + float PSNR[5]; // peak-signal-to-noise ratio for Y/U/V/All/Alpha + int block_count[3]; // number of intra4/intra16/skipped macroblocks + int header_bytes[2]; // approximate number of bytes spent for header + // and mode-partition #0 + int residual_bytes[3][4]; // approximate number of bytes spent for + // DC/AC/uv coefficients for each (0..3) segments. + int segment_size[4]; // number of macroblocks in each segments + int segment_quant[4]; // quantizer values for each segments + int segment_level[4]; // filtering strength for each segments [0..63] + + int alpha_data_size; // size of the transparency data + int layer_data_size; // size of the enhancement layer data + + // lossless encoder statistics + uint32_t lossless_features; // bit0:predictor bit1:cross-color transform + // bit2:subtract-green bit3:color indexing + int histogram_bits; // number of precision bits of histogram + int transform_bits; // precision bits for transform + int cache_bits; // number of bits for color cache lookup + int palette_size; // number of color in palette, if used + int lossless_size; // final lossless size + int lossless_hdr_size; // lossless header (transform, huffman etc) size + int lossless_data_size; // lossless image data size + + uint32_t pad[2]; // padding for later use +}; + +// Signature for output function. Should return true if writing was successful. +// data/data_size is the segment of data to write, and 'picture' is for +// reference (and so one can make use of picture->custom_ptr). +typedef int (*WebPWriterFunction)(const uint8_t* data, size_t data_size, + const WebPPicture* picture); + +// WebPMemoryWrite: a special WebPWriterFunction that writes to memory using +// the following WebPMemoryWriter object (to be set as a custom_ptr). +struct WebPMemoryWriter { + uint8_t* mem; // final buffer (of size 'max_size', larger than 'size'). + size_t size; // final size + size_t max_size; // total capacity + uint32_t pad[1]; // padding for later use +}; + +// The following must be called first before any use. +WEBP_EXTERN void WebPMemoryWriterInit(WebPMemoryWriter* writer); + +// The following must be called to deallocate writer->mem memory. The 'writer' +// object itself is not deallocated. +WEBP_EXTERN void WebPMemoryWriterClear(WebPMemoryWriter* writer); +// The custom writer to be used with WebPMemoryWriter as custom_ptr. Upon +// completion, writer.mem and writer.size will hold the coded data. +// writer.mem must be freed by calling WebPMemoryWriterClear. +WEBP_EXTERN int WebPMemoryWrite(const uint8_t* data, size_t data_size, + const WebPPicture* picture); + +// Progress hook, called from time to time to report progress. It can return +// false to request an abort of the encoding process, or true otherwise if +// everything is OK. +typedef int (*WebPProgressHook)(int percent, const WebPPicture* picture); + +// Color spaces. +typedef enum WebPEncCSP { + // chroma sampling + WEBP_YUV420 = 0, // 4:2:0 + WEBP_YUV420A = 4, // alpha channel variant + WEBP_CSP_UV_MASK = 3, // bit-mask to get the UV sampling factors + WEBP_CSP_ALPHA_BIT = 4 // bit that is set if alpha is present +} WebPEncCSP; + +// Encoding error conditions. +typedef enum WebPEncodingError { + VP8_ENC_OK = 0, + VP8_ENC_ERROR_OUT_OF_MEMORY, // memory error allocating objects + VP8_ENC_ERROR_BITSTREAM_OUT_OF_MEMORY, // memory error while flushing bits + VP8_ENC_ERROR_NULL_PARAMETER, // a pointer parameter is NULL + VP8_ENC_ERROR_INVALID_CONFIGURATION, // configuration is invalid + VP8_ENC_ERROR_BAD_DIMENSION, // picture has invalid width/height + VP8_ENC_ERROR_PARTITION0_OVERFLOW, // partition is bigger than 512k + VP8_ENC_ERROR_PARTITION_OVERFLOW, // partition is bigger than 16M + VP8_ENC_ERROR_BAD_WRITE, // error while flushing bytes + VP8_ENC_ERROR_FILE_TOO_BIG, // file is bigger than 4G + VP8_ENC_ERROR_USER_ABORT, // abort request by user + VP8_ENC_ERROR_LAST // list terminator. always last. +} WebPEncodingError; + +// maximum width/height allowed (inclusive), in pixels +#define WEBP_MAX_DIMENSION 16383 + +// Main exchange structure (input samples, output bytes, statistics) +// +// Once WebPPictureInit() has been called, it's ok to make all the INPUT fields +// (use_argb, y/u/v, argb, ...) point to user-owned data, even if +// WebPPictureAlloc() has been called. Depending on the value use_argb, +// it's guaranteed that either *argb or *y/*u/*v content will be kept untouched. +struct WebPPicture { + // INPUT + ////////////// + // Main flag for encoder selecting between ARGB or YUV input. + // It is recommended to use ARGB input (*argb, argb_stride) for lossless + // compression, and YUV input (*y, *u, *v, etc.) for lossy compression + // since these are the respective native colorspace for these formats. + int use_argb; + + // YUV input (mostly used for input to lossy compression) + WebPEncCSP colorspace; // colorspace: should be YUV420 for now (=Y'CbCr). + int width, height; // dimensions (less or equal to WEBP_MAX_DIMENSION) + uint8_t* y, *u, *v; // pointers to luma/chroma planes. + int y_stride, uv_stride; // luma/chroma strides. + uint8_t* a; // pointer to the alpha plane + int a_stride; // stride of the alpha plane + uint32_t pad1[2]; // padding for later use + + // ARGB input (mostly used for input to lossless compression) + uint32_t* argb; // Pointer to argb (32 bit) plane. + int argb_stride; // This is stride in pixels units, not bytes. + uint32_t pad2[3]; // padding for later use + + // OUTPUT + /////////////// + // Byte-emission hook, to store compressed bytes as they are ready. + WebPWriterFunction writer; // can be NULL + void* custom_ptr; // can be used by the writer. + + // map for extra information (only for lossy compression mode) + int extra_info_type; // 1: intra type, 2: segment, 3: quant + // 4: intra-16 prediction mode, + // 5: chroma prediction mode, + // 6: bit cost, 7: distortion + uint8_t* extra_info; // if not NULL, points to an array of size + // ((width + 15) / 16) * ((height + 15) / 16) that + // will be filled with a macroblock map, depending + // on extra_info_type. + + // STATS AND REPORTS + /////////////////////////// + // Pointer to side statistics (updated only if not NULL) + WebPAuxStats* stats; + + // Error code for the latest error encountered during encoding + WebPEncodingError error_code; + + // If not NULL, report progress during encoding. + WebPProgressHook progress_hook; + + void* user_data; // this field is free to be set to any value and + // used during callbacks (like progress-report e.g.). + + uint32_t pad3[3]; // padding for later use + + // Unused for now + uint8_t* pad4, *pad5; + uint32_t pad6[8]; // padding for later use + + // PRIVATE FIELDS + //////////////////// + void* memory_; // row chunk of memory for yuva planes + void* memory_argb_; // and for argb too. + void* pad7[2]; // padding for later use +}; + +// Internal, version-checked, entry point +WEBP_EXTERN int WebPPictureInitInternal(WebPPicture*, int); + +// Should always be called, to initialize the structure. Returns false in case +// of version mismatch. WebPPictureInit() must have succeeded before using the +// 'picture' object. +// Note that, by default, use_argb is false and colorspace is WEBP_YUV420. +static WEBP_INLINE int WebPPictureInit(WebPPicture* picture) { + return WebPPictureInitInternal(picture, WEBP_ENCODER_ABI_VERSION); +} + +//------------------------------------------------------------------------------ +// WebPPicture utils + +// Convenience allocation / deallocation based on picture->width/height: +// Allocate y/u/v buffers as per colorspace/width/height specification. +// Note! This function will free the previous buffer if needed. +// Returns false in case of memory error. +WEBP_EXTERN int WebPPictureAlloc(WebPPicture* picture); + +// Release the memory allocated by WebPPictureAlloc() or WebPPictureImport*(). +// Note that this function does _not_ free the memory used by the 'picture' +// object itself. +// Besides memory (which is reclaimed) all other fields of 'picture' are +// preserved. +WEBP_EXTERN void WebPPictureFree(WebPPicture* picture); + +// Copy the pixels of *src into *dst, using WebPPictureAlloc. Upon return, *dst +// will fully own the copied pixels (this is not a view). The 'dst' picture need +// not be initialized as its content is overwritten. +// Returns false in case of memory allocation error. +WEBP_EXTERN int WebPPictureCopy(const WebPPicture* src, WebPPicture* dst); + +// Compute the single distortion for packed planes of samples. +// 'src' will be compared to 'ref', and the raw distortion stored into +// '*distortion'. The refined metric (log(MSE), log(1 - ssim),...' will be +// stored in '*result'. +// 'x_step' is the horizontal stride (in bytes) between samples. +// 'src/ref_stride' is the byte distance between rows. +// Returns false in case of error (bad parameter, memory allocation error, ...). +WEBP_EXTERN int WebPPlaneDistortion(const uint8_t* src, size_t src_stride, + const uint8_t* ref, size_t ref_stride, + int width, int height, + size_t x_step, + int type, // 0 = PSNR, 1 = SSIM, 2 = LSIM + float* distortion, float* result); + +// Compute PSNR, SSIM or LSIM distortion metric between two pictures. Results +// are in dB, stored in result[] in the B/G/R/A/All order. The distortion is +// always performed using ARGB samples. Hence if the input is YUV(A), the +// picture will be internally converted to ARGB (just for the measurement). +// Warning: this function is rather CPU-intensive. +WEBP_EXTERN int WebPPictureDistortion( + const WebPPicture* src, const WebPPicture* ref, + int metric_type, // 0 = PSNR, 1 = SSIM, 2 = LSIM + float result[5]); + +// self-crops a picture to the rectangle defined by top/left/width/height. +// Returns false in case of memory allocation error, or if the rectangle is +// outside of the source picture. +// The rectangle for the view is defined by the top-left corner pixel +// coordinates (left, top) as well as its width and height. This rectangle +// must be fully be comprised inside the 'src' source picture. If the source +// picture uses the YUV420 colorspace, the top and left coordinates will be +// snapped to even values. +WEBP_EXTERN int WebPPictureCrop(WebPPicture* picture, + int left, int top, int width, int height); + +// Extracts a view from 'src' picture into 'dst'. The rectangle for the view +// is defined by the top-left corner pixel coordinates (left, top) as well +// as its width and height. This rectangle must be fully be comprised inside +// the 'src' source picture. If the source picture uses the YUV420 colorspace, +// the top and left coordinates will be snapped to even values. +// Picture 'src' must out-live 'dst' picture. Self-extraction of view is allowed +// ('src' equal to 'dst') as a mean of fast-cropping (but note that doing so, +// the original dimension will be lost). Picture 'dst' need not be initialized +// with WebPPictureInit() if it is different from 'src', since its content will +// be overwritten. +// Returns false in case of invalid parameters. +WEBP_EXTERN int WebPPictureView(const WebPPicture* src, + int left, int top, int width, int height, + WebPPicture* dst); + +// Returns true if the 'picture' is actually a view and therefore does +// not own the memory for pixels. +WEBP_EXTERN int WebPPictureIsView(const WebPPicture* picture); + +// Rescale a picture to new dimension width x height. +// If either 'width' or 'height' (but not both) is 0 the corresponding +// dimension will be calculated preserving the aspect ratio. +// No gamma correction is applied. +// Returns false in case of error (invalid parameter or insufficient memory). +WEBP_EXTERN int WebPPictureRescale(WebPPicture* picture, int width, int height); + +// Colorspace conversion function to import RGB samples. +// Previous buffer will be free'd, if any. +// *rgb buffer should have a size of at least height * rgb_stride. +// Returns false in case of memory error. +WEBP_EXTERN int WebPPictureImportRGB( + WebPPicture* picture, const uint8_t* rgb, int rgb_stride); +// Same, but for RGBA buffer. +WEBP_EXTERN int WebPPictureImportRGBA( + WebPPicture* picture, const uint8_t* rgba, int rgba_stride); +// Same, but for RGBA buffer. Imports the RGB direct from the 32-bit format +// input buffer ignoring the alpha channel. Avoids needing to copy the data +// to a temporary 24-bit RGB buffer to import the RGB only. +WEBP_EXTERN int WebPPictureImportRGBX( + WebPPicture* picture, const uint8_t* rgbx, int rgbx_stride); + +// Variants of the above, but taking BGR(A|X) input. +WEBP_EXTERN int WebPPictureImportBGR( + WebPPicture* picture, const uint8_t* bgr, int bgr_stride); +WEBP_EXTERN int WebPPictureImportBGRA( + WebPPicture* picture, const uint8_t* bgra, int bgra_stride); +WEBP_EXTERN int WebPPictureImportBGRX( + WebPPicture* picture, const uint8_t* bgrx, int bgrx_stride); + +// Converts picture->argb data to the YUV420A format. The 'colorspace' +// parameter is deprecated and should be equal to WEBP_YUV420. +// Upon return, picture->use_argb is set to false. The presence of real +// non-opaque transparent values is detected, and 'colorspace' will be +// adjusted accordingly. Note that this method is lossy. +// Returns false in case of error. +WEBP_EXTERN int WebPPictureARGBToYUVA(WebPPicture* picture, + WebPEncCSP /*colorspace = WEBP_YUV420*/); + +// Same as WebPPictureARGBToYUVA(), but the conversion is done using +// pseudo-random dithering with a strength 'dithering' between +// 0.0 (no dithering) and 1.0 (maximum dithering). This is useful +// for photographic picture. +WEBP_EXTERN int WebPPictureARGBToYUVADithered( + WebPPicture* picture, WebPEncCSP colorspace, float dithering); + +// Performs 'sharp' RGBA->YUVA420 downsampling and colorspace conversion. +// Downsampling is handled with extra care in case of color clipping. This +// method is roughly 2x slower than WebPPictureARGBToYUVA() but produces better +// and sharper YUV representation. +// Returns false in case of error. +WEBP_EXTERN int WebPPictureSharpARGBToYUVA(WebPPicture* picture); +// kept for backward compatibility: +WEBP_EXTERN int WebPPictureSmartARGBToYUVA(WebPPicture* picture); + +// Converts picture->yuv to picture->argb and sets picture->use_argb to true. +// The input format must be YUV_420 or YUV_420A. The conversion from YUV420 to +// ARGB incurs a small loss too. +// Note that the use of this colorspace is discouraged if one has access to the +// raw ARGB samples, since using YUV420 is comparatively lossy. +// Returns false in case of error. +WEBP_EXTERN int WebPPictureYUVAToARGB(WebPPicture* picture); + +// Helper function: given a width x height plane of RGBA or YUV(A) samples +// clean-up or smoothen the YUV or RGB samples under fully transparent area, +// to help compressibility (no guarantee, though). +WEBP_EXTERN void WebPCleanupTransparentArea(WebPPicture* picture); + +// Scan the picture 'picture' for the presence of non fully opaque alpha values. +// Returns true in such case. Otherwise returns false (indicating that the +// alpha plane can be ignored altogether e.g.). +WEBP_EXTERN int WebPPictureHasTransparency(const WebPPicture* picture); + +// Remove the transparency information (if present) by blending the color with +// the background color 'background_rgb' (specified as 24bit RGB triplet). +// After this call, all alpha values are reset to 0xff. +WEBP_EXTERN void WebPBlendAlpha(WebPPicture* picture, uint32_t background_rgb); + +//------------------------------------------------------------------------------ +// Main call + +// Main encoding call, after config and picture have been initialized. +// 'picture' must be less than 16384x16384 in dimension (cf WEBP_MAX_DIMENSION), +// and the 'config' object must be a valid one. +// Returns false in case of error, true otherwise. +// In case of error, picture->error_code is updated accordingly. +// 'picture' can hold the source samples in both YUV(A) or ARGB input, depending +// on the value of 'picture->use_argb'. It is highly recommended to use +// the former for lossy encoding, and the latter for lossless encoding +// (when config.lossless is true). Automatic conversion from one format to +// another is provided but they both incur some loss. +WEBP_EXTERN int WebPEncode(const WebPConfig* config, WebPPicture* picture); + +//------------------------------------------------------------------------------ + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // WEBP_WEBP_ENCODE_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/mux.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/mux.h new file mode 100644 index 0000000..7d27489 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/mux.h @@ -0,0 +1,530 @@ +// Copyright 2011 Google Inc. All Rights Reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the COPYING file in the root of the source +// tree. An additional intellectual property rights grant can be found +// in the file PATENTS. All contributing project authors may +// be found in the AUTHORS file in the root of the source tree. +// ----------------------------------------------------------------------------- +// +// RIFF container manipulation and encoding for WebP images. +// +// Authors: Urvang (urvang@google.com) +// Vikas (vikasa@google.com) + +#ifndef WEBP_WEBP_MUX_H_ +#define WEBP_WEBP_MUX_H_ + +#include "./mux_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define WEBP_MUX_ABI_VERSION 0x0108 // MAJOR(8b) + MINOR(8b) + +//------------------------------------------------------------------------------ +// Mux API +// +// This API allows manipulation of WebP container images containing features +// like color profile, metadata, animation. +// +// Code Example#1: Create a WebPMux object with image data, color profile and +// XMP metadata. +/* + int copy_data = 0; + WebPMux* mux = WebPMuxNew(); + // ... (Prepare image data). + WebPMuxSetImage(mux, &image, copy_data); + // ... (Prepare ICCP color profile data). + WebPMuxSetChunk(mux, "ICCP", &icc_profile, copy_data); + // ... (Prepare XMP metadata). + WebPMuxSetChunk(mux, "XMP ", &xmp, copy_data); + // Get data from mux in WebP RIFF format. + WebPMuxAssemble(mux, &output_data); + WebPMuxDelete(mux); + // ... (Consume output_data; e.g. write output_data.bytes to file). + WebPDataClear(&output_data); +*/ + +// Code Example#2: Get image and color profile data from a WebP file. +/* + int copy_data = 0; + // ... (Read data from file). + WebPMux* mux = WebPMuxCreate(&data, copy_data); + WebPMuxGetFrame(mux, 1, &image); + // ... (Consume image; e.g. call WebPDecode() to decode the data). + WebPMuxGetChunk(mux, "ICCP", &icc_profile); + // ... (Consume icc_data). + WebPMuxDelete(mux); + WebPFree(data); +*/ + +// Note: forward declaring enumerations is not allowed in (strict) C and C++, +// the types are left here for reference. +// typedef enum WebPMuxError WebPMuxError; +// typedef enum WebPChunkId WebPChunkId; +typedef struct WebPMux WebPMux; // main opaque object. +typedef struct WebPMuxFrameInfo WebPMuxFrameInfo; +typedef struct WebPMuxAnimParams WebPMuxAnimParams; +typedef struct WebPAnimEncoderOptions WebPAnimEncoderOptions; + +// Error codes +typedef enum WebPMuxError { + WEBP_MUX_OK = 1, + WEBP_MUX_NOT_FOUND = 0, + WEBP_MUX_INVALID_ARGUMENT = -1, + WEBP_MUX_BAD_DATA = -2, + WEBP_MUX_MEMORY_ERROR = -3, + WEBP_MUX_NOT_ENOUGH_DATA = -4 +} WebPMuxError; + +// IDs for different types of chunks. +typedef enum WebPChunkId { + WEBP_CHUNK_VP8X, // VP8X + WEBP_CHUNK_ICCP, // ICCP + WEBP_CHUNK_ANIM, // ANIM + WEBP_CHUNK_ANMF, // ANMF + WEBP_CHUNK_DEPRECATED, // (deprecated from FRGM) + WEBP_CHUNK_ALPHA, // ALPH + WEBP_CHUNK_IMAGE, // VP8/VP8L + WEBP_CHUNK_EXIF, // EXIF + WEBP_CHUNK_XMP, // XMP + WEBP_CHUNK_UNKNOWN, // Other chunks. + WEBP_CHUNK_NIL +} WebPChunkId; + +//------------------------------------------------------------------------------ + +// Returns the version number of the mux library, packed in hexadecimal using +// 8bits for each of major/minor/revision. E.g: v2.5.7 is 0x020507. +WEBP_EXTERN int WebPGetMuxVersion(void); + +//------------------------------------------------------------------------------ +// Life of a Mux object + +// Internal, version-checked, entry point +WEBP_EXTERN WebPMux* WebPNewInternal(int); + +// Creates an empty mux object. +// Returns: +// A pointer to the newly created empty mux object. +// Or NULL in case of memory error. +static WEBP_INLINE WebPMux* WebPMuxNew(void) { + return WebPNewInternal(WEBP_MUX_ABI_VERSION); +} + +// Deletes the mux object. +// Parameters: +// mux - (in/out) object to be deleted +WEBP_EXTERN void WebPMuxDelete(WebPMux* mux); + +//------------------------------------------------------------------------------ +// Mux creation. + +// Internal, version-checked, entry point +WEBP_EXTERN WebPMux* WebPMuxCreateInternal(const WebPData*, int, int); + +// Creates a mux object from raw data given in WebP RIFF format. +// Parameters: +// bitstream - (in) the bitstream data in WebP RIFF format +// copy_data - (in) value 1 indicates given data WILL be copied to the mux +// object and value 0 indicates data will NOT be copied. +// Returns: +// A pointer to the mux object created from given data - on success. +// NULL - In case of invalid data or memory error. +static WEBP_INLINE WebPMux* WebPMuxCreate(const WebPData* bitstream, + int copy_data) { + return WebPMuxCreateInternal(bitstream, copy_data, WEBP_MUX_ABI_VERSION); +} + +//------------------------------------------------------------------------------ +// Non-image chunks. + +// Note: Only non-image related chunks should be managed through chunk APIs. +// (Image related chunks are: "ANMF", "VP8 ", "VP8L" and "ALPH"). +// To add, get and delete images, use WebPMuxSetImage(), WebPMuxPushFrame(), +// WebPMuxGetFrame() and WebPMuxDeleteFrame(). + +// Adds a chunk with id 'fourcc' and data 'chunk_data' in the mux object. +// Any existing chunk(s) with the same id will be removed. +// Parameters: +// mux - (in/out) object to which the chunk is to be added +// fourcc - (in) a character array containing the fourcc of the given chunk; +// e.g., "ICCP", "XMP ", "EXIF" etc. +// chunk_data - (in) the chunk data to be added +// copy_data - (in) value 1 indicates given data WILL be copied to the mux +// object and value 0 indicates data will NOT be copied. +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux, fourcc or chunk_data is NULL +// or if fourcc corresponds to an image chunk. +// WEBP_MUX_MEMORY_ERROR - on memory allocation error. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxSetChunk( + WebPMux* mux, const char fourcc[4], const WebPData* chunk_data, + int copy_data); + +// Gets a reference to the data of the chunk with id 'fourcc' in the mux object. +// The caller should NOT free the returned data. +// Parameters: +// mux - (in) object from which the chunk data is to be fetched +// fourcc - (in) a character array containing the fourcc of the chunk; +// e.g., "ICCP", "XMP ", "EXIF" etc. +// chunk_data - (out) returned chunk data +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux, fourcc or chunk_data is NULL +// or if fourcc corresponds to an image chunk. +// WEBP_MUX_NOT_FOUND - If mux does not contain a chunk with the given id. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxGetChunk( + const WebPMux* mux, const char fourcc[4], WebPData* chunk_data); + +// Deletes the chunk with the given 'fourcc' from the mux object. +// Parameters: +// mux - (in/out) object from which the chunk is to be deleted +// fourcc - (in) a character array containing the fourcc of the chunk; +// e.g., "ICCP", "XMP ", "EXIF" etc. +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux or fourcc is NULL +// or if fourcc corresponds to an image chunk. +// WEBP_MUX_NOT_FOUND - If mux does not contain a chunk with the given fourcc. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxDeleteChunk( + WebPMux* mux, const char fourcc[4]); + +//------------------------------------------------------------------------------ +// Images. + +// Encapsulates data about a single frame. +struct WebPMuxFrameInfo { + WebPData bitstream; // image data: can be a raw VP8/VP8L bitstream + // or a single-image WebP file. + int x_offset; // x-offset of the frame. + int y_offset; // y-offset of the frame. + int duration; // duration of the frame (in milliseconds). + + WebPChunkId id; // frame type: should be one of WEBP_CHUNK_ANMF + // or WEBP_CHUNK_IMAGE + WebPMuxAnimDispose dispose_method; // Disposal method for the frame. + WebPMuxAnimBlend blend_method; // Blend operation for the frame. + uint32_t pad[1]; // padding for later use +}; + +// Sets the (non-animated) image in the mux object. +// Note: Any existing images (including frames) will be removed. +// Parameters: +// mux - (in/out) object in which the image is to be set +// bitstream - (in) can be a raw VP8/VP8L bitstream or a single-image +// WebP file (non-animated) +// copy_data - (in) value 1 indicates given data WILL be copied to the mux +// object and value 0 indicates data will NOT be copied. +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux is NULL or bitstream is NULL. +// WEBP_MUX_MEMORY_ERROR - on memory allocation error. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxSetImage( + WebPMux* mux, const WebPData* bitstream, int copy_data); + +// Adds a frame at the end of the mux object. +// Notes: (1) frame.id should be WEBP_CHUNK_ANMF +// (2) For setting a non-animated image, use WebPMuxSetImage() instead. +// (3) Type of frame being pushed must be same as the frames in mux. +// (4) As WebP only supports even offsets, any odd offset will be snapped +// to an even location using: offset &= ~1 +// Parameters: +// mux - (in/out) object to which the frame is to be added +// frame - (in) frame data. +// copy_data - (in) value 1 indicates given data WILL be copied to the mux +// object and value 0 indicates data will NOT be copied. +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux or frame is NULL +// or if content of 'frame' is invalid. +// WEBP_MUX_MEMORY_ERROR - on memory allocation error. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxPushFrame( + WebPMux* mux, const WebPMuxFrameInfo* frame, int copy_data); + +// Gets the nth frame from the mux object. +// The content of 'frame->bitstream' is allocated using WebPMalloc(), and NOT +// owned by the 'mux' object. It MUST be deallocated by the caller by calling +// WebPDataClear(). +// nth=0 has a special meaning - last position. +// Parameters: +// mux - (in) object from which the info is to be fetched +// nth - (in) index of the frame in the mux object +// frame - (out) data of the returned frame +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux or frame is NULL. +// WEBP_MUX_NOT_FOUND - if there are less than nth frames in the mux object. +// WEBP_MUX_BAD_DATA - if nth frame chunk in mux is invalid. +// WEBP_MUX_MEMORY_ERROR - on memory allocation error. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxGetFrame( + const WebPMux* mux, uint32_t nth, WebPMuxFrameInfo* frame); + +// Deletes a frame from the mux object. +// nth=0 has a special meaning - last position. +// Parameters: +// mux - (in/out) object from which a frame is to be deleted +// nth - (in) The position from which the frame is to be deleted +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux is NULL. +// WEBP_MUX_NOT_FOUND - If there are less than nth frames in the mux object +// before deletion. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxDeleteFrame(WebPMux* mux, uint32_t nth); + +//------------------------------------------------------------------------------ +// Animation. + +// Animation parameters. +struct WebPMuxAnimParams { + uint32_t bgcolor; // Background color of the canvas stored (in MSB order) as: + // Bits 00 to 07: Alpha. + // Bits 08 to 15: Red. + // Bits 16 to 23: Green. + // Bits 24 to 31: Blue. + int loop_count; // Number of times to repeat the animation [0 = infinite]. +}; + +// Sets the animation parameters in the mux object. Any existing ANIM chunks +// will be removed. +// Parameters: +// mux - (in/out) object in which ANIM chunk is to be set/added +// params - (in) animation parameters. +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux or params is NULL. +// WEBP_MUX_MEMORY_ERROR - on memory allocation error. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxSetAnimationParams( + WebPMux* mux, const WebPMuxAnimParams* params); + +// Gets the animation parameters from the mux object. +// Parameters: +// mux - (in) object from which the animation parameters to be fetched +// params - (out) animation parameters extracted from the ANIM chunk +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux or params is NULL. +// WEBP_MUX_NOT_FOUND - if ANIM chunk is not present in mux object. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxGetAnimationParams( + const WebPMux* mux, WebPMuxAnimParams* params); + +//------------------------------------------------------------------------------ +// Misc Utilities. + +// Sets the canvas size for the mux object. The width and height can be +// specified explicitly or left as zero (0, 0). +// * When width and height are specified explicitly, then this frame bound is +// enforced during subsequent calls to WebPMuxAssemble() and an error is +// reported if any animated frame does not completely fit within the canvas. +// * When unspecified (0, 0), the constructed canvas will get the frame bounds +// from the bounding-box over all frames after calling WebPMuxAssemble(). +// Parameters: +// mux - (in) object to which the canvas size is to be set +// width - (in) canvas width +// height - (in) canvas height +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux is NULL; or +// width or height are invalid or out of bounds +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxSetCanvasSize(WebPMux* mux, + int width, int height); + +// Gets the canvas size from the mux object. +// Note: This method assumes that the VP8X chunk, if present, is up-to-date. +// That is, the mux object hasn't been modified since the last call to +// WebPMuxAssemble() or WebPMuxCreate(). +// Parameters: +// mux - (in) object from which the canvas size is to be fetched +// width - (out) canvas width +// height - (out) canvas height +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux, width or height is NULL. +// WEBP_MUX_BAD_DATA - if VP8X/VP8/VP8L chunk or canvas size is invalid. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxGetCanvasSize(const WebPMux* mux, + int* width, int* height); + +// Gets the feature flags from the mux object. +// Note: This method assumes that the VP8X chunk, if present, is up-to-date. +// That is, the mux object hasn't been modified since the last call to +// WebPMuxAssemble() or WebPMuxCreate(). +// Parameters: +// mux - (in) object from which the features are to be fetched +// flags - (out) the flags specifying which features are present in the +// mux object. This will be an OR of various flag values. +// Enum 'WebPFeatureFlags' can be used to test individual flag values. +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux or flags is NULL. +// WEBP_MUX_BAD_DATA - if VP8X/VP8/VP8L chunk or canvas size is invalid. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxGetFeatures(const WebPMux* mux, + uint32_t* flags); + +// Gets number of chunks with the given 'id' in the mux object. +// Parameters: +// mux - (in) object from which the info is to be fetched +// id - (in) chunk id specifying the type of chunk +// num_elements - (out) number of chunks with the given chunk id +// Returns: +// WEBP_MUX_INVALID_ARGUMENT - if mux, or num_elements is NULL. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxNumChunks(const WebPMux* mux, + WebPChunkId id, int* num_elements); + +// Assembles all chunks in WebP RIFF format and returns in 'assembled_data'. +// This function also validates the mux object. +// Note: The content of 'assembled_data' will be ignored and overwritten. +// Also, the content of 'assembled_data' is allocated using WebPMalloc(), and +// NOT owned by the 'mux' object. It MUST be deallocated by the caller by +// calling WebPDataClear(). It's always safe to call WebPDataClear() upon +// return, even in case of error. +// Parameters: +// mux - (in/out) object whose chunks are to be assembled +// assembled_data - (out) assembled WebP data +// Returns: +// WEBP_MUX_BAD_DATA - if mux object is invalid. +// WEBP_MUX_INVALID_ARGUMENT - if mux or assembled_data is NULL. +// WEBP_MUX_MEMORY_ERROR - on memory allocation error. +// WEBP_MUX_OK - on success. +WEBP_EXTERN WebPMuxError WebPMuxAssemble(WebPMux* mux, + WebPData* assembled_data); + +//------------------------------------------------------------------------------ +// WebPAnimEncoder API +// +// This API allows encoding (possibly) animated WebP images. +// +// Code Example: +/* + WebPAnimEncoderOptions enc_options; + WebPAnimEncoderOptionsInit(&enc_options); + // Tune 'enc_options' as needed. + WebPAnimEncoder* enc = WebPAnimEncoderNew(width, height, &enc_options); + while() { + WebPConfig config; + WebPConfigInit(&config); + // Tune 'config' as needed. + WebPAnimEncoderAdd(enc, frame, timestamp_ms, &config); + } + WebPAnimEncoderAdd(enc, NULL, timestamp_ms, NULL); + WebPAnimEncoderAssemble(enc, webp_data); + WebPAnimEncoderDelete(enc); + // Write the 'webp_data' to a file, or re-mux it further. +*/ + +typedef struct WebPAnimEncoder WebPAnimEncoder; // Main opaque object. + +// Forward declarations. Defined in encode.h. +struct WebPPicture; +struct WebPConfig; + +// Global options. +struct WebPAnimEncoderOptions { + WebPMuxAnimParams anim_params; // Animation parameters. + int minimize_size; // If true, minimize the output size (slow). Implicitly + // disables key-frame insertion. + int kmin; + int kmax; // Minimum and maximum distance between consecutive key + // frames in the output. The library may insert some key + // frames as needed to satisfy this criteria. + // Note that these conditions should hold: kmax > kmin + // and kmin >= kmax / 2 + 1. Also, if kmax <= 0, then + // key-frame insertion is disabled; and if kmax == 1, + // then all frames will be key-frames (kmin value does + // not matter for these special cases). + int allow_mixed; // If true, use mixed compression mode; may choose + // either lossy and lossless for each frame. + int verbose; // If true, print info and warning messages to stderr. + + uint32_t padding[4]; // Padding for later use. +}; + +// Internal, version-checked, entry point. +WEBP_EXTERN int WebPAnimEncoderOptionsInitInternal( + WebPAnimEncoderOptions*, int); + +// Should always be called, to initialize a fresh WebPAnimEncoderOptions +// structure before modification. Returns false in case of version mismatch. +// WebPAnimEncoderOptionsInit() must have succeeded before using the +// 'enc_options' object. +static WEBP_INLINE int WebPAnimEncoderOptionsInit( + WebPAnimEncoderOptions* enc_options) { + return WebPAnimEncoderOptionsInitInternal(enc_options, WEBP_MUX_ABI_VERSION); +} + +// Internal, version-checked, entry point. +WEBP_EXTERN WebPAnimEncoder* WebPAnimEncoderNewInternal( + int, int, const WebPAnimEncoderOptions*, int); + +// Creates and initializes a WebPAnimEncoder object. +// Parameters: +// width/height - (in) canvas width and height of the animation. +// enc_options - (in) encoding options; can be passed NULL to pick +// reasonable defaults. +// Returns: +// A pointer to the newly created WebPAnimEncoder object. +// Or NULL in case of memory error. +static WEBP_INLINE WebPAnimEncoder* WebPAnimEncoderNew( + int width, int height, const WebPAnimEncoderOptions* enc_options) { + return WebPAnimEncoderNewInternal(width, height, enc_options, + WEBP_MUX_ABI_VERSION); +} + +// Optimize the given frame for WebP, encode it and add it to the +// WebPAnimEncoder object. +// The last call to 'WebPAnimEncoderAdd' should be with frame = NULL, which +// indicates that no more frames are to be added. This call is also used to +// determine the duration of the last frame. +// Parameters: +// enc - (in/out) object to which the frame is to be added. +// frame - (in/out) frame data in ARGB or YUV(A) format. If it is in YUV(A) +// format, it will be converted to ARGB, which incurs a small loss. +// timestamp_ms - (in) timestamp of this frame in milliseconds. +// Duration of a frame would be calculated as +// "timestamp of next frame - timestamp of this frame". +// Hence, timestamps should be in non-decreasing order. +// config - (in) encoding options; can be passed NULL to pick +// reasonable defaults. +// Returns: +// On error, returns false and frame->error_code is set appropriately. +// Otherwise, returns true. +WEBP_EXTERN int WebPAnimEncoderAdd( + WebPAnimEncoder* enc, struct WebPPicture* frame, int timestamp_ms, + const struct WebPConfig* config); + +// Assemble all frames added so far into a WebP bitstream. +// This call should be preceded by a call to 'WebPAnimEncoderAdd' with +// frame = NULL; if not, the duration of the last frame will be internally +// estimated. +// Parameters: +// enc - (in/out) object from which the frames are to be assembled. +// webp_data - (out) generated WebP bitstream. +// Returns: +// True on success. +WEBP_EXTERN int WebPAnimEncoderAssemble(WebPAnimEncoder* enc, + WebPData* webp_data); + +// Get error string corresponding to the most recent call using 'enc'. The +// returned string is owned by 'enc' and is valid only until the next call to +// WebPAnimEncoderAdd() or WebPAnimEncoderAssemble() or WebPAnimEncoderDelete(). +// Parameters: +// enc - (in/out) object from which the error string is to be fetched. +// Returns: +// NULL if 'enc' is NULL. Otherwise, returns the error string if the last call +// to 'enc' had an error, or an empty string if the last call was a success. +WEBP_EXTERN const char* WebPAnimEncoderGetError(WebPAnimEncoder* enc); + +// Deletes the WebPAnimEncoder object. +// Parameters: +// enc - (in/out) object to be deleted +WEBP_EXTERN void WebPAnimEncoderDelete(WebPAnimEncoder* enc); + +//------------------------------------------------------------------------------ + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // WEBP_WEBP_MUX_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/mux_types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/mux_types.h new file mode 100644 index 0000000..2fe8195 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/mux_types.h @@ -0,0 +1,98 @@ +// Copyright 2012 Google Inc. All Rights Reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the COPYING file in the root of the source +// tree. An additional intellectual property rights grant can be found +// in the file PATENTS. All contributing project authors may +// be found in the AUTHORS file in the root of the source tree. +// ----------------------------------------------------------------------------- +// +// Data-types common to the mux and demux libraries. +// +// Author: Urvang (urvang@google.com) + +#ifndef WEBP_WEBP_MUX_TYPES_H_ +#define WEBP_WEBP_MUX_TYPES_H_ + +#include // memset() +#include "./types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Note: forward declaring enumerations is not allowed in (strict) C and C++, +// the types are left here for reference. +// typedef enum WebPFeatureFlags WebPFeatureFlags; +// typedef enum WebPMuxAnimDispose WebPMuxAnimDispose; +// typedef enum WebPMuxAnimBlend WebPMuxAnimBlend; +typedef struct WebPData WebPData; + +// VP8X Feature Flags. +typedef enum WebPFeatureFlags { + ANIMATION_FLAG = 0x00000002, + XMP_FLAG = 0x00000004, + EXIF_FLAG = 0x00000008, + ALPHA_FLAG = 0x00000010, + ICCP_FLAG = 0x00000020, + + ALL_VALID_FLAGS = 0x0000003e +} WebPFeatureFlags; + +// Dispose method (animation only). Indicates how the area used by the current +// frame is to be treated before rendering the next frame on the canvas. +typedef enum WebPMuxAnimDispose { + WEBP_MUX_DISPOSE_NONE, // Do not dispose. + WEBP_MUX_DISPOSE_BACKGROUND // Dispose to background color. +} WebPMuxAnimDispose; + +// Blend operation (animation only). Indicates how transparent pixels of the +// current frame are blended with those of the previous canvas. +typedef enum WebPMuxAnimBlend { + WEBP_MUX_BLEND, // Blend. + WEBP_MUX_NO_BLEND // Do not blend. +} WebPMuxAnimBlend; + +// Data type used to describe 'raw' data, e.g., chunk data +// (ICC profile, metadata) and WebP compressed image data. +// 'bytes' memory must be allocated using WebPMalloc() and such. +struct WebPData { + const uint8_t* bytes; + size_t size; +}; + +// Initializes the contents of the 'webp_data' object with default values. +static WEBP_INLINE void WebPDataInit(WebPData* webp_data) { + if (webp_data != NULL) { + memset(webp_data, 0, sizeof(*webp_data)); + } +} + +// Clears the contents of the 'webp_data' object by calling WebPFree(). +// Does not deallocate the object itself. +static WEBP_INLINE void WebPDataClear(WebPData* webp_data) { + if (webp_data != NULL) { + WebPFree((void*)webp_data->bytes); + WebPDataInit(webp_data); + } +} + +// Allocates necessary storage for 'dst' and copies the contents of 'src'. +// Returns true on success. +static WEBP_INLINE int WebPDataCopy(const WebPData* src, WebPData* dst) { + if (src == NULL || dst == NULL) return 0; + WebPDataInit(dst); + if (src->bytes != NULL && src->size != 0) { + dst->bytes = (uint8_t*)WebPMalloc(src->size); + if (dst->bytes == NULL) return 0; + memcpy((void*)dst->bytes, src->bytes, src->size); + dst->size = src->size; + } + return 1; +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // WEBP_WEBP_MUX_TYPES_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/types.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/types.h new file mode 100644 index 0000000..47f7f2b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/webp/types.h @@ -0,0 +1,68 @@ +// Copyright 2010 Google Inc. All Rights Reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the COPYING file in the root of the source +// tree. An additional intellectual property rights grant can be found +// in the file PATENTS. All contributing project authors may +// be found in the AUTHORS file in the root of the source tree. +// ----------------------------------------------------------------------------- +// +// Common types + memory wrappers +// +// Author: Skal (pascal.massimino@gmail.com) + +#ifndef WEBP_WEBP_TYPES_H_ +#define WEBP_WEBP_TYPES_H_ + +#include // for size_t + +#ifndef _MSC_VER +#include +#if defined(__cplusplus) || !defined(__STRICT_ANSI__) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) +#define WEBP_INLINE inline +#else +#define WEBP_INLINE +#endif +#else +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef unsigned long long int uint64_t; +typedef long long int int64_t; +#define WEBP_INLINE __forceinline +#endif /* _MSC_VER */ + +#ifndef WEBP_EXTERN +// This explicitly marks library functions and allows for changing the +// signature for e.g., Windows DLL builds. +# if defined(__GNUC__) && __GNUC__ >= 4 +# define WEBP_EXTERN extern __attribute__ ((visibility ("default"))) +# else +# define WEBP_EXTERN extern +# endif /* __GNUC__ >= 4 */ +#endif /* WEBP_EXTERN */ + +// Macro to check ABI compatibility (same major revision number) +#define WEBP_ABI_IS_INCOMPATIBLE(a, b) (((a) >> 8) != ((b) >> 8)) + +#ifdef __cplusplus +extern "C" { +#endif + +// Allocates 'size' bytes of memory. Returns NULL upon error. Memory +// must be deallocated by calling WebPFree(). This function is made available +// by the core 'libwebp' library. +WEBP_EXTERN void* WebPMalloc(size_t size); + +// Releases memory returned by the WebPDecode*() functions (from decode.h). +WEBP_EXTERN void WebPFree(void* ptr); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // WEBP_WEBP_TYPES_H_ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/zconf.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/zconf.h new file mode 100644 index 0000000..68629b1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/zconf.h @@ -0,0 +1,197 @@ +/* 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 + */ + +#ifndef ZCONF_H +#define ZCONF_H + +#if !defined(_WIN32) && defined(__WIN32__) +# define _WIN32 +#endif + +#ifdef __STDC_VERSION__ +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif + +/* Clang macro for detecting declspec support + * https://clang.llvm.org/docs/LanguageExtensions.html#has-declspec-attribute + */ +#ifndef __has_declspec_attribute +# define __has_declspec_attribute(x) 0 +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# define MAX_MEM_LEVEL 9 +#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 */ +# define OF(args) args +#endif + +#ifdef ZLIB_INTERNAL +# define Z_INTERNAL ZLIB_INTERNAL +#endif + +/* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +#if defined(ZLIB_DLL) && (defined(_WIN32) || (__has_declspec_attribute(dllexport) && __has_declspec_attribute(dllimport))) +# ifdef Z_INTERNAL +# define Z_EXTERN extern __declspec(dllexport) +# else +# define Z_EXTERN extern __declspec(dllimport) +# endif +#endif + +/* 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. + */ +#if defined(ZLIB_WINAPI) && defined(_WIN32) +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define Z_EXPORT WINAPI +# define Z_EXPORTVA WINAPIV +#endif + +#ifndef Z_EXTERN +# define Z_EXTERN extern +#endif +#ifndef Z_EXPORT +# define Z_EXPORT +#endif +#ifndef Z_EXPORTVA +# define Z_EXPORTVA +#endif + +/* For backwards compatibility */ + +#ifndef ZEXTERN +# define ZEXTERN Z_EXTERN +#endif +#ifndef ZEXPORT +# define ZEXPORT Z_EXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA Z_EXPORTVA +#endif + +/* Fallback for something that includes us. */ +typedef unsigned char Byte; +typedef Byte Bytef; + +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +typedef char charf; +typedef int intf; +typedef uInt uIntf; +typedef uLong uLongf; + +typedef void const *voidpc; +typedef void *voidpf; +typedef void *voidp; + +#if 1 /* was set to #if 1 by configure/cmake/etc */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef NEED_PTRDIFF_T /* may be set to #if 1 by configure/cmake/etc */ +typedef PTRDIFF_TYPE ptrdiff_t; +#endif + +#include /* for off_t */ +#include /* for va_list */ + +#include /* for wchar_t and NULL */ + +/* 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(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifndef z_off_t +# define z_off_t off_t +# 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) +# 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(__MSYS__) +# define z_off64_t _off64_t +# elif defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +#endif /* ZCONF_H */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/zlib.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/zlib.h new file mode 100644 index 0000000..a593c47 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/include/zlib.h @@ -0,0 +1,1850 @@ +#ifndef ZLIB_H_ +#define ZLIB_H_ +/* zlib.h -- interface of the 'zlib-ng' compression library + Forked from and compatible with zlib 1.2.11 + + Copyright (C) 1995-2016 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 https://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifdef ZNGLIB_H_ +# error Include zlib-ng.h for zlib-ng API or zlib.h for zlib-compat API but not both +#endif + +#include +#include +#include "zconf.h" + +#ifndef ZCONF_H +# error Missing zconf.h add binary output directory to include directories +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIBNG_VERSION "2.0.6" +#define ZLIBNG_VERNUM 0x2060 +#define ZLIBNG_VER_MAJOR 2 +#define ZLIBNG_VER_MINOR 0 +#define ZLIBNG_VER_REVISION 6 +#define ZLIBNG_VER_SUBREVISION 0 + +#define ZLIB_VERSION "1.2.11.zlib-ng" +#define ZLIB_VERNUM 0x12bf +#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 void *(*alloc_func) (void *opaque, unsigned int items, unsigned int size); +typedef void (*free_func) (void *opaque, void *address); + +struct internal_state; + +typedef struct z_stream_s { + z_const unsigned char *next_in; /* next input byte */ + uint32_t avail_in; /* number of bytes available at next_in */ + unsigned long total_in; /* total number of input bytes read so far */ + + unsigned char *next_out; /* next output byte will go here */ + uint32_t avail_out; /* remaining free space at next_out */ + unsigned long total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + void *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 */ + unsigned long adler; /* Adler-32 or CRC-32 value of the uncompressed data */ + unsigned long reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream *z_streamp; /* Obsolete type, retained for compatibility only */ + +/* + 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 */ + unsigned long time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + unsigned char *extra; /* pointer to extra field or NULL if none */ + unsigned int extra_len; /* extra field length (valid if extra != NULL) */ + unsigned int extra_max; /* space at extra (only when reading header) */ + unsigned char *name; /* pointer to zero-terminated file name or NULL */ + unsigned int name_max; /* space at name (only when reading header) */ + unsigned char *comment; /* pointer to zero-terminated comment or NULL */ + unsigned int 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 *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 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(). + + 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 NULL /* for compatibility with zlib, was for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +Z_EXTERN const char * Z_EXPORT zlibVersion(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. + */ + +/* +Z_EXTERN int Z_EXPORT deflateInit (z_stream *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 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(). +*/ + + +Z_EXTERN int Z_EXPORT deflate(z_stream *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 output + 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 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. +*/ + + +Z_EXTERN int Z_EXPORT deflateEnd(z_stream *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). +*/ + + +/* +Z_EXTERN int Z_EXPORT inflateInit (z_stream *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 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. +*/ + + +Z_EXTERN int Z_EXPORT inflate(z_stream *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 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 is 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. +*/ + + +Z_EXTERN int Z_EXPORT inflateEnd(z_stream *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. +*/ + +/* +Z_EXTERN int Z_EXPORT deflateInit2 (z_stream *strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy); + + This is another version of deflateInit with more compression options. The + fields 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(). +*/ + +Z_EXTERN int Z_EXPORT deflateSetDictionary(z_stream *strm, + const unsigned char *dictionary, + unsigned int 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 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(). +*/ + +Z_EXTERN int Z_EXPORT deflateGetDictionary (z_stream *strm, unsigned char *dictionary, unsigned int *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. + Similarly, 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. +*/ + +Z_EXTERN int Z_EXPORT deflateCopy(z_stream *dest, z_stream *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 NULL). msg is left unchanged in both source and + destination. +*/ + +Z_EXTERN int Z_EXPORT deflateReset(z_stream *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 NULL). +*/ + +Z_EXTERN int Z_EXPORT deflateParams(z_stream *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 there have been any deflate() calls since the + state was initialized or reset, 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. +*/ + +Z_EXTERN int Z_EXPORT deflateTune(z_stream *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. + */ + +Z_EXTERN unsigned long Z_EXPORT deflateBound(z_stream *strm, unsigned long 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. +*/ + +Z_EXTERN int Z_EXPORT deflatePending(z_stream *strm, uint32_t *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 NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +Z_EXTERN int Z_EXPORT deflatePrime(z_stream *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. +*/ + +Z_EXTERN int Z_EXPORT deflateSetHeader(z_stream *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 NULL, name and comment are terminated with + a zero byte, and that if extra is not 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. +*/ + +/* +Z_EXTERN int Z_EXPORT inflateInit2(z_stream *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 members. + inflate() will return Z_STREAM_END at the end of the gzip member. The state + would need to be reset to continue decoding a subsequent gzip member. This + *must* be done if there is more data after a gzip member, in order for the + decompression to be compliant with the gzip standard (RFC 1952). + + 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. +*/ + +Z_EXTERN int Z_EXPORT inflateSetDictionary(z_stream *strm, const unsigned char *dictionary, unsigned int 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 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(). +*/ + +Z_EXTERN int Z_EXPORT inflateGetDictionary(z_stream *strm, unsigned char *dictionary, unsigned int *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 + NULL, then only the dictionary length is returned, and nothing is copied. + Similarly, if dictLength is NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +Z_EXTERN int Z_EXPORT inflateSync(z_stream *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. +*/ + +Z_EXTERN int Z_EXPORT inflateCopy(z_stream *dest, z_stream *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 NULL). msg is left unchanged in both source and + destination. +*/ + +Z_EXTERN int Z_EXPORT inflateReset(z_stream *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 NULL). +*/ + +Z_EXTERN int Z_EXPORT inflateReset2(z_stream *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 NULL), or if + the windowBits parameter is invalid. +*/ + +Z_EXTERN int Z_EXPORT inflatePrime(z_stream *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. +*/ + +Z_EXTERN long Z_EXPORT inflateMark(z_stream *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. +*/ + +Z_EXTERN int Z_EXPORT inflateGetHeader(z_stream *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 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 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 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 NULL and the respective field is not + present in the header, then that field is set to 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. +*/ + +/* +Z_EXTERN int Z_EXPORT inflateBackInit (z_stream *strm, int windowBits, unsigned char *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 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 uint32_t (*in_func) (void *, z_const unsigned char * *); +typedef int (*out_func) (void *, unsigned char *, uint32_t); + +Z_EXTERN int Z_EXPORT inflateBack(z_stream *strm, in_func in, void *in_desc, out_func out, void *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 NULL, then in() will be called + immediately for input. If strm->next_in is not 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 NULL only if in() returned an error. If + strm->next_in is not 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. +*/ + +Z_EXTERN int Z_EXPORT inflateBackEnd(z_stream *strm); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +Z_EXTERN unsigned long Z_EXPORT zlibCompileFlags(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 unsigned int + 3.2: size of unsigned long + 5.4: size of void * (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 (not supported by zlib-ng) + 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. +*/ + +Z_EXTERN int Z_EXPORT compress(unsigned char *dest, unsigned long *destLen, const unsigned char *source, unsigned long 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. +*/ + +Z_EXTERN int Z_EXPORT compress2(unsigned char *dest, unsigned long *destLen, const unsigned char *source, + unsigned long 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. +*/ + +Z_EXTERN unsigned long Z_EXPORT compressBound(unsigned long 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. +*/ + +Z_EXTERN int Z_EXPORT uncompress(unsigned char *dest, unsigned long *destLen, const unsigned char *source, unsigned long 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. +*/ + + +Z_EXTERN int Z_EXPORT uncompress2 (unsigned char *dest, unsigned long *destLen, + const unsigned char *source, unsigned long *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 */ + +/* +Z_EXTERN gzFile Z_EXPORT gzopen(const char *path, const char *mode); + + Open the gzip (.gz) file at path for reading and decompressing, or + compressing and 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. +*/ + +Z_EXTERN gzFile Z_EXPORT gzdopen(int fd, const char *mode); +/* + Associate 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). +*/ + +Z_EXTERN int Z_EXPORT gzbuffer(gzFile file, unsigned size); +/* + Set the internal buffer size used by this library's functions for file to + size. 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. +*/ + +Z_EXTERN int Z_EXPORT gzsetparams(gzFile file, int level, int strategy); +/* + Dynamically update the compression level and strategy for file. See the + description of deflateInit2 for the meaning of these parameters. Previously + provided data is flushed before applying the parameter changes. + + 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. +*/ + +Z_EXTERN int Z_EXPORT gzread(gzFile file, void *buf, unsigned len); +/* + Read and decompress up to len uncompressed bytes from file into buf. 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. +*/ + +Z_EXTERN size_t Z_EXPORT gzfread (void *buf, size_t size, size_t nitems, gzFile file); +/* + Read and decompress up to nitems items of size size from file into 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 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 nevertheless 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, resetting and retrying on end-of-file, when size is not 1. +*/ + +Z_EXTERN int Z_EXPORT gzwrite(gzFile file, void const *buf, unsigned len); +/* + Compress and write the len uncompressed bytes at buf to file. gzwrite + returns the number of uncompressed bytes written or 0 in case of error. +*/ + +Z_EXTERN size_t Z_EXPORT gzfwrite(void const *buf, size_t size, size_t nitems, gzFile file); +/* + Compress and write nitems items of size size from buf to file, duplicating + the interface of stdio's fwrite(), with size_t request and return types. + + 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 size_t, then nothing is written, zero + is returned, and the error state is set to Z_STREAM_ERROR. +*/ + +Z_EXTERN int Z_EXPORTVA gzprintf(gzFile file, const char *format, ...); +/* + Convert, format, compress, and write the arguments (...) to file under + control of the string format, 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(). +*/ + +Z_EXTERN int Z_EXPORT gzputs(gzFile file, const char *s); +/* + Compress and write the given null-terminated string s to file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +Z_EXTERN char * Z_EXPORT gzgets(gzFile file, char *buf, int len); +/* + Read and decompress bytes from file into buf, until len-1 characters are + read, or until 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 + is one, the string is terminated with a null character. If no characters + are read due to an end-of-file or len is less than one, 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. +*/ + +Z_EXTERN int Z_EXPORT gzputc(gzFile file, int c); +/* + Compress and write c, converted to an unsigned char, into file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +Z_EXTERN int Z_EXPORT gzgetc(gzFile file); +/* + Read and decompress one byte from 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. +*/ + +Z_EXTERN int Z_EXPORT gzungetc(int c, gzFile file); +/* + Push c back onto the stream for file to be read as the first character on + the next read. At least one character of push-back is always 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(). +*/ + +Z_EXTERN int Z_EXPORT gzflush(gzFile file, int flush); +/* + Flush all pending output to 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. +*/ + +/* +Z_EXTERN z_off_t Z_EXPORT gzseek (gzFile file, z_off_t offset, int whence); + + Set the starting position to offset relative to whence for the next gzread + or gzwrite on 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. +*/ + +Z_EXTERN int Z_EXPORT gzrewind(gzFile file); +/* + Rewind file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET). +*/ + +/* +Z_EXTERN z_off_t Z_EXPORT gztell(gzFile file); + + Return the starting position for the next gzread or gzwrite on 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) +*/ + +/* +Z_EXTERN z_off_t Z_EXPORT gzoffset(gzFile file); + + Return the current compressed (actual) read or write offset of file. 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. +*/ + +Z_EXTERN int Z_EXPORT gzeof(gzFile file); +/* + Return true (1) if the end-of-file indicator for file 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. +*/ + +Z_EXTERN int Z_EXPORT gzdirect(gzFile file); +/* + Return 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.) +*/ + +Z_EXTERN int Z_EXPORT gzclose(gzFile file); +/* + Flush all pending output for file, if necessary, close file and + deallocate 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. +*/ + +Z_EXTERN int Z_EXPORT gzclose_r(gzFile file); +Z_EXTERN int Z_EXPORT gzclose_w(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. +*/ + +Z_EXTERN const char * Z_EXPORT gzerror(gzFile file, int *errnum); +/* + Return the error message for the last error which occurred on 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. +*/ + +Z_EXTERN void Z_EXPORT gzclearerr(gzFile file); +/* + Clear 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 + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +Z_EXTERN unsigned long Z_EXPORT adler32(unsigned long adler, const unsigned char *buf, unsigned int len); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. An Adler-32 value is in the range of a 32-bit + unsigned integer. 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: + + uint32_t adler = adler32(0L, NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +Z_EXTERN unsigned long Z_EXPORT adler32_z(unsigned long adler, const unsigned char *buf, size_t len); +/* + Same as adler32(), but with a size_t length. +*/ + +/* +Z_EXTERN unsigned long Z_EXPORT adler32_combine(unsigned long adler1, unsigned long 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. +*/ + +Z_EXTERN unsigned long Z_EXPORT crc32(unsigned long crc, const unsigned char *buf, unsigned int len); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer. + 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: + + uint32_t crc = crc32(0L, NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +Z_EXTERN unsigned long Z_EXPORT crc32_z(unsigned long crc, const unsigned char *buf, size_t len); +/* + Same as crc32(), but with a size_t length. +*/ + +/* +Z_EXTERN unsigned long Z_EXPORT crc32_combine(unsigned long crc1, unsigned long crc2, z_off64_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. +*/ + +/* +Z_EXTERN void Z_EXPORT crc32_combine_gen(uint32_t op[32], z_off_t len2); + + Generate the operator op corresponding to length len2, to be used with + crc32_combine_op(). op must have room for 32 z_crc_t values. (32 is the + number of bits in the CRC.) +*/ + +Z_EXTERN uint32_t Z_EXPORT crc32_combine_op(uint32_t crc1, uint32_t crc2, + const uint32_t *op); +/* + Give the same result as crc32_combine(), using op in place of len2. op is + is generated from len2 by crc32_combine_gen(). This will be faster than + crc32_combine() if the generated op is used many times. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +Z_EXTERN int Z_EXPORT deflateInit_(z_stream *strm, int level, const char *version, int stream_size); +Z_EXTERN int Z_EXPORT inflateInit_(z_stream *strm, const char *version, int stream_size); +Z_EXTERN int Z_EXPORT deflateInit2_(z_stream *strm, int level, int method, int windowBits, int memLevel, + int strategy, const char *version, int stream_size); +Z_EXTERN int Z_EXPORT inflateInit2_(z_stream *strm, int windowBits, const char *version, int stream_size); +Z_EXTERN int Z_EXPORT inflateBackInit_(z_stream *strm, int windowBits, unsigned char *window, + const char *version, int stream_size); +#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)) + + +#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; +}; +Z_EXTERN int Z_EXPORT gzgetc_(gzFile file); /* backward compatibility */ +# define gzgetc(g) ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) + +/* 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 + Z_EXTERN gzFile Z_EXPORT gzopen64(const char *, const char *); + Z_EXTERN z_off64_t Z_EXPORT gzseek64(gzFile, z_off64_t, int); + Z_EXTERN z_off64_t Z_EXPORT gztell64(gzFile); + Z_EXTERN z_off64_t Z_EXPORT gzoffset64(gzFile); + Z_EXTERN unsigned long Z_EXPORT adler32_combine64(unsigned long, unsigned long, z_off64_t); + Z_EXTERN unsigned long Z_EXPORT crc32_combine64(unsigned long, unsigned long, z_off64_t); + Z_EXTERN void Z_EXPORT crc32_combine_gen64(uint32_t *op, z_off64_t); +#endif +#endif + +#if !defined(Z_INTERNAL) && defined(Z_WANT64) +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# define crc32_combine_gen crc32_combine_gen64 +# ifndef Z_LARGE64 + Z_EXTERN gzFile Z_EXPORT gzopen64(const char *, const char *); + Z_EXTERN z_off_t Z_EXPORT gzseek64(gzFile, z_off_t, int); + Z_EXTERN z_off_t Z_EXPORT gztell64(gzFile); + Z_EXTERN z_off_t Z_EXPORT gzoffset64(gzFile); + Z_EXTERN unsigned long Z_EXPORT adler32_combine64(unsigned long, unsigned long, z_off_t); + Z_EXTERN unsigned long Z_EXPORT crc32_combine64(unsigned long, unsigned long, z_off_t); + Z_EXTERN void Z_EXPORT crc32_combine_gen64(uint32_t *op, z_off64_t); +# endif +#else + Z_EXTERN gzFile Z_EXPORT gzopen(const char *, const char *); + Z_EXTERN z_off_t Z_EXPORT gzseek(gzFile, z_off_t, int); + Z_EXTERN z_off_t Z_EXPORT gztell(gzFile); + Z_EXTERN z_off_t Z_EXPORT gzoffset(gzFile); + Z_EXTERN unsigned long Z_EXPORT adler32_combine(unsigned long, unsigned long, z_off_t); + Z_EXTERN unsigned long Z_EXPORT crc32_combine(unsigned long, unsigned long, z_off_t); + Z_EXTERN void Z_EXPORT crc32_combine_gen(uint32_t *op, z_off_t); +#endif + +/* undocumented functions */ +Z_EXTERN const char * Z_EXPORT zError (int); +Z_EXTERN int Z_EXPORT inflateSyncPoint (z_stream *); +Z_EXTERN const uint32_t * Z_EXPORT get_crc_table (void); +Z_EXTERN int Z_EXPORT inflateUndermine (z_stream *, int); +Z_EXTERN int Z_EXPORT inflateValidate (z_stream *, int); +Z_EXTERN unsigned long Z_EXPORT inflateCodesUsed (z_stream *); +Z_EXTERN int Z_EXPORT inflateResetKeep (z_stream *); +Z_EXTERN int Z_EXPORT deflateResetKeep (z_stream *); + +#ifndef Z_SOLO +#if defined(_WIN32) + Z_EXTERN gzFile Z_EXPORT gzopen_w(const wchar_t *path, const char *mode); +#endif +Z_EXTERN int Z_EXPORTVA gzvprintf(gzFile file, const char *format, va_list va); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H_ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-config-version.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-config-version.cmake new file mode 100644 index 0000000..400ea58 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-config-version.cmake @@ -0,0 +1,70 @@ +# This is a basic version file for the Config-mode of find_package(). +# It is used by write_basic_package_version_file() as input file for configure_file() +# to create a version-file which can be installed along a config.cmake file. +# +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, +# but only if the requested major version is the same as the current one. +# The variable CVF_VERSION must be set before calling configure_file(). + + +set(PACKAGE_VERSION "2.5.0") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + + if("2.5.0" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") + if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0) + string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}") + endif() + else() + set(CVF_VERSION_MAJOR "2.5.0") + endif() + + if(PACKAGE_FIND_VERSION_RANGE) + # both endpoints of the range must have the expected major version + math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1") + if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR + AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + else() + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + + +# if the installed project requested no architecture check, don't perform the check +if("FALSE") + return() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-config.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-config.cmake new file mode 100644 index 0000000..36a0131 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-config.cmake @@ -0,0 +1,99 @@ +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2019 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. +# +if(NOT _expat_config_included) + # Protect against multiple inclusion + set(_expat_config_included TRUE) + + +include("${CMAKE_CURRENT_LIST_DIR}/expat.cmake") + + +####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### +####### Any changes to this file will be overwritten by the next CMake run #### +####### The input file was expat-config.cmake.in ######## + +get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) + +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +#################################################################################### + +# +# Supported components +# +macro(expat_register_component _NAME _AVAILABE) + set(expat_${_NAME}_FOUND ${_AVAILABE}) +endmacro() + +expat_register_component(attr_info OFF) +expat_register_component(dtd ON) +expat_register_component(large_size OFF) +expat_register_component(min_size OFF) +expat_register_component(ns ON) + +if(1024) + expat_register_component(context_bytes ON) +else() + expat_register_component(context_bytes OFF) +endif() + +if("char" STREQUAL "char") + expat_register_component(char ON) + expat_register_component(ushort OFF) + expat_register_component(wchar_t OFF) +elseif("char" STREQUAL "ushort") + expat_register_component(char OFF) + expat_register_component(ushort ON) + expat_register_component(wchar_t OFF) +elseif("char" STREQUAL "wchar_t") + expat_register_component(char OFF) + expat_register_component(ushort OFF) + expat_register_component(wchar_t ON) +endif() + +check_required_components(expat) + + +endif(NOT _expat_config_included) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-noconfig.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-noconfig.cmake new file mode 100644 index 0000000..9d2ef4f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat-noconfig.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "NoConfig". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "expat::expat" for configuration "NoConfig" +set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(expat::expat PROPERTIES + IMPORTED_IMPLIB_NOCONFIG "${_IMPORT_PREFIX}/lib/libexpat.dll.a" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/bin/libexpat-1.dll" + ) + +list(APPEND _cmake_import_check_targets expat::expat ) +list(APPEND _cmake_import_check_files_for_expat::expat "${_IMPORT_PREFIX}/lib/libexpat.dll.a" "${_IMPORT_PREFIX}/bin/libexpat-1.dll" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat.cmake new file mode 100644 index 0000000..5eb47b9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/expat-2.5.0/expat.cmake @@ -0,0 +1,107 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) + message(FATAL_ERROR "CMake >= 2.8.0 required") +endif() +if(CMAKE_VERSION VERSION_LESS "2.8.3") + message(FATAL_ERROR "CMake >= 2.8.3 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.8.3...3.22) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_cmake_targets_defined "") +set(_cmake_targets_not_defined "") +set(_cmake_expected_targets "") +foreach(_cmake_expected_target IN ITEMS expat::expat) + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") + if(TARGET "${_cmake_expected_target}") + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") + else() + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") + endif() +endforeach() +unset(_cmake_expected_target) +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) + unset(_cmake_targets_defined) + unset(_cmake_targets_not_defined) + unset(_cmake_expected_targets) + unset(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT _cmake_targets_defined STREQUAL "") + string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") + string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") +endif() +unset(_cmake_targets_defined) +unset(_cmake_targets_not_defined) +unset(_cmake_expected_targets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target expat::expat +add_library(expat::expat SHARED IMPORTED) + +set_target_properties(expat::expat PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "m" +) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Load information for each installed configuration. +file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/expat-*.cmake") +foreach(_cmake_config_file IN LISTS _cmake_config_files) + include("${_cmake_config_file}") +endforeach() +unset(_cmake_config_file) +unset(_cmake_config_files) + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(_cmake_target IN LISTS _cmake_import_check_targets) + foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}") + if(NOT EXISTS "${_cmake_file}") + message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file + \"${_cmake_file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_cmake_file) + unset("_cmake_import_check_files_for_${_cmake_target}") +endforeach() +unset(_cmake_target) +unset(_cmake_import_check_targets) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/harfbuzz/harfbuzz-config.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/harfbuzz/harfbuzz-config.cmake new file mode 100644 index 0000000..ed52848 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/harfbuzz/harfbuzz-config.cmake @@ -0,0 +1,86 @@ +# Set these variables so that the `${prefix}/lib` expands to something we can +# remove. +set(_harfbuzz_remove_string "REMOVE_ME") +set(exec_prefix "${_harfbuzz_remove_string}") +set(prefix "${_harfbuzz_remove_string}") + +# Compute the installation prefix by stripping components from our current +# location. +get_filename_component(_harfbuzz_prefix "${CMAKE_CURRENT_LIST_DIR}" DIRECTORY) +get_filename_component(_harfbuzz_prefix "${_harfbuzz_prefix}" DIRECTORY) +set(_harfbuzz_libdir "${prefix}/lib") +string(REPLACE "${_harfbuzz_remove_string}/" "" _harfbuzz_libdir "${_harfbuzz_libdir}") +set(_harfbuzz_libdir_iter "${_harfbuzz_libdir}") +while (_harfbuzz_libdir_iter) + set(_harfbuzz_libdir_prev_iter "${_harfbuzz_libdir_iter}") + get_filename_component(_harfbuzz_libdir_iter "${_harfbuzz_libdir_iter}" DIRECTORY) + if (_harfbuzz_libdir_prev_iter STREQUAL _harfbuzz_libdir_iter) + break() + endif () + get_filename_component(_harfbuzz_prefix "${_harfbuzz_prefix}" DIRECTORY) +endwhile () +unset(_harfbuzz_libdir_iter) + +# Get the include subdir. +set(_harfbuzz_includedir "${prefix}/include") +string(REPLACE "${_harfbuzz_remove_string}/" "" _harfbuzz_includedir "${_harfbuzz_includedir}") + +# Extract version information from libtool. +set(_harfbuzz_version_info "50301:0:50301") +string(REPLACE ":" ";" _harfbuzz_version_info "${_harfbuzz_version_info}") +list(GET _harfbuzz_version_info 0 + _harfbuzz_current) +list(GET _harfbuzz_version_info 1 + _harfbuzz_revision) +list(GET _harfbuzz_version_info 2 + _harfbuzz_age) +unset(_harfbuzz_version_info) + +if (APPLE) + set(_harfbuzz_lib_suffix ".0${CMAKE_SHARED_LIBRARY_SUFFIX}") +elseif (UNIX) + set(_harfbuzz_lib_suffix "${CMAKE_SHARED_LIBRARY_SUFFIX}.0.${_harfbuzz_current}.${_harfbuzz_revision}") +else () + # Unsupported. + set(harfbuzz_FOUND 0) +endif () + +# Add the libraries. +add_library(harfbuzz::harfbuzz SHARED IMPORTED) +set_target_properties(harfbuzz::harfbuzz PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz" + IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz${_harfbuzz_lib_suffix}") + +add_library(harfbuzz::icu SHARED IMPORTED) +set_target_properties(harfbuzz::icu PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz" + INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz" + IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz-icu${_harfbuzz_lib_suffix}") + +add_library(harfbuzz::subset SHARED IMPORTED) +set_target_properties(harfbuzz::subset PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz" + INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz" + IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz-subset${_harfbuzz_lib_suffix}") + +# Only add the gobject library if it was built. +set(_harfbuzz_have_gobject "true") +if (_harfbuzz_have_gobject) + add_library(harfbuzz::gobject SHARED IMPORTED) + set_target_properties(harfbuzz::gobject PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz" + INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz" + IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz-gobject${_harfbuzz_lib_suffix}") +endif () + +# Clean out variables we used in our scope. +unset(_harfbuzz_lib_suffix) +unset(_harfbuzz_current) +unset(_harfbuzz_revision) +unset(_harfbuzz_age) +unset(_harfbuzz_includedir) +unset(_harfbuzz_libdir) +unset(_harfbuzz_prefix) +unset(exec_prefix) +unset(prefix) +unset(_harfbuzz_remove_string) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/libxml2/libxml2-config.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/libxml2/libxml2-config.cmake new file mode 100644 index 0000000..906a7c7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/libxml2/libxml2-config.cmake @@ -0,0 +1,115 @@ +# libxml2-config.cmake +# -------------------- +# +# Libxml2 cmake module. +# This module sets the following variables: +# +# :: +# +# LIBXML2_INCLUDE_DIR - Directory where LibXml2 headers are located. +# LIBXML2_INCLUDE_DIRS - list of the include directories needed to use LibXml2. +# LIBXML2_LIBRARY - path to the LibXml2 library. +# LIBXML2_LIBRARIES - xml2 libraries to link against. +# LIBXML2_DEFINITIONS - the compiler switches required for using LibXml2. +# LIBXML2_VERSION_MAJOR - The major version of libxml2. +# LIBXML2_VERSION_MINOR - The minor version of libxml2. +# LIBXML2_VERSION_PATCH - The patch version of libxml2. +# LIBXML2_VERSION_STRING - version number as a string (ex: "2.3.4") +# LIBXML2_MODULES - whether libxml2 has dso support +# LIBXML2_XMLLINT_EXECUTABLE - path to the XML checking tool xmllint coming with LibXml2 +# +# The following targets are defined: +# +# LibXml2::LibXml2 - the LibXml2 library +# LibXml2::xmllint - the xmllint command-line executable + +get_filename_component(_libxml2_rootdir ${CMAKE_CURRENT_LIST_DIR}/../../../ ABSOLUTE) + +set(LIBXML2_VERSION_MAJOR 2) +set(LIBXML2_VERSION_MINOR 10) +set(LIBXML2_VERSION_MICRO 3) +set(LIBXML2_VERSION_STRING "2.10.3") +set(LIBXML2_DEFINITIONS "") +set(LIBXML2_INSTALL_PREFIX ${_libxml2_rootdir}) +set(LIBXML2_INCLUDE_DIR ${_libxml2_rootdir}/include/libxml2) +set(LIBXML2_LIBRARY_DIR ${_libxml2_rootdir}/lib) + +find_library(LIBXML2_LIBRARY NAMES xml2 HINTS ${LIBXML2_LIBRARY_DIR} NO_DEFAULT_PATH) +find_program(LIBXML2_XMLCATALOG_EXECUTABLE NAMES xmlcatalog HINTS ${_libxml2_rootdir}/bin NO_DEFAULT_PATH) +find_program(LIBXML2_XMLLINT_EXECUTABLE NAMES xmllint HINTS ${_libxml2_rootdir}/bin NO_DEFAULT_PATH) + +set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY}) +set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR}) +unset(LIBXML2_INTERFACE_LINK_LIBRARIES) + +include(CMakeFindDependencyMacro) + +set(LIBXML2_WITH_ICONV 0) +set(LIBXML2_WITH_THREADS 0) +set(LIBXML2_WITH_ICU 0) +set(LIBXML2_WITH_LZMA 0) +set(LIBXML2_WITH_ZLIB 1) + +if(LIBXML2_WITH_ICONV) + find_dependency(Iconv) + list(APPEND LIBXML2_LIBRARIES ${Iconv_LIBRARIES}) + list(APPEND LIBXML2_INCLUDE_DIRS ${Iconv_INCLUDE_DIRS}) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "Iconv::Iconv") +endif() + +if(LIBXML2_WITH_THREADS) + find_dependency(Threads) + list(APPEND LIBXML2_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$") +endif() + +if(LIBXML2_WITH_ICU) + find_dependency(ICU COMPONENTS data i18n uc) + list(APPEND LIBXML2_LIBRARIES ${ICU_LIBRARIES}) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$;\$;\$") +endif() + +if(LIBXML2_WITH_LZMA) + find_dependency(LibLZMA) + list(APPEND LIBXML2_LIBRARIES ${LIBLZMA_LIBRARIES}) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$") +endif() + +if(LIBXML2_WITH_ZLIB) + find_dependency(ZLIB) + list(APPEND LIBXML2_LIBRARIES ${ZLIB_LIBRARIES}) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$") +endif() + +if(UNIX) + list(APPEND LIBXML2_LIBRARIES m) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$") +endif() + +if(WIN32) + list(APPEND LIBXML2_LIBRARIES ws2_32) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$") +endif() + +# whether libxml2 has dso support +set(LIBXML2_MODULES 0) + +mark_as_advanced(LIBXML2_LIBRARY LIBXML2_XMLCATALOG_EXECUTABLE LIBXML2_XMLLINT_EXECUTABLE) + +if(NOT TARGET LibXml2::LibXml2 AND DEFINED LIBXML2_LIBRARY AND DEFINED LIBXML2_INCLUDE_DIRS) + add_library(LibXml2::LibXml2 UNKNOWN IMPORTED) + set_target_properties(LibXml2::LibXml2 PROPERTIES IMPORTED_LOCATION "${LIBXML2_LIBRARY}") + set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}") + set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIRS}") + set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_LINK_LIBRARIES "${LIBXML2_INTERFACE_LINK_LIBRARIES}") +endif() + +if(NOT TARGET LibXml2::xmlcatalog AND DEFINED LIBXML2_XMLCATALOG_EXECUTABLE) + add_executable(LibXml2::xmlcatalog IMPORTED) + set_target_properties(LibXml2::xmlcatalog PROPERTIES IMPORTED_LOCATION "${LIBXML2_XMLCATALOG_EXECUTABLE}") +endif() + +if(NOT TARGET LibXml2::xmllint AND DEFINED LIBXML2_XMLLINT_EXECUTABLE) + add_executable(LibXml2::xmllint IMPORTED) + set_target_properties(LibXml2::xmllint PROPERTIES IMPORTED_LOCATION "${LIBXML2_XMLLINT_EXECUTABLE}") +endif() diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegConfig.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegConfig.cmake new file mode 100644 index 0000000..43b7ea7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegConfig.cmake @@ -0,0 +1,28 @@ + +####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### +####### Any changes to this file will be overwritten by the next CMake run #### +####### The input file was Config.cmake.in ######## + +get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) + +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +#################################################################################### + +include("${CMAKE_CURRENT_LIST_DIR}/mozjpegTargets.cmake") +check_required_components("mozjpeg") diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegConfigVersion.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegConfigVersion.cmake new file mode 100644 index 0000000..2371582 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegConfigVersion.cmake @@ -0,0 +1,48 @@ +# This is a basic version file for the Config-mode of find_package(). +# It is used by write_basic_package_version_file() as input file for configure_file() +# to create a version-file which can be installed along a config.cmake file. +# +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version. +# The variable CVF_VERSION must be set before calling configure_file(). + +set(PACKAGE_VERSION "4.1.1") + +if (PACKAGE_FIND_VERSION_RANGE) + # Package version must be in the requested version range + if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN) + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + endif() +else() + if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + + +# if the installed project requested no architecture check, don't perform the check +if("FALSE") + return() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegTargets-release.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegTargets-release.cmake new file mode 100644 index 0000000..643c1cf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegTargets-release.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Release". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "mozjpeg::jpeg" for configuration "Release" +set_property(TARGET mozjpeg::jpeg APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(mozjpeg::jpeg PROPERTIES + IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/libjpeg.dll.a" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/libjpeg-62.dll" + ) + +list(APPEND _cmake_import_check_targets mozjpeg::jpeg ) +list(APPEND _cmake_import_check_files_for_mozjpeg::jpeg "${_IMPORT_PREFIX}/lib/libjpeg.dll.a" "${_IMPORT_PREFIX}/bin/libjpeg-62.dll" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegTargets.cmake b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegTargets.cmake new file mode 100644 index 0000000..ee5b290 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/cmake/mozjpeg/mozjpegTargets.cmake @@ -0,0 +1,102 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) + message(FATAL_ERROR "CMake >= 2.8.0 required") +endif() +if(CMAKE_VERSION VERSION_LESS "2.8.3") + message(FATAL_ERROR "CMake >= 2.8.3 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.8.3...3.22) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_cmake_targets_defined "") +set(_cmake_targets_not_defined "") +set(_cmake_expected_targets "") +foreach(_cmake_expected_target IN ITEMS mozjpeg::jpeg) + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") + if(TARGET "${_cmake_expected_target}") + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") + else() + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") + endif() +endforeach() +unset(_cmake_expected_target) +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) + unset(_cmake_targets_defined) + unset(_cmake_targets_not_defined) + unset(_cmake_expected_targets) + unset(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT _cmake_targets_defined STREQUAL "") + string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") + string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") +endif() +unset(_cmake_targets_defined) +unset(_cmake_targets_not_defined) +unset(_cmake_expected_targets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target mozjpeg::jpeg +add_library(mozjpeg::jpeg SHARED IMPORTED) + +set_target_properties(mozjpeg::jpeg PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" +) + +# Load information for each installed configuration. +file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/mozjpegTargets-*.cmake") +foreach(_cmake_config_file IN LISTS _cmake_config_files) + include("${_cmake_config_file}") +endforeach() +unset(_cmake_config_file) +unset(_cmake_config_files) + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(_cmake_target IN LISTS _cmake_import_check_targets) + foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}") + if(NOT EXISTS "${_cmake_file}") + message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file + \"${_cmake_file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_cmake_file) + unset("_cmake_import_check_files_for_${_cmake_target}") +endforeach() +unset(_cmake_target) +unset(_cmake_import_check_targets) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/glib-2.0/include/glibconfig.h b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/glib-2.0/include/glibconfig.h new file mode 100644 index 0000000..b172e32 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/glib-2.0/include/glibconfig.h @@ -0,0 +1,210 @@ +/* glibconfig.h + * + * This is a generated file. Please modify 'glibconfig.h.in' + */ + +#ifndef __GLIBCONFIG_H__ +#define __GLIBCONFIG_H__ + +#include + +#include +#include +/* #undef GLIB_HAVE_ALLOCA_H */ + +/* Specifies that GLib's g_print*() functions wrap the + * system printf functions. This is useful to know, for example, + * when using glibc's register_printf_function(). + */ +#undef GLIB_USING_SYSTEM_PRINTF + +/* #undef GLIB_STATIC_COMPILATION */ +/* #undef GOBJECT_STATIC_COMPILATION */ +/* #undef G_INTL_STATIC_COMPILATION */ +/* #undef FFI_STATIC_BUILD */ + +G_BEGIN_DECLS + +#define G_MINFLOAT FLT_MIN +#define G_MAXFLOAT FLT_MAX +#define G_MINDOUBLE DBL_MIN +#define G_MAXDOUBLE DBL_MAX +#define G_MINSHORT SHRT_MIN +#define G_MAXSHORT SHRT_MAX +#define G_MAXUSHORT USHRT_MAX +#define G_MININT INT_MIN +#define G_MAXINT INT_MAX +#define G_MAXUINT UINT_MAX +#define G_MINLONG LONG_MIN +#define G_MAXLONG LONG_MAX +#define G_MAXULONG ULONG_MAX + +typedef signed char gint8; +typedef unsigned char guint8; + +typedef signed short gint16; +typedef unsigned short guint16; + +#define G_GINT16_MODIFIER "h" +#define G_GINT16_FORMAT "hi" +#define G_GUINT16_FORMAT "hu" + + +typedef signed int gint32; +typedef unsigned int guint32; + +#define G_GINT32_MODIFIER "" +#define G_GINT32_FORMAT "i" +#define G_GUINT32_FORMAT "u" + + +#define G_HAVE_GINT64 1 /* deprecated, always true */ + +G_GNUC_EXTENSION typedef signed long long gint64; +G_GNUC_EXTENSION typedef unsigned long long guint64; + +#define G_GINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##LL)) +#define G_GUINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##ULL)) + +#define G_GINT64_MODIFIER "ll" +#define G_GINT64_FORMAT "lli" +#define G_GUINT64_FORMAT "llu" + + +#define GLIB_SIZEOF_VOID_P 8 +#define GLIB_SIZEOF_LONG 4 +#define GLIB_SIZEOF_SIZE_T 8 +#define GLIB_SIZEOF_SSIZE_T 8 + +typedef signed long long gssize; +typedef unsigned long long gsize; +#define G_GSIZE_MODIFIER "ll" +#define G_GSSIZE_MODIFIER "ll" +#define G_GSIZE_FORMAT "llu" +#define G_GSSIZE_FORMAT "lli" + +#define G_MAXSIZE G_MAXUINT64 +#define G_MINSSIZE G_MININT64 +#define G_MAXSSIZE G_MAXINT64 + +typedef gint64 goffset; +#define G_MINOFFSET G_MININT64 +#define G_MAXOFFSET G_MAXINT64 + +#define G_GOFFSET_MODIFIER G_GINT64_MODIFIER +#define G_GOFFSET_FORMAT G_GINT64_FORMAT +#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val) + +#define G_POLLFD_FORMAT "%#llx" + +#define GPOINTER_TO_INT(p) ((gint) (gint64) (p)) +#define GPOINTER_TO_UINT(p) ((guint) (guint64) (p)) + +#define GINT_TO_POINTER(i) ((gpointer) (gint64) (i)) +#define GUINT_TO_POINTER(u) ((gpointer) (guint64) (u)) + +typedef signed long long gintptr; +typedef unsigned long long guintptr; + +#define G_GINTPTR_MODIFIER "ll" +#define G_GINTPTR_FORMAT "lli" +#define G_GUINTPTR_FORMAT "llu" + +#define GLIB_MAJOR_VERSION 2 +#define GLIB_MINOR_VERSION 74 +#define GLIB_MICRO_VERSION 1 + +#define G_OS_WIN32 +#define G_PLATFORM_WIN32 + +#define G_VA_COPY va_copy + +#define G_HAVE_ISO_VARARGS 1 + +/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi + * is passed ISO vararg support is turned off, and there is no work + * around to turn it on, so we unconditionally turn it off. + */ +#if __GNUC__ == 2 && __GNUC_MINOR__ == 95 +# undef G_HAVE_ISO_VARARGS +#endif + +#define G_HAVE_GROWING_STACK 0 +#define G_HAVE_GNUC_VISIBILITY 1 + +#ifndef _MSC_VER +# define G_HAVE_GNUC_VARARGS 1 +#endif + +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define G_GNUC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define G_GNUC_INTERNAL __hidden +#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY) +#define G_GNUC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define G_GNUC_INTERNAL +#endif + +#define G_THREADS_ENABLED +#define G_THREADS_IMPL_WIN32 + +#define G_ATOMIC_LOCK_FREE + +#define GINT16_TO_LE(val) ((gint16) (val)) +#define GUINT16_TO_LE(val) ((guint16) (val)) +#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val)) +#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val)) + +#define GINT32_TO_LE(val) ((gint32) (val)) +#define GUINT32_TO_LE(val) ((guint32) (val)) +#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val)) +#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val)) + +#define GINT64_TO_LE(val) ((gint64) (val)) +#define GUINT64_TO_LE(val) ((guint64) (val)) +#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val)) +#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val)) + +#define GLONG_TO_LE(val) ((glong) GINT32_TO_LE (val)) +#define GULONG_TO_LE(val) ((gulong) GUINT32_TO_LE (val)) +#define GLONG_TO_BE(val) ((glong) GINT32_TO_BE (val)) +#define GULONG_TO_BE(val) ((gulong) GUINT32_TO_BE (val)) +#define GINT_TO_LE(val) ((gint) GINT32_TO_LE (val)) +#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val)) +#define GINT_TO_BE(val) ((gint) GINT32_TO_BE (val)) +#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val)) +#define GSIZE_TO_LE(val) ((gsize) GUINT64_TO_LE (val)) +#define GSSIZE_TO_LE(val) ((gssize) GINT64_TO_LE (val)) +#define GSIZE_TO_BE(val) ((gsize) GUINT64_TO_BE (val)) +#define GSSIZE_TO_BE(val) ((gssize) GINT64_TO_BE (val)) +#define G_BYTE_ORDER G_LITTLE_ENDIAN + +#define GLIB_SYSDEF_POLLIN =1 +#define GLIB_SYSDEF_POLLOUT =4 +#define GLIB_SYSDEF_POLLPRI =2 +#define GLIB_SYSDEF_POLLHUP =16 +#define GLIB_SYSDEF_POLLERR =8 +#define GLIB_SYSDEF_POLLNVAL =32 + +#define G_MODULE_SUFFIX "dll" + +typedef void* GPid; +#define G_PID_FORMAT "p" + +#define GLIB_SYSDEF_AF_UNIX 1 +#define GLIB_SYSDEF_AF_INET 2 +#define GLIB_SYSDEF_AF_INET6 23 + +#define GLIB_SYSDEF_MSG_OOB 1 +#define GLIB_SYSDEF_MSG_PEEK 2 +#define GLIB_SYSDEF_MSG_DONTROUTE 4 + +#define G_DIR_SEPARATOR '\\' +#define G_DIR_SEPARATOR_S "\\" +#define G_SEARCHPATH_SEPARATOR ';' +#define G_SEARCHPATH_SEPARATOR_S ";" + +G_END_DECLS + +#endif /* __GLIBCONFIG_H__ */ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.a new file mode 100644 index 0000000..51770b5 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.def new file mode 100644 index 0000000..794bb8e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.def @@ -0,0 +1,81 @@ +; +; Definition file of libaom.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libaom.dll" +EXPORTS +aom_codec_av1_cx +aom_codec_av1_cx_algo DATA +aom_codec_av1_dx +aom_codec_av1_dx_algo DATA +aom_codec_build_config +aom_codec_control +aom_codec_dec_init_ver +aom_codec_decode +aom_codec_destroy +aom_codec_enc_config_default +aom_codec_enc_config_set +aom_codec_enc_init_ver +aom_codec_encode +aom_codec_err_to_string +aom_codec_error +aom_codec_error_detail +aom_codec_get_caps +aom_codec_get_cx_data +aom_codec_get_frame +aom_codec_get_global_headers +aom_codec_get_preview_frame +aom_codec_get_stream_info +aom_codec_iface_name +aom_codec_peek_stream_info +aom_codec_set_cx_data_buf +aom_codec_set_frame_buffer_functions +aom_codec_set_option +aom_codec_version +aom_codec_version_extra_str +aom_codec_version_str +aom_film_grain_table_append +aom_film_grain_table_free +aom_film_grain_table_write +aom_flat_block_finder_init +aom_flat_block_finder_run +aom_free +aom_img_add_metadata +aom_img_alloc +aom_img_alloc_with_border +aom_img_flip +aom_img_free +aom_img_get_metadata +aom_img_metadata_alloc +aom_img_metadata_array_alloc +aom_img_metadata_array_free +aom_img_metadata_free +aom_img_num_metadata +aom_img_plane_height +aom_img_plane_width +aom_img_remove_metadata +aom_img_set_rect +aom_img_wrap +aom_malloc +aom_noise_model_get_grain_parameters +aom_noise_model_init +aom_noise_model_save_latest +aom_noise_model_update +aom_obu_type_to_string +aom_rb_bytes_read +aom_rb_read_bit +aom_rb_read_literal +aom_rb_read_uvlc +aom_read_obu_header +aom_read_obu_header_and_size +aom_uleb_decode +aom_uleb_encode +aom_uleb_encode_fixed_size +aom_uleb_size_in_bytes +aom_wb_bytes_written +aom_wb_write_bit +aom_wb_write_literal +aom_wb_write_unsigned_literal +av1_add_film_grain +av1_resize_frame420 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.dll.a new file mode 100644 index 0000000..17983a1 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.lib new file mode 100644 index 0000000..17983a1 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libaom.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.def new file mode 100644 index 0000000..b41977e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.def @@ -0,0 +1,2657 @@ +; +; Definition file of libc++.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libc++.dll" +EXPORTS +_Z10asprintf_lPPc8locale_tPKcz +_Z10snprintf_lPcy8locale_tPKcz +_Z11vasprintf_lPPc8locale_tPKcS_ +_Z8strtof_lPKcPPc8locale_t +_Z9strtold_lPKcPPc8locale_t +_ZN10__cxxabiv116__enum_type_infoD0Ev +_ZN10__cxxabiv116__enum_type_infoD1Ev +_ZN10__cxxabiv116__enum_type_infoD2Ev +_ZN10__cxxabiv116__shim_type_infoD0Ev +_ZN10__cxxabiv116__shim_type_infoD1Ev +_ZN10__cxxabiv116__shim_type_infoD2Ev +_ZN10__cxxabiv117__array_type_infoD0Ev +_ZN10__cxxabiv117__array_type_infoD1Ev +_ZN10__cxxabiv117__array_type_infoD2Ev +_ZN10__cxxabiv117__class_type_infoD0Ev +_ZN10__cxxabiv117__class_type_infoD1Ev +_ZN10__cxxabiv117__class_type_infoD2Ev +_ZN10__cxxabiv117__pbase_type_infoD0Ev +_ZN10__cxxabiv117__pbase_type_infoD1Ev +_ZN10__cxxabiv117__pbase_type_infoD2Ev +_ZN10__cxxabiv119__pointer_type_infoD0Ev +_ZN10__cxxabiv119__pointer_type_infoD1Ev +_ZN10__cxxabiv119__pointer_type_infoD2Ev +_ZN10__cxxabiv120__function_type_infoD0Ev +_ZN10__cxxabiv120__function_type_infoD1Ev +_ZN10__cxxabiv120__function_type_infoD2Ev +_ZN10__cxxabiv120__si_class_type_infoD0Ev +_ZN10__cxxabiv120__si_class_type_infoD1Ev +_ZN10__cxxabiv120__si_class_type_infoD2Ev +_ZN10__cxxabiv121__vmi_class_type_infoD0Ev +_ZN10__cxxabiv121__vmi_class_type_infoD1Ev +_ZN10__cxxabiv121__vmi_class_type_infoD2Ev +_ZN10__cxxabiv123__fundamental_type_infoD0Ev +_ZN10__cxxabiv123__fundamental_type_infoD1Ev +_ZN10__cxxabiv123__fundamental_type_infoD2Ev +_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev +_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev +_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev +_ZNK10__cxxabiv116__enum_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNK10__cxxabiv116__shim_type_info5noop1Ev +_ZNK10__cxxabiv116__shim_type_info5noop2Ev +_ZNK10__cxxabiv117__array_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib +_ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib +_ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi +_ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi +_ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i +_ZNK10__cxxabiv117__class_type_info29process_static_type_below_dstEPNS_19__dynamic_cast_infoEPKvi +_ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNK10__cxxabiv117__pbase_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNK10__cxxabiv119__pointer_type_info16can_catch_nestedEPKNS_16__shim_type_infoE +_ZNK10__cxxabiv119__pointer_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNK10__cxxabiv120__function_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib +_ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib +_ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi +_ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib +_ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib +_ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi +_ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNK10__cxxabiv129__pointer_to_member_type_info16can_catch_nestedEPKNS_16__shim_type_infoE +_ZNK10__cxxabiv129__pointer_to_member_type_info9can_catchEPKNS_16__shim_type_infoERPv +_ZNKSt10bad_typeid4whatEv +_ZNKSt11logic_error4whatEv +_ZNKSt12bad_any_cast4whatEv +_ZNKSt12experimental15fundamentals_v112bad_any_cast4whatEv +_ZNKSt13bad_exception4whatEv +_ZNKSt13runtime_error4whatEv +_ZNKSt16nested_exception14rethrow_nestedEv +_ZNKSt18bad_variant_access4whatEv +_ZNKSt19bad_optional_access4whatEv +_ZNKSt20bad_array_new_length4whatEv +_ZNKSt3__110__time_put8__do_putEPcRS1_PK2tmcc +_ZNKSt3__110__time_put8__do_putEPwRS1_PK2tmcc +_ZNKSt3__110error_code7messageEv +_ZNKSt3__110moneypunctIcLb0EE10neg_formatB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE10pos_formatB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE11curr_symbolB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE11do_groupingEv +_ZNKSt3__110moneypunctIcLb0EE11frac_digitsB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE13decimal_pointB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE13do_neg_formatEv +_ZNKSt3__110moneypunctIcLb0EE13do_pos_formatEv +_ZNKSt3__110moneypunctIcLb0EE13negative_signB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE13positive_signB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE13thousands_sepB6v15003Ev +_ZNKSt3__110moneypunctIcLb0EE14do_curr_symbolEv +_ZNKSt3__110moneypunctIcLb0EE14do_frac_digitsEv +_ZNKSt3__110moneypunctIcLb0EE16do_decimal_pointEv +_ZNKSt3__110moneypunctIcLb0EE16do_negative_signEv +_ZNKSt3__110moneypunctIcLb0EE16do_positive_signEv +_ZNKSt3__110moneypunctIcLb0EE16do_thousands_sepEv +_ZNKSt3__110moneypunctIcLb0EE8groupingB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE10neg_formatB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE10pos_formatB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE11curr_symbolB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE11do_groupingEv +_ZNKSt3__110moneypunctIcLb1EE11frac_digitsB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE13decimal_pointB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE13do_neg_formatEv +_ZNKSt3__110moneypunctIcLb1EE13do_pos_formatEv +_ZNKSt3__110moneypunctIcLb1EE13negative_signB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE13positive_signB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE13thousands_sepB6v15003Ev +_ZNKSt3__110moneypunctIcLb1EE14do_curr_symbolEv +_ZNKSt3__110moneypunctIcLb1EE14do_frac_digitsEv +_ZNKSt3__110moneypunctIcLb1EE16do_decimal_pointEv +_ZNKSt3__110moneypunctIcLb1EE16do_negative_signEv +_ZNKSt3__110moneypunctIcLb1EE16do_positive_signEv +_ZNKSt3__110moneypunctIcLb1EE16do_thousands_sepEv +_ZNKSt3__110moneypunctIcLb1EE8groupingB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE10neg_formatB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE10pos_formatB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE11curr_symbolB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE11do_groupingEv +_ZNKSt3__110moneypunctIwLb0EE11frac_digitsB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE13decimal_pointB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE13do_neg_formatEv +_ZNKSt3__110moneypunctIwLb0EE13do_pos_formatEv +_ZNKSt3__110moneypunctIwLb0EE13negative_signB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE13positive_signB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE13thousands_sepB6v15003Ev +_ZNKSt3__110moneypunctIwLb0EE14do_curr_symbolEv +_ZNKSt3__110moneypunctIwLb0EE14do_frac_digitsEv +_ZNKSt3__110moneypunctIwLb0EE16do_decimal_pointEv +_ZNKSt3__110moneypunctIwLb0EE16do_negative_signEv +_ZNKSt3__110moneypunctIwLb0EE16do_positive_signEv +_ZNKSt3__110moneypunctIwLb0EE16do_thousands_sepEv +_ZNKSt3__110moneypunctIwLb0EE8groupingB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE10neg_formatB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE10pos_formatB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE11curr_symbolB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE11do_groupingEv +_ZNKSt3__110moneypunctIwLb1EE11frac_digitsB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE13decimal_pointB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE13do_neg_formatEv +_ZNKSt3__110moneypunctIwLb1EE13do_pos_formatEv +_ZNKSt3__110moneypunctIwLb1EE13negative_signB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE13positive_signB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE13thousands_sepB6v15003Ev +_ZNKSt3__110moneypunctIwLb1EE14do_curr_symbolEv +_ZNKSt3__110moneypunctIwLb1EE14do_frac_digitsEv +_ZNKSt3__110moneypunctIwLb1EE16do_decimal_pointEv +_ZNKSt3__110moneypunctIwLb1EE16do_negative_signEv +_ZNKSt3__110moneypunctIwLb1EE16do_positive_signEv +_ZNKSt3__110moneypunctIwLb1EE16do_thousands_sepEv +_ZNKSt3__110moneypunctIwLb1EE8groupingB6v15003Ev +_ZNKSt3__112bad_weak_ptr4whatEv +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofEPKcyy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13find_first_ofEPKcyy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE16find_last_not_ofEPKcyy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE17find_first_not_ofEPKcyy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE2atEy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcyy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4findEPKcyy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4findEcy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5rfindEPKcyy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5rfindEcy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7compareEPKc +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7compareEyyPKc +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7compareEyyPKcy +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7compareEyyRKS5_yy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE12find_last_ofEPKwyy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE13find_first_ofEPKwyy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE16find_last_not_ofEPKwyy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE17find_first_not_ofEPKwyy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE2atEy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE4copyEPwyy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE4findEPKwyy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE4findEwy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE5rfindEPKwyy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE5rfindEwy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7compareEPKw +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7compareEyyPKw +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7compareEyyPKwy +_ZNKSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7compareEyyRKS5_yy +_ZNKSt3__112ctype_bynameIcE10do_tolowerEPcPKc +_ZNKSt3__112ctype_bynameIcE10do_tolowerEc +_ZNKSt3__112ctype_bynameIcE10do_toupperEPcPKc +_ZNKSt3__112ctype_bynameIcE10do_toupperEc +_ZNKSt3__112ctype_bynameIwE10do_scan_isEtPKwS3_ +_ZNKSt3__112ctype_bynameIwE10do_tolowerEPwPKw +_ZNKSt3__112ctype_bynameIwE10do_tolowerEw +_ZNKSt3__112ctype_bynameIwE10do_toupperEPwPKw +_ZNKSt3__112ctype_bynameIwE10do_toupperEw +_ZNKSt3__112ctype_bynameIwE11do_scan_notEtPKwS3_ +_ZNKSt3__112ctype_bynameIwE5do_isEPKwS3_Pt +_ZNKSt3__112ctype_bynameIwE5do_isEtw +_ZNKSt3__112ctype_bynameIwE8do_widenEPKcS3_Pw +_ZNKSt3__112ctype_bynameIwE8do_widenEc +_ZNKSt3__112ctype_bynameIwE9do_narrowEPKwS3_cPc +_ZNKSt3__112ctype_bynameIwE9do_narrowEwc +_ZNKSt3__112strstreambuf6pcountEv +_ZNKSt3__113basic_filebufIcNS_11char_traitsIcEEE7is_openEv +_ZNKSt3__113basic_istreamIcNS_11char_traitsIcEEE6gcountB6v15003Ev +_ZNKSt3__113basic_istreamIwNS_11char_traitsIwEEE6gcountB6v15003Ev +_ZNKSt3__113random_device7entropyEv +_ZNKSt3__114__codecvt_utf8IDiE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__114__codecvt_utf8IDiE11do_encodingEv +_ZNKSt3__114__codecvt_utf8IDiE13do_max_lengthEv +_ZNKSt3__114__codecvt_utf8IDiE16do_always_noconvEv +_ZNKSt3__114__codecvt_utf8IDiE5do_inER9_MbstatetPKcS5_RS5_PDiS7_RS7_ +_ZNKSt3__114__codecvt_utf8IDiE6do_outER9_MbstatetPKDiS5_RS5_PcS7_RS7_ +_ZNKSt3__114__codecvt_utf8IDiE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__114__codecvt_utf8IDsE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__114__codecvt_utf8IDsE11do_encodingEv +_ZNKSt3__114__codecvt_utf8IDsE13do_max_lengthEv +_ZNKSt3__114__codecvt_utf8IDsE16do_always_noconvEv +_ZNKSt3__114__codecvt_utf8IDsE5do_inER9_MbstatetPKcS5_RS5_PDsS7_RS7_ +_ZNKSt3__114__codecvt_utf8IDsE6do_outER9_MbstatetPKDsS5_RS5_PcS7_RS7_ +_ZNKSt3__114__codecvt_utf8IDsE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__114__codecvt_utf8IwE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__114__codecvt_utf8IwE11do_encodingEv +_ZNKSt3__114__codecvt_utf8IwE13do_max_lengthEv +_ZNKSt3__114__codecvt_utf8IwE16do_always_noconvEv +_ZNKSt3__114__codecvt_utf8IwE5do_inER9_MbstatetPKcS5_RS5_PwS7_RS7_ +_ZNKSt3__114__codecvt_utf8IwE6do_outER9_MbstatetPKwS5_RS5_PcS7_RS7_ +_ZNKSt3__114__codecvt_utf8IwE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__114basic_ifstreamIcNS_11char_traitsIcEEE5rdbufEv +_ZNKSt3__114basic_ifstreamIcNS_11char_traitsIcEEE7is_openEv +_ZNKSt3__114basic_ofstreamIcNS_11char_traitsIcEEE5rdbufEv +_ZNKSt3__114basic_ofstreamIcNS_11char_traitsIcEEE7is_openEv +_ZNKSt3__114collate_bynameIcE10do_compareEPKcS3_S3_S3_ +_ZNKSt3__114collate_bynameIcE12do_transformEPKcS3_ +_ZNKSt3__114collate_bynameIwE10do_compareEPKwS3_S3_S3_ +_ZNKSt3__114collate_bynameIwE12do_transformEPKwS3_ +_ZNKSt3__114error_category10equivalentERKNS_10error_codeEi +_ZNKSt3__114error_category10equivalentEiRKNS_15error_conditionE +_ZNKSt3__114error_category23default_error_conditionEi +_ZNKSt3__115__codecvt_utf16IDiLb0EE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__115__codecvt_utf16IDiLb0EE11do_encodingEv +_ZNKSt3__115__codecvt_utf16IDiLb0EE13do_max_lengthEv +_ZNKSt3__115__codecvt_utf16IDiLb0EE16do_always_noconvEv +_ZNKSt3__115__codecvt_utf16IDiLb0EE5do_inER9_MbstatetPKcS5_RS5_PDiS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDiLb0EE6do_outER9_MbstatetPKDiS5_RS5_PcS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDiLb0EE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__115__codecvt_utf16IDiLb1EE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__115__codecvt_utf16IDiLb1EE11do_encodingEv +_ZNKSt3__115__codecvt_utf16IDiLb1EE13do_max_lengthEv +_ZNKSt3__115__codecvt_utf16IDiLb1EE16do_always_noconvEv +_ZNKSt3__115__codecvt_utf16IDiLb1EE5do_inER9_MbstatetPKcS5_RS5_PDiS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDiLb1EE6do_outER9_MbstatetPKDiS5_RS5_PcS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDiLb1EE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__115__codecvt_utf16IDsLb0EE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__115__codecvt_utf16IDsLb0EE11do_encodingEv +_ZNKSt3__115__codecvt_utf16IDsLb0EE13do_max_lengthEv +_ZNKSt3__115__codecvt_utf16IDsLb0EE16do_always_noconvEv +_ZNKSt3__115__codecvt_utf16IDsLb0EE5do_inER9_MbstatetPKcS5_RS5_PDsS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDsLb0EE6do_outER9_MbstatetPKDsS5_RS5_PcS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDsLb0EE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__115__codecvt_utf16IDsLb1EE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__115__codecvt_utf16IDsLb1EE11do_encodingEv +_ZNKSt3__115__codecvt_utf16IDsLb1EE13do_max_lengthEv +_ZNKSt3__115__codecvt_utf16IDsLb1EE16do_always_noconvEv +_ZNKSt3__115__codecvt_utf16IDsLb1EE5do_inER9_MbstatetPKcS5_RS5_PDsS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDsLb1EE6do_outER9_MbstatetPKDsS5_RS5_PcS7_RS7_ +_ZNKSt3__115__codecvt_utf16IDsLb1EE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__115__codecvt_utf16IwLb0EE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__115__codecvt_utf16IwLb0EE11do_encodingEv +_ZNKSt3__115__codecvt_utf16IwLb0EE13do_max_lengthEv +_ZNKSt3__115__codecvt_utf16IwLb0EE16do_always_noconvEv +_ZNKSt3__115__codecvt_utf16IwLb0EE5do_inER9_MbstatetPKcS5_RS5_PwS7_RS7_ +_ZNKSt3__115__codecvt_utf16IwLb0EE6do_outER9_MbstatetPKwS5_RS5_PcS7_RS7_ +_ZNKSt3__115__codecvt_utf16IwLb0EE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__115__codecvt_utf16IwLb1EE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__115__codecvt_utf16IwLb1EE11do_encodingEv +_ZNKSt3__115__codecvt_utf16IwLb1EE13do_max_lengthEv +_ZNKSt3__115__codecvt_utf16IwLb1EE16do_always_noconvEv +_ZNKSt3__115__codecvt_utf16IwLb1EE5do_inER9_MbstatetPKcS5_RS5_PwS7_RS7_ +_ZNKSt3__115__codecvt_utf16IwLb1EE6do_outER9_MbstatetPKwS5_RS5_PcS7_RS7_ +_ZNKSt3__115__codecvt_utf16IwLb1EE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE4gptrB6v15003Ev +_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE4pptrB6v15003Ev +_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE5ebackB6v15003Ev +_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE5egptrB6v15003Ev +_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE5epptrB6v15003Ev +_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE5pbaseB6v15003Ev +_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE6getlocEv +_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE4gptrB6v15003Ev +_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE4pptrB6v15003Ev +_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE5ebackB6v15003Ev +_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE5egptrB6v15003Ev +_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE5epptrB6v15003Ev +_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE5pbaseB6v15003Ev +_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE6getlocEv +_ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv +_ZNKSt3__115error_condition7messageEv +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13do_date_orderB6v15003Ev +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__XB6v15003Ev +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__cB6v15003Ev +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__rB6v15003Ev +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__xB6v15003Ev +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE7__am_pmB6v15003Ev +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE7__weeksB6v15003Ev +_ZNKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__monthsB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13do_date_orderB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__XB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__cB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__rB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__xB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE7__am_pmB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE7__weeksB6v15003Ev +_ZNKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__monthsB6v15003Ev +_ZNKSt3__117moneypunct_bynameIcLb0EE11do_groupingEv +_ZNKSt3__117moneypunct_bynameIcLb0EE13do_neg_formatEv +_ZNKSt3__117moneypunct_bynameIcLb0EE13do_pos_formatEv +_ZNKSt3__117moneypunct_bynameIcLb0EE14do_curr_symbolEv +_ZNKSt3__117moneypunct_bynameIcLb0EE14do_frac_digitsEv +_ZNKSt3__117moneypunct_bynameIcLb0EE16do_decimal_pointEv +_ZNKSt3__117moneypunct_bynameIcLb0EE16do_negative_signEv +_ZNKSt3__117moneypunct_bynameIcLb0EE16do_positive_signEv +_ZNKSt3__117moneypunct_bynameIcLb0EE16do_thousands_sepEv +_ZNKSt3__117moneypunct_bynameIcLb1EE11do_groupingEv +_ZNKSt3__117moneypunct_bynameIcLb1EE13do_neg_formatEv +_ZNKSt3__117moneypunct_bynameIcLb1EE13do_pos_formatEv +_ZNKSt3__117moneypunct_bynameIcLb1EE14do_curr_symbolEv +_ZNKSt3__117moneypunct_bynameIcLb1EE14do_frac_digitsEv +_ZNKSt3__117moneypunct_bynameIcLb1EE16do_decimal_pointEv +_ZNKSt3__117moneypunct_bynameIcLb1EE16do_negative_signEv +_ZNKSt3__117moneypunct_bynameIcLb1EE16do_positive_signEv +_ZNKSt3__117moneypunct_bynameIcLb1EE16do_thousands_sepEv +_ZNKSt3__117moneypunct_bynameIwLb0EE11do_groupingEv +_ZNKSt3__117moneypunct_bynameIwLb0EE13do_neg_formatEv +_ZNKSt3__117moneypunct_bynameIwLb0EE13do_pos_formatEv +_ZNKSt3__117moneypunct_bynameIwLb0EE14do_curr_symbolEv +_ZNKSt3__117moneypunct_bynameIwLb0EE14do_frac_digitsEv +_ZNKSt3__117moneypunct_bynameIwLb0EE16do_decimal_pointEv +_ZNKSt3__117moneypunct_bynameIwLb0EE16do_negative_signEv +_ZNKSt3__117moneypunct_bynameIwLb0EE16do_positive_signEv +_ZNKSt3__117moneypunct_bynameIwLb0EE16do_thousands_sepEv +_ZNKSt3__117moneypunct_bynameIwLb1EE11do_groupingEv +_ZNKSt3__117moneypunct_bynameIwLb1EE13do_neg_formatEv +_ZNKSt3__117moneypunct_bynameIwLb1EE13do_pos_formatEv +_ZNKSt3__117moneypunct_bynameIwLb1EE14do_curr_symbolEv +_ZNKSt3__117moneypunct_bynameIwLb1EE14do_frac_digitsEv +_ZNKSt3__117moneypunct_bynameIwLb1EE16do_decimal_pointEv +_ZNKSt3__117moneypunct_bynameIwLb1EE16do_negative_signEv +_ZNKSt3__117moneypunct_bynameIwLb1EE16do_positive_signEv +_ZNKSt3__117moneypunct_bynameIwLb1EE16do_thousands_sepEv +_ZNKSt3__118__time_get_storageIcE15__do_date_orderEv +_ZNKSt3__118__time_get_storageIwE15__do_date_orderEv +_ZNKSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB6v15003Ev +_ZNKSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE5rdbufB6v15003Ev +_ZNKSt3__119__shared_weak_count13__get_deleterERKSt9type_info +_ZNKSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB6v15003Ev +_ZNKSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE5rdbufB6v15003Ev +_ZNKSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB6v15003Ev +_ZNKSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE5rdbufB6v15003Ev +_ZNKSt3__120__codecvt_utf8_utf16IDiE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__120__codecvt_utf8_utf16IDiE11do_encodingEv +_ZNKSt3__120__codecvt_utf8_utf16IDiE13do_max_lengthEv +_ZNKSt3__120__codecvt_utf8_utf16IDiE16do_always_noconvEv +_ZNKSt3__120__codecvt_utf8_utf16IDiE5do_inER9_MbstatetPKcS5_RS5_PDiS7_RS7_ +_ZNKSt3__120__codecvt_utf8_utf16IDiE6do_outER9_MbstatetPKDiS5_RS5_PcS7_RS7_ +_ZNKSt3__120__codecvt_utf8_utf16IDiE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__120__codecvt_utf8_utf16IDsE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__120__codecvt_utf8_utf16IDsE11do_encodingEv +_ZNKSt3__120__codecvt_utf8_utf16IDsE13do_max_lengthEv +_ZNKSt3__120__codecvt_utf8_utf16IDsE16do_always_noconvEv +_ZNKSt3__120__codecvt_utf8_utf16IDsE5do_inER9_MbstatetPKcS5_RS5_PDsS7_RS7_ +_ZNKSt3__120__codecvt_utf8_utf16IDsE6do_outER9_MbstatetPKDsS5_RS5_PcS7_RS7_ +_ZNKSt3__120__codecvt_utf8_utf16IDsE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__120__codecvt_utf8_utf16IwE10do_unshiftER9_MbstatetPcS4_RS4_ +_ZNKSt3__120__codecvt_utf8_utf16IwE11do_encodingEv +_ZNKSt3__120__codecvt_utf8_utf16IwE13do_max_lengthEv +_ZNKSt3__120__codecvt_utf8_utf16IwE16do_always_noconvEv +_ZNKSt3__120__codecvt_utf8_utf16IwE5do_inER9_MbstatetPKcS5_RS5_PwS7_RS7_ +_ZNKSt3__120__codecvt_utf8_utf16IwE6do_outER9_MbstatetPKwS5_RS5_PcS7_RS7_ +_ZNKSt3__120__codecvt_utf8_utf16IwE9do_lengthER9_MbstatetPKcS5_y +_ZNKSt3__120__time_get_c_storageIcE3__XEv +_ZNKSt3__120__time_get_c_storageIcE3__cEv +_ZNKSt3__120__time_get_c_storageIcE3__rEv +_ZNKSt3__120__time_get_c_storageIcE3__xEv +_ZNKSt3__120__time_get_c_storageIcE7__am_pmEv +_ZNKSt3__120__time_get_c_storageIcE7__weeksEv +_ZNKSt3__120__time_get_c_storageIcE8__monthsEv +_ZNKSt3__120__time_get_c_storageIwE3__XEv +_ZNKSt3__120__time_get_c_storageIwE3__cEv +_ZNKSt3__120__time_get_c_storageIwE3__rEv +_ZNKSt3__120__time_get_c_storageIwE3__xEv +_ZNKSt3__120__time_get_c_storageIwE7__am_pmEv +_ZNKSt3__120__time_get_c_storageIwE7__weeksEv +_ZNKSt3__120__time_get_c_storageIwE8__monthsEv +_ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv +_ZNKSt3__120__vector_base_commonILb1EE20__throw_out_of_rangeEv +_ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv +_ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv +_ZNKSt3__123__match_any_but_newlineIcE6__execERNS_7__stateIcEE +_ZNKSt3__123__match_any_but_newlineIwE6__execERNS_7__stateIwEE +_ZNKSt3__14__fs10filesystem18directory_iterator13__dereferenceEv +_ZNKSt3__14__fs10filesystem28recursive_directory_iterator13__dereferenceEv +_ZNKSt3__14__fs10filesystem28recursive_directory_iterator5depthEv +_ZNKSt3__14__fs10filesystem28recursive_directory_iterator7optionsEv +_ZNKSt3__14__fs10filesystem4path10__filenameEv +_ZNKSt3__14__fs10filesystem4path11__extensionEv +_ZNKSt3__14__fs10filesystem4path11__root_nameEv +_ZNKSt3__14__fs10filesystem4path13__parent_pathEv +_ZNKSt3__14__fs10filesystem4path15__relative_pathEv +_ZNKSt3__14__fs10filesystem4path15__root_path_rawEv +_ZNKSt3__14__fs10filesystem4path16__root_directoryEv +_ZNKSt3__14__fs10filesystem4path16lexically_normalEv +_ZNKSt3__14__fs10filesystem4path18lexically_relativeERKS2_ +_ZNKSt3__14__fs10filesystem4path3endEv +_ZNKSt3__14__fs10filesystem4path5beginEv +_ZNKSt3__14__fs10filesystem4path6__stemEv +_ZNKSt3__14__fs10filesystem4path9__compareENS_17basic_string_viewIwNS_11char_traitsIwEEEE +_ZNKSt3__15ctypeIcE10do_tolowerEPcPKc +_ZNKSt3__15ctypeIcE10do_tolowerEc +_ZNKSt3__15ctypeIcE10do_toupperEPcPKc +_ZNKSt3__15ctypeIcE10do_toupperEc +_ZNKSt3__15ctypeIcE8do_widenEPKcS3_Pc +_ZNKSt3__15ctypeIcE8do_widenEc +_ZNKSt3__15ctypeIcE9do_narrowEPKcS3_cPc +_ZNKSt3__15ctypeIcE9do_narrowEcc +_ZNKSt3__15ctypeIwE10do_scan_isEtPKwS3_ +_ZNKSt3__15ctypeIwE10do_tolowerEPwPKw +_ZNKSt3__15ctypeIwE10do_tolowerEw +_ZNKSt3__15ctypeIwE10do_toupperEPwPKw +_ZNKSt3__15ctypeIwE10do_toupperEw +_ZNKSt3__15ctypeIwE11do_scan_notEtPKwS3_ +_ZNKSt3__15ctypeIwE5do_isEPKwS3_Pt +_ZNKSt3__15ctypeIwE5do_isEtw +_ZNKSt3__15ctypeIwE8do_widenEPKcS3_Pw +_ZNKSt3__15ctypeIwE8do_widenEc +_ZNKSt3__15ctypeIwE9do_narrowEPKwS3_cPc +_ZNKSt3__15ctypeIwE9do_narrowEwc +_ZNKSt3__16locale4nameEv +_ZNKSt3__16locale9has_facetERNS0_2idE +_ZNKSt3__16locale9use_facetERNS0_2idE +_ZNKSt3__16localeeqERKS0_ +_ZNKSt3__17codecvtIDiDu9_MbstatetE10do_unshiftERS1_PDuS4_RS4_ +_ZNKSt3__17codecvtIDiDu9_MbstatetE11do_encodingEv +_ZNKSt3__17codecvtIDiDu9_MbstatetE13do_max_lengthEv +_ZNKSt3__17codecvtIDiDu9_MbstatetE16do_always_noconvEv +_ZNKSt3__17codecvtIDiDu9_MbstatetE5do_inERS1_PKDuS5_RS5_PDiS7_RS7_ +_ZNKSt3__17codecvtIDiDu9_MbstatetE6do_outERS1_PKDiS5_RS5_PDuS7_RS7_ +_ZNKSt3__17codecvtIDiDu9_MbstatetE9do_lengthERS1_PKDuS5_y +_ZNKSt3__17codecvtIDic9_MbstatetE10do_unshiftERS1_PcS4_RS4_ +_ZNKSt3__17codecvtIDic9_MbstatetE11do_encodingEv +_ZNKSt3__17codecvtIDic9_MbstatetE13do_max_lengthEv +_ZNKSt3__17codecvtIDic9_MbstatetE16do_always_noconvEv +_ZNKSt3__17codecvtIDic9_MbstatetE5do_inERS1_PKcS5_RS5_PDiS7_RS7_ +_ZNKSt3__17codecvtIDic9_MbstatetE6do_outERS1_PKDiS5_RS5_PcS7_RS7_ +_ZNKSt3__17codecvtIDic9_MbstatetE9do_lengthERS1_PKcS5_y +_ZNKSt3__17codecvtIDsDu9_MbstatetE10do_unshiftERS1_PDuS4_RS4_ +_ZNKSt3__17codecvtIDsDu9_MbstatetE11do_encodingEv +_ZNKSt3__17codecvtIDsDu9_MbstatetE13do_max_lengthEv +_ZNKSt3__17codecvtIDsDu9_MbstatetE16do_always_noconvEv +_ZNKSt3__17codecvtIDsDu9_MbstatetE5do_inERS1_PKDuS5_RS5_PDsS7_RS7_ +_ZNKSt3__17codecvtIDsDu9_MbstatetE6do_outERS1_PKDsS5_RS5_PDuS7_RS7_ +_ZNKSt3__17codecvtIDsDu9_MbstatetE9do_lengthERS1_PKDuS5_y +_ZNKSt3__17codecvtIDsc9_MbstatetE10do_unshiftERS1_PcS4_RS4_ +_ZNKSt3__17codecvtIDsc9_MbstatetE11do_encodingEv +_ZNKSt3__17codecvtIDsc9_MbstatetE13do_max_lengthEv +_ZNKSt3__17codecvtIDsc9_MbstatetE16do_always_noconvEv +_ZNKSt3__17codecvtIDsc9_MbstatetE5do_inERS1_PKcS5_RS5_PDsS7_RS7_ +_ZNKSt3__17codecvtIDsc9_MbstatetE6do_outERS1_PKDsS5_RS5_PcS7_RS7_ +_ZNKSt3__17codecvtIDsc9_MbstatetE9do_lengthERS1_PKcS5_y +_ZNKSt3__17codecvtIcc9_MbstatetE10do_unshiftERS1_PcS4_RS4_ +_ZNKSt3__17codecvtIcc9_MbstatetE11do_encodingEv +_ZNKSt3__17codecvtIcc9_MbstatetE13do_max_lengthEv +_ZNKSt3__17codecvtIcc9_MbstatetE16do_always_noconvEv +_ZNKSt3__17codecvtIcc9_MbstatetE5do_inERS1_PKcS5_RS5_PcS7_RS7_ +_ZNKSt3__17codecvtIcc9_MbstatetE6do_outERS1_PKcS5_RS5_PcS7_RS7_ +_ZNKSt3__17codecvtIcc9_MbstatetE9do_lengthERS1_PKcS5_y +_ZNKSt3__17codecvtIwc9_MbstatetE10do_unshiftERS1_PcS4_RS4_ +_ZNKSt3__17codecvtIwc9_MbstatetE11do_encodingEv +_ZNKSt3__17codecvtIwc9_MbstatetE13do_max_lengthEv +_ZNKSt3__17codecvtIwc9_MbstatetE16do_always_noconvEv +_ZNKSt3__17codecvtIwc9_MbstatetE5do_inERS1_PKcS5_RS5_PwS7_RS7_ +_ZNKSt3__17codecvtIwc9_MbstatetE6do_outERS1_PKwS5_RS5_PcS7_RS7_ +_ZNKSt3__17codecvtIwc9_MbstatetE9do_lengthERS1_PKcS5_y +_ZNKSt3__17collateIcE10do_compareEPKcS3_S3_S3_ +_ZNKSt3__17collateIcE12do_transformEPKcS3_ +_ZNKSt3__17collateIcE4hashB6v15003EPKcS3_ +_ZNKSt3__17collateIcE7compareB6v15003EPKcS3_S3_S3_ +_ZNKSt3__17collateIcE7do_hashEPKcS3_ +_ZNKSt3__17collateIcE9transformB6v15003EPKcS3_ +_ZNKSt3__17collateIwE10do_compareEPKwS3_S3_S3_ +_ZNKSt3__17collateIwE12do_transformEPKwS3_ +_ZNKSt3__17collateIwE4hashB6v15003EPKwS3_ +_ZNKSt3__17collateIwE7compareB6v15003EPKwS3_S3_S3_ +_ZNKSt3__17collateIwE7do_hashEPKwS3_ +_ZNKSt3__17collateIwE9transformB6v15003EPKwS3_ +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRPv +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRb +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRd +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRe +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRf +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRl +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRm +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRt +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRx +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRy +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjS8_ +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRb +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRd +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRe +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRf +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRl +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRm +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRt +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRx +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRy +_ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRPv +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRb +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRd +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRe +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRf +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRl +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRm +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRt +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRx +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjRy +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjS8_ +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRb +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRd +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRe +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRf +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRl +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRm +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRt +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRx +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRy +_ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcPKv +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcb +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcd +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEce +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcl +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcm +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcx +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcy +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPKv +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcb +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcd +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEce +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcl +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcm +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcx +_ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcy +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwPKv +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwb +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwd +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwe +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwl +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwm +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwx +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwy +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPKv +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwb +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwd +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwe +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwl +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwm +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwx +_ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwy +_ZNKSt3__18ios_base10exceptionsB6v15003Ev +_ZNKSt3__18ios_base3badB6v15003Ev +_ZNKSt3__18ios_base3eofB6v15003Ev +_ZNKSt3__18ios_base4failB6v15003Ev +_ZNKSt3__18ios_base4goodB6v15003Ev +_ZNKSt3__18ios_base5flagsB6v15003Ev +_ZNKSt3__18ios_base5widthB6v15003Ev +_ZNKSt3__18ios_base6getlocEv +_ZNKSt3__18ios_base7rdstateB6v15003Ev +_ZNKSt3__18ios_base9precisionB6v15003Ev +_ZNKSt3__18messagesIcE3getB6v15003ExiiRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNKSt3__18messagesIcE4openB6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE +_ZNKSt3__18messagesIcE5closeB6v15003Ex +_ZNKSt3__18messagesIcE6do_getExiiRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNKSt3__18messagesIcE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE +_ZNKSt3__18messagesIcE8do_closeEx +_ZNKSt3__18messagesIwE3getB6v15003ExiiRKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE +_ZNKSt3__18messagesIwE4openB6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE +_ZNKSt3__18messagesIwE5closeB6v15003Ex +_ZNKSt3__18messagesIwE6do_getExiiRKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE +_ZNKSt3__18messagesIwE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE +_ZNKSt3__18messagesIwE8do_closeEx +_ZNKSt3__18numpunctIcE11do_groupingEv +_ZNKSt3__18numpunctIcE11do_truenameEv +_ZNKSt3__18numpunctIcE12do_falsenameEv +_ZNKSt3__18numpunctIcE16do_decimal_pointEv +_ZNKSt3__18numpunctIcE16do_thousands_sepEv +_ZNKSt3__18numpunctIwE11do_groupingEv +_ZNKSt3__18numpunctIwE11do_truenameEv +_ZNKSt3__18numpunctIwE12do_falsenameEv +_ZNKSt3__18numpunctIwE16do_decimal_pointEv +_ZNKSt3__18numpunctIwE16do_thousands_sepEv +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10date_orderB6v15003Ev +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11get_weekdayB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13do_date_orderEv +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13get_monthnameB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjP2tmcc +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8get_dateB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8get_timeB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8get_yearB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIcEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10date_orderB6v15003Ev +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11get_weekdayB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13do_date_orderEv +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13get_monthnameB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_RNS_8ios_baseERjP2tmcc +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8get_dateB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8get_timeB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8get_yearB6v15003ES4_S4_RNS_8ios_baseERjP2tm +_ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIwEE +_ZNKSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_RNS_8ios_baseEcPK2tmcc +_ZNKSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putES4_RNS_8ios_baseEcPK2tmPKcSC_ +_ZNKSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPK2tmcc +_ZNKSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_RNS_8ios_baseEwPK2tmcc +_ZNKSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putES4_RNS_8ios_baseEwPK2tmPKwSC_ +_ZNKSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPK2tmcc +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE10exceptionsB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE3badB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE3eofB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE3tieB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4failB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4goodB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15003Ec +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE6narrowB6v15003Ecc +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE7rdstateB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEEcvbB6v15003Ev +_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEEntB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE10exceptionsB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE3badB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE3eofB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE3tieB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE4failB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE4fillB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE4goodB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE5rdbufB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE5widenB6v15003Ec +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE6narrowB6v15003Ewc +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEE7rdstateB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEEcvbB6v15003Ev +_ZNKSt3__19basic_iosIwNS_11char_traitsIwEEEntB6v15003Ev +_ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIcS3_NS_9allocatorIcEEEE +_ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getB6v15003ES4_S4_bRNS_8ios_baseERjRe +_ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIcS3_NS_9allocatorIcEEEE +_ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe +_ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIwS3_NS_9allocatorIwEEEE +_ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getB6v15003ES4_S4_bRNS_8ios_baseERjRe +_ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIwS3_NS_9allocatorIwEEEE +_ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe +_ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_bRNS_8ios_baseEcRKNS_12basic_stringIcS3_NS_9allocatorIcEEEE +_ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE3putB6v15003ES4_bRNS_8ios_baseEce +_ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEcRKNS_12basic_stringIcS3_NS_9allocatorIcEEEE +_ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEce +_ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_bRNS_8ios_baseEwRKNS_12basic_stringIwS3_NS_9allocatorIwEEEE +_ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putB6v15003ES4_bRNS_8ios_baseEwe +_ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwRKNS_12basic_stringIwS3_NS_9allocatorIwEEEE +_ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwe +_ZNKSt8bad_cast4whatEv +_ZNKSt9bad_alloc4whatEv +_ZNKSt9exception4whatEv +_ZNSt10bad_typeidC1Ev +_ZNSt10bad_typeidC2Ev +_ZNSt10bad_typeidD0Ev +_ZNSt10bad_typeidD1Ev +_ZNSt10bad_typeidD2Ev +_ZNSt11logic_errorC1EPKc +_ZNSt11logic_errorC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE +_ZNSt11logic_errorC1ERKS_ +_ZNSt11logic_errorC2EPKc +_ZNSt11logic_errorC2ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE +_ZNSt11logic_errorC2ERKS_ +_ZNSt11logic_errorD0Ev +_ZNSt11logic_errorD1Ev +_ZNSt11logic_errorD2Ev +_ZNSt11logic_erroraSERKS_ +_ZNSt11range_errorD0Ev +_ZNSt11range_errorD1Ev +_ZNSt11range_errorD2Ev +_ZNSt12domain_errorD0Ev +_ZNSt12domain_errorD1Ev +_ZNSt12domain_errorD2Ev +_ZNSt12experimental19bad_optional_accessD0Ev +_ZNSt12experimental19bad_optional_accessD1Ev +_ZNSt12experimental19bad_optional_accessD2Ev +_ZNSt12length_errorD0Ev +_ZNSt12length_errorD1Ev +_ZNSt12length_errorD2Ev +_ZNSt12out_of_rangeD0Ev +_ZNSt12out_of_rangeD1Ev +_ZNSt12out_of_rangeD2Ev +_ZNSt13bad_exceptionD0Ev +_ZNSt13bad_exceptionD1Ev +_ZNSt13bad_exceptionD2Ev +_ZNSt13exception_ptrC1ERKS_ +_ZNSt13exception_ptrC2ERKS_ +_ZNSt13exception_ptrD1Ev +_ZNSt13exception_ptrD2Ev +_ZNSt13exception_ptraSERKS_ +_ZNSt13runtime_errorC1EPKc +_ZNSt13runtime_errorC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE +_ZNSt13runtime_errorC1ERKS_ +_ZNSt13runtime_errorC2EPKc +_ZNSt13runtime_errorC2ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE +_ZNSt13runtime_errorC2ERKS_ +_ZNSt13runtime_errorD0Ev +_ZNSt13runtime_errorD1Ev +_ZNSt13runtime_errorD2Ev +_ZNSt13runtime_erroraSERKS_ +_ZNSt14overflow_errorD0Ev +_ZNSt14overflow_errorD1Ev +_ZNSt14overflow_errorD2Ev +_ZNSt15underflow_errorD0Ev +_ZNSt15underflow_errorD1Ev +_ZNSt15underflow_errorD2Ev +_ZNSt16invalid_argumentD0Ev +_ZNSt16invalid_argumentD1Ev +_ZNSt16invalid_argumentD2Ev +_ZNSt16nested_exceptionC1Ev +_ZNSt16nested_exceptionC2Ev +_ZNSt16nested_exceptionD0Ev +_ZNSt16nested_exceptionD1Ev +_ZNSt16nested_exceptionD2Ev +_ZNSt19bad_optional_accessD0Ev +_ZNSt19bad_optional_accessD1Ev +_ZNSt19bad_optional_accessD2Ev +_ZNSt20bad_array_new_lengthC1Ev +_ZNSt20bad_array_new_lengthC2Ev +_ZNSt20bad_array_new_lengthD0Ev +_ZNSt20bad_array_new_lengthD1Ev +_ZNSt20bad_array_new_lengthD2Ev +_ZNSt3__110__time_getC1EPKc +_ZNSt3__110__time_getC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__110__time_getC2EPKc +_ZNSt3__110__time_getC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__110__time_getD1Ev +_ZNSt3__110__time_getD2Ev +_ZNSt3__110__time_putC1EPKc +_ZNSt3__110__time_putC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__110__time_putC2EPKc +_ZNSt3__110__time_putC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__110__time_putD1Ev +_ZNSt3__110__time_putD2Ev +_ZNSt3__110adopt_lockE DATA +_ZNSt3__110ctype_base5alnumE DATA +_ZNSt3__110ctype_base5alphaE DATA +_ZNSt3__110ctype_base5blankE DATA +_ZNSt3__110ctype_base5cntrlE DATA +_ZNSt3__110ctype_base5digitE DATA +_ZNSt3__110ctype_base5graphE DATA +_ZNSt3__110ctype_base5lowerE DATA +_ZNSt3__110ctype_base5printE DATA +_ZNSt3__110ctype_base5punctE DATA +_ZNSt3__110ctype_base5spaceE DATA +_ZNSt3__110ctype_base5upperE DATA +_ZNSt3__110ctype_base6xdigitE DATA +_ZNSt3__110defer_lockE DATA +_ZNSt3__110istrstreamD0Ev +_ZNSt3__110istrstreamD1Ev +_ZNSt3__110istrstreamD2Ev +_ZNSt3__110moneypunctIcLb0EE2idE DATA +_ZNSt3__110moneypunctIcLb0EE4intlE DATA +_ZNSt3__110moneypunctIcLb0EEC1B6v15003Ey +_ZNSt3__110moneypunctIcLb0EEC2B6v15003Ey +_ZNSt3__110moneypunctIcLb0EED0B6v15003Ev +_ZNSt3__110moneypunctIcLb0EED1B6v15003Ev +_ZNSt3__110moneypunctIcLb0EED2B6v15003Ev +_ZNSt3__110moneypunctIcLb1EE2idE DATA +_ZNSt3__110moneypunctIcLb1EE4intlE DATA +_ZNSt3__110moneypunctIcLb1EEC1B6v15003Ey +_ZNSt3__110moneypunctIcLb1EEC2B6v15003Ey +_ZNSt3__110moneypunctIcLb1EED0B6v15003Ev +_ZNSt3__110moneypunctIcLb1EED1B6v15003Ev +_ZNSt3__110moneypunctIcLb1EED2B6v15003Ev +_ZNSt3__110moneypunctIwLb0EE2idE DATA +_ZNSt3__110moneypunctIwLb0EE4intlE DATA +_ZNSt3__110moneypunctIwLb0EEC1B6v15003Ey +_ZNSt3__110moneypunctIwLb0EEC2B6v15003Ey +_ZNSt3__110moneypunctIwLb0EED0B6v15003Ev +_ZNSt3__110moneypunctIwLb0EED1B6v15003Ev +_ZNSt3__110moneypunctIwLb0EED2B6v15003Ev +_ZNSt3__110moneypunctIwLb1EE2idE DATA +_ZNSt3__110moneypunctIwLb1EE4intlE DATA +_ZNSt3__110moneypunctIwLb1EEC1B6v15003Ey +_ZNSt3__110moneypunctIwLb1EEC2B6v15003Ey +_ZNSt3__110moneypunctIwLb1EED0B6v15003Ev +_ZNSt3__110moneypunctIwLb1EED1B6v15003Ev +_ZNSt3__110moneypunctIwLb1EED2B6v15003Ev +_ZNSt3__110ostrstreamD0Ev +_ZNSt3__110ostrstreamD1Ev +_ZNSt3__110ostrstreamD2Ev +_ZNSt3__110to_wstringEd +_ZNSt3__110to_wstringEe +_ZNSt3__110to_wstringEf +_ZNSt3__110to_wstringEi +_ZNSt3__110to_wstringEj +_ZNSt3__110to_wstringEl +_ZNSt3__110to_wstringEm +_ZNSt3__110to_wstringEx +_ZNSt3__110to_wstringEy +_ZNSt3__111__call_onceERVmPvPFvS2_E +_ZNSt3__111__money_getIcE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_SF_Ri +_ZNSt3__111__money_getIcEC1B6v15003Ev +_ZNSt3__111__money_getIcEC2B6v15003Ev +_ZNSt3__111__money_getIcEaSERKS1_ +_ZNSt3__111__money_getIwE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_SJ_Ri +_ZNSt3__111__money_getIwEC1B6v15003Ev +_ZNSt3__111__money_getIwEC2B6v15003Ev +_ZNSt3__111__money_getIwEaSERKS1_ +_ZNSt3__111__money_putIcE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_Ri +_ZNSt3__111__money_putIcE8__formatEPcRS2_S3_jPKcS5_RKNS_5ctypeIcEEbRKNS_10money_base7patternEccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESL_SL_i +_ZNSt3__111__money_putIcEC1B6v15003Ev +_ZNSt3__111__money_putIcEC2B6v15003Ev +_ZNSt3__111__money_putIcEaSERKS1_ +_ZNSt3__111__money_putIwE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_Ri +_ZNSt3__111__money_putIwE8__formatEPwRS2_S3_jPKwS5_RKNS_5ctypeIwEEbRKNS_10money_base7patternEwwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNSE_IwNSF_IwEENSH_IwEEEESQ_i +_ZNSt3__111__money_putIwEC1B6v15003Ev +_ZNSt3__111__money_putIwEC2B6v15003Ev +_ZNSt3__111__money_putIwEaSERKS1_ +_ZNSt3__111regex_errorC1ENS_15regex_constants10error_typeE +_ZNSt3__111regex_errorC2ENS_15regex_constants10error_typeE +_ZNSt3__111regex_errorD0Ev +_ZNSt3__111regex_errorD1Ev +_ZNSt3__111regex_errorD2Ev +_ZNSt3__111this_thread9sleep_forERKNS_6chrono8durationIxNS_5ratioILx1ELx1000000000EEEEE +_ZNSt3__111timed_mutex4lockEv +_ZNSt3__111timed_mutex6unlockEv +_ZNSt3__111timed_mutex8try_lockEv +_ZNSt3__111timed_mutexC1Ev +_ZNSt3__111timed_mutexC2Ev +_ZNSt3__111timed_mutexD1Ev +_ZNSt3__111timed_mutexD2Ev +_ZNSt3__111try_to_lockE DATA +_ZNSt3__112__do_nothingEPv +_ZNSt3__112__get_sp_mutEPKv +_ZNSt3__112__next_primeEy +_ZNSt3__112__rs_default4__c_E DATA +_ZNSt3__112__rs_defaultC1ERKS0_ +_ZNSt3__112__rs_defaultC1Ev +_ZNSt3__112__rs_defaultC2ERKS0_ +_ZNSt3__112__rs_defaultC2Ev +_ZNSt3__112__rs_defaultD1Ev +_ZNSt3__112__rs_defaultD2Ev +_ZNSt3__112__rs_defaultclEv +_ZNSt3__112bad_weak_ptrD0Ev +_ZNSt3__112bad_weak_ptrD1Ev +_ZNSt3__112bad_weak_ptrD2Ev +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE21__grow_by_and_replaceEyyyyyyPKc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE2atEy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4nposE DATA +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5eraseEyy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcyy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEyc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendERKS5_yy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEyc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKcy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignERKS5_yy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEyc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertENS_11__wrap_iterIPKcEEc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertEyPKc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertEyPKcy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertEyRKS5_yy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertEyyc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEyc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7replaceEyyPKc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7replaceEyyPKcy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7replaceEyyRKS5_yy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7replaceEyyyc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEyyyyyy +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_ +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_RKS4_ +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_yyRKS4_ +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_ +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_RKS4_ +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_yyRKS4_ +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_ +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEc +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE21__grow_by_and_replaceEyyyyyyPKw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE2atEy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE4nposE DATA +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE5eraseEyy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwyy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEyw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendEPKw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendEPKwy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendERKS5_yy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendEyw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKwy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignERKS5_yy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEyw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6insertENS_11__wrap_iterIPKwEEw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6insertEyPKw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6insertEyPKwy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6insertEyRKS5_yy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6insertEyyw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6resizeEyw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7replaceEyyPKw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7replaceEyyPKwy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7replaceEyyRKS5_yy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7replaceEyyyw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9__grow_byEyyyyyy +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEC1ERKS5_ +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEC1ERKS5_RKS4_ +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEC1ERKS5_yyRKS4_ +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEC2ERKS5_ +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEC2ERKS5_RKS4_ +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEC2ERKS5_yyRKS4_ +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED1Ev +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEaSERKS5_ +_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEaSEw +_ZNSt3__112ctype_bynameIcEC1EPKcy +_ZNSt3__112ctype_bynameIcEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__112ctype_bynameIcEC2EPKcy +_ZNSt3__112ctype_bynameIcEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__112ctype_bynameIcED0Ev +_ZNSt3__112ctype_bynameIcED1Ev +_ZNSt3__112ctype_bynameIcED2Ev +_ZNSt3__112ctype_bynameIwEC1EPKcy +_ZNSt3__112ctype_bynameIwEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__112ctype_bynameIwEC2EPKcy +_ZNSt3__112ctype_bynameIwEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__112ctype_bynameIwED0Ev +_ZNSt3__112ctype_bynameIwED1Ev +_ZNSt3__112ctype_bynameIwED2Ev +_ZNSt3__112future_errorC1ENS_10error_codeE +_ZNSt3__112future_errorC2ENS_10error_codeE +_ZNSt3__112future_errorD0Ev +_ZNSt3__112future_errorD1Ev +_ZNSt3__112future_errorD2Ev +_ZNSt3__112placeholders2_1E DATA +_ZNSt3__112placeholders2_2E DATA +_ZNSt3__112placeholders2_3E DATA +_ZNSt3__112placeholders2_4E DATA +_ZNSt3__112placeholders2_5E DATA +_ZNSt3__112placeholders2_6E DATA +_ZNSt3__112placeholders2_7E DATA +_ZNSt3__112placeholders2_8E DATA +_ZNSt3__112placeholders2_9E DATA +_ZNSt3__112placeholders3_10E DATA +_ZNSt3__112strstreambuf3strEv +_ZNSt3__112strstreambuf4swapERS0_ +_ZNSt3__112strstreambuf6__initEPcxS1_ +_ZNSt3__112strstreambuf6freezeEb +_ZNSt3__112strstreambuf7seekoffExNS_8ios_base7seekdirEj +_ZNSt3__112strstreambuf7seekposENS_4fposI9_MbstatetEEj +_ZNSt3__112strstreambuf8overflowEi +_ZNSt3__112strstreambuf9pbackfailEi +_ZNSt3__112strstreambuf9underflowEv +_ZNSt3__112strstreambufC1B6v15003EOS0_ +_ZNSt3__112strstreambufC1EPFPvyEPFvS1_E +_ZNSt3__112strstreambufC1EPKax +_ZNSt3__112strstreambufC1EPKcx +_ZNSt3__112strstreambufC1EPKhx +_ZNSt3__112strstreambufC1EPaxS1_ +_ZNSt3__112strstreambufC1EPcxS1_ +_ZNSt3__112strstreambufC1EPhxS1_ +_ZNSt3__112strstreambufC1Ex +_ZNSt3__112strstreambufC2B6v15003EOS0_ +_ZNSt3__112strstreambufC2EPFPvyEPFvS1_E +_ZNSt3__112strstreambufC2EPKax +_ZNSt3__112strstreambufC2EPKcx +_ZNSt3__112strstreambufC2EPKhx +_ZNSt3__112strstreambufC2EPaxS1_ +_ZNSt3__112strstreambufC2EPcxS1_ +_ZNSt3__112strstreambufC2EPhxS1_ +_ZNSt3__112strstreambufC2Ex +_ZNSt3__112strstreambufD0Ev +_ZNSt3__112strstreambufD1Ev +_ZNSt3__112strstreambufD2Ev +_ZNSt3__112strstreambufaSB6v15003EOS0_ +_ZNSt3__112system_error6__initERKNS_10error_codeENS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__112system_errorC1ENS_10error_codeE +_ZNSt3__112system_errorC1ENS_10error_codeEPKc +_ZNSt3__112system_errorC1ENS_10error_codeERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__112system_errorC1EiRKNS_14error_categoryE +_ZNSt3__112system_errorC1EiRKNS_14error_categoryEPKc +_ZNSt3__112system_errorC1EiRKNS_14error_categoryERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__112system_errorC2ENS_10error_codeE +_ZNSt3__112system_errorC2ENS_10error_codeEPKc +_ZNSt3__112system_errorC2ENS_10error_codeERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__112system_errorC2EiRKNS_14error_categoryE +_ZNSt3__112system_errorC2EiRKNS_14error_categoryEPKc +_ZNSt3__112system_errorC2EiRKNS_14error_categoryERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__112system_errorD0Ev +_ZNSt3__112system_errorD1Ev +_ZNSt3__112system_errorD2Ev +_ZNSt3__113allocator_argE DATA +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE11__read_modeEv +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE12__write_modeEv +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE15__make_mdstringEj +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4openB6v15003ERKNS_4__fs10filesystem4pathEj +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4openEPKcj +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4openEPKwj +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4openERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4swapERS3_ +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4syncEv +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE5closeEv +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE6__openEij +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE6setbufEPcx +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE7seekoffExNS_8ios_base7seekdirEj +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE7seekposENS_4fposI9_MbstatetEEj +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE8overflowEi +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE9pbackfailEi +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE9underflowEv +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC1EOS3_ +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC1Ev +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC2EOS3_ +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC2Ev +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEED0Ev +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEED1Ev +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEED2Ev +_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEaSEOS3_ +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getEPcx +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getEPcxc +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getERNS_15basic_streambufIcS2_EE +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getERNS_15basic_streambufIcS2_EEc +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getERc +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getEv +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4peekEv +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4readEPcx +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4swapERS3_ +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4syncEv +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5seekgENS_4fposI9_MbstatetEE +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5seekgExNS_8ios_base7seekdirE +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5tellgEv +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5ungetEv +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE6ignoreExi +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE7getlineEPcx +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE7getlineEPcxc +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE7putbackEc +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE8readsomeEPcx +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEEC1EPNS_15basic_streambufIcS2_EE +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEEC2EPNS_15basic_streambufIcS2_EE +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED0Ev +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED1Ev +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED2Ev +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsEPFRNS_8ios_baseES5_E +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsEPFRNS_9basic_iosIcS2_EES6_E +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsEPFRS3_S4_E +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsEPNS_15basic_streambufIcS2_EE +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERPv +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERb +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERd +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERe +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERf +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERi +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERj +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERl +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERm +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERs +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERt +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERx +_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERy +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getEPwx +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getEPwxw +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getERNS_15basic_streambufIwS2_EE +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getERNS_15basic_streambufIwS2_EEw +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getERw +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getEv +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4peekEv +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4readEPwx +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4swapERS3_ +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4syncEv +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5seekgENS_4fposI9_MbstatetEE +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5seekgExNS_8ios_base7seekdirE +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5tellgEv +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5ungetEv +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE6ignoreExt +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE7getlineEPwx +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE7getlineEPwxw +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE7putbackEw +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE8readsomeEPwx +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEEC1EPNS_15basic_streambufIwS2_EE +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEEC2EPNS_15basic_streambufIwS2_EE +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED0Ev +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED1Ev +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED2Ev +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsEPFRNS_8ios_baseES5_E +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsEPFRNS_9basic_iosIwS2_EES6_E +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsEPFRS3_S4_E +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsEPNS_15basic_streambufIwS2_EE +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERPv +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERb +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERd +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERe +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERf +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERi +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERj +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERl +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERm +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERs +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERt +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERx +_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsERy +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE4swapERS3_ +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5seekpENS_4fposI9_MbstatetEE +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5seekpExNS_8ios_base7seekdirE +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5tellpEv +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5writeEPKcx +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEEC1B6v15003Ev +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEEC1EPNS_15basic_streambufIcS2_EE +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEEC2B6v15003Ev +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEEC2EPNS_15basic_streambufIcS2_EE +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED2Ev +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15003EDn +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRNS_8ios_baseES5_E +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRNS_9basic_iosIcS2_EES6_E +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPKv +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPNS_15basic_streambufIcS2_EE +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEb +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEe +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEf +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEi +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEl +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEm +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEs +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEt +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEx +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE3putEw +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE4swapERS3_ +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5flushEv +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5seekpENS_4fposI9_MbstatetEE +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5seekpExNS_8ios_base7seekdirE +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5tellpEv +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5writeEPKwx +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEEC1B6v15003Ev +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEEC1EPNS_15basic_streambufIwS2_EE +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEEC2B6v15003Ev +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEEC2EPNS_15basic_streambufIwS2_EE +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED0Ev +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED1Ev +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED2Ev +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsB6v15003EDn +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPFRNS_8ios_baseES5_E +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPFRNS_9basic_iosIwS2_EES6_E +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPFRS3_S4_E +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPKv +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPNS_15basic_streambufIwS2_EE +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEb +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEd +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEe +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEf +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEi +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEj +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEl +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEm +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEs +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEt +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEx +_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEy +_ZNSt3__113random_device4_MaxE DATA +_ZNSt3__113random_device4_MinE DATA +_ZNSt3__113random_deviceC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__113random_deviceC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__113random_deviceD1Ev +_ZNSt3__113random_deviceD2Ev +_ZNSt3__113random_deviceclEv +_ZNSt3__113shared_futureIvED1Ev +_ZNSt3__113shared_futureIvED2Ev +_ZNSt3__113shared_futureIvEaSERKS1_ +_ZNSt3__114__num_get_base10__get_baseERNS_8ios_baseE +_ZNSt3__114__num_get_base5__srcE DATA +_ZNSt3__114__num_put_base12__format_intEPcPKcbj +_ZNSt3__114__num_put_base14__format_floatEPcPKcj +_ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE +_ZNSt3__114__shared_countD0Ev +_ZNSt3__114__shared_countD1Ev +_ZNSt3__114__shared_countD2Ev +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE4openB6v15003ERKNS_4__fs10filesystem4pathEj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE4openEPKcj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE4openEPKwj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE4openERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE4swapERS3_ +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE5closeEv +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE6__openEij +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC1B6v15003ERKNS_4__fs10filesystem4pathEj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC1EOS3_ +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC1EPKcj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC1EPKwj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC1ERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC1Ev +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC2B6v15003ERKNS_4__fs10filesystem4pathEj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC2EOS3_ +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC2EPKcj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC2EPKwj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC2ERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEC2Ev +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEED0Ev +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEED1Ev +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEED2Ev +_ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEaSEOS3_ +_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEE4swapERS3_ +_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEEC1EPNS_15basic_streambufIcS2_EE +_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEEC2EPNS_15basic_streambufIcS2_EE +_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev +_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev +_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE4openB6v15003ERKNS_4__fs10filesystem4pathEj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE4openEPKcj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE4openEPKwj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE4openERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE4swapERS3_ +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE5closeEv +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE6__openEij +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC1B6v15003ERKNS_4__fs10filesystem4pathEj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC1EOS3_ +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC1EPKcj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC1EPKwj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC1ERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC1Ev +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC2B6v15003ERKNS_4__fs10filesystem4pathEj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC2EOS3_ +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC2EPKcj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC2EPKwj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC2ERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEC2Ev +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEED0Ev +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEED1Ev +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEED2Ev +_ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEaSEOS3_ +_ZNSt3__114codecvt_bynameIDiDu9_MbstatetEC1B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDiDu9_MbstatetEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDiDu9_MbstatetEC2B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDiDu9_MbstatetEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDiDu9_MbstatetED0Ev +_ZNSt3__114codecvt_bynameIDiDu9_MbstatetED1Ev +_ZNSt3__114codecvt_bynameIDiDu9_MbstatetED2Ev +_ZNSt3__114codecvt_bynameIDic9_MbstatetEC1B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDic9_MbstatetEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDic9_MbstatetEC2B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDic9_MbstatetEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDic9_MbstatetED0Ev +_ZNSt3__114codecvt_bynameIDic9_MbstatetED1Ev +_ZNSt3__114codecvt_bynameIDic9_MbstatetED2Ev +_ZNSt3__114codecvt_bynameIDsDu9_MbstatetEC1B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDsDu9_MbstatetEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDsDu9_MbstatetEC2B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDsDu9_MbstatetEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDsDu9_MbstatetED0Ev +_ZNSt3__114codecvt_bynameIDsDu9_MbstatetED1Ev +_ZNSt3__114codecvt_bynameIDsDu9_MbstatetED2Ev +_ZNSt3__114codecvt_bynameIDsc9_MbstatetEC1B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDsc9_MbstatetEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDsc9_MbstatetEC2B6v15003EPKcy +_ZNSt3__114codecvt_bynameIDsc9_MbstatetEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIDsc9_MbstatetED0Ev +_ZNSt3__114codecvt_bynameIDsc9_MbstatetED1Ev +_ZNSt3__114codecvt_bynameIDsc9_MbstatetED2Ev +_ZNSt3__114codecvt_bynameIcc9_MbstatetEC1B6v15003EPKcy +_ZNSt3__114codecvt_bynameIcc9_MbstatetEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIcc9_MbstatetEC2B6v15003EPKcy +_ZNSt3__114codecvt_bynameIcc9_MbstatetEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIcc9_MbstatetED0Ev +_ZNSt3__114codecvt_bynameIcc9_MbstatetED1Ev +_ZNSt3__114codecvt_bynameIcc9_MbstatetED2Ev +_ZNSt3__114codecvt_bynameIwc9_MbstatetEC1B6v15003EPKcy +_ZNSt3__114codecvt_bynameIwc9_MbstatetEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIwc9_MbstatetEC2B6v15003EPKcy +_ZNSt3__114codecvt_bynameIwc9_MbstatetEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114codecvt_bynameIwc9_MbstatetED0Ev +_ZNSt3__114codecvt_bynameIwc9_MbstatetED1Ev +_ZNSt3__114codecvt_bynameIwc9_MbstatetED2Ev +_ZNSt3__114collate_bynameIcEC1EPKcy +_ZNSt3__114collate_bynameIcEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114collate_bynameIcEC2EPKcy +_ZNSt3__114collate_bynameIcEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114collate_bynameIcED0Ev +_ZNSt3__114collate_bynameIcED1Ev +_ZNSt3__114collate_bynameIcED2Ev +_ZNSt3__114collate_bynameIwEC1EPKcy +_ZNSt3__114collate_bynameIwEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114collate_bynameIwEC2EPKcy +_ZNSt3__114collate_bynameIwEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__114collate_bynameIwED0Ev +_ZNSt3__114collate_bynameIwED1Ev +_ZNSt3__114collate_bynameIwED2Ev +_ZNSt3__114error_categoryD0Ev +_ZNSt3__114error_categoryD1Ev +_ZNSt3__114error_categoryD2Ev +_ZNSt3__115__get_classnameEPKcb +_ZNSt3__115__thread_struct25notify_all_at_thread_exitEPNS_18condition_variableEPNS_5mutexE +_ZNSt3__115__thread_struct27__make_ready_at_thread_exitEPNS_17__assoc_sub_stateE +_ZNSt3__115__thread_structC1Ev +_ZNSt3__115__thread_structC2Ev +_ZNSt3__115__thread_structD1Ev +_ZNSt3__115__thread_structD2Ev +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE10pubseekoffExNS_8ios_base7seekdirEj +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE10pubseekposENS_4fposI9_MbstatetEEj +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4setgEPcS4_S4_ +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4setpEPcS4_ +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4swapERS3_ +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4syncEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5gbumpEi +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5pbumpEi +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sgetcEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sgetnEPcx +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputcEc +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcx +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5uflowEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6sbumpcEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6setbufEPcx +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6snextcEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPcx +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKcx +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7__pbumpB6v15003Ex +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7pubsyncEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekoffExNS_8ios_base7seekdirEj +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekposENS_4fposI9_MbstatetEEj +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7sungetcEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8in_availEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8overflowEi +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8pubimbueERKNS_6localeE +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9pbackfailEi +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9pubsetbufEPcx +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9showmanycEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9sputbackcEc +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9underflowEv +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC1ERKS3_ +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC1Ev +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2ERKS3_ +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED0Ev +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED1Ev +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev +_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEaSERKS3_ +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE10pubseekoffExNS_8ios_base7seekdirEj +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE10pubseekposENS_4fposI9_MbstatetEEj +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4setgEPwS4_S4_ +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4setpEPwS4_ +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4swapERS3_ +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4syncEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5gbumpEi +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5pbumpEi +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sgetcEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sgetnEPwx +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sputcEw +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sputnEPKwx +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5uflowEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6sbumpcEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6setbufEPwx +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6snextcEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6xsgetnEPwx +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6xsputnEPKwx +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7__pbumpB6v15003Ex +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7pubsyncEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekoffExNS_8ios_base7seekdirEj +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI9_MbstatetEEj +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7sungetcEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8in_availEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8overflowEt +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8pubimbueERKNS_6localeE +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pbackfailEt +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pubsetbufEPwx +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9showmanycEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9sputbackcEw +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9underflowEv +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEC1ERKS3_ +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEC1Ev +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEC2ERKS3_ +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEC2Ev +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED0Ev +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED1Ev +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED2Ev +_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEaSERKS3_ +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE4swapERS5_ +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekoffExNS_8ios_base7seekdirEj +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekposB6v15003ENS_4fposI9_MbstatetEEj +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE8overflowEi +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9pbackfailEi +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9underflowEv +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ej +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ev +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EOS5_ +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ej +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ev +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC2EOS5_ +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev +_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEOS5_ +_ZNSt3__115future_categoryEv +_ZNSt3__115messages_bynameIcEC1B6v15003EPKcy +_ZNSt3__115messages_bynameIcEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115messages_bynameIcEC2B6v15003EPKcy +_ZNSt3__115messages_bynameIcEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115messages_bynameIcED0B6v15003Ev +_ZNSt3__115messages_bynameIcED1B6v15003Ev +_ZNSt3__115messages_bynameIcED2B6v15003Ev +_ZNSt3__115messages_bynameIwEC1B6v15003EPKcy +_ZNSt3__115messages_bynameIwEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115messages_bynameIwEC2B6v15003EPKcy +_ZNSt3__115messages_bynameIwEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115messages_bynameIwED0B6v15003Ev +_ZNSt3__115messages_bynameIwED1B6v15003Ev +_ZNSt3__115messages_bynameIwED2B6v15003Ev +_ZNSt3__115numpunct_bynameIcE6__initEPKc +_ZNSt3__115numpunct_bynameIcEC1EPKcy +_ZNSt3__115numpunct_bynameIcEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115numpunct_bynameIcEC2EPKcy +_ZNSt3__115numpunct_bynameIcEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115numpunct_bynameIcED0Ev +_ZNSt3__115numpunct_bynameIcED1Ev +_ZNSt3__115numpunct_bynameIcED2Ev +_ZNSt3__115numpunct_bynameIwE6__initEPKc +_ZNSt3__115numpunct_bynameIwEC1EPKcy +_ZNSt3__115numpunct_bynameIwEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115numpunct_bynameIwEC2EPKcy +_ZNSt3__115numpunct_bynameIwEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__115numpunct_bynameIwED0Ev +_ZNSt3__115numpunct_bynameIwED1Ev +_ZNSt3__115numpunct_bynameIwED2Ev +_ZNSt3__115recursive_mutex4lockEv +_ZNSt3__115recursive_mutex6unlockEv +_ZNSt3__115recursive_mutex8try_lockEv +_ZNSt3__115recursive_mutexC1Ev +_ZNSt3__115recursive_mutexC2Ev +_ZNSt3__115recursive_mutexD1Ev +_ZNSt3__115recursive_mutexD2Ev +_ZNSt3__115system_categoryEv +_ZNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003EPKcy +_ZNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003ERKNS_12basic_stringIcS3_NS_9allocatorIcEEEEy +_ZNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003EPKcy +_ZNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003ERKNS_12basic_stringIcS3_NS_9allocatorIcEEEEy +_ZNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003EPKcy +_ZNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003ERKNS_12basic_stringIcNS2_IcEENS_9allocatorIcEEEEy +_ZNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003EPKcy +_ZNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003ERKNS_12basic_stringIcNS2_IcEENS_9allocatorIcEEEEy +_ZNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003EPKcy +_ZNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003ERKNS_12basic_stringIcS3_NS_9allocatorIcEEEEy +_ZNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003EPKcy +_ZNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003ERKNS_12basic_stringIcS3_NS_9allocatorIcEEEEy +_ZNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003EPKcy +_ZNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003ERKNS_12basic_stringIcNS2_IcEENS_9allocatorIcEEEEy +_ZNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003EPKcy +_ZNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003ERKNS_12basic_stringIcNS2_IcEENS_9allocatorIcEEEEy +_ZNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj +_ZNSt3__116__libcpp_tls_getEl +_ZNSt3__116__libcpp_tls_setElPv +_ZNSt3__116__narrow_to_utf8ILy16EED0Ev +_ZNSt3__116__narrow_to_utf8ILy16EED1Ev +_ZNSt3__116__narrow_to_utf8ILy16EED2Ev +_ZNSt3__116__narrow_to_utf8ILy32EED0Ev +_ZNSt3__116__narrow_to_utf8ILy32EED1Ev +_ZNSt3__116__narrow_to_utf8ILy32EED2Ev +_ZNSt3__116generic_categoryEv +_ZNSt3__117__assoc_sub_state10__sub_waitERNS_11unique_lockINS_5mutexEEE +_ZNSt3__117__assoc_sub_state12__make_readyEv +_ZNSt3__117__assoc_sub_state13set_exceptionESt13exception_ptr +_ZNSt3__117__assoc_sub_state16__on_zero_sharedEv +_ZNSt3__117__assoc_sub_state24set_value_at_thread_exitEv +_ZNSt3__117__assoc_sub_state28set_exception_at_thread_exitESt13exception_ptr +_ZNSt3__117__assoc_sub_state4copyEv +_ZNSt3__117__assoc_sub_state4waitEv +_ZNSt3__117__assoc_sub_state9__executeEv +_ZNSt3__117__assoc_sub_state9set_valueEv +_ZNSt3__117__widen_from_utf8ILy16EED0Ev +_ZNSt3__117__widen_from_utf8ILy16EED1Ev +_ZNSt3__117__widen_from_utf8ILy16EED2Ev +_ZNSt3__117__widen_from_utf8ILy32EED0Ev +_ZNSt3__117__widen_from_utf8ILy32EED1Ev +_ZNSt3__117__widen_from_utf8ILy32EED2Ev +_ZNSt3__117bad_function_callD0Ev +_ZNSt3__117bad_function_callD1Ev +_ZNSt3__117bad_function_callD2Ev +_ZNSt3__117declare_reachableEPv +_ZNSt3__117iostream_categoryEv +_ZNSt3__117moneypunct_bynameIcLb0EE4initEPKc +_ZNSt3__117moneypunct_bynameIcLb0EEC1B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIcLb0EEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIcLb0EEC2B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIcLb0EEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIcLb0EED0B6v15003Ev +_ZNSt3__117moneypunct_bynameIcLb0EED1B6v15003Ev +_ZNSt3__117moneypunct_bynameIcLb0EED2B6v15003Ev +_ZNSt3__117moneypunct_bynameIcLb1EE4initEPKc +_ZNSt3__117moneypunct_bynameIcLb1EEC1B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIcLb1EEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIcLb1EEC2B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIcLb1EEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIcLb1EED0B6v15003Ev +_ZNSt3__117moneypunct_bynameIcLb1EED1B6v15003Ev +_ZNSt3__117moneypunct_bynameIcLb1EED2B6v15003Ev +_ZNSt3__117moneypunct_bynameIwLb0EE4initEPKc +_ZNSt3__117moneypunct_bynameIwLb0EEC1B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIwLb0EEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIwLb0EEC2B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIwLb0EEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIwLb0EED0B6v15003Ev +_ZNSt3__117moneypunct_bynameIwLb0EED1B6v15003Ev +_ZNSt3__117moneypunct_bynameIwLb0EED2B6v15003Ev +_ZNSt3__117moneypunct_bynameIwLb1EE4initEPKc +_ZNSt3__117moneypunct_bynameIwLb1EEC1B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIwLb1EEC1B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIwLb1EEC2B6v15003EPKcy +_ZNSt3__117moneypunct_bynameIwLb1EEC2B6v15003ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEy +_ZNSt3__117moneypunct_bynameIwLb1EED0B6v15003Ev +_ZNSt3__117moneypunct_bynameIwLb1EED1B6v15003Ev +_ZNSt3__117moneypunct_bynameIwLb1EED2B6v15003Ev +_ZNSt3__118__time_get_storageIcE4initERKNS_5ctypeIcEE +_ZNSt3__118__time_get_storageIcE9__analyzeEcRKNS_5ctypeIcEE +_ZNSt3__118__time_get_storageIcEC1EPKc +_ZNSt3__118__time_get_storageIcEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__118__time_get_storageIcEC2EPKc +_ZNSt3__118__time_get_storageIcEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__118__time_get_storageIwE4initERKNS_5ctypeIwEE +_ZNSt3__118__time_get_storageIwE9__analyzeEcRKNS_5ctypeIwEE +_ZNSt3__118__time_get_storageIwEC1EPKc +_ZNSt3__118__time_get_storageIwEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__118__time_get_storageIwEC2EPKc +_ZNSt3__118__time_get_storageIwEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB6v15003ERKNS_12basic_stringIcS2_S4_EE +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE4swapB6v15003ERS5_ +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ej +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ev +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ej +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ev +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev +_ZNSt3__118condition_variable10notify_allEv +_ZNSt3__118condition_variable10notify_oneEv +_ZNSt3__118condition_variable15__do_timed_waitERNS_11unique_lockINS_5mutexEEENS_6chrono10time_pointINS5_12system_clockENS5_8durationIxNS_5ratioILx1ELx1000000000EEEEEEE +_ZNSt3__118condition_variable4waitERNS_11unique_lockINS_5mutexEEE +_ZNSt3__118condition_variableD1Ev +_ZNSt3__118condition_variableD2Ev +_ZNSt3__118shared_timed_mutex11lock_sharedEv +_ZNSt3__118shared_timed_mutex13unlock_sharedEv +_ZNSt3__118shared_timed_mutex15try_lock_sharedEv +_ZNSt3__118shared_timed_mutex4lockEv +_ZNSt3__118shared_timed_mutex6unlockEv +_ZNSt3__118shared_timed_mutex8try_lockEv +_ZNSt3__118shared_timed_mutexC1Ev +_ZNSt3__118shared_timed_mutexC2Ev +_ZNSt3__119__libcpp_mutex_lockEPPv +_ZNSt3__119__libcpp_tls_createEPlPFvPvE +_ZNSt3__119__shared_mutex_base11lock_sharedEv +_ZNSt3__119__shared_mutex_base13unlock_sharedEv +_ZNSt3__119__shared_mutex_base15try_lock_sharedEv +_ZNSt3__119__shared_mutex_base4lockEv +_ZNSt3__119__shared_mutex_base6unlockEv +_ZNSt3__119__shared_mutex_base8try_lockEv +_ZNSt3__119__shared_mutex_baseC1Ev +_ZNSt3__119__shared_mutex_baseC2Ev +_ZNSt3__119__shared_weak_count14__release_weakEv +_ZNSt3__119__shared_weak_count4lockEv +_ZNSt3__119__shared_weak_countD0Ev +_ZNSt3__119__shared_weak_countD1Ev +_ZNSt3__119__shared_weak_countD2Ev +_ZNSt3__119__thread_local_dataEv +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB6v15003ERKNS_12basic_stringIcS2_S4_EE +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE4swapB6v15003ERS5_ +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ej +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ev +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ej +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ev +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB6v15003ERKNS_12basic_stringIcS2_S4_EE +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE4swapB6v15003ERS5_ +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ej +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15003Ev +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003ERKNS_12basic_stringIcS2_S4_EEj +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ej +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003Ev +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev +_ZNSt3__119declare_no_pointersEPcy +_ZNSt3__119piecewise_constructE DATA +_ZNSt3__120__get_collation_nameEPKc +_ZNSt3__120__libcpp_atomic_waitEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEEx +_ZNSt3__120__libcpp_atomic_waitEPVKvx +_ZNSt3__120__libcpp_thread_joinEPPv +_ZNSt3__120__throw_system_errorEiPKc +_ZNSt3__121__libcpp_condvar_waitEPPvS1_ +_ZNSt3__121__libcpp_execute_onceEPPvPFvvE +_ZNSt3__121__libcpp_mutex_unlockEPPv +_ZNSt3__121__libcpp_thread_yieldEv +_ZNSt3__121__throw_runtime_errorEPKc +_ZNSt3__121__undeclare_reachableEPv +_ZNSt3__121recursive_timed_mutex4lockEv +_ZNSt3__121recursive_timed_mutex6unlockEv +_ZNSt3__121recursive_timed_mutex8try_lockEv +_ZNSt3__121recursive_timed_mutexC1Ev +_ZNSt3__121recursive_timed_mutexC2Ev +_ZNSt3__121recursive_timed_mutexD1Ev +_ZNSt3__121recursive_timed_mutexD2Ev +_ZNSt3__121undeclare_no_pointersEPcy +_ZNSt3__122__libcpp_mutex_destroyEPPv +_ZNSt3__122__libcpp_mutex_trylockEPPv +_ZNSt3__122__libcpp_thread_createEPPvPFS0_S0_ES0_ +_ZNSt3__122__libcpp_thread_detachEPPv +_ZNSt3__122__libcpp_thread_get_idEPKPv +_ZNSt3__122__libcpp_thread_isnullEPKPv +_ZNSt3__122__libcpp_verbose_abortEPKcz +_ZNSt3__122condition_variable_any10notify_allB6v15003Ev +_ZNSt3__122condition_variable_any10notify_oneB6v15003Ev +_ZNSt3__122condition_variable_anyC1B6v15003Ev +_ZNSt3__122condition_variable_anyC2B6v15003Ev +_ZNSt3__123__cxx_atomic_notify_allEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE +_ZNSt3__123__cxx_atomic_notify_allEPVKv +_ZNSt3__123__cxx_atomic_notify_oneEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE +_ZNSt3__123__cxx_atomic_notify_oneEPVKv +_ZNSt3__123__libcpp_atomic_monitorEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE +_ZNSt3__123__libcpp_atomic_monitorEPVKv +_ZNSt3__123__libcpp_condvar_signalEPPv +_ZNSt3__123__libcpp_thread_id_lessEll +_ZNSt3__124__libcpp_condvar_destroyEPPv +_ZNSt3__124__libcpp_thread_id_equalEll +_ZNSt3__125__libcpp_thread_sleep_forERKNS_6chrono8durationIxNS_5ratioILx1ELx1000000000EEEEE +_ZNSt3__125notify_all_at_thread_exitERNS_18condition_variableENS_11unique_lockINS_5mutexEEE +_ZNSt3__126__libcpp_condvar_broadcastEPPv +_ZNSt3__126__libcpp_condvar_timedwaitEPPvS1_P8timespec +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIaaEEPaEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIccEEPcEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIddEEPdEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIeeEEPeEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIffEEPfEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIhhEEPhEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIiiEEPiEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIjjEEPjEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIllEEPlEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessImmEEPmEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIssEEPsEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIttEEPtEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIwwEEPwEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIxxEEPxEEbT0_S5_T_ +_ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIyyEEPyEEbT0_S5_T_ +_ZNSt3__129__libcpp_recursive_mutex_initEPA5_Pv +_ZNSt3__129__libcpp_recursive_mutex_lockEPA5_Pv +_ZNSt3__130__libcpp_thread_get_current_idEv +_ZNSt3__131__arrive_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseEh +_ZNSt3__131__libcpp_recursive_mutex_unlockEPA5_Pv +_ZNSt3__132__destroy_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseE +_ZNSt3__132__libcpp_recursive_mutex_destroyEPA5_Pv +_ZNSt3__132__libcpp_recursive_mutex_trylockEPA5_Pv +_ZNSt3__134__construct_barrier_algorithm_baseERx +_ZNSt3__13cinE DATA +_ZNSt3__14__fs10filesystem10__absoluteERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem10hash_valueERKNS1_4pathE +_ZNSt3__14__fs10filesystem11__canonicalERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem11__copy_fileERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE +_ZNSt3__14__fs10filesystem11__file_sizeERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem12__equivalentERKNS1_4pathES4_PNS_10error_codeE +_ZNSt3__14__fs10filesystem12__remove_allERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem13__fs_is_emptyERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem13__permissionsERKNS1_4pathENS1_5permsENS1_12perm_optionsEPNS_10error_codeE +_ZNSt3__14__fs10filesystem13__resize_fileERKNS1_4pathEyPNS_10error_codeE +_ZNSt3__14__fs10filesystem14__char_to_wideERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPwy +_ZNSt3__14__fs10filesystem14__copy_symlinkERKNS1_4pathES4_PNS_10error_codeE +_ZNSt3__14__fs10filesystem14__current_pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem14__current_pathERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem14__read_symlinkERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem14__wide_to_charERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPcy +_ZNSt3__14__fs10filesystem15directory_entry12__do_refreshEv +_ZNSt3__14__fs10filesystem16_FilesystemClock3nowEv +_ZNSt3__14__fs10filesystem16_FilesystemClock9is_steadyE DATA +_ZNSt3__14__fs10filesystem16__create_symlinkERKNS1_4pathES4_PNS_10error_codeE +_ZNSt3__14__fs10filesystem16__symlink_statusERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem16filesystem_error13__create_whatEi +_ZNSt3__14__fs10filesystem16filesystem_errorD0Ev +_ZNSt3__14__fs10filesystem16filesystem_errorD1Ev +_ZNSt3__14__fs10filesystem16filesystem_errorD2Ev +_ZNSt3__14__fs10filesystem17__hard_link_countERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathENS_6chrono10time_pointINS1_16_FilesystemClockENS5_8durationInNS_5ratioILx1ELx1000000000EEEEEEEPNS_10error_codeE +_ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathES4_PNS_10error_codeE +_ZNSt3__14__fs10filesystem18__create_hard_linkERKNS1_4pathES4_PNS_10error_codeE +_ZNSt3__14__fs10filesystem18__weakly_canonicalERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem18directory_iterator11__incrementEPNS_10error_codeE +_ZNSt3__14__fs10filesystem18directory_iteratorC1ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE +_ZNSt3__14__fs10filesystem18directory_iteratorC2ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE +_ZNSt3__14__fs10filesystem20__create_directoriesERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem21__temp_directory_pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem26__create_directory_symlinkERKNS1_4pathES4_PNS_10error_codeE +_ZNSt3__14__fs10filesystem28recursive_directory_iterator11__incrementEPNS_10error_codeE +_ZNSt3__14__fs10filesystem28recursive_directory_iterator15__try_recursionEPNS_10error_codeE +_ZNSt3__14__fs10filesystem28recursive_directory_iterator5__popEPNS_10error_codeE +_ZNSt3__14__fs10filesystem28recursive_directory_iterator9__advanceEPNS_10error_codeE +_ZNSt3__14__fs10filesystem28recursive_directory_iteratorC1ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE +_ZNSt3__14__fs10filesystem28recursive_directory_iteratorC2ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE +_ZNSt3__14__fs10filesystem4path17replace_extensionERKS2_ +_ZNSt3__14__fs10filesystem4path19preferred_separatorE DATA +_ZNSt3__14__fs10filesystem4path8iterator11__decrementEv +_ZNSt3__14__fs10filesystem4path8iterator11__incrementEv +_ZNSt3__14__fs10filesystem6__copyERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE +_ZNSt3__14__fs10filesystem7__spaceERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem8__removeERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14__fs10filesystem8__renameERKNS1_4pathES4_PNS_10error_codeE +_ZNSt3__14__fs10filesystem8__statusERKNS1_4pathEPNS_10error_codeE +_ZNSt3__14cerrE DATA +_ZNSt3__14clogE DATA +_ZNSt3__14coutE DATA +_ZNSt3__14stodERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPy +_ZNSt3__14stodERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPy +_ZNSt3__14stofERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPy +_ZNSt3__14stofERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPy +_ZNSt3__14stoiERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPyi +_ZNSt3__14stoiERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPyi +_ZNSt3__14stolERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPyi +_ZNSt3__14stolERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPyi +_ZNSt3__14wcinE DATA +_ZNSt3__15alignEyyRPvRy +_ZNSt3__15ctypeIcE10table_sizeE DATA +_ZNSt3__15ctypeIcE13classic_tableEv +_ZNSt3__15ctypeIcE2idE DATA +_ZNSt3__15ctypeIcEC1EPKtby +_ZNSt3__15ctypeIcEC2EPKtby +_ZNSt3__15ctypeIcED0Ev +_ZNSt3__15ctypeIcED1Ev +_ZNSt3__15ctypeIcED2Ev +_ZNSt3__15ctypeIwE2idE DATA +_ZNSt3__15ctypeIwED0Ev +_ZNSt3__15ctypeIwED1Ev +_ZNSt3__15ctypeIwED2Ev +_ZNSt3__15mutex4lockEv +_ZNSt3__15mutex6unlockEv +_ZNSt3__15mutex8try_lockEv +_ZNSt3__15mutexD1Ev +_ZNSt3__15mutexD2Ev +_ZNSt3__15stoldERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPy +_ZNSt3__15stoldERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPy +_ZNSt3__15stollERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPyi +_ZNSt3__15stollERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPyi +_ZNSt3__15stoulERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPyi +_ZNSt3__15stoulERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPyi +_ZNSt3__15wcerrE DATA +_ZNSt3__15wclogE DATA +_ZNSt3__15wcoutE DATA +_ZNSt3__16__clocEv +_ZNSt3__16__itoa8__u32toaEjPc +_ZNSt3__16__itoa8__u64toaEyPc +_ZNSt3__16__sortIRNS_6__lessIaaEEPaEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIccEEPcEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIddEEPdEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIeeEEPeEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIffEEPfEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIhhEEPhEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIiiEEPiEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIjjEEPjEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIllEEPlEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessImmEEPmEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIssEEPsEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIttEEPtEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIwwEEPwEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIxxEEPxEEvT0_S5_T_ +_ZNSt3__16__sortIRNS_6__lessIyyEEPyEEvT0_S5_T_ +_ZNSt3__16chrono12steady_clock3nowEv +_ZNSt3__16chrono12steady_clock9is_steadyE DATA +_ZNSt3__16chrono12system_clock11from_time_tEx +_ZNSt3__16chrono12system_clock3nowEv +_ZNSt3__16chrono12system_clock9is_steadyE DATA +_ZNSt3__16chrono12system_clock9to_time_tERKNS0_10time_pointIS1_NS0_8durationIxNS_5ratioILx1ELx1000000EEEEEEE +_ZNSt3__16futureIvE3getEv +_ZNSt3__16futureIvE5shareB6v15003Ev +_ZNSt3__16futureIvEC1EPNS_17__assoc_sub_stateE +_ZNSt3__16futureIvEC2EPNS_17__assoc_sub_stateE +_ZNSt3__16futureIvED1Ev +_ZNSt3__16futureIvED2Ev +_ZNSt3__16gslice6__initEy +_ZNSt3__16locale14__install_ctorERKS0_PNS0_5facetEl +_ZNSt3__16locale2id5__getEv +_ZNSt3__16locale2id6__initEv +_ZNSt3__16locale2id9__next_idE DATA +_ZNSt3__16locale3allE DATA +_ZNSt3__16locale4noneE DATA +_ZNSt3__16locale4timeE DATA +_ZNSt3__16locale5ctypeE DATA +_ZNSt3__16locale5facet16__on_zero_sharedEv +_ZNSt3__16locale5facetD0Ev +_ZNSt3__16locale5facetD1Ev +_ZNSt3__16locale5facetD2Ev +_ZNSt3__16locale6globalERKS0_ +_ZNSt3__16locale7classicEv +_ZNSt3__16locale7collateE DATA +_ZNSt3__16locale7numericE DATA +_ZNSt3__16locale8__globalEv +_ZNSt3__16locale8messagesE DATA +_ZNSt3__16locale8monetaryE DATA +_ZNSt3__16localeC1EPKc +_ZNSt3__16localeC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__16localeC1ERKS0_ +_ZNSt3__16localeC1ERKS0_PKci +_ZNSt3__16localeC1ERKS0_RKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEi +_ZNSt3__16localeC1ERKS0_S2_i +_ZNSt3__16localeC1Ev +_ZNSt3__16localeC2EPKc +_ZNSt3__16localeC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE +_ZNSt3__16localeC2ERKS0_ +_ZNSt3__16localeC2ERKS0_PKci +_ZNSt3__16localeC2ERKS0_RKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEi +_ZNSt3__16localeC2ERKS0_S2_i +_ZNSt3__16localeC2Ev +_ZNSt3__16localeD1Ev +_ZNSt3__16localeD2Ev +_ZNSt3__16localeaSERKS0_ +_ZNSt3__16stoullERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPyi +_ZNSt3__16stoullERKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEEPyi +_ZNSt3__16thread20hardware_concurrencyEv +_ZNSt3__16thread4joinEv +_ZNSt3__16thread6detachEv +_ZNSt3__16threadD1Ev +_ZNSt3__16threadD2Ev +_ZNSt3__17__sort5IRNS_6__lessIeeEEPeEEjT0_S5_S5_S5_S5_T_ +_ZNSt3__17codecvtIDiDu9_MbstatetE2idE DATA +_ZNSt3__17codecvtIDiDu9_MbstatetED0Ev +_ZNSt3__17codecvtIDiDu9_MbstatetED1Ev +_ZNSt3__17codecvtIDiDu9_MbstatetED2Ev +_ZNSt3__17codecvtIDic9_MbstatetE2idE DATA +_ZNSt3__17codecvtIDic9_MbstatetED0Ev +_ZNSt3__17codecvtIDic9_MbstatetED1Ev +_ZNSt3__17codecvtIDic9_MbstatetED2Ev +_ZNSt3__17codecvtIDsDu9_MbstatetE2idE DATA +_ZNSt3__17codecvtIDsDu9_MbstatetED0Ev +_ZNSt3__17codecvtIDsDu9_MbstatetED1Ev +_ZNSt3__17codecvtIDsDu9_MbstatetED2Ev +_ZNSt3__17codecvtIDsc9_MbstatetE2idE DATA +_ZNSt3__17codecvtIDsc9_MbstatetED0Ev +_ZNSt3__17codecvtIDsc9_MbstatetED1Ev +_ZNSt3__17codecvtIDsc9_MbstatetED2Ev +_ZNSt3__17codecvtIcc9_MbstatetE2idE DATA +_ZNSt3__17codecvtIcc9_MbstatetED0Ev +_ZNSt3__17codecvtIcc9_MbstatetED1Ev +_ZNSt3__17codecvtIcc9_MbstatetED2Ev +_ZNSt3__17codecvtIwc9_MbstatetE2idE DATA +_ZNSt3__17codecvtIwc9_MbstatetEC1EPKcy +_ZNSt3__17codecvtIwc9_MbstatetEC1Ey +_ZNSt3__17codecvtIwc9_MbstatetEC2EPKcy +_ZNSt3__17codecvtIwc9_MbstatetEC2Ey +_ZNSt3__17codecvtIwc9_MbstatetED0Ev +_ZNSt3__17codecvtIwc9_MbstatetED1Ev +_ZNSt3__17codecvtIwc9_MbstatetED2Ev +_ZNSt3__17collateIcE2idE DATA +_ZNSt3__17collateIcEC1B6v15003Ey +_ZNSt3__17collateIcEC2B6v15003Ey +_ZNSt3__17collateIcED0Ev +_ZNSt3__17collateIcED1Ev +_ZNSt3__17collateIcED2Ev +_ZNSt3__17collateIwE2idE DATA +_ZNSt3__17collateIwEC1B6v15003Ey +_ZNSt3__17collateIwEC2B6v15003Ey +_ZNSt3__17collateIwED0Ev +_ZNSt3__17collateIwED1Ev +_ZNSt3__17collateIwED2Ev +_ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE2idE DATA +_ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003Ey +_ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003Ey +_ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE2idE DATA +_ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003Ey +_ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003Ey +_ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE2idE DATA +_ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003Ey +_ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003Ey +_ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE2idE DATA +_ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003Ey +_ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003Ey +_ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__17promiseIvE10get_futureEv +_ZNSt3__17promiseIvE13set_exceptionESt13exception_ptr +_ZNSt3__17promiseIvE24set_value_at_thread_exitEv +_ZNSt3__17promiseIvE28set_exception_at_thread_exitESt13exception_ptr +_ZNSt3__17promiseIvE9set_valueEv +_ZNSt3__17promiseIvEC1Ev +_ZNSt3__17promiseIvEC2Ev +_ZNSt3__17promiseIvED1Ev +_ZNSt3__17promiseIvED2Ev +_ZNSt3__18__rs_getEv +_ZNSt3__18__sp_mut4lockEv +_ZNSt3__18__sp_mut6unlockEv +_ZNSt3__18ios_base10exceptionsB6v15003Ej +_ZNSt3__18ios_base10floatfieldE DATA +_ZNSt3__18ios_base10scientificE DATA +_ZNSt3__18ios_base11adjustfieldE DATA +_ZNSt3__18ios_base15sync_with_stdioEb +_ZNSt3__18ios_base16__call_callbacksENS0_5eventE +_ZNSt3__18ios_base17register_callbackEPFvNS0_5eventERS0_iEi +_ZNSt3__18ios_base2inE DATA +_ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv +_ZNSt3__18ios_base34__set_failbit_and_consider_rethrowEv +_ZNSt3__18ios_base3appE DATA +_ZNSt3__18ios_base3ateE DATA +_ZNSt3__18ios_base3decE DATA +_ZNSt3__18ios_base3hexE DATA +_ZNSt3__18ios_base3octE DATA +_ZNSt3__18ios_base3outE DATA +_ZNSt3__18ios_base4InitC1Ev +_ZNSt3__18ios_base4InitC2Ev +_ZNSt3__18ios_base4InitD1Ev +_ZNSt3__18ios_base4InitD2Ev +_ZNSt3__18ios_base4initEPv +_ZNSt3__18ios_base4leftE DATA +_ZNSt3__18ios_base4moveERS0_ +_ZNSt3__18ios_base4setfB6v15003Ej +_ZNSt3__18ios_base4setfB6v15003Ejj +_ZNSt3__18ios_base4swapERS0_ +_ZNSt3__18ios_base5clearEj +_ZNSt3__18ios_base5fixedE DATA +_ZNSt3__18ios_base5flagsB6v15003Ej +_ZNSt3__18ios_base5imbueERKNS_6localeE +_ZNSt3__18ios_base5iwordEi +_ZNSt3__18ios_base5pwordEi +_ZNSt3__18ios_base5rightE DATA +_ZNSt3__18ios_base5truncE DATA +_ZNSt3__18ios_base5widthB6v15003Ex +_ZNSt3__18ios_base6badbitE DATA +_ZNSt3__18ios_base6binaryE DATA +_ZNSt3__18ios_base6eofbitE DATA +_ZNSt3__18ios_base6skipwsE DATA +_ZNSt3__18ios_base6unsetfB6v15003Ej +_ZNSt3__18ios_base6xallocEv +_ZNSt3__18ios_base7copyfmtERKS0_ +_ZNSt3__18ios_base7failbitE DATA +_ZNSt3__18ios_base7failureC1EPKcRKNS_10error_codeE +_ZNSt3__18ios_base7failureC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_10error_codeE +_ZNSt3__18ios_base7failureC2EPKcRKNS_10error_codeE +_ZNSt3__18ios_base7failureC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_10error_codeE +_ZNSt3__18ios_base7failureD0Ev +_ZNSt3__18ios_base7failureD1Ev +_ZNSt3__18ios_base7failureD2Ev +_ZNSt3__18ios_base7goodbitE DATA +_ZNSt3__18ios_base7showposE DATA +_ZNSt3__18ios_base7unitbufE DATA +_ZNSt3__18ios_base8internalE DATA +_ZNSt3__18ios_base8setstateB6v15003Ej +_ZNSt3__18ios_base8showbaseE DATA +_ZNSt3__18ios_base9__xindex_E DATA +_ZNSt3__18ios_base9basefieldE DATA +_ZNSt3__18ios_base9boolalphaE DATA +_ZNSt3__18ios_base9precisionB6v15003Ex +_ZNSt3__18ios_base9showpointE DATA +_ZNSt3__18ios_base9uppercaseE DATA +_ZNSt3__18ios_baseD0Ev +_ZNSt3__18ios_baseD1Ev +_ZNSt3__18ios_baseD2Ev +_ZNSt3__18messagesIcE2idE DATA +_ZNSt3__18messagesIcEC1B6v15003Ey +_ZNSt3__18messagesIcEC2B6v15003Ey +_ZNSt3__18messagesIcED0B6v15003Ev +_ZNSt3__18messagesIcED1B6v15003Ev +_ZNSt3__18messagesIcED2B6v15003Ev +_ZNSt3__18messagesIwE2idE DATA +_ZNSt3__18messagesIwEC1B6v15003Ey +_ZNSt3__18messagesIwEC2B6v15003Ey +_ZNSt3__18messagesIwED0B6v15003Ev +_ZNSt3__18messagesIwED1B6v15003Ev +_ZNSt3__18messagesIwED2B6v15003Ev +_ZNSt3__18numpunctIcE2idE DATA +_ZNSt3__18numpunctIcEC1Ey +_ZNSt3__18numpunctIcEC2Ey +_ZNSt3__18numpunctIcED0Ev +_ZNSt3__18numpunctIcED1Ev +_ZNSt3__18numpunctIcED2Ev +_ZNSt3__18numpunctIwE2idE DATA +_ZNSt3__18numpunctIwEC1Ey +_ZNSt3__18numpunctIwEC2Ey +_ZNSt3__18numpunctIwED0Ev +_ZNSt3__18numpunctIwED1Ev +_ZNSt3__18numpunctIwED2Ev +_ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE2idE DATA +_ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003Ey +_ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003Ey +_ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE2idE DATA +_ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003Ey +_ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003Ey +_ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE2idE DATA +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003EPKcy +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003ERKNS_12basic_stringIcS3_NS_9allocatorIcEEEEy +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003Ey +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003EPKcy +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003ERKNS_12basic_stringIcS3_NS_9allocatorIcEEEEy +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003Ey +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE2idE DATA +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003EPKcy +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003ERKNS_12basic_stringIcNS2_IcEENS_9allocatorIcEEEEy +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003Ey +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003EPKcy +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003ERKNS_12basic_stringIcNS2_IcEENS_9allocatorIcEEEEy +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003Ey +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__18to_charsEPcS0_d +_ZNSt3__18to_charsEPcS0_dNS_12chars_formatE +_ZNSt3__18to_charsEPcS0_dNS_12chars_formatEi +_ZNSt3__18to_charsEPcS0_e +_ZNSt3__18to_charsEPcS0_eNS_12chars_formatE +_ZNSt3__18to_charsEPcS0_eNS_12chars_formatEi +_ZNSt3__18to_charsEPcS0_f +_ZNSt3__18to_charsEPcS0_fNS_12chars_formatE +_ZNSt3__18to_charsEPcS0_fNS_12chars_formatEi +_ZNSt3__18valarrayIyE6resizeEyy +_ZNSt3__18valarrayIyEC1Ey +_ZNSt3__18valarrayIyEC2Ey +_ZNSt3__18valarrayIyED1Ev +_ZNSt3__18valarrayIyED2Ev +_ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ +_ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc +_ZNSt3__19__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_ +_ZNSt3__19__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_ +_ZNSt3__19__num_getIcEaSERKS1_ +_ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw +_ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw +_ZNSt3__19__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw +_ZNSt3__19__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_ +_ZNSt3__19__num_getIwEaSERKS1_ +_ZNSt3__19__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE +_ZNSt3__19__num_putIcE23__widen_and_group_floatEPcS2_S2_S2_RS2_S3_RKNS_6localeE +_ZNSt3__19__num_putIcEaSERKS1_ +_ZNSt3__19__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE +_ZNSt3__19__num_putIwE23__widen_and_group_floatEPcS2_S2_PwRS3_S4_RKNS_6localeE +_ZNSt3__19__num_putIwEaSERKS1_ +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE10exceptionsB6v15003Ej +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE3tieB6v15003EPNS_13basic_ostreamIcS2_EE +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15003Ec +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE4initB6v15003EPNS_15basic_streambufIcS2_EE +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE4moveB6v15003EOS3_ +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE4moveB6v15003ERS3_ +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE4swapB6v15003ERS3_ +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE5clearB6v15003Ej +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE5imbueB6v15003ERKNS_6localeE +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15003EPNS_15basic_streambufIcS2_EE +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE7copyfmtERKS3_ +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15003Ej +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE9set_rdbufB6v15003EPNS_15basic_streambufIcS2_EE +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEEC1B6v15003EPNS_15basic_streambufIcS2_EE +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEEC1B6v15003Ev +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEEC2B6v15003EPNS_15basic_streambufIcS2_EE +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEEC2B6v15003Ev +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEED0Ev +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEED1Ev +_ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE10exceptionsB6v15003Ej +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE3tieB6v15003EPNS_13basic_ostreamIwS2_EE +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE4fillB6v15003Ew +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE4initB6v15003EPNS_15basic_streambufIwS2_EE +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE4moveB6v15003EOS3_ +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE4moveB6v15003ERS3_ +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE4swapB6v15003ERS3_ +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE5clearB6v15003Ej +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE5imbueB6v15003ERKNS_6localeE +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE5rdbufB6v15003EPNS_15basic_streambufIwS2_EE +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE7copyfmtERKS3_ +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE8setstateB6v15003Ej +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEE9set_rdbufB6v15003EPNS_15basic_streambufIwS2_EE +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEEC1B6v15003EPNS_15basic_streambufIwS2_EE +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEEC1B6v15003Ev +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEEC2B6v15003EPNS_15basic_streambufIwS2_EE +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEEC2B6v15003Ev +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEED0Ev +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEED1Ev +_ZNSt3__19basic_iosIwNS_11char_traitsIwEEED2Ev +_ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE2idE DATA +_ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_ +_ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003Ey +_ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003Ey +_ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE2idE DATA +_ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_ +_ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003Ey +_ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003Ey +_ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE2idE DATA +_ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC1B6v15003Ey +_ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEC2B6v15003Ey +_ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0B6v15003Ev +_ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED1B6v15003Ev +_ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2B6v15003Ev +_ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE2idE DATA +_ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC1B6v15003Ey +_ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEC2B6v15003Ey +_ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0B6v15003Ev +_ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED1B6v15003Ev +_ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2B6v15003Ev +_ZNSt3__19strstreamD0Ev +_ZNSt3__19strstreamD1Ev +_ZNSt3__19strstreamD2Ev +_ZNSt3__19to_stringEd +_ZNSt3__19to_stringEe +_ZNSt3__19to_stringEf +_ZNSt3__19to_stringEi +_ZNSt3__19to_stringEj +_ZNSt3__19to_stringEl +_ZNSt3__19to_stringEm +_ZNSt3__19to_stringEx +_ZNSt3__19to_stringEy +_ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_ +_ZNSt8bad_castC1Ev +_ZNSt8bad_castC2Ev +_ZNSt8bad_castD0Ev +_ZNSt8bad_castD1Ev +_ZNSt8bad_castD2Ev +_ZNSt9bad_allocC1Ev +_ZNSt9bad_allocC2Ev +_ZNSt9bad_allocD0Ev +_ZNSt9bad_allocD1Ev +_ZNSt9bad_allocD2Ev +_ZNSt9exceptionD0Ev +_ZNSt9exceptionD1Ev +_ZNSt9exceptionD2Ev +_ZNSt9type_infoD0Ev +_ZNSt9type_infoD1Ev +_ZNSt9type_infoD2Ev +_ZSt10unexpectedv +_ZSt13get_terminatev +_ZSt13set_terminatePFvvE +_ZSt14get_unexpectedv +_ZSt14set_unexpectedPFvvE +_ZSt15get_new_handlerv +_ZSt15set_new_handlerPFvvE +_ZSt17__throw_bad_allocv +_ZSt17current_exceptionv +_ZSt17rethrow_exceptionSt13exception_ptr +_ZSt18uncaught_exceptionv +_ZSt19uncaught_exceptionsv +_ZSt7nothrow DATA +_ZSt9terminatev +_ZTCNSt3__110istrstreamE0_NS_13basic_istreamIcNS_11char_traitsIcEEEE DATA +_ZTCNSt3__110ostrstreamE0_NS_13basic_ostreamIcNS_11char_traitsIcEEEE DATA +_ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE DATA +_ZTCNSt3__114basic_iostreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE DATA +_ZTCNSt3__114basic_iostreamIcNS_11char_traitsIcEEEE16_NS_13basic_ostreamIcS2_EE DATA +_ZTCNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE0_NS_13basic_ostreamIcS2_EE DATA +_ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_istreamIcS2_EE DATA +_ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_14basic_iostreamIcS2_EE DATA +_ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE16_NS_13basic_ostreamIcS2_EE DATA +_ZTCNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_istreamIcS2_EE DATA +_ZTCNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_ostreamIcS2_EE DATA +_ZTCNSt3__19strstreamE0_NS_13basic_istreamIcNS_11char_traitsIcEEEE DATA +_ZTCNSt3__19strstreamE0_NS_14basic_iostreamIcNS_11char_traitsIcEEEE DATA +_ZTCNSt3__19strstreamE16_NS_13basic_ostreamIcNS_11char_traitsIcEEEE DATA +_ZTIDh DATA +_ZTIDi DATA +_ZTIDn DATA +_ZTIDs DATA +_ZTIDu DATA +_ZTIPDh DATA +_ZTIPDi DATA +_ZTIPDn DATA +_ZTIPDs DATA +_ZTIPDu DATA +_ZTIPKDh DATA +_ZTIPKDi DATA +_ZTIPKDn DATA +_ZTIPKDs DATA +_ZTIPKDu DATA +_ZTIPKa DATA +_ZTIPKb DATA +_ZTIPKc DATA +_ZTIPKd DATA +_ZTIPKe DATA +_ZTIPKf DATA +_ZTIPKg DATA +_ZTIPKh DATA +_ZTIPKi DATA +_ZTIPKj DATA +_ZTIPKl DATA +_ZTIPKm DATA +_ZTIPKn DATA +_ZTIPKo DATA +_ZTIPKs DATA +_ZTIPKt DATA +_ZTIPKv DATA +_ZTIPKw DATA +_ZTIPKx DATA +_ZTIPKy DATA +_ZTIPa DATA +_ZTIPb DATA +_ZTIPc DATA +_ZTIPd DATA +_ZTIPe DATA +_ZTIPf DATA +_ZTIPg DATA +_ZTIPh DATA +_ZTIPi DATA +_ZTIPj DATA +_ZTIPl DATA +_ZTIPm DATA +_ZTIPn DATA +_ZTIPo DATA +_ZTIPs DATA +_ZTIPt DATA +_ZTIPv DATA +_ZTIPw DATA +_ZTIPx DATA +_ZTIPy DATA +_ZTIa DATA +_ZTIb DATA +_ZTIc DATA +_ZTId DATA +_ZTIe DATA +_ZTIf DATA +_ZTIg DATA +_ZTIh DATA +_ZTIi DATA +_ZTIj DATA +_ZTIl DATA +_ZTIm DATA +_ZTIn DATA +_ZTIo DATA +_ZTIs DATA +_ZTIt DATA +_ZTIv DATA +_ZTIw DATA +_ZTIx DATA +_ZTIy DATA +_ZTSDh DATA +_ZTSDi DATA +_ZTSDn DATA +_ZTSDs DATA +_ZTSDu DATA +_ZTSPDh DATA +_ZTSPDi DATA +_ZTSPDn DATA +_ZTSPDs DATA +_ZTSPDu DATA +_ZTSPKDh DATA +_ZTSPKDi DATA +_ZTSPKDn DATA +_ZTSPKDs DATA +_ZTSPKDu DATA +_ZTSPKa DATA +_ZTSPKb DATA +_ZTSPKc DATA +_ZTSPKd DATA +_ZTSPKe DATA +_ZTSPKf DATA +_ZTSPKg DATA +_ZTSPKh DATA +_ZTSPKi DATA +_ZTSPKj DATA +_ZTSPKl DATA +_ZTSPKm DATA +_ZTSPKn DATA +_ZTSPKo DATA +_ZTSPKs DATA +_ZTSPKt DATA +_ZTSPKv DATA +_ZTSPKw DATA +_ZTSPKx DATA +_ZTSPKy DATA +_ZTSPa DATA +_ZTSPb DATA +_ZTSPc DATA +_ZTSPd DATA +_ZTSPe DATA +_ZTSPf DATA +_ZTSPg DATA +_ZTSPh DATA +_ZTSPi DATA +_ZTSPj DATA +_ZTSPl DATA +_ZTSPm DATA +_ZTSPn DATA +_ZTSPo DATA +_ZTSPs DATA +_ZTSPt DATA +_ZTSPv DATA +_ZTSPw DATA +_ZTSPx DATA +_ZTSPy DATA +_ZTSa DATA +_ZTSb DATA +_ZTSc DATA +_ZTSd DATA +_ZTSe DATA +_ZTSf DATA +_ZTSg DATA +_ZTSh DATA +_ZTSi DATA +_ZTSj DATA +_ZTSl DATA +_ZTSm DATA +_ZTSn DATA +_ZTSo DATA +_ZTSs DATA +_ZTSt DATA +_ZTSv DATA +_ZTSw DATA +_ZTSx DATA +_ZTSy DATA +_ZTTNSt3__110istrstreamE DATA +_ZTTNSt3__110ostrstreamE DATA +_ZTTNSt3__113basic_istreamIcNS_11char_traitsIcEEEE DATA +_ZTTNSt3__113basic_istreamIwNS_11char_traitsIwEEEE DATA +_ZTTNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE DATA +_ZTTNSt3__113basic_ostreamIwNS_11char_traitsIwEEEE DATA +_ZTTNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE DATA +_ZTTNSt3__114basic_iostreamIcNS_11char_traitsIcEEEE DATA +_ZTTNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE DATA +_ZTTNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTTNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTTNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTTNSt3__19strstreamE DATA +_ZTVN10__cxxabiv116__enum_type_infoE DATA +_ZTVN10__cxxabiv116__shim_type_infoE DATA +_ZTVN10__cxxabiv117__array_type_infoE DATA +_ZTVN10__cxxabiv117__class_type_infoE DATA +_ZTVN10__cxxabiv117__pbase_type_infoE DATA +_ZTVN10__cxxabiv119__pointer_type_infoE DATA +_ZTVN10__cxxabiv120__function_type_infoE DATA +_ZTVN10__cxxabiv120__si_class_type_infoE DATA +_ZTVN10__cxxabiv121__vmi_class_type_infoE DATA +_ZTVN10__cxxabiv123__fundamental_type_infoE DATA +_ZTVN10__cxxabiv129__pointer_to_member_type_infoE DATA +_ZTVNSt12experimental15fundamentals_v112bad_any_castE DATA +_ZTVNSt12experimental19bad_optional_accessE DATA +_ZTVNSt3__110istrstreamE DATA +_ZTVNSt3__110moneypunctIcLb0EEE DATA +_ZTVNSt3__110moneypunctIcLb1EEE DATA +_ZTVNSt3__110moneypunctIwLb0EEE DATA +_ZTVNSt3__110moneypunctIwLb1EEE DATA +_ZTVNSt3__110ostrstreamE DATA +_ZTVNSt3__111regex_errorE DATA +_ZTVNSt3__112bad_weak_ptrE DATA +_ZTVNSt3__112ctype_bynameIcEE DATA +_ZTVNSt3__112ctype_bynameIwEE DATA +_ZTVNSt3__112future_errorE DATA +_ZTVNSt3__112strstreambufE DATA +_ZTVNSt3__112system_errorE DATA +_ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__113basic_istreamIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__113basic_istreamIwNS_11char_traitsIwEEEE DATA +_ZTVNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__113basic_ostreamIwNS_11char_traitsIwEEEE DATA +_ZTVNSt3__114__codecvt_utf8IDiEE DATA +_ZTVNSt3__114__codecvt_utf8IDsEE DATA +_ZTVNSt3__114__codecvt_utf8IwEE DATA +_ZTVNSt3__114__shared_countE DATA +_ZTVNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__114basic_iostreamIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__114codecvt_bynameIDiDu9_MbstatetEE DATA +_ZTVNSt3__114codecvt_bynameIDic9_MbstatetEE DATA +_ZTVNSt3__114codecvt_bynameIDsDu9_MbstatetEE DATA +_ZTVNSt3__114codecvt_bynameIDsc9_MbstatetEE DATA +_ZTVNSt3__114codecvt_bynameIcc9_MbstatetEE DATA +_ZTVNSt3__114codecvt_bynameIwc9_MbstatetEE DATA +_ZTVNSt3__114collate_bynameIcEE DATA +_ZTVNSt3__114collate_bynameIwEE DATA +_ZTVNSt3__114error_categoryE DATA +_ZTVNSt3__115__codecvt_utf16IDiLb0EEE DATA +_ZTVNSt3__115__codecvt_utf16IDiLb1EEE DATA +_ZTVNSt3__115__codecvt_utf16IDsLb0EEE DATA +_ZTVNSt3__115__codecvt_utf16IDsLb1EEE DATA +_ZTVNSt3__115__codecvt_utf16IwLb0EEE DATA +_ZTVNSt3__115__codecvt_utf16IwLb1EEE DATA +_ZTVNSt3__115basic_streambufIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__115basic_streambufIwNS_11char_traitsIwEEEE DATA +_ZTVNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTVNSt3__115messages_bynameIcEE DATA +_ZTVNSt3__115messages_bynameIwEE DATA +_ZTVNSt3__115numpunct_bynameIcEE DATA +_ZTVNSt3__115numpunct_bynameIwEE DATA +_ZTVNSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__116__narrow_to_utf8ILy16EEE DATA +_ZTVNSt3__116__narrow_to_utf8ILy32EEE DATA +_ZTVNSt3__117__assoc_sub_stateE DATA +_ZTVNSt3__117__widen_from_utf8ILy16EEE DATA +_ZTVNSt3__117__widen_from_utf8ILy32EEE DATA +_ZTVNSt3__117bad_function_callE DATA +_ZTVNSt3__117moneypunct_bynameIcLb0EEE DATA +_ZTVNSt3__117moneypunct_bynameIcLb1EEE DATA +_ZTVNSt3__117moneypunct_bynameIwLb0EEE DATA +_ZTVNSt3__117moneypunct_bynameIwLb1EEE DATA +_ZTVNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTVNSt3__119__shared_weak_countE DATA +_ZTVNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTVNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTVNSt3__120__codecvt_utf8_utf16IDiEE DATA +_ZTVNSt3__120__codecvt_utf8_utf16IDsEE DATA +_ZTVNSt3__120__codecvt_utf8_utf16IwEE DATA +_ZTVNSt3__120__time_get_c_storageIcEE DATA +_ZTVNSt3__120__time_get_c_storageIwEE DATA +_ZTVNSt3__14__fs10filesystem16filesystem_errorE DATA +_ZTVNSt3__15ctypeIcEE DATA +_ZTVNSt3__15ctypeIwEE DATA +_ZTVNSt3__16locale5facetE DATA +_ZTVNSt3__17codecvtIDiDu9_MbstatetEE DATA +_ZTVNSt3__17codecvtIDic9_MbstatetEE DATA +_ZTVNSt3__17codecvtIDsDu9_MbstatetEE DATA +_ZTVNSt3__17codecvtIDsc9_MbstatetEE DATA +_ZTVNSt3__17codecvtIcc9_MbstatetEE DATA +_ZTVNSt3__17codecvtIwc9_MbstatetEE DATA +_ZTVNSt3__17collateIcEE DATA +_ZTVNSt3__17collateIwEE DATA +_ZTVNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__18ios_base7failureE DATA +_ZTVNSt3__18ios_baseE DATA +_ZTVNSt3__18messagesIcEE DATA +_ZTVNSt3__18messagesIwEE DATA +_ZTVNSt3__18numpunctIcEE DATA +_ZTVNSt3__18numpunctIwEE DATA +_ZTVNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__19basic_iosIcNS_11char_traitsIcEEEE DATA +_ZTVNSt3__19basic_iosIwNS_11char_traitsIwEEEE DATA +_ZTVNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE DATA +_ZTVNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE DATA +_ZTVNSt3__19strstreamE DATA +_ZTVSt10bad_typeid DATA +_ZTVSt11logic_error DATA +_ZTVSt11range_error DATA +_ZTVSt12bad_any_cast DATA +_ZTVSt12domain_error DATA +_ZTVSt12length_error DATA +_ZTVSt12out_of_range DATA +_ZTVSt13bad_exception DATA +_ZTVSt13runtime_error DATA +_ZTVSt14overflow_error DATA +_ZTVSt15underflow_error DATA +_ZTVSt16invalid_argument DATA +_ZTVSt16nested_exception DATA +_ZTVSt18bad_variant_access DATA +_ZTVSt19bad_optional_access DATA +_ZTVSt20bad_array_new_length DATA +_ZTVSt8bad_cast DATA +_ZTVSt9bad_alloc DATA +_ZTVSt9exception DATA +_ZTVSt9type_info DATA +_ZThn16_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__XB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__cB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__rB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__xB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE7__am_pmB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE7__weeksB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__monthsB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__XB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__cB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__rB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3__xB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE7__am_pmB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE7__weeksB6v15003Ev +_ZThn16_NKSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__monthsB6v15003Ev +_ZThn16_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev +_ZThn16_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev +_ZThn16_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZThn16_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZThn16_NSt3__19strstreamD0Ev +_ZThn16_NSt3__19strstreamD1Ev +_ZTv0_n24_NSt3__110istrstreamD0Ev +_ZTv0_n24_NSt3__110istrstreamD1Ev +_ZTv0_n24_NSt3__110ostrstreamD0Ev +_ZTv0_n24_NSt3__110ostrstreamD1Ev +_ZTv0_n24_NSt3__113basic_istreamIcNS_11char_traitsIcEEED0Ev +_ZTv0_n24_NSt3__113basic_istreamIcNS_11char_traitsIcEEED1Ev +_ZTv0_n24_NSt3__113basic_istreamIwNS_11char_traitsIwEEED0Ev +_ZTv0_n24_NSt3__113basic_istreamIwNS_11char_traitsIwEEED1Ev +_ZTv0_n24_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev +_ZTv0_n24_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev +_ZTv0_n24_NSt3__113basic_ostreamIwNS_11char_traitsIwEEED0Ev +_ZTv0_n24_NSt3__113basic_ostreamIwNS_11char_traitsIwEEED1Ev +_ZTv0_n24_NSt3__114basic_ifstreamIcNS_11char_traitsIcEEED0Ev +_ZTv0_n24_NSt3__114basic_ifstreamIcNS_11char_traitsIcEEED1Ev +_ZTv0_n24_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev +_ZTv0_n24_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev +_ZTv0_n24_NSt3__114basic_ofstreamIcNS_11char_traitsIcEEED0Ev +_ZTv0_n24_NSt3__114basic_ofstreamIcNS_11char_traitsIcEEED1Ev +_ZTv0_n24_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZTv0_n24_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZTv0_n24_NSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZTv0_n24_NSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZTv0_n24_NSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev +_ZTv0_n24_NSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev +_ZTv0_n24_NSt3__19strstreamD0Ev +_ZTv0_n24_NSt3__19strstreamD1Ev +_ZdaPv +_ZdaPvRKSt9nothrow_t +_ZdaPvSt11align_val_t +_ZdaPvSt11align_val_tRKSt9nothrow_t +_ZdaPvy +_ZdaPvySt11align_val_t +_ZdlPv +_ZdlPvRKSt9nothrow_t +_ZdlPvSt11align_val_t +_ZdlPvSt11align_val_tRKSt9nothrow_t +_ZdlPvy +_ZdlPvySt11align_val_t +_Znay +_ZnayRKSt9nothrow_t +_ZnaySt11align_val_t +_ZnaySt11align_val_tRKSt9nothrow_t +_Znwy +_ZnwyRKSt9nothrow_t +_ZnwySt11align_val_t +_ZnwySt11align_val_tRKSt9nothrow_t +__cxa_allocate_dependent_exception +__cxa_allocate_exception +__cxa_bad_cast +__cxa_bad_typeid +__cxa_begin_catch +__cxa_call_unexpected +__cxa_current_exception_type +__cxa_current_primary_exception +__cxa_decrement_exception_refcount +__cxa_deleted_virtual +__cxa_demangle +__cxa_end_catch +__cxa_free_dependent_exception +__cxa_free_exception +__cxa_get_exception_ptr +__cxa_get_globals +__cxa_get_globals_fast +__cxa_guard_abort +__cxa_guard_acquire +__cxa_guard_release +__cxa_increment_exception_refcount +__cxa_new_handler DATA +__cxa_pure_virtual +__cxa_rethrow +__cxa_rethrow_primary_exception +__cxa_terminate_handler DATA +__cxa_throw +__cxa_throw_bad_array_new_length +__cxa_uncaught_exception +__cxa_uncaught_exceptions +__cxa_unexpected_handler DATA +__cxa_vec_cctor +__cxa_vec_cleanup +__cxa_vec_ctor +__cxa_vec_delete +__cxa_vec_delete2 +__cxa_vec_delete3 +__cxa_vec_dtor +__cxa_vec_new +__cxa_vec_new2 +__cxa_vec_new3 +__dynamic_cast +__gxx_personality_seh0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.dll.a new file mode 100644 index 0000000..c82966a Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.lib new file mode 100644 index 0000000..c82966a Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++abi.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++abi.a new file mode 100644 index 0000000..7a17380 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++abi.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++experimental.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++experimental.a new file mode 100644 index 0000000..7178804 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libc++experimental.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.def new file mode 100644 index 0000000..35fbe64 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.def @@ -0,0 +1,13 @@ +; +; Definition file of libcgif-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libcgif-0.dll" +EXPORTS +cgif_addframe +cgif_close +cgif_newgif +cgif_raw_addframe +cgif_raw_close +cgif_raw_newgif diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.dll.a new file mode 100644 index 0000000..ce6bce8 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.lib new file mode 100644 index 0000000..ce6bce8 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libcgif.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.def new file mode 100644 index 0000000..be20aac --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.def @@ -0,0 +1,136 @@ +; +; Definition file of libexif-12.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libexif-12.dll" +EXPORTS +exif_array_set_byte_order +exif_byte_order_get_name +exif_content_add_entry +exif_content_dump +exif_content_fix +exif_content_foreach_entry +exif_content_free +exif_content_get_entry +exif_content_get_ifd +exif_content_log +exif_content_new +exif_content_new_mem +exif_content_ref +exif_content_remove_entry +exif_content_unref +exif_data_dump +exif_data_fix +exif_data_foreach_content +exif_data_free +exif_data_get_byte_order +exif_data_get_data_type +exif_data_get_log +exif_data_get_mnote_data +exif_data_load_data +exif_data_log +exif_data_new +exif_data_new_from_data +exif_data_new_from_file +exif_data_new_mem +exif_data_option_get_description +exif_data_option_get_name +exif_data_ref +exif_data_save_data +exif_data_set_byte_order +exif_data_set_data_type +exif_data_set_option +exif_data_unref +exif_data_unset_option +exif_entry_dump +exif_entry_fix +exif_entry_free +exif_entry_get_value +exif_entry_initialize +exif_entry_new +exif_entry_new_mem +exif_entry_ref +exif_entry_unref +exif_format_get_name +exif_format_get_size +exif_get_long +exif_get_rational +exif_get_short +exif_get_slong +exif_get_srational +exif_get_sshort +exif_ifd_get_name +exif_loader_get_buf +exif_loader_get_data +exif_loader_log +exif_loader_new +exif_loader_new_mem +exif_loader_ref +exif_loader_reset +exif_loader_unref +exif_loader_write +exif_loader_write_file +exif_log +exif_log_code_get_message +exif_log_code_get_title +exif_log_free +exif_log_new +exif_log_new_mem +exif_log_ref +exif_log_set_func +exif_log_unref +exif_logv +exif_mem_alloc +exif_mem_free +exif_mem_new +exif_mem_new_default +exif_mem_realloc +exif_mem_ref +exif_mem_unref +exif_mnote_data_canon_new +exif_mnote_data_construct +exif_mnote_data_count +exif_mnote_data_get_description +exif_mnote_data_get_id +exif_mnote_data_get_name +exif_mnote_data_get_title +exif_mnote_data_get_value +exif_mnote_data_load +exif_mnote_data_log +exif_mnote_data_olympus_new +exif_mnote_data_pentax_new +exif_mnote_data_ref +exif_mnote_data_save +exif_mnote_data_set_byte_order +exif_mnote_data_set_offset +exif_mnote_data_unref +exif_set_long +exif_set_rational +exif_set_short +exif_set_slong +exif_set_srational +exif_set_sshort +exif_tag_from_name +exif_tag_get_description +exif_tag_get_description_in_ifd +exif_tag_get_name +exif_tag_get_name_in_ifd +exif_tag_get_support_level_in_ifd +exif_tag_get_title +exif_tag_get_title_in_ifd +exif_tag_table_count +exif_tag_table_get_name +exif_tag_table_get_tag +mnote_canon_entry_get_value +mnote_canon_tag_get_description +mnote_canon_tag_get_name +mnote_canon_tag_get_title +mnote_olympus_entry_get_value +mnote_olympus_tag_get_description +mnote_olympus_tag_get_name +mnote_olympus_tag_get_title +mnote_pentax_entry_get_value +mnote_pentax_tag_get_description +mnote_pentax_tag_get_name +mnote_pentax_tag_get_title diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.dll.a new file mode 100644 index 0000000..c59a861 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.lib new file mode 100644 index 0000000..c59a861 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexif.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.def new file mode 100644 index 0000000..b035dbf --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.def @@ -0,0 +1,94 @@ +; +; Definition file of libexpat-1.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libexpat-1.dll" +EXPORTS +XML_DefaultCurrent +XML_ErrorString +XML_ExpatVersion +XML_ExpatVersionInfo +XML_ExternalEntityParserCreate +XML_FreeContentModel +XML_GetBase +XML_GetBuffer +XML_GetCurrentByteCount +XML_GetCurrentByteIndex +XML_GetCurrentColumnNumber +XML_GetCurrentLineNumber +XML_GetErrorCode +XML_GetFeatureList +XML_GetIdAttributeIndex +XML_GetInputContext +XML_GetParsingStatus +XML_GetSpecifiedAttributeCount +XML_MemFree +XML_MemMalloc +XML_MemRealloc +XML_Parse +XML_ParseBuffer +XML_ParserCreate +XML_ParserCreateNS +XML_ParserCreate_MM +XML_ParserFree +XML_ParserReset +XML_ResumeParser +XML_SetAttlistDeclHandler +XML_SetBase +XML_SetBillionLaughsAttackProtectionActivationThreshold +XML_SetBillionLaughsAttackProtectionMaximumAmplification +XML_SetCdataSectionHandler +XML_SetCharacterDataHandler +XML_SetCommentHandler +XML_SetDefaultHandler +XML_SetDefaultHandlerExpand +XML_SetDoctypeDeclHandler +XML_SetElementDeclHandler +XML_SetElementHandler +XML_SetEncoding +XML_SetEndCdataSectionHandler +XML_SetEndDoctypeDeclHandler +XML_SetEndElementHandler +XML_SetEndNamespaceDeclHandler +XML_SetEntityDeclHandler +XML_SetExternalEntityRefHandler +XML_SetExternalEntityRefHandlerArg +XML_SetHashSalt +XML_SetNamespaceDeclHandler +XML_SetNotStandaloneHandler +XML_SetNotationDeclHandler +XML_SetParamEntityParsing +XML_SetProcessingInstructionHandler +XML_SetReturnNSTriplet +XML_SetSkippedEntityHandler +XML_SetStartCdataSectionHandler +XML_SetStartDoctypeDeclHandler +XML_SetStartElementHandler +XML_SetStartNamespaceDeclHandler +XML_SetUnknownEncodingHandler +XML_SetUnparsedEntityDeclHandler +XML_SetUserData +XML_SetXmlDeclHandler +XML_StopParser +XML_UseForeignDTD +XML_UseParserAsHandlerArg +XmlGetUtf16InternalEncoding +XmlGetUtf16InternalEncodingNS +XmlGetUtf8InternalEncoding +XmlGetUtf8InternalEncodingNS +XmlInitEncoding +XmlInitEncodingNS +XmlInitUnknownEncoding +XmlInitUnknownEncodingNS +XmlParseXmlDecl +XmlParseXmlDeclNS +XmlPrologStateInit +XmlPrologStateInitExternalEntity +XmlSizeOfUnknownEncoding +XmlUtf16Encode +XmlUtf8Encode +_INTERNAL_trim_to_complete_utf8_characters +testingAccountingGetCountBytesDirect +testingAccountingGetCountBytesIndirect +unsignedCharToPrintable diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.dll.a new file mode 100644 index 0000000..53a4696 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.lib new file mode 100644 index 0000000..53a4696 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libexpat.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.def new file mode 100644 index 0000000..a1af0ab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.def @@ -0,0 +1,58 @@ +; +; Definition file of libffi-8.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libffi-8.dll" +EXPORTS +ffi_call +ffi_call_go +ffi_call_win64 +ffi_closure_alloc +ffi_closure_free +ffi_closure_win64 +ffi_closure_win64_inner +ffi_data_to_code_pointer +ffi_get_struct_offsets +ffi_go_closure_win64 +ffi_java_ptrarray_to_raw +ffi_java_raw_call +ffi_java_raw_size +ffi_java_raw_to_ptrarray +ffi_prep_cif +ffi_prep_cif_core +ffi_prep_cif_machdep +ffi_prep_cif_var +ffi_prep_closure +ffi_prep_closure_loc +ffi_prep_go_closure +ffi_prep_java_raw_closure +ffi_prep_java_raw_closure_loc +ffi_prep_raw_closure +ffi_prep_raw_closure_loc +ffi_ptrarray_to_raw +ffi_raw_call +ffi_raw_size +ffi_raw_to_ptrarray +ffi_tramp_alloc +ffi_tramp_free +ffi_tramp_get_addr +ffi_tramp_is_present +ffi_tramp_is_supported +ffi_tramp_set_parms +ffi_type_complex_double DATA +ffi_type_complex_float DATA +ffi_type_complex_longdouble DATA +ffi_type_double DATA +ffi_type_float DATA +ffi_type_longdouble DATA +ffi_type_pointer DATA +ffi_type_sint16 DATA +ffi_type_sint32 DATA +ffi_type_sint64 DATA +ffi_type_sint8 DATA +ffi_type_uint16 DATA +ffi_type_uint32 DATA +ffi_type_uint64 DATA +ffi_type_uint8 DATA +ffi_type_void DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.dll.a new file mode 100644 index 0000000..ea5aa41 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.lib new file mode 100644 index 0000000..ea5aa41 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libffi.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.def new file mode 100644 index 0000000..f86fe8b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.def @@ -0,0 +1,465 @@ +; +; Definition file of libfontconfig-1.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libfontconfig-1.dll" +EXPORTS +FcAlignSize +FcAtomicCreate +FcAtomicDeleteNew +FcAtomicDestroy +FcAtomicLock +FcAtomicNewFile +FcAtomicOrigFile +FcAtomicReplaceOrig +FcAtomicUnlock +FcBlanksAdd +FcBlanksCreate +FcBlanksDestroy +FcBlanksIsMember +FcCacheAllocate +FcCacheCopySet +FcCacheCreateTagFile +FcCacheDir +FcCacheFini +FcCacheNumFont +FcCacheNumSubdir +FcCacheObjectDereference +FcCacheObjectReference +FcCacheSubdir +FcCharSetAddChar +FcCharSetCopy +FcCharSetCount +FcCharSetCoverage +FcCharSetCreate +FcCharSetDelChar +FcCharSetDestroy +FcCharSetEqual +FcCharSetFindLeafCreate +FcCharSetFirstPage +FcCharSetFreeze +FcCharSetFreezerCreate +FcCharSetFreezerDestroy +FcCharSetHasChar +FcCharSetIntersect +FcCharSetIntersectCount +FcCharSetIsSubset +FcCharSetMerge +FcCharSetNew +FcCharSetNextPage +FcCharSetPrint +FcCharSetPromote +FcCharSetSerialize +FcCharSetSerializeAlloc +FcCharSetSubtract +FcCharSetSubtractCount +FcCharSetUnion +FcConfigAcceptFilename +FcConfigAcceptFont +FcConfigAddBlank +FcConfigAddCache +FcConfigAddCacheDir +FcConfigAddConfigDir +FcConfigAddConfigFile +FcConfigAddFontDir +FcConfigAddRule +FcConfigAllocExpr +FcConfigAppFontAddDir +FcConfigAppFontAddFile +FcConfigAppFontClear +FcConfigBuildFonts +FcConfigCompareValue +FcConfigCreate +FcConfigDestroy +FcConfigEnableHome +FcConfigFileInfoIterGet +FcConfigFileInfoIterInit +FcConfigFileInfoIterNext +FcConfigFilename +FcConfigFini +FcConfigGetBlanks +FcConfigGetCache +FcConfigGetCacheDirs +FcConfigGetConfigDirs +FcConfigGetConfigFiles +FcConfigGetCurrent +FcConfigGetFilename +FcConfigGetFontDirs +FcConfigGetFonts +FcConfigGetRescanInterval +FcConfigGetRescanInverval +FcConfigGetSysRoot +FcConfigGlobAdd +FcConfigHome +FcConfigInit +FcConfigMapFontPath +FcConfigMapSalt +FcConfigParseAndLoad +FcConfigParseAndLoadFromMemory +FcConfigParseOnly +FcConfigPathFini +FcConfigPatternsAdd +FcConfigRealFilename +FcConfigReference +FcConfigResetFontDirs +FcConfigSetCurrent +FcConfigSetFonts +FcConfigSetRescanInterval +FcConfigSetRescanInverval +FcConfigSetSysRoot +FcConfigSubstitute +FcConfigSubstituteWithPat +FcConfigUptoDate +FcConfigXdgCacheHome +FcConfigXdgConfigHome +FcConfigXdgDataDirs +FcConfigXdgDataHome +FcDebugVal DATA +FcDefaultFini +FcDefaultSubstitute +FcDirCacheBuild +FcDirCacheClean +FcDirCacheCreateTagFile +FcDirCacheCreateUUID +FcDirCacheDeleteUUID +FcDirCacheLoad +FcDirCacheLoadFile +FcDirCacheLock +FcDirCacheRead +FcDirCacheRebuild +FcDirCacheReference +FcDirCacheRescan +FcDirCacheScan +FcDirCacheUnlink +FcDirCacheUnload +FcDirCacheUnlock +FcDirCacheValid +FcDirCacheWrite +FcDirSave +FcDirScan +FcDirScanConfig +FcEditDestroy +FcEditPrint +FcExprPrint +FcFileIsDir +FcFileIsFile +FcFileIsLink +FcFileScan +FcFileScanConfig +FcFini +FcFontList +FcFontMatch +FcFontRenderPrepare +FcFontSetAdd +FcFontSetCreate +FcFontSetDeserialize +FcFontSetDestroy +FcFontSetList +FcFontSetMatch +FcFontSetPrint +FcFontSetSerialize +FcFontSetSerializeAlloc +FcFontSetSort +FcFontSetSortDestroy +FcFontSort +FcFreeTypeCharIndex +FcFreeTypeCharSet +FcFreeTypeCharSetAndSpacing +FcFreeTypeIsExclusiveLang +FcFreeTypeLangSet +FcFreeTypeQuery +FcFreeTypeQueryAll +FcFreeTypeQueryFace +FcGetDefaultLang +FcGetDefaultLangs +FcGetLangs +FcGetPrgname +FcGetVersion +FcHashStrCopy +FcHashTableAdd +FcHashTableCreate +FcHashTableDestroy +FcHashTableFind +FcHashTableRemove +FcHashTableReplace +FcIdentityMatrix DATA +FcInit +FcInitBringUptoDate +FcInitDebug +FcInitLoadConfig +FcInitLoadConfigAndFonts +FcInitLoadOwnConfig +FcInitLoadOwnConfigAndFonts +FcInitReinitialize +FcIsFsMmapSafe +FcIsFsMtimeBroken +FcLangCompare +FcLangGetCharSet +FcLangNormalize +FcLangSetAdd +FcLangSetCompare +FcLangSetContains +FcLangSetCopy +FcLangSetCreate +FcLangSetDel +FcLangSetDestroy +FcLangSetEqual +FcLangSetGetLangs +FcLangSetHasLang +FcLangSetHash +FcLangSetPrint +FcLangSetPromote +FcLangSetSerialize +FcLangSetSerializeAlloc +FcLangSetSubtract +FcLangSetUnion +FcListPatternMatchAny +FcMakeDirectory +FcMakeTempfile +FcMatrixCopy +FcMatrixEqual +FcMatrixFree +FcMatrixMultiply +FcMatrixRotate +FcMatrixScale +FcMatrixShear +FcNameBool +FcNameConstant +FcNameConstantWithObjectCheck +FcNameGetConstant +FcNameGetObjectType +FcNameParse +FcNameParseCharSet +FcNameParseLangSet +FcNameRegisterConstants +FcNameRegisterObjectTypes +FcNameUnparse +FcNameUnparseCharSet +FcNameUnparseEscaped +FcNameUnparseLangSet +FcNameUnparseValue +FcNameUnparseValueList +FcNameUnregisterConstants +FcNameUnregisterObjectTypes +FcObjectFini +FcObjectFromName +FcObjectGetSet +FcObjectLookupBuiltinIdByName +FcObjectLookupIdByName +FcObjectLookupOtherNameById +FcObjectLookupOtherTypeById +FcObjectLookupOtherTypeByName +FcObjectName +FcObjectSetAdd +FcObjectSetBuild +FcObjectSetCreate +FcObjectSetDestroy +FcObjectSetVaBuild +FcObjectValidType +FcOpPrint +FcOpen +FcPatternAdd +FcPatternAddBool +FcPatternAddCharSet +FcPatternAddDouble +FcPatternAddFTFace +FcPatternAddInteger +FcPatternAddLangSet +FcPatternAddMatrix +FcPatternAddRange +FcPatternAddString +FcPatternAddWeak +FcPatternAppend +FcPatternBuild +FcPatternCacheRewriteFile +FcPatternCreate +FcPatternDel +FcPatternDestroy +FcPatternDuplicate +FcPatternEqual +FcPatternEqualSubset +FcPatternFilter +FcPatternFindIter +FcPatternFindObjectIter +FcPatternFormat +FcPatternGet +FcPatternGetBool +FcPatternGetCharSet +FcPatternGetDouble +FcPatternGetFTFace +FcPatternGetInteger +FcPatternGetLangSet +FcPatternGetMatrix +FcPatternGetRange +FcPatternGetString +FcPatternGetWithBinding +FcPatternHash +FcPatternIterEqual +FcPatternIterGetObject +FcPatternIterGetObjectId +FcPatternIterGetValue +FcPatternIterGetValues +FcPatternIterIsValid +FcPatternIterNext +FcPatternIterStart +FcPatternIterValueCount +FcPatternObjectAdd +FcPatternObjectAddBool +FcPatternObjectAddCharSet +FcPatternObjectAddDouble +FcPatternObjectAddInteger +FcPatternObjectAddLangSet +FcPatternObjectAddRange +FcPatternObjectAddString +FcPatternObjectAddWithBinding +FcPatternObjectCount +FcPatternObjectDel +FcPatternObjectFindElt +FcPatternObjectGet +FcPatternObjectGetBool +FcPatternObjectGetDouble +FcPatternObjectGetInteger +FcPatternObjectGetRange +FcPatternObjectGetString +FcPatternObjectGetWithBinding +FcPatternObjectInsertElt +FcPatternObjectListAdd +FcPatternPosition +FcPatternPrint +FcPatternPrint2 +FcPatternReference +FcPatternRemove +FcPatternSerialize +FcPatternSerializeAlloc +FcPatternVaBuild +FcPtrListCreate +FcPtrListDestroy +FcPtrListIterAdd +FcPtrListIterGetValue +FcPtrListIterInit +FcPtrListIterInitAtLast +FcPtrListIterIsValid +FcPtrListIterNext +FcPtrListIterRemove +FcRandom +FcRangeCompare +FcRangeCopy +FcRangeCreateDouble +FcRangeCreateInteger +FcRangeDestroy +FcRangeGetDouble +FcRangeHash +FcRangeIsInRange +FcRangePromote +FcRangeSerialize +FcRangeSerializeAlloc +FcReadLink +FcRuleDestroy +FcRulePrint +FcRuleSetAdd +FcRuleSetAddDescription +FcRuleSetCreate +FcRuleSetDestroy +FcRuleSetEnable +FcRuleSetReference +FcSerializeAlloc +FcSerializeCreate +FcSerializeDestroy +FcSerializeOffset +FcSerializePtr +FcSerializeReserve +FcStat +FcStatChecksum +FcStrBasename +FcStrBufChar +FcStrBufData +FcStrBufDestroy +FcStrBufDone +FcStrBufDoneStatic +FcStrBufInit +FcStrBufString +FcStrBuildFilename +FcStrCanonFilename +FcStrCmp +FcStrCmpIgnoreBlanksAndCase +FcStrCmpIgnoreCase +FcStrContainsIgnoreBlanksAndCase +FcStrContainsIgnoreCase +FcStrContainsWord +FcStrCopy +FcStrCopyFilename +FcStrDirname +FcStrDowncase +FcStrFree +FcStrGlobMatch +FcStrHashIgnoreBlanksAndCase +FcStrHashIgnoreCase +FcStrIsAbsoluteFilename +FcStrLastSlash +FcStrListCreate +FcStrListDone +FcStrListFirst +FcStrListNext +FcStrMatchIgnoreCaseAndDelims +FcStrPlus +FcStrRealPath +FcStrSerialize +FcStrSerializeAlloc +FcStrSetAdd +FcStrSetAddFilename +FcStrSetAddFilenamePairWithSalt +FcStrSetAddLangs +FcStrSetAddTriple +FcStrSetCreate +FcStrSetCreateEx +FcStrSetDel +FcStrSetDeleteAll +FcStrSetDestroy +FcStrSetEqual +FcStrSetInsert +FcStrSetMember +FcStrSetMemberAB +FcStrStr +FcStrStrIgnoreCase +FcStrTripleSecond +FcStrTripleThird +FcStrUsesHome +FcStringHash +FcTestDestroy +FcTestPrint +FcUcs4ToUtf8 +FcUtf16Len +FcUtf16ToUcs4 +FcUtf8Len +FcUtf8ToUcs4 +FcValueCanonicalize +FcValueDestroy +FcValueEqual +FcValueListAppend +FcValueListCreate +FcValueListDestroy +FcValueListDuplicate +FcValueListPrepend +FcValueListPrint +FcValueListPrintWithPosition +FcValueListSerialize +FcValueListSerializeAlloc +FcValuePrint +FcValuePrintFile +FcValuePrintWithPosition +FcValueSave +FcWeightFromOpenType +FcWeightFromOpenTypeDouble +FcWeightToOpenType +FcWeightToOpenTypeDouble +default_langs DATA +fontconfig_instprefix DATA +ftglue_face_goto_table +ftglue_stream_frame_enter +ftglue_stream_frame_exit +ftglue_stream_pos +ftglue_stream_seek +other_types DATA +pGetSystemWindowsDirectory DATA +pSHGetFolderPathA DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.dll.a new file mode 100644 index 0000000..a04e743 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.lib new file mode 100644 index 0000000..a04e743 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfontconfig.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.def new file mode 100644 index 0000000..ea5ecb9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.def @@ -0,0 +1,223 @@ +; +; Definition file of libfreetype-6.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libfreetype-6.dll" +EXPORTS +FTC_CMapCache_Lookup +FTC_CMapCache_New +FTC_ImageCache_Lookup +FTC_ImageCache_LookupScaler +FTC_ImageCache_New +FTC_Manager_Done +FTC_Manager_LookupFace +FTC_Manager_LookupSize +FTC_Manager_New +FTC_Manager_RemoveFaceID +FTC_Manager_Reset +FTC_Node_Unref +FTC_SBitCache_Lookup +FTC_SBitCache_LookupScaler +FTC_SBitCache_New +FT_Activate_Size +FT_Add_Default_Modules +FT_Add_Module +FT_Angle_Diff +FT_Atan2 +FT_Attach_File +FT_Attach_Stream +FT_Bitmap_Blend +FT_Bitmap_Convert +FT_Bitmap_Copy +FT_Bitmap_Done +FT_Bitmap_Embolden +FT_Bitmap_Init +FT_Bitmap_New +FT_CeilFix +FT_ClassicKern_Free +FT_ClassicKern_Validate +FT_Cos +FT_DivFix +FT_Done_Face +FT_Done_FreeType +FT_Done_Glyph +FT_Done_Library +FT_Done_MM_Var +FT_Done_Size +FT_Error_String +FT_Face_CheckTrueTypePatents +FT_Face_GetCharVariantIndex +FT_Face_GetCharVariantIsDefault +FT_Face_GetCharsOfVariant +FT_Face_GetVariantSelectors +FT_Face_GetVariantsOfChar +FT_Face_Properties +FT_Face_SetUnpatentedHinting +FT_FloorFix +FT_Get_Advance +FT_Get_Advances +FT_Get_BDF_Charset_ID +FT_Get_BDF_Property +FT_Get_CID_From_Glyph_Index +FT_Get_CID_Is_Internally_CID_Keyed +FT_Get_CID_Registry_Ordering_Supplement +FT_Get_CMap_Format +FT_Get_CMap_Language_ID +FT_Get_Char_Index +FT_Get_Charmap_Index +FT_Get_Color_Glyph_ClipBox +FT_Get_Color_Glyph_Layer +FT_Get_Color_Glyph_Paint +FT_Get_Colorline_Stops +FT_Get_FSType_Flags +FT_Get_First_Char +FT_Get_Font_Format +FT_Get_Gasp +FT_Get_Glyph +FT_Get_Glyph_Name +FT_Get_Kerning +FT_Get_MM_Blend_Coordinates +FT_Get_MM_Var +FT_Get_MM_WeightVector +FT_Get_Module +FT_Get_Multi_Master +FT_Get_Name_Index +FT_Get_Next_Char +FT_Get_PFR_Advance +FT_Get_PFR_Kerning +FT_Get_PFR_Metrics +FT_Get_PS_Font_Info +FT_Get_PS_Font_Private +FT_Get_PS_Font_Value +FT_Get_Paint +FT_Get_Paint_Layers +FT_Get_Postscript_Name +FT_Get_Renderer +FT_Get_Sfnt_LangTag +FT_Get_Sfnt_Name +FT_Get_Sfnt_Name_Count +FT_Get_Sfnt_Table +FT_Get_SubGlyph_Info +FT_Get_Track_Kerning +FT_Get_Transform +FT_Get_TrueType_Engine_Type +FT_Get_Var_Axis_Flags +FT_Get_Var_Blend_Coordinates +FT_Get_Var_Design_Coordinates +FT_Get_WinFNT_Header +FT_Get_X11_Font_Format +FT_GlyphSlot_Embolden +FT_GlyphSlot_Oblique +FT_GlyphSlot_Own_Bitmap +FT_Glyph_Copy +FT_Glyph_Get_CBox +FT_Glyph_Stroke +FT_Glyph_StrokeBorder +FT_Glyph_To_Bitmap +FT_Glyph_Transform +FT_Gzip_Uncompress +FT_Has_PS_Glyph_Names +FT_Init_FreeType +FT_Library_SetLcdFilter +FT_Library_SetLcdFilterWeights +FT_Library_SetLcdGeometry +FT_Library_Version +FT_List_Add +FT_List_Finalize +FT_List_Find +FT_List_Insert +FT_List_Iterate +FT_List_Remove +FT_List_Up +FT_Load_Char +FT_Load_Glyph +FT_Load_Sfnt_Table +FT_Matrix_Invert +FT_Matrix_Multiply +FT_MulDiv +FT_MulFix +FT_New_Face +FT_New_Glyph +FT_New_Library +FT_New_Memory_Face +FT_New_Size +FT_OpenType_Free +FT_OpenType_Validate +FT_Open_Face +FT_Outline_Check +FT_Outline_Copy +FT_Outline_Decompose +FT_Outline_Done +FT_Outline_Embolden +FT_Outline_EmboldenXY +FT_Outline_GetInsideBorder +FT_Outline_GetOutsideBorder +FT_Outline_Get_BBox +FT_Outline_Get_Bitmap +FT_Outline_Get_CBox +FT_Outline_Get_Orientation +FT_Outline_New +FT_Outline_Render +FT_Outline_Reverse +FT_Outline_Transform +FT_Outline_Translate +FT_Palette_Data_Get +FT_Palette_Select +FT_Palette_Set_Foreground_Color +FT_Property_Get +FT_Property_Set +FT_Reference_Face +FT_Reference_Library +FT_Remove_Module +FT_Render_Glyph +FT_Request_Size +FT_RoundFix +FT_Select_Charmap +FT_Select_Size +FT_Set_Char_Size +FT_Set_Charmap +FT_Set_Debug_Hook +FT_Set_Default_Log_Handler +FT_Set_Default_Properties +FT_Set_Log_Handler +FT_Set_MM_Blend_Coordinates +FT_Set_MM_Design_Coordinates +FT_Set_MM_WeightVector +FT_Set_Named_Instance +FT_Set_Pixel_Sizes +FT_Set_Renderer +FT_Set_Transform +FT_Set_Var_Blend_Coordinates +FT_Set_Var_Design_Coordinates +FT_Sfnt_Table_Info +FT_Sin +FT_Stream_OpenGzip +FT_Stream_OpenLZW +FT_Stroker_BeginSubPath +FT_Stroker_ConicTo +FT_Stroker_CubicTo +FT_Stroker_Done +FT_Stroker_EndSubPath +FT_Stroker_Export +FT_Stroker_ExportBorder +FT_Stroker_GetBorderCounts +FT_Stroker_GetCounts +FT_Stroker_LineTo +FT_Stroker_New +FT_Stroker_ParseOutline +FT_Stroker_Rewind +FT_Stroker_Set +FT_Tan +FT_Trace_Set_Default_Level +FT_Trace_Set_Level +FT_TrueTypeGX_Free +FT_TrueTypeGX_Validate +FT_Vector_From_Polar +FT_Vector_Length +FT_Vector_Polarize +FT_Vector_Rotate +FT_Vector_Transform +FT_Vector_Unit +TT_New_Context +TT_RunIns diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.dll.a new file mode 100644 index 0000000..a911131 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.lib new file mode 100644 index 0000000..a911131 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfreetype.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.def new file mode 100644 index 0000000..2943576 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.def @@ -0,0 +1,43 @@ +; +; Definition file of libfribidi-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libfribidi-0.dll" +EXPORTS +fribidi_char_set_desc +fribidi_char_set_name +fribidi_char_set_title +fribidi_charset_to_unicode +fribidi_debug_status +fribidi_get_bidi_type +fribidi_get_bidi_type_name +fribidi_get_bidi_types +fribidi_get_bracket +fribidi_get_bracket_types +fribidi_get_joining_type +fribidi_get_joining_type_name +fribidi_get_joining_types +fribidi_get_mirror_char +fribidi_get_par_direction +fribidi_get_par_embedding_levels +fribidi_get_par_embedding_levels_ex +fribidi_get_type +fribidi_get_type_internal +fribidi_join_arabic +fribidi_log2vis +fribidi_log2vis_get_embedding_levels +fribidi_mirroring_status +fribidi_parse_charset +fribidi_remove_bidi_marks +fribidi_reorder_line +fribidi_reorder_nsm_status +fribidi_set_debug +fribidi_set_mirroring +fribidi_set_reorder_nsm +fribidi_shape +fribidi_shape_arabic +fribidi_shape_mirroring +fribidi_unicode_to_charset +fribidi_unicode_version DATA +fribidi_version_info DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.dll.a new file mode 100644 index 0000000..494e2c2 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.lib new file mode 100644 index 0000000..494e2c2 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libfribidi.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.def new file mode 100644 index 0000000..9448351 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.def @@ -0,0 +1,2031 @@ +; +; Definition file of libgio-2.0-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libgio-2.0-0.dll" +EXPORTS +g_action_activate +g_action_change_state +g_action_get_enabled +g_action_get_name +g_action_get_parameter_type +g_action_get_state +g_action_get_state_hint +g_action_get_state_type +g_action_get_type +g_action_group_action_added +g_action_group_action_enabled_changed +g_action_group_action_removed +g_action_group_action_state_changed +g_action_group_activate_action +g_action_group_change_action_state +g_action_group_get_action_enabled +g_action_group_get_action_parameter_type +g_action_group_get_action_state +g_action_group_get_action_state_hint +g_action_group_get_action_state_type +g_action_group_get_type +g_action_group_has_action +g_action_group_list_actions +g_action_group_query_action +g_action_map_add_action +g_action_map_add_action_entries +g_action_map_get_type +g_action_map_lookup_action +g_action_map_remove_action +g_action_name_is_valid +g_action_parse_detailed_name +g_action_print_detailed_name +g_app_info_add_supports_type +g_app_info_can_delete +g_app_info_can_remove_supports_type +g_app_info_create_flags_get_type +g_app_info_create_from_commandline +g_app_info_delete +g_app_info_dup +g_app_info_equal +g_app_info_get_all +g_app_info_get_all_for_type +g_app_info_get_commandline +g_app_info_get_default_for_type +g_app_info_get_default_for_type_async +g_app_info_get_default_for_type_finish +g_app_info_get_default_for_uri_scheme +g_app_info_get_default_for_uri_scheme_async +g_app_info_get_default_for_uri_scheme_finish +g_app_info_get_description +g_app_info_get_display_name +g_app_info_get_executable +g_app_info_get_fallback_for_type +g_app_info_get_icon +g_app_info_get_id +g_app_info_get_name +g_app_info_get_recommended_for_type +g_app_info_get_supported_types +g_app_info_get_type +g_app_info_launch +g_app_info_launch_default_for_uri +g_app_info_launch_default_for_uri_async +g_app_info_launch_default_for_uri_finish +g_app_info_launch_uris +g_app_info_launch_uris_async +g_app_info_launch_uris_finish +g_app_info_monitor_get +g_app_info_monitor_get_type +g_app_info_remove_supports_type +g_app_info_reset_type_associations +g_app_info_set_as_default_for_extension +g_app_info_set_as_default_for_type +g_app_info_set_as_last_used_for_type +g_app_info_should_show +g_app_info_supports_files +g_app_info_supports_uris +g_app_launch_context_get_display +g_app_launch_context_get_environment +g_app_launch_context_get_startup_notify_id +g_app_launch_context_get_type +g_app_launch_context_launch_failed +g_app_launch_context_new +g_app_launch_context_setenv +g_app_launch_context_unsetenv +g_application_activate +g_application_add_main_option +g_application_add_main_option_entries +g_application_add_option_group +g_application_bind_busy_property +g_application_command_line_create_file_for_arg +g_application_command_line_get_arguments +g_application_command_line_get_cwd +g_application_command_line_get_environ +g_application_command_line_get_exit_status +g_application_command_line_get_is_remote +g_application_command_line_get_options_dict +g_application_command_line_get_platform_data +g_application_command_line_get_stdin +g_application_command_line_get_type +g_application_command_line_getenv +g_application_command_line_print +g_application_command_line_printerr +g_application_command_line_set_exit_status +g_application_flags_get_type +g_application_get_application_id +g_application_get_dbus_connection +g_application_get_dbus_object_path +g_application_get_default +g_application_get_flags +g_application_get_inactivity_timeout +g_application_get_is_busy +g_application_get_is_registered +g_application_get_is_remote +g_application_get_resource_base_path +g_application_get_type +g_application_hold +g_application_id_is_valid +g_application_mark_busy +g_application_new +g_application_open +g_application_quit +g_application_register +g_application_release +g_application_run +g_application_send_notification +g_application_set_action_group +g_application_set_application_id +g_application_set_default +g_application_set_flags +g_application_set_inactivity_timeout +g_application_set_option_context_description +g_application_set_option_context_parameter_string +g_application_set_option_context_summary +g_application_set_resource_base_path +g_application_unbind_busy_property +g_application_unmark_busy +g_application_withdraw_notification +g_ask_password_flags_get_type +g_async_initable_get_type +g_async_initable_init_async +g_async_initable_init_finish +g_async_initable_new_async +g_async_initable_new_finish +g_async_initable_new_valist_async +g_async_initable_newv_async +g_async_result_get_source_object +g_async_result_get_type +g_async_result_get_user_data +g_async_result_is_tagged +g_async_result_legacy_propagate_error +g_buffered_input_stream_fill +g_buffered_input_stream_fill_async +g_buffered_input_stream_fill_finish +g_buffered_input_stream_get_available +g_buffered_input_stream_get_buffer_size +g_buffered_input_stream_get_type +g_buffered_input_stream_new +g_buffered_input_stream_new_sized +g_buffered_input_stream_peek +g_buffered_input_stream_peek_buffer +g_buffered_input_stream_read_byte +g_buffered_input_stream_set_buffer_size +g_buffered_output_stream_get_auto_grow +g_buffered_output_stream_get_buffer_size +g_buffered_output_stream_get_type +g_buffered_output_stream_new +g_buffered_output_stream_new_sized +g_buffered_output_stream_set_auto_grow +g_buffered_output_stream_set_buffer_size +g_bus_get +g_bus_get_finish +g_bus_get_sync +g_bus_name_owner_flags_get_type +g_bus_name_watcher_flags_get_type +g_bus_own_name +g_bus_own_name_on_connection +g_bus_own_name_on_connection_with_closures +g_bus_own_name_with_closures +g_bus_type_get_type +g_bus_unown_name +g_bus_unwatch_name +g_bus_watch_name +g_bus_watch_name_on_connection +g_bus_watch_name_on_connection_with_closures +g_bus_watch_name_with_closures +g_bytes_icon_get_bytes +g_bytes_icon_get_type +g_bytes_icon_new +g_cancellable_cancel +g_cancellable_connect +g_cancellable_disconnect +g_cancellable_get_current +g_cancellable_get_fd +g_cancellable_get_type +g_cancellable_is_cancelled +g_cancellable_make_pollfd +g_cancellable_new +g_cancellable_pop_current +g_cancellable_push_current +g_cancellable_release_fd +g_cancellable_reset +g_cancellable_set_error_if_cancelled +g_cancellable_source_new +g_charset_converter_get_num_fallbacks +g_charset_converter_get_type +g_charset_converter_get_use_fallback +g_charset_converter_new +g_charset_converter_set_use_fallback +g_content_type_can_be_executable +g_content_type_equals +g_content_type_from_mime_type +g_content_type_get_description +g_content_type_get_generic_icon_name +g_content_type_get_icon +g_content_type_get_mime_dirs +g_content_type_get_mime_type +g_content_type_get_symbolic_icon +g_content_type_guess +g_content_type_guess_for_tree +g_content_type_is_a +g_content_type_is_mime_type +g_content_type_is_unknown +g_content_type_set_mime_dirs +g_content_types_get_registered +g_converter_convert +g_converter_flags_get_type +g_converter_get_type +g_converter_input_stream_get_converter +g_converter_input_stream_get_type +g_converter_input_stream_new +g_converter_output_stream_get_converter +g_converter_output_stream_get_type +g_converter_output_stream_new +g_converter_reset +g_converter_result_get_type +g_credentials_get_native +g_credentials_get_type +g_credentials_is_same_user +g_credentials_new +g_credentials_set_native +g_credentials_to_string +g_credentials_type_get_type +g_data_input_stream_get_byte_order +g_data_input_stream_get_newline_type +g_data_input_stream_get_type +g_data_input_stream_new +g_data_input_stream_read_byte +g_data_input_stream_read_int16 +g_data_input_stream_read_int32 +g_data_input_stream_read_int64 +g_data_input_stream_read_line +g_data_input_stream_read_line_async +g_data_input_stream_read_line_finish +g_data_input_stream_read_line_finish_utf8 +g_data_input_stream_read_line_utf8 +g_data_input_stream_read_uint16 +g_data_input_stream_read_uint32 +g_data_input_stream_read_uint64 +g_data_input_stream_read_until +g_data_input_stream_read_until_async +g_data_input_stream_read_until_finish +g_data_input_stream_read_upto +g_data_input_stream_read_upto_async +g_data_input_stream_read_upto_finish +g_data_input_stream_set_byte_order +g_data_input_stream_set_newline_type +g_data_output_stream_get_byte_order +g_data_output_stream_get_type +g_data_output_stream_new +g_data_output_stream_put_byte +g_data_output_stream_put_int16 +g_data_output_stream_put_int32 +g_data_output_stream_put_int64 +g_data_output_stream_put_string +g_data_output_stream_put_uint16 +g_data_output_stream_put_uint32 +g_data_output_stream_put_uint64 +g_data_output_stream_set_byte_order +g_data_stream_byte_order_get_type +g_data_stream_newline_type_get_type +g_datagram_based_condition_check +g_datagram_based_condition_wait +g_datagram_based_create_source +g_datagram_based_get_type +g_datagram_based_receive_messages +g_datagram_based_send_messages +g_dbus_action_group_get +g_dbus_action_group_get_type +g_dbus_address_escape_value +g_dbus_address_get_for_bus_sync +g_dbus_address_get_stream +g_dbus_address_get_stream_finish +g_dbus_address_get_stream_sync +g_dbus_annotation_info_get_type +g_dbus_annotation_info_lookup +g_dbus_annotation_info_ref +g_dbus_annotation_info_unref +g_dbus_arg_info_get_type +g_dbus_arg_info_ref +g_dbus_arg_info_unref +g_dbus_auth_observer_allow_mechanism +g_dbus_auth_observer_authorize_authenticated_peer +g_dbus_auth_observer_get_type +g_dbus_auth_observer_new +g_dbus_call_flags_get_type +g_dbus_capability_flags_get_type +g_dbus_connection_add_filter +g_dbus_connection_call +g_dbus_connection_call_finish +g_dbus_connection_call_sync +g_dbus_connection_close +g_dbus_connection_close_finish +g_dbus_connection_close_sync +g_dbus_connection_emit_signal +g_dbus_connection_export_action_group +g_dbus_connection_export_menu_model +g_dbus_connection_flags_get_type +g_dbus_connection_flush +g_dbus_connection_flush_finish +g_dbus_connection_flush_sync +g_dbus_connection_get_capabilities +g_dbus_connection_get_exit_on_close +g_dbus_connection_get_flags +g_dbus_connection_get_guid +g_dbus_connection_get_last_serial +g_dbus_connection_get_peer_credentials +g_dbus_connection_get_stream +g_dbus_connection_get_type +g_dbus_connection_get_unique_name +g_dbus_connection_is_closed +g_dbus_connection_new +g_dbus_connection_new_finish +g_dbus_connection_new_for_address +g_dbus_connection_new_for_address_finish +g_dbus_connection_new_for_address_sync +g_dbus_connection_new_sync +g_dbus_connection_register_object +g_dbus_connection_register_object_with_closures +g_dbus_connection_register_subtree +g_dbus_connection_remove_filter +g_dbus_connection_send_message +g_dbus_connection_send_message_with_reply +g_dbus_connection_send_message_with_reply_finish +g_dbus_connection_send_message_with_reply_sync +g_dbus_connection_set_exit_on_close +g_dbus_connection_signal_subscribe +g_dbus_connection_signal_unsubscribe +g_dbus_connection_start_message_processing +g_dbus_connection_unexport_action_group +g_dbus_connection_unexport_menu_model +g_dbus_connection_unregister_object +g_dbus_connection_unregister_subtree +g_dbus_error_encode_gerror +g_dbus_error_get_remote_error +g_dbus_error_get_type +g_dbus_error_is_remote_error +g_dbus_error_new_for_dbus_error +g_dbus_error_quark +g_dbus_error_register_error +g_dbus_error_register_error_domain +g_dbus_error_set_dbus_error +g_dbus_error_set_dbus_error_valist +g_dbus_error_strip_remote_error +g_dbus_error_unregister_error +g_dbus_escape_object_path +g_dbus_escape_object_path_bytestring +g_dbus_generate_guid +g_dbus_gvalue_to_gvariant +g_dbus_gvariant_to_gvalue +g_dbus_interface_dup_object +g_dbus_interface_get_info +g_dbus_interface_get_object +g_dbus_interface_get_type +g_dbus_interface_info_cache_build +g_dbus_interface_info_cache_release +g_dbus_interface_info_generate_xml +g_dbus_interface_info_get_type +g_dbus_interface_info_lookup_method +g_dbus_interface_info_lookup_property +g_dbus_interface_info_lookup_signal +g_dbus_interface_info_ref +g_dbus_interface_info_unref +g_dbus_interface_set_object +g_dbus_interface_skeleton_export +g_dbus_interface_skeleton_flags_get_type +g_dbus_interface_skeleton_flush +g_dbus_interface_skeleton_get_connection +g_dbus_interface_skeleton_get_connections +g_dbus_interface_skeleton_get_flags +g_dbus_interface_skeleton_get_info +g_dbus_interface_skeleton_get_object_path +g_dbus_interface_skeleton_get_properties +g_dbus_interface_skeleton_get_type +g_dbus_interface_skeleton_get_vtable +g_dbus_interface_skeleton_has_connection +g_dbus_interface_skeleton_set_flags +g_dbus_interface_skeleton_unexport +g_dbus_interface_skeleton_unexport_from_connection +g_dbus_is_address +g_dbus_is_error_name +g_dbus_is_guid +g_dbus_is_interface_name +g_dbus_is_member_name +g_dbus_is_name +g_dbus_is_supported_address +g_dbus_is_unique_name +g_dbus_menu_model_get +g_dbus_menu_model_get_type +g_dbus_message_byte_order_get_type +g_dbus_message_bytes_needed +g_dbus_message_copy +g_dbus_message_flags_get_type +g_dbus_message_get_arg0 +g_dbus_message_get_body +g_dbus_message_get_byte_order +g_dbus_message_get_destination +g_dbus_message_get_error_name +g_dbus_message_get_flags +g_dbus_message_get_header +g_dbus_message_get_header_fields +g_dbus_message_get_interface +g_dbus_message_get_locked +g_dbus_message_get_member +g_dbus_message_get_message_type +g_dbus_message_get_num_unix_fds +g_dbus_message_get_path +g_dbus_message_get_reply_serial +g_dbus_message_get_sender +g_dbus_message_get_serial +g_dbus_message_get_signature +g_dbus_message_get_type +g_dbus_message_header_field_get_type +g_dbus_message_lock +g_dbus_message_new +g_dbus_message_new_from_blob +g_dbus_message_new_method_call +g_dbus_message_new_method_error +g_dbus_message_new_method_error_literal +g_dbus_message_new_method_error_valist +g_dbus_message_new_method_reply +g_dbus_message_new_signal +g_dbus_message_print +g_dbus_message_set_body +g_dbus_message_set_byte_order +g_dbus_message_set_destination +g_dbus_message_set_error_name +g_dbus_message_set_flags +g_dbus_message_set_header +g_dbus_message_set_interface +g_dbus_message_set_member +g_dbus_message_set_message_type +g_dbus_message_set_num_unix_fds +g_dbus_message_set_path +g_dbus_message_set_reply_serial +g_dbus_message_set_sender +g_dbus_message_set_serial +g_dbus_message_set_signature +g_dbus_message_to_blob +g_dbus_message_to_gerror +g_dbus_message_type_get_type +g_dbus_method_info_get_type +g_dbus_method_info_ref +g_dbus_method_info_unref +g_dbus_method_invocation_get_connection +g_dbus_method_invocation_get_interface_name +g_dbus_method_invocation_get_message +g_dbus_method_invocation_get_method_info +g_dbus_method_invocation_get_method_name +g_dbus_method_invocation_get_object_path +g_dbus_method_invocation_get_parameters +g_dbus_method_invocation_get_property_info +g_dbus_method_invocation_get_sender +g_dbus_method_invocation_get_type +g_dbus_method_invocation_get_user_data +g_dbus_method_invocation_return_dbus_error +g_dbus_method_invocation_return_error +g_dbus_method_invocation_return_error_literal +g_dbus_method_invocation_return_error_valist +g_dbus_method_invocation_return_gerror +g_dbus_method_invocation_return_value +g_dbus_method_invocation_take_error +g_dbus_node_info_generate_xml +g_dbus_node_info_get_type +g_dbus_node_info_lookup_interface +g_dbus_node_info_new_for_xml +g_dbus_node_info_ref +g_dbus_node_info_unref +g_dbus_object_get_interface +g_dbus_object_get_interfaces +g_dbus_object_get_object_path +g_dbus_object_get_type +g_dbus_object_manager_client_flags_get_type +g_dbus_object_manager_client_get_connection +g_dbus_object_manager_client_get_flags +g_dbus_object_manager_client_get_name +g_dbus_object_manager_client_get_name_owner +g_dbus_object_manager_client_get_type +g_dbus_object_manager_client_new +g_dbus_object_manager_client_new_finish +g_dbus_object_manager_client_new_for_bus +g_dbus_object_manager_client_new_for_bus_finish +g_dbus_object_manager_client_new_for_bus_sync +g_dbus_object_manager_client_new_sync +g_dbus_object_manager_get_interface +g_dbus_object_manager_get_object +g_dbus_object_manager_get_object_path +g_dbus_object_manager_get_objects +g_dbus_object_manager_get_type +g_dbus_object_manager_server_export +g_dbus_object_manager_server_export_uniquely +g_dbus_object_manager_server_get_connection +g_dbus_object_manager_server_get_type +g_dbus_object_manager_server_is_exported +g_dbus_object_manager_server_new +g_dbus_object_manager_server_set_connection +g_dbus_object_manager_server_unexport +g_dbus_object_proxy_get_connection +g_dbus_object_proxy_get_type +g_dbus_object_proxy_new +g_dbus_object_skeleton_add_interface +g_dbus_object_skeleton_flush +g_dbus_object_skeleton_get_type +g_dbus_object_skeleton_new +g_dbus_object_skeleton_remove_interface +g_dbus_object_skeleton_remove_interface_by_name +g_dbus_object_skeleton_set_object_path +g_dbus_property_info_flags_get_type +g_dbus_property_info_get_type +g_dbus_property_info_ref +g_dbus_property_info_unref +g_dbus_proxy_call +g_dbus_proxy_call_finish +g_dbus_proxy_call_sync +g_dbus_proxy_flags_get_type +g_dbus_proxy_get_cached_property +g_dbus_proxy_get_cached_property_names +g_dbus_proxy_get_connection +g_dbus_proxy_get_default_timeout +g_dbus_proxy_get_flags +g_dbus_proxy_get_interface_info +g_dbus_proxy_get_interface_name +g_dbus_proxy_get_name +g_dbus_proxy_get_name_owner +g_dbus_proxy_get_object_path +g_dbus_proxy_get_type +g_dbus_proxy_new +g_dbus_proxy_new_finish +g_dbus_proxy_new_for_bus +g_dbus_proxy_new_for_bus_finish +g_dbus_proxy_new_for_bus_sync +g_dbus_proxy_new_sync +g_dbus_proxy_set_cached_property +g_dbus_proxy_set_default_timeout +g_dbus_proxy_set_interface_info +g_dbus_send_message_flags_get_type +g_dbus_server_flags_get_type +g_dbus_server_get_client_address +g_dbus_server_get_flags +g_dbus_server_get_guid +g_dbus_server_get_type +g_dbus_server_is_active +g_dbus_server_new_sync +g_dbus_server_start +g_dbus_server_stop +g_dbus_signal_flags_get_type +g_dbus_signal_info_get_type +g_dbus_signal_info_ref +g_dbus_signal_info_unref +g_dbus_subtree_flags_get_type +g_dbus_unescape_object_path +g_debug_controller_dbus_get_type +g_debug_controller_dbus_new +g_debug_controller_dbus_stop +g_debug_controller_get_debug_enabled +g_debug_controller_get_type +g_debug_controller_set_debug_enabled +g_drive_can_eject +g_drive_can_poll_for_media +g_drive_can_start +g_drive_can_start_degraded +g_drive_can_stop +g_drive_eject +g_drive_eject_finish +g_drive_eject_with_operation +g_drive_eject_with_operation_finish +g_drive_enumerate_identifiers +g_drive_get_icon +g_drive_get_identifier +g_drive_get_name +g_drive_get_sort_key +g_drive_get_start_stop_type +g_drive_get_symbolic_icon +g_drive_get_type +g_drive_get_volumes +g_drive_has_media +g_drive_has_volumes +g_drive_is_media_check_automatic +g_drive_is_media_removable +g_drive_is_removable +g_drive_poll_for_media +g_drive_poll_for_media_finish +g_drive_start +g_drive_start_finish +g_drive_start_flags_get_type +g_drive_start_stop_type_get_type +g_drive_stop +g_drive_stop_finish +g_dtls_client_connection_get_accepted_cas +g_dtls_client_connection_get_server_identity +g_dtls_client_connection_get_type +g_dtls_client_connection_get_validation_flags +g_dtls_client_connection_new +g_dtls_client_connection_set_server_identity +g_dtls_client_connection_set_validation_flags +g_dtls_connection_close +g_dtls_connection_close_async +g_dtls_connection_close_finish +g_dtls_connection_emit_accept_certificate +g_dtls_connection_get_certificate +g_dtls_connection_get_channel_binding_data +g_dtls_connection_get_ciphersuite_name +g_dtls_connection_get_database +g_dtls_connection_get_interaction +g_dtls_connection_get_negotiated_protocol +g_dtls_connection_get_peer_certificate +g_dtls_connection_get_peer_certificate_errors +g_dtls_connection_get_protocol_version +g_dtls_connection_get_rehandshake_mode +g_dtls_connection_get_require_close_notify +g_dtls_connection_get_type +g_dtls_connection_handshake +g_dtls_connection_handshake_async +g_dtls_connection_handshake_finish +g_dtls_connection_set_advertised_protocols +g_dtls_connection_set_certificate +g_dtls_connection_set_database +g_dtls_connection_set_interaction +g_dtls_connection_set_rehandshake_mode +g_dtls_connection_set_require_close_notify +g_dtls_connection_shutdown +g_dtls_connection_shutdown_async +g_dtls_connection_shutdown_finish +g_dtls_server_connection_get_type +g_dtls_server_connection_new +g_emblem_get_icon +g_emblem_get_origin +g_emblem_get_type +g_emblem_new +g_emblem_new_with_origin +g_emblem_origin_get_type +g_emblemed_icon_add_emblem +g_emblemed_icon_clear_emblems +g_emblemed_icon_get_emblems +g_emblemed_icon_get_icon +g_emblemed_icon_get_type +g_emblemed_icon_new +g_file_append_to +g_file_append_to_async +g_file_append_to_finish +g_file_attribute_info_flags_get_type +g_file_attribute_info_list_add +g_file_attribute_info_list_dup +g_file_attribute_info_list_get_type +g_file_attribute_info_list_lookup +g_file_attribute_info_list_new +g_file_attribute_info_list_ref +g_file_attribute_info_list_unref +g_file_attribute_matcher_enumerate_namespace +g_file_attribute_matcher_enumerate_next +g_file_attribute_matcher_get_type +g_file_attribute_matcher_matches +g_file_attribute_matcher_matches_only +g_file_attribute_matcher_new +g_file_attribute_matcher_ref +g_file_attribute_matcher_subtract +g_file_attribute_matcher_to_string +g_file_attribute_matcher_unref +g_file_attribute_status_get_type +g_file_attribute_type_get_type +g_file_build_attribute_list_for_copy +g_file_copy +g_file_copy_async +g_file_copy_attributes +g_file_copy_finish +g_file_copy_flags_get_type +g_file_create +g_file_create_async +g_file_create_finish +g_file_create_flags_get_type +g_file_create_readwrite +g_file_create_readwrite_async +g_file_create_readwrite_finish +g_file_delete +g_file_delete_async +g_file_delete_finish +g_file_dup +g_file_eject_mountable +g_file_eject_mountable_finish +g_file_eject_mountable_with_operation +g_file_eject_mountable_with_operation_finish +g_file_enumerate_children +g_file_enumerate_children_async +g_file_enumerate_children_finish +g_file_enumerator_close +g_file_enumerator_close_async +g_file_enumerator_close_finish +g_file_enumerator_get_child +g_file_enumerator_get_container +g_file_enumerator_get_type +g_file_enumerator_has_pending +g_file_enumerator_is_closed +g_file_enumerator_iterate +g_file_enumerator_next_file +g_file_enumerator_next_files_async +g_file_enumerator_next_files_finish +g_file_enumerator_set_pending +g_file_equal +g_file_find_enclosing_mount +g_file_find_enclosing_mount_async +g_file_find_enclosing_mount_finish +g_file_get_basename +g_file_get_child +g_file_get_child_for_display_name +g_file_get_parent +g_file_get_parse_name +g_file_get_path +g_file_get_relative_path +g_file_get_type +g_file_get_uri +g_file_get_uri_scheme +g_file_has_parent +g_file_has_prefix +g_file_has_uri_scheme +g_file_hash +g_file_icon_get_file +g_file_icon_get_type +g_file_icon_new +g_file_info_clear_status +g_file_info_copy_into +g_file_info_dup +g_file_info_get_access_date_time +g_file_info_get_attribute_as_string +g_file_info_get_attribute_boolean +g_file_info_get_attribute_byte_string +g_file_info_get_attribute_data +g_file_info_get_attribute_int32 +g_file_info_get_attribute_int64 +g_file_info_get_attribute_object +g_file_info_get_attribute_status +g_file_info_get_attribute_string +g_file_info_get_attribute_stringv +g_file_info_get_attribute_type +g_file_info_get_attribute_uint32 +g_file_info_get_attribute_uint64 +g_file_info_get_content_type +g_file_info_get_creation_date_time +g_file_info_get_deletion_date +g_file_info_get_display_name +g_file_info_get_edit_name +g_file_info_get_etag +g_file_info_get_file_type +g_file_info_get_icon +g_file_info_get_is_backup +g_file_info_get_is_hidden +g_file_info_get_is_symlink +g_file_info_get_modification_date_time +g_file_info_get_modification_time +g_file_info_get_name +g_file_info_get_size +g_file_info_get_sort_order +g_file_info_get_symbolic_icon +g_file_info_get_symlink_target +g_file_info_get_type +g_file_info_has_attribute +g_file_info_has_namespace +g_file_info_list_attributes +g_file_info_new +g_file_info_remove_attribute +g_file_info_set_access_date_time +g_file_info_set_attribute +g_file_info_set_attribute_boolean +g_file_info_set_attribute_byte_string +g_file_info_set_attribute_int32 +g_file_info_set_attribute_int64 +g_file_info_set_attribute_mask +g_file_info_set_attribute_object +g_file_info_set_attribute_status +g_file_info_set_attribute_string +g_file_info_set_attribute_stringv +g_file_info_set_attribute_uint32 +g_file_info_set_attribute_uint64 +g_file_info_set_content_type +g_file_info_set_creation_date_time +g_file_info_set_display_name +g_file_info_set_edit_name +g_file_info_set_file_type +g_file_info_set_icon +g_file_info_set_is_hidden +g_file_info_set_is_symlink +g_file_info_set_modification_date_time +g_file_info_set_modification_time +g_file_info_set_name +g_file_info_set_size +g_file_info_set_sort_order +g_file_info_set_symbolic_icon +g_file_info_set_symlink_target +g_file_info_unset_attribute_mask +g_file_input_stream_get_type +g_file_input_stream_query_info +g_file_input_stream_query_info_async +g_file_input_stream_query_info_finish +g_file_io_stream_get_etag +g_file_io_stream_get_type +g_file_io_stream_query_info +g_file_io_stream_query_info_async +g_file_io_stream_query_info_finish +g_file_is_native +g_file_load_bytes +g_file_load_bytes_async +g_file_load_bytes_finish +g_file_load_contents +g_file_load_contents_async +g_file_load_contents_finish +g_file_load_partial_contents_async +g_file_load_partial_contents_finish +g_file_make_directory +g_file_make_directory_async +g_file_make_directory_finish +g_file_make_directory_with_parents +g_file_make_symbolic_link +g_file_make_symbolic_link_async +g_file_make_symbolic_link_finish +g_file_measure_disk_usage +g_file_measure_disk_usage_async +g_file_measure_disk_usage_finish +g_file_measure_flags_get_type +g_file_monitor +g_file_monitor_cancel +g_file_monitor_directory +g_file_monitor_emit_event +g_file_monitor_event_get_type +g_file_monitor_file +g_file_monitor_flags_get_type +g_file_monitor_get_type +g_file_monitor_is_cancelled +g_file_monitor_set_rate_limit +g_file_monitor_source_handle_event +g_file_mount_enclosing_volume +g_file_mount_enclosing_volume_finish +g_file_mount_mountable +g_file_mount_mountable_finish +g_file_move +g_file_move_async +g_file_move_finish +g_file_new_build_filename +g_file_new_for_commandline_arg +g_file_new_for_commandline_arg_and_cwd +g_file_new_for_path +g_file_new_for_uri +g_file_new_tmp +g_file_new_tmp_async +g_file_new_tmp_dir_async +g_file_new_tmp_dir_finish +g_file_new_tmp_finish +g_file_open_readwrite +g_file_open_readwrite_async +g_file_open_readwrite_finish +g_file_output_stream_get_etag +g_file_output_stream_get_type +g_file_output_stream_query_info +g_file_output_stream_query_info_async +g_file_output_stream_query_info_finish +g_file_parse_name +g_file_peek_path +g_file_poll_mountable +g_file_poll_mountable_finish +g_file_query_default_handler +g_file_query_default_handler_async +g_file_query_default_handler_finish +g_file_query_exists +g_file_query_file_type +g_file_query_filesystem_info +g_file_query_filesystem_info_async +g_file_query_filesystem_info_finish +g_file_query_info +g_file_query_info_async +g_file_query_info_finish +g_file_query_info_flags_get_type +g_file_query_settable_attributes +g_file_query_writable_namespaces +g_file_read +g_file_read_async +g_file_read_finish +g_file_replace +g_file_replace_async +g_file_replace_contents +g_file_replace_contents_async +g_file_replace_contents_bytes_async +g_file_replace_contents_finish +g_file_replace_finish +g_file_replace_readwrite +g_file_replace_readwrite_async +g_file_replace_readwrite_finish +g_file_resolve_relative_path +g_file_set_attribute +g_file_set_attribute_byte_string +g_file_set_attribute_int32 +g_file_set_attribute_int64 +g_file_set_attribute_string +g_file_set_attribute_uint32 +g_file_set_attribute_uint64 +g_file_set_attributes_async +g_file_set_attributes_finish +g_file_set_attributes_from_info +g_file_set_display_name +g_file_set_display_name_async +g_file_set_display_name_finish +g_file_start_mountable +g_file_start_mountable_finish +g_file_stop_mountable +g_file_stop_mountable_finish +g_file_supports_thread_contexts +g_file_trash +g_file_trash_async +g_file_trash_finish +g_file_type_get_type +g_file_unmount_mountable +g_file_unmount_mountable_finish +g_file_unmount_mountable_with_operation +g_file_unmount_mountable_with_operation_finish +g_filename_completer_get_completion_suffix +g_filename_completer_get_completions +g_filename_completer_get_type +g_filename_completer_new +g_filename_completer_set_dirs_only +g_filesystem_preview_type_get_type +g_filter_input_stream_get_base_stream +g_filter_input_stream_get_close_base_stream +g_filter_input_stream_get_type +g_filter_input_stream_set_close_base_stream +g_filter_output_stream_get_base_stream +g_filter_output_stream_get_close_base_stream +g_filter_output_stream_get_type +g_filter_output_stream_set_close_base_stream +g_icon_deserialize +g_icon_equal +g_icon_get_type +g_icon_hash +g_icon_new_for_string +g_icon_serialize +g_icon_to_string +g_inet_address_equal +g_inet_address_get_family +g_inet_address_get_is_any +g_inet_address_get_is_link_local +g_inet_address_get_is_loopback +g_inet_address_get_is_mc_global +g_inet_address_get_is_mc_link_local +g_inet_address_get_is_mc_node_local +g_inet_address_get_is_mc_org_local +g_inet_address_get_is_mc_site_local +g_inet_address_get_is_multicast +g_inet_address_get_is_site_local +g_inet_address_get_native_size +g_inet_address_get_type +g_inet_address_mask_equal +g_inet_address_mask_get_address +g_inet_address_mask_get_family +g_inet_address_mask_get_length +g_inet_address_mask_get_type +g_inet_address_mask_matches +g_inet_address_mask_new +g_inet_address_mask_new_from_string +g_inet_address_mask_to_string +g_inet_address_new_any +g_inet_address_new_from_bytes +g_inet_address_new_from_string +g_inet_address_new_loopback +g_inet_address_to_bytes +g_inet_address_to_string +g_inet_socket_address_get_address +g_inet_socket_address_get_flowinfo +g_inet_socket_address_get_port +g_inet_socket_address_get_scope_id +g_inet_socket_address_get_type +g_inet_socket_address_new +g_inet_socket_address_new_from_string +g_initable_get_type +g_initable_init +g_initable_new +g_initable_new_valist +g_initable_newv +g_input_stream_clear_pending +g_input_stream_close +g_input_stream_close_async +g_input_stream_close_finish +g_input_stream_get_type +g_input_stream_has_pending +g_input_stream_is_closed +g_input_stream_read +g_input_stream_read_all +g_input_stream_read_all_async +g_input_stream_read_all_finish +g_input_stream_read_async +g_input_stream_read_bytes +g_input_stream_read_bytes_async +g_input_stream_read_bytes_finish +g_input_stream_read_finish +g_input_stream_set_pending +g_input_stream_skip +g_input_stream_skip_async +g_input_stream_skip_finish +g_io_error_enum_get_type +g_io_error_from_errno +g_io_error_from_file_error +g_io_error_from_win32_error +g_io_error_quark +g_io_extension_get_name +g_io_extension_get_priority +g_io_extension_get_type +g_io_extension_point_get_extension_by_name +g_io_extension_point_get_extensions +g_io_extension_point_get_required_type +g_io_extension_point_implement +g_io_extension_point_lookup +g_io_extension_point_register +g_io_extension_point_set_required_type +g_io_extension_ref_class +g_io_module_get_type +g_io_module_new +g_io_module_scope_block +g_io_module_scope_flags_get_type +g_io_module_scope_free +g_io_module_scope_new +g_io_modules_load_all_in_directory +g_io_modules_load_all_in_directory_with_scope +g_io_modules_scan_all_in_directory +g_io_modules_scan_all_in_directory_with_scope +g_io_scheduler_cancel_all_jobs +g_io_scheduler_job_send_to_mainloop +g_io_scheduler_job_send_to_mainloop_async +g_io_scheduler_push_job +g_io_stream_clear_pending +g_io_stream_close +g_io_stream_close_async +g_io_stream_close_finish +g_io_stream_get_input_stream +g_io_stream_get_output_stream +g_io_stream_get_type +g_io_stream_has_pending +g_io_stream_is_closed +g_io_stream_set_pending +g_io_stream_splice_async +g_io_stream_splice_finish +g_io_stream_splice_flags_get_type +g_keyfile_settings_backend_new +g_list_model_get_item +g_list_model_get_item_type +g_list_model_get_n_items +g_list_model_get_object +g_list_model_get_type +g_list_model_items_changed +g_list_store_append +g_list_store_find +g_list_store_find_with_equal_func +g_list_store_find_with_equal_func_full +g_list_store_get_type +g_list_store_insert +g_list_store_insert_sorted +g_list_store_new +g_list_store_remove +g_list_store_remove_all +g_list_store_sort +g_list_store_splice +g_loadable_icon_get_type +g_loadable_icon_load +g_loadable_icon_load_async +g_loadable_icon_load_finish +g_memory_input_stream_add_bytes +g_memory_input_stream_add_data +g_memory_input_stream_get_type +g_memory_input_stream_new +g_memory_input_stream_new_from_bytes +g_memory_input_stream_new_from_data +g_memory_monitor_dup_default +g_memory_monitor_get_type +g_memory_monitor_warning_level_get_type +g_memory_output_stream_get_data +g_memory_output_stream_get_data_size +g_memory_output_stream_get_size +g_memory_output_stream_get_type +g_memory_output_stream_new +g_memory_output_stream_new_resizable +g_memory_output_stream_steal_as_bytes +g_memory_output_stream_steal_data +g_memory_settings_backend_new +g_menu_append +g_menu_append_item +g_menu_append_section +g_menu_append_submenu +g_menu_attribute_iter_get_name +g_menu_attribute_iter_get_next +g_menu_attribute_iter_get_type +g_menu_attribute_iter_get_value +g_menu_attribute_iter_next +g_menu_freeze +g_menu_get_type +g_menu_insert +g_menu_insert_item +g_menu_insert_section +g_menu_insert_submenu +g_menu_item_get_attribute +g_menu_item_get_attribute_value +g_menu_item_get_link +g_menu_item_get_type +g_menu_item_new +g_menu_item_new_from_model +g_menu_item_new_section +g_menu_item_new_submenu +g_menu_item_set_action_and_target +g_menu_item_set_action_and_target_value +g_menu_item_set_attribute +g_menu_item_set_attribute_value +g_menu_item_set_detailed_action +g_menu_item_set_icon +g_menu_item_set_label +g_menu_item_set_link +g_menu_item_set_section +g_menu_item_set_submenu +g_menu_link_iter_get_name +g_menu_link_iter_get_next +g_menu_link_iter_get_type +g_menu_link_iter_get_value +g_menu_link_iter_next +g_menu_model_get_item_attribute +g_menu_model_get_item_attribute_value +g_menu_model_get_item_link +g_menu_model_get_n_items +g_menu_model_get_type +g_menu_model_is_mutable +g_menu_model_items_changed +g_menu_model_iterate_item_attributes +g_menu_model_iterate_item_links +g_menu_new +g_menu_prepend +g_menu_prepend_item +g_menu_prepend_section +g_menu_prepend_submenu +g_menu_remove +g_menu_remove_all +g_mount_can_eject +g_mount_can_unmount +g_mount_eject +g_mount_eject_finish +g_mount_eject_with_operation +g_mount_eject_with_operation_finish +g_mount_get_default_location +g_mount_get_drive +g_mount_get_icon +g_mount_get_name +g_mount_get_root +g_mount_get_sort_key +g_mount_get_symbolic_icon +g_mount_get_type +g_mount_get_uuid +g_mount_get_volume +g_mount_guess_content_type +g_mount_guess_content_type_finish +g_mount_guess_content_type_sync +g_mount_is_shadowed +g_mount_mount_flags_get_type +g_mount_operation_get_anonymous +g_mount_operation_get_choice +g_mount_operation_get_domain +g_mount_operation_get_is_tcrypt_hidden_volume +g_mount_operation_get_is_tcrypt_system_volume +g_mount_operation_get_password +g_mount_operation_get_password_save +g_mount_operation_get_pim +g_mount_operation_get_type +g_mount_operation_get_username +g_mount_operation_new +g_mount_operation_reply +g_mount_operation_result_get_type +g_mount_operation_set_anonymous +g_mount_operation_set_choice +g_mount_operation_set_domain +g_mount_operation_set_is_tcrypt_hidden_volume +g_mount_operation_set_is_tcrypt_system_volume +g_mount_operation_set_password +g_mount_operation_set_password_save +g_mount_operation_set_pim +g_mount_operation_set_username +g_mount_remount +g_mount_remount_finish +g_mount_shadow +g_mount_unmount +g_mount_unmount_finish +g_mount_unmount_flags_get_type +g_mount_unmount_with_operation +g_mount_unmount_with_operation_finish +g_mount_unshadow +g_native_socket_address_get_type +g_native_socket_address_new +g_native_volume_monitor_get_type +g_network_address_get_hostname +g_network_address_get_port +g_network_address_get_scheme +g_network_address_get_type +g_network_address_new +g_network_address_new_loopback +g_network_address_parse +g_network_address_parse_uri +g_network_connectivity_get_type +g_network_monitor_base_add_network +g_network_monitor_base_get_type +g_network_monitor_base_remove_network +g_network_monitor_base_set_networks +g_network_monitor_can_reach +g_network_monitor_can_reach_async +g_network_monitor_can_reach_finish +g_network_monitor_get_connectivity +g_network_monitor_get_default +g_network_monitor_get_network_available +g_network_monitor_get_network_metered +g_network_monitor_get_type +g_network_service_get_domain +g_network_service_get_protocol +g_network_service_get_scheme +g_network_service_get_service +g_network_service_get_type +g_network_service_new +g_network_service_set_scheme +g_networking_init +g_notification_add_button +g_notification_add_button_with_target +g_notification_add_button_with_target_value +g_notification_get_type +g_notification_new +g_notification_priority_get_type +g_notification_set_body +g_notification_set_category +g_notification_set_default_action +g_notification_set_default_action_and_target +g_notification_set_default_action_and_target_value +g_notification_set_icon +g_notification_set_priority +g_notification_set_title +g_notification_set_urgent +g_null_settings_backend_new +g_output_stream_clear_pending +g_output_stream_close +g_output_stream_close_async +g_output_stream_close_finish +g_output_stream_flush +g_output_stream_flush_async +g_output_stream_flush_finish +g_output_stream_get_type +g_output_stream_has_pending +g_output_stream_is_closed +g_output_stream_is_closing +g_output_stream_printf +g_output_stream_set_pending +g_output_stream_splice +g_output_stream_splice_async +g_output_stream_splice_finish +g_output_stream_splice_flags_get_type +g_output_stream_vprintf +g_output_stream_write +g_output_stream_write_all +g_output_stream_write_all_async +g_output_stream_write_all_finish +g_output_stream_write_async +g_output_stream_write_bytes +g_output_stream_write_bytes_async +g_output_stream_write_bytes_finish +g_output_stream_write_finish +g_output_stream_writev +g_output_stream_writev_all +g_output_stream_writev_all_async +g_output_stream_writev_all_finish +g_output_stream_writev_async +g_output_stream_writev_finish +g_password_save_get_type +g_permission_acquire +g_permission_acquire_async +g_permission_acquire_finish +g_permission_get_allowed +g_permission_get_can_acquire +g_permission_get_can_release +g_permission_get_type +g_permission_impl_update +g_permission_release +g_permission_release_async +g_permission_release_finish +g_pollable_input_stream_can_poll +g_pollable_input_stream_create_source +g_pollable_input_stream_get_type +g_pollable_input_stream_is_readable +g_pollable_input_stream_read_nonblocking +g_pollable_output_stream_can_poll +g_pollable_output_stream_create_source +g_pollable_output_stream_get_type +g_pollable_output_stream_is_writable +g_pollable_output_stream_write_nonblocking +g_pollable_output_stream_writev_nonblocking +g_pollable_return_get_type +g_pollable_source_new +g_pollable_source_new_full +g_pollable_stream_read +g_pollable_stream_write +g_pollable_stream_write_all +g_power_profile_monitor_dup_default +g_power_profile_monitor_get_power_saver_enabled +g_power_profile_monitor_get_type +g_property_action_get_type +g_property_action_new +g_proxy_address_enumerator_get_type +g_proxy_address_get_destination_hostname +g_proxy_address_get_destination_port +g_proxy_address_get_destination_protocol +g_proxy_address_get_password +g_proxy_address_get_protocol +g_proxy_address_get_type +g_proxy_address_get_uri +g_proxy_address_get_username +g_proxy_address_new +g_proxy_connect +g_proxy_connect_async +g_proxy_connect_finish +g_proxy_get_default_for_protocol +g_proxy_get_type +g_proxy_resolver_get_default +g_proxy_resolver_get_type +g_proxy_resolver_is_supported +g_proxy_resolver_lookup +g_proxy_resolver_lookup_async +g_proxy_resolver_lookup_finish +g_proxy_supports_hostname +g_remote_action_group_activate_action_full +g_remote_action_group_change_action_state_full +g_remote_action_group_get_type +g_resolver_error_get_type +g_resolver_error_quark +g_resolver_free_addresses +g_resolver_free_targets +g_resolver_get_default +g_resolver_get_type +g_resolver_lookup_by_address +g_resolver_lookup_by_address_async +g_resolver_lookup_by_address_finish +g_resolver_lookup_by_name +g_resolver_lookup_by_name_async +g_resolver_lookup_by_name_finish +g_resolver_lookup_by_name_with_flags +g_resolver_lookup_by_name_with_flags_async +g_resolver_lookup_by_name_with_flags_finish +g_resolver_lookup_records +g_resolver_lookup_records_async +g_resolver_lookup_records_finish +g_resolver_lookup_service +g_resolver_lookup_service_async +g_resolver_lookup_service_finish +g_resolver_name_lookup_flags_get_type +g_resolver_record_type_get_type +g_resolver_set_default +g_resource_enumerate_children +g_resource_error_get_type +g_resource_error_quark +g_resource_flags_get_type +g_resource_get_info +g_resource_get_type +g_resource_load +g_resource_lookup_data +g_resource_lookup_flags_get_type +g_resource_new_from_data +g_resource_open_stream +g_resource_ref +g_resource_unref +g_resources_enumerate_children +g_resources_get_info +g_resources_lookup_data +g_resources_open_stream +g_resources_register +g_resources_unregister +g_seekable_can_seek +g_seekable_can_truncate +g_seekable_get_type +g_seekable_seek +g_seekable_tell +g_seekable_truncate +g_settings_apply +g_settings_backend_changed +g_settings_backend_changed_tree +g_settings_backend_flatten_tree +g_settings_backend_get_default +g_settings_backend_get_type +g_settings_backend_keys_changed +g_settings_backend_path_changed +g_settings_backend_path_writable_changed +g_settings_backend_writable_changed +g_settings_bind +g_settings_bind_flags_get_type +g_settings_bind_with_mapping +g_settings_bind_writable +g_settings_create_action +g_settings_delay +g_settings_get +g_settings_get_boolean +g_settings_get_child +g_settings_get_default_value +g_settings_get_double +g_settings_get_enum +g_settings_get_flags +g_settings_get_has_unapplied +g_settings_get_int +g_settings_get_int64 +g_settings_get_mapped +g_settings_get_range +g_settings_get_string +g_settings_get_strv +g_settings_get_type +g_settings_get_uint +g_settings_get_uint64 +g_settings_get_user_value +g_settings_get_value +g_settings_is_writable +g_settings_list_children +g_settings_list_keys +g_settings_list_relocatable_schemas +g_settings_list_schemas +g_settings_new +g_settings_new_full +g_settings_new_with_backend +g_settings_new_with_backend_and_path +g_settings_new_with_path +g_settings_range_check +g_settings_reset +g_settings_revert +g_settings_schema_get_id +g_settings_schema_get_key +g_settings_schema_get_path +g_settings_schema_get_type +g_settings_schema_has_key +g_settings_schema_key_get_default_value +g_settings_schema_key_get_description +g_settings_schema_key_get_name +g_settings_schema_key_get_range +g_settings_schema_key_get_summary +g_settings_schema_key_get_type +g_settings_schema_key_get_value_type +g_settings_schema_key_range_check +g_settings_schema_key_ref +g_settings_schema_key_unref +g_settings_schema_list_children +g_settings_schema_list_keys +g_settings_schema_ref +g_settings_schema_source_get_default +g_settings_schema_source_get_type +g_settings_schema_source_list_schemas +g_settings_schema_source_lookup +g_settings_schema_source_new_from_directory +g_settings_schema_source_ref +g_settings_schema_source_unref +g_settings_schema_unref +g_settings_set +g_settings_set_boolean +g_settings_set_double +g_settings_set_enum +g_settings_set_flags +g_settings_set_int +g_settings_set_int64 +g_settings_set_string +g_settings_set_strv +g_settings_set_uint +g_settings_set_uint64 +g_settings_set_value +g_settings_sync +g_settings_unbind +g_simple_action_get_type +g_simple_action_group_add_entries +g_simple_action_group_get_type +g_simple_action_group_insert +g_simple_action_group_lookup +g_simple_action_group_new +g_simple_action_group_remove +g_simple_action_new +g_simple_action_new_stateful +g_simple_action_set_enabled +g_simple_action_set_state +g_simple_action_set_state_hint +g_simple_async_report_error_in_idle +g_simple_async_report_gerror_in_idle +g_simple_async_report_take_gerror_in_idle +g_simple_async_result_complete +g_simple_async_result_complete_in_idle +g_simple_async_result_get_op_res_gboolean +g_simple_async_result_get_op_res_gpointer +g_simple_async_result_get_op_res_gssize +g_simple_async_result_get_source_tag +g_simple_async_result_get_type +g_simple_async_result_is_valid +g_simple_async_result_new +g_simple_async_result_new_error +g_simple_async_result_new_from_error +g_simple_async_result_new_take_error +g_simple_async_result_propagate_error +g_simple_async_result_run_in_thread +g_simple_async_result_set_check_cancellable +g_simple_async_result_set_error +g_simple_async_result_set_error_va +g_simple_async_result_set_from_error +g_simple_async_result_set_handle_cancellation +g_simple_async_result_set_op_res_gboolean +g_simple_async_result_set_op_res_gpointer +g_simple_async_result_set_op_res_gssize +g_simple_async_result_take_error +g_simple_io_stream_get_type +g_simple_io_stream_new +g_simple_permission_get_type +g_simple_permission_new +g_simple_proxy_resolver_get_type +g_simple_proxy_resolver_new +g_simple_proxy_resolver_set_default_proxy +g_simple_proxy_resolver_set_ignore_hosts +g_simple_proxy_resolver_set_uri_proxy +g_socket_accept +g_socket_address_enumerator_get_type +g_socket_address_enumerator_next +g_socket_address_enumerator_next_async +g_socket_address_enumerator_next_finish +g_socket_address_get_family +g_socket_address_get_native_size +g_socket_address_get_type +g_socket_address_new_from_native +g_socket_address_to_native +g_socket_bind +g_socket_check_connect_result +g_socket_client_add_application_proxy +g_socket_client_connect +g_socket_client_connect_async +g_socket_client_connect_finish +g_socket_client_connect_to_host +g_socket_client_connect_to_host_async +g_socket_client_connect_to_host_finish +g_socket_client_connect_to_service +g_socket_client_connect_to_service_async +g_socket_client_connect_to_service_finish +g_socket_client_connect_to_uri +g_socket_client_connect_to_uri_async +g_socket_client_connect_to_uri_finish +g_socket_client_event_get_type +g_socket_client_get_enable_proxy +g_socket_client_get_family +g_socket_client_get_local_address +g_socket_client_get_protocol +g_socket_client_get_proxy_resolver +g_socket_client_get_socket_type +g_socket_client_get_timeout +g_socket_client_get_tls +g_socket_client_get_tls_validation_flags +g_socket_client_get_type +g_socket_client_new +g_socket_client_set_enable_proxy +g_socket_client_set_family +g_socket_client_set_local_address +g_socket_client_set_protocol +g_socket_client_set_proxy_resolver +g_socket_client_set_socket_type +g_socket_client_set_timeout +g_socket_client_set_tls +g_socket_client_set_tls_validation_flags +g_socket_close +g_socket_condition_check +g_socket_condition_timed_wait +g_socket_condition_wait +g_socket_connect +g_socket_connectable_enumerate +g_socket_connectable_get_type +g_socket_connectable_proxy_enumerate +g_socket_connectable_to_string +g_socket_connection_connect +g_socket_connection_connect_async +g_socket_connection_connect_finish +g_socket_connection_factory_create_connection +g_socket_connection_factory_lookup_type +g_socket_connection_factory_register_type +g_socket_connection_get_local_address +g_socket_connection_get_remote_address +g_socket_connection_get_socket +g_socket_connection_get_type +g_socket_connection_is_connected +g_socket_control_message_deserialize +g_socket_control_message_get_level +g_socket_control_message_get_msg_type +g_socket_control_message_get_size +g_socket_control_message_get_type +g_socket_control_message_serialize +g_socket_create_source +g_socket_family_get_type +g_socket_get_available_bytes +g_socket_get_blocking +g_socket_get_broadcast +g_socket_get_credentials +g_socket_get_family +g_socket_get_fd +g_socket_get_keepalive +g_socket_get_listen_backlog +g_socket_get_local_address +g_socket_get_multicast_loopback +g_socket_get_multicast_ttl +g_socket_get_option +g_socket_get_protocol +g_socket_get_remote_address +g_socket_get_socket_type +g_socket_get_timeout +g_socket_get_ttl +g_socket_get_type +g_socket_is_closed +g_socket_is_connected +g_socket_join_multicast_group +g_socket_join_multicast_group_ssm +g_socket_leave_multicast_group +g_socket_leave_multicast_group_ssm +g_socket_listen +g_socket_listener_accept +g_socket_listener_accept_async +g_socket_listener_accept_finish +g_socket_listener_accept_socket +g_socket_listener_accept_socket_async +g_socket_listener_accept_socket_finish +g_socket_listener_add_address +g_socket_listener_add_any_inet_port +g_socket_listener_add_inet_port +g_socket_listener_add_socket +g_socket_listener_close +g_socket_listener_event_get_type +g_socket_listener_get_type +g_socket_listener_new +g_socket_listener_set_backlog +g_socket_msg_flags_get_type +g_socket_new +g_socket_new_from_fd +g_socket_protocol_get_type +g_socket_receive +g_socket_receive_from +g_socket_receive_message +g_socket_receive_messages +g_socket_receive_with_blocking +g_socket_send +g_socket_send_message +g_socket_send_message_with_timeout +g_socket_send_messages +g_socket_send_to +g_socket_send_with_blocking +g_socket_service_get_type +g_socket_service_is_active +g_socket_service_new +g_socket_service_start +g_socket_service_stop +g_socket_set_blocking +g_socket_set_broadcast +g_socket_set_keepalive +g_socket_set_listen_backlog +g_socket_set_multicast_loopback +g_socket_set_multicast_ttl +g_socket_set_option +g_socket_set_timeout +g_socket_set_ttl +g_socket_shutdown +g_socket_speaks_ipv4 +g_socket_type_get_type +g_srv_target_copy +g_srv_target_free +g_srv_target_get_hostname +g_srv_target_get_port +g_srv_target_get_priority +g_srv_target_get_type +g_srv_target_get_weight +g_srv_target_list_sort +g_srv_target_new +g_static_resource_fini +g_static_resource_get_resource +g_static_resource_init +g_subprocess_communicate +g_subprocess_communicate_async +g_subprocess_communicate_finish +g_subprocess_communicate_utf8 +g_subprocess_communicate_utf8_async +g_subprocess_communicate_utf8_finish +g_subprocess_flags_get_type +g_subprocess_force_exit +g_subprocess_get_exit_status +g_subprocess_get_identifier +g_subprocess_get_if_exited +g_subprocess_get_if_signaled +g_subprocess_get_status +g_subprocess_get_stderr_pipe +g_subprocess_get_stdin_pipe +g_subprocess_get_stdout_pipe +g_subprocess_get_successful +g_subprocess_get_term_sig +g_subprocess_get_type +g_subprocess_launcher_get_type +g_subprocess_launcher_getenv +g_subprocess_launcher_new +g_subprocess_launcher_set_cwd +g_subprocess_launcher_set_environ +g_subprocess_launcher_set_flags +g_subprocess_launcher_setenv +g_subprocess_launcher_spawn +g_subprocess_launcher_spawnv +g_subprocess_launcher_unsetenv +g_subprocess_new +g_subprocess_newv +g_subprocess_wait +g_subprocess_wait_async +g_subprocess_wait_check +g_subprocess_wait_check_async +g_subprocess_wait_check_finish +g_subprocess_wait_finish +g_task_attach_source +g_task_get_cancellable +g_task_get_check_cancellable +g_task_get_completed +g_task_get_context +g_task_get_name +g_task_get_priority +g_task_get_return_on_cancel +g_task_get_source_object +g_task_get_source_tag +g_task_get_task_data +g_task_get_type +g_task_had_error +g_task_is_valid +g_task_new +g_task_propagate_boolean +g_task_propagate_int +g_task_propagate_pointer +g_task_propagate_value +g_task_report_error +g_task_report_new_error +g_task_return_boolean +g_task_return_error +g_task_return_error_if_cancelled +g_task_return_int +g_task_return_new_error +g_task_return_pointer +g_task_return_value +g_task_run_in_thread +g_task_run_in_thread_sync +g_task_set_check_cancellable +g_task_set_name +g_task_set_priority +g_task_set_return_on_cancel +g_task_set_source_tag +g_task_set_task_data +g_tcp_connection_get_graceful_disconnect +g_tcp_connection_get_type +g_tcp_connection_set_graceful_disconnect +g_tcp_wrapper_connection_get_base_io_stream +g_tcp_wrapper_connection_get_type +g_tcp_wrapper_connection_new +g_test_dbus_add_service_dir +g_test_dbus_down +g_test_dbus_flags_get_type +g_test_dbus_get_bus_address +g_test_dbus_get_flags +g_test_dbus_get_type +g_test_dbus_new +g_test_dbus_stop +g_test_dbus_unset +g_test_dbus_up +g_themed_icon_append_name +g_themed_icon_get_names +g_themed_icon_get_type +g_themed_icon_new +g_themed_icon_new_from_names +g_themed_icon_new_with_default_fallbacks +g_themed_icon_prepend_name +g_threaded_resolver_get_type +g_threaded_socket_service_get_type +g_threaded_socket_service_new +g_tls_authentication_mode_get_type +g_tls_backend_get_certificate_type +g_tls_backend_get_client_connection_type +g_tls_backend_get_default +g_tls_backend_get_default_database +g_tls_backend_get_dtls_client_connection_type +g_tls_backend_get_dtls_server_connection_type +g_tls_backend_get_file_database_type +g_tls_backend_get_server_connection_type +g_tls_backend_get_type +g_tls_backend_set_default_database +g_tls_backend_supports_dtls +g_tls_backend_supports_tls +g_tls_certificate_flags_get_type +g_tls_certificate_get_dns_names +g_tls_certificate_get_ip_addresses +g_tls_certificate_get_issuer +g_tls_certificate_get_issuer_name +g_tls_certificate_get_not_valid_after +g_tls_certificate_get_not_valid_before +g_tls_certificate_get_subject_name +g_tls_certificate_get_type +g_tls_certificate_is_same +g_tls_certificate_list_new_from_file +g_tls_certificate_new_from_file +g_tls_certificate_new_from_file_with_password +g_tls_certificate_new_from_files +g_tls_certificate_new_from_pem +g_tls_certificate_new_from_pkcs11_uris +g_tls_certificate_new_from_pkcs12 +g_tls_certificate_request_flags_get_type +g_tls_certificate_verify +g_tls_channel_binding_error_get_type +g_tls_channel_binding_error_quark +g_tls_channel_binding_type_get_type +g_tls_client_connection_copy_session_state +g_tls_client_connection_get_accepted_cas +g_tls_client_connection_get_server_identity +g_tls_client_connection_get_type +g_tls_client_connection_get_use_ssl3 +g_tls_client_connection_get_validation_flags +g_tls_client_connection_new +g_tls_client_connection_set_server_identity +g_tls_client_connection_set_use_ssl3 +g_tls_client_connection_set_validation_flags +g_tls_connection_emit_accept_certificate +g_tls_connection_get_certificate +g_tls_connection_get_channel_binding_data +g_tls_connection_get_ciphersuite_name +g_tls_connection_get_database +g_tls_connection_get_interaction +g_tls_connection_get_negotiated_protocol +g_tls_connection_get_peer_certificate +g_tls_connection_get_peer_certificate_errors +g_tls_connection_get_protocol_version +g_tls_connection_get_rehandshake_mode +g_tls_connection_get_require_close_notify +g_tls_connection_get_type +g_tls_connection_get_use_system_certdb +g_tls_connection_handshake +g_tls_connection_handshake_async +g_tls_connection_handshake_finish +g_tls_connection_set_advertised_protocols +g_tls_connection_set_certificate +g_tls_connection_set_database +g_tls_connection_set_interaction +g_tls_connection_set_rehandshake_mode +g_tls_connection_set_require_close_notify +g_tls_connection_set_use_system_certdb +g_tls_database_create_certificate_handle +g_tls_database_get_type +g_tls_database_lookup_certificate_for_handle +g_tls_database_lookup_certificate_for_handle_async +g_tls_database_lookup_certificate_for_handle_finish +g_tls_database_lookup_certificate_issuer +g_tls_database_lookup_certificate_issuer_async +g_tls_database_lookup_certificate_issuer_finish +g_tls_database_lookup_certificates_issued_by +g_tls_database_lookup_certificates_issued_by_async +g_tls_database_lookup_certificates_issued_by_finish +g_tls_database_lookup_flags_get_type +g_tls_database_verify_chain +g_tls_database_verify_chain_async +g_tls_database_verify_chain_finish +g_tls_database_verify_flags_get_type +g_tls_error_get_type +g_tls_error_quark +g_tls_file_database_get_type +g_tls_file_database_new +g_tls_interaction_ask_password +g_tls_interaction_ask_password_async +g_tls_interaction_ask_password_finish +g_tls_interaction_get_type +g_tls_interaction_invoke_ask_password +g_tls_interaction_invoke_request_certificate +g_tls_interaction_request_certificate +g_tls_interaction_request_certificate_async +g_tls_interaction_request_certificate_finish +g_tls_interaction_result_get_type +g_tls_password_flags_get_type +g_tls_password_get_description +g_tls_password_get_flags +g_tls_password_get_type +g_tls_password_get_value +g_tls_password_get_warning +g_tls_password_new +g_tls_password_set_description +g_tls_password_set_flags +g_tls_password_set_value +g_tls_password_set_value_full +g_tls_password_set_warning +g_tls_protocol_version_get_type +g_tls_rehandshake_mode_get_type +g_tls_server_connection_get_type +g_tls_server_connection_new +g_unix_connection_get_type +g_unix_connection_receive_credentials +g_unix_connection_receive_credentials_async +g_unix_connection_receive_credentials_finish +g_unix_connection_receive_fd +g_unix_connection_send_credentials +g_unix_connection_send_credentials_async +g_unix_connection_send_credentials_finish +g_unix_connection_send_fd +g_unix_credentials_message_get_credentials +g_unix_credentials_message_get_type +g_unix_credentials_message_is_supported +g_unix_credentials_message_new +g_unix_credentials_message_new_with_credentials +g_unix_fd_list_append +g_unix_fd_list_get +g_unix_fd_list_get_length +g_unix_fd_list_get_type +g_unix_fd_list_new +g_unix_fd_list_new_from_array +g_unix_fd_list_peek_fds +g_unix_fd_list_steal_fds +g_unix_socket_address_abstract_names_supported +g_unix_socket_address_get_address_type +g_unix_socket_address_get_is_abstract +g_unix_socket_address_get_path +g_unix_socket_address_get_path_len +g_unix_socket_address_get_type +g_unix_socket_address_new +g_unix_socket_address_new_abstract +g_unix_socket_address_new_with_type +g_unix_socket_address_type_get_type +g_vfs_get_default +g_vfs_get_file_for_path +g_vfs_get_file_for_uri +g_vfs_get_local +g_vfs_get_supported_uri_schemes +g_vfs_get_type +g_vfs_is_active +g_vfs_parse_name +g_vfs_register_uri_scheme +g_vfs_unregister_uri_scheme +g_volume_can_eject +g_volume_can_mount +g_volume_eject +g_volume_eject_finish +g_volume_eject_with_operation +g_volume_eject_with_operation_finish +g_volume_enumerate_identifiers +g_volume_get_activation_root +g_volume_get_drive +g_volume_get_icon +g_volume_get_identifier +g_volume_get_mount +g_volume_get_name +g_volume_get_sort_key +g_volume_get_symbolic_icon +g_volume_get_type +g_volume_get_uuid +g_volume_monitor_adopt_orphan_mount +g_volume_monitor_get +g_volume_monitor_get_connected_drives +g_volume_monitor_get_mount_for_uuid +g_volume_monitor_get_mounts +g_volume_monitor_get_type +g_volume_monitor_get_volume_for_uuid +g_volume_monitor_get_volumes +g_volume_mount +g_volume_mount_finish +g_volume_should_automount +g_win32_input_stream_get_close_handle +g_win32_input_stream_get_handle +g_win32_input_stream_get_type +g_win32_input_stream_new +g_win32_input_stream_set_close_handle +g_win32_output_stream_get_close_handle +g_win32_output_stream_get_handle +g_win32_output_stream_get_type +g_win32_output_stream_new +g_win32_output_stream_set_close_handle +g_win32_registry_get_os_dirs +g_win32_registry_get_os_dirs_w +g_win32_registry_key_erase_change_indicator +g_win32_registry_key_get_child +g_win32_registry_key_get_child_w +g_win32_registry_key_get_path +g_win32_registry_key_get_path_w +g_win32_registry_key_get_type +g_win32_registry_key_get_value +g_win32_registry_key_get_value_w +g_win32_registry_key_has_changed +g_win32_registry_key_new +g_win32_registry_key_new_w +g_win32_registry_key_watch +g_win32_registry_subkey_iter_assign +g_win32_registry_subkey_iter_clear +g_win32_registry_subkey_iter_copy +g_win32_registry_subkey_iter_free +g_win32_registry_subkey_iter_get_name +g_win32_registry_subkey_iter_get_name_w +g_win32_registry_subkey_iter_get_type +g_win32_registry_subkey_iter_init +g_win32_registry_subkey_iter_n_subkeys +g_win32_registry_subkey_iter_next +g_win32_registry_value_iter_assign +g_win32_registry_value_iter_clear +g_win32_registry_value_iter_copy +g_win32_registry_value_iter_free +g_win32_registry_value_iter_get_data +g_win32_registry_value_iter_get_data_w +g_win32_registry_value_iter_get_name +g_win32_registry_value_iter_get_name_w +g_win32_registry_value_iter_get_type +g_win32_registry_value_iter_get_value_type +g_win32_registry_value_iter_init +g_win32_registry_value_iter_n_values +g_win32_registry_value_iter_next +g_win32_run_session_bus +g_zlib_compressor_format_get_type +g_zlib_compressor_get_file_info +g_zlib_compressor_get_type +g_zlib_compressor_new +g_zlib_compressor_set_file_info +g_zlib_decompressor_get_file_info +g_zlib_decompressor_get_type +g_zlib_decompressor_new diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.dll.a new file mode 100644 index 0000000..066cc03 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.lib new file mode 100644 index 0000000..066cc03 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgio-2.0.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.def new file mode 100644 index 0000000..9a94f90 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.def @@ -0,0 +1,1813 @@ +; +; Definition file of libglib-2.0-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libglib-2.0-0.dll" +EXPORTS +__glib_assert_msg DATA +_glib_get_locale_dir +g_abort +g_access +g_aligned_alloc +g_aligned_alloc0 +g_aligned_free +g_allocator_free +g_allocator_new +g_array_append_vals +g_array_binary_search +g_array_copy +g_array_free +g_array_get_element_size +g_array_insert_vals +g_array_new +g_array_prepend_vals +g_array_ref +g_array_remove_index +g_array_remove_index_fast +g_array_remove_range +g_array_set_clear_func +g_array_set_size +g_array_sized_new +g_array_sort +g_array_sort_with_data +g_array_steal +g_array_unref +g_ascii_digit_value +g_ascii_dtostr +g_ascii_formatd +g_ascii_strcasecmp +g_ascii_strdown +g_ascii_string_to_signed +g_ascii_string_to_unsigned +g_ascii_strncasecmp +g_ascii_strtod +g_ascii_strtoll +g_ascii_strtoull +g_ascii_strup +g_ascii_table DATA +g_ascii_tolower +g_ascii_toupper +g_ascii_xdigit_value +g_assert_warning +g_assertion_message +g_assertion_message_cmpnum +g_assertion_message_cmpstr +g_assertion_message_cmpstrv +g_assertion_message_error +g_assertion_message_expr +g_async_queue_length +g_async_queue_length_unlocked +g_async_queue_lock +g_async_queue_new +g_async_queue_new_full +g_async_queue_pop +g_async_queue_pop_unlocked +g_async_queue_push +g_async_queue_push_front +g_async_queue_push_front_unlocked +g_async_queue_push_sorted +g_async_queue_push_sorted_unlocked +g_async_queue_push_unlocked +g_async_queue_ref +g_async_queue_ref_unlocked +g_async_queue_remove +g_async_queue_remove_unlocked +g_async_queue_sort +g_async_queue_sort_unlocked +g_async_queue_timed_pop +g_async_queue_timed_pop_unlocked +g_async_queue_timeout_pop +g_async_queue_timeout_pop_unlocked +g_async_queue_try_pop +g_async_queue_try_pop_unlocked +g_async_queue_unlock +g_async_queue_unref +g_async_queue_unref_and_unlock +g_atexit +g_atomic_int_add +g_atomic_int_and +g_atomic_int_compare_and_exchange +g_atomic_int_compare_and_exchange_full +g_atomic_int_dec_and_test +g_atomic_int_exchange +g_atomic_int_exchange_and_add +g_atomic_int_get +g_atomic_int_inc +g_atomic_int_or +g_atomic_int_set +g_atomic_int_xor +g_atomic_pointer_add +g_atomic_pointer_and +g_atomic_pointer_compare_and_exchange +g_atomic_pointer_compare_and_exchange_full +g_atomic_pointer_exchange +g_atomic_pointer_get +g_atomic_pointer_or +g_atomic_pointer_set +g_atomic_pointer_xor +g_atomic_rc_box_acquire +g_atomic_rc_box_alloc +g_atomic_rc_box_alloc0 +g_atomic_rc_box_dup +g_atomic_rc_box_get_size +g_atomic_rc_box_release +g_atomic_rc_box_release_full +g_atomic_ref_count_compare +g_atomic_ref_count_dec +g_atomic_ref_count_inc +g_atomic_ref_count_init +g_base64_decode +g_base64_decode_inplace +g_base64_decode_step +g_base64_encode +g_base64_encode_close +g_base64_encode_step +g_basename +g_bit_lock +g_bit_nth_lsf +g_bit_nth_msf +g_bit_storage +g_bit_trylock +g_bit_unlock +g_blow_chunks +g_bookmark_file_add_application +g_bookmark_file_add_group +g_bookmark_file_error_quark +g_bookmark_file_free +g_bookmark_file_get_added +g_bookmark_file_get_added_date_time +g_bookmark_file_get_app_info +g_bookmark_file_get_application_info +g_bookmark_file_get_applications +g_bookmark_file_get_description +g_bookmark_file_get_groups +g_bookmark_file_get_icon +g_bookmark_file_get_is_private +g_bookmark_file_get_mime_type +g_bookmark_file_get_modified +g_bookmark_file_get_modified_date_time +g_bookmark_file_get_size +g_bookmark_file_get_title +g_bookmark_file_get_uris +g_bookmark_file_get_visited +g_bookmark_file_get_visited_date_time +g_bookmark_file_has_application +g_bookmark_file_has_group +g_bookmark_file_has_item +g_bookmark_file_load_from_data +g_bookmark_file_load_from_data_dirs +g_bookmark_file_load_from_file +g_bookmark_file_move_item +g_bookmark_file_new +g_bookmark_file_remove_application +g_bookmark_file_remove_group +g_bookmark_file_remove_item +g_bookmark_file_set_added +g_bookmark_file_set_added_date_time +g_bookmark_file_set_app_info +g_bookmark_file_set_application_info +g_bookmark_file_set_description +g_bookmark_file_set_groups +g_bookmark_file_set_icon +g_bookmark_file_set_is_private +g_bookmark_file_set_mime_type +g_bookmark_file_set_modified +g_bookmark_file_set_modified_date_time +g_bookmark_file_set_title +g_bookmark_file_set_visited +g_bookmark_file_set_visited_date_time +g_bookmark_file_to_data +g_bookmark_file_to_file +g_build_filename +g_build_filename_valist +g_build_filenamev +g_build_path +g_build_pathv +g_byte_array_append +g_byte_array_free +g_byte_array_free_to_bytes +g_byte_array_new +g_byte_array_new_take +g_byte_array_prepend +g_byte_array_ref +g_byte_array_remove_index +g_byte_array_remove_index_fast +g_byte_array_remove_range +g_byte_array_set_size +g_byte_array_sized_new +g_byte_array_sort +g_byte_array_sort_with_data +g_byte_array_steal +g_byte_array_unref +g_bytes_compare +g_bytes_equal +g_bytes_get_data +g_bytes_get_region +g_bytes_get_size +g_bytes_hash +g_bytes_new +g_bytes_new_from_bytes +g_bytes_new_static +g_bytes_new_take +g_bytes_new_with_free_func +g_bytes_ref +g_bytes_unref +g_bytes_unref_to_array +g_bytes_unref_to_data +g_cache_destroy +g_cache_insert +g_cache_key_foreach +g_cache_new +g_cache_remove +g_cache_value_foreach +g_canonicalize_filename +g_chdir +g_checksum_copy +g_checksum_free +g_checksum_get_digest +g_checksum_get_string +g_checksum_new +g_checksum_reset +g_checksum_type_get_length +g_checksum_update +g_child_watch_add +g_child_watch_add_full +g_child_watch_funcs DATA +g_child_watch_source_new +g_chmod +g_clear_error +g_clear_handle_id +g_clear_list +g_clear_pointer +g_clear_slist +g_close +g_completion_add_items +g_completion_clear_items +g_completion_complete +g_completion_complete_utf8 +g_completion_free +g_completion_new +g_completion_remove_items +g_completion_set_compare +g_compute_checksum_for_bytes +g_compute_checksum_for_data +g_compute_checksum_for_string +g_compute_hmac_for_bytes +g_compute_hmac_for_data +g_compute_hmac_for_string +g_cond_broadcast +g_cond_clear +g_cond_free +g_cond_init +g_cond_new +g_cond_signal +g_cond_timed_wait +g_cond_wait +g_cond_wait_until +g_convert +g_convert_error_quark +g_convert_with_fallback +g_convert_with_iconv +g_creat +g_datalist_clear +g_datalist_foreach +g_datalist_get_data +g_datalist_get_flags +g_datalist_id_dup_data +g_datalist_id_get_data +g_datalist_id_remove_multiple +g_datalist_id_remove_no_notify +g_datalist_id_replace_data +g_datalist_id_set_data_full +g_datalist_init +g_datalist_set_flags +g_datalist_unset_flags +g_dataset_destroy +g_dataset_foreach +g_dataset_id_get_data +g_dataset_id_remove_no_notify +g_dataset_id_set_data_full +g_date_add_days +g_date_add_months +g_date_add_years +g_date_clamp +g_date_clear +g_date_compare +g_date_copy +g_date_days_between +g_date_free +g_date_get_day +g_date_get_day_of_year +g_date_get_days_in_month +g_date_get_iso8601_week_of_year +g_date_get_julian +g_date_get_monday_week_of_year +g_date_get_monday_weeks_in_year +g_date_get_month +g_date_get_sunday_week_of_year +g_date_get_sunday_weeks_in_year +g_date_get_weekday +g_date_get_year +g_date_is_first_of_month +g_date_is_last_of_month +g_date_is_leap_year +g_date_new +g_date_new_dmy +g_date_new_julian +g_date_order +g_date_set_day +g_date_set_dmy +g_date_set_julian +g_date_set_month +g_date_set_parse +g_date_set_time +g_date_set_time_t +g_date_set_time_val +g_date_set_year +g_date_strftime +g_date_subtract_days +g_date_subtract_months +g_date_subtract_years +g_date_time_add +g_date_time_add_days +g_date_time_add_full +g_date_time_add_hours +g_date_time_add_minutes +g_date_time_add_months +g_date_time_add_seconds +g_date_time_add_weeks +g_date_time_add_years +g_date_time_compare +g_date_time_difference +g_date_time_equal +g_date_time_format +g_date_time_format_iso8601 +g_date_time_get_day_of_month +g_date_time_get_day_of_week +g_date_time_get_day_of_year +g_date_time_get_hour +g_date_time_get_microsecond +g_date_time_get_minute +g_date_time_get_month +g_date_time_get_second +g_date_time_get_seconds +g_date_time_get_timezone +g_date_time_get_timezone_abbreviation +g_date_time_get_utc_offset +g_date_time_get_week_numbering_year +g_date_time_get_week_of_year +g_date_time_get_year +g_date_time_get_ymd +g_date_time_hash +g_date_time_is_daylight_savings +g_date_time_new +g_date_time_new_from_iso8601 +g_date_time_new_from_timeval_local +g_date_time_new_from_timeval_utc +g_date_time_new_from_unix_local +g_date_time_new_from_unix_utc +g_date_time_new_local +g_date_time_new_now +g_date_time_new_now_local +g_date_time_new_now_utc +g_date_time_new_utc +g_date_time_ref +g_date_time_to_local +g_date_time_to_timeval +g_date_time_to_timezone +g_date_time_to_unix +g_date_time_to_utc +g_date_time_unref +g_date_to_struct_tm +g_date_valid +g_date_valid_day +g_date_valid_dmy +g_date_valid_julian +g_date_valid_month +g_date_valid_weekday +g_date_valid_year +g_dcgettext +g_dgettext +g_dir_close +g_dir_make_tmp +g_dir_open +g_dir_open_utf8 +g_dir_read_name +g_dir_read_name_utf8 +g_dir_rewind +g_direct_equal +g_direct_hash +g_dngettext +g_double_equal +g_double_hash +g_dpgettext +g_dpgettext2 +g_environ_getenv +g_environ_setenv +g_environ_unsetenv +g_error_copy +g_error_domain_register +g_error_domain_register_static +g_error_free +g_error_matches +g_error_new +g_error_new_literal +g_error_new_valist +g_file_error_from_errno +g_file_error_quark +g_file_get_contents +g_file_get_contents_utf8 +g_file_open_tmp +g_file_open_tmp_utf8 +g_file_read_link +g_file_set_contents +g_file_set_contents_full +g_file_test +g_file_test_utf8 +g_filename_display_basename +g_filename_display_name +g_filename_from_uri +g_filename_from_uri_utf8 +g_filename_from_utf8 +g_filename_from_utf8_utf8 +g_filename_to_uri +g_filename_to_uri_utf8 +g_filename_to_utf8 +g_filename_to_utf8_utf8 +g_find_program_in_path +g_fopen +g_format_size +g_format_size_for_display +g_format_size_full +g_fprintf +g_free +g_freopen +g_fsync +g_get_application_name +g_get_charset +g_get_codeset +g_get_console_charset +g_get_current_dir +g_get_current_dir_utf8 +g_get_current_time +g_get_environ +g_get_filename_charsets +g_get_home_dir +g_get_host_name +g_get_language_names +g_get_language_names_with_category +g_get_locale_variants +g_get_monotonic_time +g_get_num_processors +g_get_os_info +g_get_prgname +g_get_real_name +g_get_real_time +g_get_system_config_dirs +g_get_system_data_dirs +g_get_tmp_dir +g_get_user_cache_dir +g_get_user_config_dir +g_get_user_data_dir +g_get_user_name +g_get_user_runtime_dir +g_get_user_special_dir +g_get_user_state_dir +g_getenv +g_getenv_utf8 +g_hash_table_add +g_hash_table_contains +g_hash_table_destroy +g_hash_table_find +g_hash_table_foreach +g_hash_table_foreach_remove +g_hash_table_foreach_steal +g_hash_table_get_keys +g_hash_table_get_keys_as_array +g_hash_table_get_values +g_hash_table_insert +g_hash_table_iter_get_hash_table +g_hash_table_iter_init +g_hash_table_iter_next +g_hash_table_iter_remove +g_hash_table_iter_replace +g_hash_table_iter_steal +g_hash_table_lookup +g_hash_table_lookup_extended +g_hash_table_new +g_hash_table_new_full +g_hash_table_new_similar +g_hash_table_ref +g_hash_table_remove +g_hash_table_remove_all +g_hash_table_replace +g_hash_table_size +g_hash_table_steal +g_hash_table_steal_all +g_hash_table_steal_extended +g_hash_table_unref +g_hmac_copy +g_hmac_get_digest +g_hmac_get_string +g_hmac_new +g_hmac_ref +g_hmac_unref +g_hmac_update +g_hook_alloc +g_hook_compare_ids +g_hook_destroy +g_hook_destroy_link +g_hook_find +g_hook_find_data +g_hook_find_func +g_hook_find_func_data +g_hook_first_valid +g_hook_free +g_hook_get +g_hook_insert_before +g_hook_insert_sorted +g_hook_list_clear +g_hook_list_init +g_hook_list_invoke +g_hook_list_invoke_check +g_hook_list_marshal +g_hook_list_marshal_check +g_hook_next_valid +g_hook_prepend +g_hook_ref +g_hook_unref +g_hostname_is_ascii_encoded +g_hostname_is_ip_address +g_hostname_is_non_ascii +g_hostname_to_ascii +g_hostname_to_unicode +g_iconv +g_iconv_close +g_iconv_open +g_idle_add +g_idle_add_full +g_idle_add_once +g_idle_funcs DATA +g_idle_remove_by_data +g_idle_source_new +g_int64_equal +g_int64_hash +g_int_equal +g_int_hash +g_intern_static_string +g_intern_string +g_io_add_watch +g_io_add_watch_full +g_io_channel_close +g_io_channel_error_from_errno +g_io_channel_error_quark +g_io_channel_flush +g_io_channel_get_buffer_condition +g_io_channel_get_buffer_size +g_io_channel_get_buffered +g_io_channel_get_close_on_unref +g_io_channel_get_encoding +g_io_channel_get_flags +g_io_channel_get_line_term +g_io_channel_init +g_io_channel_new_file +g_io_channel_new_file_utf8 +g_io_channel_read +g_io_channel_read_chars +g_io_channel_read_line +g_io_channel_read_line_string +g_io_channel_read_to_end +g_io_channel_read_unichar +g_io_channel_ref +g_io_channel_seek +g_io_channel_seek_position +g_io_channel_set_buffer_size +g_io_channel_set_buffered +g_io_channel_set_close_on_unref +g_io_channel_set_encoding +g_io_channel_set_flags +g_io_channel_set_line_term +g_io_channel_shutdown +g_io_channel_unix_get_fd +g_io_channel_unix_new +g_io_channel_unref +g_io_channel_win32_get_fd +g_io_channel_win32_make_pollfd +g_io_channel_win32_new_fd +g_io_channel_win32_new_messages +g_io_channel_win32_new_socket +g_io_channel_win32_poll +g_io_channel_win32_set_debug +g_io_channel_write +g_io_channel_write_chars +g_io_channel_write_unichar +g_io_create_watch +g_io_watch_funcs DATA +g_key_file_error_quark +g_key_file_free +g_key_file_get_boolean +g_key_file_get_boolean_list +g_key_file_get_comment +g_key_file_get_double +g_key_file_get_double_list +g_key_file_get_groups +g_key_file_get_int64 +g_key_file_get_integer +g_key_file_get_integer_list +g_key_file_get_keys +g_key_file_get_locale_for_key +g_key_file_get_locale_string +g_key_file_get_locale_string_list +g_key_file_get_start_group +g_key_file_get_string +g_key_file_get_string_list +g_key_file_get_uint64 +g_key_file_get_value +g_key_file_has_group +g_key_file_has_key +g_key_file_load_from_bytes +g_key_file_load_from_data +g_key_file_load_from_data_dirs +g_key_file_load_from_dirs +g_key_file_load_from_file +g_key_file_new +g_key_file_ref +g_key_file_remove_comment +g_key_file_remove_group +g_key_file_remove_key +g_key_file_save_to_file +g_key_file_set_boolean +g_key_file_set_boolean_list +g_key_file_set_comment +g_key_file_set_double +g_key_file_set_double_list +g_key_file_set_int64 +g_key_file_set_integer +g_key_file_set_integer_list +g_key_file_set_list_separator +g_key_file_set_locale_string +g_key_file_set_locale_string_list +g_key_file_set_string +g_key_file_set_string_list +g_key_file_set_uint64 +g_key_file_set_value +g_key_file_to_data +g_key_file_unref +g_list_alloc +g_list_append +g_list_concat +g_list_copy +g_list_copy_deep +g_list_delete_link +g_list_find +g_list_find_custom +g_list_first +g_list_foreach +g_list_free +g_list_free_1 +g_list_free_full +g_list_index +g_list_insert +g_list_insert_before +g_list_insert_before_link +g_list_insert_sorted +g_list_insert_sorted_with_data +g_list_last +g_list_length +g_list_nth +g_list_nth_data +g_list_nth_prev +g_list_pop_allocator +g_list_position +g_list_prepend +g_list_push_allocator +g_list_remove +g_list_remove_all +g_list_remove_link +g_list_reverse +g_list_sort +g_list_sort_with_data +g_listenv +g_locale_from_utf8 +g_locale_to_utf8 +g_log +g_log_default_handler +g_log_get_debug_enabled +g_log_remove_handler +g_log_set_always_fatal +g_log_set_debug_enabled +g_log_set_default_handler +g_log_set_fatal_mask +g_log_set_handler +g_log_set_handler_full +g_log_set_writer_func +g_log_structured +g_log_structured_array +g_log_structured_standard +g_log_variant +g_log_writer_default +g_log_writer_default_set_use_stderr +g_log_writer_default_would_drop +g_log_writer_format_fields +g_log_writer_is_journald +g_log_writer_journald +g_log_writer_standard_streams +g_log_writer_supports_color +g_logv +g_lstat +g_main_context_acquire +g_main_context_add_poll +g_main_context_check +g_main_context_default +g_main_context_dispatch +g_main_context_find_source_by_funcs_user_data +g_main_context_find_source_by_id +g_main_context_find_source_by_user_data +g_main_context_get_poll_func +g_main_context_get_thread_default +g_main_context_invoke +g_main_context_invoke_full +g_main_context_is_owner +g_main_context_iteration +g_main_context_new +g_main_context_new_with_flags +g_main_context_pending +g_main_context_pop_thread_default +g_main_context_prepare +g_main_context_push_thread_default +g_main_context_query +g_main_context_ref +g_main_context_ref_thread_default +g_main_context_release +g_main_context_remove_poll +g_main_context_set_poll_func +g_main_context_unref +g_main_context_wait +g_main_context_wakeup +g_main_current_source +g_main_depth +g_main_loop_get_context +g_main_loop_is_running +g_main_loop_new +g_main_loop_quit +g_main_loop_ref +g_main_loop_run +g_main_loop_unref +g_malloc +g_malloc0 +g_malloc0_n +g_malloc_n +g_mapped_file_free +g_mapped_file_get_bytes +g_mapped_file_get_contents +g_mapped_file_get_length +g_mapped_file_new +g_mapped_file_new_from_fd +g_mapped_file_ref +g_mapped_file_unref +g_markup_collect_attributes +g_markup_error_quark +g_markup_escape_text +g_markup_parse_context_end_parse +g_markup_parse_context_free +g_markup_parse_context_get_element +g_markup_parse_context_get_element_stack +g_markup_parse_context_get_position +g_markup_parse_context_get_user_data +g_markup_parse_context_new +g_markup_parse_context_parse +g_markup_parse_context_pop +g_markup_parse_context_push +g_markup_parse_context_ref +g_markup_parse_context_unref +g_markup_printf_escaped +g_markup_vprintf_escaped +g_mem_chunk_alloc +g_mem_chunk_alloc0 +g_mem_chunk_clean +g_mem_chunk_destroy +g_mem_chunk_free +g_mem_chunk_info +g_mem_chunk_new +g_mem_chunk_print +g_mem_chunk_reset +g_mem_gc_friendly DATA +g_mem_is_system_malloc +g_mem_profile +g_mem_set_vtable +g_memdup +g_memdup2 +g_mkdir +g_mkdir_with_parents +g_mkdtemp +g_mkdtemp_full +g_mkstemp +g_mkstemp_full +g_mkstemp_utf8 +g_mutex_clear +g_mutex_free +g_mutex_init +g_mutex_lock +g_mutex_new +g_mutex_trylock +g_mutex_unlock +g_node_child_index +g_node_child_position +g_node_children_foreach +g_node_copy +g_node_copy_deep +g_node_depth +g_node_destroy +g_node_find +g_node_find_child +g_node_first_sibling +g_node_get_root +g_node_insert +g_node_insert_after +g_node_insert_before +g_node_is_ancestor +g_node_last_child +g_node_last_sibling +g_node_max_height +g_node_n_children +g_node_n_nodes +g_node_new +g_node_nth_child +g_node_pop_allocator +g_node_prepend +g_node_push_allocator +g_node_reverse_children +g_node_traverse +g_node_unlink +g_nullify_pointer +g_number_parser_error_quark +g_on_error_query +g_on_error_stack_trace +g_once_impl +g_once_init_enter +g_once_init_enter_impl +g_once_init_leave +g_open +g_option_context_add_group +g_option_context_add_main_entries +g_option_context_free +g_option_context_get_description +g_option_context_get_help +g_option_context_get_help_enabled +g_option_context_get_ignore_unknown_options +g_option_context_get_main_group +g_option_context_get_strict_posix +g_option_context_get_summary +g_option_context_new +g_option_context_parse +g_option_context_parse_strv +g_option_context_set_description +g_option_context_set_help_enabled +g_option_context_set_ignore_unknown_options +g_option_context_set_main_group +g_option_context_set_strict_posix +g_option_context_set_summary +g_option_context_set_translate_func +g_option_context_set_translation_domain +g_option_error_quark +g_option_group_add_entries +g_option_group_free +g_option_group_new +g_option_group_ref +g_option_group_set_error_hook +g_option_group_set_parse_hooks +g_option_group_set_translate_func +g_option_group_set_translation_domain +g_option_group_unref +g_parse_debug_string +g_path_get_basename +g_path_get_dirname +g_path_is_absolute +g_path_skip_root +g_pattern_match +g_pattern_match_simple +g_pattern_match_string +g_pattern_spec_copy +g_pattern_spec_equal +g_pattern_spec_free +g_pattern_spec_match +g_pattern_spec_match_string +g_pattern_spec_new +g_pointer_bit_lock +g_pointer_bit_trylock +g_pointer_bit_unlock +g_poll +g_prefix_error +g_prefix_error_literal +g_print +g_printerr +g_printf +g_printf_string_upper_bound +g_private_get +g_private_new +g_private_replace +g_private_set +g_propagate_error +g_propagate_prefixed_error +g_ptr_array_add +g_ptr_array_copy +g_ptr_array_extend +g_ptr_array_extend_and_steal +g_ptr_array_find +g_ptr_array_find_with_equal_func +g_ptr_array_foreach +g_ptr_array_free +g_ptr_array_insert +g_ptr_array_is_null_terminated +g_ptr_array_new +g_ptr_array_new_full +g_ptr_array_new_null_terminated +g_ptr_array_new_with_free_func +g_ptr_array_ref +g_ptr_array_remove +g_ptr_array_remove_fast +g_ptr_array_remove_index +g_ptr_array_remove_index_fast +g_ptr_array_remove_range +g_ptr_array_set_free_func +g_ptr_array_set_size +g_ptr_array_sized_new +g_ptr_array_sort +g_ptr_array_sort_with_data +g_ptr_array_steal +g_ptr_array_steal_index +g_ptr_array_steal_index_fast +g_ptr_array_unref +g_qsort_with_data +g_quark_from_static_string +g_quark_from_string +g_quark_to_string +g_quark_try_string +g_queue_clear +g_queue_clear_full +g_queue_copy +g_queue_delete_link +g_queue_find +g_queue_find_custom +g_queue_foreach +g_queue_free +g_queue_free_full +g_queue_get_length +g_queue_index +g_queue_init +g_queue_insert_after +g_queue_insert_after_link +g_queue_insert_before +g_queue_insert_before_link +g_queue_insert_sorted +g_queue_is_empty +g_queue_link_index +g_queue_new +g_queue_peek_head +g_queue_peek_head_link +g_queue_peek_nth +g_queue_peek_nth_link +g_queue_peek_tail +g_queue_peek_tail_link +g_queue_pop_head +g_queue_pop_head_link +g_queue_pop_nth +g_queue_pop_nth_link +g_queue_pop_tail +g_queue_pop_tail_link +g_queue_push_head +g_queue_push_head_link +g_queue_push_nth +g_queue_push_nth_link +g_queue_push_tail +g_queue_push_tail_link +g_queue_remove +g_queue_remove_all +g_queue_reverse +g_queue_sort +g_queue_unlink +g_rand_copy +g_rand_double +g_rand_double_range +g_rand_free +g_rand_int +g_rand_int_range +g_rand_new +g_rand_new_with_seed +g_rand_new_with_seed_array +g_rand_set_seed +g_rand_set_seed_array +g_random_double +g_random_double_range +g_random_int +g_random_int_range +g_random_set_seed +g_rc_box_acquire +g_rc_box_alloc +g_rc_box_alloc0 +g_rc_box_dup +g_rc_box_get_size +g_rc_box_release +g_rc_box_release_full +g_realloc +g_realloc_n +g_rec_mutex_clear +g_rec_mutex_init +g_rec_mutex_lock +g_rec_mutex_trylock +g_rec_mutex_unlock +g_ref_count_compare +g_ref_count_dec +g_ref_count_inc +g_ref_count_init +g_ref_string_acquire +g_ref_string_length +g_ref_string_new +g_ref_string_new_intern +g_ref_string_new_len +g_ref_string_release +g_relation_count +g_relation_delete +g_relation_destroy +g_relation_exists +g_relation_index +g_relation_insert +g_relation_new +g_relation_print +g_relation_select +g_reload_user_special_dirs_cache +g_remove +g_rename +g_return_if_fail_warning +g_rmdir +g_rw_lock_clear +g_rw_lock_init +g_rw_lock_reader_lock +g_rw_lock_reader_trylock +g_rw_lock_reader_unlock +g_rw_lock_writer_lock +g_rw_lock_writer_trylock +g_rw_lock_writer_unlock +g_scanner_cur_line +g_scanner_cur_position +g_scanner_cur_token +g_scanner_cur_value +g_scanner_destroy +g_scanner_eof +g_scanner_error +g_scanner_get_next_token +g_scanner_input_file +g_scanner_input_text +g_scanner_lookup_symbol +g_scanner_new +g_scanner_peek_next_token +g_scanner_scope_add_symbol +g_scanner_scope_foreach_symbol +g_scanner_scope_lookup_symbol +g_scanner_scope_remove_symbol +g_scanner_set_scope +g_scanner_sync_file_offset +g_scanner_unexp_token +g_scanner_warn +g_sequence_append +g_sequence_foreach +g_sequence_foreach_range +g_sequence_free +g_sequence_get +g_sequence_get_begin_iter +g_sequence_get_end_iter +g_sequence_get_iter_at_pos +g_sequence_get_length +g_sequence_insert_before +g_sequence_insert_sorted +g_sequence_insert_sorted_iter +g_sequence_is_empty +g_sequence_iter_compare +g_sequence_iter_get_position +g_sequence_iter_get_sequence +g_sequence_iter_is_begin +g_sequence_iter_is_end +g_sequence_iter_move +g_sequence_iter_next +g_sequence_iter_prev +g_sequence_lookup +g_sequence_lookup_iter +g_sequence_move +g_sequence_move_range +g_sequence_new +g_sequence_prepend +g_sequence_range_get_midpoint +g_sequence_remove +g_sequence_remove_range +g_sequence_search +g_sequence_search_iter +g_sequence_set +g_sequence_sort +g_sequence_sort_changed +g_sequence_sort_changed_iter +g_sequence_sort_iter +g_sequence_swap +g_set_application_name +g_set_error +g_set_error_literal +g_set_prgname +g_set_print_handler +g_set_printerr_handler +g_set_user_dirs +g_setenv +g_setenv_utf8 +g_shell_error_quark +g_shell_parse_argv +g_shell_quote +g_shell_unquote +g_slice_alloc +g_slice_alloc0 +g_slice_copy +g_slice_free1 +g_slice_free_chain_with_offset +g_slice_get_config +g_slice_get_config_state +g_slice_set_config +g_slist_alloc +g_slist_append +g_slist_concat +g_slist_copy +g_slist_copy_deep +g_slist_delete_link +g_slist_find +g_slist_find_custom +g_slist_foreach +g_slist_free +g_slist_free_1 +g_slist_free_full +g_slist_index +g_slist_insert +g_slist_insert_before +g_slist_insert_sorted +g_slist_insert_sorted_with_data +g_slist_last +g_slist_length +g_slist_nth +g_slist_nth_data +g_slist_pop_allocator +g_slist_position +g_slist_prepend +g_slist_push_allocator +g_slist_remove +g_slist_remove_all +g_slist_remove_link +g_slist_reverse +g_slist_sort +g_slist_sort_with_data +g_snprintf +g_source_add_child_source +g_source_add_poll +g_source_attach +g_source_destroy +g_source_get_can_recurse +g_source_get_context +g_source_get_current_time +g_source_get_id +g_source_get_name +g_source_get_priority +g_source_get_ready_time +g_source_get_time +g_source_is_destroyed +g_source_new +g_source_ref +g_source_remove +g_source_remove_by_funcs_user_data +g_source_remove_by_user_data +g_source_remove_child_source +g_source_remove_poll +g_source_set_callback +g_source_set_callback_indirect +g_source_set_can_recurse +g_source_set_dispose_function +g_source_set_funcs +g_source_set_name +g_source_set_name_by_id +g_source_set_priority +g_source_set_ready_time +g_source_set_static_name +g_source_unref +g_spaced_primes_closest +g_spawn_async +g_spawn_async_utf8 +g_spawn_async_with_fds +g_spawn_async_with_pipes +g_spawn_async_with_pipes_and_fds +g_spawn_async_with_pipes_utf8 +g_spawn_check_exit_status +g_spawn_check_wait_status +g_spawn_close_pid +g_spawn_command_line_async +g_spawn_command_line_async_utf8 +g_spawn_command_line_sync +g_spawn_command_line_sync_utf8 +g_spawn_error_quark +g_spawn_exit_error_quark +g_spawn_sync +g_spawn_sync_utf8 +g_sprintf +g_stat +g_static_mutex_free +g_static_mutex_get_mutex_impl +g_static_mutex_init +g_static_private_free +g_static_private_get +g_static_private_init +g_static_private_set +g_static_rec_mutex_free +g_static_rec_mutex_init +g_static_rec_mutex_lock +g_static_rec_mutex_lock_full +g_static_rec_mutex_trylock +g_static_rec_mutex_unlock +g_static_rec_mutex_unlock_full +g_static_rw_lock_free +g_static_rw_lock_init +g_static_rw_lock_reader_lock +g_static_rw_lock_reader_trylock +g_static_rw_lock_reader_unlock +g_static_rw_lock_writer_lock +g_static_rw_lock_writer_trylock +g_static_rw_lock_writer_unlock +g_stpcpy +g_str_equal +g_str_has_prefix +g_str_has_suffix +g_str_hash +g_str_is_ascii +g_str_match_string +g_str_to_ascii +g_str_tokenize_and_fold +g_strcanon +g_strcasecmp +g_strchomp +g_strchug +g_strcmp0 +g_strcompress +g_strconcat +g_strdelimit +g_strdown +g_strdup +g_strdup_printf +g_strdup_vprintf +g_strdupv +g_strerror +g_strescape +g_strfreev +g_string_append +g_string_append_c +g_string_append_len +g_string_append_printf +g_string_append_unichar +g_string_append_uri_escaped +g_string_append_vprintf +g_string_ascii_down +g_string_ascii_up +g_string_assign +g_string_chunk_clear +g_string_chunk_free +g_string_chunk_insert +g_string_chunk_insert_const +g_string_chunk_insert_len +g_string_chunk_new +g_string_down +g_string_equal +g_string_erase +g_string_free +g_string_free_to_bytes +g_string_hash +g_string_insert +g_string_insert_c +g_string_insert_len +g_string_insert_unichar +g_string_new +g_string_new_len +g_string_overwrite +g_string_overwrite_len +g_string_prepend +g_string_prepend_c +g_string_prepend_len +g_string_prepend_unichar +g_string_printf +g_string_replace +g_string_set_size +g_string_sized_new +g_string_truncate +g_string_up +g_string_vprintf +g_strip_context +g_strjoin +g_strjoinv +g_strlcat +g_strlcpy +g_strncasecmp +g_strndup +g_strnfill +g_strreverse +g_strrstr +g_strrstr_len +g_strsignal +g_strsplit +g_strsplit_set +g_strstr_len +g_strtod +g_strup +g_strv_builder_add +g_strv_builder_add_many +g_strv_builder_addv +g_strv_builder_end +g_strv_builder_new +g_strv_builder_ref +g_strv_builder_unref +g_strv_contains +g_strv_equal +g_strv_length +g_test_add_data_func +g_test_add_data_func_full +g_test_add_func +g_test_add_vtable +g_test_assert_expected_messages_internal +g_test_bug +g_test_bug_base +g_test_build_filename +g_test_case_free +g_test_config_vars DATA +g_test_create_case +g_test_create_suite +g_test_expect_message +g_test_fail +g_test_fail_printf +g_test_failed +g_test_get_dir +g_test_get_filename +g_test_get_path +g_test_get_root +g_test_incomplete +g_test_incomplete_printf +g_test_init +g_test_log_buffer_free +g_test_log_buffer_new +g_test_log_buffer_pop +g_test_log_buffer_push +g_test_log_msg_free +g_test_log_set_fatal_handler +g_test_log_type_name +g_test_maximized_result +g_test_message +g_test_minimized_result +g_test_queue_destroy +g_test_queue_free +g_test_rand_double +g_test_rand_double_range +g_test_rand_int +g_test_rand_int_range +g_test_run +g_test_run_suite +g_test_set_nonfatal_assertions +g_test_skip +g_test_skip_printf +g_test_subprocess +g_test_suite_add +g_test_suite_add_suite +g_test_suite_free +g_test_summary +g_test_timer_elapsed +g_test_timer_last +g_test_timer_start +g_test_trap_assertions +g_test_trap_fork +g_test_trap_has_passed +g_test_trap_reached_timeout +g_test_trap_subprocess +g_thread_create +g_thread_create_full +g_thread_error_quark +g_thread_exit +g_thread_foreach +g_thread_functions_for_glib_use DATA +g_thread_get_initialized +g_thread_gettime DATA +g_thread_init_glib +g_thread_join +g_thread_new +g_thread_pool_free +g_thread_pool_get_max_idle_time +g_thread_pool_get_max_threads +g_thread_pool_get_max_unused_threads +g_thread_pool_get_num_threads +g_thread_pool_get_num_unused_threads +g_thread_pool_move_to_front +g_thread_pool_new +g_thread_pool_new_full +g_thread_pool_push +g_thread_pool_set_max_idle_time +g_thread_pool_set_max_threads +g_thread_pool_set_max_unused_threads +g_thread_pool_set_sort_function +g_thread_pool_stop_unused_threads +g_thread_pool_unprocessed +g_thread_ref +g_thread_self +g_thread_set_priority +g_thread_try_new +g_thread_unref +g_thread_use_default_impl DATA +g_thread_yield +g_threads_got_initialized DATA +g_time_val_add +g_time_val_from_iso8601 +g_time_val_to_iso8601 +g_time_zone_adjust_time +g_time_zone_find_interval +g_time_zone_get_abbreviation +g_time_zone_get_identifier +g_time_zone_get_offset +g_time_zone_is_dst +g_time_zone_new +g_time_zone_new_identifier +g_time_zone_new_local +g_time_zone_new_offset +g_time_zone_new_utc +g_time_zone_ref +g_time_zone_unref +g_timeout_add +g_timeout_add_full +g_timeout_add_once +g_timeout_add_seconds +g_timeout_add_seconds_full +g_timeout_funcs DATA +g_timeout_source_new +g_timeout_source_new_seconds +g_timer_continue +g_timer_destroy +g_timer_elapsed +g_timer_is_active +g_timer_new +g_timer_reset +g_timer_start +g_timer_stop +g_trash_stack_height +g_trash_stack_peek +g_trash_stack_pop +g_trash_stack_push +g_tree_destroy +g_tree_foreach +g_tree_foreach_node +g_tree_height +g_tree_insert +g_tree_insert_node +g_tree_lookup +g_tree_lookup_extended +g_tree_lookup_node +g_tree_lower_bound +g_tree_new +g_tree_new_full +g_tree_new_with_data +g_tree_nnodes +g_tree_node_first +g_tree_node_key +g_tree_node_last +g_tree_node_next +g_tree_node_previous +g_tree_node_value +g_tree_ref +g_tree_remove +g_tree_remove_all +g_tree_replace +g_tree_replace_node +g_tree_search +g_tree_search_node +g_tree_steal +g_tree_traverse +g_tree_unref +g_tree_upper_bound +g_try_malloc +g_try_malloc0 +g_try_malloc0_n +g_try_malloc_n +g_try_realloc +g_try_realloc_n +g_tuples_destroy +g_tuples_index +g_ucs4_to_utf16 +g_ucs4_to_utf8 +g_unichar_break_type +g_unichar_combining_class +g_unichar_compose +g_unichar_decompose +g_unichar_digit_value +g_unichar_fully_decompose +g_unichar_get_mirror_char +g_unichar_get_script +g_unichar_isalnum +g_unichar_isalpha +g_unichar_iscntrl +g_unichar_isdefined +g_unichar_isdigit +g_unichar_isgraph +g_unichar_islower +g_unichar_ismark +g_unichar_isprint +g_unichar_ispunct +g_unichar_isspace +g_unichar_istitle +g_unichar_isupper +g_unichar_iswide +g_unichar_iswide_cjk +g_unichar_isxdigit +g_unichar_iszerowidth +g_unichar_to_utf8 +g_unichar_tolower +g_unichar_totitle +g_unichar_toupper +g_unichar_type +g_unichar_validate +g_unichar_xdigit_value +g_unicode_canonical_decomposition +g_unicode_canonical_ordering +g_unicode_script_from_iso15924 +g_unicode_script_to_iso15924 +g_unlink +g_unsetenv +g_unsetenv_utf8 +g_uri_build +g_uri_build_with_user +g_uri_error_quark +g_uri_escape_bytes +g_uri_escape_string +g_uri_get_auth_params +g_uri_get_flags +g_uri_get_fragment +g_uri_get_host +g_uri_get_password +g_uri_get_path +g_uri_get_port +g_uri_get_query +g_uri_get_scheme +g_uri_get_user +g_uri_get_userinfo +g_uri_is_valid +g_uri_join +g_uri_join_with_user +g_uri_list_extract_uris +g_uri_params_iter_init +g_uri_params_iter_next +g_uri_parse +g_uri_parse_params +g_uri_parse_relative +g_uri_parse_scheme +g_uri_peek_scheme +g_uri_ref +g_uri_resolve_relative +g_uri_split +g_uri_split_network +g_uri_split_with_user +g_uri_to_string +g_uri_to_string_partial +g_uri_unescape_bytes +g_uri_unescape_segment +g_uri_unescape_string +g_uri_unref +g_usleep +g_utf16_to_ucs4 +g_utf16_to_utf8 +g_utf8_casefold +g_utf8_collate +g_utf8_collate_key +g_utf8_collate_key_for_filename +g_utf8_find_next_char +g_utf8_find_prev_char +g_utf8_get_char +g_utf8_get_char_validated +g_utf8_make_valid +g_utf8_normalize +g_utf8_offset_to_pointer +g_utf8_pointer_to_offset +g_utf8_prev_char +g_utf8_skip DATA +g_utf8_strchr +g_utf8_strdown +g_utf8_strlen +g_utf8_strncpy +g_utf8_strrchr +g_utf8_strreverse +g_utf8_strup +g_utf8_substring +g_utf8_to_ucs4 +g_utf8_to_ucs4_fast +g_utf8_to_utf16 +g_utf8_validate +g_utf8_validate_len +g_utime +g_uuid_string_is_valid +g_uuid_string_random +g_variant_builder_add +g_variant_builder_add_parsed +g_variant_builder_add_value +g_variant_builder_clear +g_variant_builder_close +g_variant_builder_end +g_variant_builder_init +g_variant_builder_new +g_variant_builder_open +g_variant_builder_ref +g_variant_builder_unref +g_variant_byteswap +g_variant_check_format_string +g_variant_classify +g_variant_compare +g_variant_dict_clear +g_variant_dict_contains +g_variant_dict_end +g_variant_dict_init +g_variant_dict_insert +g_variant_dict_insert_value +g_variant_dict_lookup +g_variant_dict_lookup_value +g_variant_dict_new +g_variant_dict_ref +g_variant_dict_remove +g_variant_dict_unref +g_variant_dup_bytestring +g_variant_dup_bytestring_array +g_variant_dup_objv +g_variant_dup_string +g_variant_dup_strv +g_variant_equal +g_variant_format_string_scan +g_variant_format_string_scan_type +g_variant_get +g_variant_get_boolean +g_variant_get_byte +g_variant_get_bytestring +g_variant_get_bytestring_array +g_variant_get_child +g_variant_get_child_value +g_variant_get_data +g_variant_get_data_as_bytes +g_variant_get_double +g_variant_get_fixed_array +g_variant_get_handle +g_variant_get_int16 +g_variant_get_int32 +g_variant_get_int64 +g_variant_get_maybe +g_variant_get_normal_form +g_variant_get_objv +g_variant_get_size +g_variant_get_string +g_variant_get_strv +g_variant_get_type +g_variant_get_type_string +g_variant_get_uint16 +g_variant_get_uint32 +g_variant_get_uint64 +g_variant_get_va +g_variant_get_variant +g_variant_hash +g_variant_is_container +g_variant_is_floating +g_variant_is_normal_form +g_variant_is_object_path +g_variant_is_of_type +g_variant_is_signature +g_variant_iter_copy +g_variant_iter_free +g_variant_iter_init +g_variant_iter_loop +g_variant_iter_n_children +g_variant_iter_new +g_variant_iter_next +g_variant_iter_next_value +g_variant_lookup +g_variant_lookup_value +g_variant_n_children +g_variant_new +g_variant_new_array +g_variant_new_boolean +g_variant_new_byte +g_variant_new_bytestring +g_variant_new_bytestring_array +g_variant_new_dict_entry +g_variant_new_double +g_variant_new_fixed_array +g_variant_new_from_bytes +g_variant_new_from_data +g_variant_new_handle +g_variant_new_int16 +g_variant_new_int32 +g_variant_new_int64 +g_variant_new_maybe +g_variant_new_object_path +g_variant_new_objv +g_variant_new_parsed +g_variant_new_parsed_va +g_variant_new_printf +g_variant_new_signature +g_variant_new_string +g_variant_new_strv +g_variant_new_take_string +g_variant_new_tuple +g_variant_new_uint16 +g_variant_new_uint32 +g_variant_new_uint64 +g_variant_new_va +g_variant_new_variant +g_variant_parse +g_variant_parse_error_print_context +g_variant_parse_error_quark +g_variant_parser_get_error_quark +g_variant_print +g_variant_print_string +g_variant_ref +g_variant_ref_sink +g_variant_serialised_byteswap +g_variant_serialised_check +g_variant_serialised_get_child +g_variant_serialised_is_normal +g_variant_serialised_n_children +g_variant_serialiser_is_object_path +g_variant_serialiser_is_signature +g_variant_serialiser_is_string +g_variant_serialiser_needed_size +g_variant_serialiser_serialise +g_variant_store +g_variant_take_ref +g_variant_type_checked_ +g_variant_type_copy +g_variant_type_dup_string +g_variant_type_element +g_variant_type_equal +g_variant_type_first +g_variant_type_free +g_variant_type_get_string_length +g_variant_type_hash +g_variant_type_info_assert_no_infos +g_variant_type_info_element +g_variant_type_info_get +g_variant_type_info_get_type_string +g_variant_type_info_member_info +g_variant_type_info_n_members +g_variant_type_info_query +g_variant_type_info_query_depth +g_variant_type_info_query_element +g_variant_type_info_ref +g_variant_type_info_unref +g_variant_type_is_array +g_variant_type_is_basic +g_variant_type_is_container +g_variant_type_is_definite +g_variant_type_is_dict_entry +g_variant_type_is_maybe +g_variant_type_is_subtype_of +g_variant_type_is_tuple +g_variant_type_is_variant +g_variant_type_key +g_variant_type_n_items +g_variant_type_new +g_variant_type_new_array +g_variant_type_new_dict_entry +g_variant_type_new_maybe +g_variant_type_new_tuple +g_variant_type_next +g_variant_type_peek_string +g_variant_type_string_get_depth_ +g_variant_type_string_is_valid +g_variant_type_string_scan +g_variant_type_value +g_variant_unref +g_vasprintf +g_vfprintf +g_vprintf +g_vsnprintf +g_vsprintf +g_warn_message +g_win32_check_windows_version +g_win32_error_message +g_win32_ftruncate +g_win32_get_command_line +g_win32_get_package_installation_directory +g_win32_get_package_installation_directory_of_module +g_win32_get_package_installation_directory_utf8 +g_win32_get_package_installation_subdirectory +g_win32_get_package_installation_subdirectory_utf8 +g_win32_get_system_data_dirs_for_module +g_win32_get_windows_version +g_win32_getlocale +g_win32_locale_filename_from_utf8 +glib__private__ +glib_binary_age DATA +glib_check_version +glib_gettext +glib_interface_age DATA +glib_major_version DATA +glib_mem_profiler_table DATA +glib_micro_version DATA +glib_minor_version DATA +glib_on_error_halt DATA +glib_pgettext diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.dll.a new file mode 100644 index 0000000..d126223 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.lib new file mode 100644 index 0000000..d126223 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libglib-2.0.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.def new file mode 100644 index 0000000..a13853b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.def @@ -0,0 +1,19 @@ +; +; Definition file of libgmodule-2.0-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libgmodule-2.0-0.dll" +EXPORTS +g_module_build_path +g_module_close +g_module_error +g_module_error_quark +g_module_make_resident +g_module_name +g_module_name_utf8 +g_module_open +g_module_open_full +g_module_open_utf8 +g_module_supported +g_module_symbol diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.dll.a new file mode 100644 index 0000000..666ce08 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.lib new file mode 100644 index 0000000..666ce08 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgmodule-2.0.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.def new file mode 100644 index 0000000..d0459ab --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.def @@ -0,0 +1,476 @@ +; +; Definition file of libgobject-2.0-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libgobject-2.0-0.dll" +EXPORTS +g_array_get_type +g_binding_dup_source +g_binding_dup_target +g_binding_flags_get_type +g_binding_get_flags +g_binding_get_source +g_binding_get_source_property +g_binding_get_target +g_binding_get_target_property +g_binding_get_type +g_binding_group_bind +g_binding_group_bind_full +g_binding_group_bind_with_closures +g_binding_group_dup_source +g_binding_group_get_type +g_binding_group_new +g_binding_group_set_source +g_binding_unbind +g_boxed_copy +g_boxed_free +g_boxed_type_register_static +g_byte_array_get_type +g_bytes_get_type +g_cclosure_marshal_BOOLEAN__BOXED_BOXED +g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv +g_cclosure_marshal_BOOLEAN__FLAGS +g_cclosure_marshal_BOOLEAN__FLAGSv +g_cclosure_marshal_STRING__OBJECT_POINTER +g_cclosure_marshal_STRING__OBJECT_POINTERv +g_cclosure_marshal_VOID__BOOLEAN +g_cclosure_marshal_VOID__BOOLEANv +g_cclosure_marshal_VOID__BOXED +g_cclosure_marshal_VOID__BOXEDv +g_cclosure_marshal_VOID__CHAR +g_cclosure_marshal_VOID__CHARv +g_cclosure_marshal_VOID__DOUBLE +g_cclosure_marshal_VOID__DOUBLEv +g_cclosure_marshal_VOID__ENUM +g_cclosure_marshal_VOID__ENUMv +g_cclosure_marshal_VOID__FLAGS +g_cclosure_marshal_VOID__FLAGSv +g_cclosure_marshal_VOID__FLOAT +g_cclosure_marshal_VOID__FLOATv +g_cclosure_marshal_VOID__INT +g_cclosure_marshal_VOID__INTv +g_cclosure_marshal_VOID__LONG +g_cclosure_marshal_VOID__LONGv +g_cclosure_marshal_VOID__OBJECT +g_cclosure_marshal_VOID__OBJECTv +g_cclosure_marshal_VOID__PARAM +g_cclosure_marshal_VOID__PARAMv +g_cclosure_marshal_VOID__POINTER +g_cclosure_marshal_VOID__POINTERv +g_cclosure_marshal_VOID__STRING +g_cclosure_marshal_VOID__STRINGv +g_cclosure_marshal_VOID__UCHAR +g_cclosure_marshal_VOID__UCHARv +g_cclosure_marshal_VOID__UINT +g_cclosure_marshal_VOID__UINT_POINTER +g_cclosure_marshal_VOID__UINT_POINTERv +g_cclosure_marshal_VOID__UINTv +g_cclosure_marshal_VOID__ULONG +g_cclosure_marshal_VOID__ULONGv +g_cclosure_marshal_VOID__VARIANT +g_cclosure_marshal_VOID__VARIANTv +g_cclosure_marshal_VOID__VOID +g_cclosure_marshal_VOID__VOIDv +g_cclosure_marshal_generic +g_cclosure_marshal_generic_va +g_cclosure_new +g_cclosure_new_object +g_cclosure_new_object_swap +g_cclosure_new_swap +g_checksum_get_type +g_clear_object +g_clear_signal_handler +g_closure_add_finalize_notifier +g_closure_add_invalidate_notifier +g_closure_add_marshal_guards +g_closure_get_type +g_closure_invalidate +g_closure_invoke +g_closure_new_object +g_closure_new_simple +g_closure_ref +g_closure_remove_finalize_notifier +g_closure_remove_invalidate_notifier +g_closure_set_marshal +g_closure_set_meta_marshal +g_closure_sink +g_closure_unref +g_date_get_type +g_date_time_get_type +g_enum_complete_type_info +g_enum_get_value +g_enum_get_value_by_name +g_enum_get_value_by_nick +g_enum_register_static +g_enum_to_string +g_error_get_type +g_flags_complete_type_info +g_flags_get_first_value +g_flags_get_value_by_name +g_flags_get_value_by_nick +g_flags_register_static +g_flags_to_string +g_gstring_get_type +g_gtype_get_type +g_hash_table_get_type +g_initially_unowned_get_type +g_io_channel_get_type +g_io_condition_get_type +g_key_file_get_type +g_main_context_get_type +g_main_loop_get_type +g_mapped_file_get_type +g_markup_parse_context_get_type +g_normalize_mode_get_type +g_object_add_toggle_ref +g_object_add_weak_pointer +g_object_bind_property +g_object_bind_property_full +g_object_bind_property_with_closures +g_object_class_find_property +g_object_class_install_properties +g_object_class_install_property +g_object_class_list_properties +g_object_class_override_property +g_object_compat_control +g_object_connect +g_object_disconnect +g_object_dup_data +g_object_dup_qdata +g_object_force_floating +g_object_freeze_notify +g_object_get +g_object_get_data +g_object_get_property +g_object_get_qdata +g_object_get_type +g_object_get_valist +g_object_getv +g_object_interface_find_property +g_object_interface_install_property +g_object_interface_list_properties +g_object_is_floating +g_object_new +g_object_new_valist +g_object_new_with_properties +g_object_newv +g_object_notify +g_object_notify_by_pspec +g_object_ref +g_object_ref_sink +g_object_remove_toggle_ref +g_object_remove_weak_pointer +g_object_replace_data +g_object_replace_qdata +g_object_run_dispose +g_object_set +g_object_set_data +g_object_set_data_full +g_object_set_property +g_object_set_qdata +g_object_set_qdata_full +g_object_set_valist +g_object_setv +g_object_steal_data +g_object_steal_qdata +g_object_take_ref +g_object_thaw_notify +g_object_unref +g_object_watch_closure +g_object_weak_ref +g_object_weak_unref +g_option_group_get_type +g_param_spec_boolean +g_param_spec_boxed +g_param_spec_char +g_param_spec_double +g_param_spec_enum +g_param_spec_flags +g_param_spec_float +g_param_spec_get_blurb +g_param_spec_get_default_value +g_param_spec_get_name +g_param_spec_get_name_quark +g_param_spec_get_nick +g_param_spec_get_qdata +g_param_spec_get_redirect_target +g_param_spec_gtype +g_param_spec_int +g_param_spec_int64 +g_param_spec_internal +g_param_spec_is_valid_name +g_param_spec_long +g_param_spec_object +g_param_spec_override +g_param_spec_param +g_param_spec_pointer +g_param_spec_pool_insert +g_param_spec_pool_list +g_param_spec_pool_list_owned +g_param_spec_pool_lookup +g_param_spec_pool_new +g_param_spec_pool_remove +g_param_spec_ref +g_param_spec_ref_sink +g_param_spec_set_qdata +g_param_spec_set_qdata_full +g_param_spec_sink +g_param_spec_steal_qdata +g_param_spec_string +g_param_spec_types DATA +g_param_spec_uchar +g_param_spec_uint +g_param_spec_uint64 +g_param_spec_ulong +g_param_spec_unichar +g_param_spec_unref +g_param_spec_value_array +g_param_spec_variant +g_param_type_register_static +g_param_value_convert +g_param_value_defaults +g_param_value_is_valid +g_param_value_set_default +g_param_value_validate +g_param_values_cmp +g_pattern_spec_get_type +g_pointer_type_register_static +g_pollfd_get_type +g_ptr_array_get_type +g_signal_accumulator_first_wins +g_signal_accumulator_true_handled +g_signal_add_emission_hook +g_signal_chain_from_overridden +g_signal_chain_from_overridden_handler +g_signal_connect_closure +g_signal_connect_closure_by_id +g_signal_connect_data +g_signal_connect_object +g_signal_emit +g_signal_emit_by_name +g_signal_emit_valist +g_signal_emitv +g_signal_get_invocation_hint +g_signal_group_block +g_signal_group_connect +g_signal_group_connect_after +g_signal_group_connect_closure +g_signal_group_connect_data +g_signal_group_connect_object +g_signal_group_connect_swapped +g_signal_group_dup_target +g_signal_group_get_type +g_signal_group_new +g_signal_group_set_target +g_signal_group_unblock +g_signal_handler_block +g_signal_handler_disconnect +g_signal_handler_find +g_signal_handler_is_connected +g_signal_handler_unblock +g_signal_handlers_block_matched +g_signal_handlers_destroy +g_signal_handlers_disconnect_matched +g_signal_handlers_unblock_matched +g_signal_has_handler_pending +g_signal_is_valid_name +g_signal_list_ids +g_signal_lookup +g_signal_name +g_signal_new +g_signal_new_class_handler +g_signal_new_valist +g_signal_newv +g_signal_override_class_closure +g_signal_override_class_handler +g_signal_parse_name +g_signal_query +g_signal_remove_emission_hook +g_signal_set_va_marshaller +g_signal_stop_emission +g_signal_stop_emission_by_name +g_signal_type_cclosure_new +g_source_get_type +g_source_set_closure +g_source_set_dummy_callback +g_strdup_value_contents +g_strv_get_type +g_thread_get_type +g_time_zone_get_type +g_tree_get_type +g_type_add_class_cache_func +g_type_add_class_private +g_type_add_instance_private +g_type_add_interface_check +g_type_add_interface_dynamic +g_type_add_interface_static +g_type_check_class_cast +g_type_check_class_is_a +g_type_check_instance +g_type_check_instance_cast +g_type_check_instance_is_a +g_type_check_instance_is_fundamentally_a +g_type_check_is_value_type +g_type_check_value +g_type_check_value_holds +g_type_children +g_type_class_add_private +g_type_class_adjust_private_offset +g_type_class_get_instance_private_offset +g_type_class_get_private +g_type_class_peek +g_type_class_peek_parent +g_type_class_peek_static +g_type_class_ref +g_type_class_unref +g_type_class_unref_uncached +g_type_create_instance +g_type_default_interface_peek +g_type_default_interface_ref +g_type_default_interface_unref +g_type_depth +g_type_ensure +g_type_free_instance +g_type_from_name +g_type_fundamental +g_type_fundamental_next +g_type_get_instance_count +g_type_get_plugin +g_type_get_qdata +g_type_get_type_registration_serial +g_type_init +g_type_init_with_debug_flags +g_type_instance_get_private +g_type_interface_add_prerequisite +g_type_interface_get_plugin +g_type_interface_instantiatable_prerequisite +g_type_interface_peek +g_type_interface_peek_parent +g_type_interface_prerequisites +g_type_interfaces +g_type_is_a +g_type_module_add_interface +g_type_module_get_type +g_type_module_register_enum +g_type_module_register_flags +g_type_module_register_type +g_type_module_set_name +g_type_module_unuse +g_type_module_use +g_type_name +g_type_name_from_class +g_type_name_from_instance +g_type_next_base +g_type_parent +g_type_plugin_complete_interface_info +g_type_plugin_complete_type_info +g_type_plugin_get_type +g_type_plugin_unuse +g_type_plugin_use +g_type_qname +g_type_query +g_type_register_dynamic +g_type_register_fundamental +g_type_register_static +g_type_register_static_simple +g_type_remove_class_cache_func +g_type_remove_interface_check +g_type_set_qdata +g_type_test_flags +g_type_value_table_peek +g_unicode_break_type_get_type +g_unicode_script_get_type +g_unicode_type_get_type +g_uri_get_type +g_value_array_append +g_value_array_copy +g_value_array_free +g_value_array_get_nth +g_value_array_get_type +g_value_array_insert +g_value_array_new +g_value_array_prepend +g_value_array_remove +g_value_array_sort +g_value_array_sort_with_data +g_value_copy +g_value_dup_boxed +g_value_dup_object +g_value_dup_param +g_value_dup_string +g_value_dup_variant +g_value_fits_pointer +g_value_get_boolean +g_value_get_boxed +g_value_get_char +g_value_get_double +g_value_get_enum +g_value_get_flags +g_value_get_float +g_value_get_gtype +g_value_get_int +g_value_get_int64 +g_value_get_long +g_value_get_object +g_value_get_param +g_value_get_pointer +g_value_get_schar +g_value_get_string +g_value_get_type +g_value_get_uchar +g_value_get_uint +g_value_get_uint64 +g_value_get_ulong +g_value_get_variant +g_value_init +g_value_init_from_instance +g_value_peek_pointer +g_value_register_transform_func +g_value_reset +g_value_set_boolean +g_value_set_boxed +g_value_set_boxed_take_ownership +g_value_set_char +g_value_set_double +g_value_set_enum +g_value_set_flags +g_value_set_float +g_value_set_gtype +g_value_set_instance +g_value_set_int +g_value_set_int64 +g_value_set_interned_string +g_value_set_long +g_value_set_object +g_value_set_object_take_ownership +g_value_set_param +g_value_set_param_take_ownership +g_value_set_pointer +g_value_set_schar +g_value_set_static_boxed +g_value_set_static_string +g_value_set_string +g_value_set_string_take_ownership +g_value_set_uchar +g_value_set_uint +g_value_set_uint64 +g_value_set_ulong +g_value_set_variant +g_value_take_boxed +g_value_take_object +g_value_take_param +g_value_take_string +g_value_take_variant +g_value_transform +g_value_type_compatible +g_value_type_transformable +g_value_unset +g_variant_builder_get_type +g_variant_dict_get_type +g_variant_get_gtype +g_variant_type_get_gtype +g_weak_ref_clear +g_weak_ref_get +g_weak_ref_init +g_weak_ref_set diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.dll.a new file mode 100644 index 0000000..e0d7c9f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.lib new file mode 100644 index 0000000..e0d7c9f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgobject-2.0.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.def new file mode 100644 index 0000000..7d3ac5d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.def @@ -0,0 +1,327 @@ +; +; Definition file of libgsf-1-114.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libgsf-1-114.dll" +EXPORTS +get_gsf_odf_version +get_gsf_odf_version_string +get_gsf_ooo_ns +gsf_base64_decode_simple +gsf_base64_decode_step +gsf_base64_encode_close +gsf_base64_encode_simple +gsf_base64_encode_step +gsf_blob_get_size +gsf_blob_get_type +gsf_blob_new +gsf_blob_peek_data +gsf_clip_data_get_data_blob +gsf_clip_data_get_format +gsf_clip_data_get_type +gsf_clip_data_get_windows_clipboard_format +gsf_clip_data_new +gsf_clip_data_peek_real_data +gsf_debug_flag +gsf_doc_meta_data_foreach +gsf_doc_meta_data_get_type +gsf_doc_meta_data_insert +gsf_doc_meta_data_lookup +gsf_doc_meta_data_new +gsf_doc_meta_data_odf_subtree +gsf_doc_meta_data_read_from_msole +gsf_doc_meta_data_read_from_odf +gsf_doc_meta_data_remove +gsf_doc_meta_data_size +gsf_doc_meta_data_steal +gsf_doc_meta_data_store +gsf_doc_meta_data_write_to_msole +gsf_doc_meta_data_write_to_odf +gsf_doc_meta_dump +gsf_doc_prop_dump +gsf_doc_prop_free +gsf_doc_prop_get_link +gsf_doc_prop_get_name +gsf_doc_prop_get_type +gsf_doc_prop_get_val +gsf_doc_prop_new +gsf_doc_prop_set_link +gsf_doc_prop_set_val +gsf_doc_prop_swap_val +gsf_docprop_vector_append +gsf_docprop_vector_as_string +gsf_docprop_vector_get_type +gsf_docprop_vector_new +gsf_error_quark +gsf_extension_pointer +gsf_filename_to_utf8 +gsf_iconv_close +gsf_infile_child_by_aname +gsf_infile_child_by_index +gsf_infile_child_by_name +gsf_infile_child_by_vaname +gsf_infile_child_by_vname +gsf_infile_get_type +gsf_infile_msole_get_class_id +gsf_infile_msole_get_type +gsf_infile_msole_new +gsf_infile_msvba_get_modules +gsf_infile_msvba_get_type +gsf_infile_msvba_new +gsf_infile_msvba_steal_modules +gsf_infile_name_by_index +gsf_infile_num_children +gsf_infile_stdio_get_type +gsf_infile_stdio_new +gsf_infile_tar_get_type +gsf_infile_tar_new +gsf_infile_zip_get_type +gsf_infile_zip_new +gsf_init +gsf_init_dynamic +gsf_input_container +gsf_input_copy +gsf_input_dump +gsf_input_dup +gsf_input_eof +gsf_input_error +gsf_input_error_id +gsf_input_find_vba +gsf_input_get_modtime +gsf_input_get_type +gsf_input_gio_get_type +gsf_input_gio_new +gsf_input_gio_new_for_path +gsf_input_gio_new_for_uri +gsf_input_gzip_get_type +gsf_input_gzip_new +gsf_input_http_get_content_type +gsf_input_http_get_type +gsf_input_http_get_url +gsf_input_http_new +gsf_input_memory_get_type +gsf_input_memory_new +gsf_input_memory_new_clone +gsf_input_memory_new_from_bzip +gsf_input_memory_new_from_iochannel +gsf_input_mmap_new +gsf_input_name +gsf_input_proxy_get_type +gsf_input_proxy_new +gsf_input_proxy_new_section +gsf_input_read +gsf_input_read0 +gsf_input_remaining +gsf_input_seek +gsf_input_seek_emulate +gsf_input_set_container +gsf_input_set_modtime +gsf_input_set_modtime_from_stat +gsf_input_set_name +gsf_input_set_name_from_filename +gsf_input_set_size +gsf_input_sibling +gsf_input_size +gsf_input_stdio_get_type +gsf_input_stdio_new +gsf_input_stdio_new_FILE +gsf_input_tell +gsf_input_textline_ascii_gets +gsf_input_textline_get_type +gsf_input_textline_new +gsf_input_textline_utf8_gets +gsf_input_uncompress +gsf_le_get_double +gsf_le_get_float +gsf_le_get_guint64 +gsf_le_set_double +gsf_le_set_float +gsf_mem_dump +gsf_msole_codepage_to_lid +gsf_msole_iconv_open_codepage_for_export +gsf_msole_iconv_open_codepage_for_import +gsf_msole_iconv_open_codepages_for_export +gsf_msole_iconv_open_for_export +gsf_msole_iconv_open_for_import +gsf_msole_iconv_win_codepage +gsf_msole_inflate +gsf_msole_language_for_lid +gsf_msole_lid_for_language +gsf_msole_lid_to_codepage +gsf_msole_lid_to_codepage_str +gsf_msole_metadata_read +gsf_msole_metadata_write +gsf_msole_sorting_key_cmp +gsf_msole_sorting_key_free +gsf_msole_sorting_key_get_type +gsf_msole_sorting_key_new +gsf_odf_get_ns +gsf_odf_get_version +gsf_odf_get_version_string +gsf_odf_out_get_type +gsf_odf_out_get_version +gsf_odf_out_get_version_string +gsf_ooo_ns DATA +gsf_open_pkg_error_id +gsf_open_pkg_foreach_rel +gsf_open_pkg_get_rel_by_id +gsf_open_pkg_get_rel_by_type +gsf_open_pkg_lookup_rel_by_id +gsf_open_pkg_lookup_rel_by_type +gsf_open_pkg_open_rel +gsf_open_pkg_open_rel_by_id +gsf_open_pkg_open_rel_by_type +gsf_open_pkg_parse_rel_by_id +gsf_open_pkg_rel_get_target +gsf_open_pkg_rel_get_type +gsf_open_pkg_rel_is_extern +gsf_opendoc_metadata_read +gsf_opendoc_metadata_subtree +gsf_opendoc_metadata_write +gsf_outfile_get_type +gsf_outfile_msole_get_type +gsf_outfile_msole_new +gsf_outfile_msole_new_full +gsf_outfile_msole_set_class_id +gsf_outfile_new_child +gsf_outfile_new_child_full +gsf_outfile_new_child_varg +gsf_outfile_open_pkg_add_extern_rel +gsf_outfile_open_pkg_add_rel +gsf_outfile_open_pkg_get_type +gsf_outfile_open_pkg_new +gsf_outfile_open_pkg_relate +gsf_outfile_open_pkg_set_content_type +gsf_outfile_open_pkg_set_sink +gsf_outfile_stdio_get_type +gsf_outfile_stdio_new +gsf_outfile_stdio_new_full +gsf_outfile_stdio_new_valist +gsf_outfile_zip_get_type +gsf_outfile_zip_new +gsf_outfile_zip_set_compression_method +gsf_output_bzip_get_type +gsf_output_bzip_new +gsf_output_close +gsf_output_container +gsf_output_csv_get_type +gsf_output_csv_quoting_mode_get_type +gsf_output_csv_write_eol +gsf_output_csv_write_field +gsf_output_error +gsf_output_error_id +gsf_output_get_modtime +gsf_output_get_type +gsf_output_gio_get_type +gsf_output_gio_new +gsf_output_gio_new_for_path +gsf_output_gio_new_for_uri +gsf_output_gzip_get_type +gsf_output_gzip_new +gsf_output_iconv_get_type +gsf_output_iconv_new +gsf_output_iochannel_get_type +gsf_output_iochannel_new +gsf_output_is_closed +gsf_output_memory_get_bytes +gsf_output_memory_get_type +gsf_output_memory_new +gsf_output_name +gsf_output_printf +gsf_output_puts +gsf_output_seek +gsf_output_set_container +gsf_output_set_error +gsf_output_set_modtime +gsf_output_set_name +gsf_output_set_name_from_filename +gsf_output_size +gsf_output_stdio_get_type +gsf_output_stdio_new +gsf_output_stdio_new_FILE +gsf_output_stdio_new_full +gsf_output_stdio_new_valist +gsf_output_tell +gsf_output_unwrap +gsf_output_vprintf +gsf_output_wrap +gsf_output_write +gsf_property_settings_collect +gsf_property_settings_collect_valist +gsf_property_settings_find +gsf_property_settings_free +gsf_shared_memory_get_type +gsf_shared_memory_mmapped_new +gsf_shared_memory_new +gsf_shutdown +gsf_shutdown_dynamic +gsf_structured_blob_get_type +gsf_structured_blob_read +gsf_structured_blob_write +gsf_timestamp_as_string +gsf_timestamp_copy +gsf_timestamp_equal +gsf_timestamp_free +gsf_timestamp_from_string +gsf_timestamp_get_type +gsf_timestamp_hash +gsf_timestamp_load_from_string +gsf_timestamp_new +gsf_timestamp_parse +gsf_timestamp_set_time +gsf_timestamp_to_value +gsf_value_get_docprop_varray +gsf_value_get_docprop_vector +gsf_value_set_timestamp +gsf_vba_inflate +gsf_vdir_add_child +gsf_vdir_free +gsf_vdir_new +gsf_xmlDocFormatDump +gsf_xml_gvalue_from_str +gsf_xml_in_check_ns +gsf_xml_in_doc_add_nodes +gsf_xml_in_doc_free +gsf_xml_in_doc_get_type +gsf_xml_in_doc_new +gsf_xml_in_doc_parse +gsf_xml_in_doc_set_unknown_handler +gsf_xml_in_get_input +gsf_xml_in_namecmp +gsf_xml_in_ns_get_type +gsf_xml_in_push_state +gsf_xml_in_set_silent_unknowns +gsf_xml_out_add_base64 +gsf_xml_out_add_bool +gsf_xml_out_add_color +gsf_xml_out_add_cstr +gsf_xml_out_add_cstr_unchecked +gsf_xml_out_add_enum +gsf_xml_out_add_float +gsf_xml_out_add_gvalue +gsf_xml_out_add_int +gsf_xml_out_add_uint +gsf_xml_out_end_element +gsf_xml_out_get_output +gsf_xml_out_get_pretty_print +gsf_xml_out_get_type +gsf_xml_out_new +gsf_xml_out_set_doc_type +gsf_xml_out_set_pretty_print +gsf_xml_out_simple_element +gsf_xml_out_simple_float_element +gsf_xml_out_simple_int_element +gsf_xml_out_start_element +gsf_xml_parser_context +gsf_xml_probe +gsf_zip_dirent_free +gsf_zip_dirent_get_type +gsf_zip_dirent_new +gsf_zip_vdir_add_child +gsf_zip_vdir_free +gsf_zip_vdir_get_type +gsf_zip_vdir_new +libgsf_major_version DATA +libgsf_micro_version DATA +libgsf_minor_version DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.dll.a new file mode 100644 index 0000000..2c7c70f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.lib new file mode 100644 index 0000000..2c7c70f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgsf-1.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgthread-2.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgthread-2.0.dll.a new file mode 100644 index 0000000..7706dd9 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libgthread-2.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz-gobject.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz-gobject.dll.a new file mode 100644 index 0000000..c290b8f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz-gobject.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz-subset.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz-subset.dll.a new file mode 100644 index 0000000..89c82fc Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz-subset.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.def new file mode 100644 index 0000000..4879003 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.def @@ -0,0 +1,1606 @@ +; +; Definition file of libharfbuzz-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libharfbuzz-0.dll" +EXPORTS +_Z12hb_parse_intPPKcS0_Pib +_Z13hb_parse_uintPPKcS0_Pjbi +_Z15_hb_shapers_getv +_Z15hb_parse_doublePPKcS0_Pdb +_Z16_hb_options_initv +_Z17hb_ot_layout_kernPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z18data_create_arabicPK18hb_ot_shape_plan_t +_Z19data_destroy_arabicPv +_Z19hb_aat_layout_trackPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z20find_syllables_indicP11hb_buffer_t +_Z20find_syllables_khmerP11hb_buffer_t +_Z21hb_syllabic_clear_varPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z22_hb_ot_shape_normalizePK18hb_ot_shape_plan_tP11hb_buffer_tP9hb_font_t +_Z22find_syllables_myanmarP11hb_buffer_t +_Z22hb_aat_layout_positionPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z23hb_indic_get_categoriesj +_Z23setup_masks_arabic_planPK19arabic_shape_plan_tP11hb_buffer_t11hb_script_t +_Z24hb_aat_layout_substitutePK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z24hb_ot_layout_has_kerningP9hb_face_t +_Z25hb_aat_layout_compile_mapPK20hb_aat_map_builder_tP12hb_aat_map_t +_Z26_hb_ot_shape_fallback_kernPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z27hb_ot_layout_position_startP9hb_font_tP11hb_buffer_t +_Z28_hb_ot_shape_fallback_spacesPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z29hb_ot_layout_substitute_startP9hb_font_tP11hb_buffer_t +_Z30hb_ot_layout_has_cross_kerningP9hb_face_t +_Z30hb_ot_layout_substitute_lookupPN2OT21hb_ot_apply_context_tERKNS_6Layout9GSUB_impl11SubstLookupERKNS_33hb_ot_layout_lookup_accelerator_tE +_Z31hb_ot_layout_table_find_featureP9hb_face_tjjPj +_Z32_hb_ot_name_language_for_ms_codej +_Z32hb_ot_layout_has_machine_kerningP9hb_face_t +_Z33_hb_ot_name_language_for_mac_codej +_Z33hb_syllabic_insert_dotted_circlesP9hb_font_tP11hb_buffer_tjjii +_Z34_hb_ot_metrics_get_position_commonP9hb_font_t19hb_ot_metrics_tag_tPi +_Z34hb_aat_layout_find_feature_mappingj +_Z34hb_ot_layout_delete_glyphs_inplaceP11hb_buffer_tPFbPK15hb_glyph_info_tE +_Z35_glyf_get_advance_with_var_unscaledP9hb_font_tjb +_Z35_hb_ot_shape_fallback_mark_positionPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_tb +_Z35hb_aat_layout_remove_deleted_glyphsP11hb_buffer_t +_Z36hb_ot_layout_position_finish_offsetsP9hb_font_tP11hb_buffer_t +_Z37_hb_preprocess_text_vowel_constraintsPK18hb_ot_shape_plan_tP11hb_buffer_tP9hb_font_t +_Z37hb_ot_layout_position_finish_advancesP9hb_font_tP11hb_buffer_t +_Z39hb_aat_layout_zero_width_deleted_glyphsP11hb_buffer_t +_Z42_hb_unicode_is_emoji_Extended_Pictographicj +_Z43_glyf_get_leading_bearing_with_var_unscaledP9hb_font_tjbPi +_Z54_hb_ot_shape_fallback_mark_position_recategorize_marksPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_Z7fprintfP6_iobufPKcz +_Z8snprintfPcyPKcz +_ZN11hb_buffer_t10next_glyphEv +_ZN11hb_buffer_t11next_glyphsEj +_ZN11hb_buffer_t11output_infoERK15hb_glyph_info_t +_ZN11hb_buffer_t11sync_so_farEv +_ZN11hb_buffer_t12clear_outputEv +_ZN11hb_buffer_t12delete_glyphEv +_ZN11hb_buffer_t12message_implEP9hb_font_tPKcPc +_ZN11hb_buffer_t12output_glyphEj +_ZN11hb_buffer_t13make_room_forEjj +_ZN11hb_buffer_t13replace_glyphEj +_ZN11hb_buffer_t13shift_forwardEj +_ZN11hb_buffer_t14replace_glyphsIjEEbjjPKT_ +_ZN11hb_buffer_t14reverse_groupsIFbRK15hb_glyph_info_tS3_EEEvRKT_b +_ZN11hb_buffer_t15clear_positionsEv +_ZN11hb_buffer_t15unsafe_to_breakEjj +_ZN11hb_buffer_t16_set_glyph_flagsEjjjbb +_ZN11hb_buffer_t18get_scratch_bufferEPj +_ZN11hb_buffer_t18merge_out_clustersEjj +_ZN11hb_buffer_t19_cluster_group_funcERK15hb_glyph_info_tS2_ +_ZN11hb_buffer_t19merge_clusters_implEjj +_ZN11hb_buffer_t22safe_to_insert_tatweelEjj +_ZN11hb_buffer_t24guess_segment_propertiesEv +_ZN11hb_buffer_t3addEjj +_ZN11hb_buffer_t4sortEjjPFiPK15hb_glyph_info_tS2_E +_ZN11hb_buffer_t4syncEv +_ZN11hb_buffer_t5clearEv +_ZN11hb_buffer_t5enterEv +_ZN11hb_buffer_t5leaveEv +_ZN11hb_buffer_t5resetEv +_ZN11hb_buffer_t6verifyEPS_P9hb_font_tPK12hb_feature_tjPKPKc +_ZN11hb_buffer_t7enlargeEj +_ZN11hb_buffer_t7messageEP9hb_font_tPKcz +_ZN11hb_buffer_t7move_toEj +_ZN11hb_buffer_t7similarERKS_ +_ZN11hb_buffer_t8add_infoERK15hb_glyph_info_t +_ZN11hb_buffer_t9set_masksEjjjj +_ZN11hb_ot_map_t12lookup_map_t3cmpEPKvS2_ +_ZN11hb_ot_map_t4finiEv +_ZN11hb_vector_tI13hb_bit_page_tLb0EE6resizeEi +_ZN11hb_vector_tI8hb_set_tLb0EE14realloc_vectorIS0_LPv0EEEPS0_j +_ZN11hb_vector_tI8hb_set_tLb0EE3popEv +_ZN11hb_vector_tI8hb_set_tLb0EE6resizeEi +_ZN11hb_vector_tIN2OT4cff113accelerator_t7gname_tELb1EE5qsortEjj +_ZN11hb_vector_tIN3CFF23cff1_font_dict_values_tELb0EE14realloc_vectorIS1_LPv0EEEPS1_j +_ZN11hb_vector_tIN3CFF23cff1_font_dict_values_tELb0EE4pushEv +_ZN11hb_vector_tIN3CFF23cff1_font_dict_values_tELb0EE6resizeEi +_ZN11hb_vector_tIN3CFF23cff2_font_dict_values_tELb0EE14realloc_vectorIS1_LPv0EEEPS1_j +_ZN11hb_vector_tIN3CFF23cff2_font_dict_values_tELb0EE6resizeEi +_ZN11hb_vector_tIN3CFF31cff1_private_dict_values_base_tINS0_10dict_val_tEEELb0EE14realloc_vectorIS3_LPv0EEEPS3_j +_ZN11hb_vector_tIN3CFF31cff1_private_dict_values_base_tINS0_10dict_val_tEEELb0EE6resizeEi +_ZN11hb_vector_tIN3CFF31cff2_private_dict_values_base_tINS0_10dict_val_tEEELb0EE14realloc_vectorIS3_LPv0EEEPS3_j +_ZN11hb_vector_tIN3CFF31cff2_private_dict_values_base_tINS0_10dict_val_tEEELb0EE6resizeEi +_ZN11hb_vector_tIPN9hb_pool_tIN22hb_serialize_context_t8object_tELj16EE7chunk_tELb0EE4pushIRS5_S5_LPv0EEEPS5_OT_ +_ZN11hb_vector_tIPN9hb_pool_tIN22hb_serialize_context_t8object_tELj16EE7chunk_tELb0EE5allocEj +_ZN12hb_bit_set_t16del_sorted_arrayIN2OT11HBGlyphID16EEEbPKT_jj +_ZN12hb_bit_set_t16del_sorted_arrayIjEEbPKT_jj +_ZN12hb_bit_set_t3addEj +_ZN12hb_bit_set_t3setERKS_ +_ZN12hb_bit_set_t6resizeEj +_ZN12hb_bit_set_t7compactER11hb_vector_tIjLb0EEj +_ZN12hb_bit_set_t8page_forEjb +_ZN12hb_bit_set_t8process_EPF16hb_vector_size_tIyLj64EERKS1_S3_EbbRKS_ +_ZN12hb_bit_set_t9add_rangeEjj +_ZN12hb_bit_set_t9del_arrayIN2OT11HBGlyphID16EEEvPKT_jj +_ZN12hb_bit_set_t9del_arrayIN2OT5IndexEEEvPKT_jj +_ZN12hb_bit_set_t9del_pagesEii +_ZN12hb_bit_set_t9del_rangeEjj +_ZN12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE13set_with_hashIRKjEEbS3_jOT_b +_ZN12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE13set_with_hashIRjEEbS3_jOT_b +_ZN12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE13set_with_hashIjEEbS3_jOT_b +_ZN12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6resizeEj +_ZN12hb_hashmap_tIj17face_table_info_tLb0EE13set_with_hashIS0_EEbjjOT_b +_ZN12hb_hashmap_tIj17face_table_info_tLb0EE6resizeEj +_ZN12hb_hashmap_tIjN2hb10unique_ptrI8hb_set_tEELb0EE13set_with_hashIS3_EEbjjOT_b +_ZN12hb_hashmap_tIjN2hb10unique_ptrI8hb_set_tEELb0EE4finiEv +_ZN12hb_hashmap_tIjN2hb10unique_ptrI8hb_set_tEELb0EE6resizeEj +_ZN12hb_hashmap_tIjjLb1EE13set_with_hashIRKjEEbjjOT_b +_ZN12hb_hashmap_tIjjLb1EE13set_with_hashIRjEEbjjOT_b +_ZN12hb_hashmap_tIjjLb1EE13set_with_hashIjEEbjjOT_b +_ZN12hb_hashmap_tIjjLb1EE6resizeEj +_ZN12hb_ot_face_t4finiEv +_ZN12hb_ot_face_t5init0EP9hb_face_t +_ZN14hb_sparseset_tI23hb_bit_set_invertible_tE3addEj +_ZN14hb_sparseset_tI23hb_bit_set_invertible_tED2Ev +_ZN15hb_draw_funcs_t12quadratic_toEPvR15hb_draw_state_tffff +_ZN15hb_draw_funcs_t7line_toEPvR15hb_draw_state_tff +_ZN15hb_draw_funcs_t7move_toEPvR15hb_draw_state_tff +_ZN15hb_draw_funcs_t8cubic_toEPvR15hb_draw_state_tffffff +_ZN15hb_shape_plan_tD2Ev +_ZN16hb_filter_iter_tI10hb_array_tIKN2OT30FeatureTableSubstitutionRecordEERPK8hb_set_tMS2_NS1_7IntTypeItLj2EEELPv0EE8__next__Ev +_ZN16hb_filter_iter_tI10hb_array_tIKN2OT30FeatureTableSubstitutionRecordEERPK8hb_set_tMS2_NS1_7IntTypeItLj2EEELPv0EEC2ERKS4_S8_SB_ +_ZN16hb_lazy_loader_tIN2OT18CBDT_accelerator_tE21hb_face_lazy_loader_tIS1_Lj36EE9hb_face_tLj36ES1_E6createEPS4_ +_ZN16hb_lazy_loader_tIN2OT18GDEF_accelerator_tE21hb_face_lazy_loader_tIS1_Lj23EE9hb_face_tLj23ES1_E6createEPS4_ +_ZN17cff1_path_param_t7line_toERKN3CFF7point_tE +_ZN17cff1_path_param_t7move_toERKN3CFF7point_tE +_ZN17cff2_path_param_t7line_toERKN3CFF7point_tE +_ZN17cff2_path_param_t7move_toERKN3CFF7point_tE +_ZN17hb_draw_session_t8cubic_toEffffff +_ZN17hb_lockable_set_tIN20hb_user_data_array_t19hb_user_data_item_tE10hb_mutex_tE17replace_or_insertIS1_EEPS1_T_RS2_b +_ZN17hb_lockable_set_tIN20hb_user_data_array_t19hb_user_data_item_tE10hb_mutex_tE4finiERS2_ +_ZN18hb_ot_shape_plan_t4finiEv +_ZN18hb_ot_shape_plan_t5init0EP9hb_face_tPK19hb_shape_plan_key_t +_ZN19hb_ot_map_builder_t11add_featureEj25hb_ot_map_feature_flags_tj +_ZN19hb_ot_map_builder_t11add_lookupsER11hb_ot_map_tjjjjbbbb +_ZN19hb_ot_map_builder_t11has_featureEj +_ZN19hb_ot_map_builder_t14feature_info_t3cmpEPKvS2_ +_ZN19hb_ot_map_builder_t7compileER11hb_ot_map_tRK22hb_ot_shape_plan_key_t +_ZN19hb_ot_map_builder_t9add_pauseEjPFvPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_tE +_ZN19hb_ot_map_builder_tC1EP9hb_face_tRK23hb_segment_properties_t +_ZN19hb_ot_map_builder_tC2EP9hb_face_tRK23hb_segment_properties_t +_ZN19hb_ot_map_builder_tD1Ev +_ZN19hb_ot_map_builder_tD2Ev +_ZN19hb_shape_plan_key_t19user_features_matchEPKS_ +_ZN19hb_shape_plan_key_t4initEbP9hb_face_tPK23hb_segment_properties_tPK12hb_feature_tjPKijPKPKc +_ZN19hb_shape_plan_key_t5equalEPKS_ +_ZN20cff1_cs_opset_path_t12process_seacERN3CFF20cff1_cs_interp_env_tER17cff1_path_param_t +_ZN20cff1_cs_opset_seac_t12process_seacERN3CFF20cff1_cs_interp_env_tER16get_seac_param_t +_ZN20hb_aat_map_builder_t11add_featureEjj +_ZN20hb_aat_map_builder_t7compileER12hb_aat_map_t +_ZN20hb_user_data_array_t3getEP18hb_user_data_key_t +_ZN20hb_user_data_array_t3setEP18hb_user_data_key_tPvPFvS2_Ei +_ZN21hb_ot_shape_planner_t7compileER18hb_ot_shape_plan_tRK22hb_ot_shape_plan_key_t +_ZN21hb_ot_shape_planner_tC1EP9hb_face_tRK23hb_segment_properties_t +_ZN21hb_ot_shape_planner_tC2EP9hb_face_tRK23hb_segment_properties_t +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT16OpenTypeFontFileEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT3OS2EEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT3SVGEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4BASEEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4CBDTEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4CBLCEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4COLREEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4CPALEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4GDEFEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4HVAREEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4MATHEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4MVAREEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4STATEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4VORGEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4VVAREEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4avarEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4cff1EEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4cff2EEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4cmapEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4fvarEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4gvarEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4headEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4hheaEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4kernEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4maxpEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4metaEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4nameEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4postEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4sbixEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4vheaEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT6Layout4GPOSEEEP9hb_blob_tS5_ +_ZN21hb_sanitize_context_t13sanitize_blobIN2OT6Layout4GSUBEEEP9hb_blob_tS5_ +_ZN21hb_sanitize_context_t13sanitize_blobIN3AAT4ankrEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN3AAT4featEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN3AAT4kerxEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN3AAT4ltagEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN3AAT4mortEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN3AAT4morxEEEP9hb_blob_tS4_ +_ZN21hb_sanitize_context_t13sanitize_blobIN3AAT4trakEEEP9hb_blob_tS4_ +_ZN22hb_serialize_context_t11extend_sizeIN2OT15HeadlessArrayOfINS1_11HBGlyphID16ENS1_7IntTypeItLj2EEEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6Layout6Common17CoverageFormat2_4INS2_10SmallTypesEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6Layout6Common8CoverageEEEPT_S6_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6Layout9GSUB_impl11LigatureSetINS2_10SmallTypesEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6Layout9GSUB_impl20SingleSubstFormat1_3INS2_10SmallTypesEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6Layout9GSUB_impl20SingleSubstFormat2_4INS2_10SmallTypesEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6Layout9GSUB_impl22LigatureSubstFormat1_2INS2_10SmallTypesEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6Layout9GSUB_impl8LigatureINS2_10SmallTypesEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT6LookupEEEPT_S4_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT7ArrayOfINS1_11HBGlyphID16ENS1_7IntTypeItLj2EEEEEEEPT_S8_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT7ArrayOfINS1_11TableRecordENS1_15BinSearchHeaderINS1_7IntTypeItLj2EEEEEEEEEPT_SA_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT7ArrayOfINS1_6Layout6Common11RangeRecordINS3_10SmallTypesEEENS1_7IntTypeItLj2EEEEEEEPT_SC_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT7ArrayOfINS1_6OffsetINS1_7IntTypeItLj2EEELb1EEES5_EEEEPT_S9_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT7ArrayOfINS1_8OffsetToINS1_6Layout9GSUB_impl11LigatureSetINS4_10SmallTypesEEENS1_7IntTypeItLj2EEELb1EEESA_EEEEPT_SE_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT7ArrayOfINS1_8OffsetToINS1_6Layout9GSUB_impl8LigatureINS4_10SmallTypesEEENS1_7IntTypeItLj2EEELb1EEESA_EEEEPT_SE_y +_ZN22hb_serialize_context_t11extend_sizeIN2OT7IntTypeItLj2EEEEEPT_S5_y +_ZN22hb_serialize_context_t11pop_discardEv +_ZN22hb_serialize_context_t13resolve_linksEv +_ZN22hb_serialize_context_t19merge_virtual_linksEPKNS_8object_tEj +_ZN22hb_serialize_context_t21discard_stale_objectsEv +_ZN22hb_serialize_context_t4finiEv +_ZN22hb_serialize_context_t4pushIN2OT16OpenTypeFontFileEEEPT_v +_ZN22hb_serialize_context_t4pushIN2OT6Layout6Common8CoverageEEEPT_v +_ZN22hb_serialize_context_t4pushIN2OT6Layout9GSUB_impl11LigatureSetINS2_10SmallTypesEEEEEPT_v +_ZN22hb_serialize_context_t4pushIN2OT6Layout9GSUB_impl11SubstLookupEEEPT_v +_ZN22hb_serialize_context_t4pushIN2OT6Layout9GSUB_impl19SubstLookupSubTableEEEPT_v +_ZN22hb_serialize_context_t4pushIN2OT6Layout9GSUB_impl8LigatureINS2_10SmallTypesEEEEEPT_v +_ZN22hb_serialize_context_t5resetEv +_ZN22hb_serialize_context_t8add_linkIN2OT8OffsetToINS1_6Layout6Common8CoverageENS1_7IntTypeItLj2EEELb1EEEEEvRT_jNS_8whence_tEj +_ZN22hb_serialize_context_t8add_linkIN2OT8OffsetToINS1_6Layout9GSUB_impl11LigatureSetINS3_10SmallTypesEEENS1_7IntTypeItLj2EEELb1EEEEEvRT_jNS_8whence_tEj +_ZN22hb_serialize_context_t8add_linkIN2OT8OffsetToINS1_6Layout9GSUB_impl19SubstLookupSubTableENS1_7IntTypeItLj2EEELb1EEEEEvRT_jNS_8whence_tEj +_ZN22hb_serialize_context_t8add_linkIN2OT8OffsetToINS1_6Layout9GSUB_impl8LigatureINS3_10SmallTypesEEENS1_7IntTypeItLj2EEELb1EEEEEvRT_jNS_8whence_tEj +_ZN22hb_serialize_context_t8object_t4finiEv +_ZN22hb_serialize_context_t8pop_packEb +_ZN22hb_serialize_context_tD2Ev +_ZN23cff1_cs_opset_extents_t12process_seacERN3CFF20cff1_cs_interp_env_tER20cff1_extents_param_t +_ZN23hb_bit_set_invertible_t16add_sorted_arrayIN2OT11HBGlyphID16EEEbPKT_jj +_ZN23hb_bit_set_invertible_t16add_sorted_arrayIjEEbPKT_jj +_ZN23hb_bit_set_invertible_t3delEj +_ZN23hb_bit_set_invertible_t6iter_t8__next__Ev +_ZN23hb_bit_set_invertible_t6union_ERKS_ +_ZN23hb_bit_set_invertible_t8subtractERKS_ +_ZN23hb_bit_set_invertible_t9add_arrayIN2OT11HBGlyphID16EEEvPKT_jj +_ZN23hb_bit_set_invertible_t9add_arrayIN2OT5IndexEEEvPKT_jj +_ZN23hb_bit_set_invertible_t9intersectERKS_ +_ZN24hb_shapers_lazy_loader_t6createEv +_ZN25cff1_path_procs_extents_t5curveERN3CFF20cff1_cs_interp_env_tER20cff1_extents_param_tRKNS0_7point_tES7_S7_ +_ZN25cff2_path_procs_extents_t5curveERN3CFF20cff2_cs_interp_env_tINS0_8number_tEEER20cff2_extents_param_tRKNS0_7point_tES9_S9_ +_ZN29hb_collect_features_context_t22compute_feature_filterEPKj +_ZN29hb_collect_features_context_t7visitedIN2OT6ScriptEEEbRKT_R8hb_set_t +_ZN29hb_collect_features_context_t7visitedIN2OT7LangSysEEEbRKT_R8hb_set_t +_ZN29hb_collect_features_context_tC2EP9hb_face_tjP8hb_set_tPKj +_ZN2OT11TableRecord3cmpEPKvS2_ +_ZN2OT18GlyphVariationData13unpack_pointsERPKNS_7IntTypeIhLj1EEER11hb_vector_tIjLb0EES4_ +_ZN2OT18glyf_accelerator_t19points_aggregator_t10points_endEv +_ZN2OT18glyf_accelerator_tC2EP9hb_face_t +_ZN2OT19CmapSubtableFormat413accelerator_t14get_glyph_funcEPKvjPj +_ZN2OT20hb_closure_context_t14is_lookup_doneEj +_ZN2OT20hb_closure_context_t5flushEv +_ZN2OT21hb_ot_apply_context_t19skipping_iterator_t4nextEPj +_ZN2OT21hb_ot_apply_context_t19skipping_iterator_t4prevEPj +_ZN2OT21hb_ot_apply_context_t8dispatchINS_16ContextFormat1_4INS_6Layout10SmallTypesEEEEEbRKT_ +_ZN2OT21hb_ot_apply_context_t8dispatchINS_6Layout9GSUB_impl22LigatureSubstFormat1_2INS2_10SmallTypesEEEEEbRKT_ +_ZN2OT21hb_ot_apply_context_tC2EjP9hb_font_tP11hb_buffer_t +_ZN2OT24hb_would_apply_context_t8dispatchINS_6Layout9GSUB_impl22LigatureSubstFormat1_2INS2_10SmallTypesEEEEEbRKT_ +_ZN2OT27hb_collect_glyphs_context_t7recurseEj +_ZN2OT33hb_accelerate_subtables_context_t13apply_cached_INS_16ContextFormat1_4INS_6Layout10SmallTypesEEEEEN10_hb_head_tIbJDTclptfp_5applyfp0_EEEE4typeEPKT_PNS_21hb_ot_apply_context_tE11hb_priorityILj0EE +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_14ContextFormat3EEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_16ContextFormat1_4INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_16ContextFormat2_5INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_19ChainContextFormat3EEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_21ChainContextFormat1_4INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_21ChainContextFormat2_5INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl16PairPosFormat1_3INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl16PairPosFormat2_4INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl16SinglePosFormat1EEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl16SinglePosFormat2EEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl17CursivePosFormat1EEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl19MarkLigPosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl20MarkBasePosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GPOS_impl20MarkMarkPosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GSUB_impl20SingleSubstFormat1_3INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GSUB_impl20SingleSubstFormat2_4INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GSUB_impl22LigatureSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GSUB_impl22MultipleSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GSUB_impl23AlternateSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t13cache_func_toINS_6Layout9GSUB_impl30ReverseChainSingleSubstFormat1EEEbPKvPNS_21hb_ot_apply_context_tEb +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_14ContextFormat3EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_16ContextFormat1_4INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_16ContextFormat2_5INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_19ChainContextFormat3EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_21ChainContextFormat1_4INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_21ChainContextFormat2_5INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl16PairPosFormat1_3INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl16PairPosFormat2_4INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl16SinglePosFormat1EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl16SinglePosFormat2EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl17CursivePosFormat1EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl19MarkLigPosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl20MarkBasePosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GPOS_impl20MarkMarkPosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GSUB_impl20SingleSubstFormat1_3INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GSUB_impl20SingleSubstFormat2_4INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GSUB_impl22LigatureSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GSUB_impl22MultipleSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GSUB_impl23AlternateSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15apply_cached_toINS_6Layout9GSUB_impl30ReverseChainSingleSubstFormat1EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_14ContextFormat3EEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESC_PFbS8_SA_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_16ContextFormat1_4INS_6Layout10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESF_PFbSB_SD_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_16ContextFormat2_5INS_6Layout10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESF_PFbSB_SD_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_19ChainContextFormat3EEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESC_PFbS8_SA_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_21ChainContextFormat1_4INS_6Layout10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESF_PFbSB_SD_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_21ChainContextFormat2_5INS_6Layout10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESF_PFbSB_SD_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl16PairPosFormat1_3INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl16PairPosFormat2_4INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl16SinglePosFormat1EEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESE_PFbSA_SC_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl16SinglePosFormat2EEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESE_PFbSA_SC_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl17CursivePosFormat1EEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESE_PFbSA_SC_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl19MarkLigPosFormat1_2INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl20MarkBasePosFormat1_2INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GPOS_impl20MarkMarkPosFormat1_2INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GSUB_impl20SingleSubstFormat1_3INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GSUB_impl20SingleSubstFormat2_4INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GSUB_impl22LigatureSubstFormat1_2INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GSUB_impl22MultipleSubstFormat1_2INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GSUB_impl23AlternateSubstFormat1_2INS3_10SmallTypesEEEEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESG_PFbSC_SE_bE +_ZN2OT33hb_accelerate_subtables_context_t15hb_applicable_t4initINS_6Layout9GSUB_impl30ReverseChainSingleSubstFormat1EEEvRKT_PFbPKvPNS_21hb_ot_apply_context_tEESE_PFbSA_SC_bE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_14ContextFormat3EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_16ContextFormat1_4INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_16ContextFormat2_5INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_19ChainContextFormat3EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_21ChainContextFormat1_4INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_21ChainContextFormat2_5INS_6Layout10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl16PairPosFormat1_3INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl16PairPosFormat2_4INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl16SinglePosFormat1EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl16SinglePosFormat2EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl17CursivePosFormat1EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl19MarkLigPosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl20MarkBasePosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GPOS_impl20MarkMarkPosFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GSUB_impl20SingleSubstFormat1_3INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GSUB_impl20SingleSubstFormat2_4INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GSUB_impl22LigatureSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GSUB_impl22MultipleSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GSUB_impl23AlternateSubstFormat1_2INS2_10SmallTypesEEEEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8apply_toINS_6Layout9GSUB_impl30ReverseChainSingleSubstFormat1EEEbPKvPNS_21hb_ot_apply_context_tE +_ZN2OT33hb_accelerate_subtables_context_t8dispatchINS_16ContextFormat2_5INS_6Layout10SmallTypesEEEEE10hb_empty_tRKT_ +_ZN2OT33hb_accelerate_subtables_context_t8dispatchINS_21ChainContextFormat2_5INS_6Layout10SmallTypesEEEEE10hb_empty_tRKT_ +_ZN2OT33hb_ot_layout_lookup_accelerator_t4initINS_6Layout9GPOS_impl9PosLookupEEEvRKT_ +_ZN2OT33hb_ot_layout_lookup_accelerator_t4initINS_6Layout9GSUB_impl11SubstLookupEEEvRKT_ +_ZN2OT4GDEF13accelerator_tC2EP9hb_face_t +_ZN2OT4cff113accelerator_tD2Ev +_ZN2OT4cff119accelerator_templ_tIN3CFF25cff1_private_dict_opset_tENS2_31cff1_private_dict_values_base_tINS2_10dict_val_tEEEE4finiEv +_ZN2OT4cff119accelerator_templ_tIN3CFF25cff1_private_dict_opset_tENS2_31cff1_private_dict_values_base_tINS2_10dict_val_tEEEE4initEP9hb_face_t +_ZN2OT4cff129lookup_expert_charset_for_sidEj +_ZN2OT4cff131lookup_expert_charset_for_glyphEj +_ZN2OT4cff131lookup_expert_encoding_for_codeEj +_ZN2OT4cff132lookup_standard_encoding_for_sidEj +_ZN2OT4cff133lookup_standard_encoding_for_codeEj +_ZN2OT4cff136lookup_expert_subset_charset_for_sidEj +_ZN2OT4cff138lookup_expert_subset_charset_for_glyphEj +_ZN2OT4cff219accelerator_templ_tIN3CFF25cff2_private_dict_opset_tENS2_31cff2_private_dict_values_base_tINS2_10dict_val_tEEEE5_finiEv +_ZN2OT4cff219accelerator_templ_tIN3CFF25cff2_private_dict_opset_tENS2_31cff2_private_dict_values_base_tINS2_10dict_val_tEEEEC2EP9hb_face_t +_ZN2OT4cff219accelerator_templ_tIN3CFF25cff2_private_dict_opset_tENS2_31cff2_private_dict_values_base_tINS2_10dict_val_tEEEED2Ev +_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj +_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj +_ZN2OT4cmap13accelerator_tC2EP9hb_face_t +_ZN2OT4name13accelerator_tC2EP9hb_face_t +_ZN2OT4post13accelerator_t8cmp_gidsEPKvS3_Pv +_ZN2OT4post13accelerator_tC2EP9hb_face_t +_ZN2OT6Layout4GPOS23position_finish_offsetsEP9hb_font_tP11hb_buffer_t +_ZN2OT6Layout6Common17CoverageFormat2_4INS0_10SmallTypesEE6iter_t8__next__Ev +_ZN2OT6Layout6Common17CoverageFormat2_4INS0_10SmallTypesEE9serializeI17hb_sorted_array_tIKNS_11HBGlyphID16EELPv0EEEbP22hb_serialize_context_tT_ +_ZN2OT6Layout6Common8Coverage9serializeI17hb_sorted_array_tIKNS_11HBGlyphID16EELPv0EEEbP22hb_serialize_context_tT_ +_ZN2OT6Layout9GPOS_impl9PosLookup21dispatch_recurse_funcINS_21hb_ot_apply_context_tEEENT_8return_tEPS5_j +_ZN2OT6Layout9GSUB_impl11LigatureSetINS0_10SmallTypesEE9serializeEP22hb_serialize_context_t10hb_array_tIKNS_11HBGlyphID16EES7_IKjERSA_ +_ZN2OT6Layout9GSUB_impl11SingleSubst9serializeI13hb_zip_iter_tI17hb_sorted_array_tINS_11HBGlyphID16EE10hb_array_tIS6_EELPv0EEEbP22hb_serialize_context_tT_ +_ZN2OT6Layout9GSUB_impl11SubstLookup16serialize_singleI17hb_sorted_array_tINS_11HBGlyphID16EE10hb_array_tIS5_ELPv0EEEbP22hb_serialize_context_tjT_T0_ +_ZN2OT6Layout9GSUB_impl11SubstLookup18serialize_ligatureEP22hb_serialize_context_tj17hb_sorted_array_tIKNS_11HBGlyphID16EE10hb_array_tIKjES9_IS7_ESB_SC_ +_ZN2OT6Layout9GSUB_impl11SubstLookup21dispatch_recurse_funcINS_21hb_ot_apply_context_tEEENT_8return_tEPS5_j +_ZN2OT6Layout9GSUB_impl11SubstLookup21dispatch_recurse_funcINS_27hb_collect_glyphs_context_tEEENT_8return_tEPS5_j +_ZN2OT6Layout9GSUB_impl11SubstLookup27closure_glyphs_recurse_funcEPNS_20hb_closure_context_tEjP8hb_set_tjj +_ZN2OT6Layout9GSUB_impl11SubstLookup29dispatch_closure_recurse_funcEPNS_20hb_closure_context_tEjP8hb_set_tjj +_ZN2OT6Layout9GSUB_impl20SingleSubstFormat2_4INS0_10SmallTypesEE9serializeI13hb_zip_iter_tI17hb_sorted_array_tINS_11HBGlyphID16EE10hb_array_tIS8_EELPv0EEEbP22hb_serialize_context_tT_ +_ZN2OT6Layout9GSUB_impl22LigatureSubstFormat1_2INS0_10SmallTypesEE9serializeEP22hb_serialize_context_t17hb_sorted_array_tIKNS_11HBGlyphID16EE10hb_array_tIKjESB_IS9_ESD_SE_ +_ZN2OT6Layout9GSUB_impl8LigatureINS0_10SmallTypesEE9serializeI10hb_array_tIKNS_11HBGlyphID16EELPv0EEEbP22hb_serialize_context_tjT_ +_ZN2OT6Lookup9serializeEP22hb_serialize_context_tjjj +_ZN2OT7ArrayOfINS_11TableRecordENS_15BinSearchHeaderINS_7IntTypeItLj2EEEEEE9serializeEP22hb_serialize_context_tj +_ZN2OT8GSUBGPOS13accelerator_tINS_6Layout4GPOSEEC2EP9hb_face_t +_ZN2OT8GSUBGPOS13accelerator_tINS_6Layout4GSUBEEC2EP9hb_face_t +_ZN2OT8hmtxvmtxINS_4hmtxENS_4hheaENS_4HVAREE13accelerator_tC2EP9hb_face_t +_ZN2OT8hmtxvmtxINS_4vmtxENS_4vheaENS_4VVAREE13accelerator_tC2EP9hb_face_t +_ZN2OT9glyf_impl14path_builder_t13consume_pointERKNS_15contour_point_tE +_ZN30hb_ft_font_funcs_lazy_loader_t6createEv +_ZN30hb_ot_font_funcs_lazy_loader_t6createEv +_ZN34hb_get_glyph_alternates_dispatch_t9_dispatchIN2OT6Layout9GSUB_impl23AlternateSubstFormat1_2INS2_10SmallTypesEEEJRjS7_RPjS9_EEEDTcldtfp_20get_glyph_alternatesspclsr3stdE7forwardIT0_Efp1_EEERKT_11hb_priorityILj1EEDpOSA_ +_ZN34hb_ucd_unicode_funcs_lazy_loader_t6createEv +_ZN35hb_glib_unicode_funcs_lazy_loader_t6createEv +_ZN3AAT16LigatureSubtableINS_13ExtendedTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_NS_13LigatureEntryILb1EE9EntryDataEEERKNS_5EntryIS7_EE +_ZN3AAT16LigatureSubtableINS_13ObsoleteTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_vEERKNS_5EntryIvEE +_ZN3AAT16StateTableDriverINS_13ExtendedTypesENS_12Format1EntryILb1EE9EntryDataEE5driveINS_19KerxSubTableFormat1INS_18KerxSubTableHeaderEE16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ExtendedTypesENS_13LigatureEntryILb1EE9EntryDataEE5driveINS_16LigatureSubtableIS1_E16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ExtendedTypesENS_17InsertionSubtableIS1_E9EntryDataEE5driveINS3_16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ExtendedTypesENS_18ContextualSubtableIS1_E9EntryDataEE5driveINS3_16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ExtendedTypesENS_19KerxSubTableFormat4INS_18KerxSubTableHeaderEE9EntryDataEE5driveINS4_16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ExtendedTypesEvE5driveINS_21RearrangementSubtableIS1_E16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ObsoleteTypesENS_17InsertionSubtableIS1_E9EntryDataEE5driveINS3_16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ObsoleteTypesENS_18ContextualSubtableIS1_E9EntryDataEE5driveINS3_16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ObsoleteTypesEvE5driveINS_16LigatureSubtableIS1_E16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ObsoleteTypesEvE5driveINS_19KerxSubTableFormat1IN2OT21KernAATSubTableHeaderEE16driver_context_tEEEvPT_ +_ZN3AAT16StateTableDriverINS_13ObsoleteTypesEvE5driveINS_21RearrangementSubtableIS1_E16driver_context_tEEEvPT_ +_ZN3AAT17InsertionSubtableINS_13ExtendedTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_NS2_9EntryDataEEERKNS_5EntryIS5_EE +_ZN3AAT17InsertionSubtableINS_13ObsoleteTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_NS2_9EntryDataEEERKNS_5EntryIS5_EE +_ZN3AAT18ContextualSubtableINS_13ExtendedTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_NS2_9EntryDataEEERKNS_5EntryIS5_EE +_ZN3AAT18ContextualSubtableINS_13ObsoleteTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_NS2_9EntryDataEEERKNS_5EntryIS5_EE +_ZN3AAT19KerxSubTableFormat1IN2OT21KernAATSubTableHeaderEE16driver_context_t10transitionEPNS_16StateTableDriverINS_13ObsoleteTypesEvEERKNS_5EntryIvEE +_ZN3AAT19KerxSubTableFormat1INS_18KerxSubTableHeaderEE16driver_context_t10transitionEPNS_16StateTableDriverINS_13ExtendedTypesENS_12Format1EntryILb1EE9EntryDataEEERKNS_5EntryIS8_EE +_ZN3AAT19KerxSubTableFormat4INS_18KerxSubTableHeaderEE16driver_context_t10transitionEPNS_16StateTableDriverINS_13ExtendedTypesENS2_9EntryDataEEERKNS_5EntryIS6_EE +_ZN3AAT21RearrangementSubtableINS_13ExtendedTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_vEERKNS_5EntryIvEE +_ZN3AAT21RearrangementSubtableINS_13ObsoleteTypesEE16driver_context_t10transitionEPNS_16StateTableDriverIS1_vEERKNS_5EntryIvEE +_ZN3AAT22hb_aat_apply_context_t14set_ankr_tableEPKNS_4ankrE +_ZN3AAT22hb_aat_apply_context_tC1EPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_tP9hb_blob_t +_ZN3AAT22hb_aat_apply_context_tC2EPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_tP9hb_blob_t +_ZN3AAT22hb_aat_apply_context_tD1Ev +_ZN3AAT22hb_aat_apply_context_tD2Ev +_ZN3CFF10cs_opset_tINS_8number_tE20cff1_cs_opset_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_t22cff1_path_procs_path_tE10process_opEjRS3_RS4_ +_ZN3CFF10cs_opset_tINS_8number_tE20cff1_cs_opset_seac_tNS_20cff1_cs_interp_env_tE16get_seac_param_tNS_17path_procs_null_tIS3_S4_EEE10process_opEjRS3_RS4_ +_ZN3CFF10cs_opset_tINS_8number_tE20cff2_cs_opset_path_tNS_20cff2_cs_interp_env_tIS1_EE17cff2_path_param_t22cff2_path_procs_path_tE10process_opEjRS4_RS5_ +_ZN3CFF10cs_opset_tINS_8number_tE23cff1_cs_opset_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_t25cff1_path_procs_extents_tE10process_opEjRS3_RS4_ +_ZN3CFF10cs_opset_tINS_8number_tE23cff2_cs_opset_extents_tNS_20cff2_cs_interp_env_tIS1_EE20cff2_extents_param_t25cff2_path_procs_extents_tE10process_opEjRS4_RS5_ +_ZN3CFF12dict_opset_t10process_opEjRNS_12interp_env_tINS_8number_tEEE +_ZN3CFF12dict_opset_t9parse_bcdERNS_14byte_str_ref_tE +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE10rcurvelineERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE10rlinecurveERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE4flexERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE5flex1ERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE5hflexERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE6curve2ERS2_RS3_RKNS_7point_tES9_S9_S9_S9_S9_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE6hflex1ERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE7hlinetoERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE7vlinetoERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE9hhcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE9hvcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE9rrcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE9vhcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI22cff1_path_procs_path_tNS_20cff1_cs_interp_env_tE17cff1_path_param_tE9vvcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE10rcurvelineERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE10rlinecurveERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE4flexERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE5flex1ERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE5hflexERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE6hflex1ERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE7hlinetoERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE7vlinetoERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE9hhcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE9hvcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE9rrcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE9vhcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI22cff2_path_procs_path_tNS_20cff2_cs_interp_env_tINS_8number_tEEE17cff2_path_param_tE9vvcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE10rcurvelineERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE10rlinecurveERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE4flexERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE5flex1ERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE5hflexERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE6hflex1ERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE7hlinetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE7rlinetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE7vlinetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE9hhcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE9hvcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE9rrcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE9vhcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff1_path_procs_extents_tNS_20cff1_cs_interp_env_tE20cff1_extents_param_tE9vvcurvetoERS2_RS3_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE10rcurvelineERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE10rlinecurveERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE4flexERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE5flex1ERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE5hflexERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE6hflex1ERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE7hlinetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE7rlinetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE7vlinetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE9hhcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE9hvcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE9rrcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE9vhcurvetoERS4_RS5_ +_ZN3CFF12path_procs_tI25cff2_path_procs_extents_tNS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_extents_param_tE9vvcurvetoERS4_RS5_ +_ZN3CFF15cff2_cs_opset_tI20cff2_cs_opset_path_t17cff2_path_param_tNS_8number_tE22cff2_path_procs_path_tE10process_opEjRNS_20cff2_cs_interp_env_tIS3_EERS2_ +_ZN3CFF15cff2_cs_opset_tI20cff2_cs_opset_path_t17cff2_path_param_tNS_8number_tE22cff2_path_procs_path_tE13process_blendERNS_20cff2_cs_interp_env_tIS3_EERS2_ +_ZN3CFF15cff2_cs_opset_tI23cff2_cs_opset_extents_t20cff2_extents_param_tNS_8number_tE25cff2_path_procs_extents_tE10process_opEjRNS_20cff2_cs_interp_env_tIS3_EERS2_ +_ZN3CFF15cff2_cs_opset_tI23cff2_cs_opset_extents_t20cff2_extents_param_tNS_8number_tE25cff2_path_procs_extents_tE13process_blendERNS_20cff2_cs_interp_env_tIS3_EERS2_ +_ZN3CFF15cs_interp_env_tINS_8number_tENS_5SubrsIN2OT7IntTypeIjLj4EEEEEE9call_subrERKNS_14biased_subrs_tIS6_EENS_9cs_type_tE +_ZN3CFF15cs_interp_env_tINS_8number_tENS_5SubrsIN2OT7IntTypeItLj2EEEEEE9call_subrERKNS_14biased_subrs_tIS6_EENS_9cs_type_tE +_ZN3CFF15parsed_values_tINS_8op_str_tEE6add_opEjRKNS_14byte_str_ref_tE +_ZN3CFF16cs_interpreter_tINS_20cff1_cs_interp_env_tE20cff1_cs_opset_seac_t16get_seac_param_tE9interpretERS3_ +_ZN3CFF16cs_interpreter_tINS_20cff2_cs_interp_env_tINS_8number_tEEE20cff2_cs_opset_path_t17cff2_path_param_tE9interpretERS5_ +_ZN3CFF16cs_interpreter_tINS_20cff2_cs_interp_env_tINS_8number_tEEE23cff2_cs_opset_extents_t20cff2_extents_param_tE9interpretERS5_ +_ZN3CFF18dict_interpreter_tINS_21cff1_top_dict_opset_tENS_22cff1_top_dict_values_tENS_26cff1_top_dict_interp_env_tEE9interpretERS2_ +_ZN3CFF18dict_interpreter_tINS_21cff2_top_dict_opset_tENS_22cff2_top_dict_values_tENS_12interp_env_tINS_8number_tEEEE9interpretERS2_ +_ZN3CFF18dict_interpreter_tINS_22cff1_font_dict_opset_tENS_23cff1_font_dict_values_tENS_12interp_env_tINS_8number_tEEEE9interpretERS2_ +_ZN3CFF18dict_interpreter_tINS_22cff2_font_dict_opset_tENS_23cff2_font_dict_values_tENS_12interp_env_tINS_8number_tEEEE9interpretERS2_ +_ZN3CFF18dict_interpreter_tINS_25cff1_private_dict_opset_tENS_31cff1_private_dict_values_base_tINS_10dict_val_tEEENS_12interp_env_tINS_8number_tEEEE9interpretERS4_ +_ZN3CFF18dict_interpreter_tINS_25cff2_private_dict_opset_tENS_31cff2_private_dict_values_base_tINS_10dict_val_tEEENS_27cff2_priv_dict_interp_env_tEE9interpretERS4_ +_ZN3CFF20cff2_cs_interp_env_tINS_8number_tEE13process_blendEv +_ZN3CFF21cff1_top_dict_opset_t10process_opEjRNS_26cff1_top_dict_interp_env_tERNS_22cff1_top_dict_values_tE +_ZN3CFF21cff2_top_dict_opset_t10process_opEjRNS_12interp_env_tINS_8number_tEEERNS_22cff2_top_dict_values_tE +_ZN3CFF22cff1_font_dict_opset_t10process_opEjRNS_12interp_env_tINS_8number_tEEERNS_23cff1_font_dict_values_tE +_ZN3CFF25cff1_private_dict_opset_t10process_opEjRNS_12interp_env_tINS_8number_tEEERNS_31cff1_private_dict_values_base_tINS_10dict_val_tEEE +_ZN3CFF25cff2_private_dict_opset_t10process_opEjRNS_27cff2_priv_dict_interp_env_tERNS_31cff2_private_dict_values_base_tINS_10dict_val_tEEE +_ZN3CFF7opset_tINS_8number_tEE10process_opEjRNS_12interp_env_tIS1_EE +_ZN9hb_blob_t17try_make_writableEv +_ZN9hb_blob_t25try_make_writable_inplaceEv +_ZN9hb_blob_t30try_make_writable_inplace_unixEv +_ZN9hb_font_t12has_func_setEj +_ZN9hb_font_t13mults_changedEv +_ZN9hb_font_t17glyph_from_stringEPKciPj +_ZN9hb_font_t32get_glyph_h_origin_with_fallbackEjPiS0_ +_ZN9hb_font_t32get_glyph_v_origin_with_fallbackEjPiS0_ +_ZN9hb_font_t34get_glyph_contour_point_for_originEjj14hb_direction_tPiS1_ +_ZN9hb_font_t8has_funcEj +_ZN9hb_pool_tIN22hb_serialize_context_t8object_tELj16EE7chunk_t6threadEv +_ZN9hb_sink_tIR8hb_set_tEclI13hb_map_iter_tIN2OT6Layout6Common8Coverage6iter_tEZNKS6_9GSUB_impl20SingleSubstFormat1_3INS6_10SmallTypesEE14collect_glyphsEPNS5_27hb_collect_glyphs_context_tEEUljE_L24hb_function_sortedness_t0ELPv0EELSI_0EEEvT_ +_ZN9hb_utf8_t4nextEPKhS1_Pjj +_ZNK10hb_array_tIKhE8sanitizeI21hb_sanitize_context_tEEbPT_ +_ZNK11hb_ot_map_t10substituteEPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_ZNK11hb_ot_map_t15collect_lookupsEjP8hb_set_t +_ZNK11hb_ot_map_t5applyI9GPOSProxyEEvRKT_PK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_ZNK11hb_ot_map_t5applyI9GSUBProxyEEvRKT_PK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_ZNK11hb_ot_map_t8positionEPK18hb_ot_shape_plan_tP9hb_font_tP11hb_buffer_t +_ZNK12hb_bit_set_t14previous_rangeEPjS0_ +_ZNK12hb_bit_set_t18next_many_invertedEjPjj +_ZNK12hb_bit_set_t4nextEPj +_ZNK12hb_bit_set_t7get_maxEv +_ZNK12hb_bit_set_t7get_minEv +_ZNK12hb_bit_set_t8is_equalERKS_ +_ZNK12hb_bit_set_t8previousEPj +_ZNK12hb_bit_set_t9is_subsetERKS_ +_ZNK12hb_bit_set_t9next_manyEjPjj +_ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE15bucket_for_hashERKS3_j +_ZNK12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE3getES3_ +_ZNK12hb_hashmap_tIjjLb1EE8is_equalERKS0_ +_ZNK14hb_sparseset_tI23hb_bit_set_invertible_tE10next_rangeEPjS2_ +_ZNK14hb_sparseset_tI23hb_bit_set_invertible_tE4nextEPj +_ZNK14hb_sparseset_tI23hb_bit_set_invertible_tE8is_equalERKS1_ +_ZNK14hb_sparseset_tI23hb_bit_set_invertible_tE8previousEPj +_ZNK14hb_sparseset_tI23hb_bit_set_invertible_tE9is_subsetERKS1_ +_ZNK16hb_lazy_loader_tI17hb_ot_face_data_t23hb_shaper_lazy_loader_tI9hb_face_tLj1ES0_ES2_Lj1ES0_EcvbEv +_ZNK16hb_lazy_loader_tI23hb_fallback_face_data_t23hb_shaper_lazy_loader_tI9hb_face_tLj2ES0_ES2_Lj2ES0_EcvbEv +_ZNK16hb_lazy_loader_tIN2OT17SVG_accelerator_tE21hb_face_lazy_loader_tIS1_Lj38EE9hb_face_tLj38ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18GPOS_accelerator_tE21hb_face_lazy_loader_tIS1_Lj25EE9hb_face_tLj25ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18GSUB_accelerator_tE21hb_face_lazy_loader_tIS1_Lj24EE9hb_face_tLj24ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18gvar_accelerator_tE21hb_face_lazy_loader_tIS1_Lj20EE9hb_face_tLj20ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18hmtx_accelerator_tE21hb_face_lazy_loader_tIS1_Lj5EE9hb_face_tLj5ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18meta_accelerator_tE21hb_face_lazy_loader_tIS1_Lj10EE9hb_face_tLj10ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18name_accelerator_tE21hb_face_lazy_loader_tIS1_Lj8EE9hb_face_tLj8ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18post_accelerator_tE21hb_face_lazy_loader_tIS1_Lj7EE9hb_face_tLj7ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18sbix_accelerator_tE21hb_face_lazy_loader_tIS1_Lj37EE9hb_face_tLj37ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT18vmtx_accelerator_tE21hb_face_lazy_loader_tIS1_Lj12EE9hb_face_tLj12ES1_E3getEv +_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb0EE9hb_face_tLj6E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4BASEE22hb_table_lazy_loader_tIS1_Lj26ELb0EE9hb_face_tLj26E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4COLRE22hb_table_lazy_loader_tIS1_Lj34ELb0EE9hb_face_tLj34E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4CPALE22hb_table_lazy_loader_tIS1_Lj35ELb0EE9hb_face_tLj35E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4MATHE22hb_table_lazy_loader_tIS1_Lj39ELb0EE9hb_face_tLj39E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4MVARE22hb_table_lazy_loader_tIS1_Lj21ELb0EE9hb_face_tLj21E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4STATE22hb_table_lazy_loader_tIS1_Lj9ELb0EE9hb_face_tLj9E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4VORGE22hb_table_lazy_loader_tIS1_Lj13ELb0EE9hb_face_tLj13E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4avarE22hb_table_lazy_loader_tIS1_Lj19ELb0EE9hb_face_tLj19E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4fvarE22hb_table_lazy_loader_tIS1_Lj18ELb0EE9hb_face_tLj18E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4headE22hb_table_lazy_loader_tIS1_Lj1ELb1EE9hb_face_tLj1E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4hheaE22hb_table_lazy_loader_tIS1_Lj4ELb0EE9hb_face_tLj4E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4kernE22hb_table_lazy_loader_tIS1_Lj22ELb0EE9hb_face_tLj22E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4maxpE22hb_table_lazy_loader_tIS1_Lj2ELb1EE9hb_face_tLj2E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN2OT4vheaE22hb_table_lazy_loader_tIS1_Lj11ELb0EE9hb_face_tLj11E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN3AAT4ankrE22hb_table_lazy_loader_tIS1_Lj30ELb0EE9hb_face_tLj30E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN3AAT4featE22hb_table_lazy_loader_tIS1_Lj33ELb0EE9hb_face_tLj33E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN3AAT4kerxE22hb_table_lazy_loader_tIS1_Lj29ELb0EE9hb_face_tLj29E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN3AAT4ltagE22hb_table_lazy_loader_tIS1_Lj32ELb0EE9hb_face_tLj32E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN3AAT4mortE22hb_table_lazy_loader_tIS1_Lj28ELb0EE9hb_face_tLj28E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN3AAT4morxE22hb_table_lazy_loader_tIS1_Lj27ELb0EE9hb_face_tLj27E9hb_blob_tE3getEv +_ZNK16hb_lazy_loader_tIN3AAT4trakE22hb_table_lazy_loader_tIS1_Lj31ELb0EE9hb_face_tLj31E9hb_blob_tE3getEv +_ZNK18hb_ot_shape_plan_t10substituteEP9hb_font_tP11hb_buffer_t +_ZNK18hb_ot_shape_plan_t8positionEP9hb_font_tP11hb_buffer_t +_ZNK22hb_table_lazy_loader_tIN2OT4kernELj22ELb0EE8get_blobEv +_ZNK22hb_table_lazy_loader_tIN2OT4locaELj14ELb1EE8get_blobEv +_ZNK22hb_table_lazy_loader_tIN3AAT4kerxELj29ELb0EE8get_blobEv +_ZNK22hb_table_lazy_loader_tIN3AAT4mortELj28ELb0EE8get_blobEv +_ZNK22hb_table_lazy_loader_tIN3AAT4morxELj27ELb0EE8get_blobEv +_ZNK23hb_bit_set_invertible_t10intersectsEjj +_ZNK23hb_bit_set_invertible_t14get_populationEv +_ZNK23hb_bit_set_invertible_t14previous_rangeEPjS0_ +_ZNK23hb_bit_set_invertible_t7get_maxEv +_ZNK23hb_bit_set_invertible_t7get_minEv +_ZNK23hb_bit_set_invertible_t8is_emptyEv +_ZNK23hb_bit_set_invertible_t8previousEPj +_ZNK2OT10AttachList17get_attach_pointsEjjPjS1_ +_ZNK2OT10AttachList8sanitizeEP21hb_sanitize_context_t +_ZNK2OT10BaseScript8sanitizeEP21hb_sanitize_context_t +_ZNK2OT10CPALV1Tail8sanitizeEP21hb_sanitize_context_tPKvjj +_ZNK2OT10CaretValue15get_caret_valueEP9hb_font_t14hb_direction_tjRKNS_14VariationStoreE +_ZNK2OT10CaretValue8sanitizeEP21hb_sanitize_context_t +_ZNK2OT10NameRecord8languageEP9hb_face_t +_ZNK2OT10PaintScale8sanitizeEP21hb_sanitize_context_t +_ZNK2OT10SBIXStrike14get_glyph_blobEjP9hb_blob_tjPiS3_jPj +_ZNK2OT11PaintRotate8sanitizeEP21hb_sanitize_context_t +_ZNK2OT11SegmentMaps3mapEijj +_ZNK2OT12ChainContext8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT12ChainContext8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT12ChainContext8dispatchINS_24hb_would_apply_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT12ChainContext8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT12ChainRuleSetINS_6Layout10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tERNS_30ChainContextApplyLookupContextE +_ZNK2OT12ChainRuleSetINS_6Layout10SmallTypesEE7closureEPNS_20hb_closure_context_tEjRNS_32ChainContextClosureLookupContextE +_ZNK2OT12CmapSubtable16collect_unicodesEP8hb_set_tj +_ZNK2OT12CmapSubtable8sanitizeEP21hb_sanitize_context_t +_ZNK2OT12CmapSubtable9get_glyphEjPj +_ZNK2OT12KernSubTableINS_20KernOTSubTableHeaderEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT12KernSubTableINS_20KernOTSubTableHeaderEE8dispatchIN3AAT22hb_aat_apply_context_tEJEEENT_8return_tEPS6_DpOT0_ +_ZNK2OT12KernSubTableINS_21KernAATSubTableHeaderEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT12KernSubTableINS_21KernAATSubTableHeaderEE8dispatchIN3AAT22hb_aat_apply_context_tEJEEENT_8return_tEPS6_DpOT0_ +_ZNK2OT12LigCaretList14get_lig_caretsEP9hb_font_t14hb_direction_tjRKNS_14VariationStoreEjPjPi +_ZNK2OT12MathVariants18get_glyph_variantsEj14hb_direction_tP9hb_font_tjPjP26hb_ot_math_glyph_variant_t +_ZNK2OT12MathVariants8sanitizeEP21hb_sanitize_context_t +_ZNK2OT13FeatureParams8sanitizeEP21hb_sanitize_context_tj +_ZNK2OT13IndexSubtable14get_image_dataEjPjS1_S1_ +_ZNK2OT13IndexSubtable8sanitizeEP21hb_sanitize_context_tj +_ZNK2OT13MathConstants8sanitizeEP21hb_sanitize_context_t +_ZNK2OT13MathConstants9get_valueE21hb_ot_math_constant_tP9hb_font_t +_ZNK2OT13MathGlyphInfo8sanitizeEP21hb_sanitize_context_t +_ZNK2OT13VarRegionList8evaluateEjPKijPf +_ZNK2OT14BaseScriptList15get_base_scriptEj +_ZNK2OT14ContextFormat314collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT14ContextFormat37closureEPNS_20hb_closure_context_tE +_ZNK2OT14ContextFormat38sanitizeEP21hb_sanitize_context_t +_ZNK2OT14GDEFVersion1_2INS_6Layout10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT14PaintTranslate8sanitizeEP21hb_sanitize_context_t +_ZNK2OT14ResourceRecord8sanitizeEP21hb_sanitize_context_tPKv +_ZNK2OT14UnsizedArrayOfIN3AAT11FeatureNameEE8sanitizeIJPKNS1_4featEEEEbP21hb_sanitize_context_tjDpOT_ +_ZNK2OT14UnsizedArrayOfIN3AAT15TrackTableEntryEE8sanitizeIJRPKvRKNS_7IntTypeItLj2EEEEEEbP21hb_sanitize_context_tjDpOT_ +_ZNK2OT14UnsizedArrayOfINS_10NameRecordEE8sanitizeIJRPKvEEEbP21hb_sanitize_context_tjDpOT_ +_ZNK2OT14UnsizedArrayOfINS_8OffsetToINS_7ArrayOfIN3AAT6AnchorENS_7IntTypeIjLj4EEEEENS5_ItLj2EEELb0EEEE8sanitizeIJRPKvEEEbP21hb_sanitize_context_tjDpOT_ +_ZNK2OT14UnsizedArrayOfINS_8OffsetToINS_9AxisValueENS_7IntTypeItLj2EEELb1EEEE8sanitizeIJPKNS_20AxisValueOffsetArrayEEEEbP21hb_sanitize_context_tjDpOT_ +_ZNK2OT14VariationStore18get_region_scalarsEjPKijPfj +_ZNK2OT16ContextFormat1_4INS_6Layout10SmallTypesEE11would_applyEPNS_24hb_would_apply_context_tE +_ZNK2OT16ContextFormat1_4INS_6Layout10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT16ContextFormat1_4INS_6Layout10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT16ContextFormat2_5INS_6Layout10SmallTypesEE11would_applyEPNS_24hb_would_apply_context_tE +_ZNK2OT16ContextFormat2_5INS_6Layout10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tEb +_ZNK2OT16ContextFormat2_5INS_6Layout10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT16ContextFormat2_5INS_6Layout10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT16DeltaSetIndexMap3mapEj +_ZNK2OT16DeltaSetIndexMap8sanitizeEP21hb_sanitize_context_t +_ZNK2OT16ExtensionFormat1INS_6Layout9GPOS_impl12ExtensionPosEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GPOS_impl12ExtensionPosEE8dispatchI29hb_position_single_dispatch_tJRP9hb_font_tR14hb_direction_tRjR19hb_glyph_position_tEEENT_8return_tEPSF_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_29hb_collect_coverage_context_tI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES7_IS8_ImLj0EES8_ImLj9EEEEEEJEEENT_8return_tEPSF_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchI34hb_get_glyph_alternates_dispatch_tJRjS7_RPjS9_EEENT_8return_tEPSA_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_20hb_closure_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_24hb_would_apply_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_26hb_have_non_1to1_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_29hb_collect_coverage_context_tI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES7_IS8_ImLj0EES8_ImLj9EEEEEEJEEENT_8return_tEPSF_DpOT0_ +_ZNK2OT16ExtensionFormat1INS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT16FeatMinMaxRecord8sanitizeEP21hb_sanitize_context_tPKv +_ZNK2OT16OpenTypeFontFile14get_face_countEv +_ZNK2OT16OpenTypeFontFile8get_faceEjPj +_ZNK2OT16OpenTypeFontFile8sanitizeEP21hb_sanitize_context_t +_ZNK2OT17CaretValueFormat215get_caret_valueEP9hb_font_t14hb_direction_tj +_ZNK2OT17ClassDefFormat1_3INS_6Layout10SmallTypesEE16collect_coverageI8hb_set_tEEbPT_ +_ZNK2OT17ClassDefFormat1_3INS_6Layout10SmallTypesEE16intersects_classEPK8hb_set_tt +_ZNK2OT17ClassDefFormat1_3INS_6Layout10SmallTypesEE24intersected_class_glyphsEPK8hb_set_tjPS4_ +_ZNK2OT17ClassDefFormat2_4INS_6Layout10SmallTypesEE13collect_classI8hb_set_tEEbPT_j +_ZNK2OT17ClassDefFormat2_4INS_6Layout10SmallTypesEE16collect_coverageI8hb_set_tEEbPT_ +_ZNK2OT17ClassDefFormat2_4INS_6Layout10SmallTypesEE16intersects_classEPK8hb_set_tt +_ZNK2OT17ClassDefFormat2_4INS_6Layout10SmallTypesEE24intersected_class_glyphsEPK8hb_set_tjPS4_ +_ZNK2OT17FeatureParamsSize8sanitizeEP21hb_sanitize_context_t +_ZNK2OT17FeatureVariations10find_indexEPKijPj +_ZNK2OT17MathGlyphAssembly8sanitizeEP21hb_sanitize_context_t +_ZNK2OT17MathGlyphAssembly9get_partsE14hb_direction_tP9hb_font_tjPjP23hb_ot_math_glyph_part_tPi +_ZNK2OT17PaintScaleUniform8sanitizeEP21hb_sanitize_context_t +_ZNK2OT17hb_kern_machine_tI34hb_ot_shape_fallback_kern_driver_tE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tIN3AAT19KerxSubTableFormat0INS1_18KerxSubTableHeaderEE13accelerator_tEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tIN3AAT19KerxSubTableFormat0INS_20KernOTSubTableHeaderEE13accelerator_tEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tIN3AAT19KerxSubTableFormat0INS_21KernAATSubTableHeaderEE13accelerator_tEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tIN3AAT19KerxSubTableFormat2INS1_18KerxSubTableHeaderEE13accelerator_tEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tIN3AAT19KerxSubTableFormat2INS_20KernOTSubTableHeaderEE13accelerator_tEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tIN3AAT19KerxSubTableFormat2INS_21KernAATSubTableHeaderEE13accelerator_tEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tIN3AAT19KerxSubTableFormat6INS1_18KerxSubTableHeaderEE13accelerator_tEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT17hb_kern_machine_tINS_19KernSubTableFormat3INS_21KernAATSubTableHeaderEEEE4kernEP9hb_font_tP11hb_buffer_tjb +_ZNK2OT18GSUBGPOSVersion1_2INS_6Layout10SmallTypesEE8sanitizeINS1_9GPOS_impl9PosLookupEEEbP21hb_sanitize_context_t +_ZNK2OT18GSUBGPOSVersion1_2INS_6Layout10SmallTypesEE8sanitizeINS1_9GSUB_impl11SubstLookupEEEbP21hb_sanitize_context_t +_ZNK2OT18ResourceForkHeader8get_faceEjPj +_ZNK2OT18ResourceForkHeader8sanitizeEP21hb_sanitize_context_t +_ZNK2OT18ResourceTypeRecord8sanitizeEP21hb_sanitize_context_tPKvS4_ +_ZNK2OT18glyf_accelerator_t10get_pointsINS0_19points_aggregator_tEEEbP9hb_font_tjT_ +_ZNK2OT18glyf_accelerator_t10get_pointsINS_9glyf_impl14path_builder_tEEEbP9hb_font_tjT_ +_ZNK2OT18glyf_accelerator_t13glyph_for_gidEjb +_ZNK2OT18glyf_accelerator_t29get_advance_with_var_unscaledEP9hb_font_tjb +_ZNK2OT19ChainContextFormat311would_applyEPNS_24hb_would_apply_context_tE +_ZNK2OT19ChainContextFormat314collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT19ChainContextFormat35applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT19ChainContextFormat37closureEPNS_20hb_closure_context_tE +_ZNK2OT19ChainContextFormat38sanitizeEP21hb_sanitize_context_t +_ZNK2OT19CmapSubtableFormat413accelerator_t16collect_unicodesEP8hb_set_t +_ZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPj +_ZNK2OT19CmapSubtableFormat49get_glyphEjPj +_ZNK2OT19IndexSubtableRecord8sanitizeEP21hb_sanitize_context_tPKv +_ZNK2OT20BaseGlyphPaintRecord8sanitizeEP21hb_sanitize_context_tPKv +_ZNK2OT20TupleVariationHeader16calculate_scalarE10hb_array_tIiEjS1_IKNS_7HBFixedINS_7IntTypeIsLj2EEELj14EEEE +_ZNK2OT21ChainContextFormat1_4INS_6Layout10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT21ChainContextFormat1_4INS_6Layout10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT21ChainContextFormat2_5INS_6Layout10SmallTypesEE11would_applyEPNS_24hb_would_apply_context_tE +_ZNK2OT21ChainContextFormat2_5INS_6Layout10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT21ChainContextFormat2_5INS_6Layout10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tEb +_ZNK2OT21ChainContextFormat2_5INS_6Layout10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT21ChainContextFormat2_5INS_6Layout10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT21MathGlyphConstruction8sanitizeEP21hb_sanitize_context_t +_ZNK2OT21PaintSkewAroundCenter8sanitizeEP21hb_sanitize_context_t +_ZNK2OT21hb_ot_apply_context_t13replace_glyphEj +_ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj +_ZNK2OT21hb_ot_apply_context_t21replace_glyph_inplaceEj +_ZNK2OT21hb_ot_apply_context_t26output_glyph_for_componentEjj +_ZNK2OT21hb_ot_apply_context_t27replace_glyph_with_ligatureEjj +_ZNK2OT22PaintScaleAroundCenter8sanitizeEP21hb_sanitize_context_t +_ZNK2OT23IndexSubtableFormat1Or3INS_7IntTypeIjLj4EEEE14get_image_dataEjPjS4_ +_ZNK2OT23MathTopAccentAttachment9get_valueEjP9hb_font_t +_ZNK2OT23PaintRotateAroundCenter8sanitizeEP21hb_sanitize_context_t +_ZNK2OT23VariationSelectorRecord16collect_unicodesEP8hb_set_tPKv +_ZNK2OT23VariationSelectorRecord9get_glyphEjPjPKv +_ZNK2OT24FeatureTableSubstitution15collect_lookupsEPK8hb_set_tPK12hb_hashmap_tIjPKNS_7FeatureELb0EEPS1_ +_ZNK2OT24VarSizedBinSearchArrayOfIN3AAT12LookupSingleINS_8OffsetToINS_7ArrayOfINS1_6AnchorENS_7IntTypeIjLj4EEEEENS6_ItLj2EEELb0EEEEEE8sanitizeIJRPKvEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT24VarSizedBinSearchArrayOfIN3AAT18LookupSegmentArrayINS_11HBGlyphID16EEEE8sanitizeIJPKNS1_13LookupFormat4IS3_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT24VarSizedBinSearchArrayOfIN3AAT18LookupSegmentArrayINS_7IntTypeIjLj4EEEEEE8sanitizeIJPKNS1_13LookupFormat4IS4_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT24VarSizedBinSearchArrayOfIN3AAT18LookupSegmentArrayINS_7IntTypeItLj2EEEEEE8sanitizeIJPKNS1_13LookupFormat4IS4_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT24VarSizedBinSearchArrayOfIN3AAT18LookupSegmentArrayINS_8OffsetToINS_7ArrayOfINS1_6AnchorENS_7IntTypeIjLj4EEEEENS6_ItLj2EEELb0EEEEEE8sanitizeIJPKNS1_13LookupFormat4ISA_EERPKvEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT24VarSizedBinSearchArrayOfIN3AAT19LookupSegmentSingleINS_8OffsetToINS_7ArrayOfINS1_6AnchorENS_7IntTypeIjLj4EEEEENS6_ItLj2EEELb0EEEEEE8sanitizeIJRPKvEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT25CmapSubtableLongSegmentedINS_20CmapSubtableFormat12EE16collect_unicodesEP8hb_set_tj +_ZNK2OT25CmapSubtableLongSegmentedINS_20CmapSubtableFormat12EE9get_glyphEjPj +_ZNK2OT25CmapSubtableLongSegmentedINS_20CmapSubtableFormat13EE16collect_unicodesEP8hb_set_tj +_ZNK2OT25CmapSubtableLongSegmentedINS_20CmapSubtableFormat13EE9get_glyphEjPj +_ZNK2OT29PaintScaleUniformAroundCenter8sanitizeEP21hb_sanitize_context_t +_ZNK2OT33hb_ot_layout_lookup_accelerator_t5applyEPNS_21hb_ot_apply_context_tEb +_ZNK2OT3OS28sanitizeEP21hb_sanitize_context_t +_ZNK2OT3OS29get_widthEv +_ZNK2OT3SVG13accelerator_t24reference_blob_for_glyphEj +_ZNK2OT4Axis12get_baselineEjjjPPKNS_9BaseCoordE +_ZNK2OT4Axis8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4BASE12get_baselineEP9hb_font_tj14hb_direction_tjjPi +_ZNK2OT4BASE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4CBDT13accelerator_t11get_extentsEP9hb_font_tjP18hb_glyph_extents_t +_ZNK2OT4CBDT13accelerator_t13reference_pngEP9hb_font_tj +_ZNK2OT4CBLC13choose_strikeEP9hb_font_t +_ZNK2OT4COLR16get_glyph_layersEjjPjP19hb_ot_color_layer_t +_ZNK2OT4COLR8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4CPAL8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4GDEF14is_blocklistedEP9hb_blob_tP9hb_face_t +_ZNK2OT4GDEF15get_glyph_classEj +_ZNK2OT4GDEF19get_glyphs_in_classEjP8hb_set_t +_ZNK2OT4GDEF24get_mark_attachment_typeEj +_ZNK2OT4MATH8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4MVAR7get_varEjPKij +_ZNK2OT4MVAR8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4STAT8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4STAT9get_valueEjPf +_ZNK2OT4VVAR23get_vorg_delta_unscaledEjPKijPf +_ZNK2OT4avar8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4cff113accelerator_t11get_extentsEP9hb_font_tjP18hb_glyph_extents_t +_ZNK2OT4cff113accelerator_t14get_glyph_nameEjPcj +_ZNK2OT4cff113accelerator_t19get_glyph_from_nameEPKciPj +_ZNK2OT4cff113accelerator_t19get_seac_componentsEjPjS2_ +_ZNK2OT4cff113accelerator_t8get_pathEP9hb_font_tjR17hb_draw_session_t +_ZNK2OT4cff213accelerator_t11get_extentsEP9hb_font_tjP18hb_glyph_extents_t +_ZNK2OT4cff213accelerator_t8get_pathEP9hb_font_tjR17hb_draw_session_t +_ZNK2OT4cmap13find_subtableEjj +_ZNK2OT4cmap18find_best_subtableEPb +_ZNK2OT4fvar14find_axis_infoEjP21hb_ot_var_axis_info_t +_ZNK2OT4fvar14get_axis_infosEjPjP21hb_ot_var_axis_info_t +_ZNK2OT4fvar19get_axes_deprecatedEjPjP16hb_ot_var_axis_t +_ZNK2OT4fvar20find_axis_deprecatedEjPjP16hb_ot_var_axis_t +_ZNK2OT4fvar20normalize_axis_valueEjf +_ZNK2OT4fvar22unnormalize_axis_valueEji +_ZNK2OT4fvar8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4gvar13accelerator_t22apply_deltas_to_pointsEjP9hb_font_t10hb_array_tINS_15contour_point_tEE +_ZNK2OT4gvar16sanitize_shallowEP21hb_sanitize_context_t +_ZNK2OT4gvar24get_glyph_var_data_bytesEP9hb_blob_tj +_ZNK2OT4kern16has_cross_streamEv +_ZNK2OT4kern17has_state_machineEv +_ZNK2OT4meta13accelerator_t11get_entriesEjPjP16hb_ot_meta_tag_t +_ZNK2OT4meta13accelerator_t15reference_entryEj +_ZNK2OT4name13accelerator_t9get_indexEjPK18hb_language_impl_tPj +_ZNK2OT4name8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4post13accelerator_t14get_glyph_nameEjPcj +_ZNK2OT4post13accelerator_t19get_glyph_from_nameEPKciPj +_ZNK2OT4post8sanitizeEP21hb_sanitize_context_t +_ZNK2OT4sbix13accelerator_t13choose_strikeEP9hb_font_t +_ZNK2OT4sbix13accelerator_t15get_png_extentsEP9hb_font_tjP18hb_glyph_extents_t +_ZNK2OT5Paint8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT6Device11get_x_deltaEP9hb_font_tRKNS_14VariationStoreEPf +_ZNK2OT6Device11get_y_deltaEP9hb_font_tRKNS_14VariationStoreEPf +_ZNK2OT6Device8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout4GPOS14is_blocklistedEP9hb_blob_tP9hb_face_t +_ZNK2OT6Layout4GSUB14is_blocklistedEP9hb_blob_tP9hb_face_t +_ZNK2OT6Layout6Common17CoverageFormat1_3INS0_10SmallTypesEE10intersectsEPK8hb_set_t +_ZNK2OT6Layout6Common17CoverageFormat1_3INS0_10SmallTypesEE13intersect_setIR8hb_set_tLPv0EEEvRKS6_OT_ +_ZNK2OT6Layout6Common17CoverageFormat2_4INS0_10SmallTypesEE13intersect_setIR8hb_set_tLPv0EEEvRKS6_OT_ +_ZNK2OT6Layout6Common17CoverageFormat2_4INS0_10SmallTypesEE16collect_coverageI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES6_IS7_ImLj0EES7_ImLj9EEEEEEbPT_ +_ZNK2OT6Layout6Common8Coverage12get_coverageEj +_ZNK2OT6Layout6Common8Coverage16collect_coverageI8hb_set_tEEbPT_ +_ZNK2OT6Layout6Common8Coverage8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl10CursivePos8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT6Layout9GPOS_impl11ValueFormat11apply_valueEPNS_21hb_ot_apply_context_tEPKvPKNS_7IntTypeItLj2EEER19hb_glyph_position_t +_ZNK2OT6Layout9GPOS_impl11ValueFormat22sanitize_value_devicesEP21hb_sanitize_context_tPKvPKNS_7IntTypeItLj2EEE +_ZNK2OT6Layout9GPOS_impl13AnchorFormat210get_anchorEPNS_21hb_ot_apply_context_tEjPfS5_ +_ZNK2OT6Layout9GPOS_impl13AnchorFormat310get_anchorEPNS_21hb_ot_apply_context_tEjPfS5_ +_ZNK2OT6Layout9GPOS_impl13AnchorFormat38sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl16PairPosFormat1_3INS0_10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT6Layout9GPOS_impl16PairPosFormat1_3INS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl16PairPosFormat1_3INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl16PairPosFormat2_4INS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl16PairPosFormat2_4INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl16SinglePosFormat15applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl16SinglePosFormat18sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl16SinglePosFormat215position_singleEP9hb_font_t14hb_direction_tjR19hb_glyph_position_t +_ZNK2OT6Layout9GPOS_impl16SinglePosFormat25applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl16SinglePosFormat28sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl17CursivePosFormat15applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl17PosLookupSubTable8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GPOS_impl17PosLookupSubTable8dispatchI29hb_position_single_dispatch_tJRP9hb_font_tR14hb_direction_tRjR19hb_glyph_position_tEEENT_8return_tEPSD_jDpOT0_ +_ZNK2OT6Layout9GPOS_impl17PosLookupSubTable8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GPOS_impl17PosLookupSubTable8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GPOS_impl17PosLookupSubTable8dispatchINS_29hb_collect_coverage_context_tI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES5_IS6_ImLj0EES6_ImLj9EEEEEEJEEENT_8return_tEPSD_jDpOT0_ +_ZNK2OT6Layout9GPOS_impl17PosLookupSubTable8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GPOS_impl19MarkLigPosFormat1_2INS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl19MarkLigPosFormat1_2INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl20MarkBasePosFormat1_2INS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl20MarkBasePosFormat1_2INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl20MarkMarkPosFormat1_2INS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GPOS_impl20MarkMarkPosFormat1_2INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GPOS_impl7PairPos8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT6Layout9GPOS_impl7PairPos8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT6Layout9GPOS_impl7PairSetINS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tEPKNS1_11ValueFormatEj +_ZNK2OT6Layout9GPOS_impl7PairSetINS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_tPKNS4_18sanitize_closure_tE +_ZNK2OT6Layout9GPOS_impl9MarkArray5applyEPNS_21hb_ot_apply_context_tEjjRKNS1_12AnchorMatrixEjj +_ZNK2OT6Layout9GPOS_impl9PosLookup16collect_coverageI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES4_IS5_ImLj0EES5_ImLj9EEEEEEvPT_ +_ZNK2OT6Layout9GPOS_impl9SinglePos8dispatchI29hb_position_single_dispatch_tJRP9hb_font_tR14hb_direction_tRjR19hb_glyph_position_tEEENT_8return_tEPSD_DpOT0_ +_ZNK2OT6Layout9GPOS_impl9SinglePos8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT6Layout9GSUB_impl11SingleSubst8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT6Layout9GSUB_impl11SingleSubst8dispatchINS_20hb_closure_context_tEJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT6Layout9GSUB_impl11SingleSubst8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS5_DpOT0_ +_ZNK2OT6Layout9GSUB_impl11SubstLookup11would_applyEPNS_24hb_would_apply_context_tEPKNS_33hb_ot_layout_lookup_accelerator_tE +_ZNK2OT6Layout9GSUB_impl11SubstLookup16collect_coverageI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES4_IS5_ImLj0EES5_ImLj9EEEEEEvPT_ +_ZNK2OT6Layout9GSUB_impl12AlternateSetINS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchI34hb_get_glyph_alternates_dispatch_tJRjS5_RPjS7_EEENT_8return_tEPS8_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchINS_20hb_closure_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchINS_24hb_would_apply_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchINS_26hb_have_non_1to1_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchINS_29hb_collect_coverage_context_tI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES5_IS6_ImLj0EES6_ImLj9EEEEEEJEEENT_8return_tEPSD_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl19SubstLookupSubTable8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS5_jDpOT0_ +_ZNK2OT6Layout9GSUB_impl20SingleSubstFormat1_3INS0_10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT6Layout9GSUB_impl20SingleSubstFormat1_3INS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GSUB_impl20SingleSubstFormat1_3INS0_10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT6Layout9GSUB_impl20SingleSubstFormat2_4INS0_10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT6Layout9GSUB_impl20SingleSubstFormat2_4INS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GSUB_impl20SingleSubstFormat2_4INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GSUB_impl22LigatureSubstFormat1_2INS0_10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT6Layout9GSUB_impl22LigatureSubstFormat1_2INS0_10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT6Layout9GSUB_impl22LigatureSubstFormat1_2INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GSUB_impl22MultipleSubstFormat1_2INS0_10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT6Layout9GSUB_impl22MultipleSubstFormat1_2INS0_10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT6Layout9GSUB_impl22MultipleSubstFormat1_2INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GSUB_impl23AlternateSubstFormat1_2INS0_10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT6Layout9GSUB_impl23AlternateSubstFormat1_2INS0_10SmallTypesEE7closureEPNS_20hb_closure_context_tE +_ZNK2OT6Layout9GSUB_impl23AlternateSubstFormat1_2INS0_10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GSUB_impl30ReverseChainSingleSubstFormat110intersectsEPK8hb_set_t +_ZNK2OT6Layout9GSUB_impl30ReverseChainSingleSubstFormat114collect_glyphsEPNS_27hb_collect_glyphs_context_tE +_ZNK2OT6Layout9GSUB_impl30ReverseChainSingleSubstFormat15applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GSUB_impl30ReverseChainSingleSubstFormat17closureEPNS_20hb_closure_context_tE +_ZNK2OT6Layout9GSUB_impl30ReverseChainSingleSubstFormat18sanitizeEP21hb_sanitize_context_t +_ZNK2OT6Layout9GSUB_impl8LigatureINS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Layout9GSUB_impl8SequenceINS0_10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tE +_ZNK2OT6Lookup8dispatchINS_6Layout9GPOS_impl17PosLookupSubTableE29hb_position_single_dispatch_tJRP9hb_font_tR14hb_direction_tRjR19hb_glyph_position_tEEENT0_8return_tEPSE_DpOT1_ +_ZNK2OT6Lookup8dispatchINS_6Layout9GSUB_impl19SubstLookupSubTableE34hb_get_glyph_alternates_dispatch_tJRjS6_RPjS8_EEENT0_8return_tEPS9_DpOT1_ +_ZNK2OT6Lookup8dispatchINS_6Layout9GSUB_impl19SubstLookupSubTableENS_26hb_have_non_1to1_context_tEJEEENT0_8return_tEPS6_DpOT1_ +_ZNK2OT6Lookup8sanitizeINS_6Layout9GPOS_impl17PosLookupSubTableEEEbP21hb_sanitize_context_t +_ZNK2OT6Lookup8sanitizeINS_6Layout9GSUB_impl19SubstLookupSubTableEEEbP21hb_sanitize_context_t +_ZNK2OT6MinMax8sanitizeEP21hb_sanitize_context_t +_ZNK2OT6RecordINS_6ScriptEE8sanitizeEP21hb_sanitize_context_tPKv +_ZNK2OT6RecordINS_7FeatureEE8sanitizeEP21hb_sanitize_context_tPKv +_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE8sanitizeIJPKNS1_4ltagEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfIN3CFF17FDSelect3_4_RangeINS_7IntTypeIjLj4EEENS3_ItLj2EEEEES4_E8sanitizeIJDnRjEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_10ClipRecordENS_7IntTypeIjLj4EEEE8sanitizeIJPKNS_8ClipListEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_14EncodingRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_4cmapEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_15BitmapSizeTableENS_7IntTypeIjLj4EEEE8sanitizeIJPKNS_4CBLCEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_15MathValueRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_23MathTopAccentAttachmentEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_15MathValueRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_25MathItalicsCorrectionInfoEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_16BaseScriptRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_14BaseScriptListEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_17BaseLangSysRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_10BaseScriptEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_18MathKernInfoRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_12MathKernInfoEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_20BaseGlyphPaintRecordENS_7IntTypeIjLj4EEEE8sanitizeIJPKNS_13BaseGlyphListEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_22FeatureVariationRecordENS_7IntTypeIjLj4EEEE8sanitizeIJPKNS_17FeatureVariationsEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_23VariationSelectorRecordENS_7IntTypeIjLj4EEEE8sanitizeIJPKNS_20CmapSubtableFormat14EEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_30FeatureTableSubstitutionRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_24FeatureTableSubstitutionEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_6Layout9GPOS_impl10MarkRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS2_9MarkArrayEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_6Layout9GPOS_impl15EntryExitRecordENS_7IntTypeItLj2EEEE8sanitizeIJPKNS2_17CursivePosFormat1EEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_6RecordINS_7LangSysEEENS_7IntTypeItLj2EEEE8sanitizeIJPKNS_6ScriptEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_7DataMapENS_7IntTypeIjLj4EEEE8sanitizeIJPKNS_4metaEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_10CaretValueENS_7IntTypeItLj2EEELb1EEES4_E8sanitizeIJPKNS_8LigGlyphEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_10SBIXStrikeENS_7IntTypeIjLj4EEELb1EEES4_E8sanitizeIJPKNS_4sbixEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_12ChainRuleSetINS_6Layout10SmallTypesEEENS_7IntTypeItLj2EEELb1EEES7_E8sanitizeIJPKNS_21ChainContextFormat1_4IS4_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_12ChainRuleSetINS_6Layout10SmallTypesEEENS_7IntTypeItLj2EEELb1EEES7_E8sanitizeIJPKNS_21ChainContextFormat2_5IS4_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_19OpenTypeOffsetTableENS_7IntTypeIjLj4EEELb1EEES4_E8sanitizeIJPKNS_17TTCHeaderVersion1EEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_5PaintENS_7IntTypeIjLj4EEELb1EEES4_E8sanitizeIJPKNS_9LayerListEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout6Common8CoverageENS_7IntTypeIjLj4EEELb1EEENS5_ItLj2EEEE8sanitizeIJPKNS_20MarkGlyphSetsFormat1EEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout6Common8CoverageENS_7IntTypeItLj2EEELb1EEES6_E8sanitizeIJPKNS2_9GSUB_impl30ReverseChainSingleSubstFormat1EEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout6Common8CoverageENS_7IntTypeItLj2EEELb1EEES6_E8sanitizeIJPKNS_19ChainContextFormat3EEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout9GPOS_impl17PosLookupSubTableENS_7IntTypeItLj2EEELb1EEES6_E8sanitizeIJPKNS_6LookupEjEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout9GPOS_impl7PairSetINS2_10SmallTypesEEENS_7IntTypeItLj2EEELb1EEES8_E8sanitizeIJPKNS3_16PairPosFormat1_3IS5_EEPNS6_18sanitize_closure_tEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout9GPOS_impl9PosLookupENS_7IntTypeItLj2EEELb1EEES6_E8sanitizeIJPKNS_16List16OfOffsetToIS4_S6_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout9GSUB_impl11SubstLookupENS_7IntTypeItLj2EEELb1EEES6_E8sanitizeIJPKNS_16List16OfOffsetToIS4_S6_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_6Layout9GSUB_impl19SubstLookupSubTableENS_7IntTypeItLj2EEELb1EEES6_E8sanitizeIJPKNS_6LookupEjEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_7VarDataENS_7IntTypeIjLj4EEELb1EEENS3_ItLj2EEEE8sanitizeIJPKNS_14VariationStoreEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_8LigGlyphENS_7IntTypeItLj2EEELb1EEES4_E8sanitizeIJPKNS_12LigCaretListEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_9BaseCoordENS_7IntTypeItLj2EEELb1EEES4_E8sanitizeIJPKNS_10BaseValuesEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7ArrayOfINS_8OffsetToINS_9ChainRuleINS_6Layout10SmallTypesEEENS_7IntTypeItLj2EEELb1EEES7_E8sanitizeIJPKNS_12ChainRuleSetIS4_EEEEEbP21hb_sanitize_context_tDpOT_ +_ZNK2OT7Context8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT7Context8dispatchINS_24hb_would_apply_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT7Context8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT7Context8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK2OT7DataMap8sanitizeEP21hb_sanitize_context_tPKv +_ZNK2OT7Feature8sanitizeEP21hb_sanitize_context_tPKNS_25Record_sanitize_closure_tE +_ZNK2OT7RuleSetINS_6Layout10SmallTypesEE14collect_glyphsEPNS_27hb_collect_glyphs_context_tERNS_33ContextCollectGlyphsLookupContextE +_ZNK2OT7RuleSetINS_6Layout10SmallTypesEE5applyEPNS_21hb_ot_apply_context_tERNS_25ContextApplyLookupContextE +_ZNK2OT7RuleSetINS_6Layout10SmallTypesEE7closureEPNS_20hb_closure_context_tEjRNS_27ContextClosureLookupContextE +_ZNK2OT7VarData8sanitizeEP21hb_sanitize_context_t +_ZNK2OT7VarData9get_deltaEjPKijRKNS_13VarRegionListEPf +_ZNK2OT8ClassDef8sanitizeEP21hb_sanitize_context_t +_ZNK2OT8ClassDef9get_classEj +_ZNK2OT8GSUBGPOS21get_feature_variationEjj +_ZNK2OT8GSUBGPOS33feature_variation_collect_lookupsEPK8hb_set_tPK12hb_hashmap_tIjPKNS_7FeatureELb0EEPS1_ +_ZNK2OT8HVARVVAR22get_lsb_delta_unscaledEjPKijPf +_ZNK2OT8HVARVVAR26get_advance_delta_unscaledEjPKijPf +_ZNK2OT8HVARVVAR8sanitizeEP21hb_sanitize_context_t +_ZNK2OT8MathKern11get_entriesEjPjP23hb_ot_math_kern_entry_tP9hb_font_t +_ZNK2OT8MathKern27sanitize_math_value_recordsEP21hb_sanitize_context_t +_ZNK2OT8MathKern9get_valueEiP9hb_font_t +_ZNK2OT8OffsetToIN3AAT10ClassTableINS_7IntTypeIhLj1EEEEENS3_ItLj2EEELb0EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToIN3AAT10ClassTableINS_7IntTypeItLj2EEEEES4_Lb0EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_10DefaultUVSENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_10NoVariableINS_9Affine2x3EEENS_7IntTypeIjLj3EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_10SBIXStrikeENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_11AttachPointENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_12ConditionSetENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_12LigCaretListENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_12MathKernInfoENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_12RecordListOfINS_7FeatureEEENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_13FeatureParamsENS_7IntTypeItLj2EEELb1EE8sanitizeIJjEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_13MarkGlyphSetsENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_13NonDefaultUVSENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_13VarRegionListENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_14VariationStoreENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_14VariationStoreENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_16DeltaSetIndexMapENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_17FeatureVariationsENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_18IndexSubtableArrayENS_7IntTypeIjLj4EEELb0EE8sanitizeIJRKS3_EEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_18RecordListOfScriptENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_19OpenTypeOffsetTableENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_23MathTopAccentAttachmentENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_23UnsizedListOfOffset16ToIN3AAT6LookupINS_11HBGlyphID16EEENS_7IntTypeIjLj4EEELb0EEES7_Lb0EE8sanitizeIJRjEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_23UnsizedListOfOffset16ToIN3AAT6LookupINS_11HBGlyphID16EEENS_7IntTypeItLj2EEELb0EEES7_Lb0EE8sanitizeIJiEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_24FeatureTableSubstitutionENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_25MathItalicsCorrectionInfoENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_4RuleINS_6Layout10SmallTypesEEENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_5PaintENS_7IntTypeIjLj3EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_6Layout9GPOS_impl12AnchorMatrixENS_7IntTypeItLj2EEELb1EE8sanitizeIJjEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_6Layout9GPOS_impl13LigatureArrayENS_7IntTypeItLj2EEELb1EE8sanitizeIJjEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_6Layout9GPOS_impl6AnchorENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_6Layout9GSUB_impl11LigatureSetINS1_10SmallTypesEEENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_6Layout9GSUB_impl12AlternateSetINS1_10SmallTypesEEENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_6Layout9GSUB_impl8LigatureINS1_10SmallTypesEEENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_6Layout9GSUB_impl8SequenceINS1_10SmallTypesEEENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_7ArrayOfINS_7IntTypeIhLj1EEENS2_IjLj4EEEEENS2_IjLj3EEELb0EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_7ClipBoxENS_7IntTypeIjLj3EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_7LangSysENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_7LangSysENS_7IntTypeItLj2EEELb1EE8sanitizeIJPKNS_25Record_sanitize_closure_tEEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_7RuleSetINS_6Layout10SmallTypesEEENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_8ClipListENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_8MathKernENS_7IntTypeItLj2EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_8VariableINS_9Affine2x3EEENS_7IntTypeIjLj3EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_9ArrayOfM1INS_18ResourceTypeRecordENS_7IntTypeItLj2EEEEES4_Lb0EE8sanitizeIJPKS5_RPKvEEEbP21hb_sanitize_context_tSB_DpOT_ +_ZNK2OT8OffsetToINS_9ColorLineINS_10NoVariableEEENS_7IntTypeIjLj3EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_9ColorLineINS_8VariableEEENS_7IntTypeIjLj3EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_9ConditionENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8OffsetToINS_9LayerListENS_7IntTypeIjLj4EEELb1EE8sanitizeIJEEEbP21hb_sanitize_context_tPKvDpOT_ +_ZNK2OT8hmtxvmtxINS_4hmtxENS_4hheaENS_4HVAREE13accelerator_t29get_advance_with_var_unscaledEjP9hb_font_tPf +_ZNK2OT8hmtxvmtxINS_4vmtxENS_4vheaENS_4VVAREE13accelerator_t29get_advance_with_var_unscaledEjP9hb_font_tPf +_ZNK2OT8hmtxvmtxINS_4vmtxENS_4vheaENS_4VVAREE13accelerator_t37get_leading_bearing_with_var_unscaledEP9hb_font_tjPi +_ZNK2OT9AxisValue8sanitizeEP21hb_sanitize_context_t +_ZNK2OT9BaseCoord8sanitizeEP21hb_sanitize_context_t +_ZNK2OT9BaseCoord9get_coordEP9hb_font_tRKNS_14VariationStoreE14hb_direction_t +_ZNK2OT9ChainRuleINS_6Layout10SmallTypesEE11would_applyEPNS_24hb_would_apply_context_tERNS_30ChainContextApplyLookupContextE +_ZNK2OT9ChainRuleINS_6Layout10SmallTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK2OT9ExtensionINS_6Layout9GPOS_impl12ExtensionPosEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GPOS_impl12ExtensionPosEE8dispatchI29hb_position_single_dispatch_tJRP9hb_font_tR14hb_direction_tRjR19hb_glyph_position_tEEENT_8return_tEPSF_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_29hb_collect_coverage_context_tI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES7_IS8_ImLj0EES8_ImLj9EEEEEEJEEENT_8return_tEPSF_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GPOS_impl12ExtensionPosEE8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchI34hb_get_glyph_alternates_dispatch_tJRjS7_RPjS9_EEENT_8return_tEPSA_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_20hb_closure_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_21hb_ot_apply_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_24hb_would_apply_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_26hb_have_non_1to1_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_27hb_collect_glyphs_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_29hb_collect_coverage_context_tI24hb_set_digest_combiner_tI28hb_set_digest_bits_pattern_tImLj4EES7_IS8_ImLj0EES8_ImLj9EEEEEEJEEENT_8return_tEPSF_DpOT0_ +_ZNK2OT9ExtensionINS_6Layout9GSUB_impl14ExtensionSubstEE8dispatchINS_33hb_accelerate_subtables_context_tEJEEENT_8return_tEPS7_DpOT0_ +_ZNK2OT9PaintSkew8sanitizeEP21hb_sanitize_context_t +_ZNK2OT9glyf_impl11GlyphHeader30get_extents_without_var_scaledINS_18glyf_accelerator_tEEEbP9hb_font_tRKT_jP18hb_glyph_extents_t +_ZNK2OT9glyf_impl11SimpleGlyph18get_contour_pointsERNS_22contour_point_vector_tEb +_ZNK2OT9glyf_impl20CompositeGlyphRecord16transform_pointsERNS_22contour_point_vector_tE +_ZNK2OT9glyf_impl20CompositeGlyphRecord18get_transformationERA4_fRNS_15contour_point_tE +_ZNK2OT9glyf_impl5Glyph10get_pointsINS_18glyf_accelerator_tEEEbP9hb_font_tRKT_RNS_22contour_point_vector_tEPS9_bbbj +_ZNK3AAT10StateTableINS_13ExtendedTypesENS_12Format1EntryILb1EE9EntryDataEE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ExtendedTypesENS_13LigatureEntryILb1EE9EntryDataEE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ExtendedTypesENS_17InsertionSubtableIS1_E9EntryDataEE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ExtendedTypesENS_18ContextualSubtableIS1_E9EntryDataEE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ExtendedTypesENS_19KerxSubTableFormat4INS_18KerxSubTableHeaderEE9EntryDataEE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ExtendedTypesEvE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ObsoleteTypesENS_17InsertionSubtableIS1_E9EntryDataEE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ObsoleteTypesENS_18ContextualSubtableIS1_E9EntryDataEE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT10StateTableINS_13ObsoleteTypesEvE8sanitizeEP21hb_sanitize_context_tPj +_ZNK3AAT11FeatureName18get_selector_infosEjPjP37hb_aat_layout_feature_selector_info_tS1_PKv +_ZNK3AAT12KerxSubTable8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS3_DpOT0_ +_ZNK3AAT12KerxSubTable8dispatchINS_22hb_aat_apply_context_tEJEEENT_8return_tEPS3_DpOT0_ +_ZNK3AAT12LookupSingleIN2OT8OffsetToINS1_7ArrayOfINS_6AnchorENS1_7IntTypeIjLj4EEEEENS5_ItLj2EEELb0EEEE8sanitizeEP21hb_sanitize_context_tPKv +_ZNK3AAT13ChainSubtableINS_13ExtendedTypesEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_DpOT0_ +_ZNK3AAT13ChainSubtableINS_13ExtendedTypesEE8dispatchINS_22hb_aat_apply_context_tEJEEENT_8return_tEPS5_DpOT0_ +_ZNK3AAT13ChainSubtableINS_13ExtendedTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT13ChainSubtableINS_13ObsoleteTypesEE8dispatchI21hb_sanitize_context_tJEEENT_8return_tEPS5_DpOT0_ +_ZNK3AAT13ChainSubtableINS_13ObsoleteTypesEE8dispatchINS_22hb_aat_apply_context_tEJEEENT_8return_tEPS5_DpOT0_ +_ZNK3AAT13LookupFormat4IN2OT11HBGlyphID16EE9get_valueEj +_ZNK3AAT13LookupFormat4IN2OT7IntTypeIjLj4EEEE9get_valueEj +_ZNK3AAT13LookupFormat4IN2OT7IntTypeItLj2EEEE9get_valueEj +_ZNK3AAT13LookupFormat4IN2OT8OffsetToINS1_7ArrayOfINS_6AnchorENS1_7IntTypeIjLj4EEEEENS5_ItLj2EEELb0EEEE9get_valueEj +_ZNK3AAT16LigatureSubtableINS_13ExtendedTypesEE5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT16LigatureSubtableINS_13ExtendedTypesEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT18ContextualSubtableINS_13ExtendedTypesEE5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT19KerxSubTableFormat0INS_18KerxSubTableHeaderEE11get_kerningEjjPNS_22hb_aat_apply_context_tE +_ZNK3AAT19KerxSubTableFormat2IN2OT20KernOTSubTableHeaderEE11get_kerningEjjPNS_22hb_aat_apply_context_tE +_ZNK3AAT19KerxSubTableFormat2IN2OT21KernAATSubTableHeaderEE11get_kerningEjjPNS_22hb_aat_apply_context_tE +_ZNK3AAT19KerxSubTableFormat2INS_18KerxSubTableHeaderEE11get_kerningEjjPNS_22hb_aat_apply_context_tE +_ZNK3AAT19KerxSubTableFormat2INS_18KerxSubTableHeaderEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT19KerxSubTableFormat6INS_18KerxSubTableHeaderEE11get_kerningEjjPNS_22hb_aat_apply_context_tE +_ZNK3AAT19KerxSubTableFormat6INS_18KerxSubTableHeaderEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT19LookupSegmentSingleIN2OT8OffsetToINS1_7ArrayOfINS_6AnchorENS1_7IntTypeIjLj4EEEEENS5_ItLj2EEELb0EEEE8sanitizeEP21hb_sanitize_context_tPKv +_ZNK3AAT21NoncontextualSubtableINS_13ExtendedTypesEE5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT21NoncontextualSubtableINS_13ObsoleteTypesEE5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT4ankr8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT4trak5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT4trak8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT5ChainINS_13ExtendedTypesEE13compile_flagsEPK20hb_aat_map_builder_t +_ZNK3AAT5ChainINS_13ExtendedTypesEE5applyEPNS_22hb_aat_apply_context_tEj +_ZNK3AAT5ChainINS_13ExtendedTypesEE8sanitizeEP21hb_sanitize_context_tj +_ZNK3AAT5ChainINS_13ObsoleteTypesEE13compile_flagsEPK20hb_aat_map_builder_t +_ZNK3AAT5ChainINS_13ObsoleteTypesEE5applyEPNS_22hb_aat_apply_context_tEj +_ZNK3AAT5ChainINS_13ObsoleteTypesEE8sanitizeEP21hb_sanitize_context_tj +_ZNK3AAT6LookupIN2OT11HBGlyphID16EE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT6LookupIN2OT11HBGlyphID16EE9get_valueEjj +_ZNK3AAT6LookupIN2OT7IntTypeIjLj4EEEE17get_value_or_nullEjj +_ZNK3AAT6LookupIN2OT7IntTypeIjLj4EEEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT6LookupIN2OT7IntTypeIjLj4EEEE9get_valueEjj +_ZNK3AAT6LookupIN2OT7IntTypeItLj2EEEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT6LookupIN2OT7IntTypeItLj2EEEE9get_valueEjj +_ZNK3AAT6LookupIN2OT8OffsetToINS1_7ArrayOfINS_6AnchorENS1_7IntTypeIjLj4EEEEENS5_ItLj2EEELb0EEEE8sanitizeEP21hb_sanitize_context_tPKv +_ZNK3AAT6LookupIN2OT8OffsetToINS1_7ArrayOfINS_6AnchorENS1_7IntTypeIjLj4EEEEENS5_ItLj2EEELb0EEEE9get_valueEjj +_ZNK3AAT8mortmorxINS_13ExtendedTypesELj1836020344EE13compile_flagsEPK20hb_aat_map_builder_tP12hb_aat_map_t +_ZNK3AAT8mortmorxINS_13ExtendedTypesELj1836020344EE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT8mortmorxINS_13ObsoleteTypesELj1836020340EE13compile_flagsEPK20hb_aat_map_builder_tP12hb_aat_map_t +_ZNK3AAT8mortmorxINS_13ObsoleteTypesELj1836020340EE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT9KerxTableIN2OT6KernOTEE5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT9KerxTableIN2OT6KernOTEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT9KerxTableIN2OT7KernAATEE5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT9KerxTableIN2OT7KernAATEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT9KerxTableINS_4kerxEE5applyEPNS_22hb_aat_apply_context_tE +_ZNK3AAT9KerxTableINS_4kerxEE8sanitizeEP21hb_sanitize_context_t +_ZNK3AAT9TrackData12get_trackingEPKvf +_ZNK3AAT9TrackData14interpolate_atEjfRKNS_15TrackTableEntryEPKv +_ZNK3AAT9TrackData8sanitizeEP21hb_sanitize_context_tPKv +_ZNK3CFF11FDSelect3_4IN2OT7IntTypeIjLj4EEENS2_ItLj2EEEE6get_fdEj +_ZNK3CFF11FDSelect3_4IN2OT7IntTypeIjLj4EEENS2_ItLj2EEEE8sanitizeEP21hb_sanitize_context_tj +_ZNK3CFF11FDSelect3_4IN2OT7IntTypeItLj2EEENS2_IhLj1EEEE8sanitizeEP21hb_sanitize_context_tj +_ZNK3CFF12CFF2FDSelect8sanitizeEP21hb_sanitize_context_tj +_ZNK3CFF18CFF2VariationStore8sanitizeEP21hb_sanitize_context_t +_ZNK3CFF7Charset7get_sidEjj +_ZNK3CFF7Charset8sanitizeEP21hb_sanitize_context_t +_ZNK3CFF7Charset9get_glyphEjj +_ZNK3CFF8CFFIndexIN2OT7IntTypeIjLj4EEEE8sanitizeEP21hb_sanitize_context_t +_ZNK3CFF8CFFIndexIN2OT7IntTypeIjLj4EEEE9length_atEj +_ZNK3CFF8CFFIndexIN2OT7IntTypeIjLj4EEEEixEj +_ZNK3CFF8CFFIndexIN2OT7IntTypeItLj2EEEE8get_sizeEv +_ZNK3CFF8CFFIndexIN2OT7IntTypeItLj2EEEE8sanitizeEP21hb_sanitize_context_t +_ZNK3CFF8CFFIndexIN2OT7IntTypeItLj2EEEE9length_atEj +_ZNK3CFF8CFFIndexIN2OT7IntTypeItLj2EEEEixEj +_ZNK3CFF8Encoding8sanitizeEP21hb_sanitize_context_t +_ZNK3CFF8FDSelect8sanitizeEP21hb_sanitize_context_tj +_ZNK9hb_face_t15load_num_glyphsEv +_ZNK9hb_face_t9load_upemEv +_hb_CrapPool DATA +_hb_NullPool DATA +_hb_Null_AAT_Lookup DATA +_hb_Null_AAT_SettingName DATA +_hb_Null_OT_CmapSubtableLongGroup DATA +_hb_Null_OT_Index DATA +_hb_Null_OT_LangSys DATA +_hb_Null_OT_RangeRecord DATA +_hb_Null_OT_VarIdx DATA +_hb_Null_hb_buffer_t DATA +_hb_Null_hb_draw_funcs_t DATA +_hb_Null_hb_face_t DATA +_hb_Null_hb_font_funcs_t DATA +_hb_Null_hb_font_t DATA +_hb_Null_hb_unicode_funcs_t DATA +_hb_fallback_shape +_hb_fallback_shaper_face_data_create +_hb_fallback_shaper_face_data_destroy +_hb_fallback_shaper_font_data_create +_hb_fallback_shaper_font_data_destroy +_hb_modified_combining_class DATA +_hb_options DATA +_hb_ot_shape +_hb_ot_shaper_arabic DATA +_hb_ot_shaper_default DATA +_hb_ot_shaper_dumber DATA +_hb_ot_shaper_face_data_create +_hb_ot_shaper_face_data_destroy +_hb_ot_shaper_font_data_create +_hb_ot_shaper_font_data_destroy +_hb_ot_shaper_hangul DATA +_hb_ot_shaper_hebrew DATA +_hb_ot_shaper_indic DATA +_hb_ot_shaper_khmer DATA +_hb_ot_shaper_myanmar DATA +_hb_ot_shaper_myanmar_zawgyi DATA +_hb_ot_shaper_thai DATA +_hb_ot_shaper_use DATA +hb_aat_layout_feature_type_get_name_id +hb_aat_layout_feature_type_get_selector_infos +hb_aat_layout_get_feature_types +hb_aat_layout_has_positioning +hb_aat_layout_has_substitution +hb_aat_layout_has_tracking +hb_blob_copy_writable_or_fail +hb_blob_create +hb_blob_create_from_file +hb_blob_create_from_file_or_fail +hb_blob_create_or_fail +hb_blob_create_sub_blob +hb_blob_destroy +hb_blob_get_data +hb_blob_get_data_writable +hb_blob_get_empty +hb_blob_get_length +hb_blob_get_user_data +hb_blob_is_immutable +hb_blob_make_immutable +hb_blob_reference +hb_blob_set_user_data +hb_buffer_add +hb_buffer_add_codepoints +hb_buffer_add_latin1 +hb_buffer_add_utf16 +hb_buffer_add_utf32 +hb_buffer_add_utf8 +hb_buffer_allocation_successful +hb_buffer_append +hb_buffer_clear_contents +hb_buffer_create +hb_buffer_create_similar +hb_buffer_deserialize_glyphs +hb_buffer_deserialize_unicode +hb_buffer_destroy +hb_buffer_diff +hb_buffer_get_cluster_level +hb_buffer_get_content_type +hb_buffer_get_direction +hb_buffer_get_empty +hb_buffer_get_flags +hb_buffer_get_glyph_infos +hb_buffer_get_glyph_positions +hb_buffer_get_invisible_glyph +hb_buffer_get_language +hb_buffer_get_length +hb_buffer_get_not_found_glyph +hb_buffer_get_replacement_codepoint +hb_buffer_get_script +hb_buffer_get_segment_properties +hb_buffer_get_unicode_funcs +hb_buffer_get_user_data +hb_buffer_guess_segment_properties +hb_buffer_has_positions +hb_buffer_normalize_glyphs +hb_buffer_pre_allocate +hb_buffer_reference +hb_buffer_reset +hb_buffer_reverse +hb_buffer_reverse_clusters +hb_buffer_reverse_range +hb_buffer_serialize +hb_buffer_serialize_format_from_string +hb_buffer_serialize_format_to_string +hb_buffer_serialize_glyphs +hb_buffer_serialize_list_formats +hb_buffer_serialize_unicode +hb_buffer_set_cluster_level +hb_buffer_set_content_type +hb_buffer_set_direction +hb_buffer_set_flags +hb_buffer_set_invisible_glyph +hb_buffer_set_language +hb_buffer_set_length +hb_buffer_set_message_func +hb_buffer_set_not_found_glyph +hb_buffer_set_replacement_codepoint +hb_buffer_set_script +hb_buffer_set_segment_properties +hb_buffer_set_unicode_funcs +hb_buffer_set_user_data +hb_color_get_alpha +hb_color_get_blue +hb_color_get_green +hb_color_get_red +hb_direction_from_string +hb_direction_to_string +hb_draw_close_path +hb_draw_cubic_to +hb_draw_funcs_create +hb_draw_funcs_destroy +hb_draw_funcs_is_immutable +hb_draw_funcs_make_immutable +hb_draw_funcs_reference +hb_draw_funcs_set_close_path_func +hb_draw_funcs_set_cubic_to_func +hb_draw_funcs_set_line_to_func +hb_draw_funcs_set_move_to_func +hb_draw_funcs_set_quadratic_to_func +hb_draw_line_to +hb_draw_move_to +hb_draw_quadratic_to +hb_face_builder_add_table +hb_face_builder_create +hb_face_builder_sort_tables +hb_face_collect_unicodes +hb_face_collect_variation_selectors +hb_face_collect_variation_unicodes +hb_face_count +hb_face_create +hb_face_create_for_tables +hb_face_destroy +hb_face_get_empty +hb_face_get_glyph_count +hb_face_get_index +hb_face_get_table_tags +hb_face_get_upem +hb_face_get_user_data +hb_face_is_immutable +hb_face_make_immutable +hb_face_reference +hb_face_reference_blob +hb_face_reference_table +hb_face_set_glyph_count +hb_face_set_index +hb_face_set_upem +hb_face_set_user_data +hb_feature_from_string +hb_feature_to_string +hb_font_add_glyph_origin_for_direction +hb_font_changed +hb_font_create +hb_font_create_sub_font +hb_font_destroy +hb_font_funcs_create +hb_font_funcs_destroy +hb_font_funcs_get_empty +hb_font_funcs_get_user_data +hb_font_funcs_is_immutable +hb_font_funcs_make_immutable +hb_font_funcs_reference +hb_font_funcs_set_font_h_extents_func +hb_font_funcs_set_font_v_extents_func +hb_font_funcs_set_glyph_contour_point_func +hb_font_funcs_set_glyph_extents_func +hb_font_funcs_set_glyph_from_name_func +hb_font_funcs_set_glyph_func +hb_font_funcs_set_glyph_h_advance_func +hb_font_funcs_set_glyph_h_advances_func +hb_font_funcs_set_glyph_h_kerning_func +hb_font_funcs_set_glyph_h_origin_func +hb_font_funcs_set_glyph_name_func +hb_font_funcs_set_glyph_shape_func +hb_font_funcs_set_glyph_v_advance_func +hb_font_funcs_set_glyph_v_advances_func +hb_font_funcs_set_glyph_v_kerning_func +hb_font_funcs_set_glyph_v_origin_func +hb_font_funcs_set_nominal_glyph_func +hb_font_funcs_set_nominal_glyphs_func +hb_font_funcs_set_user_data +hb_font_funcs_set_variation_glyph_func +hb_font_get_empty +hb_font_get_extents_for_direction +hb_font_get_face +hb_font_get_glyph +hb_font_get_glyph_advance_for_direction +hb_font_get_glyph_advances_for_direction +hb_font_get_glyph_contour_point +hb_font_get_glyph_contour_point_for_origin +hb_font_get_glyph_extents +hb_font_get_glyph_extents_for_origin +hb_font_get_glyph_from_name +hb_font_get_glyph_h_advance +hb_font_get_glyph_h_advances +hb_font_get_glyph_h_kerning +hb_font_get_glyph_h_origin +hb_font_get_glyph_kerning_for_direction +hb_font_get_glyph_name +hb_font_get_glyph_origin_for_direction +hb_font_get_glyph_shape +hb_font_get_glyph_v_advance +hb_font_get_glyph_v_advances +hb_font_get_glyph_v_kerning +hb_font_get_glyph_v_origin +hb_font_get_h_extents +hb_font_get_nominal_glyph +hb_font_get_nominal_glyphs +hb_font_get_parent +hb_font_get_ppem +hb_font_get_ptem +hb_font_get_scale +hb_font_get_serial +hb_font_get_synthetic_slant +hb_font_get_user_data +hb_font_get_v_extents +hb_font_get_var_coords_design +hb_font_get_var_coords_normalized +hb_font_get_variation_glyph +hb_font_glyph_from_string +hb_font_glyph_to_string +hb_font_is_immutable +hb_font_make_immutable +hb_font_reference +hb_font_set_face +hb_font_set_funcs +hb_font_set_funcs_data +hb_font_set_parent +hb_font_set_ppem +hb_font_set_ptem +hb_font_set_scale +hb_font_set_synthetic_slant +hb_font_set_user_data +hb_font_set_var_coords_design +hb_font_set_var_coords_normalized +hb_font_set_var_named_instance +hb_font_set_variations +hb_font_subtract_glyph_origin_for_direction +hb_ft_face_create +hb_ft_face_create_cached +hb_ft_face_create_referenced +hb_ft_font_changed +hb_ft_font_create +hb_ft_font_create_referenced +hb_ft_font_get_face +hb_ft_font_get_load_flags +hb_ft_font_lock_face +hb_ft_font_set_funcs +hb_ft_font_set_load_flags +hb_ft_font_unlock_face +hb_ft_hb_font_changed +hb_glib_blob_create +hb_glib_get_unicode_funcs +hb_glib_script_from_script +hb_glib_script_to_script +hb_glyph_info_get_glyph_flags +hb_language_from_string +hb_language_get_default +hb_language_matches +hb_language_to_string +hb_map_allocation_successful +hb_map_clear +hb_map_copy +hb_map_create +hb_map_del +hb_map_destroy +hb_map_get +hb_map_get_empty +hb_map_get_population +hb_map_get_user_data +hb_map_has +hb_map_hash +hb_map_is_empty +hb_map_is_equal +hb_map_reference +hb_map_set +hb_map_set_user_data +hb_ot_color_glyph_get_layers +hb_ot_color_glyph_reference_png +hb_ot_color_glyph_reference_svg +hb_ot_color_has_layers +hb_ot_color_has_palettes +hb_ot_color_has_png +hb_ot_color_has_svg +hb_ot_color_palette_color_get_name_id +hb_ot_color_palette_get_colors +hb_ot_color_palette_get_count +hb_ot_color_palette_get_flags +hb_ot_color_palette_get_name_id +hb_ot_font_set_funcs +hb_ot_layout_collect_features +hb_ot_layout_collect_lookups +hb_ot_layout_feature_get_characters +hb_ot_layout_feature_get_lookups +hb_ot_layout_feature_get_name_ids +hb_ot_layout_feature_with_variations_get_lookups +hb_ot_layout_get_attach_points +hb_ot_layout_get_baseline +hb_ot_layout_get_baseline_with_fallback +hb_ot_layout_get_glyph_class +hb_ot_layout_get_glyphs_in_class +hb_ot_layout_get_horizontal_baseline_tag_for_script +hb_ot_layout_get_ligature_carets +hb_ot_layout_get_size_params +hb_ot_layout_has_glyph_classes +hb_ot_layout_has_positioning +hb_ot_layout_has_substitution +hb_ot_layout_language_find_feature +hb_ot_layout_language_get_feature_indexes +hb_ot_layout_language_get_feature_tags +hb_ot_layout_language_get_required_feature +hb_ot_layout_language_get_required_feature_index +hb_ot_layout_lookup_collect_glyphs +hb_ot_layout_lookup_get_glyph_alternates +hb_ot_layout_lookup_get_optical_bound +hb_ot_layout_lookup_substitute_closure +hb_ot_layout_lookup_would_substitute +hb_ot_layout_lookups_substitute_closure +hb_ot_layout_script_find_language +hb_ot_layout_script_get_language_tags +hb_ot_layout_script_select_language +hb_ot_layout_table_choose_script +hb_ot_layout_table_find_feature_variations +hb_ot_layout_table_find_script +hb_ot_layout_table_get_feature_tags +hb_ot_layout_table_get_lookup_count +hb_ot_layout_table_get_script_tags +hb_ot_layout_table_select_script +hb_ot_math_get_constant +hb_ot_math_get_glyph_assembly +hb_ot_math_get_glyph_italics_correction +hb_ot_math_get_glyph_kerning +hb_ot_math_get_glyph_kernings +hb_ot_math_get_glyph_top_accent_attachment +hb_ot_math_get_glyph_variants +hb_ot_math_get_min_connector_overlap +hb_ot_math_has_data +hb_ot_math_is_glyph_extended_shape +hb_ot_meta_get_entry_tags +hb_ot_meta_reference_entry +hb_ot_metrics_get_position +hb_ot_metrics_get_position_with_fallback +hb_ot_metrics_get_variation +hb_ot_metrics_get_x_variation +hb_ot_metrics_get_y_variation +hb_ot_name_get_utf16 +hb_ot_name_get_utf32 +hb_ot_name_get_utf8 +hb_ot_name_list_names +hb_ot_shape_glyphs_closure +hb_ot_shape_plan_collect_lookups +hb_ot_tag_from_language +hb_ot_tag_to_language +hb_ot_tag_to_script +hb_ot_tags_from_script +hb_ot_tags_from_script_and_language +hb_ot_tags_to_script_and_language +hb_ot_var_find_axis +hb_ot_var_find_axis_info +hb_ot_var_get_axes +hb_ot_var_get_axis_count +hb_ot_var_get_axis_infos +hb_ot_var_get_named_instance_count +hb_ot_var_has_data +hb_ot_var_named_instance_get_design_coords +hb_ot_var_named_instance_get_postscript_name_id +hb_ot_var_named_instance_get_subfamily_name_id +hb_ot_var_normalize_coords +hb_ot_var_normalize_variations +hb_script_from_iso15924_tag +hb_script_from_string +hb_script_get_horizontal_direction +hb_script_to_iso15924_tag +hb_segment_properties_equal +hb_segment_properties_hash +hb_segment_properties_overlay +hb_set_add +hb_set_add_range +hb_set_add_sorted_array +hb_set_allocation_successful +hb_set_clear +hb_set_copy +hb_set_create +hb_set_del +hb_set_del_range +hb_set_destroy +hb_set_get_empty +hb_set_get_max +hb_set_get_min +hb_set_get_population +hb_set_get_user_data +hb_set_has +hb_set_hash +hb_set_intersect +hb_set_invert +hb_set_is_empty +hb_set_is_equal +hb_set_is_subset +hb_set_next +hb_set_next_many +hb_set_next_range +hb_set_previous +hb_set_previous_range +hb_set_reference +hb_set_set +hb_set_set_user_data +hb_set_subtract +hb_set_symmetric_difference +hb_set_union +hb_shape +hb_shape_full +hb_shape_list_shapers +hb_shape_plan_create +hb_shape_plan_create2 +hb_shape_plan_create_cached +hb_shape_plan_create_cached2 +hb_shape_plan_destroy +hb_shape_plan_execute +hb_shape_plan_get_empty +hb_shape_plan_get_shaper +hb_shape_plan_get_user_data +hb_shape_plan_reference +hb_shape_plan_set_user_data +hb_style_get_value +hb_tag_from_string +hb_tag_to_string +hb_ucd_get_unicode_funcs +hb_unicode_combining_class +hb_unicode_compose +hb_unicode_decompose +hb_unicode_decompose_compatibility +hb_unicode_eastasian_width +hb_unicode_funcs_create +hb_unicode_funcs_destroy +hb_unicode_funcs_get_default +hb_unicode_funcs_get_empty +hb_unicode_funcs_get_parent +hb_unicode_funcs_get_user_data +hb_unicode_funcs_is_immutable +hb_unicode_funcs_make_immutable +hb_unicode_funcs_reference +hb_unicode_funcs_set_combining_class_func +hb_unicode_funcs_set_compose_func +hb_unicode_funcs_set_decompose_compatibility_func +hb_unicode_funcs_set_decompose_func +hb_unicode_funcs_set_eastasian_width_func +hb_unicode_funcs_set_general_category_func +hb_unicode_funcs_set_mirroring_func +hb_unicode_funcs_set_script_func +hb_unicode_funcs_set_user_data +hb_unicode_general_category +hb_unicode_mirroring +hb_unicode_script +hb_variation_from_string +hb_variation_to_string +hb_version +hb_version_atleast +hb_version_string +minus_1 DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.dll.a new file mode 100644 index 0000000..5dc4ac9 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.lib new file mode 100644 index 0000000..5dc4ac9 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libharfbuzz.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.def new file mode 100644 index 0000000..42e5069 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.def @@ -0,0 +1,1575 @@ +; +; Definition file of libheif-1.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libheif-1.dll" +EXPORTS +_Z11from_fourccPKc +_Z13aom_push_dataPvPKvy +_Z15aom_new_decoderPPv +_Z15aom_new_encoderPPv +_Z16aom_decode_imagePvPP10heif_image +_Z16aom_encode_imagePvPK10heif_image22heif_image_input_class +_Z16aom_free_decoderPv +_Z16aom_free_encoderPv +_Z19aom_list_parametersPv +_Z22aom_query_encoded_sizePvjjPjS0_ +_Z22get_decoder_plugin_aomv +_Z22get_encoder_plugin_aomv +_Z23aom_get_compressed_dataPvPPhPiP22heif_encoded_data_type +_Z23aom_set_strict_decodingPvi +_Z24aom_get_parameter_stringPvPKcPci +_Z24aom_set_parameter_stringPvPKcS1_ +_Z25aom_get_parameter_booleanPvPKcPi +_Z25aom_get_parameter_integerPvPKcPi +_Z25aom_get_parameter_qualityPvPi +_Z25aom_set_parameter_booleanPvPKci +_Z25aom_set_parameter_integerPvPKci +_Z25aom_set_parameter_qualityPvi +_Z25heif_fourcc_to_brand_enumPKc +_Z26aom_get_parameter_losslessPvPi +_Z26aom_query_input_colorspaceP15heif_colorspaceP11heif_chroma +_Z26aom_set_parameter_losslessPvi +_Z27aom_query_input_colorspace2PvP15heif_colorspaceP11heif_chroma +_Z31aom_get_parameter_logging_levelPvPi +_Z31aom_set_parameter_logging_levelPvi +_Z6is_pngPKhi +_Z7is_jpegPKhi +_ZN10heif_imageD2Ev +_ZN12ImageOverlay5parseEyRKNSt3__16vectorIhNS0_9allocatorIhEEEE +_ZN12heif_encoder5allocEv +_ZN12heif_encoder7releaseEv +_ZN12heif_encoderC1EPK19heif_encoder_plugin +_ZN12heif_encoderC2EPK19heif_encoder_plugin +_ZN12heif_encoderD1Ev +_ZN12heif_encoderD2Ev +_ZN13custom_optionD2Ev +_ZN15Op_RGB_to_YCbCrIhE18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS3_10ColorStateERKNS3_22ColorConversionOptionsE +_ZN15Op_RGB_to_YCbCrIhE22state_after_conversionERKN4heif10ColorStateES4_RKNS1_22ColorConversionOptionsE +_ZN15Op_RGB_to_YCbCrIhED0Ev +_ZN15Op_RGB_to_YCbCrItE18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS3_10ColorStateERKNS3_22ColorConversionOptionsE +_ZN15Op_RGB_to_YCbCrItE22state_after_conversionERKN4heif10ColorStateES4_RKNS1_22ColorConversionOptionsE +_ZN15Op_RGB_to_YCbCrItED0Ev +_ZN15Op_YCbCr_to_RGBIhE18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS3_10ColorStateERKNS3_22ColorConversionOptionsE +_ZN15Op_YCbCr_to_RGBIhE22state_after_conversionERKN4heif10ColorStateES4_RKNS1_22ColorConversionOptionsE +_ZN15Op_YCbCr_to_RGBIhED0Ev +_ZN15Op_YCbCr_to_RGBItE18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS3_10ColorStateERKNS3_22ColorConversionOptionsE +_ZN15Op_YCbCr_to_RGBItE22state_after_conversionERKN4heif10ColorStateES4_RKNS1_22ColorConversionOptionsE +_ZN15Op_YCbCr_to_RGBItED0Ev +_ZN16Op_to_hdr_planes18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN16Op_to_hdr_planes22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN16Op_to_hdr_planesD0Ev +_ZN16Op_to_sdr_planes18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN16Op_to_sdr_planes22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN16Op_to_sdr_planesD0Ev +_ZN18Op_RGB_to_RGB24_3218convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN18Op_RGB_to_RGB24_3222state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN18Op_RGB_to_RGB24_32D0Ev +_ZN18encoder_struct_aom17add_custom_optionENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES6_ +_ZN18encoder_struct_aom17add_custom_optionERK13custom_option +_ZN19Op_drop_alpha_plane18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN19Op_drop_alpha_plane22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN19Op_drop_alpha_planeD0Ev +_ZN19Op_mono_to_RGB24_3218convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN19Op_mono_to_RGB24_3222state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN19Op_mono_to_RGB24_32D0Ev +_ZN19Op_mono_to_YCbCr42018convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN19Op_mono_to_YCbCr42022state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN19Op_mono_to_YCbCr420D0Ev +_ZN20Op_RGB24_32_to_YCbCr18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN20Op_RGB24_32_to_YCbCr22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN20Op_RGB24_32_to_YCbCrD0Ev +_ZN20Op_YCbCr420_to_RGB2418convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN20Op_YCbCr420_to_RGB2422state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN20Op_YCbCr420_to_RGB24D0Ev +_ZN20Op_YCbCr420_to_RGB3218convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN20Op_YCbCr420_to_RGB3222state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN20Op_YCbCr420_to_RGB32D0Ev +_ZN21Op_RGB_to_RRGGBBaa_BE18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN21Op_RGB_to_RRGGBBaa_BE22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN21Op_RGB_to_RRGGBBaa_BED0Ev +_ZN23Op_YCbCr420_to_RRGGBBaa18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN23Op_YCbCr420_to_RRGGBBaa22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN23Op_YCbCr420_to_RRGGBBaaD0Ev +_ZN25Op_RGB_HDR_to_RRGGBBaa_BE18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN25Op_RGB_HDR_to_RRGGBBaa_BE22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN25Op_RGB_HDR_to_RRGGBBaa_BED0Ev +_ZN25Op_RRGGBBaa_BE_to_RGB_HDR18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN25Op_RRGGBBaa_BE_to_RGB_HDR22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN25Op_RRGGBBaa_BE_to_RGB_HDRD0Ev +_ZN27Op_RGB24_32_to_YCbCr444_GBR18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN27Op_RGB24_32_to_YCbCr444_GBR22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN27Op_RGB24_32_to_YCbCr444_GBRD0Ev +_ZN27Op_RRGGBBaa_swap_endianness18convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN27Op_RRGGBBaa_swap_endianness22state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN27Op_RRGGBBaa_swap_endiannessD0Ev +_ZN27Op_RRGGBBxx_HDR_to_YCbCr42018convert_colorspaceERKNSt3__110shared_ptrIKN4heif14HeifPixelImageEEERKNS2_10ColorStateERKNS2_22ColorConversionOptionsE +_ZN27Op_RRGGBBxx_HDR_to_YCbCr42022state_after_conversionERKN4heif10ColorStateES3_RKNS0_22ColorConversionOptionsE +_ZN27Op_RRGGBBxx_HDR_to_YCbCr420D0Ev +_ZN4NodeD2Ev +_ZN4heif10ColorStateD2Ev +_ZN4heif10SEIMessageD2Ev +_ZN4heif11HeifContext12encode_imageERKNSt3__110shared_ptrINS_14HeifPixelImageEEEP12heif_encoderPK21heif_encoding_options22heif_image_input_classRNS2_INS0_5ImageEEE +_ZN4heif11HeifContext14read_from_fileEPKc +_ZN4heif11HeifContext16add_XMP_metadataERKNSt3__110shared_ptrINS0_5ImageEEEPKvi +_ZN4heif11HeifContext16assign_thumbnailERKNSt3__110shared_ptrINS0_5ImageEEES6_ +_ZN4heif11HeifContext16encode_thumbnailERKNSt3__110shared_ptrINS_14HeifPixelImageEEEP12heif_encoderPK21heif_encoding_optionsiRNS2_INS0_5ImageEEE +_ZN4heif11HeifContext16read_from_memoryEPKvyb +_ZN4heif11HeifContext16register_decoderEPK19heif_decoder_plugin +_ZN4heif11HeifContext16set_primary_itemEj +_ZN4heif11HeifContext17add_exif_metadataERKNSt3__110shared_ptrINS0_5ImageEEEPKvi +_ZN4heif11HeifContext17set_primary_imageERKNSt3__110shared_ptrINS0_5ImageEEE +_ZN4heif11HeifContext19encode_image_as_av1ERKNSt3__110shared_ptrINS_14HeifPixelImageEEEP12heif_encoderPK21heif_encoding_options22heif_image_input_classRNS2_INS0_5ImageEEE +_ZN4heif11HeifContext19interpret_heif_fileEv +_ZN4heif11HeifContext19reset_to_empty_heifEv +_ZN4heif11HeifContext20add_generic_metadataERKNSt3__110shared_ptrINS0_5ImageEEEPKviPKcSA_ +_ZN4heif11HeifContext20encode_image_as_hevcERKNSt3__110shared_ptrINS_14HeifPixelImageEEEP12heif_encoderPK21heif_encoding_options22heif_image_input_classRNS2_INS0_5ImageEEE +_ZN4heif11HeifContext22remove_top_level_imageERKNSt3__110shared_ptrINS0_5ImageEEE +_ZN4heif11HeifContext4readERKNSt3__110shared_ptrINS_12StreamReaderEEE +_ZN4heif11HeifContext5Image17set_color_profileERKNSt3__110shared_ptrIKNS_13color_profileEEE +_ZN4heif11HeifContext5Image25set_preencoded_hevc_imageERKNSt3__16vectorIhNS2_9allocatorIhEEEE +_ZN4heif11HeifContext5Image5clearEv +_ZN4heif11HeifContext5ImageC1EPS0_j +_ZN4heif11HeifContext5ImageC2EPS0_j +_ZN4heif11HeifContext5ImageD1Ev +_ZN4heif11HeifContext5ImageD2Ev +_ZN4heif11HeifContext5writeERNS_12StreamWriterE +_ZN4heif11HeifContextC1Ev +_ZN4heif11HeifContextC2Ev +_ZN4heif11HeifContextD1Ev +_ZN4heif11HeifContextD2Ev +_ZN4heif11get_decoderE23heif_compression_format +_ZN4heif11get_encoderE23heif_compression_format +_ZN4heif12StreamReaderD2Ev +_ZN4heif12StreamWriter4skipEi +_ZN4heif12StreamWriter5writeERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE +_ZN4heif12StreamWriter5writeERKNSt3__16vectorIhNS1_9allocatorIhEEEE +_ZN4heif12StreamWriter5writeERKS0_ +_ZN4heif12StreamWriter5writeEiy +_ZN4heif12StreamWriter6insertEi +_ZN4heif12StreamWriter6write8Eh +_ZN4heif12StreamWriter7write16Et +_ZN4heif12StreamWriter7write32Ej +_ZN4heif12StreamWriter7write64Ey +_ZN4heif13color_profileD2Ev +_ZN4heif14BitstreamRange11read_stringEv +_ZN4heif14BitstreamRange12prepare_readEx +_ZN4heif14BitstreamRange18skip_to_end_of_boxEv +_ZN4heif14BitstreamRange21set_eof_while_readingEv +_ZN4heif14BitstreamRange24wait_for_available_bytesEx +_ZN4heif14BitstreamRange29wait_until_range_is_availableEv +_ZN4heif14BitstreamRange31skip_without_advancing_file_posEx +_ZN4heif14BitstreamRange4readEPhx +_ZN4heif14BitstreamRange5read8Ev +_ZN4heif14BitstreamRange6read16Ev +_ZN4heif14BitstreamRange6read32Ev +_ZN4heif14BitstreamRangeC1ENSt3__110shared_ptrINS_12StreamReaderEEEyPS0_ +_ZN4heif14BitstreamRangeC2ENSt3__110shared_ptrINS_12StreamReaderEEEyPS0_ +_ZN4heif14BitstreamRangeD2Ev +_ZN4heif14HeifPixelImage10ImagePlane5allocEiii11heif_chroma +_ZN4heif14HeifPixelImage10rotate_ccwEiRNSt3__110shared_ptrIS0_EE +_ZN4heif14HeifPixelImage14fill_RGB_16bitEtttt +_ZN4heif14HeifPixelImage14fill_new_planeE12heif_channeltiii +_ZN4heif14HeifPixelImage14mirror_inplaceEb +_ZN4heif14HeifPixelImage19copy_new_plane_fromERKNSt3__110shared_ptrIKS0_EE12heif_channelS7_ +_ZN4heif14HeifPixelImage21set_color_profile_iccERKNSt3__110shared_ptrIKNS_17color_profile_rawEEE +_ZN4heif14HeifPixelImage22extend_padding_to_sizeEii +_ZN4heif14HeifPixelImage22set_color_profile_nclxERKNSt3__110shared_ptrIKNS_18color_profile_nclxEEE +_ZN4heif14HeifPixelImage28transfer_plane_from_image_asERKNSt3__110shared_ptrIS0_EE12heif_channelS6_ +_ZN4heif14HeifPixelImage6createEii15heif_colorspace11heif_chroma +_ZN4heif14HeifPixelImage7overlayERNSt3__110shared_ptrIS0_EEii +_ZN4heif14HeifPixelImage9add_planeE12heif_channeliii +_ZN4heif14HeifPixelImage9get_planeE12heif_channelPi +_ZN4heif14HeifPixelImageD1Ev +_ZN4heif14HeifPixelImageD2Ev +_ZN4heif16register_decoderEPK19heif_decoder_plugin +_ZN4heif16register_encoderEPK19heif_encoder_plugin +_ZN4heif17StreamReader_CApi18wait_for_file_sizeEx +_ZN4heif17StreamReader_CApi4readEPvy +_ZN4heif17StreamReader_CApi4seekEx +_ZN4heif17StreamReader_CApiC1EPK11heif_readerPv +_ZN4heif17StreamReader_CApiC2EPK11heif_readerPv +_ZN4heif17StreamReader_CApiD0Ev +_ZN4heif17color_profile_rawD0Ev +_ZN4heif17color_profile_rawD2Ev +_ZN4heif17s_decoder_pluginsE DATA +_ZN4heif18ColorStateWithCostD2Ev +_ZN4heif18color_profile_nclx11set_defaultEv +_ZN4heif18color_profile_nclx13set_undefinedEv +_ZN4heif18color_profile_nclx23free_nclx_color_profileEP23heif_color_profile_nclx +_ZN4heif18color_profile_nclx24alloc_nclx_color_profileEv +_ZN4heif18color_profile_nclx32set_from_heif_color_profile_nclxEPK23heif_color_profile_nclx +_ZN4heif18color_profile_nclx5parseERNS_14BitstreamRangeE +_ZN4heif18color_profile_nclxD0Ev +_ZN4heif18convert_colorspaceERKNSt3__110shared_ptrINS_14HeifPixelImageEEE15heif_colorspace11heif_chromaRKNS1_IKNS_18color_profile_nclxEEEi +_ZN4heif19StreamReader_memory18wait_for_file_sizeEx +_ZN4heif19StreamReader_memory4readEPvy +_ZN4heif19StreamReader_memory4seekEx +_ZN4heif19StreamReader_memoryC1EPKhxb +_ZN4heif19StreamReader_memoryC2EPKhxb +_ZN4heif19StreamReader_memoryD0Ev +_ZN4heif19StreamReader_memoryD1Ev +_ZN4heif19StreamReader_memoryD2Ev +_ZN4heif19get_subsampled_sizeEii12heif_channel11heif_chromaPiS2_ +_ZN4heif20StreamReader_istream18wait_for_file_sizeEx +_ZN4heif20StreamReader_istream4readEPvy +_ZN4heif20StreamReader_istream4seekEx +_ZN4heif20StreamReader_istreamC1EONSt3__110unique_ptrINS1_13basic_istreamIcNS1_11char_traitsIcEEEENS1_14default_deleteIS6_EEEE +_ZN4heif20StreamReader_istreamC2EONSt3__110unique_ptrINS1_13basic_istreamIcNS1_11char_traitsIcEEEENS1_14default_deleteIS6_EEEE +_ZN4heif20StreamReader_istreamD0Ev +_ZN4heif20StreamReader_istreamD2Ev +_ZN4heif20chroma_h_subsamplingE11heif_chroma +_ZN4heif20chroma_v_subsamplingE11heif_chroma +_ZN4heif20get_colour_primariesEt +_ZN4heif20is_chroma_with_alphaE11heif_chroma +_ZN4heif21s_encoder_descriptorsE DATA +_ZN4heif23ColorConversionPipeline13convert_imageERKNSt3__110shared_ptrINS_14HeifPixelImageEEE +_ZN4heif23ColorConversionPipeline18construct_pipelineERKNS_10ColorStateES3_RKNS_22ColorConversionOptionsE +_ZN4heif23ColorConversionPipelineD2Ev +_ZN4heif23chroma_from_subsamplingEii +_ZN4heif23fill_av1C_configurationEPNS_8Box_av1C13configurationERKNSt3__110shared_ptrINS_14HeifPixelImageEEE +_ZN4heif24ColorConversionOperationD2Ev +_ZN4heif24register_default_pluginsEv +_ZN4heif25RGB_to_YCbCr_coefficients8defaultsEv +_ZN4heif25YCbCr_to_RGB_coefficients8defaultsEv +_ZN4heif28decode_hevc_aux_sei_messagesERKNSt3__16vectorIhNS0_9allocatorIhEEEERNS1_INS0_10shared_ptrINS_10SEIMessageEEENS2_IS9_EEEE +_ZN4heif29get_RGB_to_YCbCr_coefficientsEtt +_ZN4heif29get_YCbCr_to_RGB_coefficientsEtt +_ZN4heif32get_filtered_encoder_descriptorsE23heif_compression_formatPKc +_ZN4heif32num_interleaved_pixels_per_planeE11heif_chroma +_ZN4heif32parse_sps_for_hvcC_configurationEPKhyPNS_8Box_hvcC13configurationEPiS5_ +_ZN4heif34is_integer_multiple_of_chroma_sizeEii11heif_chroma +_ZN4heif35fill_av1C_configuration_from_streamEPNS_8Box_av1C13configurationEPKhi +_ZN4heif36SEIMessage_depth_representation_infoD0Ev +_ZN4heif3Box13read_childrenERNS_14BitstreamRangeEi +_ZN4heif3Box18derive_box_versionEv +_ZN4heif3Box28derive_box_version_recursiveEv +_ZN4heif3Box4readERNS_14BitstreamRangeEPNSt3__110shared_ptrIS0_EE +_ZN4heif3Box5parseERNS_14BitstreamRangeE +_ZN4heif3BoxD0Ev +_ZN4heif3BoxD2Ev +_ZN4heif5Error16get_error_stringE15heif_error_code +_ZN4heif5Error16get_error_stringE18heif_suberror_code +_ZN4heif5Error2OkE DATA +_ZN4heif5Error8kSuccessE DATA +_ZN4heif5ErrorC1E15heif_error_code18heif_suberror_codeRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE +_ZN4heif5ErrorC1Ev +_ZN4heif5ErrorC2E15heif_error_code18heif_suberror_codeRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE +_ZN4heif5ErrorC2Ev +_ZN4heif7Box_url5parseERNS_14BitstreamRangeE +_ZN4heif7Box_urlD0Ev +_ZN4heif7Box_urlD2Ev +_ZN4heif8Box_auxC5parseERNS_14BitstreamRangeE +_ZN4heif8Box_auxCD0Ev +_ZN4heif8Box_auxCD2Ev +_ZN4heif8Box_av1C5parseERNS_14BitstreamRangeE +_ZN4heif8Box_av1CD0Ev +_ZN4heif8Box_av1CD2Ev +_ZN4heif8Box_clap3setEjjjj +_ZN4heif8Box_clap5parseERNS_14BitstreamRangeE +_ZN4heif8Box_clapD0Ev +_ZN4heif8Box_colr5parseERNS_14BitstreamRangeE +_ZN4heif8Box_colrD0Ev +_ZN4heif8Box_colrD2Ev +_ZN4heif8Box_dinf5parseERNS_14BitstreamRangeE +_ZN4heif8Box_dinfD0Ev +_ZN4heif8Box_dref5parseERNS_14BitstreamRangeE +_ZN4heif8Box_drefD0Ev +_ZN4heif8Box_ftyp20add_compatible_brandEj +_ZN4heif8Box_ftyp5parseERNS_14BitstreamRangeE +_ZN4heif8Box_ftypD0Ev +_ZN4heif8Box_ftypD2Ev +_ZN4heif8Box_grpl11EntityGroupC2ERKS1_ +_ZN4heif8Box_grpl11EntityGroupD2Ev +_ZN4heif8Box_grpl5parseERNS_14BitstreamRangeE +_ZN4heif8Box_grplD0Ev +_ZN4heif8Box_grplD2Ev +_ZN4heif8Box_hdlr5parseERNS_14BitstreamRangeE +_ZN4heif8Box_hdlrD0Ev +_ZN4heif8Box_hdlrD2Ev +_ZN4heif8Box_hvcC15append_nal_dataEPKhy +_ZN4heif8Box_hvcC15append_nal_dataERKNSt3__16vectorIhNS1_9allocatorIhEEEE +_ZN4heif8Box_hvcC5parseERNS_14BitstreamRangeE +_ZN4heif8Box_hvcC8NalArrayD2Ev +_ZN4heif8Box_hvcCD0Ev +_ZN4heif8Box_hvcCD2Ev +_ZN4heif8Box_idat5parseERNS_14BitstreamRangeE +_ZN4heif8Box_idatD0Ev +_ZN4heif8Box_idatD2Ev +_ZN4heif8Box_iinf18derive_box_versionEv +_ZN4heif8Box_iinf5parseERNS_14BitstreamRangeE +_ZN4heif8Box_iinfD0Ev +_ZN4heif8Box_iloc11append_dataEjRKNSt3__16vectorIhNS1_9allocatorIhEEEEh +_ZN4heif8Box_iloc18derive_box_versionEv +_ZN4heif8Box_iloc21write_mdat_after_ilocERNS_12StreamWriterE +_ZN4heif8Box_iloc4ItemD2Ev +_ZN4heif8Box_iloc5parseERNS_14BitstreamRangeE +_ZN4heif8Box_ilocD0Ev +_ZN4heif8Box_ilocD2Ev +_ZN4heif8Box_imir5parseERNS_14BitstreamRangeE +_ZN4heif8Box_imirD0Ev +_ZN4heif8Box_infe15set_hidden_itemEb +_ZN4heif8Box_infe18derive_box_versionEv +_ZN4heif8Box_infe5parseERNS_14BitstreamRangeE +_ZN4heif8Box_infeD0Ev +_ZN4heif8Box_infeD2Ev +_ZN4heif8Box_ipco5parseERNS_14BitstreamRangeE +_ZN4heif8Box_ipco8PropertyD2Ev +_ZN4heif8Box_ipcoD0Ev +_ZN4heif8Box_ipma18derive_box_versionEv +_ZN4heif8Box_ipma24add_property_for_item_IDEjNS0_19PropertyAssociationE +_ZN4heif8Box_ipma5parseERNS_14BitstreamRangeE +_ZN4heif8Box_ipmaD0Ev +_ZN4heif8Box_ipmaD2Ev +_ZN4heif8Box_iprp5parseERNS_14BitstreamRangeE +_ZN4heif8Box_iprpD0Ev +_ZN4heif8Box_iref13add_referenceEjjRKNSt3__16vectorIjNS1_9allocatorIjEEEE +_ZN4heif8Box_iref18derive_box_versionEv +_ZN4heif8Box_iref5parseERNS_14BitstreamRangeE +_ZN4heif8Box_iref9ReferenceC2ERKS1_ +_ZN4heif8Box_iref9ReferenceD2Ev +_ZN4heif8Box_irefD0Ev +_ZN4heif8Box_irefD2Ev +_ZN4heif8Box_irot5parseERNS_14BitstreamRangeE +_ZN4heif8Box_irotD0Ev +_ZN4heif8Box_ispe5parseERNS_14BitstreamRangeE +_ZN4heif8Box_ispeD0Ev +_ZN4heif8Box_meta5parseERNS_14BitstreamRangeE +_ZN4heif8Box_metaD0Ev +_ZN4heif8Box_pitm18derive_box_versionEv +_ZN4heif8Box_pitm5parseERNS_14BitstreamRangeE +_ZN4heif8Box_pitmD0Ev +_ZN4heif8Box_pixi5parseERNS_14BitstreamRangeE +_ZN4heif8Box_pixiD0Ev +_ZN4heif8Box_pixiD2Ev +_ZN4heif8FractionC1Eii +_ZN4heif8FractionC1Ejj +_ZN4heif8FractionC2Eii +_ZN4heif8FractionC2Ejj +_ZN4heif8HeifFile13add_new_imageEPKc +_ZN4heif8HeifFile14new_empty_fileEv +_ZN4heif8HeifFile14read_from_fileEPKc +_ZN4heif8HeifFile15parse_heif_fileERNS_14BitstreamRangeE +_ZN4heif8HeifFile16add_new_infe_boxEPKc +_ZN4heif8HeifFile16append_iloc_dataEjRKNSt3__16vectorIhNS1_9allocatorIhEEEEh +_ZN4heif8HeifFile16read_from_memoryEPKvyb +_ZN4heif8HeifFile17add_av1C_propertyEj +_ZN4heif8HeifFile17add_clap_propertyEjjjjj +_ZN4heif8HeifFile17add_hvcC_propertyEj +_ZN4heif8HeifFile17add_ispe_propertyEjjj +_ZN4heif8HeifFile17add_pixi_propertyEjhhh +_ZN4heif8HeifFile17set_auxC_propertyEjRKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE +_ZN4heif8HeifFile17set_color_profileEjRKNSt3__110shared_ptrIKNS_13color_profileEEE +_ZN4heif8HeifFile18add_iref_referenceEjjRKNSt3__16vectorIjNS1_9allocatorIjEEEE +_ZN4heif8HeifFile19set_primary_item_idEj +_ZN4heif8HeifFile20append_hvcC_nal_dataEjPKhy +_ZN4heif8HeifFile20append_hvcC_nal_dataEjRKNSt3__16vectorIhNS1_9allocatorIhEEEE +_ZN4heif8HeifFile21set_hdlr_library_infoERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE +_ZN4heif8HeifFile22set_av1C_configurationEjRKNS_8Box_av1C13configurationE +_ZN4heif8HeifFile22set_hvcC_configurationEjRKNS_8Box_hvcC13configurationE +_ZN4heif8HeifFile26convert_utf8_path_to_utf16ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE +_ZN4heif8HeifFile32append_iloc_data_with_4byte_sizeEjPKhy +_ZN4heif8HeifFile4readERKNSt3__110shared_ptrINS_12StreamReaderEEE +_ZN4heif8HeifFile5writeERNS_12StreamWriterE +_ZN4heif8HeifFile9set_brandE23heif_compression_formatb +_ZN4heif8HeifFileC1Ev +_ZN4heif8HeifFileC2Ev +_ZN4heif8HeifFileD1Ev +_ZN4heif8HeifFileD2Ev +_ZN4heif9BitReader10skip_bytesEi +_ZN4heif9BitReader13get_bits_fastEi +_ZN4heif9BitReader14skip_bits_fastEi +_ZN4heif9BitReader21skip_to_byte_boundaryEv +_ZN4heif9BitReader6refillEv +_ZN4heif9BitReader8get_bitsEi +_ZN4heif9BitReader8get_svlcEPi +_ZN4heif9BitReader8get_uvlcEPi +_ZN4heif9BitReader9peek_bitsEi +_ZN4heif9BitReader9skip_bitsEi +_ZN4heif9BitReaderC1EPKhi +_ZN4heif9BitReaderC2EPKhi +_ZN4heif9BoxHeader21parse_full_box_headerERNS_14BitstreamRangeE +_ZN4heif9BoxHeader5parseERNS_14BitstreamRangeE +_ZN4heif9BoxHeaderC1Ev +_ZN4heif9BoxHeaderC2Ev +_ZN4heif9BoxHeaderD0Ev +_ZN4heif9BoxHeaderD2Ev +_ZN4heif9get_Kr_KbEtt +_ZN4heif9primariesC1Effffffff +_ZN4heif9primariesC2Effffffff +_ZN9ImageGrid5parseERKNSt3__16vectorIhNS0_9allocatorIhEEEE +_ZNK12ImageOverlay10get_offsetEyPiS0_ +_ZNK12ImageOverlay20get_background_colorEPt +_ZNK12ImageOverlay4dumpEv +_ZNK4heif10ColorStateeqERKS0_ +_ZNK4heif11HeifContext11get_decoderE23heif_compression_format +_ZNK4heif11HeifContext16debug_dump_boxesEv +_ZNK4heif11HeifContext17decode_image_userEjRNSt3__110shared_ptrINS_14HeifPixelImageEEE15heif_colorspace11heif_chromaPK21heif_decoding_options +_ZNK4heif11HeifContext19decode_image_planarEjRNSt3__110shared_ptrINS_14HeifPixelImageEEE15heif_colorspacePK21heif_decoding_optionsb +_ZNK4heif11HeifContext20decode_derived_imageEjRNSt3__110shared_ptrINS_14HeifPixelImageEEE +_ZNK4heif11HeifContext20decode_overlay_imageEjRNSt3__110shared_ptrINS_14HeifPixelImageEEERKNS1_6vectorIhNS1_9allocatorIhEEEE +_ZNK4heif11HeifContext22decode_full_grid_imageEjRNSt3__110shared_ptrINS_14HeifPixelImageEEERKNS1_6vectorIhNS1_9allocatorIhEEEE +_ZNK4heif11HeifContext27decode_and_paste_tile_imageEjRKNSt3__110shared_ptrINS_14HeifPixelImageEEEii +_ZNK4heif11HeifContext33get_id_of_non_virtual_child_imageEjRj +_ZNK4heif11HeifContext5Image14get_aux_imagesEi +_ZNK4heif11HeifContext5Image23get_luma_bits_per_pixelEv +_ZNK4heif11HeifContext5Image25get_chroma_bits_per_pixelEv +_ZNK4heif11HeifContext8is_imageEj +_ZNK4heif14BitstreamRange9get_errorEv +_ZNK4heif14HeifPixelImage10debug_dumpEv +_ZNK4heif14HeifPixelImage10get_heightE12heif_channel +_ZNK4heif14HeifPixelImage11has_channelE12heif_channel +_ZNK4heif14HeifPixelImage15get_channel_setEv +_ZNK4heif14HeifPixelImage18get_bits_per_pixelE12heif_channel +_ZNK4heif14HeifPixelImage22scale_nearest_neighborERNSt3__110shared_ptrIS0_EEii +_ZNK4heif14HeifPixelImage26get_storage_bits_per_pixelE12heif_channel +_ZNK4heif14HeifPixelImage4cropEiiiiRNSt3__110shared_ptrIS0_EE +_ZNK4heif14HeifPixelImage9get_planeE12heif_channelPi +_ZNK4heif14HeifPixelImage9get_widthE12heif_channel +_ZNK4heif14HeifPixelImage9has_alphaEv +_ZNK4heif17StreamReader_CApi12get_positionEv +_ZNK4heif17color_profile_raw4dumpERNS_6IndentE +_ZNK4heif17color_profile_raw5writeERNS_12StreamWriterE +_ZNK4heif17color_profile_raw8get_typeEv +_ZNK4heif18color_profile_nclx22get_nclx_color_profileEPP23heif_color_profile_nclx +_ZNK4heif18color_profile_nclx4dumpERNS_6IndentE +_ZNK4heif18color_profile_nclx5writeERNS_12StreamWriterE +_ZNK4heif18color_profile_nclx8get_typeEv +_ZNK4heif19StreamReader_memory12get_positionEv +_ZNK4heif20StreamReader_istream12get_positionEv +_ZNK4heif23ColorConversionPipeline19debug_dump_pipelineEv +_ZNK4heif3Box13dump_childrenERNS_6IndentE +_ZNK4heif3Box13get_child_boxEj +_ZNK4heif3Box14write_childrenERNS_12StreamWriterE +_ZNK4heif3Box15get_child_boxesEj +_ZNK4heif3Box4dumpERNS_6IndentE +_ZNK4heif3Box5writeERNS_12StreamWriterE +_ZNK4heif5Error12error_structEPNS_11ErrorBufferE +_ZNK4heif7Box_url4dumpERNS_6IndentE +_ZNK4heif8Box_auxC4dumpERNS_6IndentE +_ZNK4heif8Box_auxC5writeERNS_12StreamWriterE +_ZNK4heif8Box_av1C4dumpERNS_6IndentE +_ZNK4heif8Box_av1C5writeERNS_12StreamWriterE +_ZNK4heif8Box_clap11top_roundedEi +_ZNK4heif8Box_clap12left_roundedEi +_ZNK4heif8Box_clap13right_roundedEi +_ZNK4heif8Box_clap14bottom_roundedEi +_ZNK4heif8Box_clap17get_width_roundedEv +_ZNK4heif8Box_clap18get_height_roundedEv +_ZNK4heif8Box_clap4dumpERNS_6IndentE +_ZNK4heif8Box_clap5writeERNS_12StreamWriterE +_ZNK4heif8Box_colr4dumpERNS_6IndentE +_ZNK4heif8Box_colr5writeERNS_12StreamWriterE +_ZNK4heif8Box_dinf4dumpERNS_6IndentE +_ZNK4heif8Box_dref4dumpERNS_6IndentE +_ZNK4heif8Box_ftyp20has_compatible_brandEj +_ZNK4heif8Box_ftyp4dumpERNS_6IndentE +_ZNK4heif8Box_ftyp5writeERNS_12StreamWriterE +_ZNK4heif8Box_grpl4dumpERNS_6IndentE +_ZNK4heif8Box_hdlr4dumpERNS_6IndentE +_ZNK4heif8Box_hdlr5writeERNS_12StreamWriterE +_ZNK4heif8Box_hvcC11get_headersEPNSt3__16vectorIhNS1_9allocatorIhEEEE +_ZNK4heif8Box_hvcC4dumpERNS_6IndentE +_ZNK4heif8Box_hvcC5writeERNS_12StreamWriterE +_ZNK4heif8Box_idat4dumpERNS_6IndentE +_ZNK4heif8Box_idat5writeERNS_12StreamWriterE +_ZNK4heif8Box_idat9read_dataERKNSt3__110shared_ptrINS_12StreamReaderEEEyyRNS1_6vectorIhNS1_9allocatorIhEEEE +_ZNK4heif8Box_iinf4dumpERNS_6IndentE +_ZNK4heif8Box_iinf5writeERNS_12StreamWriterE +_ZNK4heif8Box_iloc17patch_iloc_headerERNS_12StreamWriterE +_ZNK4heif8Box_iloc4dumpERNS_6IndentE +_ZNK4heif8Box_iloc5writeERNS_12StreamWriterE +_ZNK4heif8Box_iloc9read_dataERKNS0_4ItemERKNSt3__110shared_ptrINS_12StreamReaderEEERKNS5_INS_8Box_idatEEEPNS4_6vectorIhNS4_9allocatorIhEEEE +_ZNK4heif8Box_imir4dumpERNS_6IndentE +_ZNK4heif8Box_infe4dumpERNS_6IndentE +_ZNK4heif8Box_infe5writeERNS_12StreamWriterE +_ZNK4heif8Box_ipco24get_property_for_item_IDEjRKNSt3__110shared_ptrINS_8Box_ipmaEEEj +_ZNK4heif8Box_ipco26get_properties_for_item_IDEjRKNSt3__110shared_ptrINS_8Box_ipmaEEERNS1_6vectorINS0_8PropertyENS1_9allocatorIS8_EEEE +_ZNK4heif8Box_ipco4dumpERNS_6IndentE +_ZNK4heif8Box_ipma26get_properties_for_item_IDEj +_ZNK4heif8Box_ipma4dumpERNS_6IndentE +_ZNK4heif8Box_ipma5writeERNS_12StreamWriterE +_ZNK4heif8Box_iprp4dumpERNS_6IndentE +_ZNK4heif8Box_iref14get_referencesEjj +_ZNK4heif8Box_iref14has_referencesEj +_ZNK4heif8Box_iref19get_references_fromEj +_ZNK4heif8Box_iref4dumpERNS_6IndentE +_ZNK4heif8Box_iref5writeERNS_12StreamWriterE +_ZNK4heif8Box_irot4dumpERNS_6IndentE +_ZNK4heif8Box_ispe4dumpERNS_6IndentE +_ZNK4heif8Box_ispe5writeERNS_12StreamWriterE +_ZNK4heif8Box_meta4dumpERNS_6IndentE +_ZNK4heif8Box_pitm4dumpERNS_6IndentE +_ZNK4heif8Box_pitm5writeERNS_12StreamWriterE +_ZNK4heif8Box_pixi4dumpERNS_6IndentE +_ZNK4heif8Box_pixi5writeERNS_12StreamWriterE +_ZNK4heif8Fraction10round_downEv +_ZNK4heif8Fraction5roundEv +_ZNK4heif8Fraction8is_validEv +_ZNK4heif8Fraction8round_upEv +_ZNK4heif8FractiondvEi +_ZNK4heif8FractionmiERKS0_ +_ZNK4heif8FractionmiEi +_ZNK4heif8FractionplERKS0_ +_ZNK4heif8FractionplEi +_ZNK4heif8HeifFile12get_item_IDsEv +_ZNK4heif8HeifFile12image_existsEj +_ZNK4heif8HeifFile13get_item_typeEj +_ZNK4heif8HeifFile14get_propertiesEjRNSt3__16vectorINS_8Box_ipco8PropertyENS1_9allocatorIS4_EEEE +_ZNK4heif8HeifFile16debug_dump_boxesEv +_ZNK4heif8HeifFile16get_content_typeEj +_ZNK4heif8HeifFile18get_unused_item_idEv +_ZNK4heif8HeifFile25get_compressed_image_dataEjPNSt3__16vectorIhNS1_9allocatorIhEEEE +_ZNK4heif8HeifFile35get_image_chroma_from_configurationEj +_ZNK4heif8HeifFile42get_luma_bits_per_pixel_from_configurationEj +_ZNK4heif8HeifFile44get_chroma_bits_per_pixel_from_configurationEj +_ZNK4heif8HeifFile8get_infeEj +_ZNK4heif9BoxHeader14prepend_headerERNS_12StreamWriterEy +_ZNK4heif9BoxHeader15get_type_stringEv +_ZNK4heif9BoxHeader24reserve_box_header_spaceERNS_12StreamWriterE +_ZNK4heif9BoxHeader4dumpERNS_6IndentE +_ZNK4heif9BoxHeader8get_typeEv +_ZNK9ImageGrid4dumpEv +_ZNK9ImageGrid5writeEv +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE20__throw_length_errorB6v15003Ev +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE20__throw_out_of_rangeB6v15003Ev +_ZNKSt3__129_AllocatorDestroyRangeReverseINS_9allocatorIN4heif5ErrorEEEPS3_EclB6v15003Ev +_ZNKSt3__129_AllocatorDestroyRangeReverseINS_9allocatorIN4heif8Box_iloc4ItemEEEPS4_EclB6v15003Ev +_ZNKSt3__129_AllocatorDestroyRangeReverseINS_9allocatorIN4heif8Box_iloc6ExtentEEEPS4_EclB6v15003Ev +_ZNKSt3__129_AllocatorDestroyRangeReverseINS_9allocatorINS_6vectorIhNS1_IhEEEEEEPS4_EclB6v15003Ev +_ZNKSt3__16vectorI13custom_optionNS_9allocatorIS1_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorI4NodeNS_9allocatorIS1_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN12ImageOverlay6OffsetENS_9allocatorIS2_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif18ColorStateWithCostENS_9allocatorIS2_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif5ErrorENS_9allocatorIS2_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_grpl11EntityGroupENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_hvcC8NalArrayENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_iloc4ItemENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_iloc6ExtentENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_ipco8PropertyENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_ipma19PropertyAssociationENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_ipma5EntryENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIN4heif8Box_iref9ReferenceENS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorINS0_IhNS_9allocatorIhEEEENS1_IS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorINS_10shared_ptrIN4heif10SEIMessageEEENS_9allocatorIS4_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorINS_10shared_ptrIN4heif11HeifContext5ImageEEENS_9allocatorIS5_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorINS_10shared_ptrIN4heif13ImageMetadataEEENS_9allocatorIS4_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorINS_10shared_ptrIN4heif24ColorConversionOperationEEENS_9allocatorIS4_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorINS_10shared_ptrIN4heif3BoxEEENS_9allocatorIS4_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIPK23heif_encoder_descriptorNS_9allocatorIS3_EEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIbNS_9allocatorIbEEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIhNS_9allocatorIhEEE20__throw_length_errorB6v15003Ev +_ZNKSt3__16vectorIjNS_9allocatorIjEEE20__throw_length_errorB6v15003Ev +_ZNSt12length_errorC2B6v15003EPKc +_ZNSt12out_of_rangeC2B6v15003EPKc +_ZNSt3__110shared_ptrI15Op_RGB_to_YCbCrIhEED2B6v15003Ev +_ZNSt3__110shared_ptrI15Op_RGB_to_YCbCrItEED2B6v15003Ev +_ZNSt3__110shared_ptrI15Op_YCbCr_to_RGBIhEED2B6v15003Ev +_ZNSt3__110shared_ptrI15Op_YCbCr_to_RGBItEED2B6v15003Ev +_ZNSt3__110shared_ptrI16Op_to_hdr_planesED2B6v15003Ev +_ZNSt3__110shared_ptrI16Op_to_sdr_planesED2B6v15003Ev +_ZNSt3__110shared_ptrI18Op_RGB_to_RGB24_32ED2B6v15003Ev +_ZNSt3__110shared_ptrI19Op_drop_alpha_planeED2B6v15003Ev +_ZNSt3__110shared_ptrI19Op_mono_to_RGB24_32ED2B6v15003Ev +_ZNSt3__110shared_ptrI19Op_mono_to_YCbCr420ED2B6v15003Ev +_ZNSt3__110shared_ptrI20Op_RGB24_32_to_YCbCrED2B6v15003Ev +_ZNSt3__110shared_ptrI20Op_YCbCr420_to_RGB24ED2B6v15003Ev +_ZNSt3__110shared_ptrI20Op_YCbCr420_to_RGB32ED2B6v15003Ev +_ZNSt3__110shared_ptrI21Op_RGB_to_RRGGBBaa_BEED2B6v15003Ev +_ZNSt3__110shared_ptrI23Op_YCbCr420_to_RRGGBBaaED2B6v15003Ev +_ZNSt3__110shared_ptrI25Op_RGB_HDR_to_RRGGBBaa_BEED2B6v15003Ev +_ZNSt3__110shared_ptrI25Op_RRGGBBaa_BE_to_RGB_HDRED2B6v15003Ev +_ZNSt3__110shared_ptrI27Op_RGB24_32_to_YCbCr444_GBRED2B6v15003Ev +_ZNSt3__110shared_ptrI27Op_RRGGBBaa_swap_endiannessED2B6v15003Ev +_ZNSt3__110shared_ptrI27Op_RRGGBBxx_HDR_to_YCbCr420ED2B6v15003Ev +_ZNSt3__110shared_ptrIKN4heif13color_profileEED2B6v15003Ev +_ZNSt3__110shared_ptrIKN4heif14HeifPixelImageEED2B6v15003Ev +_ZNSt3__110shared_ptrIKN4heif17color_profile_rawEED2B6v15003Ev +_ZNSt3__110shared_ptrIKN4heif18color_profile_nclxEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif10SEIMessageEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif11HeifContext5ImageEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif12StreamReaderEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif13ImageMetadataEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif14HeifPixelImageEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif14HeifPixelImageEEaSB6v15003EOS3_ +_ZNSt3__110shared_ptrIN4heif17StreamReader_CApiEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif18color_profile_nclxEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif19StreamReader_memoryEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif20StreamReader_istreamEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif24ColorConversionOperationEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif36SEIMessage_depth_representation_infoEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif3BoxEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003EOS3_ +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_7Box_urlEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_auxCEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_av1CEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_clapEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_colrEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_dinfEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_drefEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_ftypEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_grplEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_hdlrEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_hvcCEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_idatEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_iinfEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_ilocEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_imirEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_infeEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_ipcoEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_ipmaEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_iprpEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_irefEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_irotEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_ispeEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_metaEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_pitmEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif3BoxEEaSB6v15003INS1_8Box_pixiEvEERS3_ONS0_IT_EE +_ZNSt3__110shared_ptrIN4heif7Box_urlEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_auxCEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_av1CEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_clapEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_colrEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_dinfEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_drefEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_ftypEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_grplEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_hdlrEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_hvcCEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_idatEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_idatEEaSB6v15003EOS3_ +_ZNSt3__110shared_ptrIN4heif8Box_iinfEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_iinfEEaSB6v15003EOS3_ +_ZNSt3__110shared_ptrIN4heif8Box_ilocEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_ilocEEaSB6v15003EOS3_ +_ZNSt3__110shared_ptrIN4heif8Box_imirEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_infeEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_ipcoEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_ipmaEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_iprpEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_irefEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_irefEEaSB6v15003EOS3_ +_ZNSt3__110shared_ptrIN4heif8Box_irotEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_ispeEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_metaEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_pitmEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8Box_pixiEED2B6v15003Ev +_ZNSt3__110shared_ptrIN4heif8HeifFileEED2B6v15003Ev +_ZNSt3__110unique_ptrINS_15__thread_structENS_14default_deleteIS1_EEED2B6v15003Ev +_ZNSt3__110unique_ptrINS_5tupleIJNS0_INS_15__thread_structENS_14default_deleteIS2_EEEEMNS_19__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS7_11HeifContextEKFS8_jRKNS_10shared_ptrINS7_14HeifPixelImageEEEiiEJPKSA_jSD_iiEEEEEFvvEPSL_EEENS3_ISP_EEED2B6v15003Ev +_ZNSt3__111make_sharedB6v15003IN4heif8Box_clapEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EEDpOT0_ +_ZNSt3__112__async_funcIMN4heif11HeifContextEKFNS1_5ErrorEjRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS2_jS6_iiEED2Ev +_ZNSt3__112__deque_baseINS_6futureIN4heif5ErrorEEENS_9allocatorIS4_EEE5clearEv +_ZNSt3__112__deque_baseINS_6futureIN4heif5ErrorEEENS_9allocatorIS4_EEED2Ev +_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15003IDnEEPKc +_ZNSt3__113__assoc_stateIN4heif5ErrorEE16__on_zero_sharedEv +_ZNSt3__113__assoc_stateIN4heif5ErrorEE4moveEv +_ZNSt3__113__tree_removeIPNS_16__tree_node_baseIPvEEEEvT_S5_ +_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev +_ZNSt3__114__split_bufferI13custom_optionRNS_9allocatorIS1_EEED2Ev +_ZNSt3__114__split_bufferIN4heif8Box_grpl11EntityGroupERNS_9allocatorIS3_EEED2Ev +_ZNSt3__114__split_bufferIN4heif8Box_hvcC8NalArrayERNS_9allocatorIS3_EEED2Ev +_ZNSt3__114__split_bufferIN4heif8Box_iloc4ItemERNS_9allocatorIS3_EEED2Ev +_ZNSt3__114__split_bufferIN4heif8Box_iloc6ExtentERNS_9allocatorIS3_EEED2Ev +_ZNSt3__114__split_bufferIN4heif8Box_ipma5EntryERNS_9allocatorIS3_EEED2Ev +_ZNSt3__114__split_bufferIN4heif8Box_iref9ReferenceERNS_9allocatorIS3_EEED2Ev +_ZNSt3__114__split_bufferINS_6vectorIhNS_9allocatorIhEEEERNS2_IS4_EEED2Ev +_ZNSt3__114__split_bufferIPNS_6futureIN4heif5ErrorEEENS_9allocatorIS5_EEE10push_frontEOS5_ +_ZNSt3__114__split_bufferIPNS_6futureIN4heif5ErrorEEENS_9allocatorIS5_EEE9push_backEOS5_ +_ZNSt3__114__thread_proxyB6v15003INS_5tupleIJNS_10unique_ptrINS_15__thread_structENS_14default_deleteIS3_EEEEMNS_19__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS8_11HeifContextEKFS9_jRKNS_10shared_ptrINS8_14HeifPixelImageEEEiiEJPKSB_jSE_iiEEEEEFvvEPSM_EEEEEPvSR_ +_ZNSt3__115allocate_sharedB6v15003IN4heif3BoxENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif7Box_urlENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_auxCENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_av1CENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_colrENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_dinfENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_drefENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_ftypENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_grplENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_hdlrENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_hvcCENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_idatENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_iinfENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_ilocENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_imirENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_infeENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_ipcoENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_ipmaENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_iprpENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_irefENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_irotENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_ispeENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_metaENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_pitmENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__115allocate_sharedB6v15003IN4heif8Box_pixiENS_9allocatorIS2_EEJRNS1_9BoxHeaderEEvEENS_10shared_ptrIT_EERKT0_DpOT1_ +_ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ +_ZNSt3__116__throw_bad_castB6v15003Ev +_ZNSt3__119__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEE16__on_zero_sharedEv +_ZNSt3__119__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEE9__executeEv +_ZNSt3__119__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEED0Ev +_ZNSt3__119__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEED2Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrIhENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrIhENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrIhENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrIhENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrItENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrItENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrItENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrItENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBIhENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBIhENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBIhENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBIhENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBItENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBItENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBItENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBItENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI16Op_to_hdr_planesNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI16Op_to_hdr_planesNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI16Op_to_hdr_planesNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI16Op_to_hdr_planesNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI16Op_to_sdr_planesNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI16Op_to_sdr_planesNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI16Op_to_sdr_planesNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI16Op_to_sdr_planesNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI18Op_RGB_to_RGB24_32NS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI18Op_RGB_to_RGB24_32NS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI18Op_RGB_to_RGB24_32NS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI18Op_RGB_to_RGB24_32NS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI19Op_drop_alpha_planeNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI19Op_drop_alpha_planeNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI19Op_drop_alpha_planeNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI19Op_drop_alpha_planeNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_RGB24_32NS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_RGB24_32NS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_RGB24_32NS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_RGB24_32NS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_YCbCr420NS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_YCbCr420NS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_YCbCr420NS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI19Op_mono_to_YCbCr420NS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI20Op_RGB24_32_to_YCbCrNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI20Op_RGB24_32_to_YCbCrNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI20Op_RGB24_32_to_YCbCrNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI20Op_RGB24_32_to_YCbCrNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB24NS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB24NS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB24NS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB24NS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB32NS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB32NS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB32NS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB32NS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI21Op_RGB_to_RRGGBBaa_BENS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI21Op_RGB_to_RRGGBBaa_BENS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI21Op_RGB_to_RRGGBBaa_BENS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI21Op_RGB_to_RRGGBBaa_BENS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI23Op_YCbCr420_to_RRGGBBaaNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI23Op_YCbCr420_to_RRGGBBaaNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI23Op_YCbCr420_to_RRGGBBaaNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI23Op_YCbCr420_to_RRGGBBaaNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI25Op_RGB_HDR_to_RRGGBBaa_BENS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI25Op_RGB_HDR_to_RRGGBBaa_BENS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI25Op_RGB_HDR_to_RRGGBBaa_BENS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI25Op_RGB_HDR_to_RRGGBBaa_BENS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI25Op_RRGGBBaa_BE_to_RGB_HDRNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI25Op_RRGGBBaa_BE_to_RGB_HDRNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI25Op_RRGGBBaa_BE_to_RGB_HDRNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI25Op_RRGGBBaa_BE_to_RGB_HDRNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI27Op_RGB24_32_to_YCbCr444_GBRNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI27Op_RGB24_32_to_YCbCr444_GBRNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI27Op_RGB24_32_to_YCbCr444_GBRNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI27Op_RGB24_32_to_YCbCr444_GBRNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBaa_swap_endiannessNS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBaa_swap_endiannessNS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBaa_swap_endiannessNS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBaa_swap_endiannessNS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBxx_HDR_to_YCbCr420NS_9allocatorIS1_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBxx_HDR_to_YCbCr420NS_9allocatorIS1_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBxx_HDR_to_YCbCr420NS_9allocatorIS1_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceI27Op_RRGGBBxx_HDR_to_YCbCr420NS_9allocatorIS1_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContext5ImageENS_9allocatorIS3_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContext5ImageENS_9allocatorIS3_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContext5ImageENS_9allocatorIS3_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContext5ImageENS_9allocatorIS3_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContextENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContextENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContextENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif11HeifContextENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif13ImageMetadataENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif13ImageMetadataENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif13ImageMetadataENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif13ImageMetadataENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif14HeifPixelImageENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif14HeifPixelImageENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif14HeifPixelImageENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif14HeifPixelImageENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif17StreamReader_CApiENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif17StreamReader_CApiENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif17StreamReader_CApiENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif17StreamReader_CApiENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif17color_profile_rawENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif17color_profile_rawENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif17color_profile_rawENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif17color_profile_rawENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif18color_profile_nclxENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif18color_profile_nclxENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif18color_profile_nclxENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif18color_profile_nclxENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif19StreamReader_memoryENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif19StreamReader_memoryENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif19StreamReader_memoryENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif19StreamReader_memoryENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif20StreamReader_istreamENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif20StreamReader_istreamENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif20StreamReader_istreamENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif20StreamReader_istreamENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif36SEIMessage_depth_representation_infoENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif36SEIMessage_depth_representation_infoENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif36SEIMessage_depth_representation_infoENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif36SEIMessage_depth_representation_infoENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif3BoxENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif3BoxENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif3BoxENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif3BoxENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif7Box_urlENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif7Box_urlENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif7Box_urlENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif7Box_urlENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_auxCENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_auxCENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_auxCENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_auxCENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_av1CENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_av1CENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_av1CENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_av1CENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEEC2B6v15003IJRNS1_9BoxHeaderEEEES4_DpOT_ +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_colrENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_colrENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_colrENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_colrENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_dinfENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_dinfENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_dinfENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_dinfENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_drefENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_drefENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_drefENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_drefENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ftypENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ftypENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ftypENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ftypENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_grplENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_grplENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_grplENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_grplENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hdlrENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hdlrENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hdlrENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hdlrENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hvcCENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hvcCENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hvcCENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_hvcCENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_idatENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_idatENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_idatENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_idatENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iinfENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iinfENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iinfENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iinfENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ilocENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ilocENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ilocENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ilocENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_imirENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_imirENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_imirENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_imirENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_infeENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_infeENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_infeENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_infeENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipcoENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipcoENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipcoENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipcoENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipmaENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipmaENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipmaENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ipmaENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iprpENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iprpENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iprpENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_iprpENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irefENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irefENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irefENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irefENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irotENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irotENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irotENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_irotENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ispeENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ispeENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ispeENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_ispeENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_metaENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_metaENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_metaENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_metaENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pitmENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pitmENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pitmENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pitmENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pixiENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pixiENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pixiENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8Box_pixiENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8HeifFileENS_9allocatorIS2_EEE16__on_zero_sharedEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8HeifFileENS_9allocatorIS2_EEE21__on_zero_shared_weakEv +_ZNSt3__120__shared_ptr_emplaceIN4heif8HeifFileENS_9allocatorIS2_EEED0Ev +_ZNSt3__120__shared_ptr_emplaceIN4heif8HeifFileENS_9allocatorIS2_EEED2Ev +_ZNSt3__120__throw_bad_weak_ptrB6v15003Ev +_ZNSt3__120__throw_future_errorB6v15003ENS_11future_errcE +_ZNSt3__120__throw_length_errorB6v15003EPKc +_ZNSt3__120__throw_out_of_rangeB6v15003EPKc +_ZNSt3__120dynamic_pointer_castB6v15003IN4heif8Box_idatENS1_3BoxEEENS_10shared_ptrIT_EERKNS4_IT0_EE +_ZNSt3__120dynamic_pointer_castB6v15003IN4heif8Box_iinfENS1_3BoxEEENS_10shared_ptrIT_EERKNS4_IT0_EE +_ZNSt3__120dynamic_pointer_castB6v15003IN4heif8Box_ilocENS1_3BoxEEENS_10shared_ptrIT_EERKNS4_IT0_EE +_ZNSt3__120dynamic_pointer_castB6v15003IN4heif8Box_irefENS1_3BoxEEENS_10shared_ptrIT_EERKNS4_IT0_EE +_ZNSt3__122__deferred_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEE9__executeEv +_ZNSt3__122__deferred_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEED0Ev +_ZNSt3__122__deferred_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEED2Ev +_ZNSt3__124__make_async_assoc_stateB6v15003IN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEENS_6futureIT_EEOT0_ +_ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_y +_ZNSt3__127__make_deferred_assoc_stateB6v15003IN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEENS_6futureIT_EEOT0_ +_ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_ +_ZNSt3__130__uninitialized_allocator_copyB6v15003INS_9allocatorIN4heif5ErrorEEEPS3_S5_S5_EET2_RT_T0_T1_S6_ +_ZNSt3__130__uninitialized_allocator_copyB6v15003INS_9allocatorIN4heif8Box_iloc4ItemEEEPS4_S6_S6_EET2_RT_T0_T1_S7_ +_ZNSt3__130__uninitialized_allocator_copyB6v15003INS_9allocatorIN4heif8Box_iloc6ExtentEEEPS4_S6_S6_EET2_RT_T0_T1_S7_ +_ZNSt3__130__uninitialized_allocator_copyB6v15003INS_9allocatorINS_6vectorIhNS1_IhEEEEEEPS4_S6_S6_EET2_RT_T0_T1_S7_ +_ZNSt3__13setI20heif_color_primariesNS_4lessIS1_EENS_9allocatorIS1_EEEC2B6v15003ESt16initializer_listIS1_ERKS3_ +_ZNSt3__13setI24heif_matrix_coefficientsNS_4lessIS1_EENS_9allocatorIS1_EEEC2B6v15003ESt16initializer_listIS1_ERKS3_ +_ZNSt3__13setI29heif_transfer_characteristicsNS_4lessIS1_EENS_9allocatorIS1_EEEC2B6v15003ESt16initializer_listIS1_ERKS3_ +_ZNSt3__14pairIjNS_10shared_ptrIN4heif11HeifContext5ImageEEEED2Ev +_ZNSt3__14pairIjNS_10shared_ptrIN4heif8Box_infeEEEED2Ev +_ZNSt3__15asyncIMN4heif11HeifContextEKFNS1_5ErrorEjRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS2_RjRS6_RiSF_EEENS_6futureINS_11__invoke_ofINS_5decayIT_E4typeEJDpNSI_IT0_E4typeEEE4typeEEENS_6launchEOSJ_DpOSM_ +_ZNSt3__15dequeINS_6futureIN4heif5ErrorEEENS_9allocatorIS4_EEE19__add_back_capacityEv +_ZNSt3__16__treeI12heif_channelNS_4lessIS1_EENS_9allocatorIS1_EEE7destroyEPNS_11__tree_nodeIS1_PvEE +_ZNSt3__16__treeI20heif_color_primariesNS_4lessIS1_EENS_9allocatorIS1_EEE12__find_equalIS1_EERPNS_16__tree_node_baseIPvEENS_21__tree_const_iteratorIS1_PNS_11__tree_nodeIS1_S9_EExEERPNS_15__tree_end_nodeISB_EESC_RKT_ +_ZNSt3__16__treeI20heif_color_primariesNS_4lessIS1_EENS_9allocatorIS1_EEE7destroyEPNS_11__tree_nodeIS1_PvEE +_ZNSt3__16__treeI24heif_matrix_coefficientsNS_4lessIS1_EENS_9allocatorIS1_EEE12__find_equalIS1_EERPNS_16__tree_node_baseIPvEENS_21__tree_const_iteratorIS1_PNS_11__tree_nodeIS1_S9_EExEERPNS_15__tree_end_nodeISB_EESC_RKT_ +_ZNSt3__16__treeI24heif_matrix_coefficientsNS_4lessIS1_EENS_9allocatorIS1_EEE7destroyEPNS_11__tree_nodeIS1_PvEE +_ZNSt3__16__treeI29heif_transfer_characteristicsNS_4lessIS1_EENS_9allocatorIS1_EEE12__find_equalIS1_EERPNS_16__tree_node_baseIPvEENS_21__tree_const_iteratorIS1_PNS_11__tree_nodeIS1_S9_EExEERPNS_15__tree_end_nodeISB_EESC_RKT_ +_ZNSt3__16__treeI29heif_transfer_characteristicsNS_4lessIS1_EENS_9allocatorIS1_EEE7destroyEPNS_11__tree_nodeIS1_PvEE +_ZNSt3__16__treeINS_10unique_ptrI23heif_encoder_descriptorNS_14default_deleteIS2_EEEEN4heif33encoder_descriptor_priority_orderENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE +_ZNSt3__16__treeINS_12__value_typeI12heif_channelN4heif14HeifPixelImage10ImagePlaneEEENS_19__map_value_compareIS2_S6_NS_4lessIS2_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE +_ZNSt3__16__treeINS_12__value_typeIjNS_10shared_ptrIN4heif11HeifContext5ImageEEEEENS_19__map_value_compareIjS7_NS_4lessIjEELb1EEENS_9allocatorIS7_EEE7destroyEPNS_11__tree_nodeIS7_PvEE +_ZNSt3__16__treeINS_12__value_typeIjNS_10shared_ptrIN4heif8Box_infeEEEEENS_19__map_value_compareIjS6_NS_4lessIjEELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE +_ZNSt3__16__treeIPK19heif_decoder_pluginNS_4lessIS3_EENS_9allocatorIS3_EEE7destroyEPNS_11__tree_nodeIS3_PvEE +_ZNSt3__16threadC2IMNS_19__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS3_11HeifContextEKFS4_jRKNS_10shared_ptrINS3_14HeifPixelImageEEEiiEJPKS6_jS9_iiEEEEEFvvEJPSH_EvEEOT_DpOT0_ +_ZNSt3__16vectorI13custom_optionNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_ +_ZNSt3__16vectorI4NodeNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_ +_ZNSt3__16vectorI4NodeNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_ +_ZNSt3__16vectorI4NodeNS_9allocatorIS1_EEED2B6v15003Ev +_ZNSt3__16vectorIN12ImageOverlay6OffsetENS_9allocatorIS2_EEE8__appendEy +_ZNSt3__16vectorIN4heif18ColorStateWithCostENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_ +_ZNSt3__16vectorIN4heif18ColorStateWithCostENS_9allocatorIS2_EEE9push_backB6v15003EOS2_ +_ZNSt3__16vectorIN4heif18ColorStateWithCostENS_9allocatorIS2_EEED2B6v15003Ev +_ZNSt3__16vectorIN4heif5ErrorENS_9allocatorIS2_EEE24__emplace_back_slow_pathIJS2_EEEvDpOT_ +_ZNSt3__16vectorIN4heif5ErrorENS_9allocatorIS2_EEED2B6v15003Ev +_ZNSt3__16vectorIN4heif8Box_grpl11EntityGroupENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_grpl11EntityGroupENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE +_ZNSt3__16vectorIN4heif8Box_hvcC8NalArrayENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_hvcC8NalArrayENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_iloc4ItemENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_iloc4ItemENS_9allocatorIS3_EEED2B6v15003Ev +_ZNSt3__16vectorIN4heif8Box_iloc6ExtentENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_iloc6ExtentENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_ipco8PropertyENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_ipco8PropertyENS_9allocatorIS3_EEED2B6v15003Ev +_ZNSt3__16vectorIN4heif8Box_ipma5EntryENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_iref9ReferenceENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorIN4heif8Box_iref9ReferenceENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE +_ZNSt3__16vectorIN4heif8Box_iref9ReferenceENS_9allocatorIS3_EEED2B6v15003Ev +_ZNSt3__16vectorINS0_IhNS_9allocatorIhEEEENS1_IS3_EEE21__push_back_slow_pathIRKS3_EEvOT_ +_ZNSt3__16vectorINS0_IhNS_9allocatorIhEEEENS1_IS3_EEE21__push_back_slow_pathIS3_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif10SEIMessageEEENS_9allocatorIS4_EEE21__push_back_slow_pathIRKS4_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif10SEIMessageEEENS_9allocatorIS4_EEED2B6v15003Ev +_ZNSt3__16vectorINS_10shared_ptrIN4heif11HeifContext5ImageEEENS_9allocatorIS5_EEE21__push_back_slow_pathIRKS5_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif11HeifContext5ImageEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif11HeifContext5ImageEEENS_9allocatorIS5_EEE6assignIPS5_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISC_E9referenceEEE5valueEvE4typeESC_SC_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif11HeifContext5ImageEEENS_9allocatorIS5_EEED2B6v15003Ev +_ZNSt3__16vectorINS_10shared_ptrIN4heif13ImageMetadataEEENS_9allocatorIS4_EEE21__push_back_slow_pathIS4_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif24ColorConversionOperationEEENS_9allocatorIS4_EEE21__push_back_slow_pathIS4_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif24ColorConversionOperationEEENS_9allocatorIS4_EEE8__appendEy +_ZNSt3__16vectorINS_10shared_ptrIN4heif24ColorConversionOperationEEENS_9allocatorIS4_EEED2B6v15003Ev +_ZNSt3__16vectorINS_10shared_ptrIN4heif3BoxEEENS_9allocatorIS4_EEE21__push_back_slow_pathIRKS4_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif3BoxEEENS_9allocatorIS4_EEE21__push_back_slow_pathIS4_EEvOT_ +_ZNSt3__16vectorINS_10shared_ptrIN4heif3BoxEEENS_9allocatorIS4_EEED2B6v15003Ev +_ZNSt3__16vectorIhNS_9allocatorIhEEE6assignIPhEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsIS7_E9referenceEEE5valueEvE4typeES7_S7_ +_ZNSt3__16vectorIhNS_9allocatorIhEEE6insertIPKhEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsIS8_E9referenceEEE5valueENS_11__wrap_iterIPhEEE4typeENSC_IS6_EES8_S8_ +_ZNSt3__16vectorIhNS_9allocatorIhEEE6resizeEy +_ZNSt3__16vectorIjNS_9allocatorIjEEE6assignIPjEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIjNS_15iterator_traitsIS7_E9referenceEEE5valueEvE4typeES7_S7_ +_ZNSt3__16vectorIjNS_9allocatorIjEEEC2B6v15003ESt16initializer_listIjE +_ZSt28__throw_bad_array_new_lengthB6v15003v +_ZTI15Op_RGB_to_YCbCrIhE DATA +_ZTI15Op_RGB_to_YCbCrItE DATA +_ZTI15Op_YCbCr_to_RGBIhE DATA +_ZTI15Op_YCbCr_to_RGBItE DATA +_ZTI16Op_to_hdr_planes DATA +_ZTI16Op_to_sdr_planes DATA +_ZTI18Op_RGB_to_RGB24_32 DATA +_ZTI19Op_drop_alpha_plane DATA +_ZTI19Op_mono_to_RGB24_32 DATA +_ZTI19Op_mono_to_YCbCr420 DATA +_ZTI20Op_RGB24_32_to_YCbCr DATA +_ZTI20Op_YCbCr420_to_RGB24 DATA +_ZTI20Op_YCbCr420_to_RGB32 DATA +_ZTI21Op_RGB_to_RRGGBBaa_BE DATA +_ZTI23Op_YCbCr420_to_RRGGBBaa DATA +_ZTI25Op_RGB_HDR_to_RRGGBBaa_BE DATA +_ZTI25Op_RRGGBBaa_BE_to_RGB_HDR DATA +_ZTI27Op_RGB24_32_to_YCbCr444_GBR DATA +_ZTI27Op_RRGGBBaa_swap_endianness DATA +_ZTI27Op_RRGGBBxx_HDR_to_YCbCr420 DATA +_ZTI30heif_depth_representation_info DATA +_ZTIN4heif10SEIMessageE DATA +_ZTIN4heif12StreamReaderE DATA +_ZTIN4heif13color_profileE DATA +_ZTIN4heif17StreamReader_CApiE DATA +_ZTIN4heif17color_profile_rawE DATA +_ZTIN4heif18color_profile_nclxE DATA +_ZTIN4heif19StreamReader_memoryE DATA +_ZTIN4heif20StreamReader_istreamE DATA +_ZTIN4heif24ColorConversionOperationE DATA +_ZTIN4heif36SEIMessage_depth_representation_infoE DATA +_ZTIN4heif3BoxE DATA +_ZTIN4heif7Box_urlE DATA +_ZTIN4heif8Box_auxCE DATA +_ZTIN4heif8Box_av1CE DATA +_ZTIN4heif8Box_clapE DATA +_ZTIN4heif8Box_colrE DATA +_ZTIN4heif8Box_dinfE DATA +_ZTIN4heif8Box_drefE DATA +_ZTIN4heif8Box_ftypE DATA +_ZTIN4heif8Box_grplE DATA +_ZTIN4heif8Box_hdlrE DATA +_ZTIN4heif8Box_hvcCE DATA +_ZTIN4heif8Box_idatE DATA +_ZTIN4heif8Box_iinfE DATA +_ZTIN4heif8Box_ilocE DATA +_ZTIN4heif8Box_imirE DATA +_ZTIN4heif8Box_infeE DATA +_ZTIN4heif8Box_ipcoE DATA +_ZTIN4heif8Box_ipmaE DATA +_ZTIN4heif8Box_iprpE DATA +_ZTIN4heif8Box_irefE DATA +_ZTIN4heif8Box_irotE DATA +_ZTIN4heif8Box_ispeE DATA +_ZTIN4heif8Box_metaE DATA +_ZTIN4heif8Box_pitmE DATA +_ZTIN4heif8Box_pixiE DATA +_ZTIN4heif9BoxHeaderE DATA +_ZTINSt3__112bad_weak_ptrE DATA +_ZTINSt3__112future_errorE DATA +_ZTINSt3__113__assoc_stateIN4heif5ErrorEEE DATA +_ZTINSt3__113basic_filebufIcNS_11char_traitsIcEEEE DATA +_ZTINSt3__113basic_istreamIcNS_11char_traitsIcEEEE DATA +_ZTINSt3__113basic_ostreamIcNS_11char_traitsIcEEEE DATA +_ZTINSt3__114__shared_countE DATA +_ZTINSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE DATA +_ZTINSt3__114basic_iostreamIcNS_11char_traitsIcEEEE DATA +_ZTINSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE DATA +_ZTINSt3__115basic_streambufIcNS_11char_traitsIcEEEE DATA +_ZTINSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTINSt3__117__assoc_sub_stateE DATA +_ZTINSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTINSt3__119__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEE DATA +_ZTINSt3__119__shared_weak_countE DATA +_ZTINSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrIhENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrItENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBIhENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBItENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI16Op_to_hdr_planesNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI16Op_to_sdr_planesNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI18Op_RGB_to_RGB24_32NS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI19Op_drop_alpha_planeNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI19Op_mono_to_RGB24_32NS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI19Op_mono_to_YCbCr420NS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI20Op_RGB24_32_to_YCbCrNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB24NS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB32NS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI21Op_RGB_to_RRGGBBaa_BENS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI23Op_YCbCr420_to_RRGGBBaaNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI25Op_RGB_HDR_to_RRGGBBaa_BENS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI25Op_RRGGBBaa_BE_to_RGB_HDRNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI27Op_RGB24_32_to_YCbCr444_GBRNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI27Op_RRGGBBaa_swap_endiannessNS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceI27Op_RRGGBBxx_HDR_to_YCbCr420NS_9allocatorIS1_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif11HeifContext5ImageENS_9allocatorIS3_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif11HeifContextENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif13ImageMetadataENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif14HeifPixelImageENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif17StreamReader_CApiENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif17color_profile_rawENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif18color_profile_nclxENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif19StreamReader_memoryENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif20StreamReader_istreamENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif36SEIMessage_depth_representation_infoENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif3BoxENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif7Box_urlENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_auxCENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_av1CENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_colrENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_dinfENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_drefENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_ftypENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_grplENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_hdlrENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_hvcCENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_idatENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_iinfENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_ilocENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_imirENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_infeENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_ipcoENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_ipmaENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_iprpENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_irefENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_irotENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_ispeENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_metaENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_pitmENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8Box_pixiENS_9allocatorIS2_EEEE DATA +_ZTINSt3__120__shared_ptr_emplaceIN4heif8HeifFileENS_9allocatorIS2_EEEE DATA +_ZTINSt3__122__deferred_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEE DATA +_ZTINSt3__18ios_baseE DATA +_ZTINSt3__19basic_iosIcNS_11char_traitsIcEEEE DATA +_ZTISt11logic_error DATA +_ZTISt12length_error DATA +_ZTISt12out_of_range DATA +_ZTISt20bad_array_new_length DATA +_ZTISt8bad_cast DATA +_ZTISt9bad_alloc DATA +_ZTISt9exception DATA +_ZTS15Op_RGB_to_YCbCrIhE DATA +_ZTS15Op_RGB_to_YCbCrItE DATA +_ZTS15Op_YCbCr_to_RGBIhE DATA +_ZTS15Op_YCbCr_to_RGBItE DATA +_ZTS16Op_to_hdr_planes DATA +_ZTS16Op_to_sdr_planes DATA +_ZTS18Op_RGB_to_RGB24_32 DATA +_ZTS19Op_drop_alpha_plane DATA +_ZTS19Op_mono_to_RGB24_32 DATA +_ZTS19Op_mono_to_YCbCr420 DATA +_ZTS20Op_RGB24_32_to_YCbCr DATA +_ZTS20Op_YCbCr420_to_RGB24 DATA +_ZTS20Op_YCbCr420_to_RGB32 DATA +_ZTS21Op_RGB_to_RRGGBBaa_BE DATA +_ZTS23Op_YCbCr420_to_RRGGBBaa DATA +_ZTS25Op_RGB_HDR_to_RRGGBBaa_BE DATA +_ZTS25Op_RRGGBBaa_BE_to_RGB_HDR DATA +_ZTS27Op_RGB24_32_to_YCbCr444_GBR DATA +_ZTS27Op_RRGGBBaa_swap_endianness DATA +_ZTS27Op_RRGGBBxx_HDR_to_YCbCr420 DATA +_ZTS30heif_depth_representation_info DATA +_ZTSN4heif10SEIMessageE DATA +_ZTSN4heif12StreamReaderE DATA +_ZTSN4heif13color_profileE DATA +_ZTSN4heif17StreamReader_CApiE DATA +_ZTSN4heif17color_profile_rawE DATA +_ZTSN4heif18color_profile_nclxE DATA +_ZTSN4heif19StreamReader_memoryE DATA +_ZTSN4heif20StreamReader_istreamE DATA +_ZTSN4heif24ColorConversionOperationE DATA +_ZTSN4heif36SEIMessage_depth_representation_infoE DATA +_ZTSN4heif3BoxE DATA +_ZTSN4heif7Box_urlE DATA +_ZTSN4heif8Box_auxCE DATA +_ZTSN4heif8Box_av1CE DATA +_ZTSN4heif8Box_clapE DATA +_ZTSN4heif8Box_colrE DATA +_ZTSN4heif8Box_dinfE DATA +_ZTSN4heif8Box_drefE DATA +_ZTSN4heif8Box_ftypE DATA +_ZTSN4heif8Box_grplE DATA +_ZTSN4heif8Box_hdlrE DATA +_ZTSN4heif8Box_hvcCE DATA +_ZTSN4heif8Box_idatE DATA +_ZTSN4heif8Box_iinfE DATA +_ZTSN4heif8Box_ilocE DATA +_ZTSN4heif8Box_imirE DATA +_ZTSN4heif8Box_infeE DATA +_ZTSN4heif8Box_ipcoE DATA +_ZTSN4heif8Box_ipmaE DATA +_ZTSN4heif8Box_iprpE DATA +_ZTSN4heif8Box_irefE DATA +_ZTSN4heif8Box_irotE DATA +_ZTSN4heif8Box_ispeE DATA +_ZTSN4heif8Box_metaE DATA +_ZTSN4heif8Box_pitmE DATA +_ZTSN4heif8Box_pixiE DATA +_ZTSN4heif9BoxHeaderE DATA +_ZTSNSt3__112bad_weak_ptrE DATA +_ZTSNSt3__112future_errorE DATA +_ZTSNSt3__113__assoc_stateIN4heif5ErrorEEE DATA +_ZTSNSt3__113basic_filebufIcNS_11char_traitsIcEEEE DATA +_ZTSNSt3__113basic_istreamIcNS_11char_traitsIcEEEE DATA +_ZTSNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE DATA +_ZTSNSt3__114__shared_countE DATA +_ZTSNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE DATA +_ZTSNSt3__114basic_iostreamIcNS_11char_traitsIcEEEE DATA +_ZTSNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE DATA +_ZTSNSt3__115basic_streambufIcNS_11char_traitsIcEEEE DATA +_ZTSNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTSNSt3__117__assoc_sub_stateE DATA +_ZTSNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTSNSt3__119__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEE DATA +_ZTSNSt3__119__shared_weak_countE DATA +_ZTSNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrIhENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrItENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBIhENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBItENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI16Op_to_hdr_planesNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI16Op_to_sdr_planesNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI18Op_RGB_to_RGB24_32NS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI19Op_drop_alpha_planeNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI19Op_mono_to_RGB24_32NS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI19Op_mono_to_YCbCr420NS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI20Op_RGB24_32_to_YCbCrNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB24NS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB32NS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI21Op_RGB_to_RRGGBBaa_BENS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI23Op_YCbCr420_to_RRGGBBaaNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI25Op_RGB_HDR_to_RRGGBBaa_BENS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI25Op_RRGGBBaa_BE_to_RGB_HDRNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI27Op_RGB24_32_to_YCbCr444_GBRNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI27Op_RRGGBBaa_swap_endiannessNS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceI27Op_RRGGBBxx_HDR_to_YCbCr420NS_9allocatorIS1_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif11HeifContext5ImageENS_9allocatorIS3_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif11HeifContextENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif13ImageMetadataENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif14HeifPixelImageENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif17StreamReader_CApiENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif17color_profile_rawENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif18color_profile_nclxENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif19StreamReader_memoryENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif20StreamReader_istreamENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif36SEIMessage_depth_representation_infoENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif3BoxENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif7Box_urlENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_auxCENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_av1CENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_colrENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_dinfENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_drefENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_ftypENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_grplENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_hdlrENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_hvcCENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_idatENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_iinfENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_ilocENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_imirENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_infeENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_ipcoENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_ipmaENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_iprpENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_irefENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_irotENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_ispeENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_metaENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_pitmENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8Box_pixiENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__120__shared_ptr_emplaceIN4heif8HeifFileENS_9allocatorIS2_EEEE DATA +_ZTSNSt3__122__deferred_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEE DATA +_ZTSNSt3__18ios_baseE DATA +_ZTSNSt3__19basic_iosIcNS_11char_traitsIcEEEE DATA +_ZTSSt11logic_error DATA +_ZTSSt12length_error DATA +_ZTSSt12out_of_range DATA +_ZTSSt20bad_array_new_length DATA +_ZTSSt8bad_cast DATA +_ZTSSt9bad_alloc DATA +_ZTSSt9exception DATA +_ZTV15Op_RGB_to_YCbCrIhE DATA +_ZTV15Op_RGB_to_YCbCrItE DATA +_ZTV15Op_YCbCr_to_RGBIhE DATA +_ZTV15Op_YCbCr_to_RGBItE DATA +_ZTV16Op_to_hdr_planes DATA +_ZTV16Op_to_sdr_planes DATA +_ZTV18Op_RGB_to_RGB24_32 DATA +_ZTV19Op_drop_alpha_plane DATA +_ZTV19Op_mono_to_RGB24_32 DATA +_ZTV19Op_mono_to_YCbCr420 DATA +_ZTV20Op_RGB24_32_to_YCbCr DATA +_ZTV20Op_YCbCr420_to_RGB24 DATA +_ZTV20Op_YCbCr420_to_RGB32 DATA +_ZTV21Op_RGB_to_RRGGBBaa_BE DATA +_ZTV23Op_YCbCr420_to_RRGGBBaa DATA +_ZTV25Op_RGB_HDR_to_RRGGBBaa_BE DATA +_ZTV25Op_RRGGBBaa_BE_to_RGB_HDR DATA +_ZTV27Op_RGB24_32_to_YCbCr444_GBR DATA +_ZTV27Op_RRGGBBaa_swap_endianness DATA +_ZTV27Op_RRGGBBxx_HDR_to_YCbCr420 DATA +_ZTVN4heif17StreamReader_CApiE DATA +_ZTVN4heif17color_profile_rawE DATA +_ZTVN4heif18color_profile_nclxE DATA +_ZTVN4heif19StreamReader_memoryE DATA +_ZTVN4heif20StreamReader_istreamE DATA +_ZTVN4heif36SEIMessage_depth_representation_infoE DATA +_ZTVN4heif3BoxE DATA +_ZTVN4heif7Box_urlE DATA +_ZTVN4heif8Box_auxCE DATA +_ZTVN4heif8Box_av1CE DATA +_ZTVN4heif8Box_clapE DATA +_ZTVN4heif8Box_colrE DATA +_ZTVN4heif8Box_dinfE DATA +_ZTVN4heif8Box_drefE DATA +_ZTVN4heif8Box_ftypE DATA +_ZTVN4heif8Box_grplE DATA +_ZTVN4heif8Box_hdlrE DATA +_ZTVN4heif8Box_hvcCE DATA +_ZTVN4heif8Box_idatE DATA +_ZTVN4heif8Box_iinfE DATA +_ZTVN4heif8Box_ilocE DATA +_ZTVN4heif8Box_imirE DATA +_ZTVN4heif8Box_infeE DATA +_ZTVN4heif8Box_ipcoE DATA +_ZTVN4heif8Box_ipmaE DATA +_ZTVN4heif8Box_iprpE DATA +_ZTVN4heif8Box_irefE DATA +_ZTVN4heif8Box_irotE DATA +_ZTVN4heif8Box_ispeE DATA +_ZTVN4heif8Box_metaE DATA +_ZTVN4heif8Box_pitmE DATA +_ZTVN4heif8Box_pixiE DATA +_ZTVN4heif9BoxHeaderE DATA +_ZTVNSt3__119__async_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrIhENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI15Op_RGB_to_YCbCrItENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBIhENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI15Op_YCbCr_to_RGBItENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI16Op_to_hdr_planesNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI16Op_to_sdr_planesNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI18Op_RGB_to_RGB24_32NS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI19Op_drop_alpha_planeNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI19Op_mono_to_RGB24_32NS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI19Op_mono_to_YCbCr420NS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI20Op_RGB24_32_to_YCbCrNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB24NS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI20Op_YCbCr420_to_RGB32NS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI21Op_RGB_to_RRGGBBaa_BENS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI23Op_YCbCr420_to_RRGGBBaaNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI25Op_RGB_HDR_to_RRGGBBaa_BENS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI25Op_RRGGBBaa_BE_to_RGB_HDRNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI27Op_RGB24_32_to_YCbCr444_GBRNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI27Op_RRGGBBaa_swap_endiannessNS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceI27Op_RRGGBBxx_HDR_to_YCbCr420NS_9allocatorIS1_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif11HeifContext5ImageENS_9allocatorIS3_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif11HeifContextENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif13ImageMetadataENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif14HeifPixelImageENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif17StreamReader_CApiENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif17color_profile_rawENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif18color_profile_nclxENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif19StreamReader_memoryENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif20StreamReader_istreamENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif36SEIMessage_depth_representation_infoENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif3BoxENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif7Box_urlENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_auxCENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_av1CENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_clapENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_colrENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_dinfENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_drefENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_ftypENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_grplENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_hdlrENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_hvcCENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_idatENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_iinfENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_ilocENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_imirENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_infeENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_ipcoENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_ipmaENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_iprpENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_irefENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_irotENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_ispeENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_metaENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_pitmENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8Box_pixiENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__120__shared_ptr_emplaceIN4heif8HeifFileENS_9allocatorIS2_EEEE DATA +_ZTVNSt3__122__deferred_assoc_stateIN4heif5ErrorENS_12__async_funcIMNS1_11HeifContextEKFS2_jRKNS_10shared_ptrINS1_14HeifPixelImageEEEiiEJPKS4_jS7_iiEEEEE DATA +_ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE11heif_chroma +_ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE15heif_colorspace +__clang_call_terminate +cUnknownError DATA +heif_brand_to_fourcc +heif_check_filetype +heif_context_add_XMP_metadata +heif_context_add_exif_metadata +heif_context_add_generic_metadata +heif_context_alloc +heif_context_assign_thumbnail +heif_context_debug_dump_boxes_to_file +heif_context_encode_image +heif_context_encode_thumbnail +heif_context_free +heif_context_get_encoder +heif_context_get_encoder_descriptors +heif_context_get_encoder_for_format +heif_context_get_image_handle +heif_context_get_list_of_top_level_image_IDs +heif_context_get_number_of_top_level_images +heif_context_get_primary_image_ID +heif_context_get_primary_image_handle +heif_context_is_top_level_image_ID +heif_context_read_from_file +heif_context_read_from_memory +heif_context_read_from_memory_without_copy +heif_context_read_from_reader +heif_context_set_max_decoding_threads +heif_context_set_maximum_image_size_limit +heif_context_set_primary_image +heif_context_write +heif_context_write_to_file +heif_decode_image +heif_decoding_options_alloc +heif_decoding_options_free +heif_deinit +heif_depth_representation_info_free +heif_encoder_descriptor_get_compression_format +heif_encoder_descriptor_get_id_name +heif_encoder_descriptor_get_name +heif_encoder_descriptor_supportes_lossless_compression +heif_encoder_descriptor_supportes_lossy_compression +heif_encoder_descriptor_supports_lossless_compression +heif_encoder_descriptor_supports_lossy_compression +heif_encoder_get_name +heif_encoder_get_parameter +heif_encoder_get_parameter_boolean +heif_encoder_get_parameter_integer +heif_encoder_get_parameter_string +heif_encoder_has_default +heif_encoder_list_parameters +heif_encoder_parameter_get_name +heif_encoder_parameter_get_type +heif_encoder_parameter_get_valid_integer_range +heif_encoder_parameter_get_valid_integer_values +heif_encoder_parameter_get_valid_string_values +heif_encoder_parameter_integer_valid_range +heif_encoder_parameter_integer_valid_values +heif_encoder_parameter_string_valid_values +heif_encoder_release +heif_encoder_set_logging_level +heif_encoder_set_lossless +heif_encoder_set_lossy_quality +heif_encoder_set_parameter +heif_encoder_set_parameter_boolean +heif_encoder_set_parameter_integer +heif_encoder_set_parameter_string +heif_encoding_options_alloc +heif_encoding_options_free +heif_error_invalid_parameter_value DATA +heif_error_ok DATA +heif_error_unsupported_parameter DATA +heif_fourcc_to_brand +heif_free_list_of_compatible_brands +heif_get_file_mime_type +heif_get_version +heif_get_version_number +heif_get_version_number_maintenance +heif_get_version_number_major +heif_get_version_number_minor +heif_has_compatible_brand +heif_have_decoder_for_format +heif_have_encoder_for_format +heif_image_add_decoding_warning +heif_image_add_plane +heif_image_create +heif_image_crop +heif_image_get_bits_per_pixel +heif_image_get_bits_per_pixel_range +heif_image_get_chroma_format +heif_image_get_color_profile_type +heif_image_get_colorspace +heif_image_get_decoding_warnings +heif_image_get_height +heif_image_get_nclx_color_profile +heif_image_get_plane +heif_image_get_plane_readonly +heif_image_get_primary_height +heif_image_get_primary_width +heif_image_get_raw_color_profile +heif_image_get_raw_color_profile_size +heif_image_get_width +heif_image_handle_free_auxiliary_types +heif_image_handle_get_auxiliary_image_handle +heif_image_handle_get_auxiliary_type +heif_image_handle_get_chroma_bits_per_pixel +heif_image_handle_get_color_profile_type +heif_image_handle_get_depth_image_handle +heif_image_handle_get_depth_image_representation_info +heif_image_handle_get_height +heif_image_handle_get_ispe_height +heif_image_handle_get_ispe_width +heif_image_handle_get_list_of_auxiliary_image_IDs +heif_image_handle_get_list_of_depth_image_IDs +heif_image_handle_get_list_of_metadata_block_IDs +heif_image_handle_get_list_of_thumbnail_IDs +heif_image_handle_get_luma_bits_per_pixel +heif_image_handle_get_metadata +heif_image_handle_get_metadata_content_type +heif_image_handle_get_metadata_size +heif_image_handle_get_metadata_type +heif_image_handle_get_nclx_color_profile +heif_image_handle_get_number_of_auxiliary_images +heif_image_handle_get_number_of_depth_images +heif_image_handle_get_number_of_metadata_blocks +heif_image_handle_get_number_of_thumbnails +heif_image_handle_get_raw_color_profile +heif_image_handle_get_raw_color_profile_size +heif_image_handle_get_thumbnail +heif_image_handle_get_width +heif_image_handle_has_alpha_channel +heif_image_handle_has_depth_image +heif_image_handle_is_premultiplied_alpha +heif_image_handle_is_primary_image +heif_image_handle_release +heif_image_has_channel +heif_image_is_premultiplied_alpha +heif_image_release +heif_image_scale_image +heif_image_set_nclx_color_profile +heif_image_set_premultiplied_alpha +heif_image_set_raw_color_profile +heif_init +heif_list_compatible_brands +heif_main_brand +heif_nclx_color_profile_alloc +heif_nclx_color_profile_free +heif_nclx_color_profile_set_color_primaries +heif_nclx_color_profile_set_matrix_coefficients +heif_nclx_color_profile_set_transfer_characteristics +heif_read_main_brand +heif_register_decoder +heif_register_decoder_plugin +heif_register_encoder_plugin diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.dll.a new file mode 100644 index 0000000..600a7ff Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.lib new file mode 100644 index 0000000..600a7ff Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libheif.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.def new file mode 100644 index 0000000..c5fb296 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.def @@ -0,0 +1,73 @@ +; +; Definition file of libimagequant.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libimagequant.dll" +EXPORTS +box_error +get_default_free_func +liq_attr_copy +liq_attr_create +liq_attr_create_with_allocator +liq_attr_destroy +liq_blur +liq_crash_if_invalid_handle_pointer_given +liq_crash_if_invalid_pointer_given +liq_executing_user_callback +liq_get_max_colors +liq_get_max_quality +liq_get_min_opacity +liq_get_min_posterization +liq_get_min_quality +liq_get_output_gamma +liq_get_palette +liq_get_quantization_error +liq_get_quantization_quality +liq_get_speed +liq_image_add_fixed_color +liq_image_create_custom +liq_image_create_rgba +liq_image_create_rgba_rows +liq_image_destroy +liq_image_get_height +liq_image_get_width +liq_image_quantize +liq_image_set_memory_ownership +liq_max3 +liq_min3 +liq_quantize_image +liq_result_destroy +liq_set_dithering_level +liq_set_last_index_transparent +liq_set_log_callback +liq_set_log_flush_callback +liq_set_max_colors +liq_set_min_opacity +liq_set_min_posterization +liq_set_output_gamma +liq_set_quality +liq_set_speed +liq_version +liq_write_remapped_image +liq_write_remapped_image_rows +mediancut +mempool_alloc +mempool_create +mempool_destroy +nearest_free +nearest_init +nearest_search +pam_acolorhashtoacolorhist +pam_allocacolorhash +pam_colormap +pam_computeacolorhash +pam_duplicate_colormap +pam_freeacolorhash +pam_freeacolorhist +pam_freecolormap +to_f_set_gamma +viter_do_iteration +viter_finalize +viter_init +viter_update_color diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.dll.a new file mode 100644 index 0000000..01ceba8 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.lib new file mode 100644 index 0000000..01ceba8 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libimagequant.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libintl.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libintl.a new file mode 100644 index 0000000..1316fc5 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libintl.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.def new file mode 100644 index 0000000..ada8b5b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.def @@ -0,0 +1,124 @@ +; +; Definition file of libjpeg-62.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libjpeg-62.dll" +EXPORTS +jcopy_block_row +jcopy_sample_rows +jdiv_round_up +jinit_1pass_quantizer +jinit_2pass_quantizer +jinit_c_coef_controller +jinit_c_main_controller +jinit_c_master_control +jinit_c_prep_controller +jinit_color_converter +jinit_color_deconverter +jinit_compress_master +jinit_d_coef_controller +jinit_d_main_controller +jinit_d_post_controller +jinit_downsampler +jinit_forward_dct +jinit_huff_decoder +jinit_huff_encoder +jinit_input_controller +jinit_inverse_dct +jinit_marker_reader +jinit_marker_writer +jinit_master_decompress +jinit_memory_mgr +jinit_merged_upsampler +jinit_phuff_decoder +jinit_phuff_encoder +jinit_upsampler +jpeg_CreateCompress +jpeg_CreateDecompress +jpeg_abort +jpeg_abort_compress +jpeg_abort_decompress +jpeg_add_quant_table +jpeg_alloc_huff_table +jpeg_alloc_quant_table +jpeg_calc_output_dimensions +jpeg_consume_input +jpeg_copy_critical_parameters +jpeg_default_colorspace +jpeg_destroy +jpeg_destroy_compress +jpeg_destroy_decompress +jpeg_fdct_float +jpeg_fdct_ifast +jpeg_fdct_islow +jpeg_fill_bit_buffer +jpeg_finish_compress +jpeg_finish_decompress +jpeg_finish_output +jpeg_free_large +jpeg_free_small +jpeg_gen_optimal_table +jpeg_get_large +jpeg_get_small +jpeg_has_multiple_scans +jpeg_huff_decode +jpeg_idct_1x1 +jpeg_idct_2x2 +jpeg_idct_4x4 +jpeg_idct_float +jpeg_idct_ifast +jpeg_idct_islow +jpeg_input_complete +jpeg_make_c_derived_tbl +jpeg_make_d_derived_tbl +jpeg_mem_available +jpeg_mem_init +jpeg_mem_term +jpeg_new_colormap +jpeg_open_backing_store +jpeg_quality_scaling +jpeg_read_coefficients +jpeg_read_header +jpeg_read_raw_data +jpeg_read_scanlines +jpeg_resync_to_restart +jpeg_save_markers +jpeg_set_colorspace +jpeg_set_defaults +jpeg_set_linear_quality +jpeg_set_marker_processor +jpeg_set_quality +jpeg_simple_progression +jpeg_start_compress +jpeg_start_decompress +jpeg_start_output +jpeg_std_error +jpeg_stdio_dest +jpeg_stdio_src +jpeg_suppress_tables +jpeg_write_coefficients +jpeg_write_m_byte +jpeg_write_m_header +jpeg_write_marker +jpeg_write_raw_data +jpeg_write_scanlines +jpeg_write_tables +jround_up +jzero_far +jpeg_mem_dest +jpeg_mem_src +jpeg_skip_scanlines +jpeg_crop_scanline +jpeg_read_icc_profile +jpeg_write_icc_profile +jpeg_c_bool_param_supported +jpeg_c_set_bool_param +jpeg_c_get_bool_param +jpeg_c_float_param_supported +jpeg_c_set_float_param +jpeg_c_get_float_param +jpeg_c_int_param_supported +jpeg_c_set_int_param +jpeg_c_get_int_param +jpeg_float_quality_scaling diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.dll.a new file mode 100644 index 0000000..2399e2b Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.lib new file mode 100644 index 0000000..4e4a973 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libjpeg.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.def new file mode 100644 index 0000000..9136d4b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.def @@ -0,0 +1,453 @@ +; +; Definition file of liblcms2-2.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "liblcms2-2.dll" +EXPORTS +_cms15Fixed16toDouble +_cms8Fixed8toDouble +_cmsAdaptationMatrix +_cmsAdaptationStateChunk DATA +_cmsAdjustEndianess16 +_cmsAdjustEndianess32 +_cmsAdjustEndianess64 +_cmsAlarmCodesChunk DATA +_cmsAllocAdaptationStateChunk +_cmsAllocAlarmCodesChunk +_cmsAllocCurvesPluginChunk +_cmsAllocFormattersPluginChunk +_cmsAllocIntentsPluginChunk +_cmsAllocInterpPluginChunk +_cmsAllocLogErrorChunk +_cmsAllocMPETypePluginChunk +_cmsAllocMemPluginChunk +_cmsAllocMutexPluginChunk +_cmsAllocOptimizationPluginChunk +_cmsAllocTagPluginChunk +_cmsAllocTagTypePluginChunk +_cmsAllocTransformPluginChunk +_cmsBuildKToneCurve +_cmsBuildRGB2XYZtransferMatrix +_cmsCalloc +_cmsChain2Lab +_cmsCompileProfileSequence +_cmsComputeInterpParams +_cmsComputeInterpParamsEx +_cmsContextGetClientChunk +_cmsCreateGamutCheckPipeline +_cmsCreateMutex +_cmsCreateSubAlloc +_cmsCurvesPluginChunk DATA +_cmsDecodeDateTimeNumber +_cmsDefaultICCintents +_cmsDestroyMutex +_cmsDoubleTo15Fixed16 +_cmsDoubleTo8Fixed8 +_cmsDupMem +_cmsEncodeDateTimeNumber +_cmsEndPointsBySpace +_cmsFloat2Half +_cmsFormatterIs8bit +_cmsFormatterIsFloat +_cmsFormattersPluginChunk DATA +_cmsFree +_cmsFreeInterpParams +_cmsGetContext +_cmsGetFormatter +_cmsGetTagDescriptor +_cmsGetTagTrueType +_cmsGetTagTypeHandler +_cmsGetTime +_cmsGetTransformFlags +_cmsGetTransformFormatters16 +_cmsGetTransformFormattersFloat +_cmsGetTransformUserData +_cmsHalf2Float +_cmsHandleExtraChannels +_cmsICCcolorSpace +_cmsIOPrintf +_cmsInstallAllocFunctions +_cmsIntentsPluginChunk DATA +_cmsInterpPluginChunk DATA +_cmsLCMScolorSpace +_cmsLinkProfiles +_cmsLockMutex +_cmsLogErrorChunk DATA +_cmsMAT3eval +_cmsMAT3identity +_cmsMAT3inverse +_cmsMAT3isIdentity +_cmsMAT3per +_cmsMAT3solve +_cmsMPETypePluginChunk DATA +_cmsMalloc +_cmsMallocZero +_cmsMemPluginChunk DATA +_cmsMutexPluginChunk DATA +_cmsOptimizationPluginChunk DATA +_cmsOptimizePipeline +_cmsPipelineSetOptimizationParameters +_cmsPluginMalloc +_cmsQuantizeVal +_cmsRead15Fixed16Number +_cmsReadAlignment +_cmsReadCHAD +_cmsReadDevicelinkLUT +_cmsReadFloat32Number +_cmsReadHeader +_cmsReadInputLUT +_cmsReadMediaWhitePoint +_cmsReadOutputLUT +_cmsReadProfileSequence +_cmsReadTypeBase +_cmsReadUInt16Array +_cmsReadUInt16Number +_cmsReadUInt32Number +_cmsReadUInt64Number +_cmsReadUInt8Number +_cmsReadXYZNumber +_cmsRealloc +_cmsReasonableGridpointsByColorspace +_cmsRegisterFormattersPlugin +_cmsRegisterInterpPlugin +_cmsRegisterMemHandlerPlugin +_cmsRegisterMultiProcessElementPlugin +_cmsRegisterMutexPlugin +_cmsRegisterOptimizationPlugin +_cmsRegisterParametricCurvesPlugin +_cmsRegisterRenderingIntentPlugin +_cmsRegisterTagPlugin +_cmsRegisterTagTypePlugin +_cmsRegisterTransformPlugin +_cmsSearchTag +_cmsSetInterpolationRoutine +_cmsSetTransformUserData +_cmsStageAllocIdentityCLut +_cmsStageAllocIdentityCurves +_cmsStageAllocLab2XYZ +_cmsStageAllocLabPrelin +_cmsStageAllocLabV2ToV4 +_cmsStageAllocLabV2ToV4curves +_cmsStageAllocLabV4ToV2 +_cmsStageAllocNamedColor +_cmsStageAllocPlaceholder +_cmsStageAllocXYZ2Lab +_cmsStageClipNegatives +_cmsStageGetPtrToCurveSet +_cmsStageNormalizeFromLabFloat +_cmsStageNormalizeFromXyzFloat +_cmsStageNormalizeToLabFloat +_cmsStageNormalizeToXyzFloat +_cmsSubAlloc +_cmsSubAllocDestroy +_cmsSubAllocDup +_cmsTagPluginChunk DATA +_cmsTagSignature2String +_cmsTagTypePluginChunk DATA +_cmsTransformPluginChunk DATA +_cmsUnlockMutex +_cmsVEC3cross +_cmsVEC3distance +_cmsVEC3dot +_cmsVEC3init +_cmsVEC3length +_cmsVEC3minus +_cmsWrite15Fixed16Number +_cmsWriteAlignment +_cmsWriteFloat32Number +_cmsWriteHeader +_cmsWriteProfileSequence +_cmsWriteTypeBase +_cmsWriteUInt16Array +_cmsWriteUInt16Number +_cmsWriteUInt32Number +_cmsWriteUInt64Number +_cmsWriteUInt8Number +_cmsWriteXYZNumber +cmsAdaptToIlluminant +cmsAllocNamedColorList +cmsAllocProfileSequenceDescription +cmsAppendNamedColor +cmsBFDdeltaE +cmsBuildGamma +cmsBuildParametricToneCurve +cmsBuildSegmentedToneCurve +cmsBuildTabulatedToneCurve16 +cmsBuildTabulatedToneCurveFloat +cmsCIE2000DeltaE +cmsCIE94DeltaE +cmsCIECAM02Done +cmsCIECAM02Forward +cmsCIECAM02Init +cmsCIECAM02Reverse +cmsCMCdeltaE +cmsChangeBuffersFormat +cmsChannelsOf +cmsCloseIOhandler +cmsCloseProfile +cmsCreateBCHSWabstractProfile +cmsCreateBCHSWabstractProfileTHR +cmsCreateContext +cmsCreateExtendedTransform +cmsCreateGrayProfile +cmsCreateGrayProfileTHR +cmsCreateInkLimitingDeviceLink +cmsCreateInkLimitingDeviceLinkTHR +cmsCreateLab2Profile +cmsCreateLab2ProfileTHR +cmsCreateLab4Profile +cmsCreateLab4ProfileTHR +cmsCreateLinearizationDeviceLink +cmsCreateLinearizationDeviceLinkTHR +cmsCreateMultiprofileTransform +cmsCreateMultiprofileTransformTHR +cmsCreateNULLProfile +cmsCreateNULLProfileTHR +cmsCreateProfilePlaceholder +cmsCreateProofingTransform +cmsCreateProofingTransformTHR +cmsCreateRGBProfile +cmsCreateRGBProfileTHR +cmsCreateTransform +cmsCreateTransformTHR +cmsCreateXYZProfile +cmsCreateXYZProfileTHR +cmsCreate_sRGBProfile +cmsCreate_sRGBProfileTHR +cmsD50_XYZ +cmsD50_xyY +cmsDeleteContext +cmsDeleteTransform +cmsDeltaE +cmsDesaturateLab +cmsDetectBlackPoint +cmsDetectDestinationBlackPoint +cmsDetectRGBProfileGamma +cmsDetectTAC +cmsDictAddEntry +cmsDictAlloc +cmsDictDup +cmsDictFree +cmsDictGetEntryList +cmsDictNextEntry +cmsDoTransform +cmsDoTransformLineStride +cmsDoTransformStride +cmsDupContext +cmsDupNamedColorList +cmsDupProfileSequenceDescription +cmsDupToneCurve +cmsEstimateGamma +cmsEvalToneCurve16 +cmsEvalToneCurveFloat +cmsFloat2LabEncoded +cmsFloat2LabEncodedV2 +cmsFloat2XYZEncoded +cmsFormatterForColorspaceOfProfile +cmsFormatterForPCSOfProfile +cmsFreeNamedColorList +cmsFreeProfileSequenceDescription +cmsFreeToneCurve +cmsFreeToneCurveTriple +cmsGBDAlloc +cmsGBDFree +cmsGDBAddPoint +cmsGDBCheckPoint +cmsGDBCompute +cmsGetAlarmCodes +cmsGetAlarmCodesTHR +cmsGetColorSpace +cmsGetContextUserData +cmsGetDeviceClass +cmsGetEncodedCMMversion +cmsGetEncodedICCversion +cmsGetHeaderAttributes +cmsGetHeaderCreationDateTime +cmsGetHeaderCreator +cmsGetHeaderFlags +cmsGetHeaderManufacturer +cmsGetHeaderModel +cmsGetHeaderProfileID +cmsGetHeaderRenderingIntent +cmsGetNamedColorList +cmsGetPCS +cmsGetPipelineContextID +cmsGetPostScriptCRD +cmsGetPostScriptCSA +cmsGetPostScriptColorResource +cmsGetProfileContextID +cmsGetProfileIOhandler +cmsGetProfileInfo +cmsGetProfileInfoASCII +cmsGetProfileVersion +cmsGetStageContextID +cmsGetSupportedIntents +cmsGetSupportedIntentsTHR +cmsGetTagCount +cmsGetTagSignature +cmsGetToneCurveEstimatedTable +cmsGetToneCurveEstimatedTableEntries +cmsGetToneCurveParametricType +cmsGetToneCurveParams +cmsGetTransformContextID +cmsGetTransformInputFormat +cmsGetTransformOutputFormat +cmsIT8Alloc +cmsIT8DefineDblFormat +cmsIT8EnumDataFormat +cmsIT8EnumProperties +cmsIT8EnumPropertyMulti +cmsIT8FindDataFormat +cmsIT8Free +cmsIT8GetData +cmsIT8GetDataDbl +cmsIT8GetDataRowCol +cmsIT8GetDataRowColDbl +cmsIT8GetPatchByName +cmsIT8GetPatchName +cmsIT8GetProperty +cmsIT8GetPropertyDbl +cmsIT8GetPropertyMulti +cmsIT8GetSheetType +cmsIT8LoadFromFile +cmsIT8LoadFromMem +cmsIT8SaveToFile +cmsIT8SaveToMem +cmsIT8SetComment +cmsIT8SetData +cmsIT8SetDataDbl +cmsIT8SetDataFormat +cmsIT8SetDataRowCol +cmsIT8SetDataRowColDbl +cmsIT8SetIndexColumn +cmsIT8SetPropertyDbl +cmsIT8SetPropertyHex +cmsIT8SetPropertyMulti +cmsIT8SetPropertyStr +cmsIT8SetPropertyUncooked +cmsIT8SetSheetType +cmsIT8SetTable +cmsIT8SetTableByLabel +cmsIT8TableCount +cmsIsCLUT +cmsIsIntentSupported +cmsIsMatrixShaper +cmsIsTag +cmsIsToneCurveDescending +cmsIsToneCurveLinear +cmsIsToneCurveMonotonic +cmsIsToneCurveMultisegment +cmsJoinToneCurve +cmsLCh2Lab +cmsLab2LCh +cmsLab2XYZ +cmsLabEncoded2Float +cmsLabEncoded2FloatV2 +cmsLinkTag +cmsMD5add +cmsMD5alloc +cmsMD5computeID +cmsMD5finish +cmsMLUalloc +cmsMLUdup +cmsMLUfree +cmsMLUgetASCII +cmsMLUgetTranslation +cmsMLUgetWide +cmsMLUsetASCII +cmsMLUsetWide +cmsMLUtranslationsCodes +cmsMLUtranslationsCount +cmsNamedColorCount +cmsNamedColorIndex +cmsNamedColorInfo +cmsOpenIOhandlerFromFile +cmsOpenIOhandlerFromMem +cmsOpenIOhandlerFromNULL +cmsOpenIOhandlerFromStream +cmsOpenProfileFromFile +cmsOpenProfileFromFileTHR +cmsOpenProfileFromIOhandler2THR +cmsOpenProfileFromIOhandlerTHR +cmsOpenProfileFromMem +cmsOpenProfileFromMemTHR +cmsOpenProfileFromStream +cmsOpenProfileFromStreamTHR +cmsPipelineAlloc +cmsPipelineCat +cmsPipelineCheckAndRetreiveStages +cmsPipelineDup +cmsPipelineEval16 +cmsPipelineEvalFloat +cmsPipelineEvalReverseFloat +cmsPipelineFree +cmsPipelineGetPtrToFirstStage +cmsPipelineGetPtrToLastStage +cmsPipelineInputChannels +cmsPipelineInsertStage +cmsPipelineOutputChannels +cmsPipelineSetSaveAs8bitsFlag +cmsPipelineStageCount +cmsPipelineUnlinkStage +cmsPlugin +cmsPluginTHR +cmsReadRawTag +cmsReadTag +cmsReverseToneCurve +cmsReverseToneCurveEx +cmsSaveProfileToFile +cmsSaveProfileToIOhandler +cmsSaveProfileToMem +cmsSaveProfileToStream +cmsSetAdaptationState +cmsSetAdaptationStateTHR +cmsSetAlarmCodes +cmsSetAlarmCodesTHR +cmsSetColorSpace +cmsSetDeviceClass +cmsSetEncodedICCversion +cmsSetHeaderAttributes +cmsSetHeaderFlags +cmsSetHeaderManufacturer +cmsSetHeaderModel +cmsSetHeaderProfileID +cmsSetHeaderRenderingIntent +cmsSetLogErrorHandler +cmsSetLogErrorHandlerTHR +cmsSetPCS +cmsSetProfileVersion +cmsSignalError +cmsSliceSpace16 +cmsSliceSpaceFloat +cmsSmoothToneCurve +cmsStageAllocCLut16bit +cmsStageAllocCLut16bitGranular +cmsStageAllocCLutFloat +cmsStageAllocCLutFloatGranular +cmsStageAllocIdentity +cmsStageAllocMatrix +cmsStageAllocToneCurves +cmsStageData +cmsStageDup +cmsStageFree +cmsStageInputChannels +cmsStageNext +cmsStageOutputChannels +cmsStageSampleCLut16bit +cmsStageSampleCLutFloat +cmsStageType +cmsTagLinkedTo +cmsTempFromWhitePoint +cmsTransform2DeviceLink +cmsUnregisterPlugins +cmsUnregisterPluginsTHR +cmsWhitePointFromTemp +cmsWriteRawTag +cmsWriteTag +cmsXYZ2Lab +cmsXYZ2xyY +cmsXYZEncoded2Float +cmsfilelength +cmsstrcasecmp +cmsxyY2XYZ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.dll.a new file mode 100644 index 0000000..b155d1e Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.lib new file mode 100644 index 0000000..b155d1e Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liblcms2.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.def new file mode 100644 index 0000000..5e1211c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.def @@ -0,0 +1,194 @@ +; +; Definition file of liborc-0.4-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "liborc-0.4-0.dll" +EXPORTS +orc_bytecode_free +orc_bytecode_from_program +orc_bytecode_new +orc_bytecode_parse_function +orc_code_allocate_codemem +orc_code_free +orc_code_new +orc_compiler_append_code +orc_compiler_error +orc_compiler_flag_check +orc_compiler_get_constant +orc_compiler_get_constant_long +orc_compiler_get_constant_reg +orc_compiler_get_temp_constant +orc_compiler_get_temp_reg +orc_compiler_label_new +orc_compiler_try_get_constant_long +orc_debug_get_level +orc_debug_print +orc_debug_set_level +orc_debug_set_print_function +orc_executor_emulate +orc_executor_free +orc_executor_get_accumulator +orc_executor_get_accumulator_str +orc_executor_new +orc_executor_run +orc_executor_run_backup +orc_executor_set_array +orc_executor_set_array_str +orc_executor_set_m +orc_executor_set_n +orc_executor_set_param +orc_executor_set_param_double +orc_executor_set_param_float +orc_executor_set_param_int64 +orc_executor_set_param_str +orc_executor_set_program +orc_executor_set_stride +orc_get_cpu_family_model_stepping +orc_get_cpu_name +orc_get_data_cache_sizes +orc_global_mutex_lock +orc_global_mutex_unlock +orc_init +orc_memcpy +orc_memset +orc_mmx_get_cpu_flags +orc_mmx_load_constant +orc_once_mutex_lock +orc_once_mutex_unlock +orc_opcode_find_by_name +orc_opcode_init +orc_opcode_register_static +orc_opcode_set_find_by_name +orc_opcode_set_get +orc_opcode_set_get_nth +orc_parse +orc_parse_full +orc_parse_get_init_function +orc_program_add_accumulator +orc_program_add_constant +orc_program_add_constant_double +orc_program_add_constant_float +orc_program_add_constant_int64 +orc_program_add_constant_str +orc_program_add_destination +orc_program_add_destination_full +orc_program_add_parameter +orc_program_add_parameter_double +orc_program_add_parameter_float +orc_program_add_parameter_int64 +orc_program_add_source +orc_program_add_source_full +orc_program_add_temporary +orc_program_append +orc_program_append_2 +orc_program_append_dds_str +orc_program_append_ds +orc_program_append_ds_str +orc_program_append_str +orc_program_append_str_2 +orc_program_compile +orc_program_compile_for_target +orc_program_compile_full +orc_program_dup_temporary +orc_program_find_var_by_name +orc_program_free +orc_program_get_asm_code +orc_program_get_error +orc_program_get_max_accumulator_size +orc_program_get_max_array_size +orc_program_get_name +orc_program_new +orc_program_new_as +orc_program_new_ass +orc_program_new_ds +orc_program_new_dss +orc_program_new_from_static_bytecode +orc_program_reset +orc_program_set_2d +orc_program_set_backup_function +orc_program_set_backup_name +orc_program_set_constant_m +orc_program_set_constant_n +orc_program_set_error +orc_program_set_line +orc_program_set_n_maximum +orc_program_set_n_minimum +orc_program_set_n_multiple +orc_program_set_name +orc_program_set_sampling_type +orc_program_set_type_name +orc_program_set_var_alignment +orc_program_take_code +orc_rule_register +orc_rule_set_new +orc_sse_get_cpu_flags +orc_sse_load_constant +orc_sse_restore_mxcsr +orc_sse_set_mxcsr +orc_target_c_get_typedefs +orc_target_get_asm_preamble +orc_target_get_by_name +orc_target_get_default +orc_target_get_default_flags +orc_target_get_flag_name +orc_target_get_name +orc_target_get_preamble +orc_target_get_rule +orc_target_register +orc_version_string +orc_x86_assemble_copy +orc_x86_assemble_copy_check +orc_x86_calculate_offsets +orc_x86_do_fixups +orc_x86_emit_add_imm_reg +orc_x86_emit_add_reg_reg_shift +orc_x86_emit_cmp_imm_memoffset +orc_x86_emit_cmp_imm_reg +orc_x86_emit_cpuinsn_align +orc_x86_emit_cpuinsn_branch +orc_x86_emit_cpuinsn_imm +orc_x86_emit_cpuinsn_imm_memoffset +orc_x86_emit_cpuinsn_imm_reg +orc_x86_emit_cpuinsn_label +orc_x86_emit_cpuinsn_load_memindex +orc_x86_emit_cpuinsn_load_memoffset +orc_x86_emit_cpuinsn_memoffset +orc_x86_emit_cpuinsn_memoffset_reg +orc_x86_emit_cpuinsn_none +orc_x86_emit_cpuinsn_reg_memoffset +orc_x86_emit_cpuinsn_reg_memoffset_8 +orc_x86_emit_cpuinsn_reg_memoffset_s +orc_x86_emit_cpuinsn_size +orc_x86_emit_cpuinsn_store_memoffset +orc_x86_emit_dec_memoffset +orc_x86_emit_epilogue +orc_x86_emit_modrm_memindex +orc_x86_emit_modrm_memindex2 +orc_x86_emit_modrm_memoffset +orc_x86_emit_modrm_memoffset_old +orc_x86_emit_modrm_reg +orc_x86_emit_mov_memindex_mmx +orc_x86_emit_mov_memindex_sse +orc_x86_emit_mov_memoffset_mmx +orc_x86_emit_mov_memoffset_reg +orc_x86_emit_mov_memoffset_sse +orc_x86_emit_mov_mmx_memoffset +orc_x86_emit_mov_reg_memoffset +orc_x86_emit_mov_sse_memoffset +orc_x86_emit_pop +orc_x86_emit_prologue +orc_x86_emit_push +orc_x86_emit_rep_movs +orc_x86_emit_rex +orc_x86_get_output_insn +orc_x86_get_regname +orc_x86_get_regname_16 +orc_x86_get_regname_64 +orc_x86_get_regname_8 +orc_x86_get_regname_mmx +orc_x86_get_regname_ptr +orc_x86_get_regname_size +orc_x86_get_regname_sse +orc_x86_get_regnum +orc_x86_output_insns diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.dll.a new file mode 100644 index 0000000..06a42fb Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.lib new file mode 100644 index 0000000..06a42fb Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-0.4.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-test-0.4.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-test-0.4.a new file mode 100644 index 0000000..2dab5ec Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-test-0.4.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-test-0.4.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-test-0.4.dll.a new file mode 100644 index 0000000..d5b6c08 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/liborc-test-0.4.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.def new file mode 100644 index 0000000..21616e7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.def @@ -0,0 +1,505 @@ +; +; Definition file of libpango-1.0-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libpango-1.0-0.dll" +EXPORTS +pango_alignment_get_type +pango_attr_allow_breaks_new +pango_attr_background_alpha_new +pango_attr_background_new +pango_attr_baseline_shift_new +pango_attr_break +pango_attr_fallback_new +pango_attr_family_new +pango_attr_font_desc_new +pango_attr_font_features_new +pango_attr_font_scale_new +pango_attr_foreground_alpha_new +pango_attr_foreground_new +pango_attr_gravity_hint_new +pango_attr_gravity_new +pango_attr_insert_hyphens_new +pango_attr_iterator_copy +pango_attr_iterator_destroy +pango_attr_iterator_get +pango_attr_iterator_get_attrs +pango_attr_iterator_get_font +pango_attr_iterator_get_type +pango_attr_iterator_next +pango_attr_iterator_range +pango_attr_language_new +pango_attr_letter_spacing_new +pango_attr_line_height_new +pango_attr_line_height_new_absolute +pango_attr_list_change +pango_attr_list_copy +pango_attr_list_equal +pango_attr_list_filter +pango_attr_list_from_string +pango_attr_list_get_attributes +pango_attr_list_get_iterator +pango_attr_list_get_type +pango_attr_list_insert +pango_attr_list_insert_before +pango_attr_list_new +pango_attr_list_ref +pango_attr_list_splice +pango_attr_list_to_string +pango_attr_list_unref +pango_attr_list_update +pango_attr_overline_color_new +pango_attr_overline_new +pango_attr_rise_new +pango_attr_scale_new +pango_attr_sentence_new +pango_attr_shape_new +pango_attr_shape_new_with_data +pango_attr_show_new +pango_attr_size_new +pango_attr_size_new_absolute +pango_attr_stretch_new +pango_attr_strikethrough_color_new +pango_attr_strikethrough_new +pango_attr_style_new +pango_attr_text_transform_new +pango_attr_type_get_name +pango_attr_type_get_type +pango_attr_type_register +pango_attr_underline_color_new +pango_attr_underline_new +pango_attr_variant_new +pango_attr_weight_new +pango_attr_word_new +pango_attribute_as_color +pango_attribute_as_float +pango_attribute_as_font_desc +pango_attribute_as_font_features +pango_attribute_as_int +pango_attribute_as_language +pango_attribute_as_shape +pango_attribute_as_size +pango_attribute_as_string +pango_attribute_copy +pango_attribute_destroy +pango_attribute_equal +pango_attribute_get_type +pango_attribute_init +pango_baseline_shift_get_type +pango_bidi_type_for_unichar +pango_bidi_type_get_type +pango_break +pango_color_copy +pango_color_free +pango_color_get_type +pango_color_parse +pango_color_parse_with_alpha +pango_color_to_string +pango_config_key_get +pango_config_key_get_system +pango_context_changed +pango_context_get_base_dir +pango_context_get_base_gravity +pango_context_get_font_description +pango_context_get_font_map +pango_context_get_gravity +pango_context_get_gravity_hint +pango_context_get_language +pango_context_get_matrix +pango_context_get_metrics +pango_context_get_round_glyph_positions +pango_context_get_serial +pango_context_get_type +pango_context_list_families +pango_context_load_font +pango_context_load_fontset +pango_context_new +pango_context_set_base_dir +pango_context_set_base_gravity +pango_context_set_font_description +pango_context_set_font_map +pango_context_set_gravity_hint +pango_context_set_language +pango_context_set_matrix +pango_context_set_round_glyph_positions +pango_coverage_copy +pango_coverage_from_bytes +pango_coverage_get +pango_coverage_get_type +pango_coverage_level_get_type +pango_coverage_max +pango_coverage_new +pango_coverage_ref +pango_coverage_set +pango_coverage_to_bytes +pango_coverage_unref +pango_default_break +pango_direction_get_type +pango_ellipsize_mode_get_type +pango_engine_get_type +pango_engine_lang_get_type +pango_engine_shape_get_type +pango_extents_to_pixels +pango_find_base_dir +pango_find_map +pango_find_paragraph_boundary +pango_font_describe +pango_font_describe_with_absolute_size +pango_font_description_better_match +pango_font_description_copy +pango_font_description_copy_static +pango_font_description_equal +pango_font_description_free +pango_font_description_from_string +pango_font_description_get_family +pango_font_description_get_gravity +pango_font_description_get_set_fields +pango_font_description_get_size +pango_font_description_get_size_is_absolute +pango_font_description_get_stretch +pango_font_description_get_style +pango_font_description_get_type +pango_font_description_get_variant +pango_font_description_get_variations +pango_font_description_get_weight +pango_font_description_hash +pango_font_description_merge +pango_font_description_merge_static +pango_font_description_new +pango_font_description_set_absolute_size +pango_font_description_set_family +pango_font_description_set_family_static +pango_font_description_set_gravity +pango_font_description_set_size +pango_font_description_set_stretch +pango_font_description_set_style +pango_font_description_set_variant +pango_font_description_set_variations +pango_font_description_set_variations_static +pango_font_description_set_weight +pango_font_description_to_filename +pango_font_description_to_string +pango_font_description_unset_fields +pango_font_descriptions_free +pango_font_deserialize +pango_font_face_describe +pango_font_face_get_face_name +pango_font_face_get_family +pango_font_face_get_type +pango_font_face_is_synthesized +pango_font_face_list_sizes +pango_font_family_get_face +pango_font_family_get_name +pango_font_family_get_type +pango_font_family_is_monospace +pango_font_family_is_variable +pango_font_family_list_faces +pango_font_find_shaper +pango_font_get_coverage +pango_font_get_face +pango_font_get_features +pango_font_get_font_map +pango_font_get_glyph_extents +pango_font_get_hb_font +pango_font_get_languages +pango_font_get_metrics +pango_font_get_type +pango_font_has_char +pango_font_map_changed +pango_font_map_create_context +pango_font_map_get_family +pango_font_map_get_serial +pango_font_map_get_shape_engine_type +pango_font_map_get_type +pango_font_map_list_families +pango_font_map_load_font +pango_font_map_load_fontset +pango_font_mask_get_type +pango_font_metrics_get_approximate_char_width +pango_font_metrics_get_approximate_digit_width +pango_font_metrics_get_ascent +pango_font_metrics_get_descent +pango_font_metrics_get_height +pango_font_metrics_get_strikethrough_position +pango_font_metrics_get_strikethrough_thickness +pango_font_metrics_get_type +pango_font_metrics_get_underline_position +pango_font_metrics_get_underline_thickness +pango_font_metrics_new +pango_font_metrics_ref +pango_font_metrics_unref +pango_font_scale_get_type +pango_font_serialize +pango_fontset_foreach +pango_fontset_get_font +pango_fontset_get_metrics +pango_fontset_get_type +pango_fontset_simple_append +pango_fontset_simple_get_type +pango_fontset_simple_new +pango_fontset_simple_size +pango_get_lib_subdirectory +pango_get_log_attrs +pango_get_mirror_char +pango_get_sysconf_subdirectory +pango_glyph_item_apply_attrs +pango_glyph_item_copy +pango_glyph_item_free +pango_glyph_item_get_logical_widths +pango_glyph_item_get_type +pango_glyph_item_iter_copy +pango_glyph_item_iter_free +pango_glyph_item_iter_get_type +pango_glyph_item_iter_init_end +pango_glyph_item_iter_init_start +pango_glyph_item_iter_next_cluster +pango_glyph_item_iter_prev_cluster +pango_glyph_item_letter_space +pango_glyph_item_split +pango_glyph_string_copy +pango_glyph_string_extents +pango_glyph_string_extents_range +pango_glyph_string_free +pango_glyph_string_get_logical_widths +pango_glyph_string_get_type +pango_glyph_string_get_width +pango_glyph_string_index_to_x +pango_glyph_string_index_to_x_full +pango_glyph_string_new +pango_glyph_string_set_size +pango_glyph_string_x_to_index +pango_gravity_get_for_matrix +pango_gravity_get_for_script +pango_gravity_get_for_script_and_width +pango_gravity_get_type +pango_gravity_hint_get_type +pango_gravity_to_rotation +pango_is_zero_width +pango_item_apply_attrs +pango_item_copy +pango_item_free +pango_item_get_type +pango_item_new +pango_item_split +pango_itemize +pango_itemize_with_base_dir +pango_language_from_string +pango_language_get_default +pango_language_get_preferred +pango_language_get_sample_string +pango_language_get_scripts +pango_language_get_type +pango_language_includes_script +pango_language_matches +pango_language_to_string +pango_layout_context_changed +pango_layout_copy +pango_layout_deserialize +pango_layout_deserialize_error_get_type +pango_layout_deserialize_error_quark +pango_layout_deserialize_flags_get_type +pango_layout_get_alignment +pango_layout_get_attributes +pango_layout_get_auto_dir +pango_layout_get_baseline +pango_layout_get_caret_pos +pango_layout_get_character_count +pango_layout_get_context +pango_layout_get_cursor_pos +pango_layout_get_direction +pango_layout_get_ellipsize +pango_layout_get_extents +pango_layout_get_font_description +pango_layout_get_height +pango_layout_get_indent +pango_layout_get_iter +pango_layout_get_justify +pango_layout_get_justify_last_line +pango_layout_get_line +pango_layout_get_line_count +pango_layout_get_line_readonly +pango_layout_get_line_spacing +pango_layout_get_lines +pango_layout_get_lines_readonly +pango_layout_get_log_attrs +pango_layout_get_log_attrs_readonly +pango_layout_get_pixel_extents +pango_layout_get_pixel_size +pango_layout_get_serial +pango_layout_get_single_paragraph_mode +pango_layout_get_size +pango_layout_get_spacing +pango_layout_get_tabs +pango_layout_get_text +pango_layout_get_type +pango_layout_get_unknown_glyphs_count +pango_layout_get_width +pango_layout_get_wrap +pango_layout_index_to_line_x +pango_layout_index_to_pos +pango_layout_is_ellipsized +pango_layout_is_wrapped +pango_layout_iter_at_last_line +pango_layout_iter_copy +pango_layout_iter_free +pango_layout_iter_get_baseline +pango_layout_iter_get_char_extents +pango_layout_iter_get_cluster_extents +pango_layout_iter_get_index +pango_layout_iter_get_layout +pango_layout_iter_get_layout_extents +pango_layout_iter_get_line +pango_layout_iter_get_line_extents +pango_layout_iter_get_line_readonly +pango_layout_iter_get_line_yrange +pango_layout_iter_get_run +pango_layout_iter_get_run_baseline +pango_layout_iter_get_run_extents +pango_layout_iter_get_run_readonly +pango_layout_iter_get_type +pango_layout_iter_next_char +pango_layout_iter_next_cluster +pango_layout_iter_next_line +pango_layout_iter_next_run +pango_layout_line_get_extents +pango_layout_line_get_height +pango_layout_line_get_length +pango_layout_line_get_pixel_extents +pango_layout_line_get_resolved_direction +pango_layout_line_get_start_index +pango_layout_line_get_type +pango_layout_line_get_x_ranges +pango_layout_line_index_to_x +pango_layout_line_is_paragraph_start +pango_layout_line_ref +pango_layout_line_unref +pango_layout_line_x_to_index +pango_layout_move_cursor_visually +pango_layout_new +pango_layout_serialize +pango_layout_serialize_flags_get_type +pango_layout_set_alignment +pango_layout_set_attributes +pango_layout_set_auto_dir +pango_layout_set_ellipsize +pango_layout_set_font_description +pango_layout_set_height +pango_layout_set_indent +pango_layout_set_justify +pango_layout_set_justify_last_line +pango_layout_set_line_spacing +pango_layout_set_markup +pango_layout_set_markup_with_accel +pango_layout_set_single_paragraph_mode +pango_layout_set_spacing +pango_layout_set_tabs +pango_layout_set_text +pango_layout_set_width +pango_layout_set_wrap +pango_layout_write_to_file +pango_layout_xy_to_index +pango_log2vis_get_embedding_levels +pango_lookup_aliases +pango_map_get_engine +pango_map_get_engines +pango_markup_parser_finish +pango_markup_parser_new +pango_matrix_concat +pango_matrix_copy +pango_matrix_free +pango_matrix_get_font_scale_factor +pango_matrix_get_font_scale_factors +pango_matrix_get_slant_ratio +pango_matrix_get_type +pango_matrix_rotate +pango_matrix_scale +pango_matrix_transform_distance +pango_matrix_transform_pixel_rectangle +pango_matrix_transform_point +pango_matrix_transform_rectangle +pango_matrix_translate +pango_module_register +pango_overline_get_type +pango_parse_enum +pango_parse_markup +pango_parse_stretch +pango_parse_style +pango_parse_variant +pango_parse_weight +pango_quantize_line_geometry +pango_read_line +pango_render_part_get_type +pango_renderer_activate +pango_renderer_deactivate +pango_renderer_draw_error_underline +pango_renderer_draw_glyph +pango_renderer_draw_glyph_item +pango_renderer_draw_glyphs +pango_renderer_draw_layout +pango_renderer_draw_layout_line +pango_renderer_draw_rectangle +pango_renderer_draw_trapezoid +pango_renderer_get_alpha +pango_renderer_get_color +pango_renderer_get_layout +pango_renderer_get_layout_line +pango_renderer_get_matrix +pango_renderer_get_type +pango_renderer_part_changed +pango_renderer_set_alpha +pango_renderer_set_color +pango_renderer_set_matrix +pango_reorder_items +pango_scan_int +pango_scan_string +pango_scan_word +pango_script_for_unichar +pango_script_get_sample_language +pango_script_get_type +pango_script_iter_free +pango_script_iter_get_range +pango_script_iter_get_type +pango_script_iter_new +pango_script_iter_next +pango_shape +pango_shape_flags_get_type +pango_shape_full +pango_shape_item +pango_shape_with_flags +pango_show_flags_get_type +pango_skip_space +pango_split_file_list +pango_stretch_get_type +pango_style_get_type +pango_tab_align_get_type +pango_tab_array_copy +pango_tab_array_free +pango_tab_array_from_string +pango_tab_array_get_decimal_point +pango_tab_array_get_positions_in_pixels +pango_tab_array_get_size +pango_tab_array_get_tab +pango_tab_array_get_tabs +pango_tab_array_get_type +pango_tab_array_new +pango_tab_array_new_with_positions +pango_tab_array_resize +pango_tab_array_set_decimal_point +pango_tab_array_set_positions_in_pixels +pango_tab_array_set_tab +pango_tab_array_sort +pango_tab_array_to_string +pango_tailor_break +pango_text_transform_get_type +pango_trim_string +pango_underline_get_type +pango_unichar_direction +pango_units_from_double +pango_units_to_double +pango_variant_get_type +pango_version +pango_version_check +pango_version_string +pango_weight_get_type +pango_wrap_mode_get_type diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.dll.a new file mode 100644 index 0000000..06c50af Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.lib new file mode 100644 index 0000000..06c50af Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpango-1.0.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.def new file mode 100644 index 0000000..195b75c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.def @@ -0,0 +1,102 @@ +; +; Definition file of libpangoft2-1.0-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libpangoft2-1.0-0.dll" +EXPORTS +pango_fc_decoder_get_charset +pango_fc_decoder_get_glyph +pango_fc_decoder_get_type +pango_fc_font_create_base_metrics_for_context +pango_fc_font_description_from_pattern +pango_fc_font_get_glyph +pango_fc_font_get_languages +pango_fc_font_get_pattern +pango_fc_font_get_raw_extents +pango_fc_font_get_type +pango_fc_font_get_unknown_glyph +pango_fc_font_has_char +pango_fc_font_kern_glyphs +pango_fc_font_key_get_context_key +pango_fc_font_key_get_matrix +pango_fc_font_key_get_pattern +pango_fc_font_key_get_variations +pango_fc_font_lock_face +pango_fc_font_map_add_decoder_find_func +pango_fc_font_map_cache_clear +pango_fc_font_map_config_changed +pango_fc_font_map_create_context +pango_fc_font_map_find_decoder +pango_fc_font_map_get_config +pango_fc_font_map_get_hb_face +pango_fc_font_map_get_type +pango_fc_font_map_set_config +pango_fc_font_map_set_default_substitute +pango_fc_font_map_shutdown +pango_fc_font_map_substitute_changed +pango_fc_font_unlock_face +pango_fc_fontset_key_get_absolute_size +pango_fc_fontset_key_get_context_key +pango_fc_fontset_key_get_description +pango_fc_fontset_key_get_language +pango_fc_fontset_key_get_matrix +pango_fc_fontset_key_get_resolution +pango_ft2_font_get_coverage +pango_ft2_font_get_face +pango_ft2_font_get_kerning +pango_ft2_font_get_type +pango_ft2_font_map_create_context +pango_ft2_font_map_for_display +pango_ft2_font_map_get_type +pango_ft2_font_map_new +pango_ft2_font_map_set_default_substitute +pango_ft2_font_map_set_resolution +pango_ft2_font_map_substitute_changed +pango_ft2_get_context +pango_ft2_get_unknown_glyph +pango_ft2_render +pango_ft2_render_layout +pango_ft2_render_layout_line +pango_ft2_render_layout_line_subpixel +pango_ft2_render_layout_subpixel +pango_ft2_render_transformed +pango_ft2_renderer_get_type +pango_ft2_shutdown_display +pango_ot_buffer_add_glyph +pango_ot_buffer_clear +pango_ot_buffer_destroy +pango_ot_buffer_get_glyphs +pango_ot_buffer_get_type +pango_ot_buffer_new +pango_ot_buffer_output +pango_ot_buffer_set_rtl +pango_ot_buffer_set_zero_width_marks +pango_ot_info_find_feature +pango_ot_info_find_language +pango_ot_info_find_script +pango_ot_info_get +pango_ot_info_get_type +pango_ot_info_list_features +pango_ot_info_list_languages +pango_ot_info_list_scripts +pango_ot_ruleset_add_feature +pango_ot_ruleset_description_copy +pango_ot_ruleset_description_equal +pango_ot_ruleset_description_free +pango_ot_ruleset_description_get_type +pango_ot_ruleset_description_hash +pango_ot_ruleset_get_feature_count +pango_ot_ruleset_get_for_description +pango_ot_ruleset_get_type +pango_ot_ruleset_maybe_add_feature +pango_ot_ruleset_maybe_add_features +pango_ot_ruleset_new +pango_ot_ruleset_new_for +pango_ot_ruleset_new_from_description +pango_ot_ruleset_position +pango_ot_ruleset_substitute +pango_ot_tag_from_language +pango_ot_tag_from_script +pango_ot_tag_to_language +pango_ot_tag_to_script diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.dll.a new file mode 100644 index 0000000..d2c5ffb Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.lib new file mode 100644 index 0000000..d2c5ffb Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangoft2-1.0.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangowin32-1.0.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangowin32-1.0.dll.a new file mode 100644 index 0000000..0b88f11 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpangowin32-1.0.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.def new file mode 100644 index 0000000..fa89c4c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.def @@ -0,0 +1,156 @@ +; +; Definition file of libpixman-1-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libpixman-1-0.dll" +EXPORTS +_pixman_internal_only_get_implementation +pixman_add_trapezoids +pixman_add_traps +pixman_add_triangles +pixman_blt +pixman_composite_glyphs +pixman_composite_glyphs_no_mask +pixman_composite_trapezoids +pixman_composite_triangles +pixman_compute_composite_region +pixman_disable_out_of_bounds_workaround +pixman_edge_init +pixman_edge_step +pixman_f_transform_bounds +pixman_f_transform_from_pixman_transform +pixman_f_transform_init_identity +pixman_f_transform_init_rotate +pixman_f_transform_init_scale +pixman_f_transform_init_translate +pixman_f_transform_invert +pixman_f_transform_multiply +pixman_f_transform_point +pixman_f_transform_point_3d +pixman_f_transform_rotate +pixman_f_transform_scale +pixman_f_transform_translate +pixman_fill +pixman_filter_create_separable_convolution +pixman_format_supported_destination +pixman_format_supported_source +pixman_glyph_cache_create +pixman_glyph_cache_destroy +pixman_glyph_cache_freeze +pixman_glyph_cache_insert +pixman_glyph_cache_lookup +pixman_glyph_cache_remove +pixman_glyph_cache_thaw +pixman_glyph_get_extents +pixman_glyph_get_mask_format +pixman_image_composite +pixman_image_composite32 +pixman_image_create_bits +pixman_image_create_bits_no_clear +pixman_image_create_conical_gradient +pixman_image_create_linear_gradient +pixman_image_create_radial_gradient +pixman_image_create_solid_fill +pixman_image_fill_boxes +pixman_image_fill_rectangles +pixman_image_get_component_alpha +pixman_image_get_data +pixman_image_get_depth +pixman_image_get_destroy_data +pixman_image_get_format +pixman_image_get_height +pixman_image_get_stride +pixman_image_get_width +pixman_image_ref +pixman_image_set_accessors +pixman_image_set_alpha_map +pixman_image_set_clip_region +pixman_image_set_clip_region32 +pixman_image_set_component_alpha +pixman_image_set_destroy_function +pixman_image_set_dither +pixman_image_set_dither_offset +pixman_image_set_filter +pixman_image_set_has_client_clip +pixman_image_set_indexed +pixman_image_set_repeat +pixman_image_set_source_clipping +pixman_image_set_transform +pixman_image_unref +pixman_line_fixed_edge_init +pixman_rasterize_edges +pixman_rasterize_trapezoid +pixman_region32_clear +pixman_region32_contains_point +pixman_region32_contains_rectangle +pixman_region32_copy +pixman_region32_equal +pixman_region32_extents +pixman_region32_fini +pixman_region32_init +pixman_region32_init_from_image +pixman_region32_init_rect +pixman_region32_init_rects +pixman_region32_init_with_extents +pixman_region32_intersect +pixman_region32_intersect_rect +pixman_region32_inverse +pixman_region32_n_rects +pixman_region32_not_empty +pixman_region32_rectangles +pixman_region32_reset +pixman_region32_selfcheck +pixman_region32_subtract +pixman_region32_translate +pixman_region32_union +pixman_region32_union_rect +pixman_region_clear +pixman_region_contains_point +pixman_region_contains_rectangle +pixman_region_copy +pixman_region_equal +pixman_region_extents +pixman_region_fini +pixman_region_init +pixman_region_init_from_image +pixman_region_init_rect +pixman_region_init_rects +pixman_region_init_with_extents +pixman_region_intersect +pixman_region_intersect_rect +pixman_region_inverse +pixman_region_n_rects +pixman_region_not_empty +pixman_region_rectangles +pixman_region_reset +pixman_region_selfcheck +pixman_region_set_static_pointers +pixman_region_subtract +pixman_region_translate +pixman_region_union +pixman_region_union_rect +pixman_sample_ceil_y +pixman_sample_floor_y +pixman_transform_bounds +pixman_transform_from_pixman_f_transform +pixman_transform_init_identity +pixman_transform_init_rotate +pixman_transform_init_scale +pixman_transform_init_translate +pixman_transform_invert +pixman_transform_is_identity +pixman_transform_is_int_translate +pixman_transform_is_inverse +pixman_transform_is_scale +pixman_transform_multiply +pixman_transform_point +pixman_transform_point_31_16 +pixman_transform_point_31_16_3d +pixman_transform_point_31_16_affine +pixman_transform_point_3d +pixman_transform_rotate +pixman_transform_scale +pixman_transform_translate +pixman_version +pixman_version_string diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.dll.a new file mode 100644 index 0000000..1c2363b Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.lib new file mode 100644 index 0000000..1c2363b Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpixman-1.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng.dll.a new file mode 100644 index 0000000..ec59988 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.def new file mode 100644 index 0000000..ea2a5cb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.def @@ -0,0 +1,253 @@ +; +; Definition file of libpng16-16.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libpng16-16.dll" +EXPORTS +png_access_version_number +png_benign_error +png_build_grayscale_palette +png_calloc +png_chunk_benign_error +png_chunk_error +png_chunk_warning +png_convert_from_struct_tm +png_convert_from_time_t +png_convert_to_rfc1123 +png_convert_to_rfc1123_buffer +png_create_info_struct +png_create_read_struct +png_create_read_struct_2 +png_create_write_struct +png_create_write_struct_2 +png_data_freer +png_destroy_info_struct +png_destroy_read_struct +png_destroy_write_struct +png_error +png_free +png_free_data +png_free_default +png_get_IHDR +png_get_PLTE +png_get_bKGD +png_get_bit_depth +png_get_cHRM +png_get_cHRM_XYZ +png_get_cHRM_XYZ_fixed +png_get_cHRM_fixed +png_get_channels +png_get_chunk_cache_max +png_get_chunk_malloc_max +png_get_color_type +png_get_compression_buffer_size +png_get_compression_type +png_get_copyright +png_get_current_pass_number +png_get_current_row_number +png_get_eXIf +png_get_eXIf_1 +png_get_error_ptr +png_get_filter_type +png_get_gAMA +png_get_gAMA_fixed +png_get_hIST +png_get_header_ver +png_get_header_version +png_get_iCCP +png_get_image_height +png_get_image_width +png_get_int_32 +png_get_interlace_type +png_get_io_chunk_type +png_get_io_ptr +png_get_io_state +png_get_libpng_ver +png_get_mem_ptr +png_get_oFFs +png_get_pCAL +png_get_pHYs +png_get_pHYs_dpi +png_get_palette_max +png_get_pixel_aspect_ratio +png_get_pixel_aspect_ratio_fixed +png_get_pixels_per_inch +png_get_pixels_per_meter +png_get_progressive_ptr +png_get_rgb_to_gray_status +png_get_rowbytes +png_get_rows +png_get_sBIT +png_get_sCAL +png_get_sCAL_fixed +png_get_sCAL_s +png_get_sPLT +png_get_sRGB +png_get_signature +png_get_tIME +png_get_tRNS +png_get_text +png_get_uint_16 +png_get_uint_31 +png_get_uint_32 +png_get_unknown_chunks +png_get_user_chunk_ptr +png_get_user_height_max +png_get_user_transform_ptr +png_get_user_width_max +png_get_valid +png_get_x_offset_inches +png_get_x_offset_inches_fixed +png_get_x_offset_microns +png_get_x_offset_pixels +png_get_x_pixels_per_inch +png_get_x_pixels_per_meter +png_get_y_offset_inches +png_get_y_offset_inches_fixed +png_get_y_offset_microns +png_get_y_offset_pixels +png_get_y_pixels_per_inch +png_get_y_pixels_per_meter +png_handle_as_unknown +png_image_begin_read_from_file +png_image_begin_read_from_memory +png_image_begin_read_from_stdio +png_image_finish_read +png_image_free +png_image_write_to_file +png_image_write_to_memory +png_image_write_to_stdio +png_info_init_3 +png_init_io +png_longjmp +png_malloc +png_malloc_default +png_malloc_warn +png_permit_mng_features +png_process_data +png_process_data_pause +png_process_data_skip +png_progressive_combine_row +png_read_end +png_read_image +png_read_info +png_read_png +png_read_row +png_read_rows +png_read_update_info +png_reset_zstream +png_save_int_32 +png_save_uint_16 +png_save_uint_32 +png_set_IHDR +png_set_PLTE +png_set_add_alpha +png_set_alpha_mode +png_set_alpha_mode_fixed +png_set_bKGD +png_set_background +png_set_background_fixed +png_set_benign_errors +png_set_bgr +png_set_cHRM +png_set_cHRM_XYZ +png_set_cHRM_XYZ_fixed +png_set_cHRM_fixed +png_set_check_for_invalid_index +png_set_chunk_cache_max +png_set_chunk_malloc_max +png_set_compression_buffer_size +png_set_compression_level +png_set_compression_mem_level +png_set_compression_method +png_set_compression_strategy +png_set_compression_window_bits +png_set_crc_action +png_set_eXIf +png_set_eXIf_1 +png_set_error_fn +png_set_expand +png_set_expand_16 +png_set_expand_gray_1_2_4_to_8 +png_set_filler +png_set_filter +png_set_filter_heuristics +png_set_filter_heuristics_fixed +png_set_flush +png_set_gAMA +png_set_gAMA_fixed +png_set_gamma +png_set_gamma_fixed +png_set_gray_to_rgb +png_set_hIST +png_set_iCCP +png_set_interlace_handling +png_set_invalid +png_set_invert_alpha +png_set_invert_mono +png_set_keep_unknown_chunks +png_set_longjmp_fn +png_set_mem_fn +png_set_oFFs +png_set_option +png_set_pCAL +png_set_pHYs +png_set_packing +png_set_packswap +png_set_palette_to_rgb +png_set_progressive_read_fn +png_set_quantize +png_set_read_fn +png_set_read_status_fn +png_set_read_user_chunk_fn +png_set_read_user_transform_fn +png_set_rgb_to_gray +png_set_rgb_to_gray_fixed +png_set_rows +png_set_sBIT +png_set_sCAL +png_set_sCAL_fixed +png_set_sCAL_s +png_set_sPLT +png_set_sRGB +png_set_sRGB_gAMA_and_cHRM +png_set_scale_16 +png_set_shift +png_set_sig_bytes +png_set_strip_16 +png_set_strip_alpha +png_set_swap +png_set_swap_alpha +png_set_tIME +png_set_tRNS +png_set_tRNS_to_alpha +png_set_text +png_set_text_compression_level +png_set_text_compression_mem_level +png_set_text_compression_method +png_set_text_compression_strategy +png_set_text_compression_window_bits +png_set_unknown_chunk_location +png_set_unknown_chunks +png_set_user_limits +png_set_user_transform_info +png_set_write_fn +png_set_write_status_fn +png_set_write_user_transform_fn +png_sig_cmp +png_start_read_image +png_warning +png_write_chunk +png_write_chunk_data +png_write_chunk_end +png_write_chunk_start +png_write_end +png_write_flush +png_write_image +png_write_info +png_write_info_before_PLTE +png_write_png +png_write_row +png_write_rows +png_write_sig diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.dll.a new file mode 100644 index 0000000..ec59988 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.lib new file mode 100644 index 0000000..ec59988 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libpng16.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.def new file mode 100644 index 0000000..e32599f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.def @@ -0,0 +1,60 @@ +; +; Definition file of librsvg-2-2.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "librsvg-2-2.dll" +EXPORTS +rsvg_cleanup +rsvg_error_get_type +rsvg_error_quark +rsvg_handle_close +rsvg_handle_flags_get_type +rsvg_handle_free +rsvg_handle_get_base_uri +rsvg_handle_get_desc +rsvg_handle_get_dimensions +rsvg_handle_get_dimensions_sub +rsvg_handle_get_geometry_for_element +rsvg_handle_get_geometry_for_layer +rsvg_handle_get_intrinsic_dimensions +rsvg_handle_get_intrinsic_size_in_pixels +rsvg_handle_get_metadata +rsvg_handle_get_pixbuf +rsvg_handle_get_pixbuf_sub +rsvg_handle_get_position_sub +rsvg_handle_get_title +rsvg_handle_get_type +rsvg_handle_has_sub +rsvg_handle_internal_set_testing +rsvg_handle_new +rsvg_handle_new_from_data +rsvg_handle_new_from_file +rsvg_handle_new_from_gfile_sync +rsvg_handle_new_from_stream_sync +rsvg_handle_new_with_flags +rsvg_handle_read_stream_sync +rsvg_handle_render_cairo +rsvg_handle_render_cairo_sub +rsvg_handle_render_document +rsvg_handle_render_element +rsvg_handle_render_layer +rsvg_handle_set_base_gfile +rsvg_handle_set_base_uri +rsvg_handle_set_dpi +rsvg_handle_set_dpi_x_y +rsvg_handle_set_size_callback +rsvg_handle_set_stylesheet +rsvg_handle_write +rsvg_init +rsvg_major_version DATA +rsvg_micro_version DATA +rsvg_minor_version DATA +rsvg_pixbuf_from_file +rsvg_pixbuf_from_file_at_max_size +rsvg_pixbuf_from_file_at_size +rsvg_pixbuf_from_file_at_zoom +rsvg_pixbuf_from_file_at_zoom_with_max +rsvg_set_default_dpi +rsvg_set_default_dpi_x_y +rsvg_term diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.dll.a new file mode 100644 index 0000000..de734c1 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.lib new file mode 100644 index 0000000..de734c1 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/librsvg-2.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.def new file mode 100644 index 0000000..6e7915d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.def @@ -0,0 +1,71 @@ +; +; Definition file of libspng-0.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libspng-0.dll" +EXPORTS +spng_ctx_free +spng_ctx_new +spng_ctx_new2 +spng_decode_chunks +spng_decode_image +spng_decode_row +spng_decode_scanline +spng_decoded_image_size +spng_encode_chunks +spng_encode_image +spng_encode_row +spng_encode_scanline +spng_get_bkgd +spng_get_chrm +spng_get_chrm_int +spng_get_chunk_limits +spng_get_exif +spng_get_gama +spng_get_gama_int +spng_get_hist +spng_get_iccp +spng_get_ihdr +spng_get_image_limits +spng_get_offs +spng_get_option +spng_get_phys +spng_get_plte +spng_get_png_buffer +spng_get_row_info +spng_get_sbit +spng_get_splt +spng_get_srgb +spng_get_text +spng_get_time +spng_get_trns +spng_get_unknown_chunks +spng_set_bkgd +spng_set_chrm +spng_set_chrm_int +spng_set_chunk_limits +spng_set_crc_action +spng_set_exif +spng_set_gama +spng_set_gama_int +spng_set_hist +spng_set_iccp +spng_set_ihdr +spng_set_image_limits +spng_set_offs +spng_set_option +spng_set_phys +spng_set_plte +spng_set_png_buffer +spng_set_png_file +spng_set_png_stream +spng_set_sbit +spng_set_splt +spng_set_srgb +spng_set_text +spng_set_time +spng_set_trns +spng_set_unknown_chunks +spng_strerror +spng_version_string diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.dll.a new file mode 100644 index 0000000..04aaf47 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.lib new file mode 100644 index 0000000..04aaf47 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libspng.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.def new file mode 100644 index 0000000..7b684b8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.def @@ -0,0 +1,276 @@ +; +; Definition file of libtiff-5.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libtiff-5.dll" +EXPORTS +LogL10fromY +LogL10toY +LogL16fromY +LogL16toY +LogLuv24fromXYZ +LogLuv24toXYZ +LogLuv32fromXYZ +LogLuv32toXYZ +TIFFAccessTagMethods +TIFFCIELabToRGBInit +TIFFCIELabToXYZ +TIFFCheckTile +TIFFCheckpointDirectory +TIFFCleanup +TIFFClientOpen +TIFFClientdata +TIFFClose +TIFFComputeStrip +TIFFComputeTile +TIFFCreateCustomDirectory +TIFFCreateDirectory +TIFFCreateEXIFDirectory +TIFFCreateGPSDirectory +TIFFCurrentDirOffset +TIFFCurrentDirectory +TIFFCurrentRow +TIFFCurrentStrip +TIFFCurrentTile +TIFFDataWidth +TIFFDefaultDirectory +TIFFDefaultStripSize +TIFFDefaultTileSize +TIFFDeferStrileArrayWriting +TIFFError +TIFFErrorExt +TIFFFaxBlackCodes DATA +TIFFFaxBlackTable DATA +TIFFFaxMainTable DATA +TIFFFaxWhiteCodes DATA +TIFFFaxWhiteTable DATA +TIFFFdOpen +TIFFFieldDataType +TIFFFieldIsAnonymous +TIFFFieldName +TIFFFieldPassCount +TIFFFieldReadCount +TIFFFieldSetGetCountSize +TIFFFieldSetGetSize +TIFFFieldTag +TIFFFieldWithName +TIFFFieldWithTag +TIFFFieldWriteCount +TIFFFileName +TIFFFileno +TIFFFillStrip +TIFFFillTile +TIFFFindCODEC +TIFFFindField +TIFFFlush +TIFFFlushData +TIFFFlushData1 +TIFFForceStrileArrayWriting +TIFFFreeDirectory +TIFFGetBitRevTable +TIFFGetClientInfo +TIFFGetCloseProc +TIFFGetConfiguredCODECs +TIFFGetField +TIFFGetFieldDefaulted +TIFFGetMapFileProc +TIFFGetMode +TIFFGetReadProc +TIFFGetSeekProc +TIFFGetSizeProc +TIFFGetStrileByteCount +TIFFGetStrileByteCountWithErr +TIFFGetStrileOffset +TIFFGetStrileOffsetWithErr +TIFFGetTagListCount +TIFFGetTagListEntry +TIFFGetUnmapFileProc +TIFFGetVersion +TIFFGetWriteProc +TIFFInitCCITTFax3 +TIFFInitCCITTFax4 +TIFFInitCCITTRLE +TIFFInitCCITTRLEW +TIFFInitDumpMode +TIFFInitJPEG +TIFFInitLZW +TIFFInitNeXT +TIFFInitOJPEG +TIFFInitPackBits +TIFFInitPixarLog +TIFFInitSGILog +TIFFInitThunderScan +TIFFInitWebP +TIFFInitZIP +TIFFIsBigEndian +TIFFIsBigTIFF +TIFFIsByteSwapped +TIFFIsCODECConfigured +TIFFIsMSB2LSB +TIFFIsTiled +TIFFIsUpSampled +TIFFJPEGIsFullStripRequired +TIFFLastDirectory +TIFFMergeFieldInfo +TIFFNumberOfDirectories +TIFFNumberOfStrips +TIFFNumberOfTiles +TIFFOpen +TIFFOpenW +TIFFPredictorCleanup +TIFFPredictorInit +TIFFPrintDirectory +TIFFRGBAImageBegin +TIFFRGBAImageEnd +TIFFRGBAImageGet +TIFFRGBAImageOK +TIFFRasterScanlineSize +TIFFRasterScanlineSize64 +TIFFRawStripSize +TIFFRawStripSize64 +TIFFReadBufferSetup +TIFFReadCustomDirectory +TIFFReadDirectory +TIFFReadEXIFDirectory +TIFFReadEncodedStrip +TIFFReadEncodedTile +TIFFReadFromUserBuffer +TIFFReadGPSDirectory +TIFFReadRGBAImage +TIFFReadRGBAImageOriented +TIFFReadRGBAStrip +TIFFReadRGBAStripExt +TIFFReadRGBATile +TIFFReadRGBATileExt +TIFFReadRawStrip +TIFFReadRawTile +TIFFReadScanline +TIFFReadTile +TIFFRegisterCODEC +TIFFReverseBits +TIFFRewriteDirectory +TIFFScanlineSize +TIFFScanlineSize64 +TIFFSetClientInfo +TIFFSetClientdata +TIFFSetCompressionScheme +TIFFSetDirectory +TIFFSetErrorHandler +TIFFSetErrorHandlerExt +TIFFSetField +TIFFSetFileName +TIFFSetFileno +TIFFSetMode +TIFFSetSubDirectory +TIFFSetTagExtender +TIFFSetWarningHandler +TIFFSetWarningHandlerExt +TIFFSetWriteOffset +TIFFSetupStrips +TIFFStripSize +TIFFStripSize64 +TIFFSwabArrayOfDouble +TIFFSwabArrayOfFloat +TIFFSwabArrayOfLong +TIFFSwabArrayOfLong8 +TIFFSwabArrayOfShort +TIFFSwabArrayOfTriples +TIFFSwabDouble +TIFFSwabFloat +TIFFSwabLong +TIFFSwabLong8 +TIFFSwabShort +TIFFTileRowSize +TIFFTileRowSize64 +TIFFTileSize +TIFFTileSize64 +TIFFUnRegisterCODEC +TIFFUnlinkDirectory +TIFFUnsetField +TIFFVGetField +TIFFVGetFieldDefaulted +TIFFVSetField +TIFFVStripSize +TIFFVStripSize64 +TIFFVTileSize +TIFFVTileSize64 +TIFFWarning +TIFFWarningExt +TIFFWriteBufferSetup +TIFFWriteCheck +TIFFWriteCustomDirectory +TIFFWriteDirectory +TIFFWriteEncodedStrip +TIFFWriteEncodedTile +TIFFWriteRawStrip +TIFFWriteRawTile +TIFFWriteScanline +TIFFWriteTile +TIFFXYZToRGB +TIFFYCbCrToRGBInit +TIFFYCbCrtoRGB +XYZtoRGB24 +_TIFFBuiltinCODECS DATA +_TIFFCastUInt64ToSSize +_TIFFCheckFieldIsValidForCodec +_TIFFCheckMalloc +_TIFFCheckRealloc +_TIFFClampDoubleToFloat +_TIFFCreateAnonField +_TIFFDefaultStripSize +_TIFFDefaultTileSize +_TIFFFax3fillruns +_TIFFFillStriles +_TIFFFindOrRegisterField +_TIFFGetExifFields +_TIFFGetFields +_TIFFGetGpsFields +_TIFFMergeFields +_TIFFMultiply32 +_TIFFMultiply64 +_TIFFMultiplySSize +_TIFFNoPostDecode +_TIFFNoPreCode +_TIFFNoRowDecode +_TIFFNoRowEncode +_TIFFNoSeek +_TIFFNoStripDecode +_TIFFNoStripEncode +_TIFFNoTileDecode +_TIFFNoTileEncode +_TIFFPrintFieldInfo +_TIFFReadEncodedStripAndAllocBuffer +_TIFFReadEncodedTileAndAllocBuffer +_TIFFReadTileAndAllocBuffer +_TIFFRewriteField +_TIFFSeekOK +_TIFFSetDefaultCompressionState +_TIFFSetupFields +_TIFFSwab16BitData +_TIFFSwab24BitData +_TIFFSwab32BitData +_TIFFSwab64BitData +_TIFFUInt64ToDouble +_TIFFUInt64ToFloat +_TIFFcalloc +_TIFFerrorHandler DATA +_TIFFerrorHandlerExt DATA +_TIFFfree +_TIFFgetMode +_TIFFmalloc +_TIFFmemcmp +_TIFFmemcpy +_TIFFmemset +_TIFFprintAscii +_TIFFprintAsciiTag +_TIFFrealloc +_TIFFsetByteArray +_TIFFsetDoubleArray +_TIFFsetFloatArray +_TIFFsetLongArray +_TIFFsetShortArray +_TIFFwarningHandler DATA +_TIFFwarningHandlerExt DATA +uv_decode +uv_encode diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.dll.a new file mode 100644 index 0000000..b2eb650 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.lib new file mode 100644 index 0000000..b2eb650 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libtiff.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.def new file mode 100644 index 0000000..ab722d3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.def @@ -0,0 +1,40 @@ +; +; Definition file of libunwind.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libunwind.dll" +EXPORTS +_GCC_specific_handler +_Unwind_Backtrace +_Unwind_DeleteException +_Unwind_FindEnclosingFunction +_Unwind_Find_FDE +_Unwind_ForcedUnwind +_Unwind_GetCFA +_Unwind_GetDataRelBase +_Unwind_GetGR +_Unwind_GetIP +_Unwind_GetIPInfo +_Unwind_GetLanguageSpecificData +_Unwind_GetRegionStart +_Unwind_GetTextRelBase +_Unwind_RaiseException +_Unwind_Resume +_Unwind_Resume_or_Rethrow +_Unwind_SetGR +_Unwind_SetIP +unw_get_fpreg +unw_get_proc_info +unw_get_proc_name +unw_get_reg +unw_getcontext +unw_init_local +unw_is_fpreg +unw_is_signal_frame +unw_local_addr_space DATA +unw_regname +unw_resume +unw_set_fpreg +unw_set_reg +unw_step diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.dll.a new file mode 100644 index 0000000..ca996a5 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.lib new file mode 100644 index 0000000..ca996a5 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libunwind.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.def new file mode 100644 index 0000000..baf8c90 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.def @@ -0,0 +1,482 @@ +; +; Definition file of libvips-cpp-42.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libvips-cpp-42.dll" +EXPORTS +_ZN4vips10to_vectorvEiz +_ZN4vips12VInterpolate13new_from_nameEPKcPNS_7VOptionE +_ZN4vips6VImage10gaussnoiseEiiPNS_7VOptionE +_ZN4vips6VImage10magickloadEPKcPNS_7VOptionE +_ZN4vips6VImage10mask_idealEiidPNS_7VOptionE +_ZN4vips6VImage10matrixloadEPKcPNS_7VOptionE +_ZN4vips6VImage10new_matrixEii +_ZN4vips6VImage11analyzeloadEPKcPNS_7VOptionE +_ZN4vips6VImage11new_matrixvEiiz +_ZN4vips6VImage11openexrloadEPKcPNS_7VOptionE +_ZN4vips6VImage12mask_fractalEiidPNS_7VOptionE +_ZN4vips6VImage12profile_loadEPKcPNS_7VOptionE +_ZN4vips6VImage12switch_imageENSt3__16vectorIS0_NS1_9allocatorIS0_EEEEPNS_7VOptionE +_ZN4vips6VImage13mask_gaussianEiiddPNS_7VOptionE +_ZN4vips6VImage13new_from_fileEPKcPNS_7VOptionE +_ZN4vips6VImage13openslideloadEPKcPNS_7VOptionE +_ZN4vips6VImage14csvload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage14gifload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage14gifload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage14jxlload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage14jxlload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage14pdfload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage14pdfload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage14pngload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage14pngload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage14ppmload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage14radload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage14radload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage14svgload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage14svgload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage15fitsload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage15heifload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage15heifload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage15jp2kload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage15jp2kload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage15jpegload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage15jpegload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage15mask_ideal_bandEiidddPNS_7VOptionE +_ZN4vips6VImage15mask_ideal_ringEiiddPNS_7VOptionE +_ZN4vips6VImage15new_from_bufferEPKvyPKcPNS_7VOptionE +_ZN4vips6VImage15new_from_bufferERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPKcPNS_7VOptionE +_ZN4vips6VImage15new_from_sourceENS_7VSourceEPKcPNS_7VOptionE +_ZN4vips6VImage15tiffload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage15tiffload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage15vipsload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage15webpload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage15webpload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage16mask_butterworthEiidddPNS_7VOptionE +_ZN4vips6VImage16niftiload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage16thumbnail_bufferEP9_VipsBlobiPNS_7VOptionE +_ZN4vips6VImage16thumbnail_sourceENS_7VSourceEiPNS_7VOptionE +_ZN4vips6VImage17magickload_bufferEP9_VipsBlobPNS_7VOptionE +_ZN4vips6VImage17matrixload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage18call_option_stringEPKcS2_PNS_7VOptionE +_ZN4vips6VImage18mask_gaussian_bandEiiddddPNS_7VOptionE +_ZN4vips6VImage18mask_gaussian_ringEiidddPNS_7VOptionE +_ZN4vips6VImage20openslideload_sourceENS_7VSourceEPNS_7VOptionE +_ZN4vips6VImage21mask_butterworth_bandEiidddddPNS_7VOptionE +_ZN4vips6VImage21mask_butterworth_ringEiiddddPNS_7VOptionE +_ZN4vips6VImage21new_from_memory_stealEPvyiii14VipsBandFormat +_ZN4vips6VImage3eyeEiiPNS_7VOptionE +_ZN4vips6VImage3sumENSt3__16vectorIS0_NS1_9allocatorIS0_EEEEPNS_7VOptionE +_ZN4vips6VImage3xyzEiiPNS_7VOptionE +_ZN4vips6VImage4callEPKcPNS_7VOptionE +_ZN4vips6VImage4greyEiiPNS_7VOptionE +_ZN4vips6VImage4textEPKcPNS_7VOptionE +_ZN4vips6VImage4zoneEiiPNS_7VOptionE +_ZN4vips6VImage5blackEiiPNS_7VOptionE +_ZN4vips6VImage5sinesEiiPNS_7VOptionE +_ZN4vips6VImage6logmatEddPNS_7VOptionE +_ZN4vips6VImage6perlinEiiPNS_7VOptionE +_ZN4vips6VImage6systemEPKcPNS_7VOptionE +_ZN4vips6VImage6worleyEiiPNS_7VOptionE +_ZN4vips6VImage7csvloadEPKcPNS_7VOptionE +_ZN4vips6VImage7gifloadEPKcPNS_7VOptionE +_ZN4vips6VImage7jxlloadEPKcPNS_7VOptionE +_ZN4vips6VImage7matloadEPKcPNS_7VOptionE +_ZN4vips6VImage7pdfloadEPKcPNS_7VOptionE +_ZN4vips6VImage7pngloadEPKcPNS_7VOptionE +_ZN4vips6VImage7ppmloadEPKcPNS_7VOptionE +_ZN4vips6VImage7radloadEPKcPNS_7VOptionE +_ZN4vips6VImage7rawloadEPKciiiPNS_7VOptionE +_ZN4vips6VImage7svgloadEPKcPNS_7VOptionE +_ZN4vips6VImage7tonelutEPNS_7VOptionE +_ZN4vips6VImage8bandjoinENSt3__16vectorIS0_NS1_9allocatorIS0_EEEEPNS_7VOptionE +_ZN4vips6VImage8bandrankENSt3__16vectorIS0_NS1_9allocatorIS0_EEEEPNS_7VOptionE +_ZN4vips6VImage8fitsloadEPKcPNS_7VOptionE +_ZN4vips6VImage8gaussmatEddPNS_7VOptionE +_ZN4vips6VImage8heifloadEPKcPNS_7VOptionE +_ZN4vips6VImage8identityEPNS_7VOptionE +_ZN4vips6VImage8jp2kloadEPKcPNS_7VOptionE +_ZN4vips6VImage8jpegloadEPKcPNS_7VOptionE +_ZN4vips6VImage8tiffloadEPKcPNS_7VOptionE +_ZN4vips6VImage8vipsloadEPKcPNS_7VOptionE +_ZN4vips6VImage8webploadEPKcPNS_7VOptionE +_ZN4vips6VImage9arrayjoinENSt3__16vectorIS0_NS1_9allocatorIS0_EEEEPNS_7VOptionE +_ZN4vips6VImage9compositeENSt3__16vectorIS0_NS1_9allocatorIS0_EEEENS2_IiNS3_IiEEEEPNS_7VOptionE +_ZN4vips6VImage9fractsurfEiidPNS_7VOptionE +_ZN4vips6VImage9niftiloadEPKcPNS_7VOptionE +_ZN4vips6VImage9thumbnailEPKciPNS_7VOptionE +_ZN4vips6invertENSt3__16vectorIdNS0_9allocatorIdEEEE +_ZN4vips6negateENSt3__16vectorIdNS0_9allocatorIdEEEE +_ZN4vips7VOption13get_operationEP14_VipsOperation +_ZN4vips7VOption13set_operationEP14_VipsOperation +_ZN4vips7VOption3setEPKcNS_7VObjectE +_ZN4vips7VOption3setEPKcNSt3__16vectorINS_6VImageENS3_9allocatorIS5_EEEE +_ZN4vips7VOption3setEPKcNSt3__16vectorIdNS3_9allocatorIdEEEE +_ZN4vips7VOption3setEPKcNSt3__16vectorIiNS3_9allocatorIiEEEE +_ZN4vips7VOption3setEPKcP9_VipsBlob +_ZN4vips7VOption3setEPKcPNS_6VImageE +_ZN4vips7VOption3setEPKcPNSt3__16vectorIdNS3_9allocatorIdEEEE +_ZN4vips7VOption3setEPKcPP9_VipsBlob +_ZN4vips7VOption3setEPKcPb +_ZN4vips7VOption3setEPKcPd +_ZN4vips7VOption3setEPKcPi +_ZN4vips7VOption3setEPKcS2_ +_ZN4vips7VOption3setEPKcb +_ZN4vips7VOption3setEPKcd +_ZN4vips7VOption3setEPKci +_ZN4vips7VOption3setEPKcy +_ZN4vips7VOptionD0Ev +_ZN4vips7VOptionD1Ev +_ZN4vips7VOptionD2Ev +_ZN4vips7VRegion14new_from_imageENS_6VImageE +_ZN4vips7VSource13new_from_blobEP9_VipsBlob +_ZN4vips7VSource13new_from_fileEPKc +_ZN4vips7VSource15new_from_memoryEPKvy +_ZN4vips7VSource16new_from_optionsEPKc +_ZN4vips7VSource19new_from_descriptorEi +_ZN4vips7VTarget11new_to_fileEPKc +_ZN4vips7VTarget13new_to_memoryEv +_ZN4vips7VTarget17new_to_descriptorEi +_ZN4vips9to_vectorEd +_ZN4vips9to_vectorEiPd +_ZN4vipsaNERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipsaNERNS_6VImageES0_ +_ZN4vipsaNERNS_6VImageEd +_ZN4vipsanENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsanENS_6VImageES0_ +_ZN4vipsanENS_6VImageEd +_ZN4vipsanENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsanEdNS_6VImageE +_ZN4vipsdVERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipsdVERNS_6VImageES0_ +_ZN4vipsdVERNS_6VImageEd +_ZN4vipsdvENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsdvENS_6VImageES0_ +_ZN4vipsdvENS_6VImageEd +_ZN4vipsdvENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsdvEdNS_6VImageE +_ZN4vipseOERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipseOERNS_6VImageES0_ +_ZN4vipseOERNS_6VImageEd +_ZN4vipseoENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipseoENS_6VImageES0_ +_ZN4vipseoENS_6VImageEd +_ZN4vipseoENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipseoEdNS_6VImageE +_ZN4vipseqENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipseqENS_6VImageES0_ +_ZN4vipseqENS_6VImageEd +_ZN4vipseqENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipseqEdNS_6VImageE +_ZN4vipsgeENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsgeENS_6VImageES0_ +_ZN4vipsgeENS_6VImageEd +_ZN4vipsgeENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsgeEdNS_6VImageE +_ZN4vipsgtENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsgtENS_6VImageES0_ +_ZN4vipsgtENS_6VImageEd +_ZN4vipsgtENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsgtEdNS_6VImageE +_ZN4vipslSERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipslSERNS_6VImageES0_ +_ZN4vipslSERNS_6VImageEd +_ZN4vipsleENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsleENS_6VImageES0_ +_ZN4vipsleENS_6VImageEd +_ZN4vipsleENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsleEdNS_6VImageE +_ZN4vipslsENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipslsENS_6VImageES0_ +_ZN4vipslsENS_6VImageEd +_ZN4vipsltENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsltENS_6VImageES0_ +_ZN4vipsltENS_6VImageEd +_ZN4vipsltENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsltEdNS_6VImageE +_ZN4vipsmIERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipsmIERNS_6VImageES0_ +_ZN4vipsmIERNS_6VImageEd +_ZN4vipsmLERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipsmLERNS_6VImageES0_ +_ZN4vipsmLERNS_6VImageEd +_ZN4vipsmiENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsmiENS_6VImageES0_ +_ZN4vipsmiENS_6VImageEd +_ZN4vipsmiENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsmiEdNS_6VImageE +_ZN4vipsmlENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsmlENS_6VImageES0_ +_ZN4vipsmlENS_6VImageEd +_ZN4vipsmlENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsmlEdNS_6VImageE +_ZN4vipsneENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsneENS_6VImageES0_ +_ZN4vipsneENS_6VImageEd +_ZN4vipsneENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsneEdNS_6VImageE +_ZN4vipsngENS_6VImageE +_ZN4vipsoRERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipsoRERNS_6VImageES0_ +_ZN4vipsoRERNS_6VImageEd +_ZN4vipsorENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsorENS_6VImageES0_ +_ZN4vipsorENS_6VImageEd +_ZN4vipsorENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsorEdNS_6VImageE +_ZN4vipspLERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipspLERNS_6VImageES0_ +_ZN4vipspLERNS_6VImageEd +_ZN4vipsplENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsplENS_6VImageES0_ +_ZN4vipsplENS_6VImageEd +_ZN4vipsplENSt3__16vectorIdNS0_9allocatorIdEEEENS_6VImageE +_ZN4vipsplEdNS_6VImageE +_ZN4vipsrMERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipsrMERNS_6VImageES0_ +_ZN4vipsrMERNS_6VImageEd +_ZN4vipsrSERNS_6VImageENSt3__16vectorIdNS2_9allocatorIdEEEE +_ZN4vipsrSERNS_6VImageES0_ +_ZN4vipsrSERNS_6VImageEd +_ZN4vipsrmENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsrmENS_6VImageES0_ +_ZN4vipsrmENS_6VImageEd +_ZN4vipsrsENS_6VImageENSt3__16vectorIdNS1_9allocatorIdEEEE +_ZN4vipsrsENS_6VImageES0_ +_ZN4vipsrsENS_6VImageEd +_ZNK4vips6VError13ostream_printERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE +_ZNK4vips6VImage10bandunfoldEPNS_7VOptionE +_ZNK4vips6VImage10case_imageENSt3__16vectorIS0_NS1_9allocatorIS0_EEEEPNS_7VOptionE +_ZNK4vips6VImage10complexgetE23VipsOperationComplexgetPNS_7VOptionE +_ZNK4vips6VImage10composite2ES0_13VipsBlendModePNS_7VOptionE +_ZNK4vips6VImage10countlinesE13VipsDirectionPNS_7VOptionE +_ZNK4vips6VImage10draw_floodENSt3__16vectorIdNS1_9allocatorIdEEEEiiPNS_7VOptionE +_ZNK4vips6VImage10draw_imageES0_iiPNS_7VOptionE +_ZNK4vips6VImage10hist_equalEPNS_7VOptionE +_ZNK4vips6VImage10hist_localEiiPNS_7VOptionE +_ZNK4vips6VImage10hist_matchES0_PNS_7VOptionE +_ZNK4vips6VImage10hough_lineEPNS_7VOptionE +_ZNK4vips6VImage10icc_exportEPNS_7VOptionE +_ZNK4vips6VImage10icc_importEPNS_7VOptionE +_ZNK4vips6VImage10ifthenelseES0_S0_PNS_7VOptionE +_ZNK4vips6VImage10magicksaveEPKcPNS_7VOptionE +_ZNK4vips6VImage10matrixsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage10rawsave_fdEiPNS_7VOptionE +_ZNK4vips6VImage10relationalES0_23VipsOperationRelationalPNS_7VOptionE +_ZNK4vips6VImage10sRGB2scRGBEPNS_7VOptionE +_ZNK4vips6VImage10scRGB2sRGBEPNS_7VOptionE +_ZNK4vips6VImage10sequentialEPNS_7VOptionE +_ZNK4vips6VImage10similarityEPNS_7VOptionE +_ZNK4vips6VImage11colourspaceE18VipsInterpretationPNS_7VOptionE +_ZNK4vips6VImage11complexformES0_PNS_7VOptionE +_ZNK4vips6VImage11draw_circleENSt3__16vectorIdNS1_9allocatorIdEEEEiiiPNS_7VOptionE +_ZNK4vips6VImage11draw_smudgeEiiiiPNS_7VOptionE +_ZNK4vips6VImage11falsecolourEPNS_7VOptionE +_ZNK4vips6VImage11math2_constE18VipsOperationMath2NSt3__16vectorIdNS2_9allocatorIdEEEEPNS_7VOptionE +_ZNK4vips6VImage11matrixprintEPNS_7VOptionE +_ZNK4vips6VImage11premultiplyEPNS_7VOptionE +_ZNK4vips6VImage11transpose3dEPNS_7VOptionE +_ZNK4vips6VImage12extract_areaEiiiiPNS_7VOptionE +_ZNK4vips6VImage12extract_bandEiPNS_7VOptionE +_ZNK4vips6VImage12fill_nearestEPNS_7VOptionE +_ZNK4vips6VImage12hist_entropyEPNS_7VOptionE +_ZNK4vips6VImage12hough_circleEPNS_7VOptionE +_ZNK4vips6VImage12labelregionsEPNS_7VOptionE +_ZNK4vips6VImage12matrixinvertEPNS_7VOptionE +_ZNK4vips6VImage13boolean_constE20VipsOperationBooleanNSt3__16vectorIdNS2_9allocatorIdEEEEPNS_7VOptionE +_ZNK4vips6VImage13dzsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage13dzsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage13globalbalanceEPNS_7VOptionE +_ZNK4vips6VImage13icc_transformEPKcPNS_7VOptionE +_ZNK4vips6VImage13jpegsave_mimeEPNS_7VOptionE +_ZNK4vips6VImage13unpremultiplyEPNS_7VOptionE +_ZNK4vips6VImage13write_to_fileEPKcPNS_7VOptionE +_ZNK4vips6VImage14bandjoin_constENSt3__16vectorIdNS1_9allocatorIdEEEEPNS_7VOptionE +_ZNK4vips6VImage14csvsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage14gifsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage14gifsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage14hist_find_ndimEPNS_7VOptionE +_ZNK4vips6VImage14jxlsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage14jxlsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage14pngsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage14pngsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage14ppmsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage14radsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage14radsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage15heifsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage15heifsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage15jp2ksave_bufferEPNS_7VOptionE +_ZNK4vips6VImage15jp2ksave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage15jpegsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage15jpegsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage15remainder_constENSt3__16vectorIdNS1_9allocatorIdEEEEPNS_7VOptionE +_ZNK4vips6VImage15thumbnail_imageEiPNS_7VOptionE +_ZNK4vips6VImage15tiffsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage15tiffsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage15vipssave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage15webpsave_bufferEPNS_7VOptionE +_ZNK4vips6VImage15webpsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage15write_to_bufferEPKcPPvPyPNS_7VOptionE +_ZNK4vips6VImage15write_to_targetEPKcNS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage16hist_ismonotonicEPNS_7VOptionE +_ZNK4vips6VImage16relational_constE23VipsOperationRelationalNSt3__16vectorIdNS2_9allocatorIdEEEEPNS_7VOptionE +_ZNK4vips6VImage17hist_find_indexedES0_PNS_7VOptionE +_ZNK4vips6VImage17magicksave_bufferEPNS_7VOptionE +_ZNK4vips6VImage17matrixsave_targetENS_7VTargetEPNS_7VOptionE +_ZNK4vips6VImage3absEPNS_7VOptionE +_ZNK4vips6VImage3addES0_PNS_7VOptionE +_ZNK4vips6VImage3avgEPNS_7VOptionE +_ZNK4vips6VImage3maxEPNS_7VOptionE +_ZNK4vips6VImage3minEPNS_7VOptionE +_ZNK4vips6VImage3msbEPNS_7VOptionE +_ZNK4vips6VImage3rotE9VipsAnglePNS_7VOptionE +_ZNK4vips6VImage4castE14VipsBandFormatPNS_7VOptionE +_ZNK4vips6VImage4convES0_PNS_7VOptionE +_ZNK4vips6VImage4copyEPNS_7VOptionE +_ZNK4vips6VImage4cropEiiiiPNS_7VOptionE +_ZNK4vips6VImage4dE00ES0_PNS_7VOptionE +_ZNK4vips6VImage4dE76ES0_PNS_7VOptionE +_ZNK4vips6VImage4flipE13VipsDirectionPNS_7VOptionE +_ZNK4vips6VImage4gridEiiiPNS_7VOptionE +_ZNK4vips6VImage4joinES0_13VipsDirectionPNS_7VOptionE +_ZNK4vips6VImage4mathE17VipsOperationMathPNS_7VOptionE +_ZNK4vips6VImage4rankEiiiPNS_7VOptionE +_ZNK4vips6VImage4signEPNS_7VOptionE +_ZNK4vips6VImage4wrapEPNS_7VOptionE +_ZNK4vips6VImage4zoomEiiPNS_7VOptionE +_ZNK4vips6VImage5cacheEPNS_7VOptionE +_ZNK4vips6VImage5cannyEPNS_7VOptionE +_ZNK4vips6VImage5convaES0_PNS_7VOptionE +_ZNK4vips6VImage5convfES0_PNS_7VOptionE +_ZNK4vips6VImage5conviES0_PNS_7VOptionE +_ZNK4vips6VImage5dECMCES0_PNS_7VOptionE +_ZNK4vips6VImage5embedEiiiiPNS_7VOptionE +_ZNK4vips6VImage5fwfftEPNS_7VOptionE +_ZNK4vips6VImage5gammaEPNS_7VOptionE +_ZNK4vips6VImage5mapimES0_PNS_7VOptionE +_ZNK4vips6VImage5matchES0_iiiiiiiiPNS_7VOptionE +_ZNK4vips6VImage5math2ES0_18VipsOperationMath2PNS_7VOptionE +_ZNK4vips6VImage5mergeES0_13VipsDirectioniiPNS_7VOptionE +_ZNK4vips6VImage5morphES0_23VipsOperationMorphologyPNS_7VOptionE +_ZNK4vips6VImage5rot45EPNS_7VOptionE +_ZNK4vips6VImage5roundE18VipsOperationRoundPNS_7VOptionE +_ZNK4vips6VImage5scaleEPNS_7VOptionE +_ZNK4vips6VImage5sobelEPNS_7VOptionE +_ZNK4vips6VImage5spcorES0_PNS_7VOptionE +_ZNK4vips6VImage5statsEPNS_7VOptionE +_ZNK4vips6VImage5stdifEiiPNS_7VOptionE +_ZNK4vips6VImage5writeES0_ +_ZNK4vips6VImage6affineENSt3__16vectorIdNS1_9allocatorIdEEEEPNS_7VOptionE +_ZNK4vips6VImage6divideES0_PNS_7VOptionE +_ZNK4vips6VImage6dzsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage6insertES0_iiPNS_7VOptionE +_ZNK4vips6VImage6invertEPNS_7VOptionE +_ZNK4vips6VImage6invfftEPNS_7VOptionE +_ZNK4vips6VImage6linearENSt3__16vectorIdNS1_9allocatorIdEEEES5_PNS_7VOptionE +_ZNK4vips6VImage6maplutES0_PNS_7VOptionE +_ZNK4vips6VImage6maxposEPNS_7VOptionE +_ZNK4vips6VImage6minposEPNS_7VOptionE +_ZNK4vips6VImage6mosaicES0_13VipsDirectioniiiiPNS_7VOptionE +_ZNK4vips6VImage6recombES0_PNS_7VOptionE +_ZNK4vips6VImage6reduceEddPNS_7VOptionE +_ZNK4vips6VImage6regionEP9_VipsRect +_ZNK4vips6VImage6regionEiiii +_ZNK4vips6VImage6regionEv +_ZNK4vips6VImage6resizeEdPNS_7VOptionE +_ZNK4vips6VImage6rotateEdPNS_7VOptionE +_ZNK4vips6VImage6shrinkEddPNS_7VOptionE +_ZNK4vips6VImage7CMC2LChEPNS_7VOptionE +_ZNK4vips6VImage7LCh2CMCEPNS_7VOptionE +_ZNK4vips6VImage7LCh2LabEPNS_7VOptionE +_ZNK4vips6VImage7Lab2LChEPNS_7VOptionE +_ZNK4vips6VImage7Lab2XYZEPNS_7VOptionE +_ZNK4vips6VImage7XYZ2LabEPNS_7VOptionE +_ZNK4vips6VImage7XYZ2YxyEPNS_7VOptionE +_ZNK4vips6VImage7Yxy2XYZEPNS_7VOptionE +_ZNK4vips6VImage7autorotEPNS_7VOptionE +_ZNK4vips6VImage7booleanES0_20VipsOperationBooleanPNS_7VOptionE +_ZNK4vips6VImage7compassES0_PNS_7VOptionE +_ZNK4vips6VImage7complexE20VipsOperationComplexPNS_7VOptionE +_ZNK4vips6VImage7convsepES0_PNS_7VOptionE +_ZNK4vips6VImage7csvsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage7deviateEPNS_7VOptionE +_ZNK4vips6VImage7fastcorES0_PNS_7VOptionE +_ZNK4vips6VImage7flattenEPNS_7VOptionE +_ZNK4vips6VImage7gifsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage7gravityE20VipsCompassDirectioniiPNS_7VOptionE +_ZNK4vips6VImage7jxlsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage7measureEiiPNS_7VOptionE +_ZNK4vips6VImage7mosaic1ES0_13VipsDirectioniiiiiiiiPNS_7VOptionE +_ZNK4vips6VImage7percentEdPNS_7VOptionE +_ZNK4vips6VImage7pngsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage7ppmsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage7profileEPS0_PNS_7VOptionE +_ZNK4vips6VImage7projectEPS0_PNS_7VOptionE +_ZNK4vips6VImage7radsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage7rawsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage7reducehEdPNS_7VOptionE +_ZNK4vips6VImage7reducevEdPNS_7VOptionE +_ZNK4vips6VImage7sharpenEPNS_7VOptionE +_ZNK4vips6VImage7shrinkhEiPNS_7VOptionE +_ZNK4vips6VImage7shrinkvEiPNS_7VOptionE +_ZNK4vips6VImage8CMYK2XYZEPNS_7VOptionE +_ZNK4vips6VImage8HSV2sRGBEPNS_7VOptionE +_ZNK4vips6VImage8Lab2LabQEPNS_7VOptionE +_ZNK4vips6VImage8Lab2LabSEPNS_7VOptionE +_ZNK4vips6VImage8LabQ2LabEPNS_7VOptionE +_ZNK4vips6VImage8LabS2LabEPNS_7VOptionE +_ZNK4vips6VImage8XYZ2CMYKEPNS_7VOptionE +_ZNK4vips6VImage8bandboolE20VipsOperationBooleanPNS_7VOptionE +_ZNK4vips6VImage8bandfoldEPNS_7VOptionE +_ZNK4vips6VImage8bandjoinES0_PNS_7VOptionE +_ZNK4vips6VImage8bandmeanEPNS_7VOptionE +_ZNK4vips6VImage8buildlutEPNS_7VOptionE +_ZNK4vips6VImage8byteswapEPNS_7VOptionE +_ZNK4vips6VImage8complex2ES0_21VipsOperationComplex2PNS_7VOptionE +_ZNK4vips6VImage8convasepES0_PNS_7VOptionE +_ZNK4vips6VImage8fitssaveEPKcPNS_7VOptionE +_ZNK4vips6VImage8freqmultES0_PNS_7VOptionE +_ZNK4vips6VImage8getpointEiiPNS_7VOptionE +_ZNK4vips6VImage8heifsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage8hist_cumEPNS_7VOptionE +_ZNK4vips6VImage8jp2ksaveEPKcPNS_7VOptionE +_ZNK4vips6VImage8jpegsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage8multiplyES0_PNS_7VOptionE +_ZNK4vips6VImage8phasecorES0_PNS_7VOptionE +_ZNK4vips6VImage8sRGB2HSVEPNS_7VOptionE +_ZNK4vips6VImage8scRGB2BWEPNS_7VOptionE +_ZNK4vips6VImage8spectrumEPNS_7VOptionE +_ZNK4vips6VImage8subtractES0_PNS_7VOptionE +_ZNK4vips6VImage8tiffsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage8vipssaveEPKcPNS_7VOptionE +_ZNK4vips6VImage8webpsaveEPKcPNS_7VOptionE +_ZNK4vips6VImage9LabQ2LabSEPNS_7VOptionE +_ZNK4vips6VImage9LabQ2sRGBEPNS_7VOptionE +_ZNK4vips6VImage9LabS2LabQEPNS_7VOptionE +_ZNK4vips6VImage9XYZ2scRGBEPNS_7VOptionE +_ZNK4vips6VImage9bandsplitEPNS_7VOptionE +_ZNK4vips6VImage9compositeES0_13VipsBlendModePNS_7VOptionE +_ZNK4vips6VImage9draw_lineENSt3__16vectorIdNS1_9allocatorIdEEEEiiiiPNS_7VOptionE +_ZNK4vips6VImage9draw_maskENSt3__16vectorIdNS1_9allocatorIdEEEES0_iiPNS_7VOptionE +_ZNK4vips6VImage9draw_rectENSt3__16vectorIdNS1_9allocatorIdEEEEiiiiPNS_7VOptionE +_ZNK4vips6VImage9find_trimEPiS1_S1_PNS_7VOptionE +_ZNK4vips6VImage9float2radEPNS_7VOptionE +_ZNK4vips6VImage9gaussblurEdPNS_7VOptionE +_ZNK4vips6VImage9hist_findEPNS_7VOptionE +_ZNK4vips6VImage9hist_normEPNS_7VOptionE +_ZNK4vips6VImage9hist_plotEPNS_7VOptionE +_ZNK4vips6VImage9invertlutEPNS_7VOptionE +_ZNK4vips6VImage9linecacheEPNS_7VOptionE +_ZNK4vips6VImage9niftisaveEPKcPNS_7VOptionE +_ZNK4vips6VImage9quadraticES0_PNS_7VOptionE +_ZNK4vips6VImage9rad2floatEPNS_7VOptionE +_ZNK4vips6VImage9remainderES0_PNS_7VOptionE +_ZNK4vips6VImage9replicateEiiPNS_7VOptionE +_ZNK4vips6VImage9scRGB2XYZEPNS_7VOptionE +_ZNK4vips6VImage9smartcropEiiPNS_7VOptionE +_ZNK4vips6VImage9subsampleEiiPNS_7VOptionE +_ZNK4vips6VImage9tilecacheEPNS_7VOptionE +_ZNK4vips6VImageclEii +_ZNK4vips6VImageixEi +_ZTVN4vips6VErrorE DATA +_ZTVN4vips7VOptionE DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.dll.a new file mode 100644 index 0000000..53d327e Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.lib new file mode 100644 index 0000000..53d327e Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips-cpp.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.def new file mode 100644 index 0000000..2cad3e3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.def @@ -0,0 +1,1068 @@ +; +; Definition file of libvips-42.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libvips-42.dll" +EXPORTS +_vips__argument_id DATA +vips_CMC2LCh +vips_CMYK2XYZ +vips_HSV2sRGB +vips_LCh2CMC +vips_LCh2Lab +vips_Lab2LCh +vips_Lab2LabQ +vips_Lab2LabS +vips_Lab2XYZ +vips_LabQ2Lab +vips_LabQ2LabS +vips_LabQ2sRGB +vips_LabS2Lab +vips_LabS2LabQ +vips_XYZ2CMYK +vips_XYZ2Lab +vips_XYZ2Yxy +vips_XYZ2scRGB +vips_Yxy2XYZ +vips__argument_get_instance +vips__exif_parse +vips__exif_update +vips__file_read +vips__filename_split8 +vips__get_bytes +vips__has_extension_block +vips__open +vips__premultiplied_bgra2rgba +vips__read_extension_block +vips__read_header_bytes +vips__region_no_ownership +vips__rgba2bgra_premultiplied +vips__seek +vips__substitute +vips__temp_name +vips__vector_to_ink +vips__write +vips__write_extension_block +vips__write_header_bytes +vips_abs +vips_access_get_type +vips_acos +vips_acosh +vips_add +vips_add_option_entries +vips_addalpha +vips_affine +vips_align_get_type +vips_allocate_input_array +vips_amiMSBfirst +vips_analyzeload +vips_andimage +vips_andimage_const +vips_andimage_const1 +vips_angle45_get_type +vips_angle_get_type +vips_area_copy +vips_area_free_cb +vips_area_get_data +vips_area_get_type +vips_area_new +vips_area_new_array +vips_area_new_array_object +vips_area_unref +vips_argument_class_map +vips_argument_class_needsstring +vips_argument_flags_get_type +vips_argument_get_id +vips_argument_map +vips_array_double_get +vips_array_double_get_type +vips_array_double_new +vips_array_double_newv +vips_array_image_append +vips_array_image_empty +vips_array_image_get +vips_array_image_get_type +vips_array_image_new +vips_array_image_new_from_string +vips_array_image_newv +vips_array_int_get +vips_array_int_get_type +vips_array_int_new +vips_array_int_newv +vips_arrayjoin +vips_asin +vips_asinh +vips_atan +vips_atan2 +vips_atan2_const +vips_atan2_const1 +vips_atanh +vips_autorot +vips_autorot_remove_angle +vips_avg +vips_band_format_get_type +vips_band_format_is8bit +vips_band_format_iscomplex +vips_band_format_isfloat +vips_band_format_isint +vips_band_format_isuint +vips_bandand +vips_bandbool +vips_bandeor +vips_bandfold +vips_bandjoin +vips_bandjoin2 +vips_bandjoin_const +vips_bandjoin_const1 +vips_bandmean +vips_bandor +vips_bandrank +vips_bandunfold +vips_black +vips_blend_mode_get_type +vips_blob_copy +vips_blob_get +vips_blob_get_type +vips_blob_new +vips_blob_set +vips_block_untrusted_set +vips_boolean +vips_boolean_const +vips_boolean_const1 +vips_break_token +vips_buf_all +vips_buf_append_size +vips_buf_appendc +vips_buf_appendd +vips_buf_appendf +vips_buf_appendg +vips_buf_appendgv +vips_buf_appendns +vips_buf_appends +vips_buf_change +vips_buf_destroy +vips_buf_firstline +vips_buf_init +vips_buf_init_dynamic +vips_buf_init_static +vips_buf_is_empty +vips_buf_is_full +vips_buf_len +vips_buf_removec +vips_buf_rewind +vips_buf_set_dynamic +vips_buf_set_static +vips_buf_vappendf +vips_buffer_done +vips_buffer_dump_all +vips_buffer_new +vips_buffer_print +vips_buffer_ref +vips_buffer_undone +vips_buffer_unref +vips_buffer_unref_ref +vips_buildlut +vips_byteswap +vips_cache +vips_cache_drop_all +vips_cache_get_max +vips_cache_get_max_files +vips_cache_get_max_mem +vips_cache_get_size +vips_cache_operation_add +vips_cache_operation_build +vips_cache_operation_buildp +vips_cache_operation_lookup +vips_cache_print +vips_cache_set_dump +vips_cache_set_max +vips_cache_set_max_files +vips_cache_set_max_mem +vips_cache_set_trace +vips_call +vips_call_argv +vips_call_options +vips_call_required_optional +vips_call_split +vips_call_split_option_string +vips_canny +vips_case +vips_cast +vips_cast_char +vips_cast_complex +vips_cast_double +vips_cast_dpcomplex +vips_cast_float +vips_cast_int +vips_cast_short +vips_cast_uchar +vips_cast_uint +vips_cast_ushort +vips_ceil +vips_check_8or16 +vips_check_bandno +vips_check_bands +vips_check_bands_1or3 +vips_check_bands_1orn +vips_check_bands_1orn_unary +vips_check_bands_atleast +vips_check_bands_same +vips_check_coding +vips_check_coding_known +vips_check_coding_noneorlabq +vips_check_coding_same +vips_check_complex +vips_check_format +vips_check_format_same +vips_check_hist +vips_check_int +vips_check_matrix +vips_check_mono +vips_check_noncomplex +vips_check_oddsquare +vips_check_precision_intfloat +vips_check_separable +vips_check_size_same +vips_check_twocomponents +vips_check_u8or16 +vips_check_u8or16orf +vips_check_uint +vips_check_uintorf +vips_check_uncoded +vips_check_vector +vips_check_vector_length +vips_class_find +vips_class_map_all +vips_coding_get_type +vips_col_C2Ccmc +vips_col_Ccmc2C +vips_col_Ch2ab +vips_col_Ch2hcmc +vips_col_Chcmc2h +vips_col_L2Lcmc +vips_col_Lab2XYZ +vips_col_Lcmc2L +vips_col_XYZ2Lab +vips_col_XYZ2scRGB +vips_col_ab2Ch +vips_col_ab2h +vips_col_dE00 +vips_col_make_tables_CMC +vips_col_sRGB2scRGB_16 +vips_col_sRGB2scRGB_8 +vips_col_scRGB2BW_16 +vips_col_scRGB2BW_8 +vips_col_scRGB2XYZ +vips_col_scRGB2sRGB_16 +vips_col_scRGB2sRGB_8 +vips_colourspace +vips_colourspace_issupported +vips_combine_get_type +vips_combine_mode_get_type +vips_compass +vips_compass_direction_get_type +vips_complex +vips_complex2 +vips_complexform +vips_complexget +vips_composite +vips_composite2 +vips_concurrency_get +vips_concurrency_set +vips_conj +vips_connection_filename +vips_connection_get_type +vips_connection_nick +vips_conv +vips_conva +vips_convasep +vips_convf +vips_convi +vips_convsep +vips_copy +vips_copy_file +vips_cos +vips_cosh +vips_countlines +vips_crop +vips_cross_phase +vips_csvload +vips_csvload_source +vips_csvsave +vips_csvsave_target +vips_dE00 +vips_dE76 +vips_dECMC +vips_dbuf_allocate +vips_dbuf_destroy +vips_dbuf_get_write +vips_dbuf_init +vips_dbuf_minimum_size +vips_dbuf_read +vips_dbuf_reset +vips_dbuf_seek +vips_dbuf_steal +vips_dbuf_string +vips_dbuf_tell +vips_dbuf_truncate +vips_dbuf_write +vips_dbuf_write_amp +vips_dbuf_writef +vips_demand_style_get_type +vips_deviate +vips_direction_get_type +vips_divide +vips_draw_circle +vips_draw_circle1 +vips_draw_flood +vips_draw_flood1 +vips_draw_image +vips_draw_line +vips_draw_line1 +vips_draw_mask +vips_draw_mask1 +vips_draw_point +vips_draw_point1 +vips_draw_rect +vips_draw_rect1 +vips_draw_smudge +vips_dzsave +vips_dzsave_buffer +vips_dzsave_target +vips_embed +vips_enum_from_nick +vips_enum_nick +vips_enum_string +vips_eorimage +vips_eorimage_const +vips_eorimage_const1 +vips_equal +vips_equal_const +vips_equal_const1 +vips_error +vips_error_buffer +vips_error_buffer_copy +vips_error_clear +vips_error_exit +vips_error_freeze +vips_error_g +vips_error_system +vips_error_thaw +vips_executor_run +vips_executor_set_array +vips_executor_set_destination +vips_executor_set_parameter +vips_executor_set_program +vips_executor_set_scanline +vips_existsf +vips_exp +vips_exp10 +vips_extend_get_type +vips_extract_area +vips_extract_band +vips_eye +vips_fail_on_get_type +vips_falsecolour +vips_fastcor +vips_file_length +vips_filename_get_filename +vips_filename_get_options +vips_filename_suffix_match +vips_fill_nearest +vips_find_trim +vips_fitsload +vips_fitssave +vips_flags_from_nick +vips_flatten +vips_flip +vips_float2rad +vips_floor +vips_foreign_dz_container_get_type +vips_foreign_dz_depth_get_type +vips_foreign_dz_layout_get_type +vips_foreign_find_load +vips_foreign_find_load_buffer +vips_foreign_find_load_source +vips_foreign_find_save +vips_foreign_find_save_buffer +vips_foreign_find_save_target +vips_foreign_flags +vips_foreign_flags_get_type +vips_foreign_get_suffixes +vips_foreign_get_type +vips_foreign_heif_compression_get_type +vips_foreign_is_a +vips_foreign_is_a_buffer +vips_foreign_is_a_source +vips_foreign_jpeg_subsample_get_type +vips_foreign_load_get_type +vips_foreign_load_invalidate +vips_foreign_map +vips_foreign_png_filter_get_type +vips_foreign_ppm_format_get_type +vips_foreign_save_get_type +vips_foreign_subsample_get_type +vips_foreign_tiff_compression_get_type +vips_foreign_tiff_predictor_get_type +vips_foreign_tiff_resunit_get_type +vips_foreign_webp_preset_get_type +vips_format_sizeof +vips_format_sizeof_unsafe +vips_fractsurf +vips_freqmult +vips_fwfft +vips_g_cond_free +vips_g_cond_new +vips_g_error +vips_g_input_stream_new_from_source +vips_g_mutex_free +vips_g_mutex_new +vips_g_thread_join +vips_g_thread_new +vips_gamma +vips_gaussblur +vips_gaussmat +vips_gaussnoise +vips_get_argv0 +vips_get_disc_threshold +vips_get_prgname +vips_get_tile_size +vips_getpoint +vips_gifload +vips_gifload_buffer +vips_gifload_source +vips_gifsave +vips_gifsave_buffer +vips_gifsave_target +vips_globalbalance +vips_gravity +vips_grey +vips_grid +vips_guess_libdir +vips_guess_prefix +vips_hash_table_map +vips_heifload +vips_heifload_buffer +vips_heifload_source +vips_heifsave +vips_heifsave_buffer +vips_heifsave_target +vips_hist_cum +vips_hist_entropy +vips_hist_equal +vips_hist_find +vips_hist_find_indexed +vips_hist_find_ndim +vips_hist_ismonotonic +vips_hist_local +vips_hist_match +vips_hist_norm +vips_hist_plot +vips_hough_circle +vips_hough_line +vips_icc_ac2rc +vips_icc_export +vips_icc_import +vips_icc_is_compatible_profile +vips_icc_present +vips_icc_transform +vips_identity +vips_ifthenelse +vips_imag +vips_image_copy_memory +vips_image_decode +vips_image_decode_predict +vips_image_encode +vips_image_free_buffer +vips_image_generate +vips_image_get +vips_image_get_area +vips_image_get_array_double +vips_image_get_array_int +vips_image_get_as_string +vips_image_get_bands +vips_image_get_blob +vips_image_get_coding +vips_image_get_data +vips_image_get_double +vips_image_get_fields +vips_image_get_filename +vips_image_get_format +vips_image_get_format_max +vips_image_get_height +vips_image_get_history +vips_image_get_image +vips_image_get_int +vips_image_get_interpretation +vips_image_get_mode +vips_image_get_n_pages +vips_image_get_n_subifds +vips_image_get_offset +vips_image_get_orientation +vips_image_get_orientation_swap +vips_image_get_page_height +vips_image_get_scale +vips_image_get_string +vips_image_get_type +vips_image_get_typeof +vips_image_get_width +vips_image_get_xoffset +vips_image_get_xres +vips_image_get_yoffset +vips_image_get_yres +vips_image_guess_format +vips_image_guess_interpretation +vips_image_hasalpha +vips_image_history_args +vips_image_history_printf +vips_image_init_fields +vips_image_inplace +vips_image_invalidate_all +vips_image_isMSBfirst +vips_image_is_sequential +vips_image_isfile +vips_image_iskilled +vips_image_ispartial +vips_image_map +vips_image_matrix_from_array +vips_image_memory +vips_image_minimise_all +vips_image_new +vips_image_new_from_buffer +vips_image_new_from_file +vips_image_new_from_file_RW +vips_image_new_from_file_raw +vips_image_new_from_image +vips_image_new_from_image1 +vips_image_new_from_memory +vips_image_new_from_memory_copy +vips_image_new_from_source +vips_image_new_matrix +vips_image_new_matrix_from_array +vips_image_new_matrixv +vips_image_new_memory +vips_image_new_temp_file +vips_image_pio_input +vips_image_pio_output +vips_image_pipeline_array +vips_image_pipelinev +vips_image_print_field +vips_image_remove +vips_image_set +vips_image_set_area +vips_image_set_array_double +vips_image_set_array_int +vips_image_set_blob +vips_image_set_blob_copy +vips_image_set_delete_on_close +vips_image_set_double +vips_image_set_image +vips_image_set_int +vips_image_set_kill +vips_image_set_progress +vips_image_set_string +vips_image_type_get_type +vips_image_wio_input +vips_image_write +vips_image_write_line +vips_image_write_prepare +vips_image_write_to_buffer +vips_image_write_to_file +vips_image_write_to_memory +vips_image_write_to_target +vips_init +vips_insert +vips_intent_get_type +vips_interesting_get_type +vips_interpolate +vips_interpolate_bilinear_static +vips_interpolate_get_method +vips_interpolate_get_type +vips_interpolate_get_window_offset +vips_interpolate_get_window_size +vips_interpolate_nearest_static +vips_interpolate_new +vips_interpretation_get_type +vips_invert +vips_invertlut +vips_invfft +vips_iscasepostfix +vips_isdirf +vips_ispostfix +vips_ispoweroftwo +vips_isprefix +vips_join +vips_jp2kload +vips_jp2kload_buffer +vips_jp2kload_source +vips_jp2ksave +vips_jp2ksave_buffer +vips_jp2ksave_target +vips_jpegload +vips_jpegload_buffer +vips_jpegload_source +vips_jpegsave +vips_jpegsave_buffer +vips_jpegsave_mime +vips_jpegsave_target +vips_jxlload +vips_jxlload_buffer +vips_jxlload_source +vips_jxlsave +vips_jxlsave_buffer +vips_jxlsave_target +vips_kernel_get_type +vips_labelregions +vips_leak_set +vips_less +vips_less_const +vips_less_const1 +vips_lesseq +vips_lesseq_const +vips_lesseq_const1 +vips_linear +vips_linear1 +vips_linecache +vips_log +vips_log10 +vips_logmat +vips_lshift +vips_lshift_const +vips_lshift_const1 +vips_magickload +vips_magickload_buffer +vips_magicksave +vips_magicksave_buffer +vips_malloc +vips_map_equal +vips_mapim +vips_maplut +vips_mask_butterworth +vips_mask_butterworth_band +vips_mask_butterworth_ring +vips_mask_fractal +vips_mask_gaussian +vips_mask_gaussian_band +vips_mask_gaussian_ring +vips_mask_ideal +vips_mask_ideal_band +vips_mask_ideal_ring +vips_match +vips_math +vips_math2 +vips_math2_const +vips_math2_const1 +vips_matload +vips_matrixinvert +vips_matrixload +vips_matrixload_source +vips_matrixprint +vips_matrixsave +vips_matrixsave_target +vips_max +vips_measure +vips_median +vips_merge +vips_min +vips_mkdirf +vips_more +vips_more_const +vips_more_const1 +vips_moreeq +vips_moreeq_const +vips_moreeq_const1 +vips_morph +vips_mosaic +vips_mosaic1 +vips_msb +vips_multiply +vips_nickname_find +vips_niftiload +vips_niftiload_source +vips_niftisave +vips_notequal +vips_notequal_const +vips_notequal_const1 +vips_object_argument_isset +vips_object_argument_needsstring +vips_object_build +vips_object_class_install_argument +vips_object_dump +vips_object_get_args +vips_object_get_argument +vips_object_get_argument_flags +vips_object_get_argument_priority +vips_object_get_argument_to_string +vips_object_get_description +vips_object_get_property +vips_object_get_type +vips_object_local_array +vips_object_local_cb +vips_object_map +vips_object_new +vips_object_new_from_string +vips_object_preclose +vips_object_print_all +vips_object_print_dump +vips_object_print_name +vips_object_print_summary +vips_object_print_summary_class +vips_object_rewind +vips_object_sanity +vips_object_sanity_all +vips_object_set +vips_object_set_argument_from_string +vips_object_set_from_string +vips_object_set_property +vips_object_set_static +vips_object_set_valist +vips_object_summary +vips_object_summary_class +vips_object_to_string +vips_object_unref_outputs +vips_openexrload +vips_openslideload +vips_openslideload_source +vips_operation_block_set +vips_operation_boolean_get_type +vips_operation_class_print_usage +vips_operation_complex2_get_type +vips_operation_complex_get_type +vips_operation_complexget_get_type +vips_operation_flags_get_type +vips_operation_get_flags +vips_operation_get_type +vips_operation_invalidate +vips_operation_math2_get_type +vips_operation_math_get_type +vips_operation_morphology_get_type +vips_operation_new +vips_operation_relational_get_type +vips_operation_round_get_type +vips_orimage +vips_orimage_const +vips_orimage_const1 +vips_pcs_get_type +vips_pdfload +vips_pdfload_buffer +vips_pdfload_source +vips_percent +vips_perlin +vips_phasecor +vips_pipe_read_limit_set +vips_pngload +vips_pngload_buffer +vips_pngload_source +vips_pngsave +vips_pngsave_buffer +vips_pngsave_target +vips_polar +vips_pow +vips_pow_const +vips_pow_const1 +vips_ppmload +vips_ppmload_source +vips_ppmsave +vips_ppmsave_target +vips_precision_get_type +vips_premultiply +vips_profile +vips_profile_load +vips_profile_set +vips_progress_set +vips_project +vips_pythagoras +vips_quadratic +vips_rad2float +vips_radload +vips_radload_buffer +vips_radload_source +vips_radsave +vips_radsave_buffer +vips_radsave_target +vips_rank +vips_rawload +vips_rawsave +vips_rawsave_fd +vips_real +vips_realpath +vips_recomb +vips_rect +vips_rect_dup +vips_rect_equalsrect +vips_rect_includespoint +vips_rect_includesrect +vips_rect_intersectrect +vips_rect_isempty +vips_rect_marginadjust +vips_rect_normalise +vips_rect_overlapsrect +vips_rect_unionrect +vips_reduce +vips_reduceh +vips_reducev +vips_ref_string_get +vips_ref_string_get_type +vips_ref_string_new +vips_region_black +vips_region_buffer +vips_region_copy +vips_region_equalsregion +vips_region_fetch +vips_region_fill +vips_region_get_type +vips_region_height +vips_region_image +vips_region_invalidate +vips_region_new +vips_region_paint +vips_region_paint_pel +vips_region_position +vips_region_prepare +vips_region_prepare_many +vips_region_prepare_to +vips_region_region +vips_region_shrink +vips_region_shrink_get_type +vips_region_shrink_method +vips_region_width +vips_relational +vips_relational_const +vips_relational_const1 +vips_remainder +vips_remainder_const +vips_remainder_const1 +vips_remosaic +vips_rename +vips_reorder_margin_hint +vips_reorder_prepare_many +vips_replicate +vips_resize +vips_rint +vips_rmdirf +vips_rot +vips_rot180 +vips_rot270 +vips_rot45 +vips_rot90 +vips_rotate +vips_round +vips_rshift +vips_rshift_const +vips_rshift_const1 +vips_sRGB2HSV +vips_sRGB2scRGB +vips_save_string_get_type +vips_saveable_get_type +vips_sbuf_get_line +vips_sbuf_get_line_copy +vips_sbuf_get_non_whitespace +vips_sbuf_get_type +vips_sbuf_getc +vips_sbuf_new_from_source +vips_sbuf_require +vips_sbuf_skip_whitespace +vips_sbuf_unbuffer +vips_sbuf_ungetc +vips_scRGB2BW +vips_scRGB2XYZ +vips_scRGB2sRGB +vips_scale +vips_semaphore_destroy +vips_semaphore_down +vips_semaphore_downn +vips_semaphore_init +vips_semaphore_up +vips_semaphore_upn +vips_sequential +vips_sharpen +vips_shrink +vips_shrinkh +vips_shrinkv +vips_shutdown +vips_sign +vips_similarity +vips_sin +vips_sines +vips_sinh +vips_sink +vips_sink_disc +vips_sink_memory +vips_sink_screen +vips_sink_tile +vips_size_get_type +vips_slist_equal +vips_slist_filter +vips_slist_fold2 +vips_slist_free_all +vips_slist_map2 +vips_slist_map2_rev +vips_slist_map4 +vips_smartcrop +vips_snprintf +vips_sobel +vips_source_custom_get_type +vips_source_custom_new +vips_source_decode +vips_source_g_input_stream_new +vips_source_get_type +vips_source_is_file +vips_source_is_mappable +vips_source_length +vips_source_map +vips_source_map_blob +vips_source_minimise +vips_source_new_from_blob +vips_source_new_from_descriptor +vips_source_new_from_file +vips_source_new_from_memory +vips_source_new_from_options +vips_source_new_from_target +vips_source_read +vips_source_rewind +vips_source_seek +vips_source_sniff +vips_source_sniff_at_most +vips_source_unminimise +vips_spcor +vips_spectrum +vips_start_many +vips_start_one +vips_stats +vips_stdif +vips_stop_many +vips_stop_one +vips_strdup +vips_strncpy +vips_strrstr +vips_strtod +vips_subsample +vips_subtract +vips_sum +vips_svgload +vips_svgload_buffer +vips_svgload_source +vips_svgload_string +vips_switch +vips_system +vips_tan +vips_tanh +vips_target_custom_get_type +vips_target_custom_new +vips_target_end +vips_target_finish +vips_target_get_type +vips_target_new_temp +vips_target_new_to_descriptor +vips_target_new_to_file +vips_target_new_to_memory +vips_target_putc +vips_target_read +vips_target_seek +vips_target_steal +vips_target_steal_text +vips_target_write +vips_target_write_amp +vips_target_writef +vips_target_writes +vips_text +vips_thing_get_type +vips_thing_new +vips_thread_isworker +vips_thread_shutdown +vips_thread_state_get_type +vips_thread_state_new +vips_thread_state_set +vips_threadpool_run +vips_thumbnail +vips_thumbnail_buffer +vips_thumbnail_image +vips_thumbnail_source +vips_tiffload +vips_tiffload_buffer +vips_tiffload_source +vips_tiffsave +vips_tiffsave_buffer +vips_tiffsave_target +vips_tilecache +vips_token_get_type +vips_tonelut +vips_tracked_close +vips_tracked_free +vips_tracked_get_allocs +vips_tracked_get_files +vips_tracked_get_mem +vips_tracked_get_mem_highwater +vips_tracked_malloc +vips_tracked_open +vips_transpose3d +vips_type_depth +vips_type_find +vips_type_map +vips_type_map_all +vips_unpremultiply +vips_value_get_area +vips_value_get_array +vips_value_get_array_double +vips_value_get_array_image +vips_value_get_array_int +vips_value_get_array_object +vips_value_get_blob +vips_value_get_ref_string +vips_value_get_save_string +vips_value_is_null +vips_value_set_area +vips_value_set_array +vips_value_set_array_double +vips_value_set_array_image +vips_value_set_array_int +vips_value_set_array_object +vips_value_set_blob +vips_value_set_blob_free +vips_value_set_ref_string +vips_value_set_save_string +vips_value_set_save_stringf +vips_vector_asm2 +vips_vector_asm3 +vips_vector_compile +vips_vector_constant +vips_vector_destination +vips_vector_free +vips_vector_full +vips_vector_init +vips_vector_isenabled +vips_vector_new +vips_vector_parameter +vips_vector_print +vips_vector_set_enabled +vips_vector_source_name +vips_vector_source_scanline +vips_vector_temporary +vips_vector_to_fixed_point +vips_verror +vips_verror_system +vips_version +vips_version_string +vips_vipsload +vips_vipsload_source +vips_vipssave +vips_vipssave_target +vips_vsnprintf +vips_webpload +vips_webpload_buffer +vips_webpload_source +vips_webpsave +vips_webpsave_buffer +vips_webpsave_mime +vips_webpsave_target +vips_window_print +vips_window_unref +vips_wop +vips_wop_const +vips_wop_const1 +vips_worley +vips_wrap +vips_xyz +vips_zone +vips_zoom diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.dll.a new file mode 100644 index 0000000..c435201 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.lib new file mode 100644 index 0000000..c435201 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libvips.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.def new file mode 100644 index 0000000..1785d1f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.def @@ -0,0 +1,543 @@ +; +; Definition file of libwebp-7.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libwebp-7.dll" +EXPORTS +InitSharpYuvNEON +InitSharpYuvSSE2 +QuantizeLevels +SharpYuvComputeConversionMatrix +SharpYuvConvert +SharpYuvFilterRow DATA +SharpYuvGammaToLinear +SharpYuvGetConversionMatrix +SharpYuvInit +SharpYuvInitDsp +SharpYuvInitGammaTables +SharpYuvLinearToGamma +SharpYuvUpdateRGB DATA +SharpYuvUpdateY DATA +VP8AccumulateSSE DATA +VP8AdjustFilterStrength +VP8ApplyNearLossless +VP8BitReaderSetBuffer +VP8BitWriterAppend +VP8BitWriterFinish +VP8BitWriterInit +VP8BitWriterWipeOut +VP8CalculateLevelCosts +VP8Cat3 DATA +VP8Cat4 DATA +VP8Cat5 DATA +VP8Cat6 DATA +VP8CheckSignature +VP8Clear +VP8CodeIntraModes +VP8CoeffsProba0 DATA +VP8CoeffsUpdateProba DATA +VP8CollectHistogram DATA +VP8Copy16x8 DATA +VP8Copy4x4 DATA +VP8Decimate +VP8Decode +VP8DecodeMB +VP8DecompressAlphaRows +VP8DefaultProbas +VP8Delete +VP8DitherCombine8x8 DATA +VP8DspInit +VP8DspInitMIPS32 +VP8DspInitMIPSdspR2 +VP8DspInitMSA +VP8DspInitNEON +VP8DspInitSSE2 +VP8DspInitSSE41 +VP8DspScan DATA +VP8EmitTokens +VP8EncAnalyze +VP8EncBands DATA +VP8EncDeleteAlpha +VP8EncDspCostInit +VP8EncDspCostInitMIPS32 +VP8EncDspCostInitMIPSdspR2 +VP8EncDspCostInitNEON +VP8EncDspCostInitSSE2 +VP8EncDspInit +VP8EncDspInitMIPS32 +VP8EncDspInitMIPSdspR2 +VP8EncDspInitMSA +VP8EncDspInitNEON +VP8EncDspInitSSE2 +VP8EncDspInitSSE41 +VP8EncFinishAlpha +VP8EncFreeBitWriters +VP8EncInitAlpha +VP8EncLoop +VP8EncPredChroma8 DATA +VP8EncPredLuma16 DATA +VP8EncPredLuma4 DATA +VP8EncQuantize2Blocks DATA +VP8EncQuantizeBlock DATA +VP8EncQuantizeBlockWHT DATA +VP8EncStartAlpha +VP8EncTokenLoop +VP8EncWrite +VP8EnterCritical +VP8EntropyCost DATA +VP8EstimateTokenSize +VP8ExitCritical +VP8FTransform DATA +VP8FTransform2 DATA +VP8FTransformWHT DATA +VP8FilterStrengthFromDelta +VP8FiltersInit +VP8FiltersInitMIPSdspR2 +VP8FiltersInitMSA +VP8FiltersInitNEON +VP8FiltersInitSSE2 +VP8FixedCostsI16 DATA +VP8FixedCostsI4 DATA +VP8FixedCostsUV DATA +VP8GetCPUInfo DATA +VP8GetCostLuma16 +VP8GetCostLuma4 +VP8GetCostUV +VP8GetHeaders +VP8GetInfo +VP8GetResidualCost DATA +VP8GetSignedValue +VP8GetThreadMethod +VP8GetValue +VP8HFilter16 DATA +VP8HFilter16i DATA +VP8HFilter8 DATA +VP8HFilter8i DATA +VP8I16ModeOffsets DATA +VP8I4ModeOffsets DATA +VP8ITransform DATA +VP8InitBitReader +VP8InitClipTables +VP8InitDithering +VP8InitFilter +VP8InitFrame +VP8InitIoInternal +VP8InitRandom +VP8InitResidual +VP8InitScanline +VP8IteratorBytesToNz +VP8IteratorExport +VP8IteratorImport +VP8IteratorInit +VP8IteratorIsDone +VP8IteratorNext +VP8IteratorNzToBytes +VP8IteratorProgress +VP8IteratorReset +VP8IteratorRotateI4 +VP8IteratorSaveBoundary +VP8IteratorSetCountDown +VP8IteratorSetRow +VP8IteratorStartI4 +VP8LAddGreenToBlueAndRed DATA +VP8LAddGreenToBlueAndRed_C +VP8LAddVector DATA +VP8LAddVectorEq DATA +VP8LAllocateHistogram +VP8LAllocateHistogramSet +VP8LBackwardReferencesTraceBackwards +VP8LBackwardRefsClear +VP8LBackwardRefsCursorAdd +VP8LBackwardRefsInit +VP8LBitEntropyInit +VP8LBitReaderSetBuffer +VP8LBitWriterClone +VP8LBitWriterFinish +VP8LBitWriterInit +VP8LBitWriterReset +VP8LBitWriterSwap +VP8LBitWriterWipeOut +VP8LBitsEntropy +VP8LBitsEntropyUnrefined +VP8LBuildHuffmanTable +VP8LBundleColorMap DATA +VP8LBundleColorMap_C +VP8LCheckSignature +VP8LClear +VP8LClearBackwardRefs +VP8LCollectColorBlueTransforms DATA +VP8LCollectColorBlueTransforms_C +VP8LCollectColorRedTransforms DATA +VP8LCollectColorRedTransforms_C +VP8LColorCacheClear +VP8LColorCacheCopy +VP8LColorCacheInit +VP8LColorIndexInverseTransformAlpha +VP8LColorSpaceTransform +VP8LCombinedShannonEntropy DATA +VP8LConvertBGRAToBGR DATA +VP8LConvertBGRAToBGR_C +VP8LConvertBGRAToRGB DATA +VP8LConvertBGRAToRGB565 DATA +VP8LConvertBGRAToRGB565_C +VP8LConvertBGRAToRGBA DATA +VP8LConvertBGRAToRGBA4444 DATA +VP8LConvertBGRAToRGBA4444_C +VP8LConvertBGRAToRGBA_C +VP8LConvertBGRAToRGB_C +VP8LConvertFromBGRA +VP8LCreateCompressedHuffmanTree +VP8LCreateHuffmanTree +VP8LDecodeAlphaHeader +VP8LDecodeAlphaImageStream +VP8LDecodeHeader +VP8LDecodeImage +VP8LDelete +VP8LDistanceToPlaneCode +VP8LDoFillBitWindow +VP8LDspInit +VP8LDspInitMIPSdspR2 +VP8LDspInitMSA +VP8LDspInitNEON +VP8LDspInitSSE2 +VP8LDspInitSSE41 +VP8LEncDspInit +VP8LEncDspInitMIPS32 +VP8LEncDspInitMIPSdspR2 +VP8LEncDspInitMSA +VP8LEncDspInitNEON +VP8LEncDspInitSSE2 +VP8LEncDspInitSSE41 +VP8LEncodeImage +VP8LEncodeStream +VP8LExtraCost DATA +VP8LExtraCostCombined DATA +VP8LFastLog2Slow DATA +VP8LFastSLog2Slow DATA +VP8LFreeHistogram +VP8LFreeHistogramSet +VP8LGetBackwardReferences +VP8LGetCombinedEntropyUnrefined DATA +VP8LGetEntropyUnrefined DATA +VP8LGetHistoImageSymbols +VP8LGetHistogramSize +VP8LGetInfo +VP8LHashChainClear +VP8LHashChainFill +VP8LHashChainInit +VP8LHistogramAdd +VP8LHistogramAddSinglePixOrCopy +VP8LHistogramCreate +VP8LHistogramEstimateBits +VP8LHistogramInit +VP8LHistogramSetClear +VP8LHistogramStoreRefs +VP8LHtreeGroupsFree +VP8LHtreeGroupsNew +VP8LInitBitReader +VP8LInverseTransform +VP8LMapColor32b DATA +VP8LMapColor8b DATA +VP8LNew +VP8LPredictor0_C +VP8LPredictor10_C +VP8LPredictor11_C +VP8LPredictor12_C +VP8LPredictor13_C +VP8LPredictor1_C +VP8LPredictor2_C +VP8LPredictor3_C +VP8LPredictor4_C +VP8LPredictor5_C +VP8LPredictor6_C +VP8LPredictor7_C +VP8LPredictor8_C +VP8LPredictor9_C +VP8LPredictors DATA +VP8LPredictorsAdd DATA +VP8LPredictorsAdd_C DATA +VP8LPredictorsSub DATA +VP8LPredictorsSub_C DATA +VP8LPutBitsFlushBits +VP8LPutBitsInternal +VP8LReadBits +VP8LRefsCursorInit +VP8LRefsCursorNextBlock +VP8LResidualImage +VP8LSubtractGreenFromBlueAndRed DATA +VP8LSubtractGreenFromBlueAndRed_C +VP8LTransformColor DATA +VP8LTransformColorInverse DATA +VP8LTransformColorInverse_C +VP8LTransformColor_C +VP8LVectorMismatch DATA +VP8LevelCodes DATA +VP8LevelFixedCosts DATA +VP8LoadFinalBytes +VP8MakeChroma8Preds +VP8MakeIntra4Preds +VP8MakeLuma16Preds +VP8Mean16x4 DATA +VP8New +VP8ParseIntraModeRow +VP8ParseProba +VP8ParseQuant +VP8PredChroma8 DATA +VP8PredLuma16 DATA +VP8PredLuma4 DATA +VP8ProcessRow +VP8PutBit +VP8PutBitUniform +VP8PutBits +VP8PutSignedBits +VP8RecordCoeffTokens +VP8RecordCoeffs +VP8RemapBitReader +VP8ResetProba +VP8SSE16x16 DATA +VP8SSE16x8 DATA +VP8SSE4x4 DATA +VP8SSE8x8 DATA +VP8SSIMDspInit +VP8SSIMDspInitSSE2 +VP8SSIMFromStats +VP8SSIMFromStatsClipped +VP8SSIMGet DATA +VP8SSIMGetClipped DATA +VP8Scan DATA +VP8SetError +VP8SetHistogramData +VP8SetIntra16Mode +VP8SetIntra4Mode +VP8SetIntraUVMode +VP8SetResidualCoeffs DATA +VP8SetSegment +VP8SetSegmentParams +VP8SetSkip +VP8SimpleHFilter16 DATA +VP8SimpleHFilter16i DATA +VP8SimpleVFilter16 DATA +VP8SimpleVFilter16i DATA +VP8Status +VP8StatusMessage +VP8StoreFilterStats +VP8TBufferClear +VP8TBufferInit +VP8TDisto16x16 DATA +VP8TDisto4x4 DATA +VP8Transform DATA +VP8TransformAC3 DATA +VP8TransformDC DATA +VP8TransformDCUV DATA +VP8TransformUV DATA +VP8TransformWHT DATA +VP8UVModeOffsets DATA +VP8VFilter16 DATA +VP8VFilter16i DATA +VP8VFilter8 DATA +VP8VFilter8i DATA +VP8WriteProbas +VP8YuvToArgb32_SSE2 +VP8YuvToBgr32_SSE2 +VP8YuvToBgr32_SSE41 +VP8YuvToBgra32_SSE2 +VP8YuvToRgb32_SSE2 +VP8YuvToRgb32_SSE41 +VP8YuvToRgb56532_SSE2 +VP8YuvToRgba32_SSE2 +VP8YuvToRgba444432_SSE2 +VP8kabs0 DATA +VP8kclip1 DATA +VP8ksclip1 DATA +VP8ksclip2 DATA +WebPAllocateDecBuffer +WebPAlphaReplace DATA +WebPApplyAlphaMultiply DATA +WebPApplyAlphaMultiply4444 DATA +WebPAvoidSlowMemory +WebPBlendAlpha +WebPCheckCropDimensions +WebPCleanupTransparentArea +WebPConfigInitInternal +WebPConfigLosslessPreset +WebPConvertARGBToUV DATA +WebPConvertARGBToUV_C +WebPConvertARGBToY DATA +WebPConvertBGR24ToY DATA +WebPConvertRGB24ToY DATA +WebPConvertRGBA32ToUV DATA +WebPConvertRGBA32ToUV_C +WebPCopyDecBuffer +WebPCopyDecBufferPixels +WebPCopyPixels +WebPCopyPlane +WebPDeallocateAlphaMemory +WebPDecode +WebPDecodeARGB +WebPDecodeARGBInto +WebPDecodeBGR +WebPDecodeBGRA +WebPDecodeBGRAInto +WebPDecodeBGRInto +WebPDecodeRGB +WebPDecodeRGBA +WebPDecodeRGBAInto +WebPDecodeRGBInto +WebPDecodeYUV +WebPDecodeYUVInto +WebPDequantizeLevels +WebPDispatchAlpha DATA +WebPDispatchAlphaToGreen DATA +WebPEncode +WebPEncodeBGR +WebPEncodeBGRA +WebPEncodeLosslessBGR +WebPEncodeLosslessBGRA +WebPEncodeLosslessRGB +WebPEncodeLosslessRGBA +WebPEncodeRGB +WebPEncodeRGBA +WebPEncodingSetError +WebPEstimateBestFilter +WebPExtractAlpha DATA +WebPExtractGreen DATA +WebPFilters DATA +WebPFlipBuffer +WebPFree +WebPFreeDecBuffer +WebPGetColorPalette +WebPGetDecoderVersion +WebPGetEncoderVersion +WebPGetFeaturesInternal +WebPGetInfo +WebPGetLinePairConverter +WebPGetWorkerInterface +WebPGrabDecBuffer +WebPHasAlpha32b DATA +WebPHasAlpha8b DATA +WebPIAppend +WebPIDecGetRGB +WebPIDecGetYUVA +WebPIDecode +WebPIDecodedArea +WebPIDelete +WebPINewDecoder +WebPINewRGB +WebPINewYUV +WebPINewYUVA +WebPISetIOHooks +WebPIUpdate +WebPInitAlphaProcessing +WebPInitAlphaProcessingMIPSdspR2 +WebPInitAlphaProcessingNEON +WebPInitAlphaProcessingSSE2 +WebPInitAlphaProcessingSSE41 +WebPInitConvertARGBToYUV +WebPInitConvertARGBToYUVNEON +WebPInitConvertARGBToYUVSSE2 +WebPInitConvertARGBToYUVSSE41 +WebPInitCustomIo +WebPInitDecBufferInternal +WebPInitDecoderConfigInternal +WebPInitSamplers +WebPInitSamplersMIPS32 +WebPInitSamplersMIPSdspR2 +WebPInitSamplersSSE2 +WebPInitSamplersSSE41 +WebPInitUpsamplers +WebPInitUpsamplersMIPSdspR2 +WebPInitUpsamplersMSA +WebPInitUpsamplersNEON +WebPInitUpsamplersSSE2 +WebPInitUpsamplersSSE41 +WebPInitYUV444Converters +WebPInitYUV444ConvertersMIPSdspR2 +WebPInitYUV444ConvertersSSE2 +WebPInitYUV444ConvertersSSE41 +WebPIoInitFromOptions +WebPMalloc +WebPMemoryWrite +WebPMemoryWriterClear +WebPMemoryWriterInit +WebPMultARGBRow DATA +WebPMultARGBRow_C +WebPMultARGBRows +WebPMultRow DATA +WebPMultRow_C +WebPMultRows +WebPPackRGB DATA +WebPParseHeaders +WebPPictureARGBToYUVA +WebPPictureARGBToYUVADithered +WebPPictureAlloc +WebPPictureAllocARGB +WebPPictureAllocYUVA +WebPPictureCopy +WebPPictureCrop +WebPPictureDistortion +WebPPictureFree +WebPPictureHasTransparency +WebPPictureImportBGR +WebPPictureImportBGRA +WebPPictureImportBGRX +WebPPictureImportRGB +WebPPictureImportRGBA +WebPPictureImportRGBX +WebPPictureInitInternal +WebPPictureIsView +WebPPictureRescale +WebPPictureResetBuffers +WebPPictureSharpARGBToYUVA +WebPPictureSmartARGBToYUVA +WebPPictureView +WebPPictureYUVAToARGB +WebPPlaneDistortion +WebPReplaceTransparentPixels +WebPReportProgress +WebPRescaleNeededLines +WebPRescalerDspInit +WebPRescalerDspInitMIPS32 +WebPRescalerDspInitMIPSdspR2 +WebPRescalerDspInitMSA +WebPRescalerDspInitNEON +WebPRescalerDspInitSSE2 +WebPRescalerExport +WebPRescalerExportRow +WebPRescalerExportRowExpand DATA +WebPRescalerExportRowExpand_C +WebPRescalerExportRowShrink DATA +WebPRescalerExportRowShrink_C +WebPRescalerGetScaledDimensions +WebPRescalerImport +WebPRescalerImportRow +WebPRescalerImportRowExpand DATA +WebPRescalerImportRowExpand_C +WebPRescalerImportRowShrink DATA +WebPRescalerImportRowShrink_C +WebPRescalerInit +WebPResetDecParams +WebPSafeCalloc +WebPSafeFree +WebPSafeMalloc +WebPSamplerProcessPlane +WebPSamplers DATA +WebPSetWorkerInterface +WebPUnfilters DATA +WebPUpsamplers DATA +WebPValidateConfig +WebPValidatePicture +WebPYUV444Converters DATA +WebPYuv444ToArgb_C +WebPYuv444ToBgr_C +WebPYuv444ToBgra_C +WebPYuv444ToRgb565_C +WebPYuv444ToRgb_C +WebPYuv444ToRgba4444_C +WebPYuv444ToRgba_C +kLog2Table DATA +kPrefixEncodeCode DATA +kPrefixEncodeExtraBitsValue DATA +kSLog2Table DATA +kVP8Log2Range DATA +kVP8NewRange DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.dll.a new file mode 100644 index 0000000..8c947e7 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.lib new file mode 100644 index 0000000..8c947e7 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebp.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.def new file mode 100644 index 0000000..f3540dd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.def @@ -0,0 +1,27 @@ +; +; Definition file of libwebpdemux-2.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libwebpdemux-2.dll" +EXPORTS +WebPAnimDecoderDelete +WebPAnimDecoderGetDemuxer +WebPAnimDecoderGetInfo +WebPAnimDecoderGetNext +WebPAnimDecoderHasMoreFrames +WebPAnimDecoderNewInternal +WebPAnimDecoderOptionsInitInternal +WebPAnimDecoderReset +WebPDemuxDelete +WebPDemuxGetChunk +WebPDemuxGetFrame +WebPDemuxGetI +WebPDemuxInternal +WebPDemuxNextChunk +WebPDemuxNextFrame +WebPDemuxPrevChunk +WebPDemuxPrevFrame +WebPDemuxReleaseChunkIterator +WebPDemuxReleaseIterator +WebPGetDemuxVersion diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.dll.a new file mode 100644 index 0000000..af54168 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.lib new file mode 100644 index 0000000..af54168 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpdemux.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.def new file mode 100644 index 0000000..a3edfa7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.def @@ -0,0 +1,61 @@ +; +; Definition file of libwebpmux-3.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libwebpmux-3.dll" +EXPORTS +ChunkAppend +ChunkAssignData +ChunkDelete +ChunkGetIdFromTag +ChunkGetIndexFromFourCC +ChunkGetIndexFromTag +ChunkGetTagFromFourCC +ChunkInit +ChunkListDelete +ChunkListDiskSize +ChunkListEmit +ChunkRelease +ChunkSearchList +ChunkSetHead +MuxEmitRiffHeader +MuxGetChunkListFromId +MuxHasAlpha +MuxImageCount +MuxImageDelete +MuxImageDeleteNth +MuxImageDiskSize +MuxImageEmit +MuxImageFinalize +MuxImageGetNth +MuxImageInit +MuxImagePush +MuxImageRelease +MuxValidate +WebPAnimEncoderAdd +WebPAnimEncoderAssemble +WebPAnimEncoderDelete +WebPAnimEncoderGetError +WebPAnimEncoderNewInternal +WebPAnimEncoderOptionsInitInternal +WebPAnimEncoderRefineRect +WebPGetMuxVersion +WebPMuxAssemble +WebPMuxCreateInternal +WebPMuxDelete +WebPMuxDeleteChunk +WebPMuxDeleteFrame +WebPMuxGetAnimationParams +WebPMuxGetCanvasSize +WebPMuxGetChunk +WebPMuxGetFeatures +WebPMuxGetFrame +WebPMuxNumChunks +WebPMuxPushFrame +WebPMuxSetAnimationParams +WebPMuxSetCanvasSize +WebPMuxSetChunk +WebPMuxSetImage +WebPNewInternal +kChunks DATA diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.dll.a new file mode 100644 index 0000000..6396332 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.lib new file mode 100644 index 0000000..6396332 Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libwebpmux.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.def new file mode 100644 index 0000000..d9d5994 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.def @@ -0,0 +1,923 @@ +; +; Definition file of libxml2-2.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libxml2-2.dll" +EXPORTS +UTF8Toisolat1 +__oldXMLWDcompatibility +__xmlBufferAllocScheme +__xmlDefaultBufferSize +__xmlDefaultSAXLocator +__xmlDeregisterNodeDefaultValue +__xmlDoValidityCheckingDefaultValue +__xmlErrEncoding +__xmlGenericError +__xmlGenericErrorContext +__xmlGetWarningsDefaultValue +__xmlIndentTreeOutput +__xmlKeepBlanksDefaultValue +__xmlLastError +__xmlLineNumbersDefaultValue +__xmlLoadExtDtdDefaultValue +__xmlOutputBufferCreateFilenameValue +__xmlParserDebugEntities +__xmlParserInputBufferCreateFilenameValue +__xmlParserVersion +__xmlPedanticParserDefaultValue +__xmlRaiseError +__xmlRegisterNodeDefaultValue +__xmlSaveNoEmptyTags +__xmlSimpleError +__xmlStructuredError +__xmlStructuredErrorContext +__xmlSubstituteEntitiesDefaultValue +__xmlTreeIndentString +initGenericErrorDefaultFunc +inputPop +inputPush +isolat1ToUTF8 +namePop +namePush +nodePop +nodePush +oldXMLWDcompatibility DATA +xmlAddAttributeDecl +xmlAddChild +xmlAddChildList +xmlAddDocEntity +xmlAddDtdEntity +xmlAddElementDecl +xmlAddEncodingAlias +xmlAddID +xmlAddNextSibling +xmlAddNotationDecl +xmlAddPrevSibling +xmlAddRef +xmlAddSibling +xmlAllocOutputBuffer +xmlAllocParserInputBuffer +xmlAttrSerializeTxtContent +xmlBufContent +xmlBufEnd +xmlBufGetNodeContent +xmlBufNodeDump +xmlBufShrink +xmlBufUse +xmlBufferAdd +xmlBufferAddHead +xmlBufferAllocScheme DATA +xmlBufferCCat +xmlBufferCat +xmlBufferContent +xmlBufferCreate +xmlBufferCreateSize +xmlBufferCreateStatic +xmlBufferDetach +xmlBufferDump +xmlBufferEmpty +xmlBufferFree +xmlBufferGrow +xmlBufferLength +xmlBufferResize +xmlBufferSetAllocationScheme +xmlBufferShrink +xmlBufferWriteCHAR +xmlBufferWriteChar +xmlBufferWriteQuotedString +xmlBuildQName +xmlBuildRelativeURI +xmlBuildURI +xmlByteConsumed +xmlCanonicPath +xmlCharEncCloseFunc +xmlCharEncFirstLine +xmlCharEncInFunc +xmlCharEncOutFunc +xmlCharInRange +xmlCharStrdup +xmlCharStrndup +xmlCheckFilename +xmlCheckHTTPInput +xmlCheckLanguageID +xmlCheckUTF8 +xmlCheckVersion +xmlChildElementCount +xmlCleanupCharEncodingHandlers +xmlCleanupEncodingAliases +xmlCleanupGlobals +xmlCleanupInputCallbacks +xmlCleanupMemory +xmlCleanupOutputCallbacks +xmlCleanupParser +xmlCleanupThreads +xmlClearNodeInfoSeq +xmlClearParserCtxt +xmlCopyAttributeTable +xmlCopyChar +xmlCopyCharMultiByte +xmlCopyDoc +xmlCopyDocElementContent +xmlCopyDtd +xmlCopyElementContent +xmlCopyElementTable +xmlCopyEntitiesTable +xmlCopyEnumeration +xmlCopyError +xmlCopyNamespace +xmlCopyNamespaceList +xmlCopyNode +xmlCopyNodeList +xmlCopyNotationTable +xmlCopyProp +xmlCopyPropList +xmlCreateDocParserCtxt +xmlCreateEntitiesTable +xmlCreateEntityParserCtxt +xmlCreateEnumeration +xmlCreateFileParserCtxt +xmlCreateIOParserCtxt +xmlCreateIntSubset +xmlCreateMemoryParserCtxt +xmlCreatePushParserCtxt +xmlCreateURI +xmlCreateURLParserCtxt +xmlCtxtGetLastError +xmlCtxtReadDoc +xmlCtxtReadFd +xmlCtxtReadFile +xmlCtxtReadIO +xmlCtxtReadMemory +xmlCtxtReset +xmlCtxtResetLastError +xmlCtxtResetPush +xmlCtxtUseOptions +xmlCurrentChar +xmlDOMWrapAdoptNode +xmlDOMWrapCloneNode +xmlDOMWrapFreeCtxt +xmlDOMWrapNewCtxt +xmlDOMWrapReconcileNamespaces +xmlDOMWrapRemoveNode +xmlDefaultBufferSize DATA +xmlDefaultSAXHandlerInit +xmlDefaultSAXLocator DATA +xmlDelEncodingAlias +xmlDeregisterNodeDefault +xmlDeregisterNodeDefaultValue DATA +xmlDetectCharEncoding +xmlDictCleanup +xmlDictCreate +xmlDictCreateSub +xmlDictExists +xmlDictFree +xmlDictGetUsage +xmlDictLookup +xmlDictOwns +xmlDictQLookup +xmlDictReference +xmlDictSetLimit +xmlDictSize +xmlDoValidityCheckingDefaultValue DATA +xmlDocCopyNode +xmlDocCopyNodeList +xmlDocDump +xmlDocDumpFormatMemory +xmlDocDumpFormatMemoryEnc +xmlDocDumpMemory +xmlDocDumpMemoryEnc +xmlDocFormatDump +xmlDocGetRootElement +xmlDocSetRootElement +xmlDumpAttributeDecl +xmlDumpAttributeTable +xmlDumpElementDecl +xmlDumpElementTable +xmlDumpEntitiesTable +xmlDumpEntityDecl +xmlDumpNotationDecl +xmlDumpNotationTable +xmlElemDump +xmlEncodeEntitiesReentrant +xmlEncodeSpecialChars +xmlErrMemory +xmlEscapeFormatString +xmlFileClose +xmlFileMatch +xmlFileOpen +xmlFileRead +xmlFindCharEncodingHandler +xmlFirstElementChild +xmlFree DATA +xmlFreeAttributeTable +xmlFreeDoc +xmlFreeDocElementContent +xmlFreeDtd +xmlFreeElementContent +xmlFreeElementTable +xmlFreeEntitiesTable +xmlFreeEnumeration +xmlFreeIDTable +xmlFreeInputStream +xmlFreeMutex +xmlFreeNode +xmlFreeNodeList +xmlFreeNotationTable +xmlFreeNs +xmlFreeNsList +xmlFreeParserCtxt +xmlFreeParserInputBuffer +xmlFreeProp +xmlFreePropList +xmlFreeRMutex +xmlFreeRefTable +xmlFreeTextReader +xmlFreeTextWriter +xmlFreeURI +xmlFreeValidCtxt +xmlGcMemGet +xmlGcMemSetup +xmlGenericError DATA +xmlGenericErrorContext DATA +xmlGetBufferAllocationScheme +xmlGetCharEncodingHandler +xmlGetCharEncodingName +xmlGetCompressMode +xmlGetDocCompressMode +xmlGetDocEntity +xmlGetDtdAttrDesc +xmlGetDtdElementDesc +xmlGetDtdEntity +xmlGetDtdNotationDesc +xmlGetDtdQAttrDesc +xmlGetDtdQElementDesc +xmlGetEncodingAlias +xmlGetExternalEntityLoader +xmlGetGlobalState +xmlGetID +xmlGetIntSubset +xmlGetLastChild +xmlGetLastError +xmlGetLineNo +xmlGetNoNsProp +xmlGetNodePath +xmlGetNsList +xmlGetNsProp +xmlGetParameterEntity +xmlGetPredefinedEntity +xmlGetProp +xmlGetRefs +xmlGetThreadId +xmlGetUTF8Char +xmlGetWarningsDefaultValue DATA +xmlHasFeature +xmlHasNsProp +xmlHasProp +xmlHashAddEntry +xmlHashAddEntry2 +xmlHashAddEntry3 +xmlHashCopy +xmlHashCreate +xmlHashCreateDict +xmlHashDefaultDeallocator +xmlHashFree +xmlHashLookup +xmlHashLookup2 +xmlHashLookup3 +xmlHashQLookup +xmlHashQLookup2 +xmlHashQLookup3 +xmlHashRemoveEntry +xmlHashRemoveEntry2 +xmlHashRemoveEntry3 +xmlHashScan +xmlHashScan3 +xmlHashScanFull +xmlHashScanFull3 +xmlHashSize +xmlHashUpdateEntry +xmlHashUpdateEntry2 +xmlHashUpdateEntry3 +xmlIOHTTPClose +xmlIOHTTPMatch +xmlIOHTTPOpen +xmlIOHTTPOpenW +xmlIOHTTPRead +xmlIOParseDTD +xmlIndentTreeOutput DATA +xmlInitCharEncodingHandlers +xmlInitGlobals +xmlInitMemory +xmlInitNodeInfoSeq +xmlInitParser +xmlInitParserCtxt +xmlInitThreads +xmlInitializeDict +xmlInitializeGlobalState +xmlIsBaseChar +xmlIsBaseCharGroup DATA +xmlIsBlank +xmlIsBlankNode +xmlIsChar +xmlIsCharGroup DATA +xmlIsCombining +xmlIsCombiningGroup DATA +xmlIsDigit +xmlIsDigitGroup DATA +xmlIsExtender +xmlIsExtenderGroup DATA +xmlIsID +xmlIsIdeographic +xmlIsIdeographicGroup DATA +xmlIsLetter +xmlIsMainThread +xmlIsMixedElement +xmlIsPubidChar +xmlIsPubidChar_tab DATA +xmlIsRef +xmlIsXHTML +xmlKeepBlanksDefault +xmlKeepBlanksDefaultValue DATA +xmlLastElementChild +xmlLastError DATA +xmlLineNumbersDefault +xmlLineNumbersDefaultValue DATA +xmlLinkGetData +xmlListAppend +xmlListClear +xmlListCopy +xmlListCreate +xmlListDelete +xmlListDup +xmlListEmpty +xmlListEnd +xmlListFront +xmlListInsert +xmlListMerge +xmlListPopBack +xmlListPopFront +xmlListPushBack +xmlListPushFront +xmlListRemoveAll +xmlListRemoveFirst +xmlListRemoveLast +xmlListReverse +xmlListReverseSearch +xmlListReverseWalk +xmlListSearch +xmlListSize +xmlListSort +xmlListWalk +xmlLoadExtDtdDefaultValue DATA +xmlLoadExternalEntity +xmlLockLibrary +xmlMalloc DATA +xmlMallocAtomic DATA +xmlMallocAtomicLoc +xmlMallocLoc +xmlMemBlocks +xmlMemDisplay +xmlMemDisplayLast +xmlMemFree +xmlMemGet +xmlMemMalloc +xmlMemRealloc +xmlMemSetup +xmlMemShow +xmlMemStrdup DATA +xmlMemStrdupLoc +xmlMemUsed +xmlMemoryDump +xmlMemoryStrdup +xmlMutexLock +xmlMutexUnlock +xmlNanoHTTPAuthHeader +xmlNanoHTTPCleanup +xmlNanoHTTPClose +xmlNanoHTTPContentLength +xmlNanoHTTPEncoding +xmlNanoHTTPFetch +xmlNanoHTTPInit +xmlNanoHTTPMethod +xmlNanoHTTPMethodRedir +xmlNanoHTTPMimeType +xmlNanoHTTPOpen +xmlNanoHTTPOpenRedir +xmlNanoHTTPRead +xmlNanoHTTPRedir +xmlNanoHTTPReturnCode +xmlNanoHTTPSave +xmlNanoHTTPScanProxy +xmlNewCDataBlock +xmlNewCharEncodingHandler +xmlNewCharRef +xmlNewChild +xmlNewComment +xmlNewDoc +xmlNewDocComment +xmlNewDocElementContent +xmlNewDocFragment +xmlNewDocNode +xmlNewDocNodeEatName +xmlNewDocPI +xmlNewDocProp +xmlNewDocRawNode +xmlNewDocText +xmlNewDocTextLen +xmlNewDtd +xmlNewElementContent +xmlNewEntity +xmlNewEntityInputStream +xmlNewIOInputStream +xmlNewInputFromFile +xmlNewInputStream +xmlNewMutex +xmlNewNode +xmlNewNodeEatName +xmlNewNs +xmlNewNsProp +xmlNewNsPropEatName +xmlNewPI +xmlNewParserCtxt +xmlNewProp +xmlNewRMutex +xmlNewReference +xmlNewStringInputStream +xmlNewText +xmlNewTextChild +xmlNewTextLen +xmlNewTextReader +xmlNewTextReaderFilename +xmlNewTextWriter +xmlNewTextWriterDoc +xmlNewTextWriterFilename +xmlNewTextWriterMemory +xmlNewTextWriterPushParser +xmlNewTextWriterTree +xmlNewValidCtxt +xmlNextChar +xmlNextElementSibling +xmlNoNetExternalEntityLoader +xmlNodeAddContent +xmlNodeAddContentLen +xmlNodeBufGetContent +xmlNodeDump +xmlNodeDumpOutput +xmlNodeGetBase +xmlNodeGetContent +xmlNodeGetLang +xmlNodeGetSpacePreserve +xmlNodeIsText +xmlNodeListGetRawString +xmlNodeListGetString +xmlNodeSetBase +xmlNodeSetContent +xmlNodeSetContentLen +xmlNodeSetLang +xmlNodeSetName +xmlNodeSetSpacePreserve +xmlNormalizeURIPath +xmlNormalizeWindowsPath +xmlOutputBufferClose +xmlOutputBufferCreateBuffer +xmlOutputBufferCreateFd +xmlOutputBufferCreateFile +xmlOutputBufferCreateFilename +xmlOutputBufferCreateFilenameDefault +xmlOutputBufferCreateFilenameValue DATA +xmlOutputBufferCreateIO +xmlOutputBufferFlush +xmlOutputBufferGetContent +xmlOutputBufferGetSize +xmlOutputBufferWrite +xmlOutputBufferWriteEscape +xmlOutputBufferWriteString +xmlParseAttValue +xmlParseAttributeListDecl +xmlParseAttributeType +xmlParseCDSect +xmlParseCharData +xmlParseCharEncoding +xmlParseCharRef +xmlParseChunk +xmlParseComment +xmlParseContent +xmlParseCtxtExternalEntity +xmlParseDTD +xmlParseDefaultDecl +xmlParseDocTypeDecl +xmlParseDocument +xmlParseElement +xmlParseElementChildrenContentDecl +xmlParseElementContentDecl +xmlParseElementDecl +xmlParseElementMixedContentDecl +xmlParseEncName +xmlParseEncodingDecl +xmlParseEntityDecl +xmlParseEntityRef +xmlParseEntityValue +xmlParseEnumeratedType +xmlParseEnumerationType +xmlParseExtParsedEnt +xmlParseExternalID +xmlParseExternalSubset +xmlParseInNodeContext +xmlParseMarkupDecl +xmlParseMisc +xmlParseName +xmlParseNmtoken +xmlParseNotationDecl +xmlParseNotationType +xmlParsePEReference +xmlParsePI +xmlParsePITarget +xmlParsePubidLiteral +xmlParseReference +xmlParseSDDecl +xmlParseSystemLiteral +xmlParseTextDecl +xmlParseURI +xmlParseURIRaw +xmlParseURIReference +xmlParseVersionInfo +xmlParseVersionNum +xmlParseXMLDecl +xmlParserAddNodeInfo +xmlParserDebugEntities DATA +xmlParserError +xmlParserFindNodeInfo +xmlParserFindNodeInfoIndex +xmlParserGetDirectory +xmlParserHandlePEReference +xmlParserInputBufferCreateFd +xmlParserInputBufferCreateFile +xmlParserInputBufferCreateFilename +xmlParserInputBufferCreateFilenameDefault +xmlParserInputBufferCreateFilenameValue DATA +xmlParserInputBufferCreateIO +xmlParserInputBufferCreateMem +xmlParserInputBufferCreateStatic +xmlParserInputBufferGrow +xmlParserInputBufferPush +xmlParserInputBufferRead +xmlParserInputGrow +xmlParserInputRead +xmlParserInputShrink +xmlParserMaxDepth DATA +xmlParserPrintFileContext +xmlParserPrintFileInfo +xmlParserValidityError +xmlParserValidityWarning +xmlParserVersion DATA +xmlParserWarning +xmlPathToURI +xmlPedanticParserDefault +xmlPedanticParserDefaultValue DATA +xmlPopInput +xmlPopInputCallbacks +xmlPopOutputCallbacks +xmlPreviousElementSibling +xmlPrintURI +xmlPushInput +xmlRMutexLock +xmlRMutexUnlock +xmlReadDoc +xmlReadFd +xmlReadFile +xmlReadIO +xmlReadMemory +xmlReaderForDoc +xmlReaderForFd +xmlReaderForFile +xmlReaderForIO +xmlReaderForMemory +xmlReaderNewDoc +xmlReaderNewFd +xmlReaderNewFile +xmlReaderNewIO +xmlReaderNewMemory +xmlReaderNewWalker +xmlReaderWalker +xmlRealloc DATA +xmlReallocLoc +xmlReconciliateNs +xmlRegisterCharEncodingHandler +xmlRegisterDefaultInputCallbacks +xmlRegisterDefaultOutputCallbacks +xmlRegisterHTTPPostCallbacks +xmlRegisterInputCallbacks +xmlRegisterNodeDefault +xmlRegisterNodeDefaultValue DATA +xmlRegisterOutputCallbacks +xmlRemoveID +xmlRemoveProp +xmlRemoveRef +xmlReplaceNode +xmlResetError +xmlResetLastError +xmlSAX2AttributeDecl +xmlSAX2CDataBlock +xmlSAX2Characters +xmlSAX2Comment +xmlSAX2ElementDecl +xmlSAX2EndDocument +xmlSAX2EndElement +xmlSAX2EndElementNs +xmlSAX2EntityDecl +xmlSAX2ExternalSubset +xmlSAX2GetColumnNumber +xmlSAX2GetEntity +xmlSAX2GetLineNumber +xmlSAX2GetParameterEntity +xmlSAX2GetPublicId +xmlSAX2GetSystemId +xmlSAX2HasExternalSubset +xmlSAX2HasInternalSubset +xmlSAX2IgnorableWhitespace +xmlSAX2InitDefaultSAXHandler +xmlSAX2InternalSubset +xmlSAX2IsStandalone +xmlSAX2NotationDecl +xmlSAX2ProcessingInstruction +xmlSAX2Reference +xmlSAX2ResolveEntity +xmlSAX2SetDocumentLocator +xmlSAX2StartDocument +xmlSAX2StartElement +xmlSAX2StartElementNs +xmlSAX2UnparsedEntityDecl +xmlSAXParseDTD +xmlSAXVersion +xmlSaveClose +xmlSaveDoc +xmlSaveFile +xmlSaveFileEnc +xmlSaveFileTo +xmlSaveFlush +xmlSaveFormatFile +xmlSaveFormatFileEnc +xmlSaveFormatFileTo +xmlSaveNoEmptyTags DATA +xmlSaveSetAttrEscape +xmlSaveSetEscape +xmlSaveToBuffer +xmlSaveToFd +xmlSaveToFilename +xmlSaveToIO +xmlSaveTree +xmlSaveUri +xmlSearchNs +xmlSearchNsByHref +xmlSetBufferAllocationScheme +xmlSetCompressMode +xmlSetDocCompressMode +xmlSetExternalEntityLoader +xmlSetGenericErrorFunc +xmlSetListDoc +xmlSetNs +xmlSetNsProp +xmlSetProp +xmlSetStructuredErrorFunc +xmlSetTreeDoc +xmlSkipBlankChars +xmlSnprintfElementContent +xmlSplitQName +xmlSplitQName2 +xmlSplitQName3 +xmlSprintfElementContent +xmlStopParser +xmlStrEqual +xmlStrPrintf +xmlStrQEqual +xmlStrVPrintf +xmlStrcasecmp +xmlStrcasestr +xmlStrcat +xmlStrchr +xmlStrcmp +xmlStrdup +xmlStringComment DATA +xmlStringCurrentChar +xmlStringDecodeEntities +xmlStringGetNodeList +xmlStringLenDecodeEntities +xmlStringLenGetNodeList +xmlStringText DATA +xmlStringTextNoenc DATA +xmlStrlen +xmlStrncasecmp +xmlStrncat +xmlStrncatNew +xmlStrncmp +xmlStrndup +xmlStrstr +xmlStrsub +xmlStructuredError DATA +xmlStructuredErrorContext DATA +xmlSubstituteEntitiesDefault +xmlSubstituteEntitiesDefaultValue DATA +xmlSwitchEncoding +xmlSwitchInputEncoding +xmlSwitchToEncoding +xmlTextConcat +xmlTextMerge +xmlTextReaderAttributeCount +xmlTextReaderBaseUri +xmlTextReaderByteConsumed +xmlTextReaderClose +xmlTextReaderConstBaseUri +xmlTextReaderConstEncoding +xmlTextReaderConstLocalName +xmlTextReaderConstName +xmlTextReaderConstNamespaceUri +xmlTextReaderConstPrefix +xmlTextReaderConstString +xmlTextReaderConstValue +xmlTextReaderConstXmlLang +xmlTextReaderConstXmlVersion +xmlTextReaderCurrentDoc +xmlTextReaderCurrentNode +xmlTextReaderDepth +xmlTextReaderExpand +xmlTextReaderGetAttribute +xmlTextReaderGetAttributeNo +xmlTextReaderGetAttributeNs +xmlTextReaderGetErrorHandler +xmlTextReaderGetParserColumnNumber +xmlTextReaderGetParserLineNumber +xmlTextReaderGetParserProp +xmlTextReaderGetRemainder +xmlTextReaderHasAttributes +xmlTextReaderHasValue +xmlTextReaderIsDefault +xmlTextReaderIsEmptyElement +xmlTextReaderIsNamespaceDecl +xmlTextReaderIsValid +xmlTextReaderLocalName +xmlTextReaderLocatorBaseURI +xmlTextReaderLocatorLineNumber +xmlTextReaderLookupNamespace +xmlTextReaderMoveToAttribute +xmlTextReaderMoveToAttributeNo +xmlTextReaderMoveToAttributeNs +xmlTextReaderMoveToElement +xmlTextReaderMoveToFirstAttribute +xmlTextReaderMoveToNextAttribute +xmlTextReaderName +xmlTextReaderNamespaceUri +xmlTextReaderNext +xmlTextReaderNextSibling +xmlTextReaderNodeType +xmlTextReaderNormalization +xmlTextReaderPrefix +xmlTextReaderPreserve +xmlTextReaderQuoteChar +xmlTextReaderRead +xmlTextReaderReadAttributeValue +xmlTextReaderReadInnerXml +xmlTextReaderReadOuterXml +xmlTextReaderReadState +xmlTextReaderReadString +xmlTextReaderSetErrorHandler +xmlTextReaderSetParserProp +xmlTextReaderSetStructuredErrorHandler +xmlTextReaderSetup +xmlTextReaderStandalone +xmlTextReaderValue +xmlTextReaderXmlLang +xmlTextWriterEndAttribute +xmlTextWriterEndCDATA +xmlTextWriterEndComment +xmlTextWriterEndDTD +xmlTextWriterEndDTDAttlist +xmlTextWriterEndDTDElement +xmlTextWriterEndDTDEntity +xmlTextWriterEndDocument +xmlTextWriterEndElement +xmlTextWriterEndPI +xmlTextWriterFlush +xmlTextWriterFullEndElement +xmlTextWriterSetIndent +xmlTextWriterSetIndentString +xmlTextWriterSetQuoteChar +xmlTextWriterStartAttribute +xmlTextWriterStartAttributeNS +xmlTextWriterStartCDATA +xmlTextWriterStartComment +xmlTextWriterStartDTD +xmlTextWriterStartDTDAttlist +xmlTextWriterStartDTDElement +xmlTextWriterStartDTDEntity +xmlTextWriterStartDocument +xmlTextWriterStartElement +xmlTextWriterStartElementNS +xmlTextWriterStartPI +xmlTextWriterWriteAttribute +xmlTextWriterWriteAttributeNS +xmlTextWriterWriteBase64 +xmlTextWriterWriteBinHex +xmlTextWriterWriteCDATA +xmlTextWriterWriteComment +xmlTextWriterWriteDTD +xmlTextWriterWriteDTDAttlist +xmlTextWriterWriteDTDElement +xmlTextWriterWriteDTDEntity +xmlTextWriterWriteDTDExternalEntity +xmlTextWriterWriteDTDExternalEntityContents +xmlTextWriterWriteDTDInternalEntity +xmlTextWriterWriteDTDNotation +xmlTextWriterWriteElement +xmlTextWriterWriteElementNS +xmlTextWriterWriteFormatAttribute +xmlTextWriterWriteFormatAttributeNS +xmlTextWriterWriteFormatCDATA +xmlTextWriterWriteFormatComment +xmlTextWriterWriteFormatDTD +xmlTextWriterWriteFormatDTDAttlist +xmlTextWriterWriteFormatDTDElement +xmlTextWriterWriteFormatDTDInternalEntity +xmlTextWriterWriteFormatElement +xmlTextWriterWriteFormatElementNS +xmlTextWriterWriteFormatPI +xmlTextWriterWriteFormatRaw +xmlTextWriterWriteFormatString +xmlTextWriterWritePI +xmlTextWriterWriteRaw +xmlTextWriterWriteRawLen +xmlTextWriterWriteString +xmlTextWriterWriteVFormatAttribute +xmlTextWriterWriteVFormatAttributeNS +xmlTextWriterWriteVFormatCDATA +xmlTextWriterWriteVFormatComment +xmlTextWriterWriteVFormatDTD +xmlTextWriterWriteVFormatDTDAttlist +xmlTextWriterWriteVFormatDTDElement +xmlTextWriterWriteVFormatDTDInternalEntity +xmlTextWriterWriteVFormatElement +xmlTextWriterWriteVFormatElementNS +xmlTextWriterWriteVFormatPI +xmlTextWriterWriteVFormatRaw +xmlTextWriterWriteVFormatString +xmlThrDefBufferAllocScheme +xmlThrDefDefaultBufferSize +xmlThrDefDeregisterNodeDefault +xmlThrDefDoValidityCheckingDefaultValue +xmlThrDefGetWarningsDefaultValue +xmlThrDefIndentTreeOutput +xmlThrDefKeepBlanksDefaultValue +xmlThrDefLineNumbersDefaultValue +xmlThrDefLoadExtDtdDefaultValue +xmlThrDefOutputBufferCreateFilenameDefault +xmlThrDefParserDebugEntities +xmlThrDefParserInputBufferCreateFilenameDefault +xmlThrDefPedanticParserDefaultValue +xmlThrDefRegisterNodeDefault +xmlThrDefSaveNoEmptyTags +xmlThrDefSetGenericErrorFunc +xmlThrDefSetStructuredErrorFunc +xmlThrDefSubstituteEntitiesDefaultValue +xmlThrDefTreeIndentString +xmlTreeIndentString DATA +xmlURIEscape +xmlURIEscapeStr +xmlURIUnescapeString +xmlUTF8Charcmp +xmlUTF8Size +xmlUTF8Strlen +xmlUTF8Strloc +xmlUTF8Strndup +xmlUTF8Strpos +xmlUTF8Strsize +xmlUTF8Strsub +xmlUnlinkNode +xmlUnlockLibrary +xmlUnsetNsProp +xmlUnsetProp +xmlValidCtxtNormalizeAttributeValue +xmlValidGetPotentialChildren +xmlValidGetValidElements +xmlValidNormalizeAttributeValue +xmlValidateAttributeDecl +xmlValidateAttributeValue +xmlValidateDocument +xmlValidateDocumentFinal +xmlValidateDtd +xmlValidateDtdFinal +xmlValidateElement +xmlValidateElementDecl +xmlValidateNCName +xmlValidateNMToken +xmlValidateName +xmlValidateNameValue +xmlValidateNamesValue +xmlValidateNmtokenValue +xmlValidateNmtokensValue +xmlValidateNotationDecl +xmlValidateNotationUse +xmlValidateOneAttribute +xmlValidateOneElement +xmlValidateOneNamespace +xmlValidateQName +xmlValidateRoot diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.dll.a new file mode 100644 index 0000000..7719b6f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.lib new file mode 100644 index 0000000..7719b6f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libxml2.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz.dll.a b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz.dll.a new file mode 100644 index 0000000..3b6642f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz.dll.a differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz1.def b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz1.def new file mode 100644 index 0000000..497a587 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz1.def @@ -0,0 +1,89 @@ +; +; Definition file of libz1.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libz1.dll" +EXPORTS +adler32 +adler32_combine +adler32_z +compress +compress2 +compressBound +crc32 +crc32_combine +crc32_combine_gen +crc32_combine_op +crc32_z +deflate +deflateBound +deflateCopy +deflateEnd +deflateGetDictionary +deflateInit2_ +deflateInit_ +deflateParams +deflatePending +deflatePrime +deflateReset +deflateResetKeep +deflateSetDictionary +deflateSetHeader +deflateTune +get_crc_table +gzbuffer +gzclearerr +gzclose +gzclose_r +gzclose_w +gzdirect +gzdopen +gzeof +gzerror +gzflush +gzfread +gzfwrite +gzgetc +gzgetc_ +gzgets +gzoffset +gzopen +gzopen_w +gzprintf +gzputc +gzputs +gzread +gzrewind +gzseek +gzsetparams +gztell +gzungetc +gzvprintf +gzwrite +inflate +inflateBack +inflateBackEnd +inflateBackInit_ +inflateCodesUsed +inflateCopy +inflateEnd +inflateGetDictionary +inflateGetHeader +inflateInit2_ +inflateInit_ +inflateMark +inflatePrime +inflateReset +inflateReset2 +inflateResetKeep +inflateSetDictionary +inflateSync +inflateSyncPoint +inflateUndermine +inflateValidate +uncompress +uncompress2 +zError +zlibCompileFlags +zlibVersion diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz1.lib b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz1.lib new file mode 100644 index 0000000..3b6642f Binary files /dev/null and b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/libz1.lib differ diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/aom.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/aom.pc new file mode 100644 index 0000000..1637e55 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/aom.pc @@ -0,0 +1,14 @@ +# libaom pkg-config. +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: aom +Description: Alliance for Open Media AV1 codec library v3.5.0. +Version: 3.5.0 +Requires: +Conflicts: +Libs: -L${libdir} -laom +Libs.private: -lm +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-fc.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-fc.pc new file mode 100644 index 0000000..4d345cc --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-fc.pc @@ -0,0 +1,8 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +Name: cairo-fc +Description: Fontconfig font backend for cairo graphics library +Version: 1.17.6 +Requires: cairo, fontconfig >= 2.2.95 +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-ft.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-ft.pc new file mode 100644 index 0000000..d1962a1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-ft.pc @@ -0,0 +1,8 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +Name: cairo-ft +Description: Freetype font backend for cairo graphics library +Version: 1.17.6 +Requires: cairo, freetype2 >= 9.7.3 +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-gobject.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-gobject.pc new file mode 100644 index 0000000..1f724ba --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-gobject.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: cairo-gobject +Description: cairo-gobject for cairo graphics library +Version: 1.17.6 +Requires: cairo, glib-2.0 >= 2.14, gobject-2.0 +Requires.private: libpng, fontconfig >= 2.2.95, freetype2 >= 9.7.3, pixman-1 >= 0.36.0 +Libs: -L${libdir} -lcairo-gobject +Libs.private: -lm +Cflags: -I${includedir}/cairo diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-png.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-png.pc new file mode 100644 index 0000000..4b3e557 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-png.pc @@ -0,0 +1,8 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +Name: cairo-png +Description: PNG functions for cairo graphics library +Version: 1.17.6 +Requires: cairo, libpng +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-svg.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-svg.pc new file mode 100644 index 0000000..89a9503 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo-svg.pc @@ -0,0 +1,8 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +Name: cairo-svg +Description: SVG surface backend for cairo graphics library +Version: 1.17.6 +Requires: cairo, libpng +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo.pc new file mode 100644 index 0000000..8f9eff3 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cairo.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: cairo +Description: Multi-platform 2D graphics library +Version: 1.17.6 +Requires.private: libpng, fontconfig >= 2.2.95, freetype2 >= 9.7.3, pixman-1 >= 0.36.0 +Libs: -L${libdir} -lcairo +Libs.private: -lm +Cflags: -I${includedir}/cairo diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cgif.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cgif.pc new file mode 100644 index 0000000..6acba73 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/cgif.pc @@ -0,0 +1,9 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: cgif +Description: A fast and lightweight GIF encoder +Version: 0.3.0 +Libs: -L${libdir} -lcgif +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/expat.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/expat.pc new file mode 100644 index 0000000..0880afd --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/expat.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: expat +Version: 2.5.0 +Description: expat XML parser +URL: https://libexpat.github.io/ +Libs: -L${libdir} -lexpat +Libs.private: -lm +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/fontconfig.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/fontconfig.pc new file mode 100644 index 0000000..6878415 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/fontconfig.pc @@ -0,0 +1,16 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +sysconfdir=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/etc +localstatedir=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/var +confdir=${sysconfdir}/fonts +cachedir=${localstatedir}/cache/fontconfig + +Name: Fontconfig +Description: Font configuration and customization library +Version: 2.14.1 +Requires: freetype2 >= 21.0.15 +Requires.private: expat +Libs: -L${libdir} -lfontconfig +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/freetype2.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/freetype2.pc new file mode 100644 index 0000000..b711653 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/freetype2.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: FreeType 2 +Description: A free, high-quality, and portable font engine. +URL: https://freetype.org +Version: 24.3.18 +Requires.private: zlib, libpng, harfbuzz >= 2.0.0 +Libs: -L${libdir} -lfreetype +Cflags: -I${includedir}/freetype2 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/fribidi.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/fribidi.pc new file mode 100644 index 0000000..3380c89 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/fribidi.pc @@ -0,0 +1,9 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: GNU FriBidi +Description: Unicode Bidirectional Algorithm Library +Version: 1.0.12 +Libs: -L${libdir} -lfribidi +Cflags: -I${includedir}/fribidi diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gdk-pixbuf-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gdk-pixbuf-2.0.pc new file mode 100644 index 0000000..2e4251e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gdk-pixbuf-2.0.pc @@ -0,0 +1,21 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +bindir=${prefix}/bin +gdk_pixbuf_binary_version=2.10.0 +gdk_pixbuf_binarydir=${libdir}/gdk-pixbuf-2.0/2.10.0 +gdk_pixbuf_moduledir=${gdk_pixbuf_binarydir}/loaders +gdk_pixbuf_cache_file=${gdk_pixbuf_binarydir}/loaders.cache +gdk_pixbuf_csource=${bindir}/gdk-pixbuf-csource +gdk_pixbuf_pixdata=${bindir}/gdk-pixbuf-pixdata +gdk_pixbuf_query_loaders=${bindir}/gdk-pixbuf-query-loaders + +Name: GdkPixbuf +Description: Image loading and scaling +Version: 2.42.10 +Requires: gobject-2.0 >= 2.56.0 +Requires.private: libpng, libjpeg, libtiff-4, glib-2.0 >= 2.56.0, gmodule-no-export-2.0 >= 2.56.0, gio-2.0 >= 2.56.0 +Libs: -L${libdir} -lgdk_pixbuf-2.0 +Libs.private: -lm -lintl +Cflags: -I${includedir}/gdk-pixbuf-2.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gio-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gio-2.0.pc new file mode 100644 index 0000000..9482dc8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gio-2.0.pc @@ -0,0 +1,25 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +datadir=${prefix}/share +schemasdir=${datadir}/glib-2.0/schemas +bindir=${prefix}/bin +giomoduledir=${libdir}/gio/modules +gio=${bindir}/gio +gio_querymodules=${bindir}/gio-querymodules +glib_compile_schemas=${bindir}/glib-compile-schemas +glib_compile_resources=${bindir}/glib-compile-resources +gdbus=${bindir}/gdbus +gdbus_codegen=${bindir}/gdbus-codegen +gresource=${bindir}/gresource +gsettings=${bindir}/gsettings + +Name: GIO +Description: glib I/O library +Version: 2.74.1 +Requires: glib-2.0, gobject-2.0 +Requires.private: gmodule-no-export-2.0, zlib +Libs: -L${libdir} -lgio-2.0 +Libs.private: -lintl -lshlwapi -ldnsapi -liphlpapi -lws2_32 +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gio-windows-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gio-windows-2.0.pc new file mode 100644 index 0000000..35ffeba --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gio-windows-2.0.pc @@ -0,0 +1,8 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +Name: GIO Windows specific APIs +Description: Windows specific headers for glib I/O library +Version: 2.74.1 +Requires: gobject-2.0, gmodule-no-export-2.0, gio-2.0 +Cflags: -I${includedir}/gio-win32-2.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gl.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gl.pc new file mode 100644 index 0000000..98d48eb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gl.pc @@ -0,0 +1,4 @@ +Name: gl +Version: 0 +Description: OpenGL +Libs: -lopengl32 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/glib-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/glib-2.0.pc new file mode 100644 index 0000000..fba231f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/glib-2.0.pc @@ -0,0 +1,15 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +bindir=${prefix}/bin +glib_genmarshal=${bindir}/glib-genmarshal +gobject_query=${bindir}/gobject-query +glib_mkenums=${bindir}/glib-mkenums + +Name: GLib +Description: C Utility Library +Version: 2.74.1 +Libs: -L${libdir} -lglib-2.0 -lintl +Libs.private: -lws2_32 -lole32 -lwinmm -lshlwapi -luuid -lm +Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include -mms-bitfields diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/glu.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/glu.pc new file mode 100644 index 0000000..848a0ad --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/glu.pc @@ -0,0 +1,4 @@ +Name: glu +Version: 0 +Description: OpenGL +Libs: -lglu32 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-2.0.pc new file mode 100644 index 0000000..1891d18 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-2.0.pc @@ -0,0 +1,10 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +gmodule_supported=true + +Name: GModule +Description: Dynamic module loader for GLib +Version: 2.74.1 +Requires: gmodule-no-export-2.0, glib-2.0 +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-export-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-export-2.0.pc new file mode 100644 index 0000000..1891d18 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-export-2.0.pc @@ -0,0 +1,10 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +gmodule_supported=true + +Name: GModule +Description: Dynamic module loader for GLib +Version: 2.74.1 +Requires: gmodule-no-export-2.0, glib-2.0 +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-no-export-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-no-export-2.0.pc new file mode 100644 index 0000000..1aa188b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gmodule-no-export-2.0.pc @@ -0,0 +1,13 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +gmodule_supported=true + +Name: GModule +Description: Dynamic module loader for GLib +Version: 2.74.1 +Requires: glib-2.0 +Libs: -L${libdir} -lgmodule-2.0 +Libs.private: -lintl +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gobject-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gobject-2.0.pc new file mode 100644 index 0000000..e547a58 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gobject-2.0.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: GObject +Description: GLib Type, Object, Parameter and Signal Library +Version: 2.74.1 +Requires: glib-2.0 +Requires.private: libffi >= 3.0.0 +Libs: -L${libdir} -lgobject-2.0 +Libs.private: -lintl +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gthread-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gthread-2.0.pc new file mode 100644 index 0000000..1367e5c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/gthread-2.0.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: GThread +Description: Thread support for GLib +Version: 2.74.1 +Requires: glib-2.0 +Libs: -L${libdir} -lgthread-2.0 +Libs.private: -lintl +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz-gobject.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz-gobject.pc new file mode 100644 index 0000000..95bbc8f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz-gobject.pc @@ -0,0 +1,10 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: harfbuzz-gobject +Description: HarfBuzz text shaping library GObject integration +Version: 5.3.1 +Requires: harfbuzz = 5.3.1, glib-2.0, gobject-2.0 +Libs: -L${libdir} -lharfbuzz-gobject +Cflags: -I${includedir}/harfbuzz diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz-subset.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz-subset.pc new file mode 100644 index 0000000..cc26052 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz-subset.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: harfbuzz-subset +Description: HarfBuzz font subsetter +Version: 5.3.1 +Requires: harfbuzz = 5.3.1 +Libs: -L${libdir} -lharfbuzz-subset +Libs.private: -lm +Cflags: -I${includedir}/harfbuzz diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz.pc new file mode 100644 index 0000000..3ae9913 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/harfbuzz.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: harfbuzz +Description: HarfBuzz text shaping library +Version: 5.3.1 +Requires.private: freetype2, glib-2.0 +Libs: -L${libdir} -lharfbuzz +Libs.private: -lm +Cflags: -I${includedir}/harfbuzz diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/imagequant.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/imagequant.pc new file mode 100644 index 0000000..8d17c65 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/imagequant.pc @@ -0,0 +1,10 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: imagequant +Description: Image quantisation +Version: 2.4.1 +Libs: -L${libdir} -limagequant +Libs.private: -lm +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/lcms2.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/lcms2.pc new file mode 100644 index 0000000..fffc7d2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/lcms2.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: lcms2 +Description: LCMS Color Management Library +Version: 2.13 +Libs: -L${libdir} -llcms2 +Libs.private: -lm +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libexif.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libexif.pc new file mode 100644 index 0000000..42fa1c8 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libexif.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libexif +Description: Library for easy access to EXIF data +Requires: +Version: 0.6.24 +Libs: -L${libdir} -lexif +Libs.private: -lm +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libffi.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libffi.pc new file mode 100644 index 0000000..5c27dd4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libffi.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +toolexeclibdir=${libdir} +includedir=${prefix}/include + +Name: libffi +Description: Library supporting Foreign Function Interfaces +Version: 3.4.4 +Libs: -L${toolexeclibdir} -lffi +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libgsf-1.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libgsf-1.pc new file mode 100644 index 0000000..05ba46c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libgsf-1.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libgsf-1 +Description: A library for reading and writing structured files (eg MS OLE and Zip) +Version: 1.14.50 +Requires: glib-2.0 gobject-2.0 libxml-2.0 +Libs: -L${libdir} -lgsf-1 +Cflags: -I${includedir}/libgsf-1 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libgsf-win32-1.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libgsf-win32-1.pc new file mode 100644 index 0000000..7a2cddb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libgsf-win32-1.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libgsf-gnome-1 +Description: Win32 specific extensions to libgsf +Version: 1.14.50 +Requires: libgsf-1 +Libs: -L${libdir} -lgsf-win32-1 +Cflags: diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libheif.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libheif.pc new file mode 100644 index 0000000..2002a1b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libheif.pc @@ -0,0 +1,18 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include +builtin_h265_decoder=no +builtin_h265_encoder=no +builtin_avif_decoder=yes +builtin_avif_encoder=yes + +Name: libheif +Description: HEIF image codec. +URL: https://github.com/strukturag/libheif +Version: 1.13.0 +Requires: +Requires.private: aom +Libs: -L${exec_prefix}/lib -lheif +Libs.private: -lstdc++ +Cflags: -I${prefix}/include diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libjpeg.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libjpeg.pc new file mode 100644 index 0000000..1cc94c1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libjpeg.pc @@ -0,0 +1,10 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +libdir=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/lib +includedir=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/include + +Name: libjpeg +Description: A SIMD-accelerated JPEG codec that provides the libjpeg API +Version: 4.1.1 +Libs: -L${libdir} -ljpeg +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libpng.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libpng.pc new file mode 100644 index 0000000..dfa3651 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libpng.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include/libpng16 + +Name: libpng +Description: Loads and saves PNG files +Version: 1.6.38 +Requires.private: zlib +Libs: -L${libdir} -lpng16 +Libs.private: -lz +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libpng16.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libpng16.pc new file mode 100644 index 0000000..dfa3651 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libpng16.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include/libpng16 + +Name: libpng +Description: Loads and saves PNG files +Version: 1.6.38 +Requires.private: zlib +Libs: -L${libdir} -lpng16 +Libs.private: -lz +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/librsvg-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/librsvg-2.0.pc new file mode 100644 index 0000000..64637c0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/librsvg-2.0.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: librsvg +Description: library that renders svg files +Version: 2.55.1 +Requires: glib-2.0 gio-2.0 gdk-pixbuf-2.0 cairo cairo-gobject pangocairo +Requires.private: +Libs: -L${libdir} -lrsvg-2 -lm -lws2_32 -luserenv -lbcrypt +Cflags: -I${includedir}/librsvg-2.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libtiff-4.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libtiff-4.pc new file mode 100644 index 0000000..a40ccc1 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libtiff-4.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libtiff +Description: Tag Image File Format (TIFF) library. +Version: 4.4.0 +Libs: -L${libdir} -ltiff +Libs.private: -lwebp -ljpeg -lz +Cflags: -I${includedir} +Requires.private: diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libturbojpeg.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libturbojpeg.pc new file mode 100644 index 0000000..8cd0231 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libturbojpeg.pc @@ -0,0 +1,10 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +libdir=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/lib +includedir=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/include + +Name: libturbojpeg +Description: A SIMD-accelerated JPEG codec that provides the TurboJPEG API +Version: 4.1.1 +Libs: -L${libdir} -lturbojpeg +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebp.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebp.pc new file mode 100644 index 0000000..0a3707d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebp.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libwebp +Description: Library for the WebP graphics format +Version: 1.2.4 +Cflags: -I${includedir} +Libs: -L${libdir} -lwebp +Libs.private: -lm diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebpdemux.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebpdemux.pc new file mode 100644 index 0000000..532df13 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebpdemux.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libwebpdemux +Description: Library for parsing the WebP graphics format container +Version: 1.2.4 +Requires: libwebp >= 0.2.0 +Cflags: -I${includedir} +Libs: -L${libdir} -lwebpdemux diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebpmux.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebpmux.pc new file mode 100644 index 0000000..2f0a37a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libwebpmux.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libwebpmux +Description: Library for manipulating the WebP graphics format container +Version: 1.2.4 +Requires: libwebp >= 0.2.0 +Cflags: -I${includedir} +Libs: -L${libdir} -lwebpmux +Libs.private: -lm diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libxml-2.0.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libxml-2.0.pc new file mode 100644 index 0000000..3b9314d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/libxml-2.0.pc @@ -0,0 +1,13 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include +modules=0 + +Name: libXML +Version: 2.10.3 +Description: libXML library version2. +Requires: +Libs: -L${libdir} -lxml2 +Libs.private: -L/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web/lib/lib -lz -lm -lws2_32 +Cflags: -I${includedir}/libxml2 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/orc-0.4.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/orc-0.4.pc new file mode 100644 index 0000000..68f7462 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/orc-0.4.pc @@ -0,0 +1,13 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +toolsdir=${prefix}/bin +orcc=${toolsdir}/orcc.exe + +Name: orc-0.4 +Description: Library of Optimized Inner Loops Runtime Compiler +Version: 0.4.33 +Libs: -L${libdir} -lorc-0.4 +Libs.private: -lm +Cflags: -I${includedir}/orc-0.4 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/orc-test-0.4.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/orc-test-0.4.pc new file mode 100644 index 0000000..d2ccc93 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/orc-test-0.4.pc @@ -0,0 +1,9 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: orc-test +Description: Test Library of Optimized Inner Loops Runtime Compiler +Version: 0.4.33 +Libs: -L${libdir} -lorc-test-0.4 -lm -lorc-0.4 +Cflags: -I${includedir}/orc-0.4 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pango.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pango.pc new file mode 100644 index 0000000..01a0c72 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pango.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: Pango +Description: Internationalized text handling +Version: 1.50.11 +Requires: gobject-2.0 >= 2.62, harfbuzz >= 2.6.0 +Requires.private: glib-2.0 >= 2.62, gio-2.0 >= 2.62, fribidi >= 1.0.6, fontconfig >= 2.13.0, freetype2, cairo >= 1.12.10 +Libs: -L${libdir} -lpango-1.0 +Libs.private: -lm +Cflags: -I${includedir}/pango-1.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangocairo.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangocairo.pc new file mode 100644 index 0000000..8d81a60 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangocairo.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: Pango Cairo +Description: Cairo rendering support for Pango +Version: 1.50.11 +Requires: pango, cairo >= 1.12.10 +Requires.private: pangoft2, glib-2.0 >= 2.62, gobject-2.0 >= 2.62, gio-2.0 >= 2.62, fribidi >= 1.0.6, harfbuzz >= 2.6.0, fontconfig >= 2.13.0, freetype2 +Libs: -L${libdir} -lpangocairo-1.0 +Libs.private: -lm +Cflags: -I${includedir}/pango-1.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangofc.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangofc.pc new file mode 100644 index 0000000..42762a4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangofc.pc @@ -0,0 +1,8 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +Name: Pango FC +Description: Fontconfig support for Pango +Version: 1.50.11 +Requires: pangoft2 +Cflags: -I${includedir}/pango-1.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangoft2.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangoft2.pc new file mode 100644 index 0000000..5425fbe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangoft2.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: Pango FT2 and Pango Fc +Description: Freetype 2.0 and fontconfig font support for Pango +Version: 1.50.11 +Requires: pango, freetype2, fontconfig >= 2.13.0 +Requires.private: glib-2.0 >= 2.62, gobject-2.0 >= 2.62, gio-2.0 >= 2.62, fribidi >= 1.0.6, harfbuzz >= 2.6.0, cairo >= 1.12.10 +Libs: -L${libdir} -lpangoft2-1.0 +Libs.private: -lm +Cflags: -I${includedir}/pango-1.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangoot.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangoot.pc new file mode 100644 index 0000000..6b5e1c4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangoot.pc @@ -0,0 +1,8 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include + +Name: Pango OT +Description: OpenType font support for Pango (deprecated) +Version: 1.50.11 +Requires: pangoft2 +Cflags: -I${includedir}/pango-1.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangowin32.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangowin32.pc new file mode 100644 index 0000000..7a41e2a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pangowin32.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: Pango Win32 +Description: Win32 GDI font support for Pango +Version: 1.50.11 +Requires: pango +Requires.private: glib-2.0 >= 2.62, gobject-2.0 >= 2.62, gio-2.0 >= 2.62, fribidi >= 1.0.6, harfbuzz >= 2.6.0, fontconfig >= 2.13.0, freetype2, cairo >= 1.12.10 +Libs: -L${libdir} -lpangowin32-1.0 +Libs.private: -lm -lgdi32 +Cflags: -I${includedir}/pango-1.0 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pixman-1.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pixman-1.pc new file mode 100644 index 0000000..850d9f5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/pixman-1.pc @@ -0,0 +1,10 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: Pixman +Description: The pixman library (version 1) +Version: 0.42.0 +Libs: -L${libdir} -lpixman-1 +Libs.private: -lm +Cflags: -I${includedir}/pixman-1 diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/spng.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/spng.pc new file mode 100644 index 0000000..250a0c2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/spng.pc @@ -0,0 +1,11 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: spng +Description: PNG decoding and encoding library +Version: 0.7.2 +Requires.private: zlib +Libs: -L${libdir} -lspng +Libs.private: -lm -lz +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/vips-cpp.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/vips-cpp.pc new file mode 100644 index 0000000..988d2ee --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/vips-cpp.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: vips-cpp +Description: C++ API for vips8 image processing library +Version: 8.13.3 +Requires: vips, glib-2.0 >= 2.40, gobject-2.0 +Requires.private: gio-2.0, expat, zlib >= 0.4, libgsf-1 >= 1.14.26, imagequant, cgif >= 0.2.0, libexif >= 0.6, libjpeg, spng >= 0.7, libwebp >= 0.6, libwebpmux >= 0.6, libwebpdemux >= 0.6, pangocairo >= 1.32.6, pangoft2 >= 1.32.6, fontconfig, libtiff-4, librsvg-2.0 >= 2.40.3, cairo >= 1.2, lcms2, orc-0.4 >= 0.4.11, libheif >= 0.4.11 +Libs: -L${libdir} -lvips-cpp +Libs.private: -lm -lintl +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/vips.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/vips.pc new file mode 100644 index 0000000..6690dba --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/vips.pc @@ -0,0 +1,12 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: vips +Description: Image processing library +Version: 8.13.3 +Requires: glib-2.0 >= 2.40, gio-2.0, gobject-2.0 +Requires.private: expat, zlib >= 0.4, libgsf-1 >= 1.14.26, imagequant, cgif >= 0.2.0, libexif >= 0.6, libjpeg, spng >= 0.7, libwebp >= 0.6, libwebpmux >= 0.6, libwebpdemux >= 0.6, pangocairo >= 1.32.6, pangoft2 >= 1.32.6, fontconfig, libtiff-4, librsvg-2.0 >= 2.40.3, cairo >= 1.2, lcms2, orc-0.4 >= 0.4.11, libheif >= 0.4.11 +Libs: -L${libdir} -lvips +Libs.private: -lm -lintl +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/zlib.pc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/zlib.pc new file mode 100644 index 0000000..0188b69 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/lib/pkgconfig/zlib.pc @@ -0,0 +1,13 @@ +prefix=/data/mxe/usr/x86_64-w64-mingw32.shared.posix.web +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +sharedlibdir=${libdir} +includedir=${prefix}/include + +Name: zlib +Description: zlib-ng compression library +Version: 1.2.11.zlib-ng + +Requires: +Libs: -L${libdir} -L${sharedlibdir} -lz +Cflags: -I${includedir} diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/05-reset-dirs-sample.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/05-reset-dirs-sample.conf new file mode 100644 index 0000000..7e92249 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/05-reset-dirs-sample.conf @@ -0,0 +1,9 @@ + + + + Re-define fonts dirs sample + + + fonts + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/09-autohint-if-no-hinting.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/09-autohint-if-no-hinting.conf new file mode 100644 index 0000000..0de5041 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/09-autohint-if-no-hinting.conf @@ -0,0 +1,16 @@ + + + + Enable autohinter if font doesn't have any hinting + + + false + + true + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-autohint.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-autohint.conf new file mode 100644 index 0000000..347a14e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-autohint.conf @@ -0,0 +1,15 @@ + + + + Enable autohinter + + + + true + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-full.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-full.conf new file mode 100644 index 0000000..62a13db --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-full.conf @@ -0,0 +1,15 @@ + + + + Set hintfull to hintstyle + + + + hintfull + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-medium.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-medium.conf new file mode 100644 index 0000000..da6c3eb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-medium.conf @@ -0,0 +1,15 @@ + + + + Set hintmedium to hintstyle + + + + hintmedium + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-none.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-none.conf new file mode 100644 index 0000000..4c40ad4 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-none.conf @@ -0,0 +1,15 @@ + + + + Set hintnone to hintstyle + + + + hintnone + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-slight.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-slight.conf new file mode 100644 index 0000000..96a81fb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-hinting-slight.conf @@ -0,0 +1,15 @@ + + + + Set hintslight to hintstyle + + + + hintslight + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-no-antialias.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-no-antialias.conf new file mode 100644 index 0000000..9a564e5 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-no-antialias.conf @@ -0,0 +1,8 @@ + + + + Disable antialiasing + + false + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-no-sub-pixel.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-no-sub-pixel.conf new file mode 100644 index 0000000..1fb6c98 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-no-sub-pixel.conf @@ -0,0 +1,15 @@ + + + + Disable sub-pixel rendering + + + + none + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf new file mode 100644 index 0000000..0c3a2ef --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf @@ -0,0 +1,83 @@ + + + + Bitmap scaling + + + + false + + + + pixelsize + pixelsize + + + + + + + false + + + false + + + true + + + + + pixelsizefixupfactor + 1.2 + + + pixelsizefixupfactor + 0.8 + + + + + + + true + + + 1.0 + + + + + + false + + + 1.0 + + + + matrix + + pixelsizefixupfactor 0 + 0 pixelsizefixupfactor + + + + + + size + pixelsizefixupfactor + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf new file mode 100644 index 0000000..b74d99f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf @@ -0,0 +1,15 @@ + + + + Enable sub-pixel rendering with the BGR stripes layout + + + + bgr + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf new file mode 100644 index 0000000..a87470a --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf @@ -0,0 +1,15 @@ + + + + Enable sub-pixel rendering with the RGB stripes layout + + + + rgb + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf new file mode 100644 index 0000000..8a03787 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf @@ -0,0 +1,15 @@ + + + + Enable sub-pixel rendering with the vertical BGR stripes layout + + + + vbgr + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf new file mode 100644 index 0000000..a21d4c7 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf @@ -0,0 +1,15 @@ + + + + Enable sub-pixel rendering with the vertical RGB stripes layout + + + + vrgb + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-unhinted.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-unhinted.conf new file mode 100644 index 0000000..9290558 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-unhinted.conf @@ -0,0 +1,15 @@ + + + + Disable hinting + + + + false + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-yes-antialias.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-yes-antialias.conf new file mode 100644 index 0000000..4451f6e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/10-yes-antialias.conf @@ -0,0 +1,8 @@ + + + + Enable antialiasing + + true + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-default.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-default.conf new file mode 100644 index 0000000..6025597 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-default.conf @@ -0,0 +1,17 @@ + + + + Use lcddefault as default for LCD filter + + + + + lcddefault + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf new file mode 100644 index 0000000..9cb6d3e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf @@ -0,0 +1,17 @@ + + + + Use lcdlegacy as default for LCD filter + + + + + lcdlegacy + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-light.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-light.conf new file mode 100644 index 0000000..1f9231e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/11-lcdfilter-light.conf @@ -0,0 +1,17 @@ + + + + Use lcdlight as default for LCD filter + + + + + lcdlight + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/20-unhint-small-vera.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/20-unhint-small-vera.conf new file mode 100644 index 0000000..e4e9c33 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/20-unhint-small-vera.conf @@ -0,0 +1,49 @@ + + + + Disable hinting for Bitstream Vera fonts when the size is less than 8ppem + + + + + Bitstream Vera Sans + + + 7.5 + + + false + + + + + + Bitstream Vera Serif + + + 7.5 + + + false + + + + + + Bitstream Vera Sans Mono + + + 7.5 + + + false + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/25-unhint-nonlatin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/25-unhint-nonlatin.conf new file mode 100644 index 0000000..2fb002f --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/25-unhint-nonlatin.conf @@ -0,0 +1,128 @@ + + + + Disable hinting for CJK fonts + + + + + Kochi Mincho + + + false + + + + + Kochi Gothic + + + false + + + + + Sazanami Mincho + + + false + + + + + Sazanami Gothic + + + false + + + + + Baekmuk Batang + + + false + + + + + Baekmuk Dotum + + + false + + + + + Baekmuk Gulim + + + false + + + + + Baekmuk Headline + + + false + + + + + AR PL Mingti2L Big5 + + + false + + + + + AR PL ShanHeiSun Uni + + + false + + + + + AR PL KaitiM Big5 + + + false + + + + + AR PL ZenKai Uni + + + false + + + + + AR PL SungtiL GB + + + false + + + + + AR PL KaitiM GB + + + false + + + + + ZYSong18030 + + + false + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/30-metric-aliases.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/30-metric-aliases.conf new file mode 100644 index 0000000..7216b4e --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/30-metric-aliases.conf @@ -0,0 +1,637 @@ + + + + Set substitutions for similar/metric-compatible families + + + + + + + + Nimbus Sans L + + Helvetica + + + + + Nimbus Sans + + Helvetica + + + + + TeX Gyre Heros + + Helvetica + + + + + Nimbus Sans Narrow + + Helvetica Narrow + + + + + TeX Gyre Heros Cn + + Helvetica Narrow + + + + + Nimbus Roman No9 L + + Times + + + + + Nimbus Roman + + Times + + + + + TeX Gyre Termes + + Times + + + + + Nimbus Mono L + + Courier + + + + + Nimbus Mono + + Courier + + + + + Nimbus Mono PS + + Courier + + + + + TeX Gyre Cursor + + Courier + + + + + Avant Garde + + ITC Avant Garde Gothic + + + + + URW Gothic L + + ITC Avant Garde Gothic + + + + + URW Gothic + + ITC Avant Garde Gothic + + + + + TeX Gyre Adventor + + ITC Avant Garde Gothic + + + + + Bookman + + ITC Bookman + + + + + URW Bookman L + + ITC Bookman + + + + + Bookman URW + + ITC Bookman + + + + + URW Bookman + + ITC Bookman + + + + + TeX Gyre Bonum + + ITC Bookman + + + + + Bookman Old Style + + ITC Bookman + + + + + Zapf Chancery + + ITC Zapf Chancery + + + + + URW Chancery L + + ITC Zapf Chancery + + + + + Chancery URW + + ITC Zapf Chancery + + + + + Z003 + + ITC Zapf Chancery + + + + + TeX Gyre Chorus + + ITC Zapf Chancery + + + + + URW Palladio L + + Palatino + + + + + Palladio URW + + Palatino + + + + + P052 + + Palatino + + + + + TeX Gyre Pagella + + Palatino + + + + + Palatino Linotype + + Palatino + + + + + Century Schoolbook L + + New Century Schoolbook + + + + + Century SchoolBook URW + + New Century Schoolbook + + + + + C059 + + New Century Schoolbook + + + + + TeX Gyre Schola + + New Century Schoolbook + + + + + Century Schoolbook + + New Century Schoolbook + + + + + + Arimo + + Arial + + + + + Liberation Sans + + Arial + + + + + Liberation Sans Narrow + + Arial Narrow + + + + + Albany + + Arial + + + + + Albany AMT + + Arial + + + + + Tinos + + Times New Roman + + + + + Liberation Serif + + Times New Roman + + + + + Thorndale + + Times New Roman + + + + + Thorndale AMT + + Times New Roman + + + + + Cousine + + Courier New + + + + + Liberation Mono + + Courier New + + + + + Cumberland + + Courier New + + + + + Cumberland AMT + + Courier New + + + + + Gelasio + + Georgia + + + + + Caladea + + Cambria + + + + + Carlito + + Calibri + + + + + SymbolNeu + + Symbol + + + + + + + + Helvetica + + Arial + + + + + Helvetica Narrow + + Arial Narrow + + + + + Times + + Times New Roman + + + + + Courier + + Courier New + + + + + + Arial + + Helvetica + + + + + Arial Narrow + + Helvetica Narrow + + + + + Times New Roman + + Times + + + + + Courier New + + Courier + + + + + + + + Helvetica + + TeX Gyre Heros + + + + + Helvetica Narrow + + TeX Gyre Heros Cn + + + + + Times + + TeX Gyre Termes + + + + + Courier + + TeX Gyre Cursor + + + + + Courier Std + + Courier + + + + + ITC Avant Garde Gothic + + TeX Gyre Adventor + + + + + ITC Bookman + + Bookman Old Style + TeX Gyre Bonum + + + + + ITC Zapf Chancery + + TeX Gyre Chorus + + + + + Palatino + + Palatino Linotype + TeX Gyre Pagella + + + + + New Century Schoolbook + + Century Schoolbook + TeX Gyre Schola + + + + + + Arial + + Arimo + Liberation Sans + Albany + Albany AMT + + + + + Arial Narrow + + Liberation Sans Narrow + + + + + Times New Roman + + Tinos + Liberation Serif + Thorndale + Thorndale AMT + + + + + Courier New + + Cousine + Liberation Mono + Cumberland + Cumberland AMT + + + + + Georgia + + Gelasio + + + + + Cambria + + Caladea + + + + + Calibri + + Carlito + + + + + Symbol + + SymbolNeu + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/35-lang-normalize.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/35-lang-normalize.conf new file mode 100644 index 0000000..d7a0438 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/35-lang-normalize.conf @@ -0,0 +1,1114 @@ + + + + + + aa + aa + + + + ab + ab + + + + af + af + + + + ak + ak + + + + am + am + + + + an + an + + + + ar + ar + + + + as + as + + + + ast + ast + + + + av + av + + + + ay + ay + + + + ba + ba + + + + be + be + + + + bg + bg + + + + bh + bh + + + + bho + bho + + + + bi + bi + + + + bin + bin + + + + bm + bm + + + + bn + bn + + + + bo + bo + + + + br + br + + + + brx + brx + + + + bs + bs + + + + bua + bua + + + + byn + byn + + + + ca + ca + + + + ce + ce + + + + ch + ch + + + + chm + chm + + + + chr + chr + + + + co + co + + + + crh + crh + + + + cs + cs + + + + csb + csb + + + + cu + cu + + + + cv + cv + + + + cy + cy + + + + da + da + + + + de + de + + + + doi + doi + + + + dv + dv + + + + dz + dz + + + + ee + ee + + + + el + el + + + + en + en + + + + eo + eo + + + + es + es + + + + et + et + + + + eu + eu + + + + fa + fa + + + + fat + fat + + + + ff + ff + + + + fi + fi + + + + fil + fil + + + + fj + fj + + + + fo + fo + + + + fr + fr + + + + fur + fur + + + + fy + fy + + + + ga + ga + + + + gd + gd + + + + gez + gez + + + + gl + gl + + + + gn + gn + + + + gu + gu + + + + gv + gv + + + + ha + ha + + + + haw + haw + + + + he + he + + + + hi + hi + + + + hne + hne + + + + ho + ho + + + + hr + hr + + + + hsb + hsb + + + + ht + ht + + + + hu + hu + + + + hy + hy + + + + hz + hz + + + + ia + ia + + + + id + id + + + + ie + ie + + + + ig + ig + + + + ii + ii + + + + ik + ik + + + + io + io + + + + is + is + + + + it + it + + + + iu + iu + + + + ja + ja + + + + jv + jv + + + + ka + ka + + + + kaa + kaa + + + + kab + kab + + + + ki + ki + + + + kj + kj + + + + kk + kk + + + + kl + kl + + + + km + km + + + + kn + kn + + + + ko + ko + + + + kok + kok + + + + kr + kr + + + + ks + ks + + + + kum + kum + + + + kv + kv + + + + kw + kw + + + + kwm + kwm + + + + ky + ky + + + + la + la + + + + lah + lah + + + + lb + lb + + + + lez + lez + + + + lg + lg + + + + li + li + + + + ln + ln + + + + lo + lo + + + + lt + lt + + + + lv + lv + + + + mai + mai + + + + mg + mg + + + + mh + mh + + + + mi + mi + + + + mk + mk + + + + ml + ml + + + + mni + mni + + + + mo + mo + + + + mr + mr + + + + ms + ms + + + + mt + mt + + + + my + my + + + + na + na + + + + nb + nb + + + + nds + nds + + + + ne + ne + + + + ng + ng + + + + nl + nl + + + + nn + nn + + + + no + no + + + + nqo + nqo + + + + nr + nr + + + + nso + nso + + + + nv + nv + + + + ny + ny + + + + oc + oc + + + + om + om + + + + or + or + + + + os + os + + + + ota + ota + + + + pa + pa + + + + pl + pl + + + + pt + pt + + + + qu + qu + + + + quz + quz + + + + rm + rm + + + + rn + rn + + + + ro + ro + + + + ru + ru + + + + rw + rw + + + + sa + sa + + + + sah + sah + + + + sat + sat + + + + sc + sc + + + + sco + sco + + + + sd + sd + + + + se + se + + + + sel + sel + + + + sg + sg + + + + sh + sh + + + + shs + shs + + + + si + si + + + + sid + sid + + + + sk + sk + + + + sl + sl + + + + sm + sm + + + + sma + sma + + + + smj + smj + + + + smn + smn + + + + sms + sms + + + + sn + sn + + + + so + so + + + + sq + sq + + + + sr + sr + + + + ss + ss + + + + st + st + + + + su + su + + + + sv + sv + + + + sw + sw + + + + syr + syr + + + + ta + ta + + + + te + te + + + + tg + tg + + + + th + th + + + + tig + tig + + + + tk + tk + + + + tl + tl + + + + tn + tn + + + + to + to + + + + tr + tr + + + + ts + ts + + + + tt + tt + + + + tw + tw + + + + ty + ty + + + + tyv + tyv + + + + ug + ug + + + + uk + uk + + + + ur + ur + + + + uz + uz + + + + ve + ve + + + + vi + vi + + + + vo + vo + + + + vot + vot + + + + wa + wa + + + + wal + wal + + + + wen + wen + + + + wo + wo + + + + xh + xh + + + + yap + yap + + + + yi + yi + + + + yo + yo + + + + za + za + + + + zu + zu + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/40-nonlatin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/40-nonlatin.conf new file mode 100644 index 0000000..f8d96ce --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/40-nonlatin.conf @@ -0,0 +1,332 @@ + + + + Set substitutions for non-Latin fonts + + + + + Nazli + serif + + + Lotoos + serif + + + Mitra + serif + + + Ferdosi + serif + + + Badr + serif + + + Zar + serif + + + Titr + serif + + + Jadid + serif + + + Kochi Mincho + serif + + + AR PL SungtiL GB + serif + + + AR PL Mingti2L Big5 + serif + + + MS 明朝 + serif + + + NanumMyeongjo + serif + + + UnBatang + serif + + + Baekmuk Batang + serif + + + MgOpen Canonica + serif + + + Sazanami Mincho + serif + + + AR PL ZenKai Uni + serif + + + ZYSong18030 + serif + + + FreeSerif + serif + + + SimSun + serif + + + + Arshia + sans-serif + + + Elham + sans-serif + + + Farnaz + sans-serif + + + Nasim + sans-serif + + + Sina + sans-serif + + + Roya + sans-serif + + + Koodak + sans-serif + + + Terafik + sans-serif + + + Kochi Gothic + sans-serif + + + AR PL KaitiM GB + sans-serif + + + AR PL KaitiM Big5 + sans-serif + + + MS ゴシック + sans-serif + + + NanumGothic + sans-serif + + + UnDotum + sans-serif + + + Baekmuk Dotum + sans-serif + + + MgOpen Modata + sans-serif + + + Sazanami Gothic + sans-serif + + + AR PL ShanHeiSun Uni + sans-serif + + + ZYSong18030 + sans-serif + + + FreeSans + sans-serif + + + + NSimSun + monospace + + + ZYSong18030 + monospace + + + NanumGothicCoding + monospace + + + FreeMono + monospace + + + + + Homa + fantasy + + + Kamran + fantasy + + + Fantezi + fantasy + + + Tabassom + fantasy + + + + + IranNastaliq + cursive + + + Nafees Nastaleeq + cursive + + + + + Noto Sans Arabic UI + system-ui + + + Noto Sans Bengali UI + system-ui + + + Noto Sans Devanagari UI + system-ui + + + Noto Sans Gujarati UI + system-ui + + + Noto Sans Gurmukhi UI + system-ui + + + Noto Sans Kannada UI + system-ui + + + Noto Sans Khmer UI + system-ui + + + Noto Sans Lao UI + system-ui + + + Noto Sans Malayalam UI + system-ui + + + Noto Sans Myanmar UI + system-ui + + + Noto Sans Oriya UI + system-ui + + + Noto Sans Sinhala UI + system-ui + + + Noto Sans Tamil UI + system-ui + + + Noto Sans Telugu UI + system-ui + + + Noto Sans Thai UI + system-ui + + + Leelawadee UI + system-ui + + + Nirmala UI + system-ui + + + Yu Gothic UI + system-ui + + + Meiryo UI + system-ui + + + MS UI Gothic + system-ui + + + Khmer UI + system-ui + + + Lao UI + system-ui + + + Microsoft JhengHei UI + system-ui + + + Microsoft YaHei UI + system-ui + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/45-generic.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/45-generic.conf new file mode 100644 index 0000000..5c1bd36 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/45-generic.conf @@ -0,0 +1,136 @@ + + + + Set substitutions for emoji/math fonts + + + + + + + + Noto Color Emoji + emoji + + + Apple Color Emoji + emoji + + + Segoe UI Emoji + emoji + + + Twitter Color Emoji + emoji + + + EmojiOne Mozilla + emoji + + + + Emoji Two + emoji + + + JoyPixels + emoji + + + Emoji One + emoji + + + + Noto Emoji + emoji + + + Android Emoji + emoji + + + + + + emoji + + + und-zsye + + + + + + und-zsye + + + emoji + + + + + emoji + + + + + + + + + XITS Math + math + + + STIX Two Math + math + + + Cambria Math + math + + + Latin Modern Math + math + + + Minion Math + math + + + Lucida Math + math + + + Asana Math + math + + + + + + math + + + und-zmth + + + + + + und-zmth + + + math + + + + + math + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/45-latin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/45-latin.conf new file mode 100644 index 0000000..86486c9 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/45-latin.conf @@ -0,0 +1,301 @@ + + + + Set substitutions for Latin fonts + + + + + Bitstream Vera Serif + serif + + + Cambria + serif + + + Constantia + serif + + + DejaVu Serif + serif + + + Elephant + serif + + + Garamond + serif + + + Georgia + serif + + + Liberation Serif + serif + + + Luxi Serif + serif + + + MS Serif + serif + + + Nimbus Roman No9 L + serif + + + Nimbus Roman + serif + + + Palatino Linotype + serif + + + Thorndale AMT + serif + + + Thorndale + serif + + + Times New Roman + serif + + + Times + serif + + + + Albany AMT + sans-serif + + + Albany + sans-serif + + + Arial Unicode MS + sans-serif + + + Arial + sans-serif + + + Bitstream Vera Sans + sans-serif + + + Britannic + sans-serif + + + Calibri + sans-serif + + + Candara + sans-serif + + + Century Gothic + sans-serif + + + Corbel + sans-serif + + + DejaVu Sans + sans-serif + + + Helvetica + sans-serif + + + Haettenschweiler + sans-serif + + + Liberation Sans + sans-serif + + + MS Sans Serif + sans-serif + + + Nimbus Sans L + sans-serif + + + Nimbus Sans + sans-serif + + + Luxi Sans + sans-serif + + + Tahoma + sans-serif + + + Trebuchet MS + sans-serif + + + Twentieth Century + sans-serif + + + Verdana + sans-serif + + + + Andale Mono + monospace + + + Bitstream Vera Sans Mono + monospace + + + Consolas + monospace + + + Courier New + monospace + + + Courier + monospace + + + Courier Std + monospace + + + Cumberland AMT + monospace + + + Cumberland + monospace + + + DejaVu Sans Mono + monospace + + + Fixedsys + monospace + + + Inconsolata + monospace + + + Liberation Mono + monospace + + + Luxi Mono + monospace + + + Nimbus Mono L + monospace + + + Nimbus Mono + monospace + + + Nimbus Mono PS + monospace + + + Terminal + monospace + + + + Bauhaus Std + fantasy + + + Cooper Std + fantasy + + + Copperplate Gothic Std + fantasy + + + Impact + fantasy + + + + Comic Sans MS + cursive + + + ITC Zapf Chancery Std + cursive + + + Zapfino + cursive + + + + Cantarell + system-ui + + + Noto Sans UI + system-ui + + + Segoe UI + system-ui + + + Segoe UI Historic + system-ui + + + Segoe UI Symbol + system-ui + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/48-spacing.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/48-spacing.conf new file mode 100644 index 0000000..6df5c11 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/48-spacing.conf @@ -0,0 +1,16 @@ + + + + Add mono to the family when spacing is 100 + + + + 100 + + + monospace + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/49-sansserif.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/49-sansserif.conf new file mode 100644 index 0000000..6cc3a1c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/49-sansserif.conf @@ -0,0 +1,22 @@ + + + + Add sans-serif to the family when no generic name + + + + sans-serif + + + serif + + + monospace + + + sans-serif + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/50-user.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/50-user.conf new file mode 100644 index 0000000..d019f4d --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/50-user.conf @@ -0,0 +1,16 @@ + + + + Load per-user customization files + + fontconfig/conf.d + fontconfig/fonts.conf + + ~/.fonts.conf.d + ~/.fonts.conf + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/51-local.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/51-local.conf new file mode 100644 index 0000000..82e3c1b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/51-local.conf @@ -0,0 +1,7 @@ + + + + Load local customization file + + local.conf + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/60-generic.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/60-generic.conf new file mode 100644 index 0000000..7831507 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/60-generic.conf @@ -0,0 +1,64 @@ + + + + Set preferable fonts for emoji/math fonts + + + + + + + + und-zsye + + + true + + + false + + + true + + + + + + emoji + + + Noto Color Emoji + Apple Color Emoji + Segoe UI Emoji + Twitter Color Emoji + EmojiOne Mozilla + + Emoji Two + JoyPixels + Emoji One + + Noto Emoji + Android Emoji + + + + + + + math + + XITS Math + STIX Two Math + Cambria Math + Latin Modern Math + Minion Math + Lucida Math + Asana Math + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/60-latin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/60-latin.conf new file mode 100644 index 0000000..ff933af --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/60-latin.conf @@ -0,0 +1,88 @@ + + + + Set preferable fonts for Latin + + serif + + Noto Serif + DejaVu Serif + Times New Roman + Thorndale AMT + Luxi Serif + Nimbus Roman No9 L + Nimbus Roman + Times + + + + sans-serif + + Noto Sans + DejaVu Sans + Verdana + Arial + Albany AMT + Luxi Sans + Nimbus Sans L + Nimbus Sans + Helvetica + Lucida Sans Unicode + BPG Glaho International + Tahoma + + + + monospace + + Noto Sans Mono + DejaVu Sans Mono + Inconsolata + Andale Mono + Courier New + Cumberland AMT + Luxi Mono + Nimbus Mono L + Nimbus Mono + Nimbus Mono PS + Courier + + + + + fantasy + + Impact + Copperplate Gothic Std + Cooper Std + Bauhaus Std + + + + + cursive + + ITC Zapf Chancery Std + Zapfino + Comic Sans MS + + + + + system-ui + + Cantarell + Noto Sans UI + Segoe UI + Segoe UI Historic + Segoe UI Symbol + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-fonts-persian.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-fonts-persian.conf new file mode 100644 index 0000000..47da1bb --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-fonts-persian.conf @@ -0,0 +1,418 @@ + + + + + + + + + + Nesf + Nesf2 + + + Nesf2 + Persian_sansserif_default + + + + + + Nazanin + Nazli + + + Lotus + Lotoos + + + Yaqut + Yaghoot + + + Yaghut + Yaghoot + + + Traffic + Terafik + + + Ferdowsi + Ferdosi + + + Fantezy + Fantezi + + + + + + + + Jadid + Persian_title + + + Titr + Persian_title + + + + + Kamran + + Persian_fantasy + Homa + + + + Homa + + Persian_fantasy + Kamran + + + + Fantezi + Persian_fantasy + + + Tabassom + Persian_fantasy + + + + + Arshia + Persian_square + + + Nasim + Persian_square + + + Elham + + Persian_square + Farnaz + + + + Farnaz + + Persian_square + Elham + + + + Sina + Persian_square + + + + + + + Persian_title + + Titr + Jadid + Persian_serif + + + + + + Persian_fantasy + + Homa + Kamran + Fantezi + Tabassom + Persian_square + + + + + + Persian_square + + Arshia + Elham + Farnaz + Nasim + Sina + Persian_serif + + + + + + + + Elham + + + farsiweb + + + + + + Homa + + + farsiweb + + + + + + Koodak + + + farsiweb + + + + + + Nazli + + + farsiweb + + + + + + Roya + + + farsiweb + + + + + + Terafik + + + farsiweb + + + + + + Titr + + + farsiweb + + + + + + + + + + TURNED-OFF + + + farsiweb + + + + roman + + + + roman + + + + + matrix + 1-0.2 + 01 + + + + + + oblique + + + + + + + + + farsiweb + + + false + + + false + + + false + + + + + + + + + serif + + Nazli + Lotoos + Mitra + Ferdosi + Badr + Zar + + + + + + sans-serif + + Roya + Koodak + Terafik + + + + + + monospace + + + Terafik + + + + + + fantasy + + Homa + Kamran + Fantezi + Tabassom + + + + + + cursive + + IranNastaliq + Nafees Nastaleeq + + + + + + + + + serif + + + 200 + + + 24 + + + Titr + + + + + + + sans-serif + + + 200 + + + 24 + + + Titr + + + + + + + Persian_sansserif_default + + + 200 + + + 24 + + + Titr + + + + + + + + + Persian_sansserif_default + + + Roya + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-khmer.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-khmer.conf new file mode 100644 index 0000000..b3d47d6 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-khmer.conf @@ -0,0 +1,16 @@ + + + + + serif + + Khmer OS" + + + + sans-serif + + Khmer OS" + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-nonlatin.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-nonlatin.conf new file mode 100644 index 0000000..4d135b0 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/65-nonlatin.conf @@ -0,0 +1,228 @@ + + + + Set preferable fonts for non-Latin + + serif + + Artsounk + BPG UTF8 M + Kinnari + Norasi + Frank Ruehl + Dror + JG LaoTimes + Saysettha Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Mincho + SimSun + PMingLiu + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + ZYSong18030 + HanyiSong + MgOpen Canonica + Sazanami Mincho + IPAMonaMincho + IPAMincho + Kochi Mincho + AR PL SungtiL GB + AR PL Mingti2L Big5 + AR PL Zenkai Uni + MS 明朝 + ZYSong18030 + NanumMyeongjo + UnBatang + Baekmuk Batang + KacstQura + Frank Ruehl CLM + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Rachana + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + sans-serif + + Nachlieli + Lucida Sans Unicode + Yudit Unicode + Kerkis + ArmNet Helvetica + Artsounk + BPG UTF8 M + Waree + Loma + Garuda + Umpush + Saysettha Unicode + JG Lao Old Arial + GF Zemen Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Gothic + UmePlus P Gothic + Microsoft YaHei + Microsoft JhengHei + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + MgOpen Modata + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + AR PL KaitiM Big5 + AR PL ShanHeiSun Uni + AR PL SungtiL GB + AR PL Mingti2L Big5 + MS ゴシック + ZYSong18030 + TSCu_Paranar + NanumGothic + UnDotum + Baekmuk Dotum + Baekmuk Gulim + KacstQura + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + monospace + + Miriam Mono + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + MS Gothic + UmePlus Gothic + NSimSun + MingLiu + AR PL ShanHeiSun Uni + AR PL New Sung Mono + HanyiSong + AR PL SungtiL GB + AR PL Mingti2L Big5 + ZYSong18030 + NanumGothicCoding + NanumGothic + UnDotum + Baekmuk Dotum + Baekmuk Gulim + TlwgTypo + TlwgTypist + TlwgTypewriter + TlwgMono + Hasida + GF Zemen Unicode + Hapax Berbère + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + + system-ui + + Noto Sans Arabic UI + Noto Sans Bengali UI + Noto Sans Devanagari UI + Noto Sans Gujarati UI + Noto Sans Gurmukhi UI + Noto Sans Kannada UI + Noto Sans Khmer UI + Noto Sans Lao UI + Noto Sans Malayalam UI + Noto Sans Myanmar UI + Noto Sans Oriya UI + Noto Sans Sinhala UI + Noto Sans Tamil UI + Noto Sans Telugu UI + Noto Sans Thai UI + Leelawadee UI + Nirmala UI + Yu Gothic UI + Meiryo UI + MS UI Gothic + Khmer UI + Lao UI + Microsoft YaHei UI + Microsoft JhengHei UI + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/69-unifont.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/69-unifont.conf new file mode 100644 index 0000000..02854ff --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/69-unifont.conf @@ -0,0 +1,28 @@ + + + + + serif + + FreeSerif + Code2000 + Code2001 + + + + sans-serif + + FreeSans + Arial Unicode MS + Arial Unicode + Code2000 + Code2001 + + + + monospace + + FreeMono + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/70-no-bitmaps.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/70-no-bitmaps.conf new file mode 100644 index 0000000..3cde490 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/70-no-bitmaps.conf @@ -0,0 +1,13 @@ + + + + Reject bitmap fonts + + + + + false + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/70-yes-bitmaps.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/70-yes-bitmaps.conf new file mode 100644 index 0000000..272b292 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/70-yes-bitmaps.conf @@ -0,0 +1,13 @@ + + + + Accept bitmap fonts + + + + + false + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/80-delicious.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/80-delicious.conf new file mode 100644 index 0000000..d20990c --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/80-delicious.conf @@ -0,0 +1,19 @@ + + + + + + + + + Delicious + + + Heavy + + + heavy + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/90-synthetic.conf b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/90-synthetic.conf new file mode 100644 index 0000000..dfce674 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/fontconfig/conf.avail/90-synthetic.conf @@ -0,0 +1,64 @@ + + + + + + + + + roman + + + + roman + + + + + matrix + 10.2 + 01 + + + + + + oblique + + + + false + + + + + + + + + medium + + + + bold + + + + true + + + + bold + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/fontconfig.its b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/fontconfig.its new file mode 100644 index 0000000..fe36155 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/fontconfig.its @@ -0,0 +1,25 @@ + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/fontconfig.loc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/fontconfig.loc new file mode 100644 index 0000000..1388902 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/fontconfig.loc @@ -0,0 +1,27 @@ + + + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/gschema.its b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/gschema.its new file mode 100644 index 0000000..344c54b --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/gschema.its @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/gschema.loc b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/gschema.loc new file mode 100644 index 0000000..8945230 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/gettext/its/gschema.loc @@ -0,0 +1,10 @@ + + + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/mime/packages/avif.xml b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/mime/packages/avif.xml new file mode 100644 index 0000000..5b576fe --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/mime/packages/avif.xml @@ -0,0 +1,8 @@ + + + + AVIF image + AVIF-Bild + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/mime/packages/heif.xml b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/mime/packages/heif.xml new file mode 100644 index 0000000..d82ee83 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/share/mime/packages/heif.xml @@ -0,0 +1,10 @@ + + + + HEIF image + HEIF-Bild + + + + + diff --git a/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/versions.json b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/versions.json new file mode 100644 index 0000000..97220d2 --- /dev/null +++ b/third_party/vips-dev-w64-web-8.13.3/vips-dev-8.13/versions.json @@ -0,0 +1,31 @@ +{ + "aom": "3.5.0", + "cairo": "1.17.6", + "cgif": "0.3.0", + "exif": "0.6.24", + "expat": "2.5.0", + "ffi": "3.4.4", + "fontconfig": "2.14.1", + "freetype": "2.12.1", + "fribidi": "1.0.12", + "gdkpixbuf": "2.42.10", + "glib": "2.74.1", + "gsf": "1.14.50", + "harfbuzz": "5.3.1", + "heif": "1.13.0", + "imagequant": "2.4.1", + "lcms": "2.13.1", + "mozjpeg": "4.1.1", + "orc": "0.4.33", + "pango": "1.50.11", + "pixman": "0.42.0", + "png": "1.6.38", + "proxy-libintl": "0.4", + "svg": "2.55.1", + "spng": "0.7.2", + "tiff": "4.4.0", + "vips": "8.13.3", + "webp": "1.2.4", + "xml": "2.10.3", + "zlib-ng": "2.0.6" +} \ No newline at end of file diff --git a/web_app/run.bat b/web_app/run.bat new file mode 100644 index 0000000..3f39678 --- /dev/null +++ b/web_app/run.bat @@ -0,0 +1,3 @@ +set FLASK_ENV=development +set FLASK_APP=web_app/web_app/app.py +flask run \ No newline at end of file diff --git a/web_app/run.sh b/web_app/run.sh new file mode 100644 index 0000000..7a92bb8 --- /dev/null +++ b/web_app/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash +export FLASK_ENV=development +export FLASK_APP=web_app/web_app/app.py +flask run diff --git a/web_app/web_app/__init__.py b/web_app/web_app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/web_app/web_app/app.py b/web_app/web_app/app.py new file mode 100644 index 0000000..5af6d3a --- /dev/null +++ b/web_app/web_app/app.py @@ -0,0 +1,5 @@ +from click_web import create_click_web_app + +from web_app import commands + +app = create_click_web_app(commands, commands.cli) diff --git a/web_app/web_app/commands.py b/web_app/web_app/commands.py new file mode 100644 index 0000000..c47857b --- /dev/null +++ b/web_app/web_app/commands.py @@ -0,0 +1,20 @@ +import click + +from bimana.histological_section.commands import histological_section_analysis +from bimana.tight_junctions.commands import tight_junction_analysis +from bimana.live_cell_imaging.commands import metrics_file_processing + + +@click.group() +def cli() -> None: + """A collection of software tools for performing automated bio-image + analysis tasks through the web. + """ + + +cli.add_command(histological_section_analysis) +cli.add_command(tight_junction_analysis) +cli.add_command(metrics_file_processing) + +if __name__ == '__main__': + cli()