/*[]=====================================================================[]*/ /*[] LeadTools C++ Class Library - Version 1.0 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2000 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ //include files #include "AnnBmp.h" #include "HpLnkDlg.h" //--------------------------------------------------------------------------- TAnnDemoBitmap::TAnnDemoBitmap() { m_bShowLocked=TRUE; m_nHotspots=m_nButtons=0; SetDisplayMode(DISPLAYMODE_SCALETOGRAY|DISPLAYMODE_FAVORBLACK,DISPLAYMODE_SCALETOGRAY); } //--------------------------------------------------------------------------- TAnnDemoBitmap::~TAnnDemoBitmap() { } //--------------------------------------------------------------------------- void TAnnDemoBitmap::ToolChecked(UINT uTool) { switch((UINT)uTool) { case ANNTOOL_SELECT: case ANNTOOL_LINE: case ANNTOOL_RECT: case ANNTOOL_ELLIPSE: case ANNTOOL_POLYLINE: case ANNTOOL_POLYGON: case ANNTOOL_POINTER: case ANNTOOL_FREEHAND: case ANNTOOL_HILITE: case ANNTOOL_REDACT: case ANNTOOL_TEXT: case ANNTOOL_NOTE: case ANNTOOL_STAMP: case ANNTOOL_BUTTON: case ANNTOOL_HOTSPOT: case ANNTOOL_AUDIO: case ANNTOOL_RULER: case ANNTOOL_CROSSPRODUCT : case ANNTOOL_POINT : case ANNTOOL_PROTRACTOR : case ANNTOOL_VIDEO : case ANNTOOL_PUSHPIN : case ANNTOOL_FREEHANDHOTSPOT : case ANNTOOL_STAMP_APPROVED : case ANNTOOL_STAMP_ASSIGNED : case ANNTOOL_STAMP_CHECKED : case ANNTOOL_STAMP_CLATPRV : case ANNTOOL_STAMP_COPY : case ANNTOOL_STAMP_DRAFT : case ANNTOOL_STAMP_EXTENDED : case ANNTOOL_STAMP_FAX : case ANNTOOL_STAMP_FAXED : case ANNTOOL_STAMP_IMPORTANT : case ANNTOOL_STAMP_INVOICE : case ANNTOOL_STAMP_NOTICE : case ANNTOOL_STAMP_OFFICIAL : case ANNTOOL_STAMP_ONFILE : case ANNTOOL_STAMP_PAID : case ANNTOOL_STAMP_PASSED : case ANNTOOL_STAMP_PENDING : case ANNTOOL_STAMP_PROCESSED : case ANNTOOL_STAMP_RECEIVED : case ANNTOOL_STAMP_REJECTED : case ANNTOOL_STAMP_RELEASE : case ANNTOOL_STAMP_SENT : case ANNTOOL_STAMP_SHIPPED : case ANNTOOL_STAMP_TOPSECRET : case ANNTOOL_STAMP_URGENT : case ANNTOOL_STAMP_VOID : case ANNTOOL_TEXTPOINTER : case ANNTOOL_ENCRYPT : case ANNTOOL_POLYRULER : case ANNTOOL_RTF : case ANNTOOL_CURVECLOSED : case ANNTOOL_CURVE : m_nAnnObject=uTool; GetAutomationObject().SetTool(uTool); if(GetToolBar().GetToolChecked()!=uTool) GetToolBar().SetToolChecked(uTool); break; } } //--------------------------------------------------------------------------- UINT TAnnDemoBitmap::GetCurrentObjectID() { return m_nAnnObject; } //--------------------------------------------------------------------------- L_VOID TAnnDemoBitmap::OnAnnEvent(L_UINT uAnnEvent,L_UINT32 lParam) { L_UINT32 uTag; LAnnotation* pAnnObj; char temp[200]; switch (uAnnEvent) { case LTANNEVENT_INSERT: pAnnObj=LAnnotation::CreateAnnObject((HANNOBJECT)lParam); if(pAnnObj) { if(pAnnObj->GetType()==ANNOBJECT_BUTTON) pAnnObj->SetTag(++m_nButtons,0); else if(pAnnObj->GetType()==ANNOBJECT_HOTSPOT) pAnnObj->SetTag(++m_nHotspots,0); pAnnObj->SetHandle(0); delete pAnnObj; } break; case LTANNEVENT_AUTOCLICKED: pAnnObj=LAnnotation::CreateAnnObject((HANNOBJECT)lParam); if(pAnnObj) { uTag=pAnnObj->GetTag(); switch(pAnnObj->GetType()) { case ANNOBJECT_BUTTON: wsprintf(temp,"Button with tag %lu was clicked",uTag); ::MessageBox(NULL,temp,"Event",MB_OK|MB_ICONINFORMATION); break; case ANNOBJECT_HOTSPOT: wsprintf(temp,"HotSpot with tag %lu was clicked",uTag); ::MessageBox(NULL,temp,"Event",MB_OK|MB_ICONINFORMATION); break; case ANNOBJECT_FREEHANDHOTSPOT: wsprintf(temp,"HotSpot with tag %lu was clicked",uTag); ::MessageBox(NULL,temp,"Event",MB_OK|MB_ICONINFORMATION); break; } pAnnObj->SetHandle(0); delete pAnnObj; } break; case LTANNEVENT_TOOLCHECKED : ToolChecked(lParam); break; case LTANNEVENT_AUTOENDSET: ToolChecked(ANNTOOL_SELECT); break; case LTANNEVENT_HYPERLINKMENU: GetHyperlink(LAnnotation::CreateAnnObject((HANNOBJECT)lParam)); break; case LTANNEVENT_HYPERLINK: ::MessageBox(NULL,"Object's hyperlink has been activated!","WM_LTANNEVENT",MB_OK); break; } } //--------------------------------------------------------------------------- void TAnnDemoBitmap::ShowLocked(BOOL bShow) { m_bShowLocked=bShow; GetContainerObject().ShowLockedIcon(bShow,ANNFLAG_RECURSE); } //--------------------------------------------------------------------------- BOOL TAnnDemoBitmap::IsLockedVisible() { return m_bShowLocked; } //--------------------------------------------------------------------------- void TAnnDemoBitmap::Realize() { GetContainerObject().Realize(GetHandle(),0,TRUE); } //--------------------------------------------------------------------------- void TAnnDemoBitmap::Unrealize() { if(GetContainerObject().Unrealize(GetHandle(),0,FALSE)==ERROR_ANN_LOCKED) ::MessageBox(GetBitmapWnd(),"Some redact objects are locked and cannot be restored","Warning",MB_OK|MB_ICONSTOP); } //--------------------------------------------------------------------------- void TAnnDemoBitmap::PrintImage() { RECT rc; HDC hDC; pBITMAPHANDLE pBitmap=GetHandle(); HCURSOR hCursor=SetCursor(LoadCursor(NULL,IDC_WAIT)); hDC=L_PRINTBITMAP(NULL,NULL,0,0,0,0,FALSE); SetRect( &rc,1,1, MulDiv(BITMAPWIDTH(pBitmap) ,GetDeviceCaps(hDC,LOGPIXELSX),pBitmap->XResolution), MulDiv(BITMAPHEIGHT(pBitmap),GetDeviceCaps(hDC,LOGPIXELSY),pBitmap->YResolution) ); hDC=L_PRINTBITMAP(hDC,pBitmap,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,FALSE); rc.left=rc.top=0; AnnPrint(hDC,rc.left,rc.top,rc.right,rc.bottom); L_PRINTBITMAP(hDC,NULL,0,0,0,0,TRUE); SetCursor(hCursor); } //--------------------------------------------------------------------------- int TAnnDemoBitmap::GetHyperlink(LAnnotation * pAnnObject) { L_UINT uType; L_UINT uMsg; WPARAM wParam; char szLink[2048]; int nRet = 0; if(pAnnObject==0) return(FAILURE); memset(szLink,0,sizeof(szLink)); pAnnObject->GetHyperlink(&uType,&uMsg,&wParam,szLink); switch(uType) { case ANNLINK_NONE: HyperLinkDlg->Radio_None->Checked=TRUE; break; case ANNLINK_LTANNEVENT: HyperLinkDlg->Radio_LTANNEVENT->Checked=TRUE; break; case ANNLINK_USERMSG: HyperLinkDlg->Radio_UsrMsg->Checked=TRUE; break; case ANNLINK_RUN: HyperLinkDlg->Radio_RunProg->Checked=TRUE; HyperLinkDlg->Edit_RunProg->Text=szLink; break; case ANNLINK_WEBPAGE: HyperLinkDlg->Radio_WebPage->Checked=TRUE; HyperLinkDlg->Edit_WebPage->Text=szLink; break; } if(HyperLinkDlg->ShowModal()==mrOk) { switch(HyperLinkDlg->nItemChecked) { case ANNLINK_NONE: case ANNLINK_LTANNEVENT: break; case ANNLINK_USERMSG: uMsg=WM_USERMSG; wParam=0; break; case ANNLINK_RUN: memset(szLink,0,sizeof(szLink)); lstrcpy(szLink,HyperLinkDlg->Edit_RunProg->Text.c_str()); break; case ANNLINK_WEBPAGE: memset(szLink,0,sizeof(szLink)); lstrcpy(szLink,HyperLinkDlg->Edit_WebPage->Text.c_str()); break; default: szLink[0]='\0'; } if(pAnnObject->GetType()==ANNOBJECT_AUTOMATION) { pAnnObject->SetHyperlink(uType,uMsg,wParam,szLink,0); nRet=GetContainerObject().SetHyperlink(uType,uMsg,wParam,szLink,ANNFLAG_RECURSE|ANNFLAG_SELECTED); } else nRet=pAnnObject->SetHyperlink(uType,uMsg,wParam,szLink,0); } pAnnObject->SetHandle(0); delete pAnnObject; return nRet; } //--------------------------------------------------------------------------- LRESULT TAnnDemoBitmap::MsgProcCB(HWND hWnd,L_UINT uMsg,WPARAM wParam,LPARAM lParam) { if(uMsg==WM_USERMSG) return OnUserMessage(wParam,lParam); return LAnnotationWindow::MsgProcCallBack(hWnd,uMsg,wParam,lParam); } //--------------------------------------------------------------------------- LONG TAnnDemoBitmap::OnUserMessage(L_UINT wp,L_INT32 lp) { char s[50]; UINT uType; LAnnotation* pObject=LAnnotation::CreateAnnObject((HANNOBJECT)lp); char* szObjectTypes[]= { "CONTAINER","POINTER","AUDIO","BUTTON","ELLIPSE","FREEHAND", "HILITE","HOTSPOT","LINE","NOTE","POLYGON","POLYLINE","RECT", "REDACT","STAMP","TEXT","RULER","CROSS PRODUCT", "POINT", "PROTRACTOR", "VIDEO", "PUSHPIN", "FREEHAND HOTSPOT", "RUBBER STAMP", "AUTOMATION" }; if(pObject) { uType=pObject->GetType(); if(uTypeMessageBox(s,"HYPERLINK USER MESSAGE",MB_OK|MB_ICONINFORMATION); if(pObject) { pObject->SetHandle(0); delete pObject; } return 0; } //--------------------------------------------------------------------------- /* void TAnnDemoBitmap::SetSavePageNumber() { EXTFILEOPTION ExtFileOption; FILESAVEPARM FileSaveParm; LFileSettings::GetExtFileOption(&ExtFileOption); ExtFileOption.Flags=EFO_ROTATED; Dialog()->GetFileSaveParameters(&FileSaveParm); switch(FileSaveParm.uSaveMulti) { case SAVE_OVERWRITE: ExtFileOption.PageNumber=1; break; case SAVE_APPEND: ExtFileOption.PageNumber=2; break; case SAVE_REPLACE: ExtFileOption.PageNumber=FileSaveParm.nPageNumber; ExtFileOption.Flags|=EFO_REPLACEPAGE; break; case SAVE_INSERT: ExtFileOption.PageNumber=FileSaveParm.nPageNumber; ExtFileOption.Flags|=EFO_INSERTPAGE; break; } LFileSettings::SetExtFileOption(&ExtFileOption); } */ //--------------------------------------------------------------------------- void TAnnDemoBitmap::GetAnnFile(LPSTR pDest,LPSTR pSource,L_UINT nPage,L_INT nFormat) { LPSTR p; L_UINT16 uType; L_UINT32 uCount; LOADFILEOPTION LoadFileOption; LFile FileSrc(this,pSource); LBaseFile::GetDefaultLoadFileOption(&LoadFileOption,sizeof(LoadFileOption)); LoadFileOption.PageNumber = nPage; if( (nFormat<0)&& (FileSrc.ReadTag(ANNTAG_TIFF,&uType,&uCount,NULL, &LoadFileOption)>0)|| ISTIF(nFormat) ) lstrcpy(pDest,pSource); else { lstrcpy(pDest,pSource); p=strrchr(pDest,'.'); if(!p) p=strchr(pDest,'\0'); lstrcpy(p,".ann"); } } //---------------------------------------------------------------------------