Example #1
2
void DrawBitmap(HDC hdc, int x, int y, HBITMAP hBitmap)
{
	HBITMAP hOldbm;
	HDC hMemDC;
	BITMAP bm;
	POINT ptSize, ptOrg;

	hMemDC = CreateCompatibleDC(hdc);
	hOldbm = (HBITMAP)SelectObject(hMemDC, hBitmap);
	if (hOldbm)
	{
		SetMapMode(hMemDC, GetMapMode(hdc));
		GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
		ptSize.x = bm.bmWidth;
		ptSize.y = bm.bmHeight;

		DPtoLP(hdc, &ptSize, 1);

		ptOrg.x = 0;
		ptOrg.y = 0;

		DPtoLP(hMemDC, &ptOrg, 1);

		BitBlt(hdc, x, y, ptSize.x, ptSize.y, hMemDC, ptOrg.x, ptOrg.y, SRCCOPY);

		SelectObject(hMemDC, hOldbm);
	}

	DeleteDC(hMemDC);
}
/*
	CWallBrowserStretchView()
*/
CWallBrowserStretchView::CWallBrowserStretchView()
{
	m_pWinAppEx = (CWinAppEx*)AfxGetApp();
	m_bLoaded = FALSE;
	m_bHavePicture = FALSE;
	memset(m_szFileName,'\0',sizeof(m_szFileName));
	m_nViewType = m_pWinAppEx->m_Config.GetNumber(WALLBROWSER_OPTIONS_KEY,WALLBROWSER_VIEWTYPE_KEY);
	if(m_nViewType==VIEWTYPE_SCROLL)
	{
		// modalita' visualizzazione (centrato/isotropic)
		SetCenterMode(TRUE);
		SetMapMode(MM_ANISOTROPIC);
		SetCursorZoomMode(CURSOR_MODE_BYCLICK);
	}
	else if(m_nViewType==VIEWTYPE_STRETCH)
	{
		// modalita' visualizzazione (centrato/text)
		SetCenterMode(FALSE);
		SetMapMode(MM_TEXT);
		SetCursorZoomMode(CURSOR_MODE_NONE);
	}
	m_nDrawMode = m_pWinAppEx->m_Config.GetNumber(WALLBROWSER_OPTIONS_KEY,WALLBROWSER_DRAWMODE_KEY);
	m_rcInvalid.SetRect(-1,-1,-1,-1);
	m_rcClient.SetRect(-1,-1,-1,-1);
	m_ImageOperation.SetImage(NULL);
	m_ImageDraw.SetImage(NULL);
	m_bRebuildPalette = FALSE; // mettere a TRUE con le operazioni che cambiano l'immagine (ad es. grayscale)
	memset(m_szStatus,'\0',sizeof(m_szStatus));
	m_pMainFrameStatusBar = NULL;
	m_nUndoLevel = 0;
	m_nRedoLevel = 0;
	m_nLastOperation = -1;
	m_nRedo = -1;
}
Example #3
0
void SetHIMETRICtoDP(HDC hdc, SIZE* sz)
{
	POINT pt;
	int nMapMode = GetMapMode(hdc);
	if (nMapMode < MM_ISOTROPIC && nMapMode != MM_TEXT) {
		// when using a constrained map mode, map against physical inch
		SetMapMode(hdc, MM_HIMETRIC);
		pt.x = sz->cx;
		pt.y = sz->cy;
		LPtoDP(hdc, &pt, 1);
		sz->cx = pt.x;
		sz->cy = pt.y;
		SetMapMode(hdc, nMapMode);
	}
	else {
		// map against logical inch for non-constrained mapping modes
		int cxPerInch, cyPerInch;
		cxPerInch = GetDeviceCaps(hdc, LOGPIXELSX);
		cyPerInch = GetDeviceCaps(hdc, LOGPIXELSY);
		sz->cx = MulDiv(sz->cx, cxPerInch, HIMETRIC_INCH);
		sz->cy = MulDiv(sz->cy, cyPerInch, HIMETRIC_INCH);
	}

	pt.x = sz->cx;
	pt.y = sz->cy;
	DPtoLP(hdc, &pt, 1);
	sz->cx = pt.x;
	sz->cy = pt.y;
}
	RenderContext::RenderContext(Widget* widget)
		: widget_(widget)
		, gdi_(NULL)
	{
		HDC wnd_dc = BeginPaint(widget->hwnd(), &ps_);
		SetGraphicsMode(wnd_dc, GM_ADVANCED);
		SetMapMode(wnd_dc, MM_TEXT);
		SetBkMode(wnd_dc, OPAQUE);
		//SetBkMode(wnd_dc, TRANSPARENT);

		dc_ = ::CreateCompatibleDC(wnd_dc);
		//dc_ = wnd_dc;
		SetGraphicsMode(dc_, GM_ADVANCED);
		SetMapMode(dc_, MM_TEXT);
		SetBkMode(dc_, OPAQUE);
		//SetMapMode(dc_, MM_LOENGLISH);
		//SetWorldTransform(dc_, &Matrix().ToXFORM());

		RECT rc;
		::GetClientRect(widget->hwnd(), &rc);
		rect_ = rc;

		bitmap_ = CreateDIB(rect_.width(), rect_.height());
		bitmap_prev_ = (HBITMAP)::SelectObject(dc_, bitmap_);
		gdi_ = new Gdiplus::Graphics(dc_);
	}
 int TooltipManagerWin::CalcTooltipHeight()
 {
     // Ask the tooltip for it's font.
     int height;
     HFONT hfont = reinterpret_cast<HFONT>(
         SendMessage(tooltip_hwnd_, WM_GETFONT, 0, 0));
     if(hfont != NULL)
     {
         HDC dc = GetDC(tooltip_hwnd_);
         HFONT previous_font = static_cast<HFONT>(SelectObject(dc, hfont));
         int last_map_mode = SetMapMode(dc, MM_TEXT);
         TEXTMETRIC font_metrics;
         GetTextMetrics(dc, &font_metrics);
         height = font_metrics.tmHeight;
         // To avoid the DC referencing font_handle_, select the previous font.
         SelectObject(dc, previous_font);
         SetMapMode(dc, last_map_mode);
         ReleaseDC(NULL, dc);
     }
     else
     {
         // Tooltip is using the system font. Use gfx::Font, which should pick
         // up the system font.
         height = gfx::Font().GetHeight();
     }
     // Get the margins from the tooltip
     RECT tooltip_margin;
     SendMessage(tooltip_hwnd_, TTM_GETMARGIN, 0, (LPARAM)&tooltip_margin);
     return height + tooltip_margin.top + tooltip_margin.bottom;
 }
Example #6
0
void ALMAPI TABLE_WLAY::Draw(HDC hDC, RECT *clipRect)
  {
  RECT tmpRect;
  BOOL bIntersect;
  bIntersect = IntersectRect(&tmpRect, clipRect, &m_rcItem);

  tmpRect = m_rcItem; // always draw to the entire
                      // visual rect

  if (bIntersect)
    {
    OWndLStoDS(m_oiParent, (LPPOINT)&tmpRect, 2);

    int saveDC = SaveDC(hDC);
    int mode = SetMapMode(hDC, MM_TEXT);
    table->WIDR_Draw(hDC, &tmpRect); //widr->rectPtr);
    SetMapMode(hDC, mode); // restore LOMETRIC mode
    RestoreDC(hDC, saveDC);

    if (table->VertScroll())
      {
      UpdateWindow(table->hVertScroll);
      }
    if (table->HorzScroll())
      {
      UpdateWindow(table->hHorzScroll);
      }
    }
  }
Example #7
0
void __fastcall TTaeQRRichText::Print(int OfsX, int OfsY){
    TFormatRange        Range;
    int                 LogX,LogY,TextLength,OldMapMode;
    bool                HasExpanded;
    TTaeRichEdit*       ARichEdit;
    Extended            Expanded;

    ARichEdit=ParentRichEdit==NULL?FRichEdit:ParentRichEdit;
    {
        register i=sizeof(TFormatRange);
        register char *c=(char *) &Range;
        while(i--) *c++=0;
    }
    Range.hdc= ParentReport->QRPrinter->Canvas->Handle;
    Range.hdcTarget= Range.hdc;
    LogX= GetDeviceCaps(Range.hdc, LOGPIXELSX);
    LogY= GetDeviceCaps(Range.hdc, LOGPIXELSY);
    Range.rc=Rect(QRPrinter->XPos(OfsX + Size->Left) * 1440 / LogX,
                  QRPrinter->YPos(OfsY + Size->Top) * 1440 / LogY,
                  QRPrinter->XPos(OfsX + Size->Width + Size->Left) * 1440 / LogX,
                  QRPrinter->YPos(OfsY + Size->Height + Size->Top) * 1440 / LogY);
    Range.rcPage=Rect(0,0,
                      QRPrinter->XSize(QRPrinter->PaperWidth) * 1440 / LogX,
                      QRPrinter->YSize(QRPrinter->PaperLength) * 1440 / LogY);

    if(PrintFinished) LastChar= 0;
    HasExpanded=false;
    Expanded=0;
    TextLength=ARichEdit->GetTextLen();
    Range.chrg.cpMax= -1;
    Range.chrg.cpMin= LastChar;
    OldMapMode= SetMapMode(Range.hdc, MM_TEXT);

    SendMessage(ARichEdit->Handle, EM_FORMATRANGE,0,0);

    LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 0, (long)&Range);
    if(LastChar<TextLength&&AutoStretch&&TextLength>0&&Parent->InheritsFrom(__classid(TQRCustomBand))){
        PrintFinished=false;
        while(LastChar<=TextLength&&((TQRCustomBand*)Parent)->CanExpand(50)){
          ((TQRCustomBand*)Parent)->ExpandBand(50,Expanded,HasExpanded);
          Range.rc.bottom = QRPrinter->YPos(OfsY+Size->Top+Size->Height+Expanded) * 1440 / LogY;
          LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 0, (long)&Range);
        }
        LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 1, (long)&Range);
        if(LastChar>=TextLength||LastChar==-1){
            LastChar=TextLength;
            PrintFinished=true;
        }
    } else {
        LastChar= SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 1, (long)&Range);
        PrintFinished=true;
        inherited::Print(OfsX,OfsY);
    }
    SetMapMode(ParentReport->QRPrinter->Canvas->Handle, OldMapMode);
    if(PrintFinished)
      SendMessage(ARichEdit->Handle, EM_FORMATRANGE, 0, 0);
}
Example #8
0
void CLCDGfx::DrawText(int nX, int nY, LPCTSTR sText)
{
    // map mode text, with transparency
    int nOldMapMode = SetMapMode(m_hDC, MM_TEXT);
    int nOldBkMode = SetBkMode(m_hDC, TRANSPARENT); 
    
    ::TextOut(m_hDC, nX, nY, sText, (int)_tcslen(sText));
    
    // restores
    SetMapMode(m_hDC, nOldMapMode);
    SetBkMode(m_hDC, nOldBkMode);

}
Example #9
0
static void CalculateWindowHeight(void)
{
   HDC hdc = GetDC(GetDesktopWindow());
   int oldMapMode = SetMapMode(hdc,MM_TEXT);
   HFONT hOldFont = (HFONT) SelectObject(hdc,GetFont(FONT_INPUT));
   TEXTMETRIC tm;

   GetTextMetrics(hdc,&tm);
   inputHeight = tm.tmHeight + tm.tmInternalLeading;
   SelectObject(hdc,hOldFont);
   SetMapMode(hdc,oldMapMode);
   ReleaseDC(GetDesktopWindow(),hdc);
}
Example #10
0
void BDRAW_TransparentBlt (HDC hdc, COLORREF clrTran)
    {
//
// Method #1 -- By Jeff Prosise
//
    HDC hdcImage, hdcAnd, hdcXor, hdcTemp ;
    HBITMAP htAnd, htXor, htTemp ;
    HBITMAP htOldImage, htOldAnd, htOldXor, htOldTemp ;
    int nImage, nAnd, nXor, nTemp ;

    hdcImage   = CreateCompatibleDC (hdc) ;
    htOldImage = (HBITMAP) SelectObject (hdcImage, BoardCfg.htTemp) ;
    nImage     = SetMapMode (hdcImage, GetMapMode (hdc)) ;

    hdcAnd = CreateCompatibleDC (hdc) ;
    nAnd   = SetMapMode (hdcAnd, GetMapMode (hdc)) ;
    htAnd  = CreateBitmap (BoardCfg.nss, BoardCfg.nss, 1, 1, NULL) ;
    htOldAnd = (HBITMAP) SelectObject (hdcAnd, htAnd) ;

    SetBkColor (hdcImage, clrTran) ;
    BitBlt (hdcAnd, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcImage, 0, 0, SRCCOPY) ;

    hdcXor   = CreateCompatibleDC (hdc) ;
    nXor     = SetMapMode (hdcXor, GetMapMode (hdc)) ;
    htXor    = CreateCompatibleBitmap (hdcImage, BoardCfg.nss, BoardCfg.nss) ;
    htOldXor = (HBITMAP) SelectObject (hdcXor, htXor) ;

    BitBlt (hdcXor, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcImage, 0, 0, SRCCOPY ) ;
    BitBlt (hdcXor, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcAnd,   0, 0, 0x220326) ;

    hdcTemp   = CreateCompatibleDC (hdc) ;
    nTemp     = SetMapMode (hdcTemp, GetMapMode (hdc)) ;
    htTemp    = CreateCompatibleBitmap (hdcImage, BoardCfg.nss, BoardCfg.nss) ;
    htOldTemp = (HBITMAP) SelectObject (hdcTemp, htTemp) ;

    BitBlt (hdcTemp, 0, 0, BoardCfg.nss, BoardCfg.nss, hdc,     0, 0, SRCCOPY  ) ;
    BitBlt (hdcTemp, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcAnd,  0, 0, SRCAND   ) ;
    BitBlt (hdcTemp, 0, 0, BoardCfg.nss, BoardCfg.nss, hdcXor,  0, 0, SRCINVERT) ;
    BitBlt (hdc,     0, 0, BoardCfg.nss, BoardCfg.nss, hdcTemp, 0, 0, SRCCOPY  ) ;

    SetMapMode (hdcTemp,  nTemp ) ;
    SetMapMode (hdcXor,   nXor  ) ;
    SetMapMode (hdcAnd,   nAnd  ) ;
    SetMapMode (hdcImage, nImage) ;

    SelectObject (hdcTemp,  htOldTemp ) ;
    SelectObject (hdcXor,   htOldXor  ) ;
    SelectObject (hdcAnd,   htOldAnd  ) ;
    SelectObject (hdcImage, htOldImage) ;

    DeleteObject (hdcTemp ) ;
    DeleteObject (hdcXor  ) ;
    DeleteObject (hdcAnd  ) ;
    DeleteObject (hdcImage) ;

    DeleteObject (htTemp ) ;
    DeleteObject (htXor  ) ;
    DeleteObject (htAnd  ) ;
    }
Example #11
0
/////////////////////////////////////////////////////////////////////
// TMapDC
// ------
//
void
TMapDC::SetupOrg()
{
#ifdef WINDOWS_SCALING
	// Set window and viewport scale and extension
	SetMapMode (MM_ANISOTROPIC);
	SetViewportOrg (TPoint(ScrCenterX, ScrCenterY));
	SetWindowOrg (TPoint(OrigX, OrigY)) ;
	if ( Scale > 1.0 )
	{
		// dc.SetWindowExt (TSize(ScrMaxX, ScrMaxY));
		// dc.SetViewportExt (TSize(ScrMaxX * MUL_SCALE, -ScrMaxY * MUL_SCALE));
		SetWindowExt (TSize(1, 1));
		SetViewportExt (TSize(MUL_SCALE, -MUL_SCALE));
	}
	else if (Scale <= 1.0 )
	{
		SetWindowExt (TSize(ScrMaxX * DIV_SCALE, ScrMaxY * DIV_SCALE));
		SetViewportExt (TSize(ScrMaxX, -ScrMaxY));
	}

	/*
	for (int x = MIN_MAP_X ; x <= MAX_MAP_X ; x+=1000)
		for (SHORT y = MIN_MAP_Y ; y <= MAX_MAP_Y ; y+=1000)
		{
			char msg[80];
			wsprintf (msg,"(%d:%d)", x/1000, y/1000);
			dc.TextOut (x, y, msg);
		}
	*/

#endif
}
Example #12
0
void WinPaint::paint(HDC hdc){

	HPEN hP;    //¶¨Òå»­±Ê¾ä±ú
	HBRUSH  hB;   //¶¨Òå»­Ë¢¾ä±ú

	SetMapMode(hdc,MM_TEXT); 
	hB=CreateSolidBrush(RGB(255,255,255));
	SelectObject(hdc,hB);
	Rectangle(hdc,0,0,2000,2000);

	hP=CreatePen(PS_SOLID,1,RGB(255,0,0));
	SelectObject(hdc,hP);
	DeleteObject(hB);
	DeleteObject(hP);
	for(unsigned i = 0; i < roles.size(); i++){
		hB=CreateSolidBrush(RGB(i*37 % 255,i*111 % 255,i*153 % 255));
		SelectObject(hdc,hB);
		RECT rect = getRect(roles[i]->getAABB());
		Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);
		DeleteObject(hB);
	}
	hP=CreatePen(PS_SOLID,1,RGB(0,0,255));
	hB=CreateHatchBrush(HS_CROSS,RGB(0,255,0));//ÂÌÉ«Íø×´

	SelectObject(hdc,hP);
	SelectObject(hdc,hB); //¸üл­Ë¢£¬Óá°ÂÌÉ«Íø×´¡±
	for(unsigned i = 0; i < houses.size(); i++){
		RECT rect = getRect(houses[i]->getAABB());
		Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);
	}
	DeleteObject(hB);
	DeleteObject(hP);
}
Example #13
0
// petzold, pp 621-622
void DrawBitmap(HDC hdc, HBITMAP hBitmap, int xStart, int yStart)
	{
	BITMAP bm;
	HDC hdcMem;
	POINT ptSize, ptOrg;

	hdcMem = CreateCompatibleDC(hdc);
	SelectObject(hdcMem, hBitmap);
	SetMapMode(hdcMem, GetMapMode(hdc));

	GetObject(hBitmap, sizeof(BITMAP), (LPSTR) &bm);

	ptSize.x = bm.bmWidth;
	ptSize.y = bm.bmHeight;
	DPtoLP(hdc, &ptSize, 1);

	ptOrg.x = 0;
	ptOrg.y = 0;
	DPtoLP(hdcMem, &ptOrg, 1);

	BitBlt(hdc, xStart, yStart, ptSize.x, ptSize.y, hdcMem, ptOrg.x, ptOrg.y,
			SRCCOPY);

	DeleteDC(hdcMem);
	}
