2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
20 #include <dali/devel-api/adaptor-framework/accessibility.h>
24 #include "control-devel-wrap.h"
26 using namespace Dali::Toolkit::DevelControl;
33 SWIGEXPORT int SWIGSTDCALL CSharp_Dali_View_Property_DISPATCH_KEY_EVENTS_get()
35 return (int)Dali::Toolkit::DevelControl::Property::DISPATCH_KEY_EVENTS;
38 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityActivateSignal(void* arg1)
40 Dali::Toolkit::DevelControl::AccessibilityActivateSignalType* result = nullptr;
41 GUARD_ON_NULL_RET0(arg1);
43 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
44 result = &(AccessibilityActivateSignal(*control));
49 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityReadingSkippedSignal(void* arg1)
51 Dali::Toolkit::DevelControl::AccessibilityReadingSkippedSignalType* result = nullptr;
52 GUARD_ON_NULL_RET0(arg1);
54 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
55 result = &(AccessibilityReadingSkippedSignal(*control));
60 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityReadingPausedSignal(void* arg1)
62 Dali::Toolkit::DevelControl::AccessibilityReadingPausedSignalType* result = nullptr;
63 GUARD_ON_NULL_RET0(arg1);
65 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
66 result = &(AccessibilityReadingPausedSignal(*control));
71 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityReadingResumedSignal(void* arg1)
73 Dali::Toolkit::DevelControl::AccessibilityReadingResumedSignalType* result = nullptr;
74 GUARD_ON_NULL_RET0(arg1);
76 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
77 result = &(AccessibilityReadingResumedSignal(*control));
82 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityReadingCancelledSignal(void* arg1)
84 Dali::Toolkit::DevelControl::AccessibilityReadingCancelledSignalType* result = nullptr;
85 GUARD_ON_NULL_RET0(arg1);
87 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
88 result = &(AccessibilityReadingCancelledSignal(*control));
93 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityReadingStoppedSignal(void* arg1)
95 Dali::Toolkit::DevelControl::AccessibilityReadingStoppedSignalType* result = nullptr;
96 GUARD_ON_NULL_RET0(arg1);
98 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
99 result = &(AccessibilityReadingStoppedSignal(*control));
101 return (void*)result;
104 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityGetNameSignal(void* arg1)
106 Dali::Toolkit::DevelControl::AccessibilityGetNameSignalType* result = nullptr;
107 GUARD_ON_NULL_RET0(arg1);
109 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
110 result = &(AccessibilityGetNameSignal(*control));
112 return (void*)result;
115 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityGetDescriptionSignal(void* arg1)
117 Dali::Toolkit::DevelControl::AccessibilityGetDescriptionSignalType* result = nullptr;
118 GUARD_ON_NULL_RET0(arg1);
120 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
121 result = &(AccessibilityGetDescriptionSignal(*control));
123 return (void*)result;
126 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AccessibilityDoGestureSignal(void* arg1)
128 Dali::Toolkit::DevelControl::AccessibilityDoGestureSignalType* result = nullptr;
129 GUARD_ON_NULL_RET0(arg1);
131 Dali::Toolkit::Control* control = (Dali::Toolkit::Control*)arg1;
132 result = &(AccessibilityDoGestureSignal(*control));
134 return (void*)result;
137 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AppendAccessibilityRelation(void* arg1, void* arg2, int arg3)
139 GUARD_ON_NULL_RET(arg1);
140 GUARD_ON_NULL_RET(arg2);
142 auto* control = (Dali::Toolkit::Control*)arg1;
143 auto* destination = (Dali::Actor*)arg2;
144 auto relation = (Dali::Accessibility::RelationType)arg3;
145 AppendAccessibilityRelation(*control, *destination, relation);
149 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_RemoveAccessibilityRelation(void* arg1, void* arg2, int arg3)
151 GUARD_ON_NULL_RET(arg1);
152 GUARD_ON_NULL_RET(arg2);
154 auto* control = (Dali::Toolkit::Control*)arg1;
155 auto* destination = (Dali::Actor*)arg2;
156 auto relation = (Dali::Accessibility::RelationType)arg3;
157 RemoveAccessibilityRelation(*control, *destination, relation);
161 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_GetAccessibilityRelations(void* arg1_control,
162 void (*arg2_callback)(int, void*, void*),
165 using namespace Dali::Accessibility;
167 GUARD_ON_NULL_RET(arg1_control);
168 GUARD_ON_NULL_RET(arg2_callback);
171 auto* control = static_cast<Dali::Toolkit::Control*>(arg1_control);
172 std::vector<Relation> relations = GetAccessibilityRelations(*control);
174 for(Relation& relation : relations)
176 for(Accessible* target : relation.mTargets)
178 // NUI is unaware of Accessible objects, so we only report those
179 // convertible to Control. Note that it is currently impossible to make
180 // a relation with anything other than Control (View) using NUI API, so
181 // there should not be any loss of information for typical NUI
183 auto targetControl = Dali::Toolkit::Control::DownCast(target->GetInternalActor());
187 arg2_callback(static_cast<int>(relation.mRelationType),
188 static_cast<void*>(new Dali::Actor(targetControl)),
196 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_ClearAccessibilityRelations(void* arg1)
198 GUARD_ON_NULL_RET(arg1);
200 auto* control = (Dali::Toolkit::Control*)arg1;
201 ClearAccessibilityRelations(*control);
205 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_AppendAccessibilityAttribute(void* arg1, char* arg2, char* arg3)
207 GUARD_ON_NULL_RET(arg1);
208 GUARD_ON_NULL_RET(arg2);
209 GUARD_ON_NULL_RET(arg3);
211 auto* control = (Dali::Toolkit::Control*)arg1;
212 const std::string key(arg2);
213 const std::string value(arg3);
214 AppendAccessibilityAttribute(*control, key, value);
218 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_RemoveAccessibilityAttribute(void* arg1, char* arg2)
220 GUARD_ON_NULL_RET(arg1);
221 GUARD_ON_NULL_RET(arg2);
223 auto* control = (Dali::Toolkit::Control*)arg1;
224 const std::string key(arg2);
225 RemoveAccessibilityAttribute(*control, key);
229 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_ClearAccessibilityAttributes(void* arg1)
231 GUARD_ON_NULL_RET(arg1);
233 auto* control = (Dali::Toolkit::Control*)arg1;
234 ClearAccessibilityAttributes(*control);
238 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_SetAccessibilityReadingInfoType2(void* arg1, int arg2)
240 using namespace Dali::Accessibility;
241 static_assert(static_cast<int>(ReadingInfoType::NAME) == 0 &&
242 static_cast<int>(ReadingInfoType::ROLE) == 1 &&
243 static_cast<int>(ReadingInfoType::DESCRIPTION) == 2 &&
244 static_cast<int>(ReadingInfoType::STATE) == 3,
245 "C++ and C# bindings does not match");
247 GUARD_ON_NULL_RET(arg1);
249 auto* control = (Dali::Toolkit::Control*)arg1;
250 SetAccessibilityReadingInfoType(*control, ReadingInfoTypes{static_cast<std::uint32_t>(arg2)});
254 SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_GetAccessibilityReadingInfoType2(void* arg1)
257 GUARD_ON_NULL_RET0(arg1);
259 auto* control = (Dali::Toolkit::Control*)arg1;
260 auto readingInfo = GetAccessibilityReadingInfoType(*control);
261 result = readingInfo.GetRawData()[0];
266 SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_ClearAccessibilityHighlight(void* arg1)
269 GUARD_ON_NULL_RET0(arg1);
271 auto* control = (Dali::Toolkit::Control*)arg1;
272 result = ClearAccessibilityHighlight(*control);
277 SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_GrabAccessibilityHighlight(void* arg1)
280 GUARD_ON_NULL_RET0(arg1);
282 auto* control = (Dali::Toolkit::Control*)arg1;
283 result = GrabAccessibilityHighlight(*control);
288 SWIGEXPORT uint64_t SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_GetAccessibilityStates(void* arg1)
291 GUARD_ON_NULL_RET0(arg1);
293 auto* control = (Dali::Toolkit::Control*)arg1;
294 auto states = GetAccessibilityStates(*control);
295 result = states.GetRawData64();
300 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Toolkit_DevelControl_NotifyAccessibilityStateChange(void* arg1, uint64_t arg2, int arg3)
302 GUARD_ON_NULL_RET(arg1);
304 Dali::Accessibility::States states(arg2);
305 auto* control = (Dali::Toolkit::Control*)arg1;
306 NotifyAccessibilityStateChange(*control, states, static_cast<bool>(arg3));
310 /***********************************************
311 **************** Accessibility ****************
312 ***********************************************/
314 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_EmitAccessibilityEvent(void* arg1, int arg2_event)
316 GUARD_ON_NULL_RET(arg1);
318 Dali::Actor* control = (Dali::Actor*)arg1;
319 auto accessible = Dali::Accessibility::Accessible::Get(*control);
322 accessible->Emit((Dali::Accessibility::ObjectPropertyChangeEvent)arg2_event);
326 SWIG_CSharpException(SWIG_RuntimeError, "Actor does not have accessible object.");
331 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_EmitAccessibilityStateChangedEvent(void* arg1, int arg2_state, int arg3)
333 GUARD_ON_NULL_RET(arg1);
335 auto state = static_cast<Dali::Accessibility::State>(arg2_state);
337 Dali::Actor* control = (Dali::Actor*)arg1;
338 auto accessible = Dali::Accessibility::Accessible::Get(*control);
341 accessible->EmitStateChanged(state, arg3);
345 SWIG_CSharpException(SWIG_RuntimeError, "Actor does not have accessible object.");
350 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_EmitTextInsertedEvent(
351 void* arg1, int arg2_position, int arg3_length, char* arg4_content)
353 GUARD_ON_NULL_RET(arg1);
355 Dali::Actor* control = (Dali::Actor*)arg1;
356 auto accessible = Dali::Accessibility::Accessible::Get(*control);
357 std::string content(arg4_content ? arg4_content : "");
360 accessible->EmitTextInserted(arg2_position, arg3_length, content);
364 SWIG_CSharpException(SWIG_RuntimeError, "Actor does not have accessible object.");
369 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_EmitTextDeletedEvent(
370 void* arg1, int arg2_position, int arg3_length, char* arg4_content)
372 GUARD_ON_NULL_RET(arg1);
374 Dali::Actor* control = (Dali::Actor*)arg1;
375 auto accessible = Dali::Accessibility::Accessible::Get(*control);
376 std::string content(arg4_content ? arg4_content : "");
379 accessible->EmitTextDeleted(arg2_position, arg3_length, content);
383 SWIG_CSharpException(SWIG_RuntimeError, "Actor does not have accessible object.");
388 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_EmitTextCursorMovedEvent(
389 void* arg1, int arg2_position)
391 GUARD_ON_NULL_RET(arg1);
393 Dali::Actor* control = (Dali::Actor*)arg1;
394 auto accessible = Dali::Accessibility::Accessible::Get(*control);
397 accessible->EmitTextCursorMoved(arg2_position);
401 SWIG_CSharpException(SWIG_RuntimeError, "Actor does not have accessible object.");
406 SWIGEXPORT bool SWIGSTDCALL CSharp_Dali_Accessibility_IsSuppressedEvent(void* arg1, int32_t atspiEvent)
409 GUARD_ON_NULL_RET0(arg1);
411 Dali::Actor* control = (Dali::Actor*)arg1;
412 auto accessible = Dali::Accessibility::Accessible::Get(*control);
415 result = accessible->GetSuppressedEvents()[static_cast<Dali::Accessibility::AtspiEvent>(atspiEvent)];
421 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_SetSuppressedEvent(void* arg1, int32_t atspiEvent, bool isSuppressed)
423 GUARD_ON_NULL_RET(arg1);
425 Dali::Actor* control = (Dali::Actor*)arg1;
426 auto accessible = Dali::Accessibility::Accessible::Get(*control);
429 accessible->GetSuppressedEvents()[static_cast<Dali::Accessibility::AtspiEvent>(atspiEvent)] = isSuppressed;
434 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Accessibility_new_Range(
435 int arg1_start, int arg2_end, char* arg3_content)
437 Dali::Accessibility::Range* result = nullptr;
439 result = new Dali::Accessibility::Range(arg1_start, arg2_end, arg3_content);
441 return (void*)result;
444 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_delete_Range(void* arg1_range)
447 delete static_cast<Dali::Accessibility::Range*>(arg1_range);
451 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_Bridge_RegisterDefaultLabel(void* arg1_actor)
453 GUARD_ON_NULL_RET(arg1_actor);
455 Dali::Actor* actor = (Dali::Actor*)arg1_actor;
456 auto accessible = Dali::Accessibility::Accessible::Get(*actor);
457 auto bridge = Dali::Accessibility::Bridge::GetCurrentBridge();
461 SWIG_CSharpException(SWIG_RuntimeError, "No accessible object bind with actor.");
465 bridge->RegisterDefaultLabel(accessible);
469 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_Bridge_UnregisterDefaultLabel(void* arg1_actor)
471 GUARD_ON_NULL_RET(arg1_actor);
473 Dali::Actor* actor = (Dali::Actor*)arg1_actor;
474 auto accessible = Dali::Accessibility::Accessible::Get(*actor);
475 auto bridge = Dali::Accessibility::Bridge::GetCurrentBridge();
479 SWIG_CSharpException(SWIG_RuntimeError, "No accessible object bind with actor.");
483 bridge->UnregisterDefaultLabel(accessible);
487 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Accessibility_Accessible_GetCurrentlyHighlightedActor()
489 Dali::Actor* result = NULL;
491 Dali::Actor actor = Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor();
494 result = new Dali::Actor(actor);
500 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Accessibility_Accessible_GetHighlightActor()
502 Dali::Actor* result = NULL;
504 Dali::Actor actor = Dali::Accessibility::Accessible::GetHighlightActor();
507 result = new Dali::Actor(actor);
513 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_Accessible_SetHighlightActor(void* arg1_actor)
515 // Passing nullptr as actor is used to remove custom highlight,
516 // what leads to the restoration of default highlight starting
517 // from next call to GrabHighlight()
519 Dali::Actor actor = arg1_actor ? *((Dali::Actor*)arg1_actor) : Dali::Actor();
520 Dali::Accessibility::Accessible::SetHighlightActor(actor);