-};
-
-class RawImageProxy : public ImageProxy
-{
-public:
- RawImageProxy (boost::shared_ptr<Image>);
- RawImageProxy (boost::shared_ptr<cxml::Node> xml, boost::shared_ptr<Socket> socket);
-
- boost::shared_ptr<Image> image () const;
- void add_metadata (xmlpp::Node *) const;
- void send_binary (boost::shared_ptr<Socket>) const;
-
-private:
- boost::shared_ptr<Image> _image;
-};
-
-class MagickImageProxy : public ImageProxy
-{
-public:
- MagickImageProxy (boost::filesystem::path);
- MagickImageProxy (boost::shared_ptr<cxml::Node> xml, boost::shared_ptr<Socket> socket);
-
- boost::shared_ptr<Image> image () const;
- void add_metadata (xmlpp::Node *) const;
- void send_binary (boost::shared_ptr<Socket>) const;
-
-private:
- Magick::Blob _blob;
- mutable boost::shared_ptr<Image> _image;
+ /** @return true if our image is definitely the same as another, false if it is probably not */
+ virtual bool same (boost::shared_ptr<const ImageProxy>) const = 0;
+ virtual AVPixelFormat pixel_format () const = 0;