12211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner/*
22211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner * Copyright 2009-2015 Google Inc.
32211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner *
42211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner * Use of this source code is governed by a BSD-style license that can be
52211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner * found in the LICENSE file.
62211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner */
72211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner
82211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner/* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */
92211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner
102211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "google_font_file_buffering.h"
112211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner
122211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkFontConfigInterface_direct_google3.h"
132211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkStream.h"
142211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkString.h"
152211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkTypes.h"
162211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner
172211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagnerbool SkFontConfigInterfaceDirectGoogle3::isAccessible(const char* filename) {
182211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    // Check if this font has been pre-loaded into memory.
192211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    const char* unused;
202211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    if (GoogleFreeType::GoogleFt2ReadFontFromMemory(filename, &unused) >= 0) {
212211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner        return true;
222211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    }
232211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    return this->INHERITED::isAccessible(filename);
242211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner}
252211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner
262211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagnerSkStreamAsset* SkFontConfigInterfaceDirectGoogle3::openStream(const FontIdentity& identity) {
272211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    const char* c_filename = identity.fString.c_str();
282211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    // Read the system fonts from the fonts we've pre-loaded into memory.
292211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    const char* buffer;
302211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    int length = GoogleFreeType::GoogleFt2ReadFontFromMemory(
312211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner        c_filename, &buffer);
322211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    if (length >= 0) return new SkMemoryStream(buffer, length);
332211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner    return this->INHERITED::openStream(identity);
342211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner}
35