Files

130 lines
5.0 KiB
C

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
#ifndef CTHULHU_ATSPI_NATIVE_H
#define CTHULHU_ATSPI_NATIVE_H
#include <atspi/atspi.h>
#include <stdint.h>
typedef struct {
const gchar *busName;
gchar *applicationName;
gchar *name;
gchar *role;
gchar *description;
const gchar *path;
gchar *text;
gint textStartOffset;
gchar *textBeforeCaret;
gchar *caretCharacter;
gboolean autocomplete;
gint headingLevel;
gint positionInSet, setSize;
gboolean visible;
gboolean showing;
gboolean statesKnown;
gboolean active;
gboolean focusable;
gboolean focused;
gboolean hasPopup;
gboolean checked;
gboolean defunct;
gboolean editable;
gboolean expandable;
gboolean expanded;
gboolean indeterminate;
gboolean invalid;
gboolean multiselectable;
gboolean readOnly;
gboolean required;
gboolean selected;
gboolean sensitive;
gboolean sensitiveKnown;
gboolean valueKnown;
gboolean visited;
gboolean explicitName;
gdouble currentValue;
gdouble maximumValue;
gdouble minimumValue;
gdouble minimumIncrement;
gchar *valueText;
gchar *xmlRoles;
gchar *htmlTag;
gchar *elementID;
gboolean supportsClick;
gboolean liveRegion;
gboolean layoutTable;
gint childCount;
gboolean childCountKnown;
gint tableRowCount;
gint tableColumnCount, tableRowIndex, tableColumnIndex, tableRowSpan, tableColumnSpan;
gboolean tablePositionKnown;
gchar *tableRowHeaders, *tableColumnHeaders;
gint characterCount;
gint embeddedObjectCount;
gint objectX;
gint objectY;
gint objectWidth;
gint objectHeight;
gint referenceX;
gint referenceY;
gint referenceWidth;
gint referenceHeight;
gboolean objectGeometryKnown;
gboolean referenceGeometryKnown;
} cthulhu_snapshot;
typedef struct {
uintptr_t callback;
} cthulhu_callback_data;
gchar *cthulhu_table_context(AtspiAccessible *source, gint *rows, gint *columns,
gchar **tableName, gchar **tablePath,
gint *rowIndex, gint *columnIndex, gboolean *guiTable);
cthulhu_snapshot cthulhu_capture_snapshot(AtspiAccessible *source, gboolean captureText,
gboolean captureCaretCharacter,
gboolean captureDocumentMetadata,
gboolean captureSoundGeometry,
gboolean captureApplicationName);
void cthulhu_capture_sound_geometry(AtspiAccessible *source, cthulhu_snapshot *snapshot);
gchar *cthulhu_collect_notification_text(AtspiAccessible *source);
gchar *cthulhu_collect_simple_prompt_text(AtspiAccessible *source);
gchar *cthulhu_radio_group_name(AtspiAccessible *source);
void cthulhu_capture_set_position(AtspiAccessible *source, GHashTable *attributes, cthulhu_snapshot *snapshot);
gboolean cthulhu_has_set_position(const gchar *role);
gchar *cthulhu_live_content(AtspiAccessible *source);
gchar *cthulhu_capture_caret_unit(AtspiAccessible *source, AtspiTextGranularity unit);
guint start_foreground_timer(gpointer data);
const gchar *cthulhu_event_type(AtspiEvent *event);
gint cthulhu_event_detail1(AtspiEvent *event);
gchar *cthulhu_document_uri(AtspiAccessible *source);
gchar *cthulhu_event_payload(AtspiEvent *event);
gchar *cthulhu_live_attribute(AtspiAccessible *source, const gchar *key);
AtspiAccessible *cthulhu_event_active_descendant(AtspiEvent *event);
AtspiAccessible *cthulhu_selected_child(AtspiAccessible *source);
AtspiAccessible *cthulhu_table_selected_child(AtspiAccessible *source);
void cthulhu_refresh_frame_children(AtspiAccessible *window);
AtspiAccessible *cthulhu_focused_descendant(AtspiAccessible *window);
AtspiAccessible *cthulhu_showing_web_document(AtspiAccessible *window);
AtspiAccessible *cthulhu_autocomplete_popup_target(AtspiAccessible *source);
AtspiAccessible *cthulhu_combo_ancestor(AtspiAccessible *source);
gboolean cthulhu_active_document(AtspiAccessible *source);
gboolean cthulhu_in_active_document(AtspiAccessible *source);
gboolean cthulhu_in_inactive_window(AtspiAccessible *source);
gboolean cthulhu_active_menu_window(AtspiAccessible *window);
AtspiAccessible *cthulhu_popup_menu_target(AtspiAccessible *window);
const gchar *cthulhu_accessible_path(AtspiAccessible *source);
const gchar *cthulhu_accessible_bus_name(AtspiAccessible *source);
AtspiAccessible *cthulhu_window_ancestor(AtspiAccessible *source);
AtspiAccessible *cthulhu_document_ancestor(AtspiAccessible *source);
AtspiEventListenerCB cthulhu_event_callback_pointer(void);
gboolean cthulhu_request_event_loop_quit(void);
gboolean cthulhu_request_tree_capture(gpointer userData);
cthulhu_callback_data *cthulhu_callback_data_new(uintptr_t callback);
uintptr_t cthulhu_callback_value(const cthulhu_callback_data *data);
void cthulhu_callback_data_free(cthulhu_callback_data *data);
#endif