16462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org// Copyright (c) 2014 The Chromium Authors. All rights reserved.
26462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org// Use of this source code is governed by a BSD-style license that can be
36462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org// found in the LICENSE file.
46462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
56462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org#include "cbdt.h"
66462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
76462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org// CBDT
86462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org// https://color-emoji.googlecode.com/git/specification/v1.html
96462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org// We don't support the table, but provide a way not to drop the table.
106462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
116462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgnamespace ots {
126462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
136462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgextern bool g_drop_color_bitmap_tables;
146462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
156462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgbool ots_cbdt_parse(OpenTypeFile *file, const uint8_t *data, size_t length) {
166462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  if (g_drop_color_bitmap_tables) {
176462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org    return OTS_FAILURE();
186462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  }
196462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
206462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  file->cbdt = new OpenTypeCBDT;
216462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  file->cbdt->data = data;
226462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  file->cbdt->length = length;
236462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  return true;
246462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org}
256462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
266462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgbool ots_cbdt_should_serialise(OpenTypeFile *file) {
276462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  return file->cbdt != NULL && file->cblc != NULL;
286462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org}
296462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
306462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgbool ots_cbdt_serialise(OTSStream *out, OpenTypeFile *file) {
316462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  if (!out->Write(file->cbdt->data, file->cbdt->length)) {
326462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org    return OTS_FAILURE();
336462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  }
346462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  return true;
356462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org}
366462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
376462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgvoid ots_cbdt_free(OpenTypeFile *file) {
386462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org  delete file->cbdt;
396462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org}
406462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org
416462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org}  // namespace ots
42