home *** CD-ROM | disk | FTP | other *** search
- // annotVw.cpp : implementation of the CAnnotateView class
- //
-
- #include "stdafx.h"
- #include "annotate.h"
-
- #include "annotDoc.h"
- #include "annotVw.h"
- #include "rangeann.h"
- #include "leaddlg.h"
- #include "..\..\..\..\include\ltdlgocx.h"
- #include "linkdlg.h"
- #include "passdlg.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- extern CAnnotateApp theApp;
-
- /////////////////////////////////////////////////////////////////////////////
- // CAnnotateView
-
- IMPLEMENT_DYNCREATE(CAnnotateView, CFormView)
-
- BEGIN_MESSAGE_MAP(CAnnotateView, CFormView)
- //{{AFX_MSG_MAP(CAnnotateView)
- ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
- ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
- ON_WM_SIZE()
- ON_UPDATE_COMMAND_UI(IDM_FITIMAGE, OnUpdateFitimage)
- ON_COMMAND(IDM_FITIMAGE, OnFitimage)
- ON_COMMAND(IDM_NORMAL, OnNormal)
- ON_UPDATE_COMMAND_UI(IDM_NORMAL, OnUpdateNormal)
- ON_COMMAND(IDM_ZOOM, OnZoom)
- ON_UPDATE_COMMAND_UI(IDM_ZOOM, OnUpdateZoom)
- ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
- ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
- ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
- ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
- ON_UPDATE_COMMAND_UI(IDM_USERNONE, OnUpdateUsernone)
- ON_COMMAND(IDM_USERNONE, OnUsernone)
- ON_UPDATE_COMMAND_UI(IDM_USERRUN, OnUpdateUserrun)
- ON_COMMAND(IDM_USERRUN, OnUserrun)
- ON_COMMAND(IDM_USERDESIGN, OnUserdesign)
- ON_UPDATE_COMMAND_UI(IDM_USERDESIGN, OnUpdateUserdesign)
- ON_COMMAND(IDM_TOOLAUDIO, OnToolaudio)
- ON_UPDATE_COMMAND_UI(IDM_TOOLAUDIO, OnUpdateToolaudio)
- ON_COMMAND(IDM_TOOLBUTTON, OnToolbutton)
- ON_UPDATE_COMMAND_UI(IDM_TOOLBUTTON, OnUpdateToolbutton)
- ON_COMMAND(IDM_TOOLELLIPSE, OnToolellipse)
- ON_UPDATE_COMMAND_UI(IDM_TOOLELLIPSE, OnUpdateToolellipse)
- ON_COMMAND(IDM_TOOLFREEHAND, OnToolfreehand)
- ON_UPDATE_COMMAND_UI(IDM_TOOLFREEHAND, OnUpdateToolfreehand)
- ON_COMMAND(IDM_TOOLHILITE, OnToolhilite)
- ON_UPDATE_COMMAND_UI(IDM_TOOLHILITE, OnUpdateToolhilite)
- ON_COMMAND(IDM_TOOLHOTSPOT, OnToolhotspot)
- ON_UPDATE_COMMAND_UI(IDM_TOOLHOTSPOT, OnUpdateToolhotspot)
- ON_COMMAND(IDM_TOOLLINE, OnToolline)
- ON_UPDATE_COMMAND_UI(IDM_TOOLLINE, OnUpdateToolline)
- ON_COMMAND(IDM_TOOLNOTE, OnToolnote)
- ON_UPDATE_COMMAND_UI(IDM_TOOLNOTE, OnUpdateToolnote)
- ON_COMMAND(IDM_TOOLPOINTER, OnToolpointer)
- ON_UPDATE_COMMAND_UI(IDM_TOOLPOINTER, OnUpdateToolpointer)
- ON_COMMAND(IDM_TOOLPOLYGON, OnToolpolygon)
- ON_UPDATE_COMMAND_UI(IDM_TOOLPOLYGON, OnUpdateToolpolygon)
- ON_COMMAND(IDM_TOOLPOLYLINE, OnToolpolyline)
- ON_UPDATE_COMMAND_UI(IDM_TOOLPOLYLINE, OnUpdateToolpolyline)
- ON_COMMAND(IDM_TOOLRECT, OnToolrect)
- ON_UPDATE_COMMAND_UI(IDM_TOOLRECT, OnUpdateToolrect)
- ON_COMMAND(IDM_TOOLREDACT, OnToolredact)
- ON_UPDATE_COMMAND_UI(IDM_TOOLREDACT, OnUpdateToolredact)
- ON_COMMAND(IDM_TOOLSELECT, OnToolselect)
- ON_UPDATE_COMMAND_UI(IDM_TOOLSELECT, OnUpdateToolselect)
- ON_COMMAND(IDM_TOOLSTAMP, OnToolstamp)
- ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMP, OnUpdateToolstamp)
- ON_COMMAND(IDM_TOOLTEXT, OnTooltext)
- ON_UPDATE_COMMAND_UI(IDM_TOOLTEXT, OnUpdateTooltext)
- ON_COMMAND(IDM_TOOLRULER, OnToolruler)
- ON_UPDATE_COMMAND_UI(IDM_TOOLRULER, OnUpdateToolruler)
- ON_COMMAND(ID_EDIT_LOCKANNOTATIONS, OnEditLockannotations)
- ON_UPDATE_COMMAND_UI(ID_EDIT_LOCKANNOTATIONS, OnUpdateEditLockannotations)
- ON_COMMAND(ID_EDIT_UNLOCKANNOTATIONS, OnEditUnlockannotations)
- ON_UPDATE_COMMAND_UI(ID_EDIT_UNLOCKANNOTATIONS, OnUpdateEditUnlockannotations)
- ON_COMMAND(ID_EDIT_SHOWLOCKEDOBJECTS, OnEditShowlockedobjects)
- ON_UPDATE_COMMAND_UI(ID_EDIT_SHOWLOCKEDOBJECTS, OnUpdateEditShowlockedobjects)
- ON_COMMAND(ID_EDIT_REALIZEREDACTOBJECTS, OnEditRealizeredactobjects)
- ON_UPDATE_COMMAND_UI(ID_EDIT_REALIZEREDACTOBJECTS, OnUpdateEditRealizeredactobjects)
- ON_COMMAND(ID_EDIT_RESTOREREDACTOBJECTS, OnEditRestoreredactobjects)
- ON_UPDATE_COMMAND_UI(ID_EDIT_RESTOREREDACTOBJECTS, OnUpdateEditRestoreredactobjects)
- ON_MESSAGE(WM_DOREALIZE, OnDoRealize)
- ON_COMMAND(ID_EDIT_WANGCOMPATIBLETAGMODE, OnEditWangcompatibletagmode)
- ON_UPDATE_COMMAND_UI(ID_EDIT_WANGCOMPATIBLETAGMODE, OnUpdateEditWangcompatibletagmode)
- //}}AFX_MSG_MAP
- // Standard printing commands
- ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CAnnotateView construction/destruction
-
- CAnnotateView::CAnnotateView()
- : CFormView(CAnnotateView::IDD)
- {
- //{{AFX_DATA_INIT(CAnnotateView)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
-
- m_iTag = 0;
- m_bWangMode = FALSE;
- }
-
- CAnnotateView::~CAnnotateView()
- {
- }
-
- void CAnnotateView::DoDataExchange(CDataExchange* pDX)
- {
- CFormView::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CAnnotateView)
- DDX_Control(pDX, IDC_LEADCTRL1, m_Lead);
- //}}AFX_DATA_MAP
- }
-
- BOOL CAnnotateView::PreCreateWindow(CREATESTRUCT& cs)
- {
- // TODO: Modify the Window class or styles here by modifying
- // the CREATESTRUCT cs
-
- return CFormView::PreCreateWindow(cs);
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CAnnotateView printing
-
- BOOL CAnnotateView::OnPreparePrinting(CPrintInfo* pInfo)
- {
- // default preparation
- return DoPreparePrinting(pInfo);
- }
-
- void CAnnotateView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
- {
- // TODO: add cleanup after printing
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CAnnotateView diagnostics
-
- #ifdef _DEBUG
- void CAnnotateView::AssertValid() const
- {
- CFormView::AssertValid();
- }
-
- void CAnnotateView::Dump(CDumpContext& dc) const
- {
- CFormView::Dump(dc);
- }
-
- CAnnotateDoc* CAnnotateView::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAnnotateDoc)));
- return (CAnnotateDoc*)m_pDocument;
- }
- #endif //_DEBUG
-
- /////////////////////////////////////////////////////////////////////////////
- // CAnnotateView message handlers
-
- void CAnnotateView::GetAnnName(LPSTR szFilename, LPSTR szAnnName)
- {
- LPSTR lp;
- if( (lp = strrchr(szFilename,'.')) == NULL )
- {
- strcpy(szAnnName,szFilename);
- strcat(szAnnName,".ann");
- }
- else
- {
- memcpy(szAnnName,szFilename,lp-szFilename);
- strcpy(szAnnName+(lp-szFilename),".ann");
- }
- }
-
- void CAnnotateView::OnFileOpen()
- {
- int nRet;
- CLeadDlg LTCommDlg;
- RECT rcWin;
- BOOL bContinue=FALSE;
- char szAnnFile[256];
- CString sFileName;
- OFSTRUCT of;
-
- ::SetRect(&rcWin, 0, 0, 1, 1);
-
- if(LTCommDlg.Create(NULL,0,rcWin,this,100))
- {
- LTCommDlg.SetEnableMethodErrors(FALSE);
- LTCommDlg.SetFilter("Graphics|*.cmp;*.jpg;*.jff;*.jtf;*.bmp;*.tif;*.tga;*.pcx;*.cal;*.mac;*.mac;*.img;*.msp;*.wpg;*.wpg;*.ras;*.pct;*.pcd;*.eps;*.wmf");
- LTCommDlg.SetFileDlgFlags(0);
- LTCommDlg.SetDialogTitle("Open File");
- LTCommDlg.SetUIFlags( DLG_FO_MULTIPAGE |
- DLG_FO_FILEINFO |
- DLG_FO_SHOWPREVIEW |
- DLG_FO_SHOWSTAMP |
- DLG_FO_95STYLE );
- nRet = LTCommDlg.FileOpen((long)this->m_hWnd);
- if(nRet == 0)
- bContinue = TRUE;
- }
- if(bContinue)
- {
- sFileName = LTCommDlg.GetFileName();
- nRet = m_Lead.Load((LPCTSTR)sFileName,0,(short)LTCommDlg.GetPageNumber(),1);
- if( nRet )
- {
- theApp.DisplayLEADError(nRet);
- return;
- }
- RecalcSizes();
-
- // don't generate exceptions if there is an error
- m_Lead.SetEnableMethodErrors(FALSE);
-
- //attempt to load annotations from the file, in case it is a TIFF
- //with Wang ann tag
- nRet = m_Lead.AnnLoad(LTCommDlg.GetFileName(), (short)LTCommDlg.GetPageNumber());
-
- //if it fails, then look for a .ann file
- if (nRet != 0)
- {
- // get the name of the annotation file (same name, extension .ann)
- GetAnnName((char*)(LPCTSTR)sFileName,szAnnFile);
- if( OpenFile(szAnnFile,&of,OF_EXIST) != HFILE_ERROR )
- m_Lead.AnnLoad(szAnnFile, (short)LTCommDlg.GetPageNumber());
- }
-
- // restore EnableMethodErrors
- m_Lead.SetEnableMethodErrors(TRUE);
- }
- return;
- }
-
- void CAnnotateView::OnFileSaveAs()
- {
- int nRet;
- CLeadDlg LTCommDlg;
- RECT rcWin;
- BOOL bContinue=FALSE;
- char szAnnFile[256];
- CString sFileName;
- int nMode=0;
-
- ::SetRect(&rcWin, 0, 0, 1, 1);
-
- if(LTCommDlg.Create(NULL,0,rcWin,this,100))
- {
- LTCommDlg.SetEnableMethodErrors(FALSE);
- LTCommDlg.SetFileDlgFlags(0);
- LTCommDlg.SetUIFlags(DLG_FS_95STYLE | DLG_FS_QFACTOR);
- LTCommDlg.SetSaveFormatFlags(DLG_FS_ALL);
- nRet = LTCommDlg.FileSave((long)this->m_hWnd);
- if(nRet == 0)
- bContinue = TRUE;
- }
-
- switch(LTCommDlg.GetSaveFormat())
- {
- case FILE_JTIF:
- case FILE_LEAD2JTIF:
- case FILE_LEAD1JTIF:
- case FILE_TIFLZW:
- case FILE_TIFLZW_CMYK:
- case FILE_TIFLZW_YCC:
- case FILE_TIF:
- case FILE_TIF_CMYK:
- case FILE_TIF_YCC:
- case FILE_TIF_PACKBITS:
- case FILE_TIF_PACKBITS_CMYK:
- case FILE_TIF_PACKBITS_YCC:
- case FILE_CCITT:
- case FILE_CCITT_GROUP3_1DIM:
- case FILE_CCITT_GROUP3_2DIM:
- case FILE_CCITT_GROUP4:
- if (m_bWangMode)
- nMode = ANNFMT_WANGTAG;
- else
- nMode = ANNFMT_TIFFTAG;
- m_Lead.AnnSaveTag(nMode, FALSE);
- break;
- }
-
- sFileName = LTCommDlg.GetFileName();
- nRet = m_Lead.Save( (LPCTSTR)sFileName,
- LTCommDlg.GetSaveFormat(),
- LTCommDlg.GetSaveBitsPerPixel(),
- LTCommDlg.GetSaveQFactor(),
- LTCommDlg.GetSaveMulti() );
- if( nRet )
- {
- theApp.DisplayLEADError(nRet);
- return;
- }
-
- // if format was not TIFF flavor, need to save annotations
- // in a .ann file
- if (nMode == 0)
- {
- GetAnnName((char*)(LPCTSTR)sFileName,szAnnFile);
- nRet = m_Lead.AnnSave(szAnnFile, ANNFMT_NATIVE, FALSE);
- }
- }
-
- void CAnnotateView::SetZoom(int percent)
- {
- m_Lead.SetAutoRepaint(FALSE);
- m_Lead.SetDstRect(m_Lead.GetDstLeft(), m_Lead.GetDstTop(), m_Lead.GetBitmapWidth() * percent / 100, m_Lead.GetBitmapHeight() * percent / 100);
- m_Lead.SetDstClipRect(m_Lead.GetDstLeft(), m_Lead.GetDstTop(), m_Lead.GetDstWidth(), m_Lead.GetDstHeight());
- m_Lead.SetAutoRepaint(TRUE);
- }
-
- void CAnnotateView::OnSize(UINT nType, int cx, int cy)
- {
- CFormView::OnSize(nType, cx, cy);
-
- if( IsWindow(m_Lead.m_hWnd) )
- {
- m_Lead.MoveWindow(0,0,cx,cy,TRUE);
-
- if( m_Lead.GetBitmap() )
- RecalcSizes();
- }
- }
-
- void CAnnotateView::OnInitialUpdate()
- {
- CFormView::OnInitialUpdate();
-
- UNLOCKSUPPORT(m_Lead); // Unlock support for the LZW files and express capabilities
- fFitToWindow = FALSE;
- ZoomPercent = 100;
- m_Lead.SetAnnUserMode(ANNUSERMODE_DESIGN);
- m_Lead.SetAnnTool(ANNTOOL_SELECT);
- }
-
- void CAnnotateView::OnUpdateFitimage(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(m_Lead.GetBitmap() != 0);
- pCmdUI->SetCheck(fFitToWindow);
- }
-
- void CAnnotateView::OnFitimage()
- {
- fFitToWindow = TRUE;
- RecalcSizes();
- }
-
- void CAnnotateView::OnNormal()
- {
- fFitToWindow = FALSE;
- ZoomPercent = 100;
- RecalcSizes();
- }
-
- void CAnnotateView::OnUpdateNormal(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(m_Lead.GetBitmap() != 0);
- pCmdUI->SetCheck(!fFitToWindow && ZoomPercent == 100);
- }
-
- void CAnnotateView::OnZoom()
- {
- CRangeDlg dlg;
-
- dlg.m_strTitle = _T("Zoom");
- dlg.m_strLabel = _T("&Amount");
- dlg.m_nValue = ZoomPercent;
- dlg.m_nMin = 1;
- dlg.m_nMax = 800;
- dlg.m_nPage = 100;
-
- if(dlg.DoModal() == IDOK)
- {
- fFitToWindow = FALSE;
- ZoomPercent = dlg.m_nValue;
- RecalcSizes();
- }
- }
-
- void CAnnotateView::OnUpdateZoom(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(m_Lead.GetBitmap() != 0);
- pCmdUI->SetCheck(!fFitToWindow && ZoomPercent != 100);
- }
-
- void CAnnotateView::OnUpdateEditCopy(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(m_Lead.GetBitmap() != 0);
- }
-
- void CAnnotateView::OnEditCopy()
- {
- m_Lead.Copy(COPY_DIB | COPY_DDB | COPY_PALETTE);
- m_Lead.AnnCopy(ANNFMT_NATIVE, FALSE, FALSE);
- }
-
- void CAnnotateView::OnUpdateEditPaste(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(m_Lead.Paste(PASTE_ISREADY) != 0);
- }
-
- void CAnnotateView::OnEditPaste()
- {
- m_Lead.Paste(0);
- if(m_Lead.GetAnnPasteReady() == TRUE )
- m_Lead.AnnPaste();
- RecalcSizes();
- }
-
- void CAnnotateView::RecalcSizes()
- {
- if( fFitToWindow )
- {
- int cxZoom, cyZoom;
- cxZoom = (int) ((long) m_Lead.GetScaleWidth() * 100 / m_Lead.GetBitmapWidth());
- cyZoom = (int) ((long) m_Lead.GetScaleHeight() * 100 / m_Lead.GetBitmapHeight());
- SetZoom(max(min(cxZoom, cyZoom), 1));
- }
- else
- SetZoom(ZoomPercent);
- }
-
-
- void CAnnotateView::OnUpdateUsernone(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnUserMode() == ANNUSERMODE_NONE);
- }
-
- void CAnnotateView::OnUpdateUserdesign(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnUserMode() == ANNUSERMODE_DESIGN);
- }
-
- void CAnnotateView::OnUpdateUserrun(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnUserMode() == ANNUSERMODE_RUN);
- }
-
- void CAnnotateView::OnUsernone()
- {
- m_Lead.SetAnnUserMode(ANNUSERMODE_NONE);
- }
-
- void CAnnotateView::OnUserdesign()
- {
- m_Lead.SetAnnUserMode(ANNUSERMODE_DESIGN);
- }
-
- void CAnnotateView::OnUserrun()
- {
- m_Lead.SetAnnUserMode(ANNUSERMODE_RUN);
- }
-
-
- void CAnnotateView::OnToolaudio()
- {
- m_Lead.SetAnnTool(ANNTOOL_AUDIO);
- }
-
- void CAnnotateView::OnUpdateToolaudio(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_AUDIO);
- }
-
- void CAnnotateView::OnToolbutton()
- {
- m_Lead.SetAnnTool(ANNTOOL_BUTTON);
- }
-
- void CAnnotateView::OnUpdateToolbutton(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_BUTTON);
- }
-
- void CAnnotateView::OnToolellipse()
- {
- m_Lead.SetAnnTool(ANNTOOL_ELLIPSE);
- }
-
- void CAnnotateView::OnUpdateToolellipse(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_ELLIPSE);
- }
-
- void CAnnotateView::OnToolfreehand()
- {
- m_Lead.SetAnnTool(ANNTOOL_FREEHAND);
- }
-
- void CAnnotateView::OnUpdateToolfreehand(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_FREEHAND);
- }
-
- void CAnnotateView::OnToolhilite()
- {
- m_Lead.SetAnnTool(ANNTOOL_HILITE);
- }
-
- void CAnnotateView::OnUpdateToolhilite(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_HILITE);
- }
-
- void CAnnotateView::OnToolhotspot()
- {
- m_Lead.SetAnnTool(ANNTOOL_HOTSPOT);
- }
-
- void CAnnotateView::OnUpdateToolhotspot(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_HOTSPOT);
- }
-
- void CAnnotateView::OnToolline()
- {
- m_Lead.SetAnnTool(ANNTOOL_LINE);
- }
-
- void CAnnotateView::OnUpdateToolline(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_LINE);
- }
-
- void CAnnotateView::OnToolnote()
- {
- m_Lead.SetAnnTool(ANNTOOL_NOTE);
- }
-
- void CAnnotateView::OnUpdateToolnote(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_NOTE);
- }
-
- void CAnnotateView::OnToolpointer()
- {
- m_Lead.SetAnnTool(ANNTOOL_POINTER);
- }
-
- void CAnnotateView::OnUpdateToolpointer(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_POINTER);
- }
-
- void CAnnotateView::OnToolpolygon()
- {
- m_Lead.SetAnnTool(ANNTOOL_POLYGON);
- }
-
- void CAnnotateView::OnUpdateToolpolygon(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_POLYGON);
- }
-
- void CAnnotateView::OnToolpolyline()
- {
- m_Lead.SetAnnTool(ANNTOOL_POLYLINE);
- }
-
- void CAnnotateView::OnUpdateToolpolyline(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_POLYLINE);
- }
-
- void CAnnotateView::OnToolrect()
- {
- m_Lead.SetAnnTool(ANNTOOL_RECT);
- }
-
- void CAnnotateView::OnUpdateToolrect(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_RECT);
- }
-
- void CAnnotateView::OnToolredact()
- {
- m_Lead.SetAnnTool(ANNTOOL_REDACT);
- }
-
- void CAnnotateView::OnUpdateToolredact(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_REDACT);
- }
-
- void CAnnotateView::OnToolselect()
- {
- m_Lead.SetAnnTool(ANNTOOL_SELECT);
- }
-
- void CAnnotateView::OnUpdateToolselect(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_SELECT);
- }
-
- void CAnnotateView::OnToolstamp()
- {
- m_Lead.SetAnnTool(ANNTOOL_STAMP);
- }
-
- void CAnnotateView::OnUpdateToolstamp(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP);
- }
-
- void CAnnotateView::OnTooltext()
- {
- m_Lead.SetAnnTool(ANNTOOL_TEXT);
- }
-
- void CAnnotateView::OnUpdateTooltext(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_TEXT);
- }
- void CAnnotateView::OnToolruler()
- {
- m_Lead.SetAnnTool(ANNTOOL_RULER);
- }
-
- void CAnnotateView::OnUpdateToolruler(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(TRUE);
- pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_RULER);
- }
-
- void CAnnotateView::OnDraw(CDC* pDC)
- {
- CRect rcClip;
- CSize winext;
- CSize viewext;
- CSize paintext;
-
- if( m_Lead.GetBitmap() != 0 )
- if(pDC->IsPrinting())
- {
- pDC->SaveDC();
- winext = pDC->GetWindowExt();
- viewext = pDC->GetViewportExt();
- paintext.cx = MulDiv((int) m_Lead.GetBitmapWidth(), viewext.cx, winext.cx);
- paintext.cy = MulDiv((int) m_Lead.GetBitmapHeight(), viewext.cy, winext.cy);
- pDC->SetMapMode(MM_TEXT);
- m_Lead.Render((OLE_HANDLE) pDC->m_hDC, (float) 0, (float) 0, (float) paintext.cx, (float) paintext.cy);
- pDC->RestoreDC(-1);
- }
- }
-
- LRESULT CAnnotateView::OnDoRealize(WPARAM wParam, LPARAM lParam)
- {
- if( !IsWindow(m_Lead.m_hWnd) || !m_Lead.GetBitmap() )
- return FALSE;
- if(lParam)
- {
- return m_Lead.SendMessage(WM_PALETTECHANGED, wParam);
- }
- else
- {
- UINT nColorsChanged = 0;
- CDC* pdc;
-
- pdc = theApp.m_pMainWnd->GetDC();
- HPALETTE hpal = (HPALETTE)m_Lead.GetPalette((OLE_HANDLE) pdc->m_hDC);
- if(hpal)
- {
- CPalette pal;
-
- pal.Attach(hpal);
- CPalette* oldPalette = pdc->SelectPalette(&pal, (BOOL) lParam);
- nColorsChanged = pdc->RealizePalette();
- if (nColorsChanged > 0)
- m_Lead.InvalidateRect(NULL, FALSE);
- pdc->SelectPalette(oldPalette, TRUE);
- }
- theApp.m_pMainWnd->ReleaseDC(pdc);
- return ((LRESULT) (BOOL) (nColorsChanged > 0));
- }
- }
-
- void CAnnotateView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
- {
- CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView);
-
- if (bActivate)
- {
- ASSERT(pActivateView == this);
- OnDoRealize((WPARAM)theApp.m_pMainWnd->m_hWnd, (LPARAM) FALSE); // same as SendMessage(WM_DOREALIZE);
- }
- }
-
- BEGIN_EVENTSINK_MAP(CAnnotateView, CFormView)
- //{{AFX_EVENTSINK_MAP(CAnnotateView)
- ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 10 /* AnnClicked */, OnAnnClickedLeadctrl1, VTS_I4)
- ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 8 /* AnnCreate */, OnAnnCreateLeadctrl1, VTS_I4)
- ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 11 /* AnnDrawn */, OnAnnDrawnLeadctrl1, VTS_I4)
- ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 21 /* AnnHyperlink */, OnAnnHyperlinkLeadctrl1, VTS_I4 VTS_I2 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4)
- ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 22 /* AnnHyperlinkMenu */, OnAnnHyperlinkMenuLeadctrl1, VTS_VARIANT VTS_I2)
- //}}AFX_EVENTSINK_MAP
- END_EVENTSINK_MAP()
-
- void CAnnotateView::OnAnnClickedLeadctrl1(long hObject)
- {
- CString string;
-
- switch(m_Lead.AnnGetType(hObject))
- {
- case ANNOBJECT_BUTTON:
- string.Format("Button with tag %ld was clicked", m_Lead.AnnGetTag(hObject));
- break;
- case ANNOBJECT_HOTSPOT:
- string.Format("Hot Spot with tag %ld was clicked", m_Lead.AnnGetTag(hObject));
- break;
- }
- MessageBox( string, "CLICK notification" );
- }
-
- void CAnnotateView::OnAnnCreateLeadctrl1(long hObject)
- {
- /* set tags only for buttons and HotSpots */
- switch(m_Lead.AnnGetType(hObject))
- {
- case ANNOBJECT_BUTTON:
- case ANNOBJECT_HOTSPOT:
- m_iTag++;
- m_Lead.AnnSetTag(hObject, m_iTag);
- break;
- }
- }
-
- void CAnnotateView::OnAnnDrawnLeadctrl1(long hObject)
- {
- /* reset the tool to select after each object is created */
- m_Lead.SetAnnTool(ANNTOOL_SELECT);
- }
-
- void CAnnotateView::OnEditLockannotations()
- {
- CPassDlg PassDlg;
-
- if(PassDlg.DoModal() == IDOK)
- m_Lead.AnnLock(m_Lead.GetAnnContainer(), PassDlg.m_csKey, TRUE);
- }
-
- void CAnnotateView::OnUpdateEditLockannotations(CCmdUI* pCmdUI)
- {
- if (m_Lead.GetAnnContainer() > 0)
- pCmdUI->Enable(TRUE);
- else
- pCmdUI->Enable(FALSE);
- }
-
- void CAnnotateView::OnEditUnlockannotations()
- {
- CPassDlg PassDlg;
-
- if(PassDlg.DoModal() == IDOK)
- m_Lead.AnnUnlock(m_Lead.GetAnnContainer(), PassDlg.m_csKey);
- }
-
- void CAnnotateView::OnUpdateEditUnlockannotations(CCmdUI* pCmdUI)
- {
- if (m_Lead.GetAnnContainer() > 0)
- pCmdUI->Enable(TRUE);
- else
- pCmdUI->Enable(FALSE);
- }
-
- void CAnnotateView::OnEditShowlockedobjects()
- {
- m_Lead.SetAnnShowLockedIcon(!m_Lead.GetAnnShowLockedIcon());
- }
-
- void CAnnotateView::OnUpdateEditShowlockedobjects(CCmdUI* pCmdUI)
- {
- if (m_Lead.GetAnnContainer() > 0)
- pCmdUI->Enable(TRUE);
- else
- pCmdUI->Enable(FALSE);
- pCmdUI->SetCheck(m_Lead.GetAnnShowLockedIcon());
- }
-
- void CAnnotateView::OnEditRealizeredactobjects()
- {
- m_Lead.AnnRealize(TRUE);
- }
-
- void CAnnotateView::OnUpdateEditRealizeredactobjects(CCmdUI* pCmdUI)
- {
- if (m_Lead.GetAnnContainer() > 0)
- pCmdUI->Enable(TRUE);
- else
- pCmdUI->Enable(FALSE);
- }
-
- void CAnnotateView::OnEditRestoreredactobjects()
- {
- int nRet;
-
- nRet = m_Lead.AnnUnrealize(m_Lead.GetAnnContainer(), FALSE);
- if (nRet == ERROR_ANN_LOCKED)
- AfxMessageBox("Some redact objects are locked and cannot be restored");
- }
-
- void CAnnotateView::OnUpdateEditRestoreredactobjects(CCmdUI* pCmdUI)
- {
- if (m_Lead.GetAnnContainer() > 0)
- pCmdUI->Enable(TRUE);
- else
- pCmdUI->Enable(FALSE);
- }
-
- void CAnnotateView::OnEditWangcompatibletagmode()
- {
- m_bWangMode = !m_bWangMode;
- }
-
- void CAnnotateView::OnUpdateEditWangcompatibletagmode(CCmdUI* pCmdUI)
- {
- if (m_Lead.GetAnnContainer() > 0)
- pCmdUI->Enable(TRUE);
- else
- pCmdUI->Enable(FALSE);
- pCmdUI->SetCheck(m_bWangMode);
- }
-
- void CAnnotateView::OnAnnHyperlinkLeadctrl1(long hObject, short iParamCount, long lParam1, long lParam2, long lParam3, long lParam4, long lParam5)
- {
- AfxMessageBox("Object's Hyperlink was activated!");
- }
-
- void CAnnotateView::OnAnnHyperlinkMenuLeadctrl1(const VARIANT FAR& aObjects, short uCount)
- {
- long x;
- int hObject;
-
- CLinkDlg LinkDlg;
-
- if(LinkDlg.DoModal() == IDOK)
- {
- switch(LinkDlg.m_nType)
- {
- case ANNLINK_NONE:
- case ANNLINK_ANNEVENT:
- for(x=0; x<uCount; x++)
- {
- SafeArrayGetElement(aObjects.parray, &x, &hObject);
- m_Lead.AnnSetHyperlinkMsg(hObject, LinkDlg.m_nType, 0, 0, 0, 0, 0);
- }
- break;
- case ANNLINK_RUN:
- case ANNLINK_WEBPAGE:
- for(x=0; x<uCount; x++)
- {
- SafeArrayGetElement(aObjects.parray, &x, &hObject);
- m_Lead.AnnSetHyperlinkString(hObject, LinkDlg.m_nType, LinkDlg.m_csLink);
- }
- break;
- }
- }
- }
-