access to the file is OK in the memory

This commit is contained in:
Edouard Dupin 2011-12-08 22:44:18 +01:00
parent ac984dac7a
commit 8d7a9bedfa
9 changed files with 75 additions and 31 deletions

View File

@ -307,7 +307,7 @@ fileToCpp: tools/fileToCpp.cpp
$(FILE_DIRECTORY)/GeneratedData.cpp: $(DATA_FILE) $(MAKE_DEPENDENCE) fileToCpp $(FILE_DIRECTORY)/GeneratedData.cpp: $(DATA_FILE) $(MAKE_DEPENDENCE) fileToCpp
@echo $(F_BLUE)" (.cpp) "$(DATA_FOLDER)" ==> $@"$(F_NORMALE) @echo $(F_BLUE)" (.cpp) "$(DATA_FOLDER)" ==> $@"$(F_NORMALE)
@#echo ./pngToCpp $@ $(DATA_FILE) @#echo ./pngToCpp $@ $(DATA_FILE)
@./fileToCpp $@ $(DATA_FILE) ./fileToCpp $@ $(DATA_FILE)
.versionFile: .versionFile:

View File

@ -147,10 +147,11 @@ extern "C"
{ {
case 0: case 0:
EWOL_WARNING("Directory mode=FILE path=" << str); EWOL_WARNING("Directory mode=FILE path=" << str);
etk::SetBaseFolder(str); etk::SetBaseFolderData(str);
break; break;
case 1: case 1:
EWOL_WARNING("Directory mode=CACHE path=" << str); EWOL_WARNING("Directory mode=CACHE path=" << str);
etk::SetBaseFolderCache(str);
break; break;
case 2: case 2:
EWOL_WARNING("Directory mode=EXTERNAL_CACHE path=" << str); EWOL_WARNING("Directory mode=EXTERNAL_CACHE path=" << str);
@ -163,7 +164,6 @@ extern "C"
} }
static bool isAlreadyInit = false; static bool isAlreadyInit = false;
void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeApplicationInit( JNIEnv* env) void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeApplicationInit( JNIEnv* env)

View File

