Initial
This commit is contained in:
68
image/DIRENTRY.BAK
Normal file
68
image/DIRENTRY.BAK
Normal file
@@ -0,0 +1,68 @@
|
||||
#include <image/direntry.hpp>
|
||||
#include <image/resdrstr.hpp>
|
||||
#include <common/stdio.hpp>
|
||||
|
||||
ImageResourceDirectoryEntry::operator String(void)
|
||||
{
|
||||
String resDirString;
|
||||
|
||||
resDirString.reserve(256);
|
||||
::sprintf(resDirString,"offName:%ld nameIsString:%ld name:%ld resID:%ld offData:%ld offDir:%ld dataIsDir:%ld",
|
||||
offsetName(),nameIsString(),name(),resID(),offsetData(),offsetDirectory(),dataIsDirectory());
|
||||
return resDirString;
|
||||
}
|
||||
|
||||
void ImageResourceDirectoryEntry::read(DWORD resBase,DWORD deltaOffset,PureViewOfFile &pureView)
|
||||
{
|
||||
pureView.read((char*)&((IMAGE_RESOURCE_DIRECTORY_ENTRY&)*this),sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY));
|
||||
pureView.push();
|
||||
if(nameIsString())
|
||||
{
|
||||
ImageResourceDirString resDirString;
|
||||
pureView.push();
|
||||
pureView.seek(resBase+offsetName(),PureViewOfFile::SeekSet);
|
||||
resDirString.read(pureView);
|
||||
mResourceName=resDirString.name();
|
||||
pureView.pop();
|
||||
}
|
||||
if(dataIsDirectory())
|
||||
{
|
||||
if(mResourceName.isNull())mResourceName=getResource(name());
|
||||
// if(!mResourceName.isNull())::OutputDebugString(mResourceName+String("\n"));
|
||||
pureView.seek(resBase+offsetDirectory(),PureViewOfFile::SeekSet);
|
||||
mImageResourceDirectory.read(resBase,deltaOffset,pureView);
|
||||
}
|
||||
else
|
||||
{
|
||||
pureView.seek(resBase+offsetDirectory(),PureViewOfFile::SeekSet);
|
||||
mImageResourceDataEntry.read(deltaOffset,pureView);
|
||||
}
|
||||
pureView.pop();
|
||||
}
|
||||
|
||||
const String &ImageResourceDirectoryEntry::getResource(DWORD resIndex)
|
||||
{
|
||||
if(resIndex>=mResStrings.size())return mResStrings[0];
|
||||
return mResStrings[resIndex];
|
||||
}
|
||||
|
||||
void ImageResourceDirectoryEntry::createResStrings(void)
|
||||
{
|
||||
mResStrings.insert(&String("???_0"));
|
||||
mResStrings.insert(&String("CURSOR"));
|
||||
mResStrings.insert(&String("BITMAP"));
|
||||
mResStrings.insert(&String("ICON"));
|
||||
mResStrings.insert(&String("MENU"));
|
||||
mResStrings.insert(&String("DIALOG"));
|
||||
mResStrings.insert(&String("STRING"));
|
||||
mResStrings.insert(&String("FONTDIR"));
|
||||
mResStrings.insert(&String("FONT"));
|
||||
mResStrings.insert(&String("ACCELERATORS"));
|
||||
mResStrings.insert(&String("RCDATA"));
|
||||
mResStrings.insert(&String("MESSAGETABLE"));
|
||||
mResStrings.insert(&String("GROUP_CURSOR"));
|
||||
mResStrings.insert(&String("???_13"));
|
||||
mResStrings.insert(&String("GROUP_ICON"));
|
||||
mResStrings.insert(&String("???_15"));
|
||||
mResStrings.insert(&String("VERSION"));
|
||||
}
|
||||
Reference in New Issue
Block a user