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