- // I'm not sure if this is the correct way of suggesting a scale
- // to the client application, but it's the only way I can find.
- int unitsPerInch = (int)(576/scale);
-
- mfPLACEABLEHEADER header;
- header.key = 0x9AC6CDD7L;
- header.hmf = 0;
- header.bbox.xLeft = (int)(x1);
- header.bbox.yTop = (int)(y1);
- header.bbox.xRight = (int)(x2);
- header.bbox.yBottom = (int)(y2);
- header.inch = unitsPerInch;
- header.reserved = 0;
-
- // Calculate checksum
- WORD *p;
- mfPLACEABLEHEADER *pMFHead = &header;
- for (p =(WORD *)pMFHead,pMFHead -> checksum = 0;
- p < (WORD *)&pMFHead ->checksum; ++p)
- pMFHead ->checksum ^= *p;
-
- FILE *fd = fopen(filename.fn_str(), "rb");
- if (!fd) return FALSE;
-
- wxChar tempFileBuf[256];
- wxGetTempFileName(wxT("mf"), tempFileBuf);
- FILE *fHandle = fopen(wxConvFile.cWX2MB(tempFileBuf), "wb");
- if (!fHandle)
- return FALSE;
- fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle);
-
- // Calculate origin and extent
- int originX = x1;
- int originY = y1;
- int extentX = x2 - x1;
- int extentY = (y2 - y1);
-
- // Read metafile header and write
- METAHEADER metaHeader;
- fread((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fd);
-
- if (useOriginAndExtent)
- metaHeader.mtSize += 15;
- else
- metaHeader.mtSize += 5;
+ // I'm not sure if this is the correct way of suggesting a scale
+ // to the client application, but it's the only way I can find.
+ int unitsPerInch = (int)(576/scale);
+
+ mfPLACEABLEHEADER header;
+ header.key = 0x9AC6CDD7L;
+ header.hmf = 0;
+ header.bbox.xLeft = (int)(x1);
+ header.bbox.yTop = (int)(y1);
+ header.bbox.xRight = (int)(x2);
+ header.bbox.yBottom = (int)(y2);
+ header.inch = unitsPerInch;
+ header.reserved = 0;
+
+ // Calculate checksum
+ WORD *p;
+ mfPLACEABLEHEADER *pMFHead = &header;
+ for (p =(WORD *)pMFHead,pMFHead -> checksum = 0; p < (WORD *)&pMFHead ->checksum; ++p)
+ pMFHead ->checksum ^= *p;
+
+ FILE *fd = fopen(filename.fn_str(), "rb");
+ if (!fd)
+ return FALSE;