// Copyright 2014 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_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_H_
#define CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_H_

#include <string>
#include <vector>

#include "base/memory/ref_counted.h"
#include "ppapi/proxy/serialized_structs.h"

namespace content {

class PepperTrueTypeFont
    : public base::RefCountedThreadSafe<PepperTrueTypeFont> {
 public:
  // Factory method to create a font for the current host.
  static PepperTrueTypeFont* Create();

  // Initializes the font. Updates the descriptor with the actual font's
  // characteristics. The exact font will depend on the host platform's font
  // matching and fallback algorithm. On failure, returns NULL and leaves desc
  // unchanged.
  // NOTE: This method may perform long blocking file IO.
  virtual int32_t Initialize(
      ppapi::proxy::SerializedTrueTypeFontDesc* desc) = 0;

  // Retrieves an array of TrueType table tags contained in this font. Returns
  // the number of tags on success, a Pepper error code on failure. 'tags' are
  // written only on success.
  // NOTE: This method may perform long blocking file IO. It may be called even
  // though the call to Initialize failed. Implementors must check validity.
  virtual int32_t GetTableTags(std::vector<uint32_t>* tags) = 0;

  // Gets a TrueType font table corresponding to the given tag. The 'offset' and
  // 'max_data_length' parameters determine what part of the table is returned.
  // Returns the data size in bytes on success, a Pepper error code on failure.
  // 'data' is written only on success.
  // NOTE: This method may perform long blocking file IO. It may be called even
  // though the call to Initialize failed. Implementors must check validity.
  virtual int32_t GetTable(uint32_t table_tag,
                           int32_t offset,
                           int32_t max_data_length,
                           std::string* data) = 0;

 protected:
  friend class base::RefCountedThreadSafe<PepperTrueTypeFont>;
  virtual ~PepperTrueTypeFont() {};
};

}  // namespace content

#endif  // CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TRUETYPE_FONT_H_
