1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/pdf/renderer/pdf_resource_util.h"
6
7#include "base/strings/utf_string_conversions.h"
8#include "components/strings/grit/components_strings.h"
9#include "grit/components_scaled_resources.h"
10#include "ui/base/l10n/l10n_util.h"
11#include "ui/base/resource/resource_bundle.h"
12
13namespace {
14
15struct ResourceImageInfo {
16  PP_ResourceImage pp_id;
17  int res_id;
18};
19
20static const ResourceImageInfo kResourceImageMap[] = {
21    {PP_RESOURCEIMAGE_PDF_BUTTON_FTP, IDR_PDF_BUTTON_FTP},
22    {PP_RESOURCEIMAGE_PDF_BUTTON_FTP_HOVER, IDR_PDF_BUTTON_FTP_HOVER},
23    {PP_RESOURCEIMAGE_PDF_BUTTON_FTP_PRESSED, IDR_PDF_BUTTON_FTP_PRESSED},
24    {PP_RESOURCEIMAGE_PDF_BUTTON_FTW, IDR_PDF_BUTTON_FTW},
25    {PP_RESOURCEIMAGE_PDF_BUTTON_FTW_HOVER, IDR_PDF_BUTTON_FTW_HOVER},
26    {PP_RESOURCEIMAGE_PDF_BUTTON_FTW_PRESSED, IDR_PDF_BUTTON_FTW_PRESSED},
27    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END, IDR_PDF_BUTTON_ZOOMIN_END},
28    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_HOVER,
29     IDR_PDF_BUTTON_ZOOMIN_END_HOVER},
30    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_PRESSED,
31     IDR_PDF_BUTTON_ZOOMIN_END_PRESSED},
32    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN, IDR_PDF_BUTTON_ZOOMIN},
33    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_HOVER, IDR_PDF_BUTTON_ZOOMIN_HOVER},
34    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_PRESSED, IDR_PDF_BUTTON_ZOOMIN_PRESSED},
35    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT, IDR_PDF_BUTTON_ZOOMOUT},
36    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER, IDR_PDF_BUTTON_ZOOMOUT_HOVER},
37    {PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED,
38     IDR_PDF_BUTTON_ZOOMOUT_PRESSED},
39    {PP_RESOURCEIMAGE_PDF_BUTTON_SAVE, IDR_PDF_BUTTON_SAVE},
40    {PP_RESOURCEIMAGE_PDF_BUTTON_SAVE_HOVER, IDR_PDF_BUTTON_SAVE_HOVER},
41    {PP_RESOURCEIMAGE_PDF_BUTTON_SAVE_PRESSED, IDR_PDF_BUTTON_SAVE_PRESSED},
42    {PP_RESOURCEIMAGE_PDF_BUTTON_PRINT, IDR_PDF_BUTTON_PRINT},
43    {PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_HOVER, IDR_PDF_BUTTON_PRINT_HOVER},
44    {PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_PRESSED, IDR_PDF_BUTTON_PRINT_PRESSED},
45    {PP_RESOURCEIMAGE_PDF_BUTTON_PRINT_DISABLED, IDR_PDF_BUTTON_PRINT_DISABLED},
46    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_0, IDR_PDF_THUMBNAIL_0},
47    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_1, IDR_PDF_THUMBNAIL_1},
48    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_2, IDR_PDF_THUMBNAIL_2},
49    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_3, IDR_PDF_THUMBNAIL_3},
50    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_4, IDR_PDF_THUMBNAIL_4},
51    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_5, IDR_PDF_THUMBNAIL_5},
52    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_6, IDR_PDF_THUMBNAIL_6},
53    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_7, IDR_PDF_THUMBNAIL_7},
54    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_8, IDR_PDF_THUMBNAIL_8},
55    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_9, IDR_PDF_THUMBNAIL_9},
56    {PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_NUM_BACKGROUND,
57     IDR_PDF_THUMBNAIL_NUM_BACKGROUND},
58    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_0, IDR_PDF_PROGRESS_BAR_0},
59    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_1, IDR_PDF_PROGRESS_BAR_1},
60    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_2, IDR_PDF_PROGRESS_BAR_2},
61    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_3, IDR_PDF_PROGRESS_BAR_3},
62    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_4, IDR_PDF_PROGRESS_BAR_4},
63    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_5, IDR_PDF_PROGRESS_BAR_5},
64    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_6, IDR_PDF_PROGRESS_BAR_6},
65    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_7, IDR_PDF_PROGRESS_BAR_7},
66    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_8, IDR_PDF_PROGRESS_BAR_8},
67    {PP_RESOURCEIMAGE_PDF_PROGRESS_BAR_BACKGROUND,
68     IDR_PDF_PROGRESS_BAR_BACKGROUND},
69    {PP_RESOURCEIMAGE_PDF_PAGE_INDICATOR_BACKGROUND,
70     IDR_PDF_PAGE_INDICATOR_BACKGROUND},
71    {PP_RESOURCEIMAGE_PDF_PAGE_DROPSHADOW, IDR_PDF_PAGE_DROPSHADOW},
72    {PP_RESOURCEIMAGE_PDF_PAN_SCROLL_ICON, IDR_PDF_PAN_SCROLL_ICON},
73};
74
75}  // namespace
76
77namespace pdf {
78
79gfx::ImageSkia* GetImageResource(PP_ResourceImage image_id) {
80  int resource_id = 0;
81  for (size_t i = 0; i < arraysize(kResourceImageMap); ++i) {
82    if (kResourceImageMap[i].pp_id == image_id) {
83      resource_id = kResourceImageMap[i].res_id;
84      break;
85    }
86  }
87
88  return resource_id ? ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
89                           resource_id)
90                     : NULL;
91}
92
93std::string GetStringResource(PP_ResourceString string_id) {
94  int resource_id = 0;
95  switch (string_id) {
96    case PP_RESOURCESTRING_PDFGETPASSWORD:
97      resource_id = IDS_PDF_NEED_PASSWORD;
98      break;
99    case PP_RESOURCESTRING_PDFLOADING:
100      resource_id = IDS_PDF_PAGE_LOADING;
101      break;
102    case PP_RESOURCESTRING_PDFLOAD_FAILED:
103      resource_id = IDS_PDF_PAGE_LOAD_FAILED;
104      break;
105    case PP_RESOURCESTRING_PDFPROGRESSLOADING:
106      resource_id = IDS_PDF_PROGRESS_LOADING;
107      break;
108  }
109
110  return base::UTF16ToUTF8(l10n_util::GetStringUTF16(resource_id));
111}
112
113}  // namespace pdf
114