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