add is_point_on_screen to batch mode 34/207534/2
authorRadoslaw Cybulski <r.cybulski@partner.samsung.com>
Thu, 6 Jun 2019 12:14:58 +0000 (14:14 +0200)
committerRadoslaw Cybulski <r.cybulski@partner.samsung.com>
Thu, 6 Jun 2019 14:25:25 +0000 (16:25 +0200)
Change-Id: I83c07a3d1bf3c55a016e3228d27107ff5890b07a

src/batch/BatchRunner.cpp
src/batch/EvaluationValueUIElement.cpp

index c12e50f..3b6bbe6 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "BatchRunner.hpp"
 #include "../UniversalSwitch.hpp"
+#include "../Window.hpp"
 #include "../UniversalSwitchLog.hpp"
 #include "Lexer.hpp"
 #include "Parser.hpp"
@@ -836,8 +837,8 @@ void BatchExecutor::insertMethods()
                        return {};
                },  { {"seconds"} } };
 
-       variables["print"] = EvaluationValueFunction{ [&](std::string text) -> EvaluationValue {
-                       output << text << "\n";
+       variables["print"] = EvaluationValueFunction{ [&](EvaluationValue text) -> EvaluationValue {
+                       DebugEvaluator{} << text << "\n";
                        return {};
                },  { {"text"} } };
 
@@ -875,6 +876,14 @@ void BatchExecutor::insertMethods()
                        return tmp.str();
                },  { {"value"} } };
 
+       variables["is_point_on_screen"] = EvaluationValueFunction{ [&](Point point) -> EvaluationValue {
+                       auto dims = executeOnMainThread([&]()
+                       {
+                               return Singleton<UniversalSwitch>::instance().getMainWindow()->getDimensions();
+                       });
+                       return dims.contains(point);
+               },  { {"value"} } };
+
        variables["len"] = EvaluationValueFunction{ [&](EvaluationValue e) -> EvaluationValue {
                        if (e.isString()) return static_cast<int>(e.asString().size());
                        if (e.isVector()) return static_cast<int>(e.asVector().size());
index b545609..3a8a922 100644 (file)
@@ -36,6 +36,11 @@ public:
        {
                return create(bool(value->getObject()));
        }
+       EvaluationValuePtr convertToPoint() const override
+       {
+               auto v = EvaluationContext::getCurrentEvaluationContext().executionInterface().getUIElementPosition(value);
+               return create(v.getCenterPoint());
+       }
        EvaluationValuePtr convertToUIElement() const override
        {
                return shared_from_this();