| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_CHILD_DWRITE_FONT_PROXY_DWRITE_LOCALIZED_STRINGS_WIN_H_ |
| #define CONTENT_CHILD_DWRITE_FONT_PROXY_DWRITE_LOCALIZED_STRINGS_WIN_H_ |
| |
| #include <dwrite.h> |
| #include <wrl.h> |
| #include <utility> |
| #include <vector> |
| |
| #include "base/macros.h" |
| #include "base/strings/string16.h" |
| |
| namespace content { |
| |
| // Impements IDWriteLocalizedStrings, backed by a vector of string pairs. |
| class DWriteLocalizedStrings |
| : public Microsoft::WRL::RuntimeClass< |
| Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, |
| IDWriteLocalizedStrings> { |
| public: |
| DWriteLocalizedStrings(); |
| ~DWriteLocalizedStrings() override; |
| |
| // IDWriteLocalizedStrings: |
| HRESULT STDMETHODCALLTYPE FindLocaleName(const WCHAR* locale_name, |
| UINT32* index, |
| BOOL* exists) override; |
| UINT32 STDMETHODCALLTYPE GetCount() override; |
| HRESULT STDMETHODCALLTYPE GetLocaleName(UINT32 index, |
| WCHAR* locale_name, |
| UINT32 size) override; |
| HRESULT STDMETHODCALLTYPE GetLocaleNameLength(UINT32 index, |
| UINT32* length) override; |
| HRESULT STDMETHODCALLTYPE GetString(UINT32 index, |
| WCHAR* string_buffer, |
| UINT32 size) override; |
| HRESULT STDMETHODCALLTYPE GetStringLength(UINT32 index, |
| UINT32* length) override; |
| |
| HRESULT STDMETHODCALLTYPE RuntimeClassInitialize( |
| std::vector<std::pair<base::string16, base::string16>>* strings); |
| |
| private: |
| // List of strings. First element of each pair is the locale, and the second |
| // element is the associated value. Use a vector because the expected number |
| // of pairs is small (typically 1-2, rarely up to a few dozen?) and we need |
| // index-based access. |
| std::vector<std::pair<base::string16, base::string16>> strings_; |
| |
| DISALLOW_ASSIGN(DWriteLocalizedStrings); |
| }; |
| |
| } // namespace content |
| #endif // CONTENT_CHILD_DWRITE_FONT_PROXY_DWRITE_LOCALIZED_STRINGS_WIN_H_ |