// -*- c++ -*-
// Generated by gtkmmproc -- DO NOT MODIFY!
#ifndef _LIBGNOMEUIMM_ICON_LOOKUP_H
#define _LIBGNOMEUIMM_ICON_LOOKUP_H

#include <glibmm.h>

/* icon-lookup.hg
 * 
 * Copyright (C) 1999 The Gtk-- Development Team
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <gtkmm/icontheme.h>
#include <libgnomeuimm/thumbnail.h>
#include <libgnomevfsmm/file-info.h>


namespace Gnome
{

namespace UI
{

/** @addtogroup libgnomeuimmEnums Enums and Flags */

/**
 * @ingroup libgnomeuimmEnums
 * @par Bitwise operators:
 * <tt>%IconLookupFlags operator|(IconLookupFlags, IconLookupFlags)</tt><br>
 * <tt>%IconLookupFlags operator&(IconLookupFlags, IconLookupFlags)</tt><br>
 * <tt>%IconLookupFlags operator^(IconLookupFlags, IconLookupFlags)</tt><br>
 * <tt>%IconLookupFlags operator~(IconLookupFlags)</tt><br>
 * <tt>%IconLookupFlags& operator|=(IconLookupFlags&, IconLookupFlags)</tt><br>
 * <tt>%IconLookupFlags& operator&=(IconLookupFlags&, IconLookupFlags)</tt><br>
 * <tt>%IconLookupFlags& operator^=(IconLookupFlags&, IconLookupFlags)</tt><br>
 */
enum IconLookupFlags
{
  ICON_LOOKUP_FLAGS_NONE = 0,
  ICON_LOOKUP_FLAGS_EMBEDDING_TEXT = 1<<0,
  ICON_LOOKUP_FLAGS_SHOW_SMALL_IMAGES_AS_THEMSELVES = 1<<1,
  ICON_LOOKUP_FLAGS_ALLOW_SVG_AS_THEMSELVES = 1<<2
};

/** @ingroup libgnomeuimmEnums */
inline IconLookupFlags operator|(IconLookupFlags lhs, IconLookupFlags rhs)
  { return static_cast<IconLookupFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupFlags operator&(IconLookupFlags lhs, IconLookupFlags rhs)
  { return static_cast<IconLookupFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupFlags operator^(IconLookupFlags lhs, IconLookupFlags rhs)
  { return static_cast<IconLookupFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupFlags operator~(IconLookupFlags flags)
  { return static_cast<IconLookupFlags>(~static_cast<unsigned>(flags)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupFlags& operator|=(IconLookupFlags& lhs, IconLookupFlags rhs)
  { return (lhs = static_cast<IconLookupFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupFlags& operator&=(IconLookupFlags& lhs, IconLookupFlags rhs)
  { return (lhs = static_cast<IconLookupFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupFlags& operator^=(IconLookupFlags& lhs, IconLookupFlags rhs)
  { return (lhs = static_cast<IconLookupFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }


/**
 * @ingroup libgnomeuimmEnums
 * @par Bitwise operators:
 * <tt>%IconLookupResultFlags operator|(IconLookupResultFlags, IconLookupResultFlags)</tt><br>
 * <tt>%IconLookupResultFlags operator&(IconLookupResultFlags, IconLookupResultFlags)</tt><br>
 * <tt>%IconLookupResultFlags operator^(IconLookupResultFlags, IconLookupResultFlags)</tt><br>
 * <tt>%IconLookupResultFlags operator~(IconLookupResultFlags)</tt><br>
 * <tt>%IconLookupResultFlags& operator|=(IconLookupResultFlags&, IconLookupResultFlags)</tt><br>
 * <tt>%IconLookupResultFlags& operator&=(IconLookupResultFlags&, IconLookupResultFlags)</tt><br>
 * <tt>%IconLookupResultFlags& operator^=(IconLookupResultFlags&, IconLookupResultFlags)</tt><br>
 */
enum IconLookupResultFlags
{
  ICON_LOOKUP_RESULT_FLAGS_NONE = 0,
  ICON_LOOKUP_RESULT_FLAGS_THUMBNAIL = 1<<0
};

/** @ingroup libgnomeuimmEnums */
inline IconLookupResultFlags operator|(IconLookupResultFlags lhs, IconLookupResultFlags rhs)
  { return static_cast<IconLookupResultFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupResultFlags operator&(IconLookupResultFlags lhs, IconLookupResultFlags rhs)
  { return static_cast<IconLookupResultFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupResultFlags operator^(IconLookupResultFlags lhs, IconLookupResultFlags rhs)
  { return static_cast<IconLookupResultFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupResultFlags operator~(IconLookupResultFlags flags)
  { return static_cast<IconLookupResultFlags>(~static_cast<unsigned>(flags)); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupResultFlags& operator|=(IconLookupResultFlags& lhs, IconLookupResultFlags rhs)
  { return (lhs = static_cast<IconLookupResultFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupResultFlags& operator&=(IconLookupResultFlags& lhs, IconLookupResultFlags rhs)
  { return (lhs = static_cast<IconLookupResultFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }

/** @ingroup libgnomeuimmEnums */
inline IconLookupResultFlags& operator^=(IconLookupResultFlags& lhs, IconLookupResultFlags rhs)
  { return (lhs = static_cast<IconLookupResultFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }


Glib::ustring icon_lookup(const Glib::RefPtr<Gtk::IconTheme>& icon_theme, const Glib::RefPtr<ThumbnailFactory>& thumbnail_factory, const Glib::ustring& file_uri, const Glib::ustring& custom_icon, const Glib::RefPtr<Gnome::Vfs::FileInfo>& file_info, const Glib::ustring& mime_type, IconLookupFlags flags, IconLookupResultFlags& result);

Glib::ustring icon_lookup_sync(const Glib::RefPtr<Gtk::IconTheme>& icon_theme, const Glib::RefPtr<ThumbnailFactory>& thumbnail_factory, const Glib::ustring& file_uri, const Glib::ustring& custom_icon, IconLookupFlags flags, IconLookupResultFlags& result);

} /* namespace UI */
} /* namespace Gnome */

#endif /* _LIBGNOMEUIMM_ICON_LOOKUP_H */

