Exemple #1
0
	virtual int OnDraw(HDC hDC, const RECT * rcPaint)
	{
		int i;
		double scale;

		switch ( m_option )
		{
			case IDM_VIEW_SMALL:
				scale = 32 * m_tt.GetScale();
				for (i=0; i<256; i++)
					m_tt.DrawTTGlyph(hDC, 20+(i%16)*42, 40+(i/16)*42, m_Start+i, scale, 0);
				break;

			case IDM_VIEW_MEDIUM:
				scale = 96 * m_tt.GetScale();
				for (i=0; i<70; i++)
					m_tt.DrawTTGlyph(hDC, 50+(i%10)*96, 80+(i/10)*96, m_Start+i, scale, 0);
				break;

			case IDM_VIEW_LARGE:
			case IDM_VIEW_LARGEPOINT:
			case IDM_VIEW_METRICS:
				scale = 384 * m_tt.GetScale();
				m_tt.DrawTTGlyph(hDC, 200, 500, m_Start, scale, m_option);
				break;


			case IDM_VIEW_COMPARE:
				// compare simple rasterization with TrueType font engine
				scale = 32 * m_tt.GetScale(); // 32 point
				
				m_tt.DrawTTGlyph(hDC, 20,    40, 36, scale, false); // ABC
				m_tt.DrawTTGlyph(hDC, 20+26, 40, 37, scale, false); // ABC
				m_tt.DrawTTGlyph(hDC, 20+49, 40, 38, scale, false); // ABC
				
				ZoomRect(hDC, 18, 17, 92, 17+25, 100,  10, 4);
				
				{
				    HFONT hFont = CreateFont(- 36 /** GetDeviceCaps(hDC, LOGPIXELSY) / 72*/,
							 0, 0, 0, FW_REGULAR, FALSE, FALSE, FALSE, 
							 ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, 
							 PROOF_QUALITY, VARIABLE_PITCH, "Times New Roman");
					HGDIOBJ hOld = SelectObject(hDC, hFont);

					TextOut(hDC, 20, 145,"ABC", 3);
					SelectObject(hDC, hOld);
					DeleteObject(hFont);
				}

				ZoomRect(hDC, 18, 145+7, 92, 145+7+26, 100, 150, 4);
				
				scale = 32 * 5 * m_tt.GetScale();

				m_tt.DrawTTGlyph(hDC, 500,      180, 36, scale, false); // ABCD
				m_tt.DrawTTGlyph(hDC, 500+24*5, 180, 37, scale, false); // ABCD
				m_tt.DrawTTGlyph(hDC, 500+45*5, 180, 38, scale, false); // ABCD
		}

		return View_NoChange;
	}
Exemple #2
0
void GetRect(Rect *zoomFrom, Rect *zoomTo)
{
	static short numRects = 0;
	Rect theRect,drawRect;
	Point firstPt,curPt,oldPt;
	RgnHandle rgnHandle = NewRgn();
	GrafPtr	oldPort;
	
	GetPort(&oldPort);
	SetPort(GetWindowPort(gWindow));
	
	PenMode(patXor);
	
	GetMouse(&firstPt);
	oldPt = firstPt;
	SetRect(&theRect,firstPt.h,firstPt.v,firstPt.h,firstPt.v);
	
	while (Button()) {
		GetMouse(&curPt);
		if (!EqualPt(curPt,oldPt)) {
			FixRect(&theRect,&drawRect);
			FrameRect(&drawRect);
			oldPt = curPt;
			theRect.right = curPt.h;
			theRect.bottom = curPt.v;
			FixRect(&theRect,&drawRect);
			FrameRect(&drawRect);
			QDFlushPortBuffer(GetWindowPort(gWindow), GetPortVisibleRegion(GetWindowPort(gWindow), rgnHandle));
		}
	}
		
	FixRect(&theRect,&drawRect);
	if (numRects==0)
		*zoomFrom = drawRect;
	else
		*zoomTo = drawRect;
			
	numRects++;
		
	QDFlushPortBuffer(GetWindowPort(gWindow), GetPortVisibleRegion(GetWindowPort(gWindow), rgnHandle));
	
	if (numRects >= 2) {
		ZoomRect(kZoomLarger, zoomFrom, zoomTo);
		numRects = 0;
	}
	
	PenNormal();
	DisposeRgn(rgnHandle);
	SetPort(oldPort);

}