@ -164,7 +164,13 @@ etk::String baseFolderCache = "~/.tmp/cache";
// for specific device contraint : // for specific device contraint :
void etk::SetBaseFolderData(const char * folder) void etk::SetBaseFolderData(const char * folder)
{ {
baseFolderData = folder; #ifdef DATA_INTERNAL_BINARY
for(int32_t iii=0; iii<internalDataFilesSize; iii++) {
TK_DEBUG("Internal date : \"" << internalDataFiles[iii].filename << "\" size=" << internalDataFiles[iii].fileLenght);
}
#else
baseFolderData = folder;
#endif
} }
void etk::SetBaseFolderDataUser(const char * folder) void etk::SetBaseFolderDataUser(const char * folder)
{ {
@ -416,7 +422,7 @@ bool etk::File::fOpenRead(void)
if (etk::FILE_TYPE_DATA == m_type) { if (etk::FILE_TYPE_DATA == m_type) {
m_readingOffset = 0; m_readingOffset = 0;
if (m_idInternal >= -1 && m_idInternal < internalDataFilesSize) { if (m_idInternal >= -1 && m_idInternal < internalDataFilesSize) {
TK_DEBUG("Open file : " << GetCompleateName() << " with size=" << internalDataFilesSize << " Octets"); TK_DEBUG("Open file : " << GetCompleateName() << " with size=" << internalDataFiles[m_idInternal].fileLenght << " Octets");
return true; return true;
} }
return false; return false;
@ -478,11 +484,12 @@ char * etk::File::fGets(char * elementLine, int32_t maxData)
{ {
#ifdef DATA_INTERNAL_BINARY #ifdef DATA_INTERNAL_BINARY
char * element = elementLine; char * element = elementLine;
memset(elementLine, 0, maxData);
if (etk::FILE_TYPE_DATA == m_type) { if (etk::FILE_TYPE_DATA == m_type) {
if (m_idInternal >= -1 && m_idInternal < internalDataFilesSize) { if (m_idInternal >= -1 && m_idInternal < internalDataFilesSize) {
// TODO ... // TODO ...
//char * tmpData = internalDataFiles[iii].data + m_readingOffset; //char * tmpData = internalDataFiles[iii].data + m_readingOffset;
if (m_readingOffset>internalDataFilesSize) { if (m_readingOffset>internalDataFiles[m_idInternal].fileLenght) {
element[0] = '\0'; element[0] = '\0';
return NULL; return NULL;
} }
@ -500,12 +507,13 @@ char * etk::File::fGets(char * elementLine, int32_t maxData)
element++; element++;
m_readingOffset++; m_readingOffset++;
// TODO : Understand why this does not work // TODO : Understand why this does not work
/*if (m_readingOffset>internalDataFilesSize) { if (m_readingOffset>internalDataFiles[m_idInternal].fileLenght) {
*element = '\0'; *element = '\0';
return elementLine; return elementLine;
}*/ }
} }
} }
elementLine[0] = '\0';
return NULL; return NULL;
} }
#endif #endif
@ -518,8 +526,8 @@ int32_t etk::File::fRead(void * data, int32_t blockSize, int32_t nbBlock)
if (etk::FILE_TYPE_DATA == m_type) { if (etk::FILE_TYPE_DATA == m_type) {
if (m_idInternal >= -1 && m_idInternal < internalDataFilesSize) { if (m_idInternal >= -1 && m_idInternal < internalDataFilesSize) {
int32_t dataToRead = blockSize * nbBlock; int32_t dataToRead = blockSize * nbBlock;
if (dataToRead + m_readingOffset > internalDataFilesSize) { if (dataToRead + m_readingOffset > internalDataFiles[m_idInternal].fileLenght) {
nbBlock = ((internalDataFilesSize - m_readingOffset) / blockSize); nbBlock = ((internalDataFiles[m_idInternal].fileLenght - m_readingOffset) / blockSize);
dataToRead = blockSize * nbBlock; dataToRead = blockSize * nbBlock;
} }
memcpy(data, &internalDataFiles[m_idInternal].data[m_readingOffset], dataToRead); memcpy(data, &internalDataFiles[m_idInternal].data[m_readingOffset], dataToRead);
@ -544,6 +552,39 @@ int32_t etk::File::fWrite(void * data, int32_t blockSize, int32_t nbBlock)
} }
bool etk::File::fSeek(long int offset, int origin)
{
#ifdef DATA_INTERNAL_BINARY
if (etk::FILE_TYPE_DATA == m_type) {
if (m_idInternal >= -1 && m_idInternal < internalDataFilesSize) {
int32_t positionEnd = 0;
switch(origin) {
case SEEK_END:
positionEnd = internalDataFiles[m_idInternal].fileLenght;
break;
case SEEK_CUR:
positionEnd = m_readingOffset;
break;
default:
positionEnd = 0;
break;
}
positionEnd += offset;
if (positionEnd < 0) {
positionEnd = 0;
} else if (positionEnd > internalDataFiles[m_idInternal].fileLenght) {
positionEnd = internalDataFiles[m_idInternal].fileLenght;
}
m_readingOffset = positionEnd;
return true;
}
return false;
}
#endif
return fseek(m_PointerFile, offset, origin);
}
char * etk::File::GetDirectPointer(void) char * etk::File::GetDirectPointer(void)
{ {
#ifdef DATA_INTERNAL_BINARY #ifdef DATA_INTERNAL_BINARY

View File

@ -90,6 +90,7 @@ namespace etk
char * fGets(char * elementLine, int32_t maxData); char * fGets(char * elementLine, int32_t maxData);
int32_t fRead(void * data, int32_t blockSize, int32_t nbBlock); int32_t fRead(void * data, int32_t blockSize, int32_t nbBlock);
int32_t fWrite(void * data, int32_t blockSize, int32_t nbBlock); int32_t fWrite(void * data, int32_t blockSize, int32_t nbBlock);
bool fSeek(long int offset, int origin);
private : private :
etk::FileType_te m_type; etk::FileType_te m_type;
FILE * m_PointerFile; FILE * m_PointerFile;

View File

@ -76,7 +76,7 @@ namespace ewol
int32_t lineID=1; int32_t lineID=1;
while (NULL != m_filename.fGets(elementLine, 2048) ) while (NULL != m_filename.fGets(elementLine, 2048) )
{ {
EWOL_DEBUG(" Read file Line : " << elementLine); //EWOL_DEBUG(" Read file Line : " << elementLine);
if ( '\n' != elementLine[0] // EOL if ( '\n' != elementLine[0] // EOL
&& '\0' != elementLine[0] // EOF && '\0' != elementLine[0] // EOF
&& '#' != elementLine[0] // Comment line && '#' != elementLine[0] // Comment line

View File

@ -86,44 +86,40 @@ class Bitmap
m_height = 0; m_height = 0;
m_size = 0; m_size = 0;
FILE *File=NULL;
// Get the fileSize ... // Get the fileSize ...
/*if (fileName.Size() < (int32_t)(sizeof(bitmapFileHeader_ts) + sizeof(bitmapInfoHeader_ts) ) ) { /*if (fileName.Size() < (int32_t)(sizeof(bitmapFileHeader_ts) + sizeof(bitmapInfoHeader_ts) ) ) {
EWOL_ERROR("not enought data in the file named=\"" << fileName << "\""); EWOL_ERROR("not enought data in the file named=\"" << fileName << "\"");
return; return;
}*/ }*/
File=fopen(fileName.GetCompleateName().c_str(),"rb"); if(false == fileName.fOpenRead() ) {
if(NULL == File) {
EWOL_ERROR("Can not find the file name=\"" << fileName << "\""); EWOL_ERROR("Can not find the file name=\"" << fileName << "\"");
return; return;
} }
// get the data : // get the data :
if (fread(&m_FileHeader,sizeof(bitmapFileHeader_ts),1,File) != 1) { if (fileName.fRead(&m_FileHeader,sizeof(bitmapFileHeader_ts),1) != 1) {
EWOL_ERROR("error loading file header"); EWOL_ERROR("error loading file header");
fclose(File); fileName.fClose();
return; return;
} }
if (fread(&m_InfoHeader,sizeof(bitmapInfoHeader_ts),1,File) != 1) { if (fileName.fRead(&m_InfoHeader,sizeof(bitmapInfoHeader_ts),1) != 1) {
EWOL_ERROR("error loading file header"); EWOL_ERROR("error loading file header");
fclose(File); fileName.fClose();
return; return;
} }
// TODO : do otherwise ... if(false == fileName.fSeek(m_FileHeader.bfOffBits, SEEK_SET)) {
fseek(File,m_FileHeader.bfOffBits,SEEK_SET);
if(ferror(File)) {
EWOL_ERROR("error with the 'bfOffBits' in the file named=\"" << fileName << "\""); EWOL_ERROR("error with the 'bfOffBits' in the file named=\"" << fileName << "\"");
fclose(File); fileName.fClose();
return; return;
} }
// Check the header error : // Check the header error :
if (m_FileHeader.bfType != 0x4D42) { if (m_FileHeader.bfType != 0x4D42) {
EWOL_ERROR("the file=\"" << fileName << "\" is not a bitmap file ..."); EWOL_ERROR("the file=\"" << fileName << "\" is not a bitmap file ...");
fclose(File); fileName.fClose();
return; return;
} }
if (m_FileHeader.bfReserved != 0x00000000) { if (m_FileHeader.bfReserved != 0x00000000) {
EWOL_ERROR("the bfReserved feald is not at 0 ==> not supported format ..."); EWOL_ERROR("the bfReserved feald is not at 0 ==> not supported format ...");
fclose(File); fileName.fClose();
return; return;
} }
if( m_InfoHeader.biBitCount == 16 if( m_InfoHeader.biBitCount == 16
@ -148,7 +144,7 @@ class Bitmap
m_dataMode = BITS_32_A8R8G8B8; m_dataMode = BITS_32_A8R8G8B8;
} else { } else {
EWOL_ERROR("the biBitCount & biCompression fealds are unknow ==> not supported format ..."); EWOL_ERROR("the biBitCount & biCompression fealds are unknow ==> not supported format ...");
fclose(File); fileName.fClose();;
return; return;
} }
m_width = m_InfoHeader.biWidth; m_width = m_InfoHeader.biWidth;
@ -157,13 +153,13 @@ class Bitmap
if(0 != m_InfoHeader.biSizeImage) if(0 != m_InfoHeader.biSizeImage)
{ {
m_data=new uint8_t[m_InfoHeader.biSizeImage]; m_data=new uint8_t[m_InfoHeader.biSizeImage];
if (fread(m_data,m_InfoHeader.biSizeImage,1,File) != 1){ if (fileName.fRead(m_data,m_InfoHeader.biSizeImage,1) != 1){
EWOL_CRITICAL("Can not read the file with the good size..."); EWOL_CRITICAL("Can not read the file with the good size...");
} }
// allocate the destination data ... // allocate the destination data ...
m_dataGenerate=new uint8_t[m_width*m_height*4]; m_dataGenerate=new uint8_t[m_width*m_height*4];
} }
fclose(File); fileName.fClose();
// need now to generate RGBA data ... // need now to generate RGBA data ...
switch(m_dataMode) switch(m_dataMode)
{ {
@ -358,8 +354,11 @@ int32_t ewol::LoadTexture(etk::File fileName)
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
//--- Mode linear //--- Mode linear
#ifdef __PLATFORM__X11
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
#endif
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, myBitmap.Width(), myBitmap.Height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, myBitmap.Data()); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, myBitmap.Width(), myBitmap.Height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, myBitmap.Data());
LoadedTexture *tmpTex = new LoadedTexture(); LoadedTexture *tmpTex = new LoadedTexture();
if (NULL != tmpTex) { if (NULL != tmpTex) {

View File

@ -93,14 +93,14 @@ void ewol::GetAbsPos(int32_t & x, int32_t & y)
void ewol::StartResizeSystem(void) void ewol::StartResizeSystem(void)
{ {
#if __PLATFORM__ == X11 #ifdef __PLATFORM__X11
guiAbstraction::StartResizeSystem(); guiAbstraction::StartResizeSystem();
#endif #endif
} }
void ewol::StartMoveSystem(void) void ewol::StartMoveSystem(void)
{ {
#if __PLATFORM__ == X11 #ifdef __PLATFORM__X11
guiAbstraction::StartMoveSystem(); guiAbstraction::StartMoveSystem();
#endif #endif
} }

View File

@ -14,8 +14,10 @@ LOCAL_CFLAGS := -D__PLATFORM__Android \
-DEWOL_DEBUG_LEVEL=3 \ -DEWOL_DEBUG_LEVEL=3 \
-DEWOL_VERSION_TAG_NAME="\"UNKNOW-debug\"" \ -DEWOL_VERSION_TAG_NAME="\"UNKNOW-debug\"" \
-DVERSION_BUILD_TIME="\"pasd_heure\"" \ -DVERSION_BUILD_TIME="\"pasd_heure\"" \
-DDATA_INTERNAL_BINARY
LOCAL_SRC_FILES := \ LOCAL_SRC_FILES := \
../Sources/GeneratedData.cpp \
../Sources/Main.cpp \ ../Sources/Main.cpp \
../Sources/base/guiAndroid.cpp \ ../Sources/base/guiAndroid.cpp \
../Sources/tinyXML/tinyxml.cpp \ ../Sources/tinyXML/tinyxml.cpp \

View File

@ -115,13 +115,14 @@ void process(const char *ifname)
fprintf(ofile, "0x%02x,", c); fprintf(ofile, "0x%02x,", c);
n++; n++;
} }
fprintf(ofile, "\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00");
fprintf(ofile, "\n};\n"); fprintf(ofile, "\n};\n");
fprintf(ofile, "long int %s_size = sizeof(%s);\n", buf, buf);
//fprintf(ofileH, "extern unsigned char %s[];\n", buf); //fprintf(ofileH, "extern unsigned char %s[];\n", buf);
//fprintf(ofileH, "extern unsigned long int %s_size;\n", buf); //fprintf(ofileH, "extern unsigned long int %s_size;\n", buf);
char tmpVar[4096]; char tmpVar[4096];
sprintf(tmpVar, " {\"%s\", %s_size , %s},\n", ifname, buf, buf); sprintf(tmpVar, " {\"%s\", %d , %s},\n", ifname, n, buf);
strcat (endTable, tmpVar); strcat (endTable, tmpVar);
fclose(ifile); fclose(ifile);