Example #14
0
void PageGDICalls (HDC hdcPrn, int cxPage, int cyPage)
{
     static TCHAR szTextStr[] = TEXT ("Hello, Printer!") ;
     
     Rectangle (hdcPrn, 0, 0, cxPage, cyPage) ;
     
     MoveToEx (hdcPrn, 0, 0, NULL) ;
     LineTo   (hdcPrn, cxPage, cyPage) ;
     MoveToEx (hdcPrn, cxPage, 0, NULL) ;
     LineTo   (hdcPrn, 0, cyPage) ;
     
     SaveDC (hdcPrn) ;
     
     SetMapMode       (hdcPrn, MM_ISOTROPIC) ;
     SetWindowExtEx   (hdcPrn, 1000, 1000, NULL) ;
     SetViewportExtEx (hdcPrn, cxPage / 2, -cyPage / 2, NULL) ;
     SetViewportOrgEx (hdcPrn, cxPage / 2,  cyPage / 2, NULL) ;
     
     Ellipse (hdcPrn, -500, 500, 500, -500) ;
     
     SetTextAlign (hdcPrn, TA_BASELINE | TA_CENTER) ;
     TextOut (hdcPrn, 0, 0, szTextStr, lstrlen (szTextStr)) ;

     RestoreDC (hdcPrn, -1) ;
}
Example #15
0
void SetIsotropic(HDC hdc, int cxClient, int cyClient)
{
	SetMapMode(hdc, MM_ISOTROPIC);
	SetWindowExtEx(hdc, 1000, 1000, NULL);
	SetViewportExtEx(hdc, cxClient / 2, -cyClient / 2, NULL);
	SetViewportOrgEx(hdc, cxClient / 2, cyClient / 2, NULL);
}
Example #16
0
void DrawBitmap(HDC hdc, const Irect& r, u32* data, u32 w, u32 h)
{
    BITMAPINFO  	bmi;
    bmi.bmiHeader.biSize 		= sizeof(BITMAPINFOHEADER);
    bmi.bmiHeader.biWidth 		= w;
    bmi.bmiHeader.biHeight 		= h;
    bmi.bmiHeader.biPlanes 		= 1;
    bmi.bmiHeader.biBitCount 		= 32;
    bmi.bmiHeader.biCompression 	= BI_RGB;
    bmi.bmiHeader.biSizeImage 		= 0;
    bmi.bmiHeader.biXPelsPerMeter 	= 0;
    bmi.bmiHeader.biYPelsPerMeter 	= 0;
    bmi.bmiHeader.biClrUsed 		= 0;
    bmi.bmiHeader.biClrImportant 	= 0;

    SetMapMode		(hdc,	MM_ANISOTROPIC	);
    SetStretchBltMode(hdc,	HALFTONE		);
    int err 		= StretchDIBits	(       hdc,
                                                r.x1, r.y1, (r.x2-r.x1), (r.y2-r.y1),
    					        0, 0, w, h, data, &bmi,
                    				DIB_RGB_COLORS, SRCCOPY);
    if (err==GDI_ERROR){
    	Log("!StretchDIBits - Draw failed.");
    }
}
Example #17
0
void startPrint(HWND hWnd, char *dirpath, char *filename, char* maptitle)
{
    char *pdfDriver = "Win2PDF";

    pdfDC = CreateDC("WINSPOOL", pdfDriver, NULL, NULL);
    if (!pdfDC) {
        error_stop("cannot open PDF driver: ", pdfDriver);
    }

    int horzres = GetDeviceCaps(pdfDC, HORZRES);
    int vertres = GetDeviceCaps(pdfDC, VERTRES);

    // Let's find the aspect ratio of the page
    double aspectRatio = (double) vertres / (double)horzres;

    pageWidth = DESIRED_PAGE_WIDTH;
    pageHeight = (int)((double)DESIRED_PAGE_WIDTH * aspectRatio);

    SetMapMode(pdfDC, MM_ISOTROPIC);
    SetViewportExtEx(pdfDC, horzres, vertres, NULL);
    SetWindowExtEx(pdfDC, pageWidth, pageHeight, NULL);

    DOCINFO docInfo = {0};
    docInfo.cbSize = sizeof(docInfo);

    char fullpath[MAX_PATH] = {0};
    strcpy_s(fullpath, sizeof(fullpath), dirpath);
    strcat_s(fullpath, sizeof(fullpath), filename);

    docInfo.lpszDocName = filename;
    docInfo.lpszOutput = fullpath;

    StartDoc(pdfDC, &docInfo);
    StartPage(pdfDC);
}
Example #18
0
void DrawTime(HWND hwnd, HBRUSH hBrushRed) {
    PAINTSTRUCT ps;
    HDC hdc;
    
    hdc = BeginPaint(hwnd, &ps);
    SetMapMode(hdc, MM_ISOTROPIC);

    SetWindowExtEx(hdc, WINDOW_WIDTH, WINDOW_HEIGHT, NULL);
    SetViewportExtEx(hdc, WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2, NULL);

    SelectObject(hdc, GetStockObject(NULL_PEN));
    SelectObject(hdc, hBrushRed);
    SetBkMode(hdc, TRANSPARENT);
    if (n_chess % 2 + 1 == 1) {
        SetViewportOrgEx(hdc, PLAYER1_TIME_X1, PLAYER1_TIME_Y1, NULL);

        _DisplayTime(hwnd, hdc);

        SetViewportOrgEx(hdc, PLAYER2_TIME_X1 - 80, PLAYER2_TIME_Y1, NULL);
        
        DisplayTwoDigits(hdc, 0, FALSE);
        DisplayColon(hdc);
        DisplayTwoDigits(hdc, 0, FALSE);
    } else {
        SetViewportOrgEx(hdc, PLAYER1_TIME_X1, PLAYER1_TIME_Y1, NULL);
        DisplayTwoDigits(hdc, 0, FALSE);
        DisplayColon(hdc) ;
        DisplayTwoDigits(hdc, 0, FALSE);

        SetViewportOrgEx (hdc, PLAYER2_TIME_X1 - 80, PLAYER2_TIME_Y1, NULL);

        _DisplayTime(hwnd, hdc);
    }
    EndPaint(hwnd,&ps);
}
Example #19
0
/**
** Higher-level interface: Output Enhanced META File format (-m emf)
**/
int to_emf(const GEN_PAR * pg, const OUT_PAR * po)
{
	HANDLE outDC;
	int err = 0;
	if (!pg->quiet)
		Eprintf("\n\n- Writing emf code to \"%s\"\n",
			*po->outfile == '-' ? "stdout" : po->outfile);

	/* Init.  */

	if (*po->outfile != '-') {
		if ((outDC =
		     CreateEnhMetaFile(NULL, po->outfile, NULL,
				       "hp2xx\0\0")) == 0) {
			PError("hp2xx (emf)");
			return ERROR;
		}
	} else {
		PError("hp2xx (Cant send metafile to stdout emf)");
		return ERROR;
	}
	SetMapMode(outDC, MM_ANISOTROPIC);
	SetViewportExtEx(outDC, 10, -10, NULL);	// size mult
	err = plotit(outDC, pg, po);
	CloseEnhMetaFile(outDC);

	if (!pg->quiet) {
		Eprintf("\nlines=%d moves=%d", lines, moves);
		Eprintf("\n");
	}
	return err;
}
Example #20
0
static void MaskRegion( HDC hdc, RECT * rct, COLORREF cTransparentColor,
                        COLORREF cBackgroundColor )

{
   HDC        hdcTemp, hdcObject, hdcBack, hdcMem;
   POINT      ptSize;
   COLORREF   cColor;
   HBITMAP    bmAndObject, bmAndBack, bmBackOld, bmObjectOld,
              bmAndTemp, bmTempOld, bmAndMem, bmMemOld;
   HBRUSH     hBrush, hBrOld;

   ptSize.x = rct->right - rct->left + 1;
   ptSize.y = rct->bottom - rct->top + 1;

   hBrush      = CreateSolidBrush(cBackgroundColor);

   hdcTemp     = CreateCompatibleDC(hdc);
   hdcObject   = CreateCompatibleDC(hdc);
   hdcBack     = CreateCompatibleDC(hdc);
   hdcMem      = CreateCompatibleDC(hdc);

   bmAndTemp   = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
   bmAndMem    = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
   bmAndObject = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);
   bmAndBack   = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);

   bmTempOld   = SelectObject(hdcTemp, bmAndTemp);
   bmMemOld    = SelectObject(hdcMem, bmAndMem);
   bmBackOld   = SelectObject(hdcBack, bmAndBack);
   bmObjectOld = SelectObject(hdcObject, bmAndObject);

   hBrOld      = SelectObject(hdcMem, hBrush);

   BitBlt(hdcTemp, 0, 0, ptSize.x, ptSize.y, hdc, rct->left, rct->top, SRCCOPY);

   SetMapMode(hdcTemp, GetMapMode(hdc));

   cColor = SetBkColor(hdcTemp, cTransparentColor);

   BitBlt(hdcObject, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCCOPY);

   SetBkColor(hdcTemp, cColor);

   BitBlt(hdcBack, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0, NOTSRCCOPY);
   PatBlt(hdcMem, 0,0, ptSize.x, ptSize.y, PATCOPY);
   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0, SRCAND);
   BitBlt(hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcBack, 0, 0, SRCAND);
   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCPAINT);
   BitBlt(hdc, rct->left, rct->top, ptSize.x, ptSize.y, hdcMem, 0, 0, SRCCOPY);

   DeleteObject(SelectObject(hdcMem, hBrOld));
   DeleteObject(SelectObject(hdcTemp, bmTempOld));
   DeleteObject(SelectObject(hdcMem, bmMemOld));
   DeleteObject(SelectObject(hdcBack, bmBackOld));
   DeleteObject(SelectObject(hdcObject, bmObjectOld));
   DeleteDC(hdcMem);
   DeleteDC(hdcBack);
   DeleteDC(hdcObject);
   DeleteDC(hdcTemp);
}
Example #21
0
	Renderer::Renderer()
	{
		m_hDC = CreateCompatibleDC(NULL);
		SetBkMode(m_hDC, TRANSPARENT);
		SetTextColor(m_hDC, 0xffffff);
		SetMapMode(m_hDC, MM_TEXT);
	}
