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 10NSData* 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 18NSData* 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 28SkStream_NSData::SkStream_NSData(NSData* data) { 29 fNSData = data; 30 [fNSData retain]; 31 32 this->setMemory([fNSData bytes], [fNSData length], false); 33} 34 35SkStream_NSData::~SkStream_NSData() { 36 [fNSData release]; 37} 38 39SkStream_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