Blame src/bin/wx/OPJViewer/source/imagjpeg2000.h

Packit caffb5
/*
Packit caffb5
 * The copyright in this software is being made available under the 2-clauses
Packit caffb5
 * BSD License, included below. This software may be subject to other third
Packit caffb5
 * party and contributor rights, including patent rights, and no such rights
Packit caffb5
 * are granted under this license.
Packit caffb5
 *
Packit caffb5
 * Copyright (c) 2007, Digital Signal Processing Laboratory, Universita degli studi di Perugia (UPG), Italy
Packit caffb5
 * All rights reserved.
Packit caffb5
 *
Packit caffb5
 * Redistribution and use in source and binary forms, with or without
Packit caffb5
 * modification, are permitted provided that the following conditions
Packit caffb5
 * are met:
Packit caffb5
 * 1. Redistributions of source code must retain the above copyright
Packit caffb5
 *    notice, this list of conditions and the following disclaimer.
Packit caffb5
 * 2. Redistributions in binary form must reproduce the above copyright
Packit caffb5
 *    notice, this list of conditions and the following disclaimer in the
Packit caffb5
 *    documentation and/or other materials provided with the distribution.
Packit caffb5
 *
Packit caffb5
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
Packit caffb5
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Packit caffb5
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
Packit caffb5
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
Packit caffb5
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
Packit caffb5
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
Packit caffb5
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
Packit caffb5
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
Packit caffb5
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
Packit caffb5
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
Packit caffb5
 * POSSIBILITY OF SUCH DAMAGE.
Packit caffb5
 */
