michael@0: /* michael@0: * Copyright 2010 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: #include "SkStream_NSData.h" michael@0: michael@0: NSData* NSData_dataWithStream(SkStream* stream) { michael@0: size_t length = stream->getLength(); michael@0: void* src = malloc(length); michael@0: size_t bytes = stream->read(src, length); michael@0: SkASSERT(bytes == length); michael@0: return [NSData dataWithBytesNoCopy:src length:length freeWhenDone:YES]; michael@0: } michael@0: michael@0: NSData* NSData_dataFromResource(const char cname[], const char csuffix[]) { michael@0: NSBundle* bundle = [NSBundle mainBundle]; michael@0: NSString* name = [NSString stringWithUTF8String:cname]; michael@0: NSString* suffix = [NSString stringWithUTF8String:csuffix]; michael@0: NSString* path = [bundle pathForResource:name ofType:suffix]; michael@0: return [NSData dataWithContentsOfMappedFile:path]; michael@0: } michael@0: michael@0: /////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: SkStream_NSData::SkStream_NSData(NSData* data) { michael@0: fNSData = data; michael@0: [fNSData retain]; michael@0: michael@0: this->setMemory([fNSData bytes], [fNSData length], false); michael@0: } michael@0: michael@0: SkStream_NSData::~SkStream_NSData() { michael@0: [fNSData release]; michael@0: } michael@0: michael@0: SkStream_NSData* SkStream_NSData::CreateFromResource(const char name[], michael@0: const char suffix[]) { michael@0: NSData* data = NSData_dataFromResource(name, suffix); michael@0: return SkNEW_ARGS(SkStream_NSData, (data)); michael@0: } michael@0: