/* fontmap.h
 *
 * Copyright 2001      The gtkmm Development Team
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
 */

#include <glibmm/object.h>
#include <glibmm/arrayhandle.h>
#include <pangomm/font.h>
#include <pangomm/fontset.h>
#include <pangomm/fontfamily.h>
#include <pango/pango.h>

_DEFS(pangomm,pango)
_PINCLUDE(glibmm/private/object_p.h)

namespace Pango
{

class PANGOMM_API Context;

//TODO: When we can break ABI, let FontMap implement the Gio::ListModel interface.
/** A Pango::FontMap represents the set of fonts available for a particular rendering system.
 */
class PANGOMM_API FontMap : public Glib::Object
{
   _CLASS_GOBJECT(FontMap, PangoFontMap, PANGO_FONT_MAP, Glib::Object, GObject, , , PANGOMM_API)
   _IGNORE(pango_font_map_list_families)

public:
  _WRAP_METHOD(Glib::RefPtr<Font> load_font(const Glib::RefPtr<Context>& context, const FontDescription& desc) const, pango_font_map_load_font)
  _WRAP_METHOD(Glib::RefPtr<Fontset> load_fontset(const Glib::RefPtr<Context>& context, const FontDescription& desc, const Language& language) const, pango_font_map_load_fontset)

  _WRAP_METHOD(Glib::RefPtr<Context> create_context(), pango_font_map_create_context)

  /** List all families for the fontmap.
   * @return an array of pointers to Pango::FontFamily objects.
   */
  Glib::ArrayHandle< Glib::RefPtr<FontFamily> > list_families() const;

  _WRAP_METHOD(guint get_serial() const, pango_font_map_get_serial)

  _IGNORE(pango_font_map_changed)
};

} /* namespace Pango */
