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