X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/59840ba3b16e4baf3228dd79c6b7ae40b55cf488..9c112555198f51fcec71106530cddba95a17f3dc:/contrib/src/ogl/mfutils.cpp diff --git a/contrib/src/ogl/mfutils.cpp b/contrib/src/ogl/mfutils.cpp index 75fd4cdfd1..ae084590fe 100644 --- a/contrib/src/ogl/mfutils.cpp +++ b/contrib/src/ogl/mfutils.cpp @@ -6,7 +6,7 @@ // Created: 12/07/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -27,23 +27,12 @@ #include #include -#include +#include "wx/ogl/ogl.h" + #include static char _buf[1024]; // a temp buffer to use inplace of wxBuffer, which is deprecated. -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; - -static void DecToHex(int dec, char *buf) -{ - int firstDigit = (int)(dec/16.0); - int secondDigit = (int)(dec - (firstDigit*16.0)); - buf[0] = hexArray[firstDigit]; - buf[1] = hexArray[secondDigit]; - buf[2] = 0; -} - // 16-bit unsigned integer static unsigned int getshort(FILE *fp) { @@ -58,9 +47,12 @@ static int getsignedshort(FILE *fp) { int c, c1; c = getc(fp); c1 = getc(fp); +#if 0 + // this is not used value, no need to execute it int testRes = ((unsigned int) c) + (((unsigned int) c1) << 8); +#endif unsigned long res1 = ((unsigned int) c) + (((unsigned int) c1) << 8); - int res = 0; + int res; if (res1 > 32767) res = (int)(res1 - 65536); else @@ -75,20 +67,20 @@ static long getint(FILE *fp) c = getc(fp); c1 = getc(fp); c2 = getc(fp); c3 = getc(fp); long res = (long)((long) c) + (((long) c1) << 8) + - (((long) c2) << 16) + - (((long) c3) << 24); + (((long) c2) << 16) + + (((long) c3) << 24); return res; } /* Placeable metafile header struct mfPLACEABLEHEADER { - DWORD key; // 32-bit - HANDLE hmf; // 16-bit - RECT bbox; // 4x16 bit - WORD inch; // 16-bit - DWORD reserved; // 32-bit - WORD checksum; // 16-bit + DWORD key; // 32-bit + HANDLE hmf; // 16-bit + RECT bbox; // 4x16 bit + WORD inch; // 16-bit + DWORD reserved; // 32-bit + WORD checksum; // 16-bit }; */ @@ -98,9 +90,9 @@ wxMetaRecord::~wxMetaRecord(void) if (stringParam) delete[] stringParam; } -wxXMetaFile::wxXMetaFile(char *file) +wxXMetaFile::wxXMetaFile(const wxChar *file) { - ok = FALSE; + ok = false; top = 0.0; bottom = 0.0; left = 0.0; @@ -119,7 +111,7 @@ wxXMetaFile::wxXMetaFile(char *file) [3] | -> wxPen The handle table works as follows. - When a GDI object is created whilst reading in the + When a GDI object is created while reading in the metafile, the (e.g.) createpen record is added to the first free entry in the handle table. The createpen record's param1 is a pointer to the actual wxPen, and @@ -162,19 +154,19 @@ int AddMetaRecordHandle(wxMetaRecord *record) return (HandleTableSize - 1); } -bool wxXMetaFile::ReadFile(char *file) +bool wxXMetaFile::ReadFile(const wxChar *file) { HandleTableSize = 0; - FILE *handle = fopen(file, "rb"); - if (!handle) return FALSE; + FILE *handle = wxFopen(file, wxT("rb")); + if (!handle) return false; // Read placeable metafile header, if any long key = getint(handle); if (key == (long) 0x9AC6CDD7) { - long hmf = getshort(handle); + /* long hmf = */ getshort(handle); int iLeft, iTop, iRight, iBottom; iLeft = getsignedshort(handle); iTop = getsignedshort(handle); @@ -186,9 +178,9 @@ bool wxXMetaFile::ReadFile(char *file) right = (double)iRight; bottom = (double)iBottom; - int inch = getshort(handle); - long reserved = getint(handle); - int checksum = getshort(handle); + /* int inch = */ getshort(handle); + /* long reserved = */ getint(handle); + /* int checksum = */ getshort(handle); /* double widthInUnits = (double)right - left; double heightInUnits = (double)bottom - top; @@ -204,22 +196,22 @@ bool wxXMetaFile::ReadFile(char *file) if (mtType != 1 && mtType != 2) { fclose(handle); - return FALSE; + return false; } - int mtHeaderSize = getshort(handle); + /* int mtHeaderSize = */ getshort(handle); int mtVersion = getshort(handle); if (mtVersion != 0x0300 && mtVersion != 0x0100) { fclose(handle); - return FALSE; + return false; } - long mtSize = getint(handle); - int mtNoObjects = getshort(handle); - long mtMaxRecord = getint(handle); - int mtNoParameters = getshort(handle); + /* long mtSize = */ getint(handle); + /* int mtNoObjects = */ getshort(handle); + /* long mtMaxRecord = */ getint(handle); + /* int mtNoParameters = */ getshort(handle); while (!feof(handle)) { @@ -381,8 +373,8 @@ bool wxXMetaFile::ReadFile(char *file) { wxMetaRecord *rec = new wxMetaRecord(META_TEXTOUT); int count = getshort(handle); - rec->stringParam = new char[count+1]; - fread((void *)rec->stringParam, sizeof(char), count, handle); + rec->stringParam = new wxChar[count+1]; + fread((void *)rec->stringParam, sizeof(wxChar), count, handle); rec->stringParam[count] = 0; rec->param2 = getshort(handle); // Y rec->param1 = getshort(handle); // X @@ -479,7 +471,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } // case META_STRETCHDIB: @@ -504,7 +496,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } case META_CREATEBRUSH: @@ -514,7 +506,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } case META_CREATEPATTERNBRUSH: @@ -524,7 +516,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } case META_CREATEPENINDIRECT: @@ -532,7 +524,7 @@ bool wxXMetaFile::ReadFile(char *file) wxMetaRecord *rec = new wxMetaRecord(META_CREATEPENINDIRECT); int msStyle = getshort(handle); // Style: 2 bytes int x = getshort(handle); // X: 2 bytes - int y = getshort(handle); // Y: 2 bytes + /* int y = */ getshort(handle); // Y: 2 bytes long colorref = getint(handle); // COLORREF 4 bytes int style; @@ -550,7 +542,7 @@ bool wxXMetaFile::ReadFile(char *file) gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); // For some reason, the size of this record is sometimes 9 words!!! // instead of the usual 8. So read 2 characters extra. @@ -564,18 +556,18 @@ bool wxXMetaFile::ReadFile(char *file) { wxMetaRecord *rec = new wxMetaRecord(META_CREATEFONTINDIRECT); int lfHeight = getshort(handle); // 2 bytes - int lfWidth = getshort(handle); // 2 bytes - int lfEsc = getshort(handle); // 2 bytes - int lfOrient = getshort(handle); // 2 bytes + /* int lfWidth = */ getshort(handle); // 2 bytes + /* int lfEsc = */ getshort(handle); // 2 bytes + /* int lfOrient = */ getshort(handle); // 2 bytes int lfWeight = getshort(handle); // 2 bytes - char lfItalic = getc(handle); // 1 byte - char lfUnderline = getc(handle); // 1 byte - char lfStrikeout = getc(handle); // 1 byte - char lfCharSet = getc(handle); // 1 byte - char lfOutPrecision = getc(handle); // 1 byte - char lfClipPrecision = getc(handle); // 1 byte - char lfQuality = getc(handle); // 1 byte - char lfPitchAndFamily = getc(handle); // 1 byte (18th) + char lfItalic = (char)getc(handle); // 1 byte + char lfUnderline = (char)getc(handle); // 1 byte + /* char lfStrikeout = */ getc(handle); // 1 byte + /* char lfCharSet = */ getc(handle); // 1 byte + /* char lfOutPrecision = */ getc(handle); // 1 byte + /* char lfClipPrecision = */ getc(handle); // 1 byte + /* char lfQuality = */ getc(handle); // 1 byte + char lfPitchAndFamily = (char)getc(handle); // 1 byte (18th) char lfFacename[32]; // Read the rest of the record, which is total record size // minus the number of bytes already read (18 record, 6 metarecord @@ -622,7 +614,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } case META_CREATEBRUSHINDIRECT: @@ -661,25 +653,33 @@ bool wxXMetaFile::ReadFile(char *file) } break; } +#if PS_DOT != BS_HATCHED + /* ABX 30.12.2003 */ + /* in microsoft/include/wingdi.h both are the same */ + /* in fact I'm not sure why pen related PS_XXX and */ + /* BS_XXX constants are all mixed into single style */ + case PS_DOT: + style = wxDOT; + break; +#endif + case PS_DASH: + style = wxSHORT_DASH; + break; + case PS_NULL: + style = wxTRANSPARENT; + break; case BS_SOLID: default: style = wxSOLID; break; } - if (msStyle == PS_DOT) - style = wxDOT; - else if (msStyle == PS_DASH) - style = wxSHORT_DASH; - else if (msStyle == PS_NULL) - style = wxTRANSPARENT; - else style = wxSOLID; wxColour colour(GetRValue(colorref), GetGValue(colorref), GetBValue(colorref)); rec->param1 = (long)wxTheBrushList->FindOrCreateBrush(colour, style); metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } case META_CREATEBITMAPINDIRECT: @@ -690,7 +690,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } case META_CREATEBITMAP: @@ -701,7 +701,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } case META_CREATEREGION: @@ -712,7 +712,7 @@ bool wxXMetaFile::ReadFile(char *file) metaRecords.Append(rec); gdiObjects.Append(rec); AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); + rec->param2 = (long)(gdiObjects.GetCount() - 1); break; } default: @@ -723,33 +723,33 @@ bool wxXMetaFile::ReadFile(char *file) } } fclose(handle); - return TRUE; + return true; } wxXMetaFile::~wxXMetaFile(void) { - wxNode *node = metaRecords.First(); + wxObjectList::compatibility_iterator node = metaRecords.GetFirst(); while (node) { - wxMetaRecord *rec = (wxMetaRecord *)node->Data(); + wxMetaRecord *rec = (wxMetaRecord *)node->GetData(); delete rec; - wxNode *next = node->Next(); - delete node; + wxObjectList::compatibility_iterator next = node->GetNext(); + metaRecords.Erase(node); node = next; } } -bool wxXMetaFile::SetClipboard(int width, int height) +bool wxXMetaFile::SetClipboard(int WXUNUSED(width), int WXUNUSED(height)) { - return FALSE; + return false; } bool wxXMetaFile::Play(wxDC *dc) { - wxNode *node = metaRecords.First(); + wxObjectList::compatibility_iterator node = metaRecords.GetFirst(); while (node) { - wxMetaRecord *rec = (wxMetaRecord *)node->Data(); + wxMetaRecord *rec = (wxMetaRecord *)node->GetData(); int rdFunction = rec->metaFunction; switch (rdFunction) @@ -1080,8 +1080,8 @@ bool wxXMetaFile::Play(wxDC *dc) break; } } - node = node->Next(); + node = node->GetNext(); } - return TRUE; + return true; }