Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/openjpeg/src/lib/openjp2/pi.h @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 /* | |
| 2 * The copyright in this software is being made available under the 2-clauses | |
| 3 * BSD License, included below. This software may be subject to other third | |
| 4 * party and contributor rights, including patent rights, and no such rights | |
| 5 * are granted under this license. | |
| 6 * | |
| 7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium | |
| 8 * Copyright (c) 2002-2014, Professor Benoit Macq | |
| 9 * Copyright (c) 2001-2003, David Janssens | |
| 10 * Copyright (c) 2002-2003, Yannick Verschueren | |
| 11 * Copyright (c) 2003-2007, Francois-Olivier Devaux | |
| 12 * Copyright (c) 2003-2014, Antonin Descampe | |
| 13 * Copyright (c) 2005, Herve Drolon, FreeImage Team | |
| 14 * All rights reserved. | |
| 15 * | |
| 16 * Redistribution and use in source and binary forms, with or without | |
| 17 * modification, are permitted provided that the following conditions | |
| 18 * are met: | |
| 19 * 1. Redistributions of source code must retain the above copyright | |
| 20 * notice, this list of conditions and the following disclaimer. | |
| 21 * 2. Redistributions in binary form must reproduce the above copyright | |
| 22 * notice, this list of conditions and the following disclaimer in the | |
| 23 * documentation and/or other materials provided with the distribution. | |
| 24 * | |
| 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' | |
| 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 28 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |
| 29 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
| 30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
| 31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
| 32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
| 33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| 35 * POSSIBILITY OF SUCH DAMAGE. | |
| 36 */ | |
| 37 | |
| 38 #ifndef OPJ_PI_H | |
| 39 #define OPJ_PI_H | |
| 40 /** | |
| 41 @file pi.h | |
| 42 @brief Implementation of a packet iterator (PI) | |
| 43 | |
| 44 The functions in PI.C have for goal to realize a packet iterator that permits to get the next | |
| 45 packet following the progression order and change of it. The functions in PI.C are used | |
| 46 by some function in T2.C. | |
| 47 */ | |
| 48 | |
| 49 /** @defgroup PI PI - Implementation of a packet iterator */ | |
| 50 /*@{*/ | |
| 51 | |
| 52 /** | |
| 53 FIXME DOC | |
| 54 */ | |
| 55 typedef struct opj_pi_resolution { | |
| 56 OPJ_UINT32 pdx, pdy; | |
| 57 OPJ_UINT32 pw, ph; | |
| 58 } opj_pi_resolution_t; | |
| 59 | |
| 60 /** | |
| 61 FIXME DOC | |
| 62 */ | |
| 63 typedef struct opj_pi_comp { | |
| 64 OPJ_UINT32 dx, dy; | |
| 65 /** number of resolution levels */ | |
| 66 OPJ_UINT32 numresolutions; | |
| 67 opj_pi_resolution_t *resolutions; | |
| 68 } opj_pi_comp_t; | |
| 69 | |
| 70 /** | |
| 71 Packet iterator | |
| 72 */ | |
| 73 typedef struct opj_pi_iterator { | |
| 74 /** Enabling Tile part generation*/ | |
| 75 OPJ_BYTE tp_on; | |
| 76 /** precise if the packet has been already used (useful for progression order change) */ | |
| 77 OPJ_INT16 *include; | |
| 78 /** Number of elements in include array */ | |
| 79 OPJ_UINT32 include_size; | |
| 80 /** layer step used to localize the packet in the include vector */ | |
| 81 OPJ_UINT32 step_l; | |
| 82 /** resolution step used to localize the packet in the include vector */ | |
| 83 OPJ_UINT32 step_r; | |
| 84 /** component step used to localize the packet in the include vector */ | |
| 85 OPJ_UINT32 step_c; | |
| 86 /** precinct step used to localize the packet in the include vector */ | |
| 87 OPJ_UINT32 step_p; | |
| 88 /** component that identify the packet */ | |
| 89 OPJ_UINT32 compno; | |
| 90 /** resolution that identify the packet */ | |
| 91 OPJ_UINT32 resno; | |
| 92 /** precinct that identify the packet */ | |
| 93 OPJ_UINT32 precno; | |
| 94 /** layer that identify the packet */ | |
| 95 OPJ_UINT32 layno; | |
| 96 /** 0 if the first packet */ | |
| 97 OPJ_BOOL first; | |
| 98 /** progression order change information */ | |
| 99 opj_poc_t poc; | |
| 100 /** number of components in the image */ | |
| 101 OPJ_UINT32 numcomps; | |
| 102 /** Components*/ | |
| 103 opj_pi_comp_t *comps; | |
| 104 /** FIXME DOC*/ | |
| 105 OPJ_UINT32 tx0, ty0, tx1, ty1; | |
| 106 /** FIXME DOC*/ | |
| 107 OPJ_UINT32 x, y; | |
| 108 /** FIXME DOC*/ | |
| 109 OPJ_UINT32 dx, dy; | |
| 110 /** event manager */ | |
| 111 opj_event_mgr_t* manager; | |
| 112 } opj_pi_iterator_t; | |
| 113 | |
| 114 /** @name Exported functions */ | |
| 115 /*@{*/ | |
| 116 /* ----------------------------------------------------------------------- */ | |
| 117 /** | |
| 118 * Creates a packet iterator for encoding. | |
| 119 * | |
| 120 * @param image the image being encoded. | |
| 121 * @param cp the coding parameters. | |
| 122 * @param tileno index of the tile being encoded. | |
| 123 * @param t2_mode the type of pass for generating the packet iterator | |
| 124 * @param manager Event manager | |
| 125 * | |
| 126 * @return a list of packet iterator that points to the first packet of the tile (not true). | |
| 127 */ | |
| 128 opj_pi_iterator_t *opj_pi_initialise_encode(const opj_image_t *image, | |
| 129 opj_cp_t *cp, | |
| 130 OPJ_UINT32 tileno, | |
| 131 J2K_T2_MODE t2_mode, | |
| 132 opj_event_mgr_t* manager); | |
| 133 | |
| 134 /** | |
| 135 * Updates the encoding parameters of the codec. | |
| 136 * | |
| 137 * @param p_image the image being encoded. | |
| 138 * @param p_cp the coding parameters. | |
| 139 * @param p_tile_no index of the tile being encoded. | |
| 140 */ | |
| 141 void opj_pi_update_encoding_parameters(const opj_image_t *p_image, | |
| 142 opj_cp_t *p_cp, | |
| 143 OPJ_UINT32 p_tile_no); | |
| 144 | |
| 145 /** | |
| 146 Modify the packet iterator for enabling tile part generation | |
| 147 @param pi Handle to the packet iterator generated in pi_initialise_encode | |
| 148 @param cp Coding parameters | |
| 149 @param tileno Number that identifies the tile for which to list the packets | |
| 150 @param pino FIXME DOC | |
| 151 @param tpnum Tile part number of the current tile | |
| 152 @param tppos The position of the tile part flag in the progression order | |
| 153 @param t2_mode FIXME DOC | |
| 154 */ | |
| 155 void opj_pi_create_encode(opj_pi_iterator_t *pi, | |
| 156 opj_cp_t *cp, | |
| 157 OPJ_UINT32 tileno, | |
| 158 OPJ_UINT32 pino, | |
| 159 OPJ_UINT32 tpnum, | |
| 160 OPJ_INT32 tppos, | |
| 161 J2K_T2_MODE t2_mode); | |
| 162 | |
| 163 /** | |
| 164 Create a packet iterator for Decoder | |
| 165 @param image Raw image for which the packets will be listed | |
| 166 @param cp Coding parameters | |
| 167 @param tileno Number that identifies the tile for which to list the packets | |
| 168 @param manager Event manager | |
| 169 @return Returns a packet iterator that points to the first packet of the tile | |
| 170 @see opj_pi_destroy | |
| 171 */ | |
| 172 opj_pi_iterator_t *opj_pi_create_decode(opj_image_t * image, | |
| 173 opj_cp_t * cp, | |
| 174 OPJ_UINT32 tileno, | |
| 175 opj_event_mgr_t* manager); | |
| 176 /** | |
| 177 * Destroys a packet iterator array. | |
| 178 * | |
| 179 * @param p_pi the packet iterator array to destroy. | |
| 180 * @param p_nb_elements the number of elements in the array. | |
| 181 */ | |
| 182 void opj_pi_destroy(opj_pi_iterator_t *p_pi, | |
| 183 OPJ_UINT32 p_nb_elements); | |
| 184 | |
| 185 /** | |
| 186 Modify the packet iterator to point to the next packet | |
| 187 @param pi Packet iterator to modify | |
| 188 @return Returns false if pi pointed to the last packet or else returns true | |
| 189 */ | |
| 190 OPJ_BOOL opj_pi_next(opj_pi_iterator_t * pi); | |
| 191 | |
| 192 /** | |
| 193 * Return the number of packets in the tile. | |
| 194 * @param image the image being encoded. | |
| 195 * @param cp Coding parameters | |
| 196 * @param tileno Number that identifies the tile. | |
| 197 */ | |
| 198 OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, | |
| 199 const opj_cp_t *p_cp, | |
| 200 OPJ_UINT32 p_tile_no); | |
| 201 | |
| 202 /* ----------------------------------------------------------------------- */ | |
| 203 /*@}*/ | |
| 204 | |
| 205 /*@}*/ | |
| 206 | |
| 207 #endif /* OPJ_PI_H */ |
