1 /* 2 * Copyright (c) 2007, Digital Signal Processing Laboratory, Universit� degli studi di Perugia (UPG), Italy 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 15 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * POSSIBILITY OF SUCH DAMAGE. 25 */ 26 ///////////////////////////////////////////////////////////////////////////// 27 // Name: imagalljpeg2000.h 28 // Purpose: wxImage JPEG 2000 family file format handler 29 // Author: G. Baruffa - based on imagjpeg.h, Vaclav Slavik 30 // RCS-ID: $Id: imagalljpeg2000.h,v 0.0 2008/01/31 11:22:00 VZ Exp $ 31 // Copyright: (c) Giuseppe Baruffa 32 // Licence: wxWindows licence 33 ///////////////////////////////////////////////////////////////////////////// 34 35 #ifndef _WX_IMAGJPEG2000_H_ 36 #define _WX_IMAGJPEG2000_H_ 37 38 #include "wx/defs.h" 39 40 //----------------------------------------------------------------------------- 41 // wxJPEG2000Handler 42 //----------------------------------------------------------------------------- 43 44 #if wxUSE_LIBOPENJPEG 45 46 #include "wx/image.h" 47 #include "libopenjpeg/openjpeg.h" 48 #include "codec/index.h" 49 50 #define wxBITMAP_TYPE_JPEG2000 50 51 52 class WXDLLEXPORT wxJPEG2000Handler: public wxImageHandler 53 { 54 public: wxJPEG2000Handler()55 inline wxJPEG2000Handler() 56 { 57 m_name = wxT("JPEG 2000 family file format"); 58 m_extension = wxT("mj2"); 59 m_type = wxBITMAP_TYPE_JPEG2000; 60 m_mime = wxT("image/mj2"); 61 62 /* decoding */ 63 m_reducefactor = 0; 64 m_qualitylayers = 0; 65 m_components = 0; 66 #ifdef USE_JPWL 67 m_enablejpwl = true; 68 m_expcomps = JPWL_EXPECTED_COMPONENTS; 69 m_maxtiles = JPWL_MAXIMUM_TILES; 70 #endif // USE_JPWL 71 72 /* encoding */ 73 m_subsampling = wxT("1,1"); 74 m_origin = wxT("0,0"); 75 m_rates = wxT("20,10,5"); 76 m_quality = wxT("30,35,40"); 77 m_enablequality = false; 78 m_multicomp = false; 79 m_irreversible = false; 80 m_resolutions = 6; 81 m_progression = 0; 82 m_cbsize = wxT("32,32"); 83 m_prsize = wxT("[128,128],[128,128]"); 84 m_tsize = wxT(""); 85 m_torigin = wxT("0,0"); 86 /*m_progression 87 m_resilience*/ 88 m_enablesop = false; 89 m_enableeph = false; 90 m_enablereset = false; 91 m_enablesegmark = false; 92 m_enablevsc = false; 93 m_enablerestart = false; 94 m_enableerterm = false; 95 m_enablebypass = false; 96 /*m_roicompo 97 m_roiup 98 m_indexfname*/ 99 m_enableidx = false; 100 m_index = wxT("index.txt"); 101 m_enablepoc = false; 102 m_poc = wxT("T1=0,0,1,5,3,CPRL/T1=5,0,1,6,3,CPRL"); 103 m_enablecomm = true; 104 105 #if defined __WXMSW__ 106 m_comment = wxT("Created by OPJViewer Win32 - OpenJPEG version "); 107 #elif defined __WXGTK__ 108 m_comment = wxT("Created by OPJViewer Lin32 - OpenJPEG version "); 109 #else 110 m_comment = wxT("Created by OPJViewer - OpenJPEG version "); 111 #endif 112 113 #ifdef USE_JPWL 114 m_comment += wxString::Format(wxT("%s with JPWL"), (char *) opj_version()); 115 #else 116 m_comment += wxString::Format(wxT("%s"), (char *) opj_version()); 117 #endif 118 119 } 120 121 // decoding engine parameters 122 int m_reducefactor, m_qualitylayers, m_components, m_framenum; 123 #ifdef USE_JPWL 124 bool m_enablejpwl; 125 int m_expcomps, m_maxtiles; 126 #endif // USE_JPWL 127 128 // encoding engine parameters 129 wxString m_subsampling; 130 wxString m_origin; 131 wxString m_rates; 132 wxString m_quality; 133 bool m_enablequality; 134 bool m_multicomp; 135 bool m_irreversible; 136 int m_resolutions; 137 int m_progression; 138 wxString m_cbsize; 139 wxString m_prsize; 140 wxString m_tsize; 141 wxString m_torigin; 142 /*m_progression 143 m_resilience*/ 144 bool m_enablesop; 145 bool m_enableeph; 146 bool m_enablebypass; 147 bool m_enableerterm; 148 bool m_enablerestart; 149 bool m_enablereset; 150 bool m_enablesegmark; 151 bool m_enablevsc; 152 /*m_roicompo 153 m_roiup 154 m_indexfname*/ 155 bool m_enableidx; 156 wxString m_index; 157 bool m_enablecomm; 158 wxString m_comment; 159 bool m_enablepoc; 160 wxString m_poc; 161 162 #if wxUSE_STREAMS 163 virtual bool LoadFile(wxImage *image, wxInputStream& stream, bool verbose=true, int index=-1); 164 virtual bool SaveFile(wxImage *image, wxOutputStream& stream, bool verbose=true); 165 protected: 166 virtual bool DoCanRead(wxInputStream& stream); 167 #endif 168 169 private: 170 OPJ_PROG_ORDER give_progression(char progression[4]); 171 DECLARE_DYNAMIC_CLASS(wxJPEG2000Handler) 172 }; 173 174 #endif // wxUSE_LIBOPENJPEG 175 176 #endif // _WX_IMAGJPEG2000_H_ 177 178