69 lines
2.2 KiB
Plaintext
69 lines
2.2 KiB
Plaintext
#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"));
|
|
}
|