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