Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  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:
  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.