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 19SkFILE* 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 43size_t sk_fgetsize(SkFILE* f) 44{ 45 FileInfo fileInfo; 46 47 IFILE_GetInfo((IFile*)f, &fileInfo); 48 return fileInfo.dwSize; 49} 50 51bool sk_frewind(SkFILE* f) 52{ 53 SkASSERT(f); 54 return IFILE_Seek((IFile*)f, _SEEK_START, 0) == SUCCESS; 55} 56 57size_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 73size_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 79void sk_fflush(SkFILE* f) 80{ 81 SkASSERT(f); 82} 83 84void sk_fclose(SkFILE* f) 85{ 86 SkASSERT(f); 87 IFILE_Release((IFile*)f); 88} 89 90#endif 91