blob: 137904531921f5d35743ff3876794423d72fc006 [file] [log] [blame]
/*
* BRLTTY - A background process providing access to the console screen (when in
* text mode) for a blind person using a refreshable braille display.
*
* Copyright (C) 1995-2023 by The BRLTTY Developers.
*
* BRLTTY comes with ABSOLUTELY NO WARRANTY.
*
* This is free software, placed under the terms of the
* GNU Lesser General Public License, as published by the Free Software
* Foundation; either version 2.1 of the License, or (at your option) any
* later version. Please see the file LICENSE-LGPL for details.
*
* Web Page: http://brltty.app/
*
* This software is maintained by Dave Mielke <dave@mielke.cc>.
*/
#ifndef BRLTTY_INCLUDED_CORE
#define BRLTTY_INCLUDED_CORE
#include "prologue.h"
#include "strfmth.h"
#include "program.h"
#include "timing.h"
#include "cmd.h"
#include "brl.h"
#include "spk.h"
#include "scr_types.h"
#include "ses.h"
#include "ctb.h"
#include "ktb.h"
#include "prefs.h"
#include "profile_types.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
extern int isContractedBraille (void);
extern int isSixDotComputerBraille (void);
extern void setContractedBraille (int contracted);
extern void setSixDotComputerBraille (int sixDot);
extern void onBrailleVariantUpdated (void);
extern ScreenDescription scr;
#define SCR_COLUMN_OK(column) IS_WITHIN_BOUNDS((column), scr.cols)
#define SCR_ROW_OK(row) IS_WITHIN_BOUNDS((row), scr.rows)
#define SCR_COORDINATES_OK(column,row) (SCR_COLUMN_OK((column)) && SCR_ROW_OK((row)))
#define SCR_CURSOR_OK() SCR_COORDINATES_OK(scr.posx, scr.posy)
#define SCR_COLUMN_NUMBER(column) (SCR_COLUMN_OK((column))? (column)+1: 0)
#define SCR_ROW_NUMBER(row) (SCR_ROW_OK((row))? (row)+1: 0)
extern void updateSessionAttributes (void);
extern SessionEntry *ses;
typedef int (*IsSameCharacter) (
const ScreenCharacter *character1,
const ScreenCharacter *character2
);
extern int isSameText (
const ScreenCharacter *character1,
const ScreenCharacter *character2
);
extern int isSameAttributes (
const ScreenCharacter *character1,
const ScreenCharacter *character2
);
extern int
isSameCharacter (
const ScreenCharacter *character1,
const ScreenCharacter *character2
);
extern int isSameRow (
const ScreenCharacter *characters1,
const ScreenCharacter *characters2,
int count,
IsSameCharacter isSameCharacter
);
extern unsigned char infoMode;
extern int canBraille (void);
extern int writeBrailleCharacters (const char *mode, const wchar_t *characters, size_t length);
extern void fillStatusSeparator (wchar_t *text, unsigned char *dots);
extern int writeBrailleText (const char *mode, const char *text);
extern int showBrailleText (const char *mode, const char *text, int minimumDelay);
extern char *opt_driversDirectory;
extern char *opt_tablesDirectory;
extern char *opt_textTable;
extern char *opt_contractionTable;
extern char *opt_attributesTable;
extern char *opt_keyboardTable;
extern char *opt_brailleDevice;
extern int opt_releaseDevice;
extern int isWordBreak (const ScreenCharacter *characters, int x);
extern int getWordWrapLength (int row, int from, int count);
extern void setWordWrapStart (int start);
extern void placeRightEdge (int column);
extern void placeBrailleWindowRight (void);
extern void placeBrailleWindowHorizontally (int x);
extern int moveBrailleWindowLeft (unsigned int amount);
extern int moveBrailleWindowRight (unsigned int amount);
extern int shiftBrailleWindowLeft (unsigned int amount);
extern int shiftBrailleWindowRight (unsigned int amount);
extern void slideBrailleWindowVertically (int y);
extern int showScreenCursor (void);
extern int trackScreenCursor (int place);
extern void cancelDelayedCursorTrackingAlarm (void);
extern int startScreenCursorRouting (int column, int row);
extern int bringScreenCursor (int column, int row);
typedef struct {
TimeValue value;
TimeComponents components;
const char *meridian;
} TimeFormattingData;
extern void getTimeFormattingData (TimeFormattingData *fmt);
extern STR_DECLARE_FORMATTER(formatBrailleTime, const TimeFormattingData *fmt);
extern int isContracted;
extern int contractedTrack;
extern BrailleRowDescriptor *getBrailleRowDescriptor(unsigned int row);
extern int getCursorOffsetForContracting(void);
extern int isContracting (void);
extern int getContractedLength (unsigned int outputLimit);
extern ContractionTable *contractionTable;
extern KeyTable *keyboardTable;
extern ProgramExitStatus brlttyPrepare (int argc, char *argv[]);
extern ProgramExitStatus brlttyStart (void);
extern void setPreferences (const PreferenceSettings *newPreferences);
extern int loadPreferences(int reset);
extern int savePreferences (void);
extern unsigned char getCursorDots (const unsigned char *setting);
extern int setCursorDots (unsigned char *setting, unsigned char dots);
extern unsigned char mapCursorDots (unsigned char dots);
extern unsigned char getScreenCursorDots (void);
extern int setScreenCursorDots (unsigned char dots);
extern unsigned char getSpeechCursorDots (void);
extern int setSpeechCursorDots (unsigned char dots);
extern BrailleDisplay brl; /* braille driver reference */
extern int haveBrailleDisplay(void);
extern unsigned int textStart;
extern unsigned int textCount;
extern unsigned char textMaximized;
extern unsigned int statusStart;
extern unsigned int statusCount;
extern unsigned int fullWindowShift; /* Full window horizontal distance */
extern unsigned int halfWindowShift; /* Half window horizontal distance */
extern unsigned int verticalWindowShift; /* Window vertical distance */
extern void setBrailleOn (void);
extern void setBrailleOff (const char *message);
extern void lockBrailleDriver (void);
extern void unlockBrailleDriver (void);
extern void enableBrailleDriver (void);
extern void disableBrailleDriver (const char *reason);
extern int constructBrailleDriver (void);
extern void destructBrailleDriver (void);
extern int isBrailleDriverConstructed (void);
extern int isBrailleOnline (void);
extern void forgetDevices (void);
extern void reconfigureBrailleWindow (void);
extern int haveStatusCells (void);
extern int findFirstNonSpaceCharacter (const ScreenCharacter *characters, int count);
extern int findLastNonSpaceCharacter (const ScreenCharacter *characters, int count);
extern int isAllSpaceCharacters (const ScreenCharacter *characters, int count);
#ifdef ENABLE_SPEECH_SUPPORT
extern SpeechSynthesizer spk;
extern int haveSpeechSynthesizer(void);
extern int opt_quietIfNoBraille;
extern int isAutospeakActive (void);
extern unsigned int autospeakMinimumScreenContentQuality;
extern void sayScreenCharacters (const ScreenCharacter *characters, size_t count, SayOptions options);
extern void speakCharacters (const ScreenCharacter *characters, size_t count, int spell, int interrupt);
extern int speakIndent (const ScreenCharacter *characters, int count, int evenIfNoIndent);
extern void trackSpeech (void);
extern void enableSpeechDriver (int sayBanner);
extern void disableSpeechDriver (const char *reason);
extern int constructSpeechDriver (void);
extern void destructSpeechDriver (void);
#endif /* ENABLE_SPEECH_SUPPORT */
extern void enableScreenDriver (void);
extern void disableScreenDriver (const char *reason);
#ifdef __MINGW32__
extern int isWindowsService;
#endif /* __MINGW32__ */
extern const ProfileDescriptor languageProfile;
#define CORE_TASK_CALLBACK(name) void name (void *data)
typedef CORE_TASK_CALLBACK(CoreTaskCallback);
extern int runCoreTask (CoreTaskCallback *callback, void *data, int wait);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* BRLTTY_INCLUDED_CORE */