예제 #1
0
static void PaintScreen()
{
  if(_pdpDrawPort==NULL) {
    return;
  }
  _pdpDrawPort->SetAsCurrent();
  // clear browsing window
  _pdpDrawPort->FillZBuffer( ZBUF_BACK);
  _pdpDrawPort->Fill( C_GRAY | CT_OPAQUE);

  if(_pfdCurrentFont!=NULL && _pfdCurrentFont->fd_ptdTextureData!=NULL && _ptdGrid!=NULL) {
    PIX pixWidth = _pfdCurrentFont->fd_ptdTextureData->GetPixWidth();
    PIX pixHeight = _pfdCurrentFont->fd_ptdTextureData->GetPixHeight();

    PIXaabbox2D rectPict;
    rectPict = PIXaabbox2D( PIX2D(0, 0), PIX2D(pixWidth, pixHeight));
    if(_bShowTexture) {
      // Show texture
      _toPreview.SetData(_pfdCurrentFont->fd_ptdTextureData);
      _pdpDrawPort->PutTexture(&_toPreview,rectPict);
      // if grid must be shown
      if(_bShowGrid) {
        // Show character grid
        _toPreview.SetData(_ptdGrid);
        _pdpDrawPort->PutTexture(&_toPreview,rectPict);
      }
      // Show texture grid
      _pdpDrawPort->DrawLine(0,0,pixWidth,0,0xFFFF00FF);
      _pdpDrawPort->DrawLine(0,0,0,pixHeight,0xFFFF00FF);
      _pdpDrawPort->DrawLine(0,pixHeight,pixWidth,pixHeight,0xFFFF00FF);
      _pdpDrawPort->DrawLine(pixWidth,0,pixWidth,pixHeight,0xFFFF00FF);
      _toPreview.SetData(NULL);
    } else {
      char strSampleText[2048];
      GetDlgItemText(_hWnd,IEC_SAMPLE_TEXT,strSampleText,2047);
      _pdpDrawPort->SetFont( _pfdCurrentFont);
      _pdpDrawPort->PutText( strSampleText, 0, 0, 0xFFFFFFFF);
    }
  }

  if(_pvpViewPort!=NULL) {
    // swap it
    _pvpViewPort->SwapBuffers();
  }
}
예제 #2
0
void CMGTrigger::Render(CDrawPort *pdp)
{
  SetFontMedium(pdp);

  PIXaabbox2D box = FloatBoxToPixBox(pdp, mg_boxOnScreen);
  PIX pixIL = box.Min()(1) + box.Size()(1)*0.45f;
  PIX pixIR = box.Min()(1) + box.Size()(1)*0.55f;
  PIX pixJ = box.Min()(2);

  COLOR col = GetCurrentColor();
  if (!mg_bVisual || mg_strValue == "") {
    CTString strValue = mg_strValue;
    if (mg_bVisual) {
      strValue = TRANS("none");
    }

    if (mg_iCenterI == -1) {
      pdp->PutText(mg_strLabel, box.Min()(1), pixJ, col);
      pdp->PutTextR(strValue, box.Max()(1), pixJ, col);
    } else {
      pdp->PutTextR(mg_strLabel, pixIL, pixJ, col);
      pdp->PutText(strValue, pixIR, pixJ, col);
    }
  } else {
    CTString strLabel = mg_strLabel + ": ";
    pdp->PutText(strLabel, box.Min()(1), pixJ, col);
    CTextureObject to;
    try {
      to.SetData_t(mg_strValue);
      CTextureData *ptd = (CTextureData *)to.GetData();
      PIX pixSize = box.Size()(2);
      PIX pixCX = box.Max()(1) - pixSize / 2;
      PIX pixCY = box.Center()(2);
      pdp->PutTexture(&to, PIXaabbox2D(
        PIX2D(pixCX - pixSize / 2, pixCY - pixSize / 2),
        PIX2D(pixCX - pixSize / 2 + pixSize, pixCY - pixSize / 2 + pixSize)), C_WHITE | 255);
    } catch (char *strError) {
      CPrintF("%s\n", strError);
    }
    to.SetData(NULL);
  }
}