On Thu, 13 Apr 2006 11:58:02 -0400 Eric Frias efrias@syncad.com wrote:
Due to little-endian/big-endian differences, winelib on Sparc can't read windows metafiles generated on a PC (or on Wine on x86), and conversely PCs can't read metafiles created on a Sparc. It looks like there are a few ways this could be fixed, and I wanted to make sure we don't go about it the wrong way (and that nobody else is working on it).
I think the right thing to do is make the on-disk and in-memory formats always be little-endian. We would only convert the data to big-endian format when it is generated or used. GetMetaFileBitsEx and SetMetaFileBitsEx would return & take the raw data in little-endian format.
I have submitted a patch that fixes creation of on-disk _enhanced_ metafiles a few days ago:
http://article.gmane.org/gmane.comp.emulators.wine.patches/23393
It byteswaps EMF records just for writing to disk. Adding byteswapping for reading from disk seems very easy - just feed the file content to the same byteswapper functions. I think it is a bit more clean than your approach.
-- Ph.