EPUBImageManager.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libepubgen project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef INCLUDED_EPUBIMAGEMANAGER_H
11 #define INCLUDED_EPUBIMAGEMANAGER_H
12 
13 #include <string>
14 #include <unordered_map>
15 #include <unordered_set>
16 
17 #include <boost/functional/hash.hpp>
18 
19 #include <librevenge/librevenge.h>
20 
21 #include "EPUBCSSProperties.h"
22 #include "EPUBCounter.h"
23 #include "EPUBPath.h"
24 
25 namespace libepubgen
26 {
27 
28 class EPUBManifest;
29 class EPUBPackage;
30 class EPUBCSSContent;
31 
33 {
34  // disable copying
37 
38  struct BinaryDataHash // : public std::unary_function<librevenge::RVNGBinaryData, std::size_t>
39  {
40  std::size_t operator()(const librevenge::RVNGBinaryData &data) const;
41  };
42 
43  struct BinaryDataEqual // : public std::binary_function<librevenge::RVNGBinaryData, librevenge::RVNGBinaryData, bool>
44  {
45  bool operator()(const librevenge::RVNGBinaryData &left, const librevenge::RVNGBinaryData &right) const;
46  };
47 
48  typedef std::unordered_map<librevenge::RVNGBinaryData, EPUBPath, BinaryDataHash, BinaryDataEqual> MapType_t;
49  typedef std::unordered_map<EPUBCSSProperties, std::string, boost::hash<EPUBCSSProperties>> ContentNameMap_t;
50 
51 public:
52  explicit EPUBImageManager(EPUBManifest &manifest);
53 
54  const EPUBPath &insert(const librevenge::RVNGBinaryData &data, const librevenge::RVNGString &mimetype, const librevenge::RVNGString &properties="");
55 
56  void writeTo(EPUBPackage &package);
57 
59  std::string getFrameClass(librevenge::RVNGPropertyList const &pList);
61  std::string getFrameStyle(librevenge::RVNGPropertyList const &pList);
63  static std::string getWrapStyle(librevenge::RVNGPropertyList const &pList);
65  void send(EPUBCSSContent &out);
66 
67 private:
69  void extractImageProperties(librevenge::RVNGPropertyList const &pList, EPUBCSSProperties &cssProps) const;
70 
76 };
77 
78 }
79 
80 #endif // INCLUDED_EPUBIMAGEMANAGER
81 
82 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libepubgen::EPUBBinaryContent::insertBinaryData
void insertBinaryData(const librevenge::RVNGBinaryData &data)
Definition: EPUBBinaryContent.cpp:22
EPUBManifest.h
libepubgen::EPUBCSSContent
Definition: EPUBCSSContent.h:24
libepubgen::EPUBImageManager
Definition: EPUBImageManager.h:33
libepubgen::EPUBImageManager::operator=
EPUBImageManager & operator=(const EPUBImageManager &)
libepubgen::EPUBCSSContent::insertRule
void insertRule(const librevenge::RVNGString &selector, const librevenge::RVNGPropertyList &properties)
Definition: EPUBCSSContent.cpp:22
libepubgen::EPUBBinaryContent::writeTo
void writeTo(EPUBPackage &package, const char *name)
Definition: EPUBBinaryContent.cpp:27
libepubgen::fillPropertyList
void fillPropertyList(const EPUBCSSProperties &cssProps, librevenge::RVNGPropertyList &props)
Definition: EPUBCSSProperties.cpp:15
libepubgen::EPUBImageManager::getFrameClass
std::string getFrameClass(librevenge::RVNGPropertyList const &pList)
returns the class name corresponding to a propertylist
Definition: EPUBImageManager.cpp:113
libepubgen
Definition: EPUBBinaryContent.cpp:15
libepubgen::EPUBBinaryContent
Definition: EPUBBinaryContent.h:21
libepubgen::EPUBImageManager::BinaryDataEqual
Definition: EPUBImageManager.h:44
libepubgen::EPUBCounter
Definition: EPUBCounter.h:17
libepubgen::EPUBImageManager::m_manifest
EPUBManifest & m_manifest
Definition: EPUBImageManager.h:71
libepubgen::EPUBImageManager::getWrapStyle
static std::string getWrapStyle(librevenge::RVNGPropertyList const &pList)
returns the style for a follow-up element, based on wrapping properties.
Definition: EPUBImageManager.cpp:174
libepubgen::EPUBCSSProperties
std::map< std::string, std::string > EPUBCSSProperties
Definition: EPUBCSSProperties.h:21
libepubgen::EPUBCounter::next
unsigned next()
Definition: EPUBCounter.cpp:25
libepubgen::EPUBManifest::insert
void insert(const EPUBPath &path, const std::string &mimetype, const std::string &id, const std::string &properties)
Definition: EPUBManifest.cpp:25
libepubgen::EPUBImageManager::BinaryDataHash
Definition: EPUBImageManager.h:39
EPUBCSSContent.h
EPUBCSSProperties.h
libepubgen::EPUBImageManager::ContentNameMap_t
std::unordered_map< EPUBCSSProperties, std::string, boost::hash< EPUBCSSProperties > > ContentNameMap_t
Definition: EPUBImageManager.h:49
libepubgen::EPUBImageManager::insert
const EPUBPath & insert(const librevenge::RVNGBinaryData &data, const librevenge::RVNGString &mimetype, const librevenge::RVNGString &properties="")
Definition: EPUBImageManager.cpp:79
libepubgen::EPUBImageManager::BinaryDataHash::operator()
std::size_t operator()(const librevenge::RVNGBinaryData &data) const
Definition: EPUBImageManager.cpp:50
libepubgen::EPUBImageManager::m_imageContentNameMap
ContentNameMap_t m_imageContentNameMap
a map image content -> name
Definition: EPUBImageManager.h:75
libepubgen::EPUBImageManager::EPUBImageManager
EPUBImageManager(const EPUBImageManager &)
libepubgen::EPUBImageManager::MapType_t
std::unordered_map< librevenge::RVNGBinaryData, EPUBPath, BinaryDataHash, BinaryDataEqual > MapType_t
Definition: EPUBImageManager.h:48
libepubgen::EPUBImageManager::m_map
MapType_t m_map
Definition: EPUBImageManager.h:72
libepubgen::EPUBPath
Representation of a path in the package.
Definition: EPUBPath.h:22
EPUBPath.h
EPUBCounter.h
libepubgen::EPUBImageManager::send
void send(EPUBCSSContent &out)
send the data to the sink
Definition: EPUBImageManager.cpp:203
libepubgen::EPUBImageManager::BinaryDataEqual::operator()
bool operator()(const librevenge::RVNGBinaryData &left, const librevenge::RVNGBinaryData &right) const
Definition: EPUBImageManager.cpp:61
libepubgen::EPUBPath::str
const std::string str() const
Definition: EPUBPath.cpp:87
libepubgen::EPUBImageManager::m_number
EPUBCounter m_number
Definition: EPUBImageManager.h:73
libepubgen::EPUBImageManager::extractImageProperties
void extractImageProperties(librevenge::RVNGPropertyList const &pList, EPUBCSSProperties &cssProps) const
convert a property list into a CSS property map
Definition: EPUBImageManager.cpp:137
libepubgen::EPUBImageManager::getFrameStyle
std::string getFrameStyle(librevenge::RVNGPropertyList const &pList)
returns the style string corresponding to a propertylist
Definition: EPUBImageManager.cpp:126
libepubgen::EPUBImageManager::writeTo
void writeTo(EPUBPackage &package)
Definition: EPUBImageManager.cpp:103
EPUBImageManager.h
libepubgen::EPUBManifest
Definition: EPUBManifest.h:24
EPUBBinaryContent.h

Generated for libepubgen by doxygen 1.8.18