"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSImageLib/Src/Jpeg/LSICio.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 #ifndef __LSI_CIO_H__
00033 #define __LSI_CIO_H__
00034 
00035 #include "../LSIImageLib.h"
00036 #include "LSIJpegCommonStructs.h"
00037 
00038 namespace lsi {
00039 
00046         class CCio {
00047         public :
00048                 // == Types.
00052                 typedef struct opj_cio {
00054                         CJpegCommonStructs::opj_common_ptr                                              cinfo;
00055 
00057                         LSINT32                                                                                                 openmode;
00059                         LSUINT8 *                                                                                               buffer;
00061                         LSINT32                                                                                                 length;
00062 
00064                         LSUINT8 *                                                                                               start;
00066                         LSUINT8 *                                                                                               end;
00068                         LSUINT8 *                                                                                               bp;
00069                 } opj_cio_t;
00070 
00071                 // == Functions.
00084                 static opj_cio_t * LSE_CALL                                                                     opj_cio_open( CJpegCommonStructs::opj_common_ptr _cpInfoC, LSUINT8 * _pui8Buffer, LSINT32 _i32Length );
00085 
00091                 static LSVOID LSE_CALL                                                                          opj_cio_close( opj_cio_t * _pcCio );
00092 
00099                 static LSINT32 LSE_CALL                                                                         cio_tell( opj_cio_t * _pcCio );
00100 
00107                 static LSVOID LSE_CALL                                                                          cio_seek( opj_cio_t * _pcCio, LSINT32 _i32Pos );
00108                 
00115                 static LSINT32 LSE_CALL                                                                         cio_numbytesleft( opj_cio_t * _pcCio );
00116                 
00123                 static LSUINT8 * LSE_CALL                                                                       cio_getbp( opj_cio_t * _pcCio );
00124                 
00133                 static LSUINT32 LSE_CALL                                                                        cio_write( opj_cio_t * _pcCio, LSUINT32 _i32V, LSUINT32 _ui32N );
00134                 
00143                 static LSUINT32 LSE_CALL                                                                        cio_write( opj_cio_t * _pcCio, LSINT32 _i32V, LSUINT32 _ui32N );
00144                 
00152                 static LSUINT32 LSE_CALL                                                                        cio_read( opj_cio_t * _pcCio, LSUINT32 _ui32N );
00153                 
00160                 static LSVOID LSE_CALL                                                                          cio_skip( opj_cio_t * _pcCio, LSINT32 _i32N );
00161 
00162 
00163         protected :
00164                 /*
00165                  * Write a byte.
00166                  *
00167                  * \param _pcCio CIO handle.
00168                  * \param _ui8V Value to write.
00169                  */
00170                 static LSBOOL LSE_CALL                                                                          cio_byteout( opj_cio_t * _pcCio, LSUINT8 _ui8V );
00171 
00172                 /*
00173                  * Read a byte.
00174                  *
00175                  * \param _pcCio CIO handle.
00176                  */
00177                 static LSUINT8 LSE_CALL                                                                         cio_bytein( opj_cio_t * _pcCio );
00178         };
00179 
00180 }       // namespace lsi
00181 
00182 #endif  // __LSI_CIO_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator