Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*
* DEVDSC.C * * Purpose: * CDevDesc (Device Descriptor) class * * Owner: * Original RichEdit code: David R. Fulmer * Christian Fortini * Murray Sargent */
#include "_common.h"
#include "_devdsc.h"
#include "_edit.h"
#include "_font.h"
ASSERTDATA
BOOL CDevDesc::SetDC(HDC hdc, LONG dxpInch, LONG dypInch) { TRACEBEGIN(TRCSUBSYSDISP, TRCSCOPEINTERN, "CDevDesc::SetDC");
AssertSz((NULL == hdc) || (GetDeviceCaps(hdc, TECHNOLOGY) != DT_METAFILE), "CDevDesc::SetDC attempting to set a metafile");
_hdc = hdc; if(!_hdc) { if(!_ped->_fInPlaceActive || !(hdc = _ped->TxGetDC())) { _dxpInch = _dypInch = 0; return FALSE; } }
if (dxpInch == -1) { // Get device metrics - these should both succeed
_dxpInch = (SHORT)GetDeviceCaps(hdc, LOGPIXELSX); AssertSz(_dxpInch != 0, "CDevDesc::SetDC _dxpInch is 0"); } else _dxpInch = dxpInch;
if (dypInch == -1) { _dypInch = (SHORT)GetDeviceCaps(hdc, LOGPIXELSY); AssertSz(_dypInch != 0, "CDevDesc::SetDC _dypInch is 0"); } else _dypInch = dypInch;
if(!_dxpInch || !_dypInch) return FALSE;
// Release DC if we got the window DC
if(!_hdc) _ped->TxReleaseDC(hdc);
return TRUE; }
void CDevDesc::SetMetafileDC( HDC hdcMetafile, LONG xMeasurePerInch, LONG yMeasurePerInch) { _fMetafile = TRUE; _hdc = hdcMetafile; _dxpInch = (SHORT) xMeasurePerInch; _dypInch = (SHORT) yMeasurePerInch; }
HDC CDevDesc::GetScreenDC() const { TRACEBEGIN(TRCSUBSYSDISP, TRCSCOPEINTERN, "CDevDesc::GetScreenDC");
Assert(!_hdc); Assert(_ped); return _ped->TxGetDC(); }
VOID CDevDesc::ReleaseScreenDC(HDC hdc) const { TRACEBEGIN(TRCSUBSYSDISP, TRCSCOPEINTERN, "CDevDesc::ReleaseScreenDC");
Assert(!_hdc); Assert(_ped); _ped->TxReleaseDC(hdc); }
void CDevDesc::LRtoDR(RECT &rcDest, const RECT &rcSrc, TFLOW tflow) const { TRACEBEGIN(TRCSUBSYSDISP, TRCSCOPEINTERN, "CDevDesc::LRtoDR");
if (!IsUVerticalTflow(tflow)) { rcDest.left = LXtoDX(rcSrc.left); rcDest.right = LXtoDX(rcSrc.right); rcDest.top = LYtoDY(rcSrc.top); rcDest.bottom = LYtoDY(rcSrc.bottom); } else { rcDest.left = LYtoDY(rcSrc.left); rcDest.right = LYtoDY(rcSrc.right); rcDest.top = LXtoDX(rcSrc.top); rcDest.bottom = LXtoDX(rcSrc.bottom); } }
|