/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkPictureFlat.h" #include "SkChecksum.h" #include "SkColorFilter.h" #include "SkDrawLooper.h" #include "SkMaskFilter.h" #include "SkShader.h" #include "SkTypeface.h" /////////////////////////////////////////////////////////////////////////////// SkTypefacePlayback::SkTypefacePlayback() : fCount(0), fArray(nullptr) {} SkTypefacePlayback::~SkTypefacePlayback() { this->reset(nullptr); } void SkTypefacePlayback::reset(const SkRefCntSet* rec) { for (int i = 0; i < fCount; i++) { SkASSERT(fArray[i]); fArray[i]->unref(); } delete[] fArray; if (rec!= nullptr && rec->count() > 0) { fCount = rec->count(); fArray = new SkRefCnt* [fCount]; rec->copyToArray(fArray); for (int i = 0; i < fCount; i++) { fArray[i]->ref(); } } else { fCount = 0; fArray = nullptr; } } void SkTypefacePlayback::setCount(int count) { this->reset(nullptr); fCount = count; fArray = new SkRefCnt* [count]; sk_bzero(fArray, count * sizeof(SkRefCnt*)); } SkRefCnt* SkTypefacePlayback::set(int index, SkRefCnt* obj) { SkASSERT((unsigned)index < (unsigned)fCount); SkRefCnt_SafeAssign(fArray[index], obj); return obj; }