// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef CORE_FXGE_FX_FREETYPE_H_
#define CORE_FXGE_FX_FREETYPE_H_

#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_GLYPH_H
#include FT_LCD_FILTER_H
#include FT_MULTIPLE_MASTERS_H
#include FT_OUTLINE_H
#include FT_TRUETYPE_TABLES_H

using FXFT_Face = struct FT_FaceRec_*;
using FXFT_Library = void*;

using FXFT_MM_Var = FT_MM_Var*;
using FXFT_Open_Args = FT_Open_Args;
using FXFT_StreamRec = FT_StreamRec;
using FXFT_Stream = FT_StreamRec*;
using FXFT_BBox = FT_BBox;
using FXFT_Glyph = FT_Glyph;
using FXFT_CharMap = FT_CharMap;

using FXFT_Matrix = FT_Matrix;
using FXFT_Vector = FT_Vector;
using FXFT_Outline_Funcs = FT_Outline_Funcs;

#define FXFT_ENCODING_UNICODE FT_ENCODING_UNICODE
#define FXFT_ENCODING_ADOBE_STANDARD FT_ENCODING_ADOBE_STANDARD
#define FXFT_ENCODING_ADOBE_EXPERT FT_ENCODING_ADOBE_EXPERT
#define FXFT_ENCODING_ADOBE_LATIN_1 FT_ENCODING_ADOBE_LATIN_1
#define FXFT_ENCODING_APPLE_ROMAN FT_ENCODING_APPLE_ROMAN
#define FXFT_ENCODING_ADOBE_CUSTOM FT_ENCODING_ADOBE_CUSTOM
#define FXFT_ENCODING_MS_SYMBOL FT_ENCODING_MS_SYMBOL
#define FXFT_ENCODING_GB2312 FT_ENCODING_GB2312
#define FXFT_ENCODING_BIG5 FT_ENCODING_BIG5
#define FXFT_ENCODING_SJIS FT_ENCODING_SJIS
#define FXFT_ENCODING_JOHAB FT_ENCODING_JOHAB

#define FXFT_LOAD_NO_SCALE FT_LOAD_NO_SCALE
#define FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH \
  FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH
#define FXFT_LOAD_NO_BITMAP FT_LOAD_NO_BITMAP

#define FXFT_RENDER_MODE_LCD FT_RENDER_MODE_LCD
#define FXFT_RENDER_MODE_MONO FT_RENDER_MODE_MONO
#define FXFT_RENDER_MODE_NORMAL FT_RENDER_MODE_NORMAL

#define FXFT_PIXEL_MODE_MONO FT_PIXEL_MODE_MONO

#define FXFT_STYLE_FLAG_ITALIC FT_STYLE_FLAG_ITALIC
#define FXFT_STYLE_FLAG_BOLD FT_STYLE_FLAG_BOLD

#define FXFT_FACE_FLAG_SFNT FT_FACE_FLAG_SFNT
#define FXFT_FACE_FLAG_TRICKY (1L << 13)

#define FXFT_GLYPH_BBOX_PIXELS FT_GLYPH_BBOX_PIXELS

#define FXFT_Open_Face(library, args, index, face)            \
  FT_Open_Face(static_cast<FT_Library>(library), args, index, \
               static_cast<FT_Face*>(face))
#define FXFT_Done_Face(face) FT_Done_Face(static_cast<FT_Face>(face))
#define FXFT_Done_FreeType(library) \
  FT_Done_FreeType(static_cast<FT_Library>(library))
#define FXFT_Init_FreeType(library) \
  FT_Init_FreeType(reinterpret_cast<FT_Library*>(library))
#define FXFT_Library_Version(library, amajor, aminor, apatch)               \
  FT_Library_Version(reinterpret_cast<FT_Library>(library), amajor, aminor, \
                     apatch)
#define FXFT_New_Memory_Face(library, base, size, index, face)            \
  FT_New_Memory_Face(static_cast<FT_Library>(library), base, size, index, \
                     static_cast<FT_Face*>(face))
#define FXFT_New_Face(library, filename, index, face)            \
  FT_New_Face(static_cast<FT_Library>(library), filename, index, \
              static_cast<FT_Face*>(face))
#define FXFT_Select_Charmap(face, encoding)     \
  FT_Select_Charmap(static_cast<FT_Face>(face), \
                    static_cast<FT_Encoding>(encoding))