Packit caffb5
/////////////////////////////////////////////////////////////////////////////
Packit caffb5
// Name:        imagalljpeg2000.h
Packit caffb5
// Purpose:     wxImage JPEG 2000 family file format handler
Packit caffb5
// Author:      G. Baruffa - based on imagjpeg.h, Vaclav Slavik
Packit caffb5
// RCS-ID:      $Id: imagalljpeg2000.h,v 0.0 2008/01/31 11:22:00 VZ Exp $
Packit caffb5
// Copyright:   (c) Giuseppe Baruffa
Packit caffb5
// Licence:     wxWindows licence
Packit caffb5
/////////////////////////////////////////////////////////////////////////////
Packit caffb5
Packit caffb5
#ifndef _WX_IMAGJPEG2000_H_
Packit caffb5
#define _WX_IMAGJPEG2000_H_
Packit caffb5
Packit caffb5
#include "wx/defs.h"
Packit caffb5
Packit caffb5
//-----------------------------------------------------------------------------
Packit caffb5
// wxJPEG2000Handler
Packit caffb5
//-----------------------------------------------------------------------------
Packit caffb5
Packit caffb5
#if wxUSE_LIBOPENJPEG
Packit caffb5
Packit caffb5
#include "wx/image.h"
Packit caffb5
#include "openjp2/openjpeg.h"
Packit caffb5
#include "jp2/index.h"
Packit caffb5
Packit caffb5
#define wxBITMAP_TYPE_JPEG2000  50
Packit caffb5
Packit caffb5
class WXDLLEXPORT wxJPEG2000Handler: public wxImageHandler
Packit caffb5
{
Packit caffb5
public:
Packit caffb5
    inline wxJPEG2000Handler()
Packit caffb5
    {
Packit caffb5
        m_name = wxT("JPEG 2000 family file format");
Packit caffb5
        m_extension = wxT("mj2");
Packit caffb5
        m_type = wxBITMAP_TYPE_JPEG2000;
Packit caffb5
        m_mime = wxT("image/mj2");
Packit caffb5
Packit caffb5
        /* decoding */
Packit caffb5
        m_reducefactor = 0;
Packit caffb5
        m_qualitylayers = 0;
Packit caffb5
        m_components = 0;
Packit caffb5
#ifdef USE_JPWL
Packit caffb5
        m_enablejpwl = true;
Packit caffb5
        m_expcomps = JPWL_EXPECTED_COMPONENTS;
Packit caffb5
        m_maxtiles = JPWL_MAXIMUM_TILES;
Packit caffb5
#endif // USE_JPWL
Packit caffb5
Packit caffb5
        /* encoding */
Packit caffb5
        m_subsampling = wxT("1,1");
Packit caffb5
        m_origin = wxT("0,0");
Packit caffb5
        m_rates = wxT("20,10,5");
Packit caffb5
        m_quality = wxT("30,35,40");
Packit caffb5
        m_enablequality = false;
Packit caffb5
        m_multicomp = false;
Packit caffb5
        m_irreversible = false;
Packit caffb5
        m_resolutions = 6;
Packit caffb5
        m_progression = 0;
Packit caffb5
        m_cbsize = wxT("32,32");
Packit caffb5
        m_prsize = wxT("[128,128],[128,128]");
Packit caffb5
        m_tsize = wxT("");
Packit caffb5
        m_torigin = wxT("0,0");
Packit caffb5
        /*m_progression
Packit caffb5
        m_resilience*/
Packit caffb5
        m_enablesop = false;
Packit caffb5
        m_enableeph = false;
Packit caffb5
        m_enablereset = false;
Packit caffb5
        m_enablesegmark = false;
Packit caffb5
        m_enablevsc = false;
Packit caffb5
        m_enablerestart = false;
Packit caffb5
        m_enableerterm = false;
Packit caffb5
        m_enablebypass = false;
Packit caffb5
        /*m_roicompo
Packit caffb5
        m_roiup
Packit caffb5
        m_indexfname*/
Packit caffb5
        m_enableidx = false;
Packit caffb5
        m_index = wxT("index.txt");
Packit caffb5
        m_enablepoc = false;
Packit caffb5
        m_poc = wxT("T1=0,0,1,5,3,CPRL/T1=5,0,1,6,3,CPRL");
Packit caffb5
        m_enablecomm = true;
Packit caffb5
Packit caffb5
#if defined __WXMSW__
Packit caffb5
        m_comment = wxT("Created by OPJViewer Win32 - OpenJPEG  version ");
Packit caffb5
#elif defined __WXGTK__
Packit caffb5
        m_comment = wxT("Created by OPJViewer Lin32 - OpenJPEG version ");
Packit caffb5
#else
Packit caffb5
        m_comment = wxT("Created by OPJViewer - OpenJPEG version ");
Packit caffb5
#endif
Packit caffb5
Packit caffb5
#ifdef USE_JPWL
Packit caffb5
        m_comment += wxString::Format(wxT("%s with JPWL"), (char *) opj_version());
Packit caffb5
#else
Packit caffb5
        m_comment += wxString::Format(wxT("%s"), (char *) opj_version());
Packit caffb5
#endif
Packit caffb5
Packit caffb5
    }
Packit caffb5
Packit caffb5
    // decoding engine parameters
Packit caffb5
    int m_reducefactor, m_qualitylayers, m_components, m_framenum;
Packit caffb5
#ifdef USE_JPWL
Packit caffb5
    bool m_enablejpwl;
Packit caffb5
    int m_expcomps, m_maxtiles;
Packit caffb5
#endif // USE_JPWL
Packit caffb5
Packit caffb5
    // encoding engine parameters
Packit caffb5
    wxString m_subsampling;
Packit caffb5
    wxString m_origin;
Packit caffb5
    wxString m_rates;
Packit caffb5
    wxString m_quality;
Packit caffb5
    bool m_enablequality;
Packit caffb5
    bool m_multicomp;
Packit caffb5
    bool m_irreversible;
Packit caffb5
    int m_resolutions;
Packit caffb5
    int m_progression;
Packit caffb5
    wxString m_cbsize;
Packit caffb5
    wxString m_prsize;
Packit caffb5
    wxString m_tsize;
Packit caffb5
    wxString m_torigin;
Packit caffb5
    /*m_progression
Packit caffb5
    m_resilience*/
Packit caffb5
    bool m_enablesop;
Packit caffb5
    bool m_enableeph;
Packit caffb5
    bool m_enablebypass;
Packit caffb5
    bool m_enableerterm;
Packit caffb5
    bool m_enablerestart;
Packit caffb5
    bool m_enablereset;
Packit caffb5
    bool m_enablesegmark;
Packit caffb5
    bool m_enablevsc;
Packit caffb5
    /*m_roicompo
Packit caffb5
    m_roiup
Packit caffb5
    m_indexfname*/
Packit caffb5
    bool m_enableidx;
Packit caffb5
    wxString m_index;
Packit caffb5
    bool m_enablecomm;
Packit caffb5
    wxString m_comment;
Packit caffb5
    bool m_enablepoc;
Packit caffb5
    wxString m_poc;
Packit caffb5
Packit caffb5
#if wxUSE_STREAMS
Packit caffb5
    virtual bool LoadFile(wxImage *image, wxInputStream& stream,
Packit caffb5
                          bool verbose = true, int index = -1);
Packit caffb5
    virtual bool SaveFile(wxImage *image, wxOutputStream& stream,
Packit caffb5
                          bool verbose = true);
Packit caffb5
protected:
Packit caffb5
    virtual bool DoCanRead(wxInputStream& stream);
Packit caffb5
#endif
Packit caffb5
Packit caffb5
private:
Packit caffb5
    OPJ_PROG_ORDER give_progression(char progression[4]);
Packit caffb5
    DECLARE_DYNAMIC_CLASS(wxJPEG2000Handler)
Packit caffb5
};
Packit caffb5
Packit caffb5
#endif // wxUSE_LIBOPENJPEG
Packit caffb5
Packit caffb5
#endif // _WX_IMAGJPEG2000_H_
Packit caffb5