4e18052b |
1 | // Created on: 2014-04-24 |
2 | // Created by: Kirill Gavrilov |
3 | // Copyright (c) 2014 OPEN CASCADE SAS |
4 | // |
5 | // This file is part of Open CASCADE Technology software library. |
6 | // |
7 | // This library is free software; you can redistribute it and/or modify it under |
8 | // the terms of the GNU Lesser General Public License version 2.1 as published |
9 | // by the Free Software Foundation, with special exception defined in the file |
10 | // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
11 | // distribution for complete text of the license and disclaimer of any warranty. |
12 | // |
13 | // Alternatively, this file may be used under the terms of Open CASCADE |
14 | // commercial license or contractual agreement. |
15 | |
16 | #include <ViewerTest_AutoUpdater.hxx> |
17 | |
18 | //======================================================================= |
19 | //function : ViewerTest_AutoUpdater |
20 | //purpose : |
21 | //======================================================================= |
22 | ViewerTest_AutoUpdater::ViewerTest_AutoUpdater (const Handle(AIS_InteractiveContext)& theContext, |
23 | const Handle(V3d_View)& theView) |
24 | : myContext (theContext), |
25 | myView (theView), |
26 | myToUpdate (RedrawMode_Auto), |
27 | myWasAutoUpdate (Standard_False) |
28 | { |
29 | if (!theView.IsNull()) |
30 | { |
31 | myWasAutoUpdate = theView->SetImmediateUpdate (Standard_False); |
32 | } |
33 | } |
34 | |
35 | //======================================================================= |
36 | //function : ~ViewerTest_AutoUpdater |
37 | //purpose : |
38 | //======================================================================= |
39 | ViewerTest_AutoUpdater::~ViewerTest_AutoUpdater() |
40 | { |
41 | Update(); |
42 | } |
43 | |
44 | //======================================================================= |
45 | //function : parseRedrawMode |
46 | //purpose : |
47 | //======================================================================= |
48 | Standard_Boolean ViewerTest_AutoUpdater::parseRedrawMode (const TCollection_AsciiString& theArg) |
49 | { |
50 | TCollection_AsciiString anArgCase (theArg); |
51 | anArgCase.LowerCase(); |
52 | if (anArgCase == "-update" |
53 | || anArgCase == "-redraw") |
54 | { |
55 | myToUpdate = RedrawMode_Forced; |
56 | return Standard_True; |
57 | } |
58 | else if (anArgCase == "-noupdate" |
59 | || anArgCase == "-noredraw") |
60 | { |
61 | myToUpdate = RedrawMode_Suppressed; |
62 | return Standard_True; |
63 | } |
64 | return Standard_False; |
65 | } |
66 | |
67 | //======================================================================= |
68 | //function : Invalidate |
69 | //purpose : |
70 | //======================================================================= |
71 | void ViewerTest_AutoUpdater::Invalidate() |
72 | { |
1beb58d7 |
73 | myToUpdate = ViewerTest_AutoUpdater::RedrawMode_Suppressed; |
74 | if (myWasAutoUpdate |
75 | && !myView.IsNull()) |
4e18052b |
76 | { |
77 | myView->SetImmediateUpdate (myWasAutoUpdate); |
78 | } |
79 | } |
80 | |
81 | //======================================================================= |
82 | //function : Update |
83 | //purpose : |
84 | //======================================================================= |
85 | void ViewerTest_AutoUpdater::Update() |
86 | { |
1beb58d7 |
87 | if (!myView.IsNull()) |
4e18052b |
88 | { |
1beb58d7 |
89 | myView->SetImmediateUpdate (myWasAutoUpdate); |
4e18052b |
90 | } |
91 | |
1beb58d7 |
92 | switch (myToUpdate) |
4e18052b |
93 | { |
1beb58d7 |
94 | case ViewerTest_AutoUpdater::RedrawMode_Suppressed: |
95 | { |
96 | return; |
97 | } |
98 | case ViewerTest_AutoUpdater::RedrawMode_Auto: |
99 | { |
100 | if (!myWasAutoUpdate) |
101 | { |
102 | return; |
103 | } |
104 | } |
b1811c1d |
105 | Standard_FALLTHROUGH |
1beb58d7 |
106 | case ViewerTest_AutoUpdater::RedrawMode_Forced: |
107 | { |
108 | if (!myContext.IsNull()) |
109 | { |
110 | myContext->UpdateCurrentViewer(); |
111 | } |
112 | else if (!myView.IsNull()) |
113 | { |
114 | myView->Redraw(); |
115 | } |
116 | } |
4e18052b |
117 | } |
118 | } |