OLD | NEW |
| (Empty) |
1 /* libs/graphics/ports/SkOSFile_brew.cpp | |
2 * | |
3 * Copyright 2006, The Android Open Source Project | |
4 * Copyright 2009, Company 100, Inc. | |
5 * | |
6 * Use of this source code is governed by a BSD-style license that can be | |
7 * found in the LICENSE file. | |
8 */ | |
9 | |
10 | |
11 #include "SkOSFile.h" | |
12 | |
13 #ifdef SK_BUILD_FOR_BREW | |
14 | |
15 #include <AEEAppGen.h> | |
16 #include <AEEFile.h> | |
17 #include <AEEStdLib.h> | |
18 | |
19 SkFILE* sk_fopen(const char path[], SkFILE_Flags flags) | |
20 { | |
21 int err; | |
22 OpenFileMode mode; | |
23 IFileMgr* fileMgr; | |
24 IFile* file; | |
25 IShell* shell; | |
26 | |
27 shell = reinterpret_cast<AEEApplet*>(GETAPPINSTANCE())->m_pIShell; | |
28 err = ISHELL_CreateInstance(shell, AEECLSID_FILEMGR, (void**)&fileMgr); | |
29 if (err!= SUCCESS) | |
30 return NULL; | |
31 | |
32 if (flags & kWrite_SkFILE_Flag) | |
33 mode = _OFM_READWRITE; | |
34 else /* kRead_SkFILE_Flag */ | |
35 mode = _OFM_READ; | |
36 | |
37 file = IFILEMGR_OpenFile(fileMgr, path, mode); | |
38 IFILEMGR_Release(fileMgr); | |
39 | |
40 return (SkFILE*)file; | |
41 } | |
42 | |
43 size_t sk_fgetsize(SkFILE* f) | |
44 { | |
45 FileInfo fileInfo; | |
46 | |
47 IFILE_GetInfo((IFile*)f, &fileInfo); | |
48 return fileInfo.dwSize; | |
49 } | |
50 | |
51 bool sk_frewind(SkFILE* f) | |
52 { | |
53 SkASSERT(f); | |
54 return IFILE_Seek((IFile*)f, _SEEK_START, 0) == SUCCESS; | |
55 } | |
56 | |
57 size_t sk_fread(void* buffer, size_t byteCount, SkFILE* f) | |
58 { | |
59 SkASSERT(f); | |
60 if (buffer == NULL) | |
61 { | |
62 int err = IFILE_Seek((IFile*)f, _SEEK_CURRENT, (int)byteCount); | |
63 if (err == EFAILED) { | |
64 SkDEBUGF(("sk_fread: IFILE_Seek(%d) failed returned:%d\n", byteCount
, err)); | |
65 return 0; | |
66 } | |
67 return byteCount; | |
68 } | |
69 else | |
70 return IFILE_Read((IFile*)f, buffer, byteCount); | |
71 } | |
72 | |
73 size_t sk_fwrite(const void* buffer, size_t byteCount, SkFILE* f) | |
74 { | |
75 SkASSERT(f); | |
76 return IFILE_Write((IFile*)f, buffer, byteCount); | |
77 } | |
78 | |
79 void sk_fflush(SkFILE* f) | |
80 { | |
81 SkASSERT(f); | |
82 } | |
83 | |
84 void sk_fclose(SkFILE* f) | |
85 { | |
86 SkASSERT(f); | |
87 IFILE_Release((IFile*)f); | |
88 } | |
89 | |
90 #endif | |
OLD | NEW |