There are three possible Perforce clients on Windows platforms: p4 (command line), P4Win (Windows-only GUI), and P4V (cross-platform GUI). P4V used to really suck, so I nicknamed it P4Lose. But it's gotten much better over the years and gained some features I really like. A while back Perforce announced that they weren't going to support P4Win any longer. Today there are actual Perforce server features that aren't supported in the P4Win client, so I'm trying to switch to P4V.
The file icon overlays in P4V all look very similar (very small and red) which really slows me down when reviewing a pending integration changelist with hundreds of files. I want to quickly tell where files have been added or deleted (since that may be a sign I integrated some part of the branch I shouldn't have). I want to quickly see where the files that didn't get auto-resolved are so I can do something about it. It all looks kind of the same in P4V. The icon overlays in P4Win are larger and are actually different colors. I want to change the P4V icon overlays to have more visible differences.
So, I found a file that looked promising in the P4V installation (images.rcc). I couldn't find any evidence that this is a standard file format used by anything, but I reverse-engineered enough of it that I think I can modify it safely. I just wrote a quick program to parse it and it dumped out 109 PNG images!
Next step, I'll try modifying one of the images and make sure P4V still works.
In case you were wondering, the images.rcc file consists of:
- A brief header with some offsets into interesting parts of the file.
- A series of resource chunks that all turned out to be PNG images.
- A series of UTF-16 strings that correspond to the original file names of the resources.
- Some more garbage at the end that I haven't bothered to figure out yet, but I assume I won't need to touch it.