[GME-commit] GMESRC/GME/Gme GMEView.cpp,1.128,1.129

gme-commit at list.isis.vanderbilt.edu gme-commit at list.isis.vanderbilt.edu
Thu Mar 11 12:22:24 CST 2004


Update of /var/lib/gme/GMESRC/GME/Gme
In directory braindrain:/tmp/cvs-serv8618

Modified Files:
	GMEView.cpp 
Log Message:
zoom problem solved and enhanced

CVS User: bogyom

Index: GMEView.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEView.cpp,v
retrieving revision 1.128
retrieving revision 1.129
diff -C2 -d -r1.128 -r1.129
*** GMEView.cpp	9 Mar 2004 22:17:47 -0000	1.128
--- GMEView.cpp	11 Mar 2004 18:22:21 -0000	1.129
***************
*** 31,34 ****
--- 31,35 ----
  static CViewList viewsToKill;
  
+ /*
  int setZoomPercents[GME_ZOOM_LEVEL_NUM] = {
  	GME_ZOOM_LEVEL_0,
***************
*** 40,44 ****
  	GME_ZOOM_LEVEL_6,
  	GME_ZOOM_LEVEL_7
! };
  
  #define END_SCROLL_OFFSET 50
--- 41,45 ----
  	GME_ZOOM_LEVEL_6,
  	GME_ZOOM_LEVEL_7
! };*/
  
  #define END_SCROLL_OFFSET 50
***************
*** 377,380 ****
--- 378,383 ----
  	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollZoomView::OnFilePrint)
  	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollZoomView::OnFilePrintPreview)
+ 	ON_MESSAGE(WM_USER_ZOOM, OnZoom)
+ 
  END_MESSAGE_MAP()
  
***************
*** 391,394 ****
--- 394,398 ----
  	m_prnpos = NULL;
  	m_lastPrnPage = 0;
+ 	m_zoomVal = ZOOM_NO;
  
  	initDone = false;
***************
*** 484,488 ****
  	}
  
! 	if(drawGrid && !pDC->IsPrinting() && !IsPreview() && zoomIdx >= GME_ZOOM_LEVEL_MED) {
  		CRect objext, annext, extent;
  		CGuiObject::GetExtent(children, objext);
--- 488,494 ----
  	}
  
! 	if(drawGrid && !pDC->IsPrinting() && !IsPreview() && /// zoomIdx >= GME_ZOOM_LEVEL_MED) 
! 			m_zoomVal >= ZOOM_NO)
! 	{
  		CRect objext, annext, extent;
  		CGuiObject::GetExtent(children, objext);
***************
*** 664,669 ****
  	EnableToolTips(TRUE);
  
! 	zoomIdx = GME_ZOOM_LEVEL_MED;
! 	CMainFrame::theInstance->WriteStatusZoom(setZoomPercents[zoomIdx]);
  
  	CreateOffScreen(GetDC());
--- 670,678 ----
  	EnableToolTips(TRUE);
  
! //	zoomIdx = GME_ZOOM_LEVEL_MED;
! 	m_zoomVal = ZOOM_NO;
! 	// sets the combo too 
! 	frame->propBar.SetZoomVal(m_zoomVal);
! 	CMainFrame::theInstance->WriteStatusZoom(m_zoomVal); // setZoomPercents[zoomIdx]);
  
  	CreateOffScreen(GetDC());
***************
*** 854,858 ****
  
  
- 	// It doesn't work on the printer ??
  	CBitmap logo;
  	BOOL ret = logo.LoadBitmap(IDB_BITMAP_LOGO);
--- 863,866 ----
***************
*** 893,897 ****
  BOOL CGMEView::OnPreparePrinting(CPrintInfo* pInfo)
  {
- 	// Terge
  	// change the PrintDialog to a customized one
  	CGmePrintDialog *gpd = new CGmePrintDialog(this, guiMeta, FALSE);
--- 901,904 ----
***************
*** 990,1000 ****
  						devmode->dmOrientation = (short)DMORIENT_PORTRAIT;
  					BOOL ret2 = cdc.ResetDC(devmode); // done for the AttribDC
- //					HDC hdc1 = ::ResetDC(pDC->m_hAttribDC, devmode);
- //					HDC hdc2 = ::ResetDC(pDC->m_hDC, devmode);
- 					// do it for the other
- //					CDC cd;
- //					cd.Attach(pDC->m_hDC);
- //					BOOL ret1 = cd.ResetDC(devmode);
- //					cd.Detach();
  					cdc.Detach();
  				}
--- 997,1000 ----
***************
*** 1642,1658 ****
  }
  
  
! void CGMEView::ZoomIn()
  {
  	CGMEEventLogger::LogGMEEvent("CGMEView::ZoomIn() in "+path+name+"\r\n");
! 	zoomIdx = min(GME_ZOOM_LEVEL_NUM-1, zoomIdx+1);
! 	CMainFrame::theInstance->WriteStatusZoom(setZoomPercents[zoomIdx]);
  }
  
! void CGMEView::ZoomOut()
  {
  	CGMEEventLogger::LogGMEEvent("CGMEView::ZoomOut() in "+path+name+"\r\n");
! 	zoomIdx = max(0, zoomIdx-1);
! 	CMainFrame::theInstance->WriteStatusZoom(setZoomPercents[zoomIdx]);
  }
  
--- 1642,1703 ----
  }
  
+ void CGMEView::setZoomPoint(int curzoom, CPoint point)
+ {
+ 	CRect clientW(0,0,0,0);
+ 	GetClientRect(&clientW);
+ 	int w = clientW.Width(); 
+ 	int h = clientW.Height(); 
+ 	CPoint offset = CPoint(w,h);
+ 	{
+ 		CWindowDC dc(NULL);
+ 		dc.SetMapMode(MM_ISOTROPIC);
+ 		dc.SetWindowExt(100,100);
+ 		dc.SetViewportExt(curzoom, curzoom);
+ 		dc.DPtoLP((LPPOINT)&point);
+ 	}
+ 	{
+ 		CWindowDC dc(NULL);
+ 		dc.SetMapMode(MM_ISOTROPIC);
+ 		dc.SetWindowExt(100,100);
+ 		dc.SetViewportExt(m_zoomVal, m_zoomVal);
+ 		dc.DPtoLP((LPPOINT)&offset);
+ 	}
+ 	offset.x /= 2;
+ 	offset.y /= 2;
  
! 	CPoint scp = GetScrollPosition();       // upper corner of scrolling
! 	m_zoomP = scp+point-offset;
! 
! 	m_zoomScroll = true;
! }
! 
! void CGMEView::ZoomIn(CPoint point)
  {
  	CGMEEventLogger::LogGMEEvent("CGMEView::ZoomIn() in "+path+name+"\r\n");
! //	zoomIdx = min(GME_ZOOM_LEVEL_NUM-1, zoomIdx+1);
! 	int curzoom = m_zoomVal;
! 	frame->propBar.NextZoomVal(m_zoomVal);
! //	CMainFrame::theInstance->WriteStatusZoom(setZoomPercents[zoomIdx]);
! 	CMainFrame::theInstance->WriteStatusZoom(m_zoomVal);
! 	m_zoomP.x = m_zoomP.y = 0;
! 	if (curzoom == m_zoomVal)
! 		return;
! 
! 	setZoomPoint(curzoom, point);
  }
  
! void CGMEView::ZoomOut(CPoint point)
  {
  	CGMEEventLogger::LogGMEEvent("CGMEView::ZoomOut() in "+path+name+"\r\n");
! //	zoomIdx = max(0, zoomIdx-1);
! 	int curzoom = m_zoomVal;
! 	frame->propBar.PrevZoomVal(m_zoomVal);
! //	CMainFrame::theInstance->WriteStatusZoom(setZoomPercents[zoomIdx]);
! 	CMainFrame::theInstance->WriteStatusZoom(m_zoomVal);
! 	m_zoomP.x = m_zoomP.y = 0;
! 	if (curzoom == m_zoomVal)
! 		return;
! 
! 	setZoomPoint(curzoom, point);
  }
  
***************
*** 1843,1851 ****
  	s.cy = s.cy + END_SCROLL_OFFSET;
  
! 	if (setZoomPercents[zoomIdx] == 100) {
! 		SetScrollSizes(MM_TEXT,s, setZoomPercents[zoomIdx]);
  	}
  	else {
! 		SetScrollSizes(MM_ISOTROPIC,s, setZoomPercents[zoomIdx]);
  	}
  }
--- 1888,1898 ----
  	s.cy = s.cy + END_SCROLL_OFFSET;
  
! //	if (setZoomPercents[zoomIdx] == 100) {
! 	// terge  - for what purpose, it makes it more complex
! 	if (m_zoomVal == ZOOM_NO) {
! 		SetScrollSizes(MM_TEXT,s, m_zoomVal); // setZoomPercents[zoomIdx]);
  	}
  	else {
! 		SetScrollSizes(MM_ISOTROPIC,s, m_zoomVal); // setZoomPercents[zoomIdx]);
  	}
  }
***************
*** 3202,3205 ****
--- 3249,3253 ----
  
  	CPoint trackPoint = point;
+ 	CPoint ppoint = point;
  	CoordinateTransfer(point);
  
***************
*** 3481,3485 ****
  			{
  				CGMEEventLogger::LogGMEEvent("    mode=GME_ZOOM_MODE\r\n");
! 				ZoomIn();
  				Invalidate();
  			}
--- 3529,3533 ----
  			{
  				CGMEEventLogger::LogGMEEvent("    mode=GME_ZOOM_MODE\r\n");
! 				ZoomIn(ppoint);
  				Invalidate();
  			}
***************
*** 3622,3625 ****
--- 3670,3674 ----
  	CGMEEventLogger::LogGMEEvent("CGMEView::OnRButtonDown in "+path+name+"\r\n");
  	CPoint local = point;
+ 	CPoint ppoint = point;
  	CoordinateTransfer(local);
  	contextMenuLocation = local;
***************
*** 3676,3680 ****
  		{
  			CGMEEventLogger::LogGMEEvent("    mode=GME_ZOOM_MODE\r\n");
! 			ZoomOut();
  			Invalidate();
  		}
--- 3725,3729 ----
  		{
  			CGMEEventLogger::LogGMEEvent("    mode=GME_ZOOM_MODE\r\n");
! 			ZoomOut(ppoint);
  			Invalidate();
  		}
***************
*** 4009,4013 ****
  void CGMEView::OnUpdateViewGrid(CCmdUI* pCmdUI)
  {
! 	pCmdUI->Enable(zoomIdx >= GME_ZOOM_LEVEL_MED);
  	pCmdUI->SetCheck(drawGrid);
  }
--- 4058,4063 ----
  void CGMEView::OnUpdateViewGrid(CCmdUI* pCmdUI)
  {
! //	pCmdUI->Enable(zoomIdx >= GME_ZOOM_LEVEL_MED);
! 	pCmdUI->Enable(m_zoomVal >= ZOOM_NO);
  	pCmdUI->SetCheck(drawGrid);
  }
***************
*** 5736,5738 ****
--- 5786,5845 ----
  
  	cDC.CloseEnhanced();	
+ }
+ 
+ LRESULT CGMEView::OnZoom(WPARAM wParam, LPARAM lParam)
+ {
+ 	CGMEEventLogger::LogGMEEvent("CGMEView::OnZoom() in "+path+name+"\r\n");
+ 	BOOL userdef = (BOOL)wParam;
+ 	int zoom = (int)lParam;
+ 
+ 	// zoom it 
+ 	if (zoom > 0)
+ 	{
+ 		int curzoom = m_zoomVal;
+ 		m_zoomVal = (zoom<ZOOM_MIN)? ZOOM_MIN: ((zoom>ZOOM_MAX)? ZOOM_MAX: zoom);
+ 		if (m_zoomVal != zoom)
+ 			frame->propBar.SetZoomVal(m_zoomVal);
+ 		CMainFrame::theInstance->WriteStatusZoom(m_zoomVal);
+ 		m_zoomP.x = m_zoomP.y = 0;
+ 		if (curzoom == m_zoomVal)
+ 			return 0;
+ 
+ 		CPoint point;
+ 		CRect client(0,0,0,0);
+ 		GetClientRect(&client);
+ 		point.x = client.Width()/2;
+ 		point.y = client.Height()/2;
+ 		setZoomPoint(curzoom, point);
+ 		Invalidate();
+ 	}
+ 	else
+ 	{
+ 		CRect rect;
+ 		GetClientRect(&rect);
+ 
+ 		CRect objext, annext, extent;
+ 		CGuiObject::GetExtent(children, objext);
+ 		CGuiAnnotator::GetExtent(annotators, annext);
+ 		extent.UnionRect(&objext, &annext);
+ 		CSize s(extent.right, extent.bottom);
+ 		s.cx = s.cx + END_SCROLL_OFFSET;
+ 		s.cy = s.cy + END_SCROLL_OFFSET;
+ 		switch (zoom)
+ 		{
+ 		case ZOOM_WIDTH:
+ 			m_zoomVal = 100*rect.Width()/s.cx;
+ 			break;
+ 		case ZOOM_HEIGHT:
+ 			m_zoomVal = 100*rect.Height()/s.cy;
+ 			break;
+ 		case ZOOM_ALL:
+ 			m_zoomVal = min(100*rect.Height()/s.cy, 100*rect.Width()/s.cx);
+ 			break;
+ 		}
+ 		frame->propBar.SetZoomVal(m_zoomVal);
+ 		CMainFrame::theInstance->WriteStatusZoom(m_zoomVal);
+ 		Invalidate();
+ 	}
+ 	return 0;
  }



More information about the GME-commit mailing list