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 "cblc.h" 66462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org 76462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org// CBLC 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_cblc_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->cblc = new OpenTypeCBLC; 216462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org file->cblc->data = data; 226462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org file->cblc->length = length; 236462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org return true; 246462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org} 256462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org 266462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgbool ots_cblc_should_serialise(OpenTypeFile *file) { 276462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org return file->cblc != NULL && file->cbdt != NULL; 286462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org} 296462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org 306462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.orgbool ots_cblc_serialise(OTSStream *out, OpenTypeFile *file) { 316462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org if (!out->Write(file->cblc->data, file->cblc->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_cblc_free(OpenTypeFile *file) { 386462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org delete file->cblc; 396462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org} 406462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org 416462c58fa123bb89baf1ec4b7538d8f2c682dc8bbashi@chromium.org} // namespace ots 42