1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/options/font_settings_utils.h"
6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
7201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include <set>
8201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include <string>
9201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <pango/pango.h>
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <pango/pangocairo.h>
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/values.h"
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenListValue* FontSettingsUtilities::GetFontsList() {
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ListValue* font_list = new ListValue;
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  PangoFontMap* font_map = ::pango_cairo_font_map_get_default();
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  PangoFontFamily** families = NULL;
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  int num_families = 0;
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ::pango_font_map_list_families(font_map, &families, &num_families);
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
23201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  std::set<std::string> sorted_families;
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  for (int i = 0; i < num_families; i++) {
25201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    sorted_families.insert(::pango_font_family_get_name(families[i]));
26201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  }
27201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  g_free(families);
28201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
29201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  for (std::set<std::string>::const_iterator iter = sorted_families.begin();
30201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch       iter != sorted_families.end(); ++iter) {
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ListValue* font_item = new ListValue();
32201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    font_item->Append(Value::CreateStringValue(*iter));
33201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    font_item->Append(Value::CreateStringValue(*iter));  // localized name.
34201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    // TODO(yusukes): Support localized family names.
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    font_list->Append(font_item);
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  }
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  return font_list;
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid FontSettingsUtilities::ValidateSavedFonts(PrefService* prefs) {
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // nothing to do for GTK.
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
44