12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CONTENT_RENDERER_PEPPER_PEPPER_TRUETYPE_FONT_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CONTENT_RENDERER_PEPPER_PEPPER_TRUETYPE_FONT_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/proxy/serialized_structs.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PepperTrueTypeFont { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates a font matching the given descriptor. The exact font that is 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // returned will depend on the host platform's font matching and fallback 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // algorithm. 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static PepperTrueTypeFont* Create( 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ppapi::proxy::SerializedTrueTypeFontDesc& desc); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~PepperTrueTypeFont() {} 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns true if the font was successfully created, false otherwise. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsValid() = 0; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns a description of the actual font. Use this to see the actual 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // characteristics of the font after running the host platform's font matching 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // and fallback algorithm. Returns PP_OK on success, a Pepper error code on 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // failure. 'desc' is written only on success. 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual int32_t Describe(ppapi::proxy::SerializedTrueTypeFontDesc* desc) = 0; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Retrieves an array of TrueType table tags contained in this font. Returns 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the number of tags on success, a Pepper error code on failure. 'tags' are 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // written only on success. 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual int32_t GetTableTags(std::vector<uint32_t>* tags) = 0; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Gets a TrueType font table corresponding to the given tag. The 'offset' and 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // 'max_data_length' parameters determine what part of the table is returned. 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the data size in bytes on success, a Pepper error code on failure. 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // 'data' is written only on success. 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual int32_t GetTable(uint32_t table_tag, 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t offset, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t max_data_length, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string* data) = 0; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace content 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CONTENT_RENDERER_PEPPER_PEPPER_TRUETYPE_FONT_H_ 51