public void injectBitmap(int id, byte[] bitmapFileData) { DirectoryEntry subDirBmp = myRoot.findSubDir("IRD2").findSubDir("IRD" + id); RawResource bmpRes = subDirBmp.getRawResource(0); // strip off BITMAPFILEHEADER byte[] bitmapResourceData = new byte[bitmapFileData.length - 14]; System.arraycopy(bitmapFileData, 14, bitmapResourceData, 0, bitmapResourceData.length); bmpRes.setBytes(bitmapResourceData); }
public void load() throws IOException { RandomAccessFile stream = new RandomAccessFile(myTemplate, "r"); ExeReader formatReader = new ExeReader(myTemplate.getName(), ExeFormat.UNKNOWN); formatReader.read(stream); stream.seek(0L); myReader = new ExeReader(myTemplate.getName(), formatReader.getExeFormat()); myReader.read(stream); stream.close(); SectionReader sectionReader = myReader.getSectionReader(".rsrc"); ResourceSectionReader resourceReader = (ResourceSectionReader) sectionReader.getMember(".rsrc"); myRoot = resourceReader.getRoot(); DirectoryEntry subDir = myRoot.findSubDir("IRD6"); myStringTableDirectory = new StringTableDirectory(subDir); RawResource versionInfoResource = getVersionInfoResource(); ByteArrayInputStream bytesStream = new ByteArrayInputStream(versionInfoResource.getBytes().getBytes()); myVersionInfo = new VersionInfo(); myVersionInfo.read(new OffsetTrackingInputStream(new DataInputStream(bytesStream))); }
private RawResource getVersionInfoResource() { DirectoryEntry viDir = myRoot.findSubDir("IRD16").findSubDir("IRD1"); return viDir.getRawResource(0); }
public void injectBitmap(int id, byte[] bitmapData) { DirectoryEntry subDirBmp = myRoot.findSubDir("IRD2").findSubDir("IRD" + id); RawResource bmpRes = subDirBmp.getRawResource(0); bmpRes.setBytes(bitmapData); }