#define FXFT_Set_Charmap(face, charmap) \
  FT_Set_Charmap(static_cast<FT_Face>(face), static_cast<FT_CharMap>(charmap))
#define FXFT_Load_Glyph(face, glyph_index, flags) \
  FT_Load_Glyph(static_cast<FT_Face>(face), glyph_index, flags)
#define FXFT_Get_Char_Index(face, code) \
  FT_Get_Char_Index(static_cast<FT_Face>(face), code)
#define FXFT_Get_Glyph_Name(face, index, buffer, size) \
  FT_Get_Glyph_Name(static_cast<FT_Face>(face), index, buffer, size)
#define FXFT_Get_Name_Index(face, name) \
  FT_Get_Name_Index(static_cast<FT_Face>(face), name)
#define FXFT_Has_Glyph_Names(face) \
  (static_cast<FT_Face>(face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES)
#define FXFT_Get_Postscript_Name(face) \
  FT_Get_Postscript_Name(static_cast<FT_Face>(face))
#define FXFT_Load_Sfnt_Table(face, tag, offset, buffer, length) \
  FT_Load_Sfnt_Table(static_cast<FT_Face>(face), tag, offset, buffer, length)
#define FXFT_Get_First_Char(face, glyph_index) \
  FT_Get_First_Char(static_cast<FT_Face>(face), glyph_index)
#define FXFT_Get_Next_Char(face, code, glyph_index) \
  FT_Get_Next_Char(static_cast<FT_Face>(face), code, glyph_index)
#define FXFT_Clear_Face_External_Stream(face) \
  (static_cast<FT_Face>(face)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM)
#define FXFT_Get_Face_External_Stream(face) \
  (static_cast<FT_Face>(face)->face_flags & FT_FACE_FLAG_EXTERNAL_STREAM)
#define FXFT_Is_Face_TT_OT(face) \
  (static_cast<FT_Face>(face)->face_flags & FT_FACE_FLAG_SFNT)
#define FXFT_Is_Face_Tricky(face) \
  (static_cast<FT_Face>(face)->face_flags & FXFT_FACE_FLAG_TRICKY)
#define FXFT_Is_Face_fixedwidth(face) \
  (static_cast<FT_Face>(face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH)
#define FXFT_Get_Face_Stream_Base(face) static_cast<FT_Face>(face)->stream->base
#define FXFT_Get_Face_Stream_Size(face) static_cast<FT_Face>(face)->stream->size
#define FXFT_Get_Face_Family_Name(face) static_cast<FT_Face>(face)->family_name
#define FXFT_Get_Face_Style_Name(face) static_cast<FT_Face>(face)->style_name
#define FXFT_Is_Face_Italic(face) \
  (static_cast<FT_Face>(face)->style_flags & FT_STYLE_FLAG_ITALIC)
#define FXFT_Is_Face_Bold(face) \
  (static_cast<FT_Face>(face)->style_flags & FT_STYLE_FLAG_BOLD)
#define FXFT_Get_Face_Charmaps(face) static_cast<FT_Face>(face)->charmaps
#define FXFT_Get_Glyph_HoriBearingX(face) \
  static_cast<FT_Face>(face)->glyph->metrics.horiBearingX
#define FXFT_Get_Glyph_HoriBearingY(face) \
  static_cast<FT_Face>(face)->glyph->metrics.horiBearingY
#define FXFT_Get_Glyph_Width(face) \
  static_cast<FT_Face>(face)->glyph->metrics.width
#define FXFT_Get_Glyph_Height(face) \
  static_cast<FT_Face>(face)->glyph->metrics.height
#define FXFT_Get_Face_CharmapCount(face) \
  static_cast<FT_Face>(face)->num_charmaps
#define FXFT_Get_Charmap_Encoding(charmap) \
  static_cast<FT_CharMap>(charmap)->encoding
#define FXFT_Get_Face_Charmap(face) static_cast<FT_Face>(face)->charmap
#define FXFT_Get_Charmap_PlatformID(charmap) \
  static_cast<FT_CharMap>(charmap)->platform_id
#define FXFT_Get_Charmap_EncodingID(charmap) \
  static_cast<FT_CharMap>(charmap)->encoding_id
#define FXFT_Get_Face_UnitsPerEM(face) static_cast<FT_Face>(face)->units_per_EM
#define FXFT_Get_Face_xMin(face) static_cast<FT_Face>(face)->bbox.xMin
#define FXFT_Get_Face_xMax(face) static_cast<FT_Face>(face)->bbox.xMax
#define FXFT_Get_Face_yMin(face) static_cast<FT_Face>(face)->bbox.yMin
#define FXFT_Get_Face_yMax(face) static_cast<FT_Face>(face)->bbox.yMax
#define FXFT_Get_Face_Height(face) static_cast<FT_Face>(face)->height
#define FXFT_Get_Face_Ascender(face) static_cast<FT_Face>(face)->ascender
#define FXFT_Get_Face_Descender(face) static_cast<FT_Face>(face)->descender
#define FXFT_Get_Glyph_HoriAdvance(face) \
  static_cast<FT_Face>(face)->glyph->metrics.horiAdvance
#define FXFT_Get_MM_Axis(var, index) &static_cast<FT_MM_Var*>(var)->axis[index]
#define FXFT_Get_MM_Axis_Min(axis) static_cast<FT_Var_Axis*>(axis)->minimum
#define FXFT_Get_MM_Axis_Max(axis) static_cast<FT_Var_Axis*>(axis)->maximum
#define FXFT_Get_MM_Axis_Def(axis) static_cast<FT_Var_Axis*>(axis)->def
#define FXFT_Free(face, p)                                                     \
  static_cast<FT_Face>(face)->memory->free(static_cast<FT_Face>(face)->memory, \
                                           p)
#define FXFT_Get_Glyph_Outline(face) &static_cast<FT_Face>(face)->glyph->outline
#define FXFT_Render_Glyph(face, mode)                \
  FT_Render_Glyph(static_cast<FT_Face>(face)->glyph, \
                  static_cast<enum FT_Render_Mode_>(mode))
#define FXFT_Get_MM_Var(face, p) FT_Get_MM_Var(static_cast<FT_Face>(face), p)
#define FXFT_Set_MM_Design_Coordinates(face, n, p) \
  FT_Set_MM_Design_Coordinates(static_cast<FT_Face>(face), n, p)
#define FXFT_Set_Pixel_Sizes(face, w, h) \
  FT_Set_Pixel_Sizes(static_cast<FT_Face>(face), w, h)
#define FXFT_Set_Transform(face, m, d) \
  FT_Set_Transform(static_cast<FT_Face>(face), m, d)
#define FXFT_Outline_Embolden(outline, s) FT_Outline_Embolden(outline, s)
#define FXFT_Get_Glyph_Bitmap(face) &static_cast<FT_Face>(face)->glyph->bitmap
#define FXFT_Get_Bitmap_Width(bitmap) static_cast<FT_Bitmap*>(bitmap)->width
#define FXFT_Get_Bitmap_Rows(bitmap) static_cast<FT_Bitmap*>(bitmap)->rows
#define FXFT_Get_Bitmap_PixelMode(bitmap) \
  static_cast<FT_Bitmap*>(bitmap)->pixel_mode
#define FXFT_Get_Bitmap_Pitch(bitmap) static_cast<FT_Bitmap*>(bitmap)->pitch
#define FXFT_Get_Bitmap_Buffer(bitmap) static_cast<FT_Bitmap*>(bitmap)->buffer
#define FXFT_Get_Glyph_BitmapLeft(face) \
  static_cast<FT_Face>(face)->glyph->bitmap_left
#define FXFT_Get_Glyph_BitmapTop(face) \
  static_cast<FT_Face>(face)->glyph->bitmap_top
#define FXFT_Outline_Decompose(outline, funcs, params) \
  FT_Outline_Decompose(outline, funcs, params)
#define FXFT_Set_Char_Size(face, char_width, char_height, horz_resolution, \
                           vert_resolution)                                \
  FT_Set_Char_Size(face, char_width, char_height, horz_resolution,         \
                   vert_resolution)
#define FXFT_Get_Glyph(slot, aglyph) FT_Get_Glyph(slot, aglyph)
#define FXFT_Glyph_Get_CBox(glyph, bbox_mode, acbox) \
  FT_Glyph_Get_CBox(glyph, bbox_mode, acbox)
#define FXFT_Done_Glyph(glyph) FT_Done_Glyph(glyph)
#define FXFT_Library_SetLcdFilter(library, filter) \
  FT_Library_SetLcdFilter(static_cast<FT_Library>(library), filter)

int FXFT_unicode_from_adobe_name(const char* glyph_name);
void FXFT_adobe_name_from_unicode(char* name, wchar_t unicode);

#endif  // CORE_FXGE_FX_FREETYPE_H_
