blob: 7b2e67f5efdc75b1b4e604851cf388bfc390eede [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
reed@android.com8a1c16f2008-12-17 15:59:43 +00008#include "SkPictureFlat.h"
9
junov@chromium.orgef760602012-06-27 20:03:16 +000010#include "SkChecksum.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +000011#include "SkColorFilter.h"
12#include "SkDrawLooper.h"
13#include "SkMaskFilter.h"
14#include "SkRasterizer.h"
15#include "SkShader.h"
16#include "SkTypeface.h"
17#include "SkXfermode.h"
18
reed@android.com8a1c16f2008-12-17 15:59:43 +000019///////////////////////////////////////////////////////////////////////////////
20
djsollen@google.com21830d92012-08-07 19:49:41 +000021SkTypefacePlayback::SkTypefacePlayback() : fCount(0), fArray(NULL) {}
reed@android.com8a1c16f2008-12-17 15:59:43 +000022
djsollen@google.com21830d92012-08-07 19:49:41 +000023SkTypefacePlayback::~SkTypefacePlayback() {
reed@android.com8a1c16f2008-12-17 15:59:43 +000024 this->reset(NULL);
25}
26
djsollen@google.com21830d92012-08-07 19:49:41 +000027void SkTypefacePlayback::reset(const SkRefCntSet* rec) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000028 for (int i = 0; i < fCount; i++) {
29 SkASSERT(fArray[i]);
30 fArray[i]->unref();
31 }
32 SkDELETE_ARRAY(fArray);
rmistry@google.comfbfcd562012-08-23 18:09:54 +000033
scroggo@google.com15543602012-08-02 18:49:49 +000034 if (rec!= NULL && rec->count() > 0) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000035 fCount = rec->count();
36 fArray = SkNEW_ARRAY(SkRefCnt*, fCount);
mike@reedtribe.orge9e08cc2011-04-29 01:44:52 +000037 rec->copyToArray(fArray);
reed@android.com8a1c16f2008-12-17 15:59:43 +000038 for (int i = 0; i < fCount; i++) {
39 fArray[i]->ref();
40 }
41 } else {
42 fCount = 0;
43 fArray = NULL;
44 }
45}
46
djsollen@google.com21830d92012-08-07 19:49:41 +000047void SkTypefacePlayback::setCount(int count) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000048 this->reset(NULL);
rmistry@google.comfbfcd562012-08-23 18:09:54 +000049
reed@android.com8a1c16f2008-12-17 15:59:43 +000050 fCount = count;
51 fArray = SkNEW_ARRAY(SkRefCnt*, count);
reed@android.com4516f472009-06-29 16:25:36 +000052 sk_bzero(fArray, count * sizeof(SkRefCnt*));
reed@android.com8a1c16f2008-12-17 15:59:43 +000053}
54
djsollen@google.com21830d92012-08-07 19:49:41 +000055SkRefCnt* SkTypefacePlayback::set(int index, SkRefCnt* obj) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000056 SkASSERT((unsigned)index < (unsigned)fCount);
57 SkRefCnt_SafeAssign(fArray[index], obj);
58 return obj;
59}
60
djsollen@google.comd2700ee2012-05-30 16:54:13 +000061///////////////////////////////////////////////////////////////////////////////
62
commit-bot@chromium.orga2bd2d12014-01-30 22:16:32 +000063SkFlatController::SkFlatController(uint32_t writeBufferFlags)
djsollen@google.com21830d92012-08-07 19:49:41 +000064: fBitmapHeap(NULL)
scroggo@google.com15543602012-08-02 18:49:49 +000065, fTypefaceSet(NULL)
scroggo@google.com15543602012-08-02 18:49:49 +000066, fTypefacePlayback(NULL)
scroggo@google.com664fab12012-08-14 19:22:05 +000067, fFactorySet(NULL)
commit-bot@chromium.orga2bd2d12014-01-30 22:16:32 +000068, fWriteBufferFlags(writeBufferFlags) {}
scroggo@google.com15543602012-08-02 18:49:49 +000069
70SkFlatController::~SkFlatController() {
djsollen@google.com21830d92012-08-07 19:49:41 +000071 SkSafeUnref(fBitmapHeap);
scroggo@google.com15543602012-08-02 18:49:49 +000072 SkSafeUnref(fTypefaceSet);
73 SkSafeUnref(fFactorySet);
74}
75
djsollen@google.com21830d92012-08-07 19:49:41 +000076void SkFlatController::setBitmapHeap(SkBitmapHeap* heap) {
77 SkRefCnt_SafeAssign(fBitmapHeap, heap);
scroggo@google.com15543602012-08-02 18:49:49 +000078}
79
80void SkFlatController::setTypefaceSet(SkRefCntSet *set) {
81 SkRefCnt_SafeAssign(fTypefaceSet, set);
82}
83
scroggo@google.com15543602012-08-02 18:49:49 +000084void SkFlatController::setTypefacePlayback(SkTypefacePlayback* playback) {
85 fTypefacePlayback = playback;
86}
87
88SkNamedFactorySet* SkFlatController::setNamedFactorySet(SkNamedFactorySet* set) {
89 SkRefCnt_SafeAssign(fFactorySet, set);
90 return set;
91}