Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
PointEdit.cpp
Package: solidgraph_sources.zip [view]
Upload User: kairuinn
Upload Date: 2009-02-07
Package Size: 2922k
Code Size: 5k
Category:
Graph program
Development Platform:
Visual C++
- #include "stdafx.h"
- #include "PointEdit.h"
- #include "..//resource.h"
- CPointEditCommand::CPointEditCommand(sgCPoint* edP, IApplicationInterface* appI):
- m_editable_point(edP)
- , m_app(appI)
- , m_was_started(false)
- {
- ASSERT(edP);
- ASSERT(m_app);
- SWITCH_RESOURCE
- m_bitmap = new CBitmap;
- m_bitmap->LoadBitmap(IDB_PNT_EDIT);
- }
- CPointEditCommand::~CPointEditCommand()
- {
- m_app->GetCommandPanel()->RemoveAllDialogs();
- m_app->GetViewPort()->InvalidateViewPort();
- if (m_bitmap)
- {
- if (m_bitmap->m_hObject)
- m_bitmap->DeleteObject();
- delete m_bitmap;
- }
- }
- bool CPointEditCommand::PreTranslateMessage(MSG* pMsg)
- {
- /*if (pMsg->message==WM_KEYUP||
- pMsg->message==WM_CHAR)
- return false;*/
- if (pMsg->message==WM_KEYUP||pMsg->message==WM_KEYDOWN ||
- pMsg->message==WM_CHAR)
- {
- if (pMsg->wParam==VK_RETURN)
- {
- OnEnter();
- return true;
- }
- if (pMsg->wParam==VK_ESCAPE)
- {
- m_app->StopCommander();
- return true;
- }
- if (m_get_point_panel)
- {
- m_get_point_panel->GetWindow()->SendMessage(pMsg->message,
- pMsg->wParam,
- pMsg->lParam);
- }
- if (pMsg->message==WM_KEYDOWN)
- return false;
- else
- return true;
- }
- else
- {
- if (pMsg->hwnd == m_app->GetViewPort()->GetWindow()->m_hWnd)
- {
- switch(pMsg->message)
- {
- case WM_MOUSEMOVE:
- MouseMove(pMsg->wParam,GET_X_LPARAM(pMsg->lParam),GET_Y_LPARAM(pMsg->lParam));
- return true;
- case WM_LBUTTONUP:
- LeftClick(pMsg->wParam,GET_X_LPARAM(pMsg->lParam),GET_Y_LPARAM(pMsg->lParam));
- return true;
- default:
- return false;
- }
- }
- }
- return false;
- }
- void CPointEditCommand::Start()
- {
- ASSERT(m_editable_point);
- SWITCH_RESOURCE
- m_app->GetCommandPanel()->RemoveAllDialogs();
- CString lab;
- lab.LoadString(IDS_REDACTION);
- m_app->StartCommander(lab);
- lab.LoadString(IDS_NEW_COORDINATES);
- m_get_point_panel = reinterpret_cast<IGetPointPanel*>(m_app->GetCommandPanel()->
- AddDialog(IBaseInterfaceOfGetDialogs::GET_POINT_DLG,lab,false));
- lab.LoadString(IDS_ENTER_NEW_COORDS);
- m_app->PutMessage(IApplicationInterface::MT_MESSAGE,lab);
- m_cur_pnt = *m_editable_point->GetGeometry();
- m_get_point_panel->SetPoint(m_cur_pnt.x,m_cur_pnt.y,m_cur_pnt.z);
- m_app->GetCommandPanel()->SetActiveRadio(0);
- m_app->GetViewPort()->SetEditableObject(m_editable_point);
- m_was_started = true;
- }
- void CPointEditCommand::MouseMove(unsigned int nFlags,int pX,int pY)
- {
- if (!m_was_started)
- return;
- ASSERT(m_get_point_panel);
- IViewPort::GET_SNAP_IN in_arg;
- in_arg.scrX = pX;
- in_arg.scrY = pY;
- in_arg.snapType = SNAP_SYSTEM;
- in_arg.XFix = m_get_point_panel->IsXFixed();
- in_arg.YFix = m_get_point_panel->IsYFixed();
- in_arg.ZFix = m_get_point_panel->IsZFixed();
- m_get_point_panel->GetPoint(in_arg.FixPoint.x,in_arg.FixPoint.y,in_arg.FixPoint.z);
- IViewPort::GET_SNAP_OUT out_arg;
- m_app->GetViewPort()->GetWorldPointAfterSnap(in_arg,out_arg);
- m_cur_pnt = out_arg.result_point;
- m_get_point_panel->SetPoint(m_cur_pnt.x,m_cur_pnt.y,m_cur_pnt.z);
- m_app->GetViewPort()->InvalidateViewPort();
- }
- void CPointEditCommand::LeftClick(unsigned int nFlags,int pX,int pY)
- {
- if (!m_was_started)
- return;
- SWITCH_RESOURCE
- ASSERT(m_editable_point);
- sgCPoint* pnt = sgCreatePoint(m_cur_pnt.x,m_cur_pnt.y,m_cur_pnt.z);
- sgGetScene()->StartUndoGroup();
- sgGetScene()->DetachObject(m_editable_point);
- sgGetScene()->AttachObject(pnt);
- sgGetScene()->EndUndoGroup();
- m_app->CopyAttributes(*pnt,*m_editable_point);
- m_app->GetViewPort()->InvalidateViewPort();
- m_app->StopCommander();
- }
- void CPointEditCommand::Draw()
- {
- if (!m_was_started)
- return;
- float pC[3];
- m_app->GetViewPort()->GetPainter()->GetUserColorPoints(pC[0],pC[1],pC[2]);
- m_app->GetViewPort()->GetPainter()->SetCurColor(pC[0],pC[1],pC[2]);
- m_app->GetViewPort()->GetPainter()->DrawPoint(m_cur_pnt);
- }
- void CPointEditCommand::OnEnter()
- {
- if (!m_was_started)
- return;
- SWITCH_RESOURCE
- ASSERT(m_get_point_panel);
- double tmpFl[3];
- m_get_point_panel->GetPoint(tmpFl[0],tmpFl[1],tmpFl[2]);
- sgCPoint* pnt = sgCreatePoint(tmpFl[0],tmpFl[1],tmpFl[2]);
- sgGetScene()->StartUndoGroup();
- sgGetScene()->DetachObject(m_editable_point);
- sgGetScene()->AttachObject(pnt);
- sgGetScene()->EndUndoGroup();
- m_app->CopyAttributes(*pnt,*m_editable_point);
- m_app->GetViewPort()->InvalidateViewPort();
- m_app->StopCommander();
- }
- unsigned int CPointEditCommand::GetItemsCount()
- {
- if (!m_was_started)
- return 1;
- else
- return 0;
- }
- void CPointEditCommand::GetItem(unsigned int itemID, CString& itSrt)
- {
- if (m_was_started)
- {
- ASSERT(0);
- return;
- }
- SWITCH_RESOURCE
- switch(itemID) {
- case 0:
- itSrt.LoadString(IDS_CHANGE_COORDS);
- break;
- default:
- ASSERT(0);
- }
- }
- void CPointEditCommand::GetItemState(unsigned int itemID,
- bool& enbl, bool& checked)
- {
- if (m_was_started)
- {
- ASSERT(0);
- return;
- }
- enbl = true;
- checked = false;
- }
- HBITMAP CPointEditCommand::GetItemBitmap(unsigned int)
- {
- /*if (!m_was_started)
- return (HBITMAP)m_bitmap;
- else*/
- return NULL;
- }
- void CPointEditCommand::Run(unsigned int itemID)
- {
- if (m_was_started)
- {
- ASSERT(0);
- return;
- }
- if (itemID==0)
- {
- Start();
- }
- else
- {
- ASSERT(0);
- }
- }