// AnnCOMView.cpp : implementation of the CAnnCOMView class // #include "stdafx.h" #include "Resource.h" #include "leadraster.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // Macros #define ABS(x) ((x) < 0 ? -(x) : (x)) ///////////////////////////////////////////////////////////////////////////// // CAnnCOMView extern CAnnCOMApp theApp; IMPLEMENT_DYNCREATE(CAnnCOMView, CFormView) BEGIN_MESSAGE_MAP(CAnnCOMView, CFormView) //{{AFX_MSG_MAP(CAnnCOMView) ON_WM_SIZE() ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(ID_VIEW_ANNOTATIONTOOLBAR, OnViewAnnotationtoolbar) ON_UPDATE_COMMAND_UI(ID_VIEW_ANNOTATIONTOOLBAR, OnUpdateViewAnnotationtoolbar) ON_COMMAND(ID_EDIT_USERMODE_DESIGN, OnEditUsermodeDesign) ON_UPDATE_COMMAND_UI(ID_EDIT_USERMODE_DESIGN, OnUpdateEditUsermodeDesign) ON_COMMAND(ID_EDIT_USERMODE_NONE, OnEditUsermodeNone) ON_UPDATE_COMMAND_UI(ID_EDIT_USERMODE_NONE, OnUpdateEditUsermodeNone) ON_COMMAND(ID_EDIT_USERMODE_RUN, OnEditUsermodeRun) ON_UPDATE_COMMAND_UI(ID_EDIT_USERMODE_RUN, OnUpdateEditUsermodeRun) ON_COMMAND(ID_EDIT_COPY, OnEditCopy) ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) ON_COMMAND(ID_EDIT_LOCKANNOTATIONS, OnEditLockannotations) ON_COMMAND(ID_EDIT_UNLOCKANNOTATIONS, OnEditUnlockannotations) ON_COMMAND(ID_EDIT_SHOWLOCKEDOBJECTS, OnEditShowlockedobjects) ON_COMMAND(ID_EDIT_REALIZEREDACTOBJECTS, OnEditRealizeredactobjects) ON_COMMAND(ID_EDIT_RESTOREREDACTOBJECTS, OnEditRestoreredactobjects) ON_COMMAND(ID_EDIT_WANGCOMPATIBLETAGMODE, OnEditWangcompatibletagmode) ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy) ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste) ON_UPDATE_COMMAND_UI(ID_EDIT_LOCKANNOTATIONS, OnUpdateEditLockannotations) ON_UPDATE_COMMAND_UI(ID_EDIT_UNLOCKANNOTATIONS, OnUpdateEditUnlockannotations) ON_UPDATE_COMMAND_UI(ID_EDIT_SHOWLOCKEDOBJECTS, OnUpdateEditShowlockedobjects) ON_UPDATE_COMMAND_UI(ID_EDIT_REALIZEREDACTOBJECTS, OnUpdateEditRealizeredactobjects) ON_UPDATE_COMMAND_UI(ID_EDIT_RESTOREREDACTOBJECTS, OnUpdateEditRestoreredactobjects) ON_UPDATE_COMMAND_UI(ID_EDIT_WANGCOMPATIBLETAGMODE, OnUpdateEditWangcompatibletagmode) ON_COMMAND(ID_VIEW_NORMAL, OnViewNormal) ON_UPDATE_COMMAND_UI(ID_VIEW_NORMAL, OnUpdateViewNormal) ON_COMMAND(ID_VIEW_FITIMAGETOWINDOW, OnViewFitimagetowindow) ON_UPDATE_COMMAND_UI(ID_VIEW_FITIMAGETOWINDOW, OnUpdateViewFitimagetowindow) ON_COMMAND(ID_VIEW_ZOOM, OnViewZoom) ON_UPDATE_COMMAND_UI(ID_VIEW_ZOOM, OnUpdateViewZoom) 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(IDM_TOOLCROSSPRODUCT, OnToolcrossproduct) ON_UPDATE_COMMAND_UI(IDM_TOOLCROSSPRODUCT, OnUpdateToolcrossproduct) ON_COMMAND(IDM_TOOLPOINT, OnToolpoint) ON_UPDATE_COMMAND_UI(IDM_TOOLPOINT, OnUpdateToolpoint) ON_COMMAND(IDM_TOOLPROTRACTOR, OnToolprotractor) ON_UPDATE_COMMAND_UI(IDM_TOOLPROTRACTOR, OnUpdateToolprotractor) ON_COMMAND(IDM_TOOLPUSHPIN, OnToolpushpin) ON_UPDATE_COMMAND_UI(IDM_TOOLPUSHPIN, OnUpdateToolpushpin) ON_COMMAND(IDM_TOOLSTAMPAPPROVED, OnToolstampApproved) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPAPPROVED, OnUpdateToolstampApproved) ON_COMMAND(IDM_TOOLSTAMPASSIGNED, OnToolstampAssigned) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPASSIGNED, OnUpdateToolstampAssigned) ON_COMMAND(IDM_TOOLSTAMPCHECKED, OnToolstampChecked) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPCHECKED, OnUpdateToolstampChecked) ON_COMMAND(IDM_TOOLSTAMPCLATPRV, OnToolstampClatprv) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPCLATPRV, OnUpdateToolstampClatprv) ON_COMMAND(IDM_TOOLSTAMPCOPY, OnToolstampCopy) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPCOPY, OnUpdateToolstampCopy) ON_COMMAND(IDM_TOOLSTAMPDRAFT, OnToolstampDraft) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPDRAFT, OnUpdateToolstampDraft) ON_COMMAND(IDM_TOOLSTAMPEXTENDED, OnToolstampExtended) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPEXTENDED, OnUpdateToolstampExtended) ON_COMMAND(IDM_TOOLSTAMPFAX, OnToolstampFax) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPFAX, OnUpdateToolstampFax) ON_COMMAND(IDM_TOOLSTAMPFAXED, OnToolstampFaxed) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPFAXED, OnUpdateToolstampFaxed) ON_COMMAND(IDM_TOOLSTAMPIMPORTANT, OnToolstampImportant) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPIMPORTANT, OnUpdateToolstampImportant) ON_COMMAND(IDM_TOOLSTAMPINVOICE, OnToolstampInvoice) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPINVOICE, OnUpdateToolstampInvoice) ON_COMMAND(IDM_TOOLSTAMPNOTICE, OnToolstampNotice) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPNOTICE, OnUpdateToolstampNotice) ON_COMMAND(IDM_TOOLSTAMPOFFICIAL, OnToolstampOfficial) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPOFFICIAL, OnUpdateToolstampOfficial) ON_COMMAND(IDM_TOOLSTAMPONFILE, OnToolstampOnfile) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPONFILE, OnUpdateToolstampOnfile) ON_COMMAND(IDM_TOOLSTAMPPAID, OnToolstampPaid) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPAID, OnUpdateToolstampPaid) ON_COMMAND(IDM_TOOLSTAMPPASSED, OnToolstampPassed) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPASSED, OnUpdateToolstampPassed) ON_COMMAND(IDM_TOOLSTAMPPENDING, OnToolstampPending) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPENDING, OnUpdateToolstampPending) ON_COMMAND(IDM_TOOLSTAMPPROCESSED, OnToolstampProcessed) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPROCESSED, OnUpdateToolstampProcessed) ON_COMMAND(IDM_TOOLSTAMPRECEIVED, OnToolstampReceived) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPRECEIVED, OnUpdateToolstampReceived) ON_COMMAND(IDM_TOOLSTAMPREJECTED, OnToolstampRejected) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPREJECTED, OnUpdateToolstampRejected) ON_COMMAND(IDM_TOOLSTAMPRELEASE, OnToolstampRelease) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPRELEASE, OnUpdateToolstampRelease) ON_COMMAND(IDM_TOOLSTAMPSENT, OnToolstampSent) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPSENT, OnUpdateToolstampSent) ON_COMMAND(IDM_TOOLSTAMPSHIPPED, OnToolstampShipped) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPSHIPPED, OnUpdateToolstampShipped) ON_COMMAND(IDM_TOOLSTAMPTOPSECRET, OnToolstampTopsecret) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPTOPSECRET, OnUpdateToolstampTopsecret) ON_COMMAND(IDM_TOOLSTAMPURGENT, OnToolstampUrgent) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPURGENT, OnUpdateToolstampUrgent) ON_COMMAND(IDM_TOOLSTAMPVOID, OnToolstampVoid) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPVOID, OnUpdateToolstampVoid) ON_COMMAND(ID_FILE_SAVE, OnFileSave) ON_WM_CLOSE() ON_WM_DESTROY() ON_UPDATE_COMMAND_UI(ID_FILE_PRINT_SETUP, OnUpdateFilePrintSetup) ON_UPDATE_COMMAND_UI(ID_FILE_PRINT_PREVIEW, OnUpdateFilePrintPreview) ON_UPDATE_COMMAND_UI(ID_FILE_PRINT, OnUpdateFilePrint) ON_COMMAND(IDM_TOOLCURVE, OnToolcurve) ON_UPDATE_COMMAND_UI(IDM_TOOLCURVE, OnUpdateToolcurve) ON_COMMAND(IDM_TOOLCLOSEDCURVE, OnToolclosedcurve) ON_UPDATE_COMMAND_UI(IDM_TOOLCLOSEDCURVE, OnUpdateToolclosedcurve) ON_COMMAND(IDM_TOOLRTF, OnToolrtf) ON_UPDATE_COMMAND_UI(IDM_TOOLRTF, OnUpdateToolrtf) ON_COMMAND(IDM_TOOLTEXTPOINTER, OnTooltextpointer) ON_UPDATE_COMMAND_UI(IDM_TOOLTEXTPOINTER, OnUpdateTooltextpointer) ON_COMMAND(IDM_TOOLENCRYPT, OnToolencrypt) ON_UPDATE_COMMAND_UI(IDM_TOOLENCRYPT, OnUpdateToolencrypt) ON_COMMAND(IDM_TOOLFREEHANDHOTSPOT, OnToolfreehandhotspot) ON_UPDATE_COMMAND_UI(IDM_TOOLFREEHANDHOTSPOT, OnUpdateToolfreehandhotspot) ON_COMMAND(IDM_TOOLPOLYRULER, OnToolpolyruler) ON_UPDATE_COMMAND_UI(IDM_TOOLPOLYRULER, OnUpdateToolpolyruler) ON_COMMAND(IDM_APPLY_ENCRYPTORS, OnApplyEncryptors) ON_COMMAND(IDM_APPLY_DECRYPTORS, OnApplyDecryptors) ON_UPDATE_COMMAND_UI(IDM_APPLY_ENCRYPTORS, OnUpdateApplyEncryptors) ON_UPDATE_COMMAND_UI(IDM_APPLY_DECRYPTORS, OnUpdateApplyDecryptors) ON_COMMAND(ID_DOUBLE_BUFFER, OnDoubleBuffer) ON_UPDATE_COMMAND_UI(ID_DOUBLE_BUFFER, OnUpdateDoubleBuffer) ON_COMMAND(IDM_TOOLVIDEO, OnToolvideo) ON_UPDATE_COMMAND_UI(IDM_TOOLVIDEO, OnUpdateToolvideo) ON_COMMAND(ID_VIEW_MAGGLASS, OnViewMagglass) ON_UPDATE_COMMAND_UI(ID_VIEW_MAGGLASS, OnUpdateViewMagglass) ON_COMMAND(ID_VIEW_CHANGEHILIGHTANDCURSORS, OnViewChangeHilightAndCursors) ON_UPDATE_COMMAND_UI(ID_VIEW_CHANGEHILIGHTANDCURSORS, OnUpdateViewChangeHilightAndCursors) ON_COMMAND_RANGE(IDM_NEW_CHECKALL, IDM_NEW_TEXT_OPTIONS, OnNewOptions) ON_UPDATE_COMMAND_UI_RANGE(IDM_NEW_CHECKALL, IDM_NEW_UNCHECKALL, OnUpdateNewOptions) ON_MESSAGE(WM_DOREALIZE, OnDoRealize) ON_UPDATE_COMMAND_UI(ID_FILE_SAVE, OnUpdateFileSave) //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAnnCOMView construction/destruction CAnnCOMView::CAnnCOMView() : CFormView(CAnnCOMView::IDD) { //{{AFX_DATA_INIT(CAnnCOMView) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // TODO: add construction code here //CoInitialize(NULL); m_pltAnn = NULL; m_pltAnnToolBar = NULL; m_nTag = 0; m_nZoomPercent = 100; m_nZoom = 200; m_bFitToWindow = FALSE; m_bWangMode = FALSE; m_bToolBarVisible = FALSE; m_bAnnToolbarCreated = FALSE; m_bDoubleBuffer = TRUE; m_bMagGlass = FALSE; m_bAnnHilightCustom = FALSE; } CAnnCOMView::~CAnnCOMView() { } void CAnnCOMView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAnnCOMView) DDX_Control(pDX, IDC_LEADRASTERVIEW, m_ltRasView); //}}AFX_DATA_MAP } BOOL CAnnCOMView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFormView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CAnnCOMView printing BOOL CAnnCOMView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CAnnCOMView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CAnnCOMView diagnostics #ifdef _DEBUG void CAnnCOMView::AssertValid() const { CFormView::AssertValid(); } void CAnnCOMView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } CAnnCOMDoc* CAnnCOMView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAnnCOMDoc))); return (CAnnCOMDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CAnnCOMView message handlers void CAnnCOMView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); // TODO: Add your message handler code here if (IsWindow(m_ltRasView.m_hWnd)) { m_ltRasView.MoveWindow(0, 0, cx, cy); if (m_ltRasView.GetRaster().GetBitmap()) RecalcSizes(); } } static const WCHAR BASED_CODE _szLicString[] = L"LEADTOOLS OCX Copyright (c) 1991-2004 LEAD Technologies, Inc."; void CAnnCOMView::OnFileOpen() { int nRet; int nPage,nXRes,nYRes; CString strFileName = ""; RECT rcWin; TCHAR szAnnFile[256]; ILEADRasterIO *pltRasterIO = NULL; ::SetRect(&rcWin, 0, 0, 1, 1); theApp.m_pRasterFileDlg->PutEnableMethodErrors(FALSE); theApp.m_pRasterFileDlg->PutFilter(""); theApp.m_pRasterFileDlg->PutFileDlgFlags(0); theApp.m_pRasterFileDlg->PutDialogTitle("Open File"); theApp.m_pRasterFileDlg->PutUIFlags( OPEN_LOADBITMAP | OPEN_SHOW_MULTIPAGE | OPEN_SHOW_PREVIEW | OPEN_USEFILESTAMP | OPEN_SHOW_FILEINFO | OPEN_SHOW_LOADOPTIONS | OPEN_SHOW_LOADCOMPRESSED | OPEN_SHOW_LOADROTATED | OPEN_SHOW_DELPAGE | OPEN_SHOW_PDFOPTIONS | OPEN_SHOW_RASTEROPTIONS | OPEN_SHOW_VECTOROPTIONS | OPEN_VIEWTOTALPAGES | OPEN_ENABLESIZING ); nRet= theApp.m_pRasterFileDlg->ShowOpenDlg((long)this->m_hWnd); if(nRet == 0) { if(theApp.m_pRasterFileDlg->GetDialogStatus() == DLG_OK) { strFileName =(LPCTSTR)theApp.m_pRasterFileDlg->GetFileName(); nPage = theApp.m_pRasterFileDlg->GetPageNumber(); nXRes = (short)theApp.m_pRasterFileDlg->GetRasterXResolution(); nYRes = (short)theApp.m_pRasterFileDlg->GetRasterYResolution(); ::CoCreateInstance(CLSID_LEADRasterIO, NULL, CLSCTX_ALL, IID_ILEADRasterIO, (void**)&pltRasterIO); if (pltRasterIO) { RECT rcClient; BSTR strFile = strFileName.AllocSysString(); GetClientRect(&rcClient); pltRasterIO->PutEnableMethodErrors (VARIANT_FALSE); nRet = pltRasterIO->GetFileInfo(NULL,strFile,nPage ,0) ; if( nRet == 0 ) { switch(pltRasterIO->GetInfoFormat()) { case FILE_PCD: case FILE_FPX: case FILE_JP2: case FILE_J2K: case FILE_JBIG: pltRasterIO->SetLoadResolution (m_ltRasView.GetRaster().m_lpDispatch , pltRasterIO->InfoFormat,(float)nXRes,(float)nYRes); nRet = pltRasterIO->Load(m_ltRasView.GetRaster().m_lpDispatch, strFile, 0, nPage , 1); pltRasterIO->SetLoadResolution (m_ltRasView.GetRaster().m_lpDispatch, pltRasterIO->InfoFormat, 0,0); break; default: nRet = pltRasterIO->Load(m_ltRasView.GetRaster().m_lpDispatch, strFile, 0, nPage, 1); if(nRet!=0) { AfxMessageBox(TEXT("Error loading file")); return; } } } m_ltRasView.SetAutoRepaint(TRUE); m_ltRasView.SetBackErase(FALSE); InitAnnotation (); if(m_ltRasView.GetHasMagGlass()) { m_ltRasView.StopMagGlass(); m_pltAnn->AnnEnableMagGlass = FALSE; m_bMagGlass = FALSE; } if (pltRasterIO->ReadTag(strFile, nPage, ANN_TAG_TIFF) == 0) { m_pltAnn->AnnLoad (strFile, nPage); } else { GetAnnName (strFileName.GetBuffer(0), szAnnFile); strFileName.ReleaseBuffer(); strFileName = szAnnFile; strFile = strFileName.AllocSysString (); m_pltAnn->AnnLoad (strFile, nPage); } } m_pltAnn->PutEnableMethodErrors (VARIANT_FALSE); pltRasterIO->Release(); OnViewNormal(); { CMainFrame * pFrame = (CMainFrame *) GetParentFrame (); CMenu * pMenu = pFrame->GetMenu(); pMenu->EnableMenuItem (ID_FILE_SAVE, MF_ENABLED); pMenu->EnableMenuItem (ID_FILE_PRINT, MF_ENABLED); pMenu->EnableMenuItem (ID_FILE_PRINT_PREVIEW, MF_ENABLED); pMenu->EnableMenuItem (ID_FILE_PRINT_SETUP, MF_ENABLED); } } } m_bFitToWindow = FALSE; } void CAnnCOMView::AddUserDefinedButton() { if (m_bAnnToolbarCreated) return; m_bAnnToolbarCreated = TRUE; // add a user-default button m_pltAnnToolBar->PutButtonTool( m_pltAnnToolBar->GetButtonCount(), ANN_TOOL_USER_FIRST ); ILEADRasterFactory *pRasterFactory = NULL; ::CoCreateInstance(CLSID_LEADRasterFactory, NULL, CLSCTX_ALL, IID_ILEADRasterFactory, (void**)&pRasterFactory); if (pRasterFactory) { BSTR lpLic = SysAllocString(_szLicString); ILEADRasterPtr pRaster = NULL; pRaster = (ILEADRasterPtr)pRasterFactory->CreateObject ( #ifndef _UNICODE "LEADRaster.LEADRaster", #else "LEADRaster_U.LEADRaster_U", #endif lpLic ); if (pRaster) { ILEADRasterIO *pRasterIO = NULL; ::CoCreateInstance(CLSID_LEADRasterIO, NULL, CLSCTX_ALL, IID_ILEADRasterIO, (void**)&pRasterIO); if (pRasterIO) { int nRet; pRasterIO->PutEnableMethodErrors(FALSE); nRet= pRasterIO->Load(pRaster, TEXT("..\\images\\user_btn.bmp"), 0, 0, 1); if (nRet) { pRasterIO->EnableMethodErrors=FALSE; nRet = pRasterIO->Load(pRaster, TEXT("..\\..\\..\\..\\..\\images\\user_btn.bmp"), 0, 0, 1); if(nRet) nRet = pRasterIO->Load(pRaster, TEXT("e:\\lead14\\dist\\images\\user_btn.bmp"), 0, 0, 1); pRasterIO->EnableMethodErrors=TRUE; } if (pRaster->GetBitmap()) { int nCount = m_pltAnnToolBar->GetButtonCount(); m_pltAnnToolBar->PutButtonBitmapUp( m_pltAnnToolBar->GetButtonCount(), pRaster->GetBitmap() ); m_pltAnnToolBar->PutButtonToolTipTextID(m_pltAnnToolBar->GetButtonCount(), -1); m_pltAnnToolBar->PutButtonToolTipText(m_pltAnnToolBar->GetButtonCount(), "User defined tool"); m_pltAnnToolBar->PutButtonCount( m_pltAnnToolBar->GetButtonCount() + 1 ); } pRasterIO->Release(); } } SysFreeString(lpLic); pRasterFactory->Release(); } } void CAnnCOMView::SetUpAnnToolBar() { m_pltAnnToolBar->PutEnableMethodErrors (VARIANT_TRUE); IDispatch *pDispatch=NULL; (m_ltRasView.GetControlUnknown())->QueryInterface(IID_IDispatch, (void**)&pDispatch); m_pltAnnToolBar->PutAnnParentRasterView(pDispatch); if(pDispatch) pDispatch->Release(); m_pltAnnToolBar->Create (GetRightOffset(), 0.0f, ANN_TOOLALIGN_TOP | ANN_TOOLALIGN_RIGHT); AddUserDefinedButton(); AnnToolConstants nAnnTool = m_pltAnn->GetAnnTool(); m_pltAnnToolBar->PutTool(nAnnTool); } void CAnnCOMView::OnViewAnnotationtoolbar() { static const WCHAR BASED_CODE _szLicString[] = L"LEADTOOLS OCX Copyright (c) 1991-2004 LEAD Technologies, Inc."; if (!m_pltAnnToolBar) { HRESULT hr = ::CoCreateInstance(CLSID_LEADRasterAnnToolBar, NULL, CLSCTX_ALL, IID_ILEADRasterAnnToolBar, (void **)&m_pltAnnToolBar); if (!m_pltAnnToolBar) { MessageBox (TEXT("FAILURE"), TEXT("Failed to create TOOLBAR")); return; } SetUpAnnToolBar(); } if (m_pltAnnToolBar->GetToolBarhWnd() == NULL) { SetUpAnnToolBar(); } m_bToolBarVisible = !m_bToolBarVisible; m_pltAnnToolBar->PutVisible(m_bToolBarVisible); return; } void CAnnCOMView::OnUpdateViewAnnotationtoolbar(CCmdUI* pCmdUI) { if (AnnIsSupportLocked()) { pCmdUI->Enable(FALSE); pCmdUI->SetCheck(FALSE); } else { pCmdUI->Enable(m_ltRasView.GetRaster().GetBitmap() != 0); pCmdUI->SetCheck(m_bToolBarVisible); } } float CAnnCOMView::GetRightOffset() { RECT rc; CWnd *pMainWnd = this; pMainWnd->GetClientRect(&rc); pMainWnd->MapWindowPoints(&m_ltRasView, &rc); return (float)(rc.right); } void CAnnCOMView::AnnUnlocksupport() { CLEADRaster LeadRaster = m_ltRasView.GetRaster(); UNLOCKSUPPORT(LeadRaster); } int CAnnCOMView::AnnIsSupportLocked() { int bRet = FALSE; CLEADRaster LeadRaster = m_ltRasView.GetRaster(); bRet = LeadRaster.IsSupportLocked(L_SUPPORT_DOCUMENT); return bRet; } BEGIN_EVENTSINK_MAP(CAnnCOMView, CFormView) //{{AFX_EVENTSINK_MAP(CAnnCOMView) ON_EVENT(CAnnCOMView, IDC_LEADRASTERVIEW, 36 /* MagGlassOwnerDraw */, OnMagGlassOwnerDraw, VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() //void CAnnCOMView::OnLtAnnHypLinkLeadrasterview(long uMsg, long wParam, long lParam) //{ // // TODO: Add your control notification handler code here // AfxMessageBox("Object's Hyperlink was activated!"); //} void CAnnCOMView::HandleAnnCreate(long hObject) { AnnObjectType AnnObjType=ANN_OBJECT_CONTAINER; m_pltAnn->AnnGetType (hObject); AnnObjType = m_pltAnn->GetAnnType(); switch (AnnObjType) { case ANN_OBJECT_BUTTON: case ANN_OBJECT_HOTSPOT: case ANN_OBJECT_FREEHANDHOTSPOT: m_nTag ++; m_pltAnn->AnnSetTag (hObject, m_nTag); break; } } void CAnnCOMView::HandleAnnClicked(long hObject) { long lTag; AnnObjectType AnnObjType=ANN_OBJECT_CONTAINER; CString String; m_pltAnn->AnnGetType (hObject); AnnObjType = m_pltAnn->GetAnnType(); m_pltAnn->AnnGetTag (hObject); lTag = m_pltAnn->GetAnnTag(); switch (AnnObjType) { case ANN_OBJECT_BUTTON: String.Format (TEXT("Button with tag %ld was clicked"), lTag); break; case ANN_OBJECT_HOTSPOT: String.Format (TEXT("Hot Spot with tag %ld was clicked"), lTag); break; case ANN_OBJECT_FREEHANDHOTSPOT: String.Format (TEXT("Freehand Hot Spot with tag %ld was clicked"), lTag); break; } MessageBox (String, TEXT("CLICK notification")); } void CAnnCOMView::HandleAnnDrawn(long hObject) { m_pltAnn->PutAnnTool (ANN_TOOL_SELECT); } void CAnnCOMView::HandleAnnToolDestroy() { if (m_pltAnn) { m_pltAnn->PutAnnTool (ANN_TOOL_SELECT); m_pltAnnToolBar->put_AnnParentRasterView(NULL); //m_pltAnnToolBar = NULL; HOPKINS } m_bToolBarVisible = FALSE; } void CAnnCOMView::HandleAnnToolChecked(short iTool) { m_pltAnn->PutAnnTool ((AnnToolConstants)iTool); } void CAnnCOMView::HandleAnnMouseDown(short Button, short Shift, long x, long y) { m_x0 = x; m_y0 = y; if(m_pltAnn->GetAnnTool() == ANN_TOOL_USER_FIRST) { // unselect all the other objects m_pltAnn->AnnSetSelected(m_pltAnn->GetAnnContainer(), VARIANT_FALSE, VARIANT_TRUE); // create the ellipse and rectangle objects m_pltAnn->AnnCreate(ANN_OBJECT_RECT, VARIANT_TRUE, VARIANT_TRUE); m_hRectObject = m_pltAnn->GetAnnObject(); m_pltAnn->AnnCreate(ANN_OBJECT_ELLIPSE, VARIANT_TRUE, VARIANT_TRUE); m_hEllipseObject = m_pltAnn->GetAnnObject(); // set the automation defaults to the objects newly created m_pltAnn->AnnSetAutoDefaults(m_hRectObject, 0); m_pltAnn->AnnSetAutoDefaults(m_hEllipseObject, 0); // start defining them from the x, y coordinate m_pltAnn->AnnDefine(m_hRectObject, (float)x, (float)y, ANN_DEFINE_BEGINSET); m_pltAnn->AnnDefine(m_hEllipseObject, (float)x, (float)y, ANN_DEFINE_BEGINSET); } } void CAnnCOMView::HandleAnnMouseMove(short Button, short Shift, long x, long y) { if(Button == 1) { switch(m_pltAnn->GetAnnTool()) { case ANN_TOOL_USER_FIRST: // update the objects from the x, y coordinate m_pltAnn->AnnDefine(m_hRectObject, (float)x, (float)y, ANN_DEFINE_UPDATE); m_pltAnn->AnnDefine(m_hEllipseObject, (float)x, (float)y, ANN_DEFINE_UPDATE); break; case ANN_TOOL_ELLIPSE: case ANN_TOOL_RECT: AdjustMousePos(Shift, x, y); break; } } } void CAnnCOMView::HandleAnnMouseUp(short Button, short Shift, long x, long y) { CString str = ""; switch(m_pltAnn->GetAnnTool()) { case ANN_TOOL_USER_FIRST: m_pltAnn->AnnDefine(m_hRectObject, (float)x, (float)y, ANN_DEFINE_END); m_pltAnn->AnnDefine(m_hEllipseObject, (float)x, (float)y, ANN_DEFINE_END); m_pltAnn->AnnSetSelected(m_hRectObject, VARIANT_TRUE, VARIANT_FALSE); m_pltAnn->AnnSetSelected(m_hEllipseObject, VARIANT_TRUE, VARIANT_FALSE); m_pltAnn->AnnGroup(m_pltAnn->GetAnnContainer(), ANN_FLAG_RECURSE + ANN_FLAG_SELECTED, str.AllocSysString()); // The user-defined tool doesn't fire the annDrawn event, so we'll send them HandleAnnDrawn((long)m_hEllipseObject); HandleAnnDrawn((long)m_hRectObject); m_hEllipseObject = m_hRectObject = NULL; break; case ANN_TOOL_ELLIPSE: case ANN_TOOL_RECT: AdjustMousePos(Shift, x, y); break; } } void CAnnCOMView::OnInitialUpdate() { CFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class AnnUnlocksupport(); if (AnnIsSupportLocked()) { CMainFrame * pFrame = (CMainFrame *) GetParentFrame (); CMenu * pMenu = pFrame->GetMenu(); CMenu *pMenuEdit = pMenu->GetSubMenu(1); //Disable Edit->Tool and Edit->User Mode sub menus pMenuEdit->EnableMenuItem (3, MF_GRAYED | MF_BYPOSITION); pMenuEdit->EnableMenuItem (4, MF_GRAYED | MF_BYPOSITION); } m_ltRasView.SetDoubleBuffer(m_bDoubleBuffer); HRESULT hr = ::CoCreateInstance(CLSID_LEADRasterAnnotation, NULL, CLSCTX_ALL, IID_ILEADRasterAnnotation, (void**)&m_pltAnn); if(FAILED(hr)) { AfxMessageBox(TEXT("Cannot create the Annotation object! Register the annotation object and run the the demo again.")); return; } m_pltAnn->PutEnableMethodErrors (VARIANT_FALSE); m_pltAnn->PutAnnUserMode (ANN_USERMODE_DESIGN); m_pltAnn->PutAnnTool (ANN_TOOL_SELECT); m_pltAnn->AnnSetOptions (ANN_OPTIONS_NEW_ALL); PostMessage(WM_COMMAND, ID_VIEW_ANNOTATIONTOOLBAR, 0); //Instantiate the sink class and hold a pointer to it. m_pRasterAnnSink = new CRasterAnnSink; m_pRasterAnnSink->m_pView = this; //Establish a connection between source and sink. LPUNKNOWN pUnkSink = m_pRasterAnnSink->GetIDispatch(FALSE); AfxConnectionAdvise(m_pltAnn, DIID__LEADRasterAnnotationEvents, pUnkSink, FALSE, &m_dwCookie); m_phCursorDefaultAnnDrawNew = m_pltAnn->GetAnnAutoCursor(ANN_AUTOCURSOR_DRAWNEW); m_phCursorDefaultAnnHandle = m_pltAnn->GetAnnAutoCursor(ANN_AUTOCURSOR_HANDLE); m_phCursorDefaultAnnMove = m_pltAnn->GetAnnAutoCursor(ANN_AUTOCURSOR_MOVE); m_phCursorDefaultAnnSelect = m_pltAnn->GetAnnAutoCursor(ANN_AUTOCURSOR_SELECT); goto init_exit_point0; init_exit_point0: return; } short CAnnCOMView::ShiftState() { BOOL bShift = (GetKeyState(VK_SHIFT) < 0); BOOL bCtrl = (GetKeyState(VK_CONTROL) < 0); BOOL bAlt = (GetKeyState(VK_MENU) < 0); return (short)(bShift + (bCtrl << 1) + (bAlt << 2)); } short CAnnCOMView::MouseButton(unsigned int uKeyState) { return (short)(uKeyState & (MK_LBUTTON|MK_RBUTTON|MK_MBUTTON)); } void CAnnCOMView::AdjustMousePos(int Shift, long x, long y) { long dx, dy; // if shift key is down, draw rectangles or circles if(Shift == 1) { // if shift key is down, force the creation of squares dx = ABS(x - m_x0); dy = ABS(y - m_y0); if (dx > dy) { // adjust y to be as far from m_y0 as x is from m_x0 if(y > m_y0) y = m_y0 + dx; else y = m_y0 - dx; } else { // adjust x to be as far from m_x0 as y is from m_y0 if (x > m_x0) x = m_x0 + dy; else x = m_x0 - dy; } // set the mouse cursor and update its position m_pltAnn->SetMousePos((float)x, (float)y, VARIANT_FALSE); } } void CAnnCOMView::OnEditUsermodeDesign() { if ((m_pltAnnToolBar) && (m_pltAnnToolBar->GetToolBarhWnd() != NULL)) { ::ShowWindow ((HWND)m_pltAnnToolBar->GetToolBarhWnd (), SW_SHOW); m_bToolBarVisible = TRUE; m_pltAnn->PutAnnUserMode (ANN_USERMODE_DESIGN); } } void CAnnCOMView::OnUpdateEditUsermodeDesign(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnUserMode() == ANN_USERMODE_DESIGN); } void CAnnCOMView::OnEditUsermodeNone() { if ((m_pltAnnToolBar) && (m_pltAnnToolBar->GetToolBarhWnd() != NULL)) { ::ShowWindow ((HWND)m_pltAnnToolBar->GetToolBarhWnd (), SW_HIDE); m_bToolBarVisible = FALSE; m_pltAnn->PutAnnUserMode (ANN_USERMODE_NONE); } } void CAnnCOMView::OnUpdateEditUsermodeNone(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnUserMode() == ANN_USERMODE_NONE); } void CAnnCOMView::OnEditUsermodeRun() { if ((m_pltAnnToolBar) && (m_pltAnnToolBar->GetToolBarhWnd() != NULL)) { ::ShowWindow ((HWND)m_pltAnnToolBar->GetToolBarhWnd (), SW_HIDE); m_bToolBarVisible = FALSE; m_pltAnn->PutAnnUserMode (ANN_USERMODE_RUN); } } void CAnnCOMView::OnUpdateEditUsermodeRun(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnUserMode() == ANN_USERMODE_RUN); } void CAnnCOMView::OnEditCopy() { m_ltRasView.GetRaster().Copy(COPY_DIB | COPY_DDB | COPY_PALETTE); m_pltAnn->AnnCopy(ANN_FMT_NATIVE, VARIANT_FALSE, VARIANT_FALSE); } void CAnnCOMView::OnUpdateEditCopy(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ltRasView.GetRaster().GetBitmap() != 0); } void CAnnCOMView::OnEditPaste() { CLEADRaster LeadRaster = m_ltRasView.GetRaster(); m_ltRasView.SetBackErase(FALSE); LeadRaster.Paste(0); InitAnnotation (); if(m_pltAnn->GetAnnPasteReady() == VARIANT_TRUE) m_pltAnn->AnnPaste(); if(m_ltRasView.GetHasMagGlass()) { m_ltRasView.StopMagGlass(); m_pltAnn->AnnEnableMagGlass = FALSE; m_bMagGlass = FALSE; } RecalcSizes(); } void CAnnCOMView::OnUpdateEditPaste(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ltRasView.GetRaster().Paste(PASTE_ISREADY) != 0); } void CAnnCOMView::OnEditLockannotations() { CPassDlg PassDlg; if(PassDlg.DoModal() == IDOK) m_pltAnn->AnnLock(m_pltAnn->GetAnnContainer(), PassDlg.m_csKey.AllocSysString(), VARIANT_TRUE); } void CAnnCOMView::OnUpdateEditLockannotations(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnCOMView::OnEditUnlockannotations() { // TODO: Add your command handler code here CPassDlg PassDlg; if(PassDlg.DoModal() == IDOK) m_pltAnn->AnnUnlock(m_pltAnn->GetAnnContainer(), PassDlg.m_csKey.AllocSysString()); } void CAnnCOMView::OnUpdateEditUnlockannotations(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnCOMView::OnEditShowlockedobjects() { m_pltAnn->PutAnnShowLockedIcon(!m_pltAnn->GetAnnShowLockedIcon()); } void CAnnCOMView::OnUpdateEditShowlockedobjects(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); pCmdUI->SetCheck(m_pltAnn->GetAnnShowLockedIcon()); } void CAnnCOMView::OnEditRealizeredactobjects() { m_pltAnn->AnnRealize(VARIANT_TRUE); } void CAnnCOMView::OnUpdateEditRealizeredactobjects(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnCOMView::OnEditRestoreredactobjects() { m_pltAnn->AnnUnrealize(m_pltAnn->GetAnnContainer(), VARIANT_FALSE); } void CAnnCOMView::OnUpdateEditRestoreredactobjects(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnCOMView::OnEditWangcompatibletagmode() { m_bWangMode = !m_bWangMode; } void CAnnCOMView::OnUpdateEditWangcompatibletagmode(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); pCmdUI->SetCheck(m_bWangMode); } void CAnnCOMView::RecalcSizes() { CLEADRaster LeadRaster = m_ltRasView.GetRaster (); if(m_bFitToWindow) { int cxZoom, cyZoom; cxZoom = (int) ((long) LeadRaster.GetScaleWidth() * 100 / LeadRaster.GetBitmapWidth()); cyZoom = (int) ((long) LeadRaster.GetScaleHeight() * 100 / LeadRaster.GetBitmapHeight()); SetZoom(max(min(cxZoom, cyZoom), 1)); } else SetZoom(m_nZoomPercent); if(m_bMagGlass) { StopMagnifyGlass(); StartMagnifyGlass(); } } void CAnnCOMView::SetZoom(int percent) { CLEADRaster LeadRaster = m_ltRasView.GetRaster (); m_nZoomPercent = percent; if (LeadRaster.GetBitmap()) { m_ltRasView.SetAutoRepaint(FALSE); m_ltRasView.SetDstRect(m_ltRasView.GetDstLeft(), m_ltRasView.GetDstTop(), LeadRaster.GetBitmapWidth() * percent / 100, LeadRaster.GetBitmapHeight() * percent / 100); m_ltRasView.SetDstClipRect(m_ltRasView.GetDstLeft(), m_ltRasView.GetDstTop(), m_ltRasView.GetDstWidth(), m_ltRasView.GetDstHeight()); m_ltRasView.SetAutoRepaint(TRUE); } } void CAnnCOMView::InitAnnotation() { CLEADRaster LeadRaster = m_ltRasView.GetRaster(); LeadRaster.SetScaleMode (SCALEMODE_PIXEL); IDispatch *pDispatch=NULL; (m_ltRasView.GetControlUnknown())->QueryInterface(IID_IDispatch, (void**)&pDispatch); if(pDispatch==NULL) return ; m_pltAnn->PutAnnParentRasterView(pDispatch); if(!m_pltAnnToolBar) OnViewAnnotationtoolbar(); if(pDispatch) pDispatch->Release(); m_pltAnn->PutAnnAutoMenuEnable (TRUE); m_pltAnn->PutAnnAutoDrawEnable (TRUE); if(m_bAnnHilightCustom) { CPictureHolder PicHolder; PicHolder.CreateFromIcon(theApp.m_hCursorAnnDrawNew); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_DRAWNEW, (IPictureDisp*)PicHolder.m_pPict); PicHolder.CreateFromIcon(theApp.m_hCursorAnnHandle); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_HANDLE, (IPictureDisp*)PicHolder.m_pPict); PicHolder.CreateFromIcon(theApp.m_hCursorAnnMove); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_MOVE, (IPictureDisp*)PicHolder.m_pPict); PicHolder.CreateFromIcon(theApp.m_hCursorAnnSelect); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_SELECT, (IPictureDisp*)PicHolder.m_pPict ); } } void CAnnCOMView::OnViewNormal() { m_bFitToWindow = FALSE; m_nZoomPercent = 100; RecalcSizes(); } void CAnnCOMView::OnUpdateViewNormal(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ltRasView.GetRaster().GetBitmap() != 0); pCmdUI->SetCheck(!m_bFitToWindow && (m_nZoomPercent == 100)); } void CAnnCOMView::OnViewFitimagetowindow() { m_bFitToWindow = TRUE; RecalcSizes(); } void CAnnCOMView::OnUpdateViewFitimagetowindow(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ltRasView.GetRaster().GetBitmap() != 0); pCmdUI->SetCheck(m_bFitToWindow); } void CAnnCOMView::OnViewZoom() { CRangeDlg dlg; dlg.m_strTitle = _T("Zoom"); dlg.m_strLabel = _T("&Amount"); dlg.m_nValue = m_nZoomPercent; dlg.m_nMin = 1; dlg.m_nMax = 800; dlg.m_nPage = 100; if(dlg.DoModal() == IDOK) { m_bFitToWindow = FALSE; m_nZoomPercent = dlg.m_nValue; RecalcSizes(); } } void CAnnCOMView::OnUpdateViewZoom(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ltRasView.GetRaster().GetBitmap() != 0); pCmdUI->SetCheck(!m_bFitToWindow && m_nZoomPercent != 100); } void CAnnCOMView::OnToolaudio() { m_pltAnn->PutAnnTool(ANN_TOOL_AUDIO); } void CAnnCOMView::OnToolvideo() { m_pltAnn->PutAnnTool(ANN_TOOL_VIDEO); } void CAnnCOMView::OnUpdateToolaudio(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_AUDIO); } void CAnnCOMView::OnUpdateToolvideo(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_VIDEO); } void CAnnCOMView::OnToolbutton() { m_pltAnn->PutAnnTool(ANN_TOOL_BUTTON); } void CAnnCOMView::OnUpdateToolbutton(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_BUTTON); } void CAnnCOMView::OnToolellipse() { m_pltAnn->PutAnnTool(ANN_TOOL_ELLIPSE); } void CAnnCOMView::OnUpdateToolellipse(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_ELLIPSE); } void CAnnCOMView::OnToolfreehand() { m_pltAnn->PutAnnTool(ANN_TOOL_FREEHAND); } void CAnnCOMView::OnUpdateToolfreehand(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_FREEHAND); } void CAnnCOMView::OnToolhilite() { m_pltAnn->PutAnnTool(ANN_TOOL_HILITE); } void CAnnCOMView::OnUpdateToolhilite(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_HILITE); } void CAnnCOMView::OnToolhotspot() { m_pltAnn->PutAnnTool(ANN_TOOL_HOTSPOT); } void CAnnCOMView::OnUpdateToolhotspot(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_HOTSPOT); } void CAnnCOMView::OnToolline() { m_pltAnn->PutAnnTool(ANN_TOOL_LINE); } void CAnnCOMView::OnUpdateToolline(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_LINE); } void CAnnCOMView::OnToolnote() { m_pltAnn->PutAnnTool(ANN_TOOL_NOTE); } void CAnnCOMView::OnUpdateToolnote(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_NOTE); } void CAnnCOMView::OnToolpointer() { m_pltAnn->PutAnnTool(ANN_TOOL_POINTER); } void CAnnCOMView::OnUpdateToolpointer(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_POINTER); } void CAnnCOMView::OnToolpolygon() { m_pltAnn->PutAnnTool(ANN_TOOL_POLYGON); } void CAnnCOMView::OnUpdateToolpolygon(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_POLYGON); } void CAnnCOMView::OnToolpolyline() { m_pltAnn->PutAnnTool(ANN_TOOL_POLYLINE); } void CAnnCOMView::OnUpdateToolpolyline(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_POLYLINE); } void CAnnCOMView::OnToolrect() { m_pltAnn->PutAnnTool(ANN_TOOL_RECT); } void CAnnCOMView::OnUpdateToolrect(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_RECT); } void CAnnCOMView::OnToolredact() { m_pltAnn->PutAnnTool(ANN_TOOL_REDACT); } void CAnnCOMView::OnUpdateToolredact(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_REDACT); } void CAnnCOMView::OnToolselect() { m_pltAnn->PutAnnTool(ANN_TOOL_SELECT); } void CAnnCOMView::OnUpdateToolselect(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_SELECT); } void CAnnCOMView::OnToolstamp() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP); } void CAnnCOMView::OnUpdateToolstamp(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP); } void CAnnCOMView::OnTooltext() { m_pltAnn->PutAnnTool(ANN_TOOL_TEXT); } void CAnnCOMView::OnUpdateTooltext(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_TEXT); } void CAnnCOMView::OnToolruler() { m_pltAnn->PutAnnTool(ANN_TOOL_RULER); } void CAnnCOMView::OnUpdateToolruler(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_RULER); } void CAnnCOMView::OnToolcrossproduct() { m_pltAnn->PutAnnTool(ANN_TOOL_CROSSPRODUCT); } void CAnnCOMView::OnUpdateToolcrossproduct(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_CROSSPRODUCT); } void CAnnCOMView::OnToolpoint() { m_pltAnn->PutAnnTool(ANN_TOOL_POINT); } void CAnnCOMView::OnUpdateToolpoint(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_POINT); } void CAnnCOMView::OnToolprotractor() { m_pltAnn->PutAnnTool(ANN_TOOL_PROTRACTOR); } void CAnnCOMView::OnUpdateToolprotractor(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_PROTRACTOR); } void CAnnCOMView::OnToolpushpin() { m_pltAnn->PutAnnTool(ANN_TOOL_PUSHPIN); } void CAnnCOMView::OnUpdateToolpushpin(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_PUSHPIN); } void CAnnCOMView::OnToolstampApproved() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_APPROVED); } void CAnnCOMView::OnUpdateToolstampApproved(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_APPROVED); } void CAnnCOMView::OnToolstampAssigned() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_ASSIGNED); } void CAnnCOMView::OnUpdateToolstampAssigned(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_ASSIGNED); } void CAnnCOMView::OnToolstampChecked() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_CHECKED); } void CAnnCOMView::OnUpdateToolstampChecked(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_CHECKED); } void CAnnCOMView::OnToolstampClatprv() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_CLATPRV); } void CAnnCOMView::OnUpdateToolstampClatprv(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_CLATPRV); } void CAnnCOMView::OnToolstampCopy() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_COPY); } void CAnnCOMView::OnUpdateToolstampCopy(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_COPY); } void CAnnCOMView::OnToolstampDraft() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_DRAFT); } void CAnnCOMView::OnUpdateToolstampDraft(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_DRAFT); } void CAnnCOMView::OnToolstampExtended() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_EXTENDED); } void CAnnCOMView::OnUpdateToolstampExtended(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_EXTENDED); } void CAnnCOMView::OnToolstampFax() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_FAX); } void CAnnCOMView::OnUpdateToolstampFax(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_FAX); } void CAnnCOMView::OnToolstampFaxed() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_FAXED); } void CAnnCOMView::OnUpdateToolstampFaxed(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_FAXED); } void CAnnCOMView::OnToolstampImportant() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_IMPORTANT); } void CAnnCOMView::OnUpdateToolstampImportant(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_IMPORTANT); } void CAnnCOMView::OnToolstampInvoice() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_INVOICE); } void CAnnCOMView::OnUpdateToolstampInvoice(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_INVOICE); } void CAnnCOMView::OnToolstampNotice() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_NOTICE); } void CAnnCOMView::OnUpdateToolstampNotice(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_NOTICE); } void CAnnCOMView::OnToolstampOfficial() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_OFFICIAL); } void CAnnCOMView::OnUpdateToolstampOfficial(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_OFFICIAL); } void CAnnCOMView::OnToolstampOnfile() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_ONFILE); } void CAnnCOMView::OnUpdateToolstampOnfile(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_ONFILE); } void CAnnCOMView::OnToolstampPaid() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_PAID); } void CAnnCOMView::OnUpdateToolstampPaid(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_PAID); } void CAnnCOMView::OnToolstampPassed() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_PASSED); } void CAnnCOMView::OnUpdateToolstampPassed(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_PASSED); } void CAnnCOMView::OnToolstampPending() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_PENDING); } void CAnnCOMView::OnUpdateToolstampPending(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_PENDING); } void CAnnCOMView::OnToolstampProcessed() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_PROCESSED); } void CAnnCOMView::OnUpdateToolstampProcessed(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_PROCESSED); } void CAnnCOMView::OnToolstampReceived() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_RECEIVED); } void CAnnCOMView::OnUpdateToolstampReceived(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_RECEIVED); } void CAnnCOMView::OnToolstampRejected() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_REJECTED); } void CAnnCOMView::OnUpdateToolstampRejected(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_REJECTED); } void CAnnCOMView::OnToolstampRelease() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_RELEASE); } void CAnnCOMView::OnUpdateToolstampRelease(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_RELEASE); } void CAnnCOMView::OnToolstampSent() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_SENT); } void CAnnCOMView::OnUpdateToolstampSent(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_SENT); } void CAnnCOMView::OnToolstampShipped() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_SHIPPED); } void CAnnCOMView::OnUpdateToolstampShipped(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_SHIPPED); } void CAnnCOMView::OnToolstampTopsecret() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_TOPSECRET); } void CAnnCOMView::OnUpdateToolstampTopsecret(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_TOPSECRET); } void CAnnCOMView::OnToolstampUrgent() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_URGENT); } void CAnnCOMView::OnUpdateToolstampUrgent(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_URGENT); } void CAnnCOMView::OnToolstampVoid() { m_pltAnn->PutAnnTool(ANN_TOOL_STAMP_VOID); } void CAnnCOMView::OnUpdateToolstampVoid(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_STAMP_VOID); } /*void CAnnCOMView::OnTooluser() { m_pltAnn->PutAnnTool(ANN_TOOL_USER_FIRST); } void CAnnCOMView::OnUpdateTooluser(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_USER_FIRST); } */ void CAnnCOMView::OnDraw(CDC* pDC) { #if 0 CRect rcClip; CSize winext; CSize viewext; CSize paintext; CLEADRaster LeadRaster = m_ltRasView.GetRaster(); if(LeadRaster.GetBitmap() != 0 ) if(pDC->IsPrinting()) { pDC->SaveDC(); winext = pDC->GetWindowExt(); viewext = pDC->GetViewportExt(); paintext.cx = /*MulDiv(*/(int)LeadRaster.GetBitmapWidth()/*, viewext.cx, winext.cx)*/; paintext.cy = /*MulDiv(*/(int)LeadRaster.GetBitmapHeight()/*, viewext.cy, winext.cy)*/; pDC->SetMapMode(MM_TEXT); m_ltRasView.Render((OLE_HANDLE) pDC->m_hDC, (float) 0, (float) 0, (float) paintext.cx, (float) paintext.cy); pDC->RestoreDC(-1); } #endif } void CAnnCOMView::OnFileSave() { int nRet; RECT rcWin; TCHAR szAnnFile[256]; CString sFileName; int nMode=0; ILEADRasterIO * pltRasterIO = NULL; CString strFileName = ""; ::SetRect(&rcWin, 0, 0, 1, 1); theApp.m_pRasterFileDlg->PutEnableMethodErrors(FALSE); theApp.m_pRasterFileDlg->PutFileDlgFlags(0); theApp.m_pRasterFileDlg->PutSaveQFactor(2); theApp.m_pRasterFileDlg->PutPageNumber(1); theApp.m_pRasterFileDlg->PutDialogTitle("Save File"); theApp.m_pRasterFileDlg->PutUIFlags( SAVE_SHOW_FILEOPTIONS_MULTIPAGE | SAVE_SHOW_FILEOPTIONS_PROGRESSIVE | SAVE_SHOW_FILEOPTIONS_QFACTOR| SAVE_SHOW_FILEOPTIONS_STAMP | SAVE_SHOW_FILEOPTIONS_BASICJ2KOPTIONS| SAVE_SHOW_FILEOPTIONS_J2KOPTIONS ); nRet = theApp.m_pRasterFileDlg->ShowSaveDlg((long)theApp.m_pMainWnd->m_hWnd); if(nRet != 0 || theApp.m_pRasterFileDlg->GetDialogStatus() != DLG_OK) { return; } ::CoCreateInstance(CLSID_LEADRasterIO, NULL, CLSCTX_ALL, IID_ILEADRasterIO, (void**)&pltRasterIO); if (!pltRasterIO) return; pltRasterIO->PutEnableMethodErrors (VARIANT_FALSE); switch(theApp.m_pRasterFileDlg->GetSaveFormat()) { case FILE_TIF_JPEG: case FILE_TIF_JPEG_422: case FILE_TIF_JPEG_411: 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: m_pltAnn->AnnSaveTag(pltRasterIO, m_bWangMode, VARIANT_FALSE); nMode = 1; break; } sFileName = (LPCTSTR)theApp.m_pRasterFileDlg->GetFileName(); strFileName = sFileName; if (pltRasterIO) { RECT rcClient; BSTR strFile = strFileName.AllocSysString(); GetClientRect(&rcClient); SetJ2KOptions(pltRasterIO); nRet = pltRasterIO->Save(m_ltRasView.GetRaster().m_lpDispatch, strFile, (RasterFileConstants)theApp.m_pRasterFileDlg->GetSaveFormat(), theApp.m_pRasterFileDlg->GetSaveBitsPerPixel(), (QFactorConstants)theApp.m_pRasterFileDlg->GetSaveQFactor(), SAVE_OVERWRITE ); if( nRet != 0) { CString str; str.Format(TEXT("A LEADTOOLS error has occured.\nCODE = %d"), nRet); MessageBox(str); return; } if (nMode == 0) { GetAnnName (sFileName.GetBuffer(0), szAnnFile); strFileName = szAnnFile; strFile = strFileName.AllocSysString(); m_pltAnn->AnnSave (strFile, ANN_FMT_XML, VARIANT_FALSE, SAVE_OVERWRITE, 1); } pltRasterIO->Release(); } } void CAnnCOMView::GetAnnName(LPTSTR szFilename, LPTSTR szAnnName) { LPTSTR lp; #ifdef _UNICODE if( (lp = wcsrchr(szFilename,'.')) == NULL ) #else if( (lp = strrchr(szFilename,'.')) == NULL ) #endif { lstrcpy(szAnnName,szFilename); lstrcat(szAnnName,TEXT(".ann")); } else { memcpy(szAnnName,szFilename,(lp-szFilename)*sizeof(TCHAR)); lstrcpy(szAnnName+(lp-szFilename),TEXT(".ann")); } } BOOL CAnnCOMView::DestroyWindow() { return CFormView::DestroyWindow(); } void CAnnCOMView::OnClose() { CFormView::OnClose(); } void CAnnCOMView::OnDestroy() { if(m_ltRasView.GetRaster().GetBitmap()) { if(m_ltRasView.GetHasMagGlass()) { m_ltRasView.StopMagGlass(); m_pltAnn->AnnEnableMagGlass = FALSE; m_bMagGlass = FALSE; } } if (m_pltAnnToolBar) { m_pltAnnToolBar->put_AnnParentRasterView(NULL); m_pltAnnToolBar->Release (); m_pltAnnToolBar = NULL; } if (m_pltAnn) { //Terminate a connection between source and sink. LPUNKNOWN pUnkSink = m_pRasterAnnSink->GetIDispatch(FALSE); AfxConnectionUnadvise(m_pltAnn, DIID__LEADRasterAnnotationEvents, pUnkSink, FALSE, m_dwCookie); delete m_pRasterAnnSink; m_pRasterAnnSink = NULL; m_pltAnn->Release (); m_pltAnn = NULL; } CFormView::OnDestroy(); } LRESULT CAnnCOMView::OnDoRealize(WPARAM wParam, LPARAM lParam) { if(!IsWindow(m_ltRasView.m_hWnd) || !m_ltRasView.GetRaster().GetBitmap()) return FALSE; if(lParam) { return m_ltRasView.SendMessage(WM_PALETTECHANGED, wParam); } else { return m_ltRasView.SendMessage(WM_QUERYNEWPALETTE, wParam); } } void CAnnCOMView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView); CAnnCOMApp * pApp = (CAnnCOMApp *)AfxGetApp (); if (bActivate) { ASSERT(pActivateView == this); OnDoRealize((WPARAM)pApp->m_pMainWnd->m_hWnd, (LPARAM) FALSE); } } void CAnnCOMView::OnUpdateFilePrintSetup(CCmdUI* pCmdUI) { pCmdUI->Enable (m_ltRasView.GetRaster().GetBitmap()); } void CAnnCOMView::OnUpdateFilePrintPreview(CCmdUI* pCmdUI) { pCmdUI->Enable (m_ltRasView.GetRaster().GetBitmap()); } void CAnnCOMView::OnUpdateFilePrint(CCmdUI* pCmdUI) { pCmdUI->Enable (m_ltRasView.GetRaster().GetBitmap()); } void CAnnCOMView::OnToolcurve() { m_pltAnn->PutAnnTool(ANN_TOOL_CURVE); } void CAnnCOMView::OnUpdateToolcurve(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_CURVE); } void CAnnCOMView::OnToolclosedcurve() { m_pltAnn->PutAnnTool(ANN_TOOL_CURVECLOSED); } void CAnnCOMView::OnUpdateToolclosedcurve(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_CURVECLOSED); } void CAnnCOMView::OnToolrtf() { m_pltAnn->PutAnnTool(ANN_TOOL_RTF); } void CAnnCOMView::OnUpdateToolrtf(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_RTF); } void CAnnCOMView::OnTooltextpointer() { m_pltAnn->PutAnnTool(ANN_TOOL_TEXTPOINTER); } void CAnnCOMView::OnUpdateTooltextpointer(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_TEXTPOINTER); } void CAnnCOMView::OnToolencrypt() { m_pltAnn->PutAnnTool(ANN_TOOL_ENCRYPT); } void CAnnCOMView::OnUpdateToolencrypt(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_ENCRYPT); } void CAnnCOMView::OnToolfreehandhotspot() { m_pltAnn->PutAnnTool(ANN_TOOL_FREEHANDHOTSPOT); } void CAnnCOMView::OnUpdateToolfreehandhotspot(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_FREEHANDHOTSPOT); } void CAnnCOMView::OnToolpolyruler() { m_pltAnn->PutAnnTool(ANN_TOOL_POLYRULER); } void CAnnCOMView::OnUpdateToolpolyruler(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_pltAnn->GetAnnTool () == ANN_TOOL_POLYRULER); } void CAnnCOMView::OnApplyEncryptors() { m_pltAnn->Flags = ANN_FLAG_RECURSE; m_pltAnn->AnnEncryptApply(m_pltAnn->GetAnnContainer() ,ANN_ENCRYPTAPPLY_ENCRYPTOR); } void CAnnCOMView::OnApplyDecryptors() { m_pltAnn->Flags = ANN_FLAG_RECURSE; m_pltAnn->AnnEncryptApply(m_pltAnn->GetAnnContainer(),ANN_ENCRYPTAPPLY_DECRYPTOR); } void CAnnCOMView::OnUpdateApplyEncryptors(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnCOMView::OnUpdateApplyDecryptors(CCmdUI* pCmdUI) { if (m_pltAnn->GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnCOMView::OnDoubleBuffer() { m_bDoubleBuffer = !m_bDoubleBuffer; m_ltRasView.SetDoubleBuffer(m_bDoubleBuffer); } void CAnnCOMView::OnUpdateDoubleBuffer(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bDoubleBuffer); } void CAnnCOMView::OnMagGlassOwnerDraw(long hWnd, long hMemDC, long lXPos, long lYPos, long lMagGlassTop, long lMagGlassLeft, long lMagGlassBottom, long lMagGlassRight) { m_pltAnn->AnnMagGlass(hMemDC, lXPos, lYPos, abs(lMagGlassRight-lMagGlassLeft), abs(lMagGlassBottom-lMagGlassTop), m_nZoom); } void CAnnCOMView::OnViewMagglass() { m_bMagGlass = !m_bMagGlass; if(m_bMagGlass) { m_pltAnn->AnnEnableMagGlass = TRUE; m_ltRasView.SetEnableMagGlassDraw(TRUE); StartMagnifyGlass(); } else { StopMagnifyGlass(); m_ltRasView.SetEnableMagGlassDraw(FALSE); m_pltAnn->AnnEnableMagGlass = FALSE; } } void CAnnCOMView::OnUpdateViewMagglass(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ltRasView.GetRaster().GetBitmap() != 0); pCmdUI->SetCheck(m_bMagGlass); } void CAnnCOMView::StartMagnifyGlass() { m_ltRasView.StartMagGlass( 200, 200, m_nZoom , RGB(0, 0, 0), RGB(255, 255, 255), false, 1, false, CROSSHAIR_FINE, false, false); } void CAnnCOMView::StopMagnifyGlass() { m_ltRasView.StopMagGlass(); } void CAnnCOMView::SetJ2KOptions(ILEADRasterIO * pRasterIO) { pRasterIO->J2KUseColorTransform = theApp.m_pRasterFileDlg->SaveJ2KUseColorTransform; pRasterIO->J2KDerivedQuantization = theApp.m_pRasterFileDlg->SaveJ2KDerivedQuantization; pRasterIO->J2KCompressionControl = theApp.m_pRasterFileDlg->GetSaveJ2KCompressionControl(); pRasterIO->J2KCompressionRatio = theApp.m_pRasterFileDlg->SaveJ2KCompressionRatio; pRasterIO->J2KTargetFileSize = theApp.m_pRasterFileDlg->SaveJ2KTargetFileSize; pRasterIO->J2KXOsiz = theApp.m_pRasterFileDlg->SaveJ2KXOsiz; pRasterIO->J2KYOsiz = theApp.m_pRasterFileDlg->SaveJ2KYOsiz; pRasterIO->J2KXTsiz = theApp.m_pRasterFileDlg->SaveJ2KXTsiz; pRasterIO->J2KYTsiz = theApp.m_pRasterFileDlg->SaveJ2KYTsiz; pRasterIO->J2KXTOsiz = theApp.m_pRasterFileDlg->SaveJ2KXTOsiz; pRasterIO->J2KYTOsiz = theApp.m_pRasterFileDlg->SaveJ2KYTOsiz; for (int i =0 ;iPutJ2KXRsiz(i,theApp.m_pRasterFileDlg->GetSaveJ2KXRsiz(i)); pRasterIO->PutJ2KYRsiz(i,theApp.m_pRasterFileDlg->GetSaveJ2KYRsiz(i)); } pRasterIO->J2KDecompLevel = theApp.m_pRasterFileDlg->SaveJ2KDecompLevel; pRasterIO->J2KProgressOrder = theApp.m_pRasterFileDlg->GetSaveJ2KProgressOrder(); pRasterIO->J2KCodBlockWidth = theApp.m_pRasterFileDlg->SaveJ2KCodBlockWidth; pRasterIO->J2KCodBlockHeight = theApp.m_pRasterFileDlg->SaveJ2KCodBlockHeight; pRasterIO->J2KCBS_SelectiveACBypass = theApp.m_pRasterFileDlg->SaveJ2KCBS_SelectiveACBypass; pRasterIO->J2KCBS_ResetContextOnBoundaries = theApp.m_pRasterFileDlg->SaveJ2KCBS_ResetContextOnBoundaries; pRasterIO->J2KCBS_TerminationOnEachPass = theApp.m_pRasterFileDlg->SaveJ2KCBS_TerminationOnEachPass; pRasterIO->J2KCBS_VerticallyCausalContext = theApp.m_pRasterFileDlg->SaveJ2KCBS_VerticallyCausalContext; pRasterIO->J2KCBS_PredictableTermination = theApp.m_pRasterFileDlg->SaveJ2KCBS_PredictableTermination; pRasterIO->J2KCBS_ErrorResilienceSymbol = theApp.m_pRasterFileDlg->SaveJ2KCBS_ErrorResilienceSymbol; pRasterIO->J2KGuardBits = theApp.m_pRasterFileDlg->SaveJ2KGuardBits; pRasterIO->J2KDerivedBaseMantissa = theApp.m_pRasterFileDlg->SaveJ2KDerivedBaseMantissa; pRasterIO->J2KDerivedBaseExponent = theApp.m_pRasterFileDlg->SaveJ2KDerivedBaseExponent; pRasterIO->J2KUseSOPMarker = theApp.m_pRasterFileDlg->SaveJ2KUseSOPMarker; pRasterIO->J2KUseEPHMarker = theApp.m_pRasterFileDlg->SaveJ2KUseEPHMarker; } void CAnnCOMView::OnViewChangeHilightAndCursors() { CPictureHolder PicHolder; m_bAnnHilightCustom = !m_bAnnHilightCustom; m_pltAnn->PutAnnAutoHilightPen(m_bAnnHilightCustom ? RGB(0xC0, 0xC0, 0xC0) : RGB(0xFF, 0xFF, 0xFF)); PicHolder.CreateFromIcon(theApp.m_hCursorAnnDrawNew); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_DRAWNEW, m_bAnnHilightCustom ? (IPictureDisp*)PicHolder.m_pPict : m_phCursorDefaultAnnDrawNew); PicHolder.CreateFromIcon(theApp.m_hCursorAnnHandle); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_HANDLE, m_bAnnHilightCustom ? (IPictureDisp*)PicHolder.m_pPict : m_phCursorDefaultAnnHandle); PicHolder.CreateFromIcon(theApp.m_hCursorAnnMove); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_MOVE, m_bAnnHilightCustom ? (IPictureDisp*)PicHolder.m_pPict : m_phCursorDefaultAnnMove); PicHolder.CreateFromIcon(theApp.m_hCursorAnnSelect); m_pltAnn->PutAnnAutoCursor(ANN_AUTOCURSOR_SELECT, m_bAnnHilightCustom ? (IPictureDisp*)PicHolder.m_pPict : m_phCursorDefaultAnnSelect); } void CAnnCOMView::OnUpdateViewChangeHilightAndCursors(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bAnnHilightCustom); } void CAnnCOMView::OnNewOptions(UINT nID) { bool bToolbar = FALSE; unsigned int uOneOption = 0; unsigned int uOptions = 0; unsigned int uNewOptions = 0; uOptions = m_pltAnn->AnnGetOptions(); switch(nID) { case IDM_NEW_CHECKALL: uOptions = 0; uOneOption = ANN_OPTIONS_NEW_ALL; bToolbar = TRUE; break; case IDM_NEW_UNCHECKALL: uOptions = 0; uOneOption = 0; bToolbar = TRUE; break; case IDM_NEW_TOOLBAR: uOneOption = ANN_OPTIONS_NEW_TOOLBAR; bToolbar = TRUE; break; case IDM_NEW_METAFILES: uOneOption = ANN_OPTIONS_NEW_STAMP_METAFILES; break; case IDM_NEW_ALPHA: uOneOption = ANN_OPTIONS_NEW_ALPHA; break; case IDM_NEW_ROTATE: uOneOption = ANN_OPTIONS_NEW_ROTATE; break; case IDM_NEW_SIDE_HANDLES: uOneOption = ANN_OPTIONS_NEW_SIDE_HANDLES; break; case IDM_NEW_MULTI_SELECT: uOneOption = ANN_OPTIONS_NEW_MULTI_SELECT; break; case IDM_NEW_CURSORS: uOneOption = ANN_OPTIONS_NEW_CURSORS; break; case IDM_NEW_ESC_CANCEL: uOneOption = ANN_OPTIONS_NEW_ESC_CANCEL; break; case IDM_NEW_CALIBRATE_RULER: uOneOption = ANN_OPTIONS_NEW_CALIBRATE_RULER; break; case IDM_NEW_DOT_DASH_LINES: uOneOption = ANN_OPTIONS_NEW_DOT_DASH_LINES; break; case IDM_NEW_TEXT_OPTIONS: uOneOption = ANN_OPTIONS_NEW_TEXT_OPTIONS; break; } if (uOptions & uOneOption) uNewOptions = uOptions & ~uOneOption; else uNewOptions = uOptions | uOneOption; m_pltAnn->AnnSetOptions( uNewOptions); if (bToolbar) { // destroy the old toolbar, and recreate if (m_pltAnnToolBar) { m_pltAnnToolBar->put_AnnParentRasterView(NULL); m_pltAnnToolBar->Release (); m_pltAnnToolBar = NULL; } OnViewAnnotationtoolbar(); } } void CAnnCOMView::OnUpdateNewOptions(CCmdUI* pCmdUI) { unsigned int uOptions = 0; uOptions = m_pltAnn->AnnGetOptions(); HMENU hMenu = pCmdUI->m_pMenu->GetSafeHmenu(); CheckMenuItem(hMenu, IDM_NEW_TOOLBAR, (uOptions & ANN_OPTIONS_NEW_TOOLBAR) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_METAFILES, (uOptions & ANN_OPTIONS_NEW_STAMP_METAFILES) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_ALPHA, (uOptions & ANN_OPTIONS_NEW_ALPHA) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_ROTATE, (uOptions & ANN_OPTIONS_NEW_ROTATE) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_SIDE_HANDLES, (uOptions & ANN_OPTIONS_NEW_SIDE_HANDLES) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_MULTI_SELECT, (uOptions & ANN_OPTIONS_NEW_MULTI_SELECT) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_CURSORS, (uOptions & ANN_OPTIONS_NEW_CURSORS) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_ESC_CANCEL, (uOptions & ANN_OPTIONS_NEW_ESC_CANCEL) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_CALIBRATE_RULER, (uOptions & ANN_OPTIONS_NEW_CALIBRATE_RULER) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_DOT_DASH_LINES, (uOptions & ANN_OPTIONS_NEW_DOT_DASH_LINES) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_TEXT_OPTIONS, (uOptions & ANN_OPTIONS_NEW_TEXT_OPTIONS) ? MF_CHECKED : MF_UNCHECKED); } void CAnnCOMView::OnUpdateFileSave(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ltRasView.GetRaster().GetBitmap() != 0); }