"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSImageLib/Src/Jpeg/LSIPi.h

00001 /*
00002  * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
00003  * Copyright (c) 2002-2007, Professor Benoit Macq
00004  * Copyright (c) 2001-2003, David Janssens
00005  * Copyright (c) 2002-2003, Yannick Verschueren
00006  * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
00007  * Copyright (c) 2005, Herve Drolon, FreeImage Team
00008  * All rights reserved.
00009  *
00010  * Redistribution and use in source and binary forms, with or without
00011  * modification, are permitted provided that the following conditions
00012  * are met:
00013  * 1. Redistributions of source code must retain the above copyright
00014  *    notice, this list of conditions and the following disclaimer.
00015  * 2. Redistributions in binary form must reproduce the above copyright
00016  *    notice, this list of conditions and the following disclaimer in the
00017  *    documentation and/or other materials provided with the distribution.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
00020  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00021  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00022  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00023  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00024  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00025  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00026  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00027  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00028  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00029  * POSSIBILITY OF SUCH DAMAGE.
00030  */
00031 
00032 
00033 #ifndef __LSI_PI_H__
00034 #define __LSI_PI_H__
00035 
00036 #include "../LSIImageLib.h"
00037 #include "LSIJ2k.h"
00038 #include "LSIJpegCommonStructs.h"
00039 #include "LSIJpegImage.h"
00040 
00041 namespace lsi {
00042 
00049         class CPi {
00050         public :
00051                 // == Types.
00055                 typedef struct opj_pi_resolution {
00056                   LSINT32                                                               pdx, pdy;
00057                   LSINT32                                                               pw, ph;
00058                 } opj_pi_resolution_t;
00059 
00063                 typedef struct opj_pi_comp {
00064                   LSINT32                                                               dx, dy;
00066                   LSINT32                                                               numresolutions;
00067                   opj_pi_resolution_t *                                 resolutions;
00068                 } opj_pi_comp_t;
00069 
00073                 typedef struct opj_pi_iterator {
00075                         LSCHAR                                                          tp_on;
00077                         LSINT16 *                                                       include;
00079                         LSINT32                                                         step_l;
00081                         LSINT32                                                         step_r;
00083                         LSINT32                                                         step_c;
00085                         LSINT32                                                         step_p;
00087                         LSINT32                                                         compno;
00089                         LSINT32                                                         resno;
00091                         LSINT32                                                         precno;
00093                         LSINT32                                                         layno;
00095                         LSINT32                                                         first;
00097                         CJpegCommonStructs::opj_poc_t           poc;
00099                         LSINT32                                                         numcomps;
00101                         opj_pi_comp_t *                                         comps;
00102                         LSINT32                                                         tx0, ty0, tx1, ty1;
00103                         LSINT32                                                         x, y, dx, dy;
00104                 } opj_pi_iterator_t;
00105 
00106 
00107                 // == Functions.
00118                 static opj_pi_iterator_t * LSE_CALL             pi_initialise_encode( CJpegImage::opj_image_t * _pImage, CJ2k::opj_cp_t * _pcCp, LSINT32 _i32TileNo, CJ2k::J2K_T2_MODE _t2Mode );
00119 
00133                 static LSBOOL LSE_CALL                                  pi_create_encode( opj_pi_iterator_t * _ppiPi, CJ2k::opj_cp_t * _pcCp, LSINT32 _i32TileNo, LSINT32 _i32PiNo, LSINT32 _i32TpNum, LSINT32 _i32TpPos, CJ2k::J2K_T2_MODE _t2Mode, LSINT32 _i32CurTotTp );
00134 
00144                 static opj_pi_iterator_t * LSE_CALL             pi_create_decode( CJpegImage::opj_image_t * _piImage, CJ2k::opj_cp_t * _pcCp, LSINT32 _i32TileNo );
00145 
00154                 static LSVOID LSE_CALL                                  pi_destroy( opj_pi_iterator_t * _ppiPi, CJ2k::opj_cp_t * _pcCp, LSINT32 _i32TileNo );
00155 
00162                 static LSBOOL LSE_CALL                                  pi_next( opj_pi_iterator_t * _ppiPi );
00163 
00164 
00165         protected :
00166                 // == Functions.
00173                 static LSBOOL LSE_CALL                                  pi_next_lrcp( opj_pi_iterator_t * _ppiPi );
00174 
00181                 static LSBOOL LSE_CALL                                  pi_next_rlcp( opj_pi_iterator_t * _ppiPi );
00182 
00189                 static LSBOOL LSE_CALL                                  pi_next_rpcl( opj_pi_iterator_t * _ppiPi );
00190 
00197                 static LSBOOL LSE_CALL                                  pi_next_pcrl( opj_pi_iterator_t * _ppiPi );
00198 
00205                 static LSBOOL LSE_CALL                                  pi_next_cprl( opj_pi_iterator_t * _ppiPi );
00206 
00207         };
00208 
00209 }       // namespace lsi
00210 
00211 #endif  // __LSI_PI_H__
00212 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator