62158b4f91f31273cdc4367ffa94da8bcdddc125
[openjpeg.git] / src / bin / wx / OPJViewer / source / imagmxf.h
1 /*
2  * Copyright (c) 2007, Digital Signal Processing Laboratory, Universita 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:        imagmxf.h
28 // Purpose:     wxImage MXF (Material eXchange Format) JPEG 2000 file format handler
29 // Author:      G. Baruffa - based on imagjpeg.h, Vaclav Slavik
30 // RCS-ID:      $Id: imagmj2.h,v 0.0 2007/11/19 17:00:00 VZ Exp $
31 // Copyright:   (c) Giuseppe Baruffa
32 // Licence:     wxWindows licence
33 /////////////////////////////////////////////////////////////////////////////
34
35 #ifndef _WX_IMAGMXF_H_
36 #define _WX_IMAGMXF_H_
37
38 #ifdef USE_MXF
39
40 #include "wx/defs.h"
41 #include "wx/filename.h"
42
43 //-----------------------------------------------------------------------------
44 // wxMXFHandler
45 //-----------------------------------------------------------------------------
46
47 #if wxUSE_LIBOPENJPEG
48
49 #include "wx/image.h"
50 #include "libopenjpeg/openjpeg.h"
51
52 #define wxBITMAP_TYPE_MXF       51
53
54 class WXDLLEXPORT wxMXFHandler: public wxImageHandler
55 {
56 public:
57     inline wxMXFHandler()
58     {
59         m_name = wxT("MXF JPEG 2000 file format");
60         m_extension = wxT("mxf");
61         m_type = wxBITMAP_TYPE_MXF;
62         m_mime = wxT("image/mxf");
63
64                 m_reducefactor = 0;
65                 m_qualitylayers = 0;
66                 m_components = 0;
67                 m_filename = wxT("");
68 #ifdef USE_JPWL
69                 m_enablejpwl = true;
70                 m_expcomps = JPWL_EXPECTED_COMPONENTS;
71                 m_maxtiles = JPWL_MAXIMUM_TILES;
72 #endif // USE_JPWL
73     }
74
75                 // decoding engine parameters
76                 int m_reducefactor, m_qualitylayers, m_components, m_framenum;
77                 wxFileName m_filename;
78 #ifdef USE_JPWL
79                 bool m_enablejpwl;
80                 int m_expcomps, m_maxtiles;
81 #endif // USE_JPWL
82
83 #if wxUSE_STREAMS
84     virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=true, int index=-1 );
85     virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=true );
86 protected:
87     virtual bool DoCanRead( wxInputStream& stream );
88 #endif
89
90 private:
91     DECLARE_DYNAMIC_CLASS(wxMXFHandler)
92 };
93
94 #endif // wxUSE_LIBOPENJPEG
95
96 #endif // USE_MXF
97
98 #endif // _WX_IMAGMXF_H_
99