Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef MWAW_PICT_MAC
00039 # define MWAW_PICT_MAC
00040
00041 # include <assert.h>
00042 # include <ostream>
00043 # include <string>
00044
00045 # include <librevenge/librevenge.h>
00046
00047 # include "libmwaw_internal.hxx"
00048 # include "MWAWPictData.hxx"
00049
00051 class MWAWPictMac : public MWAWPictData
00052 {
00053 public:
00054
00056 virtual SubType getSubType() const
00057 {
00058 return MWAWPictData::PictMac;
00059 }
00060
00062 virtual bool getBinary(librevenge::RVNGBinaryData &res, std::string &s) const
00063 {
00064 if (!valid() || isEmpty()) return false;
00065
00066 s = "image/pict";
00067 if (m_version == 1) {
00068 librevenge::RVNGBinaryData dataV2;
00069 if (convertPict1To2(m_data, dataV2)) {
00070 createFileData(dataV2, res);
00071 return true;
00072 }
00073 }
00074 createFileData(m_data, res);
00075 return true;
00076 }
00077
00079 virtual bool valid() const
00080 {
00081 return (m_version >= 1) && (m_version <= 2);
00082 }
00083
00086 virtual int cmp(MWAWPict const &a) const
00087 {
00088 int diff = MWAWPictData::cmp(a);
00089 if (diff) return diff;
00090 MWAWPictMac const &aPict = static_cast<MWAWPictMac const &>(a);
00091
00092 diff = m_version - (int) aPict.m_version;
00093 if (diff) return (diff < 0) ? -1 : 1;
00094 diff = m_subVersion - (int) aPict.m_subVersion;
00095 if (diff) return (diff < 0) ? -1 : 1;
00096
00097 return 0;
00098 }
00099
00101 static bool convertPict1To2(librevenge::RVNGBinaryData const &orig, librevenge::RVNGBinaryData &result);
00102
00106 static void parsePict1(librevenge::RVNGBinaryData const &orig, std::string const &fname);
00107
00111 static void parsePict2(librevenge::RVNGBinaryData const &orig, std::string const &fname);
00112
00113 protected:
00115 MWAWPictMac(MWAWBox2f box) : MWAWPictData(box), m_version(-1), m_subVersion(-1)
00116 {
00117 extendBDBox(1.0);
00118 }
00119
00120 friend class MWAWPictData;
00127 static ReadResult checkOrGet(MWAWInputStreamPtr input, int size,
00128 MWAWBox2f &box, MWAWPictData **result = 0L);
00129
00131 int m_version;
00133 int m_subVersion;
00134 };
00135
00136 #endif
00137