1/*M///////////////////////////////////////////////////////////////////////////////////////
2//
3//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4//
5//  By downloading, copying, installing or using the software you agree to this license.
6//  If you do not agree to this license, do not download, install,
7//  copy or use the software.
8//
9//
10//                        Intel License Agreement
11//                For Open Source Computer Vision Library
12//
13// Copyright (C) 2000, Intel Corporation, all rights reserved.
14// Third party copyrights are property of their respective owners.
15//
16// Redistribution and use in source and binary forms, with or without modification,
17// are permitted provided that the following conditions are met:
18//
19//   * Redistribution's of source code must retain the above copyright notice,
20//     this list of conditions and the following disclaimer.
21//
22//   * Redistribution's in binary form must reproduce the above copyright notice,
23//     this list of conditions and the following disclaimer in the documentation
24//     and/or other materials provided with the distribution.
25//
26//   * The name of Intel Corporation may not be used to endorse or promote products
27//     derived from this software without specific prior written permission.
28//
29// This software is provided by the copyright holders and contributors "as is" and
30// any express or implied warranties, including, but not limited to, the implied
31// warranties of merchantability and fitness for a particular purpose are disclaimed.
32// In no event shall the Intel Corporation or contributors be liable for any direct,
33// indirect, incidental, special, exemplary, or consequential damages
34// (including, but not limited to, procurement of substitute goods or services;
35// loss of use, data, or profits; or business interruption) however caused
36// and on any theory of liability, whether in contract, strict liability,
37// or tort (including negligence or otherwise) arising in any way out of
38// the use of this software, even if advised of the possibility of such damage.
39//
40//M*/
41
42#include "precomp.hpp"
43
44#include "grfmt_base.hpp"
45#include "bitstrm.hpp"
46
47namespace cv
48{
49
50BaseImageDecoder::BaseImageDecoder()
51{
52    m_width = m_height = 0;
53    m_type = -1;
54    m_buf_supported = false;
55}
56
57bool BaseImageDecoder::setSource( const String& filename )
58{
59    m_filename = filename;
60    m_buf.release();
61    return true;
62}
63
64bool BaseImageDecoder::setSource( const Mat& buf )
65{
66    if( !m_buf_supported )
67        return false;
68    m_filename = String();
69    m_buf = buf;
70    return true;
71}
72
73size_t BaseImageDecoder::signatureLength() const
74{
75    return m_signature.size();
76}
77
78bool BaseImageDecoder::checkSignature( const String& signature ) const
79{
80    size_t len = signatureLength();
81    return signature.size() >= len && memcmp( signature.c_str(), m_signature.c_str(), len ) == 0;
82}
83
84ImageDecoder BaseImageDecoder::newDecoder() const
85{
86    return ImageDecoder();
87}
88
89BaseImageEncoder::BaseImageEncoder()
90{
91    m_buf_supported = false;
92}
93
94bool  BaseImageEncoder::isFormatSupported( int depth ) const
95{
96    return depth == CV_8U;
97}
98
99String BaseImageEncoder::getDescription() const
100{
101    return m_description;
102}
103
104bool BaseImageEncoder::setDestination( const String& filename )
105{
106    m_filename = filename;
107    m_buf = 0;
108    return true;
109}
110
111bool BaseImageEncoder::setDestination( std::vector<uchar>& buf )
112{
113    if( !m_buf_supported )
114        return false;
115    m_buf = &buf;
116    m_buf->clear();
117    m_filename = String();
118    return true;
119}
120
121ImageEncoder BaseImageEncoder::newEncoder() const
122{
123    return ImageEncoder();
124}
125
126void BaseImageEncoder::throwOnEror() const
127{
128    if(!m_last_error.empty())
129    {
130        String msg = "Raw image encoder error: " + m_last_error;
131        CV_Error( CV_BadImageSize, msg.c_str() );
132    }
133}
134
135}
136
137/* End of file. */
138