Example #22
0
/*	WinDrawBitmap must be used for drawing bitmaps on screen.
	For reasons of efficiency it uses memory device context, BitBlt, and bitmap handle.
*/
void WinDrawBitmap (int w, int h, int destx, int desty,
					HBITMAP hbmp, OSPictContext context
				   )
{
	HDC compatibleDC;
	POINT size, origin, dest;
	HGDIOBJ prevObj;

	size.x   = w;
	size.y   = h;
	origin.x = 0;
	origin.y = 0;
	dest.x   = destx;
	dest.y   = desty;

	//	Create a compatible device context
	compatibleDC = CreateCompatibleDC (context->hDC);
	if (compatibleDC == NULL)
		rMessageBox (NULL,MB_APPLMODAL,"WinDrawBitmap","CreateCompatibleDC failed");

	//	Select bitmap into compatible device context
	prevObj = SelectObject (compatibleDC, hbmp);
	SetMapMode (compatibleDC, GetMapMode (context->hDC));
	DPtoLP (context->hDC, &size, 1);
	DPtoLP (context->hDC, &dest, 1);
	DPtoLP (compatibleDC, &origin, 1);

	BitBlt (context->hDC, dest.x, dest.y, size.x, size.y, compatibleDC, origin.x, origin.y, SRCCOPY);

	SelectObject (compatibleDC, prevObj);
	DeleteDC (compatibleDC);
}	/* WinDrawBitmap */
Example #23
0
void CMFC_DemoView::OnDraw(CDC* pDC)
{
	CMFC_DemoDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	CClientDC hdc(this);
	SetMapMode(hdc, MM_ANISOTROPIC);       //设置映像模式
	HPEN hP = (HPEN)GetStockObject(BLACK_PEN);	//黑色画笔
	HBRUSH hB = (HBRUSH)GetStockObject(DKGRAY_BRUSH); //画刷
	SelectObject(hdc, hB);   //选择画刷
	SelectObject(hdc, hP);       //选择画笔
	RoundRect(hdc, 50, 120, 100, 200, 15, 15); //绘制圆角矩形
	hB = (HBRUSH)GetStockObject(LTGRAY_BRUSH);  //采用亮灰色画刷
	SelectObject(hdc, hB);  	   //选择画刷
	Ellipse(hdc, 150, 50, 200, 150); 	   //绘制椭圆
	hB = (HBRUSH)GetStockObject(HOLLOW_BRUSH); //虚画刷
	SelectObject(hdc, hB);  	  //选择画刷
	Pie(hdc, 250, 50, 300, 100, 250, 50, 300, 50);  	//绘制饼形

	hP = CreatePen(PS_DASHDOT, 1, RGB(0, 0, 255));
	hB = CreateHatchBrush(HS_HORIZONTAL, RGB(0, 255, 0));
	SelectObject(hdc, hP);
	SelectObject(hdc, hB);
	RoundRect(hdc, 35, 220, 115, 270, 15, 15);
	Ellipse(hdc, 125, 170, 225, 220);
	Pie(hdc, 250, 120, 300, 170, 300, 120, 300, 170);

}
Example #24
0
//KMemDC
KMemDC::KMemDC(HDC hDC, const RECT* pRect):KDC(){
	assert(hDC!=NULL);
	// Some initialization
	m_hDCPaint=hDC;

	// Get the rectangle to draw
	if(!pRect)
		::GetClipBox(hDC,&m_rect);
	else 
		m_rect=*pRect;

	// Create a Memory DC
	CreateCompatibleDC(hDC);
	::LPtoDP(hDC,(POINT*)(&m_rect),2);

	m_bitmap=::CreateCompatibleBitmap(hDC, m_rect.right-m_rect.left,m_rect.bottom-m_rect.top);
	m_oldBitmap=(HBITMAP)SelectObject(m_bitmap);

	SetMapMode(::GetMapMode(hDC));

	SIZE size;
	::GetWindowExtEx(hDC,&size);	
	SetWindowExt(size);
	::GetViewportExtEx(hDC,&size);
	SetViewportExt(size);

	::DPtoLP(hDC,(POINT*)(&m_rect),2);
	SetWindowOrg(m_rect.left, m_rect.top);

	// Fill background
	FillSolidRect(&m_rect, ::GetBkColor(hDC));
}
Example #25
0
void rectdraw0(long *w, long *x, long *y, long lw)
{
  char tmppath[MAX_PATH], fname[MAX_PATH];
  struct plot_eng plotWin32;
  HDC hEmf;
  int bg_r,bg_g,bg_b;

  GetTempPath(sizeof(tmppath), tmppath);
  sprintf(fname, "%s\\gp-ploth-%lx.emf", tmppath, time(NULL)/(24*60*60)*1000+GetTickCount());

  hEmf = CreateEnhMetaFile(GetDC(NULL), fname, NULL, NULL);
  SetMapMode(hEmf, MM_TEXT);
  SelectObject(hEmf, GetStockObject(DEFAULT_GUI_FONT));
  color_to_rgb(gel(GP_DATA->colormap,1), &bg_r, &bg_g, &bg_b);
  SetBkColor(hEmf, RGB(bg_r,bg_g,bg_b));
  SetBkMode(hEmf, OPAQUE);

  plotWin32.sc=&SetForeground;
  plotWin32.pt=&DrawPoint;
  plotWin32.ln=&DrawLine;
  plotWin32.bx=&DrawRectangle;
  plotWin32.mp=&DrawPoints;
  plotWin32.ml=&DrawLines;
  plotWin32.st=&DrawString;
  plotWin32.pl=&pari_plot;
  plotWin32.data=(void*)hEmf;

  gen_rectdraw0(&plotWin32, w, x, y, lw, 1, 1);
  DeleteEnhMetaFile(CloseEnhMetaFile(hEmf));

  ShellExecute(NULL,NULL,fname,NULL,NULL,SW_SHOWDEFAULT);
}
static GpStatus METAFILE_PlaybackGetDC(GpMetafile *metafile)
{
    GpStatus stat = Ok;

    stat = GdipGetDC(metafile->playback_graphics, &metafile->playback_dc);

    if (stat == Ok)
    {
        /* The result of GdipGetDC always expects device co-ordinates, but the
         * device co-ordinates of the source metafile do not correspond to
         * device co-ordinates of the destination. Therefore, we set up the DC
         * so that the metafile's bounds map to the destination points where we
         * are drawing this metafile. */
        SetMapMode(metafile->playback_dc, MM_ANISOTROPIC);

        SetWindowOrgEx(metafile->playback_dc, metafile->bounds.X, metafile->bounds.Y, NULL);
        SetWindowExtEx(metafile->playback_dc, metafile->bounds.Width, metafile->bounds.Height, NULL);

        SetViewportOrgEx(metafile->playback_dc, metafile->playback_points[0].X, metafile->playback_points[0].Y, NULL);
        SetViewportExtEx(metafile->playback_dc,
            metafile->playback_points[1].X - metafile->playback_points[0].X,
            metafile->playback_points[2].Y - metafile->playback_points[0].Y, NULL);
    }

    return stat;
}
Example #27
0
//*******************************************************************
// helper to set scaling for print/preview
static void SetScale(HDC dc, int uthei, int utwi, const OUT_PAR * po)
{
	int width, height, mul, div;
	float yfact, xfact;
	long left, right, low, high;
	low = (int) (po->ymin - MARGIN);
	high = (int) (po->ymax + MARGIN);
	left = (int) po->xmin - MARGIN;
	right = (int) po->xmax + MARGIN;

	width = right - left;
	height = high - low;
	//to this point only used dest coords
	yfact = uthei / (float) height;
	xfact = utwi / (float) width;
	SetMapMode(dc, MM_ANISOTROPIC);
	if (fabs(yfact) < fabs(xfact)) {
		div = height;
		mul = uthei;
	} else {
		div = width;
		mul = utwi;
	}

	SetViewportExtEx(dc, mul, -mul, NULL);	// size mult
	SetWindowExtEx(dc, div, div, NULL);	// size divisor
	SetWindowOrgEx(dc, left, high, NULL);	// where was origo
	SetViewportOrgEx(dc, 0, 0, NULL);	// where do i want origo
}
Example #28
0
// New constructor that takes origin and extent. If you use this, don't
// give origin/extent arguments to wxMakeMetafilePlaceable.
wxMetafileDCImpl::wxMetafileDCImpl( wxDC *owner, const wxString& file,
                                    int WXUNUSED(xext),
                                    int WXUNUSED(yext),
                                    int WXUNUSED(xorg),
                                    int WXUNUSED(yorg) )
    : wxPMDCImpl(owner)
{
    m_minX = 10000;
    m_minY = 10000;
    m_maxX = -10000;
    m_maxY = -10000;
    if (!file.empty() && wxFileExists(file))
        wxRemoveFile(file);

//  m_hDC = (WXHDC) CreateMetaFile(file);

    m_ok = true;

//  ::SetWindowOrgEx((HDC) m_hDC,xorg,yorg, NULL);
//  ::SetWindowExtEx((HDC) m_hDC,xext,yext, NULL);

    // Actual Windows mapping mode, for future reference.
    m_windowsMappingMode = MM_ANISOTROPIC;

    SetMapMode(wxMM_TEXT); // NOTE: does not set HDC mapmode (this is correct)
}
Example #29
0
// Original constructor that does not takes origin and extent. If you use this,
// *DO* give origin/extent arguments to wxMakeMetafilePlaceable.
wxMetafileDCImpl::wxMetafileDCImpl(wxDC *owner, const wxString& file)
    : wxMSWDCImpl(owner)
{
    m_metaFile = NULL;
    m_minX = 10000;
    m_minY = 10000;
    m_maxX = -10000;
    m_maxY = -10000;
    //  m_title = NULL;

    if ( wxFileExists(file) )
        wxRemoveFile(file);

    if ( file.empty() )
        m_hDC = (WXHDC) CreateMetaFile(NULL);
    else
        m_hDC = (WXHDC) CreateMetaFile(file);

    m_ok = (m_hDC != (WXHDC) 0) ;

    // Actual Windows mapping mode, for future reference.
    m_windowsMappingMode = wxMM_TEXT;

    SetMapMode(wxMM_TEXT); // NOTE: does not set HDC mapmode (this is correct)
}
Example #30
0
void RedrawClientArea(HWND hWnd, HDC hDC)
{
   HDC     hDCMem;

   if (hBitmap)
   {
      GetBitmapPosition(hWnd);

      hDCMem = CreateCompatibleDC(hDC);

      SelectObject (hDCMem, hBitmap);
      SetMapMode (hDCMem, GetMapMode(hDC));

      if (hPalette)
      {
         SelectPalette(hDC, hPalette, FALSE);
         RealizePalette(hDC);
         SelectPalette(hDCMem, hPalette, FALSE);
         RealizePalette(hDCMem);
      }
      
      BitBlt(hDC, offset_x, offset_y, pbmi->bmiHeader.biWidth, pbmi->bmiHeader.biHeight,
             hDCMem, 0, 0, SRCCOPY);

      DeleteDC(hDCMem);
   }

   return;
}