/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkDataPixelRef.h" #include "SkData.h" #include "SkFlattenableBuffers.h" SkDataPixelRef::SkDataPixelRef(const SkImageInfo& info, SkData* data, size_t rowBytes) : INHERITED(info) , fData(data) , fRB(rowBytes) { fData->ref(); this->setPreLocked(const_cast(fData->data()), rowBytes, NULL); } SkDataPixelRef::~SkDataPixelRef() { fData->unref(); } bool SkDataPixelRef::onNewLockPixels(LockRec* rec) { rec->fPixels = const_cast(fData->data()); rec->fColorTable = NULL; rec->fRowBytes = fRB; return true; } void SkDataPixelRef::onUnlockPixels() { // nothing to do } size_t SkDataPixelRef::getAllocatedSizeInBytes() const { return fData ? fData->size() : 0; } void SkDataPixelRef::flatten(SkFlattenableWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeDataAsByteArray(fData); buffer.write32(fRB); } SkDataPixelRef::SkDataPixelRef(SkFlattenableReadBuffer& buffer) : INHERITED(buffer, NULL) { fData = buffer.readByteArrayAsData(); fRB = buffer.read32(); this->setPreLocked(const_cast(fData->data()), fRB, NULL); }