/*
 * Copyright 2009-2015 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

/* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */

#include "google_font_file_buffering.h"

#include "SkFontConfigInterface_direct_google3.h"
#include "SkStream.h"
#include "SkString.h"
#include "SkTypes.h"

bool SkFontConfigInterfaceDirectGoogle3::isAccessible(const char* filename) {
    // Check if this font has been pre-loaded into memory.
    const char* unused;
    if (GoogleFreeType::GoogleFt2ReadFontFromMemory(filename, &unused) >= 0) {
        return true;
    }
    return this->INHERITED::isAccessible(filename);
}

SkStreamAsset* SkFontConfigInterfaceDirectGoogle3::openStream(const FontIdentity& identity) {
    const char* c_filename = identity.fString.c_str();
    // Read the system fonts from the fonts we've pre-loaded into memory.
    const char* buffer;
    int length = GoogleFreeType::GoogleFt2ReadFontFromMemory(
        c_filename, &buffer);
    if (length >= 0) return new SkMemoryStream(buffer, length);
    return this->INHERITED::openStream(identity);
}