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#ifndef CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_H_ 6#define CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/memory/ref_counted.h" 12#include "ppapi/proxy/serialized_structs.h" 13 14namespace content { 15 16class PepperTrueTypeFont 17 : public base::RefCountedThreadSafe<PepperTrueTypeFont> { 18 public: 19 // Factory method to create a font for the current host. 20 static PepperTrueTypeFont* Create(); 21 22 // Initializes the font. Updates the descriptor with the actual font's 23 // characteristics. The exact font will depend on the host platform's font 24 // matching and fallback algorithm. On failure, returns NULL and leaves desc 25 // unchanged. 26 // NOTE: This method may perform long blocking file IO. 27 virtual int32_t Initialize( 28 ppapi::proxy::SerializedTrueTypeFontDesc* desc) = 0; 29 30 // Retrieves an array of TrueType table tags contained in this font. Returns 31 // the number of tags on success, a Pepper error code on failure. 'tags' are 32 // written only on success. 33 // NOTE: This method may perform long blocking file IO. It may be called even 34 // though the call to Initialize failed. Implementors must check validity. 35 virtual int32_t GetTableTags(std::vector<uint32_t>* tags) = 0; 36 37 // Gets a TrueType font table corresponding to the given tag. The 'offset' and 38 // 'max_data_length' parameters determine what part of the table is returned. 39 // Returns the data size in bytes on success, a Pepper error code on failure. 40 // 'data' is written only on success. 41 // NOTE: This method may perform long blocking file IO. It may be called even 42 // though the call to Initialize failed. Implementors must check validity. 43 virtual int32_t GetTable(uint32_t table_tag, 44 int32_t offset, 45 int32_t max_data_length, 46 std::string* data) = 0; 47 48 protected: 49 friend class base::RefCountedThreadSafe<PepperTrueTypeFont>; 50 virtual ~PepperTrueTypeFont() {}; 51}; 52 53} // namespace content 54 55#endif // CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_H_ 56