⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfutils.cpp

📁 Wxpython Implemented on Windows CE, Source code
💻 CPP
📖 第 1 页 / 共 3 页
字号:
wxXMetaFile::~wxXMetaFile(void)
{
  wxObjectList::compatibility_iterator node = metaRecords.GetFirst();
  while (node)
  {
    wxMetaRecord *rec = (wxMetaRecord *)node->GetData();
    delete rec;
    wxObjectList::compatibility_iterator next = node->GetNext();
    metaRecords.Erase(node);
    node = next;
  }
}

bool wxXMetaFile::SetClipboard(int WXUNUSED(width), int WXUNUSED(height))
{
  return false;
}

bool wxXMetaFile::Play(wxDC *dc)
{
  wxObjectList::compatibility_iterator node = metaRecords.GetFirst();
  while (node)
  {
    wxMetaRecord *rec = (wxMetaRecord *)node->GetData();
    int rdFunction = rec->metaFunction;

    switch (rdFunction)
    {
      case META_SETBKCOLOR:
      {
        break;
      }
      case META_SETBKMODE:
      {
        break;
      }
      case META_SETMAPMODE:
      {
        break;
      }
//      case META_SETROP2:
//      case META_SETRELABS:
//      case META_SETPOLYFILLMODE:
//      case META_SETSTRETCHBLTMODE:
//      case META_SETTEXTCHAREXTRA:
      case META_SETTEXTCOLOR:
      {
        break;
      }
//      case META_SETTEXTJUSTIFICATION:
      case META_SETWINDOWORG:
      {
        break;
      }
      case META_SETWINDOWEXT:
      {
        break;
      }
//      case META_SETVIEWPORTORG:
//      case META_SETVIEWPORTEXT:
//      case META_OFFSETWINDOWORG:
//      case META_SCALEWINDOWEXT:
//      case META_OFFSETVIEWPORTORG:
//      case META_SCALEVIEWPORTEXT:
      case META_LINETO:
      {
        long x1 = rec->param1;
        long y1 = rec->param2;
        dc->DrawLine((long) lastX, (long) lastY, x1, y1);
        break;
      }
      case META_MOVETO:
      {
        lastX = (double)rec->param1;
        lastY = (double)rec->param2;
        break;
      }
      case META_EXCLUDECLIPRECT:
      {
        break;
      }
      case META_INTERSECTCLIPRECT:
      {
        break;
      }
//      case META_ARC: // DO!!!
      case META_ELLIPSE:
      {
        break;
      }
//      case META_FLOODFILL:
//      case META_PIE: // DO!!!
      case META_RECTANGLE:
      {
        dc->DrawRectangle((long)rec->param1, (long)rec->param2,
                          (long)rec->param3 - rec->param1,
                          (long)rec->param4 - rec->param2);
        break;
      }
      case META_ROUNDRECT:
      {
        dc->DrawRoundedRectangle((long)rec->param1, (long)rec->param2,
                          (long)rec->param3 - rec->param1,
                          (long)rec->param4 - rec->param2,
                          (long)rec->param5);
        break;
      }
//      case META_PATBLT:
//      case META_SAVEDC:
      case META_SETPIXEL:
      {
//        rec->param1 = getshort(handle); // x1
//        rec->param2 = getshort(handle); // y1
//        rec->param3 = getint(handle);   // COLORREF
        break;
      }
//      case META_OFFSETCLIPRGN:
      case META_TEXTOUT:
      {
/*
        int count = getshort(handle);
        rec->stringParam = new char[count+1];
        fread((void *)rec->stringParam, sizeof(char), count, handle);
        rec->stringParam[count] = 0;
        rec->param2 = getshort(handle); // Y
        rec->param1 = getshort(handle); // X
*/
        break;
      }
//      case META_BITBLT:
//      case META_STRETCHBLT:
      case META_POLYGON:
      {
/*
        rec->param1 = getshort(handle);
        rec->points = new wxRealPoint[(int)rec->param1];
        for (int i = 0; i < rec->param1; i++)
        {
          rec->points[i].x = getshort(handle);
          rec->points[i].y = getshort(handle);
        }
*/
        break;
      }
      case META_POLYLINE:
      {
/*
        wxMetaRecord *rec = new wxMetaRecord(META_POLYLINE);
        rec->param1 = (long)getshort(handle);
        rec->points = new wxRealPoint[(int)rec->param1];
        for (int i = 0; i < rec->param1; i++)
        {
          rec->points[i].x = getshort(handle);
          rec->points[i].y = getshort(handle);
        }
*/
        break;
      }
//      case META_ESCAPE:
//      case META_RESTOREDC:
//      case META_FILLREGION:
//      case META_FRAMEREGION:
//      case META_INVERTREGION:
//      case META_PAINTREGION:
//      case META_SELECTCLIPREGION: // DO THIS!
      case META_SELECTOBJECT:
      {
/*
        wxMetaRecord *rec = new wxMetaRecord(META_SELECTOBJECT);
        rec->param1 = (long)getshort(handle); // Position of object in gdiObjects list
*/
        break;
      }
//      case META_SETTEXTALIGN:
//      case META_DRAWTEXT:
//      case META_CHORD:
//      case META_SETMAPPERFLAGS:
//      case META_EXTTEXTOUT:
//      case META_SETDIBTODEV:
//      case META_SELECTPALETTE:
//      case META_REALIZEPALETTE:
//      case META_ANIMATEPALETTE:
//      case META_SETPALENTRIES:
//      case META_POLYPOLYGON:
//      case META_RESIZEPALETTE:
//      case META_DIBBITBLT:
//      case META_DIBSTRETCHBLT:
      case META_DIBCREATEPATTERNBRUSH:
      {
/*
        fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle);
*/
        break;
      }
//      case META_STRETCHDIB:
//      case META_EXTFLOODFILL:
//      case META_RESETDC:
//      case META_STARTDOC:
//      case META_STARTPAGE:
//      case META_ENDPAGE:
//      case META_ABORTDOC:
//      case META_ENDDOC:
//      case META_DELETEOBJECT: // DO!!
      case META_CREATEPALETTE:
      {
/*
        wxMetaRecord *rec = new wxMetaRecord(META_CREATEPALETTE);
        fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle);
*/
        break;
      }
      case META_CREATEBRUSH:
      {
/*
        fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle);
*/
        break;
      }
      case META_CREATEPATTERNBRUSH:
      {
/*
        fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle);
*/
        break;
      }
      case META_CREATEPENINDIRECT:
      {
/*
        int msStyle = getshort(handle); // Style: 2 bytes
        int x = getshort(handle); // X:     2 bytes
        int y = getshort(handle); // Y:     2 bytes
        int colorref = getint(handle); // COLORREF 4 bytes

        int style;
        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)wxThePenList->FindOrCreatePen(&colour, x, style);
*/
        break;
      }
      case META_CREATEFONTINDIRECT:
      {
/*
        int lfHeight = getshort(handle);
        int lfWidth = getshort(handle);
        int lfEsc = getshort(handle);
        int lfOrient = getshort(handle);
        int lfWeight = getshort(handle);
        char lfItalic = getc(handle);
        char lfUnderline = getc(handle);
        char lfStrikeout = getc(handle);
        char lfCharSet = getc(handle);
        char lfOutPrecision = getc(handle);
        char lfClipPrecision = getc(handle);
        char lfQuality = getc(handle);
        char lfPitchAndFamily = getc(handle);
        char lfFacename[32];
        fread((void *)lfFacename, sizeof(char), 32, handle);

        int family;
        if (lfPitchAndFamily & FF_MODERN)
          family = wxMODERN;
        else if (lfPitchAndFamily & FF_MODERN)
          family = wxMODERN;
        else if (lfPitchAndFamily & FF_ROMAN)
          family = wxROMAN;
        else if (lfPitchAndFamily & FF_SWISS)
          family = wxSWISS;
        else if (lfPitchAndFamily & FF_DECORATIVE)
          family = wxDECORATIVE;
        else
          family = wxDEFAULT;

        int weight;
        if (lfWeight == 300)
          weight = wxLIGHT;
        else if (lfWeight == 400)
          weight = wxNORMAL;
        else if (lfWeight == 900)
          weight = wxBOLD;
        else weight = wxNORMAL;

        int style;
        if ((bool)lfItalic)
          style = wxITALIC;
        else
          style = wxNORMAL;

        // About how many pixels per inch???
        int logPixelsY = 100;
        int pointSize = (int)(lfHeight*72.0/logPixelsY);

        wxFont *theFont =
          wxTheFontList->FindOrCreateFont(pointSize, family, style, weight, (bool)lfUnderline);

        rec->param1 = (long)theFont;
*/
        break;
      }
      case META_CREATEBRUSHINDIRECT:
      {
/*
        int msStyle = getshort(handle); // Style: 2 bytes
        int colorref = getint(handle);   // COLORREF: 4 bytes
        int hatchStyle = getshort(handle); // Hatch style 2 bytes

        int style;
        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, wxSOLID);
*/
        break;
      }
      case META_CREATEBITMAPINDIRECT:
      {
/*
        fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle);
*/
        break;
      }
      case META_CREATEBITMAP:
      {
/*
        fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle);
*/
        break;
      }
      case META_CREATEREGION:
      {
        dc->DestroyClippingRegion();
/*
        rec->param1 = getshort(handle); // Style: 2 bytes
*/
        break;
      }
      default:
      {
        break;
      }
    }
    node = node->GetNext();
  }
  return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -