Files
Work/image/DIRENTRY.BAK
2024-08-07 09:16:27 -04:00

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"));
}