1 /* 2 * Copyright 2010 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "SkStream_NSData.h" 9 10 NSData* NSData_dataWithStream(SkStream* stream) { 11 size_t length = stream->getLength(); 12 void* src = malloc(length); 13 size_t bytes = stream->read(src, length); 14 SkASSERT(bytes == length); 15 return [NSData dataWithBytesNoCopy:src length:length freeWhenDone:YES]; 16 } 17 18 NSData* NSData_dataFromResource(const char cname[], const char csuffix[]) { 19 NSBundle* bundle = [NSBundle mainBundle]; 20 NSString* name = [NSString stringWithUTF8String:cname]; 21 NSString* suffix = [NSString stringWithUTF8String:csuffix]; 22 NSString* path = [bundle pathForResource:name ofType:suffix]; 23 return [NSData dataWithContentsOfMappedFile:path]; 24 } 25 26 /////////////////////////////////////////////////////////////////////////////// 27 28 SkStream_NSData::SkStream_NSData(NSData* data) { 29 fNSData = data; 30 [fNSData retain]; 31 32 this->setMemory([fNSData bytes], [fNSData length], false); 33 } 34 35 SkStream_NSData::~SkStream_NSData() { 36 [fNSData release]; 37 } 38 39 SkStream_NSData* SkStream_NSData::CreateFromResource(const char name[], 40 const char suffix[]) { 41 NSData* data = NSData_dataFromResource(name, suffix); 42 return SkNEW_ARGS(SkStream_NSData, (data)); 43 } 44 45