7fd59977 |
1 | // OCCDemoView.cpp : implementation of the COCCDemoView class |
2 | // |
3 | |
4 | #include "stdafx.h" |
5 | #include "MainFrm.h" |
6 | #include "OCCDemo.h" |
7 | #include "OCCDemoDoc.h" |
8 | #include "OCCDemoView.h" |
9 | |
10 | #include <Graphic3d_GraphicDriver.hxx> |
11 | #include <V3d_Coordinate.hxx> |
12 | |
13 | #define ValZWMin 1 |
14 | |
15 | #ifdef _DEBUG |
16 | #undef THIS_FILE |
17 | static char THIS_FILE[] = __FILE__; |
18 | #endif |
19 | |
20 | ///////////////////////////////////////////////////////////////////////////// |
21 | // COCCDemoView |
22 | |
23 | IMPLEMENT_DYNCREATE(COCCDemoView, CView) |
24 | |
25 | BEGIN_MESSAGE_MAP(COCCDemoView, CView) |
26 | //{{AFX_MSG_MAP(COCCDemoView) |
27 | ON_COMMAND(ID_BUTTONAxo, OnBUTTONAxo) |
28 | ON_COMMAND(ID_BUTTONBack, OnBUTTONBack) |
29 | ON_COMMAND(ID_BUTTONBottom, OnBUTTONBottom) |
30 | ON_COMMAND(ID_BUTTONFront, OnBUTTONFront) |
31 | ON_COMMAND(ID_BUTTONHlrOn, OnBUTTONHlrOn) |
32 | ON_COMMAND(ID_BUTTONLeft, OnBUTTONLeft) |
33 | ON_COMMAND(ID_BUTTONPan, OnBUTTONPan) |
34 | ON_COMMAND(ID_BUTTONPanGlo, OnBUTTONPanGlo) |
35 | ON_COMMAND(ID_BUTTONReset, OnBUTTONReset) |
36 | ON_COMMAND(ID_BUTTONRight, OnBUTTONRight) |
37 | ON_COMMAND(ID_BUTTONRot, OnBUTTONRot) |
38 | ON_COMMAND(ID_BUTTONTop, OnBUTTONTop) |
39 | ON_COMMAND(ID_BUTTONZoomAll, OnBUTTONZoomAll) |
40 | ON_WM_SIZE() |
41 | ON_COMMAND(ID_BUTTONZoomProg, OnBUTTONZoomProg) |
42 | ON_COMMAND(ID_BUTTONZoomWin, OnBUTTONZoomWin) |
43 | ON_WM_LBUTTONDOWN() |
44 | ON_WM_LBUTTONUP() |
45 | ON_WM_MOUSEMOVE() |
46 | ON_WM_RBUTTONDOWN() |
47 | ON_WM_RBUTTONUP() |
48 | ON_UPDATE_COMMAND_UI(ID_BUTTONPanGlo, OnUpdateBUTTONPanGlo) |
49 | ON_UPDATE_COMMAND_UI(ID_BUTTONPan, OnUpdateBUTTONPan) |
50 | ON_UPDATE_COMMAND_UI(ID_BUTTONZoomProg, OnUpdateBUTTONZoomProg) |
51 | ON_UPDATE_COMMAND_UI(ID_BUTTONZoomWin, OnUpdateBUTTONZoomWin) |
52 | ON_UPDATE_COMMAND_UI(ID_BUTTONRot, OnUpdateBUTTONRot) |
53 | ON_COMMAND(ID_BUTTONWire, OnBUTTONWire) |
54 | ON_COMMAND(ID_BUTTONShade, OnBUTTONShade) |
55 | ON_UPDATE_COMMAND_UI(ID_BUTTONHlrOn, OnUpdateBUTTONHlrOn) |
56 | ON_UPDATE_COMMAND_UI(ID_BUTTONShade, OnUpdateBUTTONShade) |
57 | ON_UPDATE_COMMAND_UI(ID_BUTTONWire, OnUpdateBUTTONWire) |
58 | //}}AFX_MSG_MAP |
59 | END_MESSAGE_MAP() |
60 | |
61 | ///////////////////////////////////////////////////////////////////////////// |
62 | // COCCDemoView construction/destruction |
63 | |
64 | COCCDemoView::COCCDemoView() |
65 | { |
66 | myXmin=0; |
67 | myYmin=0; |
68 | myXmax=0; |
69 | myYmax=0; |
70 | myCurZoom=0; |
71 | myCurrentMode = CurAction3d_Nothing; |
72 | myVisMode = VIS_SHADE; |
73 | m_Pen = NULL; |
74 | myGraphicDriver = Handle(Graphic3d_GraphicDriver)::DownCast( |
75 | ((COCCDemoApp*)AfxGetApp())->GetGraphicDevice()->GraphicDriver() ); |
76 | } |
77 | |
78 | COCCDemoView::~COCCDemoView() |
79 | { |
80 | if (!myView.IsNull()) |
81 | myView->Remove(); |
82 | if (m_Pen) |
83 | delete m_Pen; |
84 | } |
85 | |
86 | BOOL COCCDemoView::PreCreateWindow(CREATESTRUCT& cs) |
87 | { |
88 | // TODO: Modify the Window class or styles here by modifying |
89 | // the CREATESTRUCT cs |
90 | |
91 | return CView::PreCreateWindow(cs); |
92 | } |
93 | |
94 | ///////////////////////////////////////////////////////////////////////////// |
95 | // COCCDemoView drawing |
96 | |
97 | void COCCDemoView::OnInitialUpdate() |
98 | { |
99 | CView::OnInitialUpdate(); |
100 | |
101 | myView = GetDocument()->GetViewer()->CreateView(); |
102 | |
103 | Handle(Graphic3d_WNTGraphicDevice) theGraphicDevice = |
104 | ((COCCDemoApp*)AfxGetApp())->GetGraphicDevice(); |
105 | |
106 | Handle(WNT_Window) aWNTWindow = new WNT_Window(theGraphicDevice,GetSafeHwnd ()); |
107 | myView->SetWindow(aWNTWindow); |
108 | if (!aWNTWindow->IsMapped()) aWNTWindow->Map(); |
109 | |
110 | myCurrentMode = CurAction3d_Nothing; |
111 | myVisMode = VIS_SHADE; |
112 | RedrawVisMode(); |
113 | } |
114 | |
115 | void COCCDemoView::OnDraw(CDC* pDC) |
116 | { |
117 | COCCDemoDoc* pDoc = GetDocument(); |
118 | ASSERT_VALID(pDoc); |
119 | // TODO: add draw code for native data here |
120 | myView->Redraw(); |
121 | } |
122 | |
123 | ///////////////////////////////////////////////////////////////////////////// |
124 | // COCCDemoView diagnostics |
125 | |
126 | #ifdef _DEBUG |
127 | void COCCDemoView::AssertValid() const |
128 | { |
129 | CView::AssertValid(); |
130 | } |
131 | |
132 | void COCCDemoView::Dump(CDumpContext& dc) const |
133 | { |
134 | CView::Dump(dc); |
135 | } |
136 | |
137 | COCCDemoDoc* COCCDemoView::GetDocument() // non-debug version is inline |
138 | { |
139 | ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COCCDemoDoc))); |
140 | return (COCCDemoDoc*)m_pDocument; |
141 | } |
142 | #endif //_DEBUG |
143 | |
144 | ///////////////////////////////////////////////////////////////////////////// |
145 | // COCCDemoView message handlers |
146 | |
147 | void COCCDemoView::OnSize(UINT nType, int cx, int cy) |
148 | { |
149 | if (!myView.IsNull()) |
150 | myView->MustBeResized(); |
151 | } |
152 | |
153 | void COCCDemoView::OnBUTTONBack() |
154 | { |
155 | myView->SetProj(V3d_Ypos); |
156 | } |
157 | |
158 | void COCCDemoView::OnBUTTONFront() |
159 | { |
160 | myView->SetProj(V3d_Yneg); |
161 | } |
162 | |
163 | void COCCDemoView::OnBUTTONBottom() |
164 | { |
165 | myView->SetProj(V3d_Zneg); |
166 | } |
167 | |
168 | void COCCDemoView::OnBUTTONTop() |
169 | { |
170 | myView->SetProj(V3d_Zpos); |
171 | } |
172 | |
173 | void COCCDemoView::OnBUTTONLeft() |
174 | { |
175 | myView->SetProj(V3d_Xneg); |
176 | } |
177 | |
178 | void COCCDemoView::OnBUTTONRight() |
179 | { |
180 | myView->SetProj(V3d_Xpos); |
181 | } |
182 | |
183 | void COCCDemoView::OnBUTTONAxo() |
184 | { |
185 | myView->SetProj(V3d_XposYnegZpos); |
186 | } |
187 | |
188 | void COCCDemoView::OnBUTTONPan() |
189 | { |
190 | myCurrentMode = CurAction3d_DynamicPanning; |
191 | } |
192 | |
193 | void COCCDemoView::OnBUTTONPanGlo() |
194 | { |
195 | // save the current zoom value |
196 | myCurZoom = myView->Scale(); |
197 | // Do a Global Zoom |
198 | myView->FitAll(); |
199 | // Set the mode |
200 | myCurrentMode = CurAction3d_GlobalPanning; |
201 | } |
202 | |
203 | void COCCDemoView::OnBUTTONReset() |
204 | { |
205 | myView->Reset(); |
206 | } |
207 | |
208 | void COCCDemoView::OnBUTTONRot() |
209 | { |
210 | myCurrentMode = CurAction3d_DynamicRotation; |
211 | } |
212 | |
213 | void COCCDemoView::OnBUTTONZoomAll() |
214 | { |
215 | myView->FitAll(); |
216 | myView->ZFitAll(); |
217 | } |
218 | |
219 | void COCCDemoView::OnBUTTONZoomProg() |
220 | { |
221 | myCurrentMode = CurAction3d_DynamicZooming; |
222 | } |
223 | |
224 | void COCCDemoView::OnBUTTONZoomWin() |
225 | { |
226 | myCurrentMode = CurAction3d_WindowZooming; |
227 | } |
228 | |
229 | void COCCDemoView::OnLButtonDown(UINT nFlags, CPoint point) |
230 | { |
231 | // save the current mouse coordinate in min |
232 | myXmin=point.x; myYmin=point.y; |
233 | myXmax=point.x; myYmax=point.y; |
234 | |
235 | if ( ! (nFlags & MK_CONTROL) ) |
236 | { |
237 | if (myCurrentMode == CurAction3d_DynamicRotation) |
238 | { |
239 | myView->SetComputedMode(Standard_False); |
240 | myView->StartRotation(point.x,point.y); |
241 | } |
242 | } |
243 | } |
244 | |
245 | void COCCDemoView::OnLButtonUp(UINT nFlags, CPoint point) |
246 | { |
247 | if ( !(nFlags & MK_CONTROL) ) |
248 | { |
249 | switch (myCurrentMode) |
250 | { |
251 | case CurAction3d_Nothing : |
252 | myXmax=point.x; |
253 | myYmax=point.y; |
254 | break; |
255 | case CurAction3d_DynamicZooming : |
256 | myCurrentMode = CurAction3d_Nothing; |
257 | break; |
258 | case CurAction3d_WindowZooming : |
259 | DrawRectangle(myXmin,myYmin,myXmax,myYmax,Standard_False); |
260 | myXmax=point.x; |
261 | myYmax=point.y; |
262 | if ((abs(myXmin-myXmax)>ValZWMin) || (abs(myYmin-myYmax)>ValZWMin)) |
263 | // Test if the zoom window is greater than a minimale window. |
264 | { |
265 | // Do the zoom window between Pmin and Pmax |
266 | myView->WindowFitAll(myXmin,myYmin,myXmax,myYmax); |
267 | } |
268 | myCurrentMode = CurAction3d_Nothing; |
269 | break; |
270 | case CurAction3d_DynamicPanning : |
271 | myCurrentMode = CurAction3d_Nothing; |
272 | break; |
273 | case CurAction3d_GlobalPanning : |
274 | myView->Place(point.x,point.y,myCurZoom); |
275 | myCurrentMode = CurAction3d_Nothing; |
276 | break; |
277 | case CurAction3d_DynamicRotation : |
278 | if (myVisMode == VIS_HLR) |
279 | { |
280 | SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); |
281 | myView->SetComputedMode(Standard_True); |
282 | SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); |
283 | } |
284 | myCurrentMode = CurAction3d_Nothing; |
285 | break; |
286 | } //switch (myCurrentMode) |
287 | } |
288 | } |
289 | |
290 | void COCCDemoView::OnRButtonDown(UINT nFlags, CPoint point) |
291 | { |
292 | if ( nFlags & MK_CONTROL ) |
293 | { |
294 | myView->SetComputedMode(Standard_False); |
295 | myView->StartRotation(point.x,point.y); |
296 | } |
297 | } |
298 | |
299 | void COCCDemoView::OnRButtonUp(UINT nFlags, CPoint point) |
300 | { |
301 | if (myVisMode == VIS_HLR) |
302 | { |
303 | SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); |
304 | myView->SetComputedMode(Standard_True); |
305 | SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); |
306 | } |
307 | } |
308 | |
309 | void COCCDemoView::OnMouseMove(UINT nFlags, CPoint point) |
310 | { |
311 | // ============================ LEFT BUTTON ======================= |
312 | if ( nFlags & MK_LBUTTON) |
313 | { |
314 | if ( nFlags & MK_CONTROL ) |
315 | { |
316 | // move with MB1 and Control : on the dynamic zooming |
317 | // Do the zoom in function of mouse's coordinates |
318 | myView->Zoom(myXmax,myYmax,point.x,point.y); |
319 | // save the current mouse coordinate in max |
320 | myXmax = point.x; |
321 | myYmax = point.y; |
322 | } |
323 | else // if ( Ctrl ) |
324 | { |
325 | switch (myCurrentMode) |
326 | { |
327 | case CurAction3d_Nothing : |
328 | myXmax = point.x; |
329 | myYmax = point.y; |
330 | break; |
331 | case CurAction3d_DynamicZooming : |
332 | myView->Zoom(myXmax,myYmax,point.x,point.y); |
333 | // save the current mouse coordinate in max; |
334 | myXmax=point.x; |
335 | myYmax=point.y; |
336 | break; |
337 | case CurAction3d_WindowZooming : |
338 | myXmax = point.x; myYmax = point.y; |
339 | DrawRectangle(myXmin,myYmin,myXmax,myYmax,Standard_False,LongDash); |
340 | DrawRectangle(myXmin,myYmin,myXmax,myYmax,Standard_True,LongDash); |
341 | break; |
342 | case CurAction3d_DynamicPanning : |
343 | myView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning |
344 | myXmax = point.x; myYmax = point.y; |
345 | break; |
346 | case CurAction3d_GlobalPanning : // nothing |
347 | break; |
348 | case CurAction3d_DynamicRotation : |
349 | myView->Rotation(point.x,point.y); |
350 | myView->Redraw(); |
351 | break; |
352 | } |
353 | } |
354 | } |
355 | // ============================ MIDDLE BUTTON ======================= |
356 | else if ( nFlags & MK_MBUTTON) |
357 | { |
358 | if ( nFlags & MK_CONTROL ) |
359 | { |
360 | myView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning |
361 | myXmax = point.x; myYmax = point.y; |
362 | } |
363 | } |
364 | // ============================ RIGHT BUTTON ======================= |
365 | else if ( nFlags & MK_RBUTTON) |
366 | { |
367 | if ( nFlags & MK_CONTROL ) |
368 | { |
369 | myView->Rotation(point.x,point.y); |
370 | } |
371 | } |
372 | // ============================ NO BUTTON ======================= |
373 | else |
374 | { |
375 | myXmax = point.x; |
376 | myYmax = point.y; |
377 | } |
378 | } |
379 | |
380 | void COCCDemoView::OnUpdateBUTTONPanGlo(CCmdUI* pCmdUI) |
381 | { |
382 | pCmdUI->SetCheck (myCurrentMode == CurAction3d_GlobalPanning); |
383 | pCmdUI->Enable (myCurrentMode != CurAction3d_GlobalPanning); |
384 | } |
385 | |
386 | void COCCDemoView::OnUpdateBUTTONPan(CCmdUI* pCmdUI) |
387 | { |
388 | pCmdUI->SetCheck (myCurrentMode == CurAction3d_DynamicPanning); |
389 | pCmdUI->Enable (myCurrentMode != CurAction3d_DynamicPanning ); |
390 | } |
391 | |
392 | void COCCDemoView::OnUpdateBUTTONZoomProg(CCmdUI* pCmdUI) |
393 | { |
394 | pCmdUI->SetCheck (myCurrentMode == CurAction3d_DynamicZooming ); |
395 | pCmdUI->Enable (myCurrentMode != CurAction3d_DynamicZooming); |
396 | } |
397 | |
398 | void COCCDemoView::OnUpdateBUTTONZoomWin(CCmdUI* pCmdUI) |
399 | { |
400 | pCmdUI->SetCheck (myCurrentMode == CurAction3d_WindowZooming); |
401 | pCmdUI->Enable (myCurrentMode != CurAction3d_WindowZooming); |
402 | } |
403 | |
404 | void COCCDemoView::OnUpdateBUTTONRot(CCmdUI* pCmdUI) |
405 | { |
406 | pCmdUI->SetCheck (myCurrentMode == CurAction3d_DynamicRotation); |
407 | pCmdUI->Enable (myCurrentMode != CurAction3d_DynamicRotation); |
408 | } |
409 | |
410 | void COCCDemoView::DrawRectangle(const Standard_Integer MinX, |
411 | const Standard_Integer MinY, |
412 | const Standard_Integer MaxX, |
413 | const Standard_Integer MaxY, |
414 | const Standard_Boolean Draw, |
415 | const LineStyle aLineStyle) |
416 | { |
417 | static int m_DrawMode; |
418 | if (!m_Pen && aLineStyle ==Solid ) |
419 | { |
420 | m_Pen = new CPen(PS_SOLID, 1, RGB(0,0,0)); m_DrawMode = R2_MERGEPENNOT; |
421 | } |
422 | else if (!m_Pen && aLineStyle ==Dot ) |
423 | { |
424 | m_Pen = new CPen(PS_DOT, 1, RGB(0,0,0)); m_DrawMode = R2_XORPEN; |
425 | } |
426 | else if (!m_Pen && aLineStyle == ShortDash) |
427 | { |
428 | m_Pen = new CPen(PS_DASH, 1, RGB(255,0,0)); m_DrawMode = R2_XORPEN; |
429 | } |
430 | else if (!m_Pen && aLineStyle == LongDash) |
431 | { |
432 | m_Pen = new CPen(PS_DASH, 1, RGB(0,0,0)); m_DrawMode = R2_NOTXORPEN; |
433 | } |
434 | else if (aLineStyle == Default) |
435 | { |
436 | m_Pen = NULL; m_DrawMode = R2_MERGEPENNOT; |
437 | } |
438 | |
439 | CPen* aOldPen; |
440 | CClientDC clientDC(this); |
441 | if (m_Pen) |
442 | aOldPen = clientDC.SelectObject(m_Pen); |
443 | clientDC.SetROP2(m_DrawMode); |
444 | |
445 | static Standard_Integer StoredMinX, StoredMaxX, StoredMinY, StoredMaxY; |
446 | static Standard_Boolean m_IsVisible = Standard_False; |
447 | |
448 | if ( m_IsVisible && !Draw) // move or up : erase at the old position |
449 | { |
450 | clientDC.MoveTo(StoredMinX,StoredMinY); clientDC.LineTo(StoredMinX,StoredMaxY); |
451 | clientDC.LineTo(StoredMaxX,StoredMaxY); |
452 | clientDC.LineTo(StoredMaxX,StoredMinY); clientDC.LineTo(StoredMinX,StoredMinY); |
453 | m_IsVisible = false; |
454 | } |
455 | |
456 | StoredMinX = min ( MinX, MaxX ); |
457 | StoredMinY = min ( MinY, MaxY ); |
458 | StoredMaxX = max ( MinX, MaxX ); |
459 | StoredMaxY = max ( MinY, MaxY); |
460 | |
461 | if (Draw) // move : draw |
462 | { |
463 | clientDC.MoveTo(StoredMinX,StoredMinY); clientDC.LineTo(StoredMinX,StoredMaxY); |
464 | clientDC.LineTo(StoredMaxX,StoredMaxY); |
465 | clientDC.LineTo(StoredMaxX,StoredMinY); clientDC.LineTo(StoredMinX,StoredMinY); |
466 | m_IsVisible = true; |
467 | } |
468 | |
469 | if (m_Pen) |
470 | clientDC.SelectObject(aOldPen); |
471 | } |
472 | |
473 | void COCCDemoView::InitButtons() |
474 | { |
475 | myXmin=0; |
476 | myYmin=0; |
477 | myXmax=0; |
478 | myYmax=0; |
479 | myCurZoom=0; |
480 | myCurrentMode = CurAction3d_Nothing; |
481 | } |
482 | |
483 | void COCCDemoView::Reset() |
484 | { |
485 | InitButtons(); |
486 | myVisMode = VIS_SHADE; |
487 | if (!myView.IsNull()) |
488 | { |
489 | RedrawVisMode(); |
490 | myView->Reset(); |
491 | } |
492 | } |
493 | |
494 | void COCCDemoView::RedrawVisMode() |
495 | { |
496 | switch (myVisMode) |
497 | { |
498 | case VIS_WIREFRAME: |
499 | GetDocument()->GetAISContext()->SetDisplayMode(AIS_WireFrame); |
500 | myView->SetComputedMode (Standard_False); |
501 | break; |
502 | case VIS_SHADE: |
503 | GetDocument()->GetAISContext()->SetDisplayMode(AIS_Shaded); |
504 | myView->SetComputedMode (Standard_False); |
505 | break; |
506 | case VIS_HLR: |
507 | SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); |
508 | myView->SetComputedMode (Standard_True); |
509 | SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); |
510 | GetDocument()->GetAISContext()->SetDisplayMode(AIS_WireFrame); |
511 | break; |
512 | } |
513 | } |
514 | |
515 | void COCCDemoView::OnBUTTONWire() |
516 | { |
517 | myVisMode = VIS_WIREFRAME; |
518 | RedrawVisMode(); |
519 | } |
520 | |
521 | void COCCDemoView::OnBUTTONShade() |
522 | { |
523 | myVisMode = VIS_SHADE; |
524 | RedrawVisMode(); |
525 | } |
526 | |
527 | void COCCDemoView::OnBUTTONHlrOn() |
528 | { |
529 | myVisMode = VIS_HLR; |
530 | RedrawVisMode(); |
531 | } |
532 | |
533 | void COCCDemoView::OnUpdateBUTTONWire(CCmdUI* pCmdUI) |
534 | { |
535 | pCmdUI->SetCheck (myVisMode == VIS_WIREFRAME); |
536 | pCmdUI->Enable (myVisMode != VIS_WIREFRAME); |
537 | } |
538 | |
539 | void COCCDemoView::OnUpdateBUTTONShade(CCmdUI* pCmdUI) |
540 | { |
541 | pCmdUI->SetCheck (myVisMode == VIS_SHADE); |
542 | pCmdUI->Enable (myVisMode != VIS_SHADE); |
543 | } |
544 | |
545 | void COCCDemoView::OnUpdateBUTTONHlrOn(CCmdUI* pCmdUI) |
546 | { |
547 | pCmdUI->SetCheck (myVisMode == VIS_HLR); |
548 | pCmdUI->Enable (myVisMode != VIS_HLR); |
549 | } |
550 | |
551 | void COCCDemoView::GetViewCenter(V3d_Coordinate& Xc, V3d_Coordinate& Yc) |
552 | { |
553 | myView->Center(Xc,Yc); |
554 | } |
555 | |
556 | void COCCDemoView::SetViewCenter(V3d_Coordinate Xc, V3d_Coordinate Yc) |
557 | { |
558 | myView->SetCenter(Xc,Yc); |
559 | } |
560 | |
561 | void COCCDemoView::GetViewEye(V3d_Coordinate& X, V3d_Coordinate& Y, V3d_Coordinate& Z) |
562 | { |
563 | myView->Eye(X,Y,Z); |
564 | } |
565 | |
566 | void COCCDemoView::SetViewEye(V3d_Coordinate X, V3d_Coordinate Y, V3d_Coordinate Z) |
567 | { |
568 | myView->SetEye(X,Y,Z); |
569 | } |
570 | |
571 | Quantity_Factor COCCDemoView::GetViewScale() |
572 | { |
573 | return myView->Scale(); |
574 | } |
575 | |
576 | void COCCDemoView::SetViewScale(Quantity_Factor Coef) |
577 | { |
578 | myView->SetScale(Coef); |
579 | } |