15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_font_util.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
85e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)#include "base/strings/string_number_conversions.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
105e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/font.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetLocalizedContentsWidthForFont(int col_resource_id,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const gfx::Font& font) {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  double chars = 0;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::StringToDouble(l10n_util::GetStringUTF8(col_resource_id), &chars);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int width = font.GetExpectedTextWidth(static_cast<int>(chars));
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK_GT(width, 0);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return width;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetLocalizedContentsHeightForFont(int row_resource_id,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const gfx::Font& font) {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  double lines = 0;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::StringToDouble(l10n_util::GetStringUTF8(row_resource_id), &lines);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int height = static_cast<int>(font.GetHeight() * lines);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK_GT(height, 0);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return height;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Size GetLocalizedContentsSizeForFont(int col_resource_id,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          int row_resource_id,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          const gfx::Font& font) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Size(GetLocalizedContentsWidthForFont(col_resource_id, font),
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   GetLocalizedContentsHeightForFont(row_resource_id, font));
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ui
41