diff --git a/README.md b/README.md
index b57a42ff..70d32b70 100644
--- a/README.md
+++ b/README.md
@@ -8,14 +8,14 @@
* Cmake of Windows version
- * visual studio 2013
+ * visual studio 2015(also support vs2013 and vs2017)
- * QT 5.8(msvc2013) if you need UI
+ * QT 5.9.2(msvc2015, any version QT adjust to visual studio version) if you need UI
* Version
- * agora sdk windows version 2.2.1 and above(x86).
- * obs studio 21.1b and above(x86).
+ * agora sdk windows version 2.9.0 and above(x86), also support x64.
+ * obs studio 21.1b and above(x86), also support x64.
* Build project with CMake-gui:
@@ -24,10 +24,10 @@
* Set variables in windows environment:
* DepsPath
- The path where win32 is located after decompressing dedependencies2013.zip
+ The path where win32 or win64 is located after decompressing dedependencies2015.zip(dedependencies2013.zip or dedependencies2017.zip). dedependencies2013 not support win64.
* QTDir
- The path where win32 is loacted after installed QT 5.8
+ The path where win32 is loacted after installed QT 5.9.2
* Uncheck ENABLE\_SCRIPTING
* After configure is ok,then click generate, vs project can be generated.
@@ -148,7 +148,7 @@ You can reference setupRemoteVideo, it's implemented in obs\_service\_agora\_set
After calling some apis, you'll receive agora callbacks. Sometimes you must first receive callbacks, then you can call other agora apis. For example, after receiving onUserJoined callback, you can call setupRemoteVideo to show remote video.
* In the file obs-service.c, in constant character array service_signals, add callbacks correspond to signals, including return type and function name.
-* agorartcengine.cpp,声网回调函数想应用层发出signal,调用signal_handler_signal,通过calldata结构体设置多个参数。
+* agorartcengine.cpp,agora sdk callback send signal to app, call signal_handler_signal. you can set parameters with calldata structure.
what to do int the application:
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 9ed21844..4974fe88 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -450,11 +450,13 @@ Basic.Main.Connecting="Connecting..."
Basic.Main.StartRecording="Start Recording"
Basic.Main.StartReplayBuffer="Start Replay Buffer"
Basic.Main.StartStreaming="Start Streaming"
+Basic.Main.StartAgoraStreaming="Start to Agora Streaming"
Basic.Main.StopRecording="Stop Recording"
Basic.Main.StoppingRecording="Stopping Recording..."
Basic.Main.StopReplayBuffer="Stop Replay Buffer"
Basic.Main.StoppingReplayBuffer="Stopping Replay Buffer..."
Basic.Main.StopStreaming="Stop Streaming"
+Basic.Main.StopAgoraStreaming="Stop to Agora Streaming"
Basic.Main.StoppingStreaming="Stopping Stream..."
Basic.Main.ForceStopStreaming="Stop Streaming (discard delay)"
diff --git a/UI/data/locale/zh-CN.ini b/UI/data/locale/zh-CN.ini
index 87fb7513..995fe980 100644
--- a/UI/data/locale/zh-CN.ini
+++ b/UI/data/locale/zh-CN.ini
@@ -398,12 +398,14 @@ Basic.Main.Connecting="连接中..."
Basic.Main.StartRecording="开始录制"
Basic.Main.StartReplayBuffer="开始回放缓存"
Basic.Main.StartStreaming="开始推流"
+Basic.Main.StartAgoraStreaming="开始推流到声网"
Basic.Main.StopRecording="停止录制"
Basic.Main.StoppingRecording="停止录制..."
Basic.Main.StopReplayBuffer="停止回放缓存"
Basic.Main.StoppingReplayBuffer="正在停止回放缓存..."
Basic.Main.StopStreaming="停止推流"
Basic.Main.StoppingStreaming="停止推流..."
+Basic.Main.StopAgoraStreaming="停止推流到声网"
Basic.Main.ForceStopStreaming="停止流 (放弃延迟)"
Basic.MainMenu.File="文件(&F)"
diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui
index 4f995798..376fbf9d 100644
--- a/UI/forms/OBSBasic.ui
+++ b/UI/forms/OBSBasic.ui
@@ -997,7 +997,7 @@
-
- agora PK
+ Basic.Main.StartAgoraStreaming
diff --git a/UI/installer/mp-installer.nsi b/UI/installer/mp-installer.nsi
index 5d5a471c..8fe1fc4a 100644
--- a/UI/installer/mp-installer.nsi
+++ b/UI/installer/mp-installer.nsi
@@ -8,7 +8,7 @@ Unicode true
!ifndef APPVERSION
!define APPVERSION "21.1.0"
!define SHORTVERSION "21.1.0"
-!define AGORASDKVERSION "2.2.1"
+!define AGORASDKVERSION "2.9.0"
!endif
!define APPNAMEANDVERSION "OBS Studio ${SHORTVERSION}"
@@ -47,7 +47,7 @@ RequestExecutionLevel admin
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE PreReqCheck
!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "D:\project\AgoraIO\obs-studio\OBS\UI\data\license\gplv2.txt"
+!insertmacro MUI_PAGE_LICENSE "..\data\license\gplv2.txt"
!insertmacro MUI_PAGE_DIRECTORY
!ifdef FULL
!insertmacro MUI_PAGE_COMPONENTS
@@ -201,11 +201,11 @@ Section "OBS Studio" SecCore
SetOutPath "$INSTDIR"
OBSInstallerUtils::KillProcess "obs-plugins\32bit\cef-bootstrap.exe"
OBSInstallerUtils::KillProcess "obs-plugins\64bit\cef-bootstrap.exe"
- File /r "D:\project\AgoraIO\obs-studio\OBS\vs2013\rundir\Release\data"
+ File /r "..\..\vs2013\rundir\Release\data"
SetOutPath "$INSTDIR\bin"
- File /r "D:\project\AgoraIO\obs-studio\OBS\vs2013\rundir\Release\bin\32bit"
+ File /r "..\..\vs2013\rundir\Release\bin\32bit"
SetOutPath "$INSTDIR\obs-plugins"
- File /r "D:\project\AgoraIO\obs-studio\OBS\vs2013\rundir\Release\obs-plugins\32bit"
+ File /r "..\..\vs2013\rundir\Release\obs-plugins\32bit"
ClearErrors
diff --git a/UI/installer/mp-installer_vs2015.nsi b/UI/installer/mp-installer_vs2015.nsi
new file mode 100644
index 00000000..96635d75
--- /dev/null
+++ b/UI/installer/mp-installer_vs2015.nsi
@@ -0,0 +1,367 @@
+; Script generated with the Venis Install Wizard
+
+Unicode true
+
+; Define your application name
+!define APPNAME "OBS Studio"
+
+!ifndef APPVERSION
+!define APPVERSION "21.1.0"
+!define SHORTVERSION "21.1.0"
+!define AGORASDKVERSION "2.9.0"
+!endif
+
+!define APPNAMEANDVERSION "OBS Studio ${SHORTVERSION}"
+; !define FULL
+!define REALSENSE_PLUGIN
+
+; Additional script dependencies
+!include WinVer.nsh
+!include x64.nsh
+
+; Main Install settings
+Name "${APPNAMEANDVERSION}"
+InstallDir "$PROGRAMFILES32\obs-studio"
+InstallDirRegKey HKLM "Software\${APPNAME}" ""
+
+!ifdef FULL
+OutFile "OBS-Studio-${SHORTVERSION}-2015-Full-with-Agora-${AGORASDKVERSION}-Installer.exe"
+!else
+OutFile "OBS-Studio-${SHORTVERSION}-Small-2015-with-Agora-${AGORASDKVERSION}-Installer.exe"
+!endif
+
+; Use compression
+SetCompressor /SOLID LZMA
+
+; Need Admin
+RequestExecutionLevel admin
+
+; Modern interface settings
+!include "MUI.nsh"
+
+!define MUI_ABORTWARNING
+!define MUI_FINISHPAGE_RUN
+!define MUI_FINISHPAGE_RUN_TEXT "Launch OBS Studio ${SHORTVERSION}"
+!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchOBS"
+
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE PreReqCheck
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "..\data\license\gplv2.txt"
+!insertmacro MUI_PAGE_DIRECTORY
+!ifdef FULL
+ !insertmacro MUI_PAGE_COMPONENTS
+!endif
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+;!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_COMPONENTS
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Set languages (first is default language)
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_RESERVEFILE_LANGDLL
+
+Function PreReqCheck
+ ; Abort on XP or lower
+ ${If} ${AtMostWinXP}
+ MessageBox MB_OK|MB_ICONSTOP "Due to extensive use of DirectX 10 features, ${APPNAME} requires Windows Vista SP2 or higher and cannot be installed on this version of Windows."
+ Quit
+ ${EndIf}
+
+ ; Vista specific checks
+ ${If} ${IsWinVista}
+ ; Check Vista SP2
+ ${If} ${AtMostServicePack} 1
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION "${APPNAME} requires Service Pack 2 when running on Vista. Would you like to download it?" IDYES sptrue IDNO spfalse
+ sptrue:
+ ExecShell "open" "http://windows.microsoft.com/en-US/windows-vista/Learn-how-to-install-Windows-Vista-Service-Pack-2-SP2"
+ spfalse:
+ Quit
+ ${EndIf}
+
+ ; Check Vista Platform Update
+ nsexec::exectostack "$SYSDIR\wbem\wmic.exe qfe where HotFixID='KB971512' get HotFixID /Format:list"
+ pop $0
+ pop $0
+ strcpy $1 $0 17 6
+ strcmps $1 "HotFixID=KB971512" gotPatch
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION "${APPNAME} requires the Windows Vista Platform Update. Would you like to download it?" IDYES putrue IDNO pufalse
+ putrue:
+ ; 32 bit
+ ExecShell "open" "http://www.microsoft.com/en-us/download/details.aspx?id=3274"
+ pufalse:
+ Quit
+ gotPatch:
+ ${EndIf}
+
+ ; DirectX Version Check
+ ClearErrors
+ GetDLLVersion "D3DCompiler_33.dll" $R0 $R1
+ IfErrors dxMissing33 dxOK
+ dxMissing33:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_34.dll" $R0 $R1
+ IfErrors dxMissing34 dxOK
+ dxMissing34:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_35.dll" $R0 $R1
+ IfErrors dxMissing35 dxOK
+ dxMissing35:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_36.dll" $R0 $R1
+ IfErrors dxMissing36 dxOK
+ dxMissing36:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_37.dll" $R0 $R1
+ IfErrors dxMissing37 dxOK
+ dxMissing37:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_38.dll" $R0 $R1
+ IfErrors dxMissing38 dxOK
+ dxMissing38:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_39.dll" $R0 $R1
+ IfErrors dxMissing39 dxOK
+ dxMissing39:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_40.dll" $R0 $R1
+ IfErrors dxMissing40 dxOK
+ dxMissing40:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_41.dll" $R0 $R1
+ IfErrors dxMissing41 dxOK
+ dxMissing41:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_42.dll" $R0 $R1
+ IfErrors dxMissing42 dxOK
+ dxMissing42:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_43.dll" $R0 $R1
+ IfErrors dxMissing43 dxOK
+ dxMissing43:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_47.dll" $R0 $R1
+ IfErrors dxMissing47 dxOK
+ dxMissing47:
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION "Your system is missing DirectX components that ${APPNAME} requires. Would you like to download them?" IDYES dxtrue IDNO dxfalse
+ dxtrue:
+ ExecShell "open" "https://obsproject.com/go/dxwebsetup"
+ dxfalse:
+ Quit
+ dxOK:
+ ClearErrors
+
+ ; Check previous instance
+
+ OBSInstallerUtils::IsProcessRunning "obs32.exe"
+ IntCmp $R0 1 0 notRunning1
+ MessageBox MB_OK|MB_ICONEXCLAMATION "${APPNAME} is already running. Please close it first before installing a new version." /SD IDOK
+ Quit
+ notRunning1:
+
+
+ OBSInstallerUtils::IsProcessRunning "obs64.exe"
+ IntCmp $R0 1 0 notRunning2
+ MessageBox MB_OK|MB_ICONEXCLAMATION "${APPNAME} is already running. Please close it first before installing a new version." /SD IDOK
+ Quit
+ notRunning2:
+
+ OBSInstallerUtils::AddInUseFileCheck "$INSTDIR\data\obs-plugins\win-capture\graphics-hook32.dll"
+ OBSInstallerUtils::GetAppNameForInUseFiles
+ StrCmp $R0 "" gameCaptureNotRunning
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Game Capture is still in use by the following applications:$\r$\n$\r$\n$R0$\r$\nPlease close these applications before installing a new version of OBS." /SD IDOK
+ Quit
+ gameCaptureNotRunning:
+FunctionEnd
+
+Function filesInUse
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Some files were not able to be installed. If this is the first time you are installing OBS, please disable any anti-virus or other security software and try again. If you are re-installing or updating OBS, close any applications that may be have been hooked, or reboot and try again." /SD IDOK
+FunctionEnd
+
+Function LaunchOBS
+
+ Exec '"$WINDIR\explorer.exe" "$SMPROGRAMS\OBS Studio\OBS Studio (32bit).lnk"'
+
+FunctionEnd
+
+Var outputErrors
+
+Section "OBS Studio" SecCore
+
+ ; Set Section properties
+ SectionIn RO
+ SetOverwrite on
+ AllowSkipFiles off
+
+ SetShellVarContext all
+
+ ; Set Section Files and Shortcuts
+ SetOutPath "$INSTDIR"
+ OBSInstallerUtils::KillProcess "obs-plugins\32bit\cef-bootstrap.exe"
+ OBSInstallerUtils::KillProcess "obs-plugins\64bit\cef-bootstrap.exe"
+ File /r "..\..\vs2015\rundir\Release\data"
+ SetOutPath "$INSTDIR\bin"
+ File /r "..\..\vs2015\rundir\Release\bin\32bit"
+ SetOutPath "$INSTDIR\obs-plugins"
+ File /r "..\..\vs2015\rundir\Release\obs-plugins\32bit"
+
+ ClearErrors
+
+ IfErrors 0 +2
+ StrCpy $outputErrors "yes"
+
+ WriteUninstaller "$INSTDIR\uninstall.exe"
+
+ ; Delete Old "Multiplatform" Shortcuts
+ Delete "$DESKTOP\OBS Multiplatform.lnk"
+ Delete "$SMPROGRAMS\OBS Multiplatform\OBS Multiplatform (32bit).lnk"
+ Delete "$SMPROGRAMS\OBS Multiplatform\Uninstall.lnk"
+ ${if} ${RunningX64}
+ Delete "$SMPROGRAMS\OBS Multiplatform\OBS Multiplatform (64bit).lnk"
+ ${endif}
+ ;only 32bit
+ SetOutPath "$INSTDIR\bin\32bit"
+ CreateShortCut "$DESKTOP\OBS Studio.lnk" "$INSTDIR\bin\32bit\obs32.exe"
+
+ SetOutPath "$INSTDIR\bin\32bit"
+ CreateDirectory "$SMPROGRAMS\OBS Studio"
+ CreateShortCut "$SMPROGRAMS\OBS Studio\OBS Studio (32bit).lnk" "$INSTDIR\bin\32bit\obs32.exe"
+ CreateShortCut "$SMPROGRAMS\OBS Studio\Uninstall.lnk" "$INSTDIR\uninstall.exe"
+
+ SetOutPath "$INSTDIR\bin\32bit"
+
+ StrCmp $outputErrors "yes" 0 +2
+ Call filesInUse
+SectionEnd
+
+!ifdef FULL
+SectionGroup /e "Plugins" SecPlugins
+ Section "Browser Source" SecPlugins_Browser
+ ; Set Section properties
+ SetOverwrite on
+ AllowSkipFiles off
+ SetShellVarContext all
+
+ SetOutPath "$INSTDIR\obs-plugins"
+ OBSInstallerUtils::KillProcess "32bit\cef-bootstrap.exe"
+ File /r "new\obs-browser\obs-plugins\32bit"
+
+ SetOutPath "$INSTDIR\bin\32bit"
+ SectionEnd
+
+ !ifdef REALSENSE_PLUGIN
+ Section /o "Realsense Source" SecPlugins_Realsense
+ SetOverwrite on
+ AllowSkipFiles off
+ SetShellVarContext all
+
+ SetOutPath "$INSTDIR\obs-plugins"
+ File /r "new\realsense\obs-plugins\32bit"
+
+ SetOutPath "$INSTDIR\data\obs-plugins"
+ File /r "new\realsense\data\obs-plugins\win-ivcam"
+
+ ExecWait '"$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" /UnregServer'
+ ExecWait '"$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" /RegServer'
+
+ ReadRegStr $0 HKLM "Software\Intel\RSSDK\Dispatch" "Core"
+ ${if} ${Errors}
+ ReadRegStr $0 HKLM "Software\Intel\RSSDK\v10\Dispatch" "Core"
+ ${endif}
+
+ ${if} ${Errors}
+ InitPluginsDir
+ SetOutPath "$PLUGINSDIR\realsense"
+
+ File "intel_rs_sdk_runtime_websetup_10.0.26.0396.exe"
+ ExecWait '"$PLUGINSDIR\realsense\intel_rs_sdk_runtime_websetup_10.0.26.0396.exe" --finstall=personify --fnone=all'
+ ${endif}
+
+ SetOutPath "$INSTDIR\bin\32bit"
+ SectionEnd
+ !endif
+SectionGroupEnd
+!endif
+
+Section -FinishSection
+
+ WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "ProductID" "d16d2409-3151-4331-a9b1-dfd8cf3f0d9c"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\bin\32bit\obs32.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "OBS Project"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "HelpLink" "https://obsproject.com"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${APPVERSION}"
+
+SectionEnd
+
+; Modern install component descriptions
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "Core OBS Studio files"
+ !ifdef FULL
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} "Optional Plugins"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins_Browser} "Browser plugin (a source you can add to your scenes that displays web pages)"
+ !ifdef REALSENSE_PLUGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins_Realsense} "Plugin for Realsense cameras"
+ !endif
+ !endif
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;Uninstall section
+Section "un.obs-studio Program Files" UninstallSection1
+
+ SectionIn RO
+
+ ;Remove from registry...
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
+ DeleteRegKey HKLM "SOFTWARE\${APPNAME}"
+
+ ; Delete self
+ Delete "$INSTDIR\uninstall.exe"
+
+ ; Delete Shortcuts
+ Delete "$DESKTOP\OBS Studio.lnk"
+ Delete "$SMPROGRAMS\OBS Studio\OBS Studio (32bit).lnk"
+ Delete "$SMPROGRAMS\OBS Studio\Uninstall.lnk"
+ ${if} ${RunningX64}
+ Delete "$SMPROGRAMS\OBS Studio\OBS Studio (64bit).lnk"
+ ${endif}
+
+ IfFileExists "$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" UnregisterSegService SkipUnreg
+ UnregisterSegService:
+ ExecWait '"$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" /UnregServer'
+ SkipUnreg:
+
+ ; Clean up OBS Studio
+ RMDir /r "$INSTDIR\bin"
+ RMDir /r "$INSTDIR\data"
+ RMDir /r "$INSTDIR\obs-plugins"
+ RMDir "$INSTDIR"
+
+ ; Remove remaining directories
+ RMDir "$SMPROGRAMS\OBS Studio"
+ RMDir "$INSTDIR\OBS Studio"
+SectionEnd
+
+Section /o "un.User Settings" UninstallSection2
+ RMDir /R "$APPDATA\obs-studio"
+SectionEnd
+
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${UninstallSection1} "Remove the OBS program files."
+ !insertmacro MUI_DESCRIPTION_TEXT ${UninstallSection2} "Removes all settings, plugins, scenes and sources, profiles, log files and other application data."
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
+
+; Version information
+VIProductVersion "${APPVERSION}.0"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "OBS Studio"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "obsproject.com"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "(c) 2012-2016"
+; FileDescription is what shows in the UAC elevation prompt when signed
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "OBS Studio"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "1.0"
+
+; eof
diff --git a/UI/installer/mp-installer_vs2017.nsi b/UI/installer/mp-installer_vs2017.nsi
new file mode 100644
index 00000000..5672c9b7
--- /dev/null
+++ b/UI/installer/mp-installer_vs2017.nsi
@@ -0,0 +1,367 @@
+; Script generated with the Venis Install Wizard
+
+Unicode true
+
+; Define your application name
+!define APPNAME "OBS Studio"
+
+!ifndef APPVERSION
+!define APPVERSION "21.1.0"
+!define SHORTVERSION "21.1.0"
+!define AGORASDKVERSION "2.9.0"
+!endif
+
+!define APPNAMEANDVERSION "OBS Studio ${SHORTVERSION}"
+; !define FULL
+!define REALSENSE_PLUGIN
+
+; Additional script dependencies
+!include WinVer.nsh
+!include x64.nsh
+
+; Main Install settings
+Name "${APPNAMEANDVERSION}"
+InstallDir "$PROGRAMFILES32\obs-studio"
+InstallDirRegKey HKLM "Software\${APPNAME}" ""
+
+!ifdef FULL
+OutFile "OBS-Studio-${SHORTVERSION}-Full-2017-with-Agora-${AGORASDKVERSION}-Installer.exe"
+!else
+OutFile "OBS-Studio-${SHORTVERSION}-Small-2017-with-Agora-${AGORASDKVERSION}-Installer.exe"
+!endif
+
+; Use compression
+SetCompressor /SOLID LZMA
+
+; Need Admin
+RequestExecutionLevel admin
+
+; Modern interface settings
+!include "MUI.nsh"
+
+!define MUI_ABORTWARNING
+!define MUI_FINISHPAGE_RUN
+!define MUI_FINISHPAGE_RUN_TEXT "Launch OBS Studio ${SHORTVERSION}"
+!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchOBS"
+
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE PreReqCheck
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "..\data\license\gplv2.txt"
+!insertmacro MUI_PAGE_DIRECTORY
+!ifdef FULL
+ !insertmacro MUI_PAGE_COMPONENTS
+!endif
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+;!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_COMPONENTS
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Set languages (first is default language)
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_RESERVEFILE_LANGDLL
+
+Function PreReqCheck
+ ; Abort on XP or lower
+ ${If} ${AtMostWinXP}
+ MessageBox MB_OK|MB_ICONSTOP "Due to extensive use of DirectX 10 features, ${APPNAME} requires Windows Vista SP2 or higher and cannot be installed on this version of Windows."
+ Quit
+ ${EndIf}
+
+ ; Vista specific checks
+ ${If} ${IsWinVista}
+ ; Check Vista SP2
+ ${If} ${AtMostServicePack} 1
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION "${APPNAME} requires Service Pack 2 when running on Vista. Would you like to download it?" IDYES sptrue IDNO spfalse
+ sptrue:
+ ExecShell "open" "http://windows.microsoft.com/en-US/windows-vista/Learn-how-to-install-Windows-Vista-Service-Pack-2-SP2"
+ spfalse:
+ Quit
+ ${EndIf}
+
+ ; Check Vista Platform Update
+ nsexec::exectostack "$SYSDIR\wbem\wmic.exe qfe where HotFixID='KB971512' get HotFixID /Format:list"
+ pop $0
+ pop $0
+ strcpy $1 $0 17 6
+ strcmps $1 "HotFixID=KB971512" gotPatch
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION "${APPNAME} requires the Windows Vista Platform Update. Would you like to download it?" IDYES putrue IDNO pufalse
+ putrue:
+ ; 32 bit
+ ExecShell "open" "http://www.microsoft.com/en-us/download/details.aspx?id=3274"
+ pufalse:
+ Quit
+ gotPatch:
+ ${EndIf}
+
+ ; DirectX Version Check
+ ClearErrors
+ GetDLLVersion "D3DCompiler_33.dll" $R0 $R1
+ IfErrors dxMissing33 dxOK
+ dxMissing33:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_34.dll" $R0 $R1
+ IfErrors dxMissing34 dxOK
+ dxMissing34:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_35.dll" $R0 $R1
+ IfErrors dxMissing35 dxOK
+ dxMissing35:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_36.dll" $R0 $R1
+ IfErrors dxMissing36 dxOK
+ dxMissing36:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_37.dll" $R0 $R1
+ IfErrors dxMissing37 dxOK
+ dxMissing37:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_38.dll" $R0 $R1
+ IfErrors dxMissing38 dxOK
+ dxMissing38:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_39.dll" $R0 $R1
+ IfErrors dxMissing39 dxOK
+ dxMissing39:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_40.dll" $R0 $R1
+ IfErrors dxMissing40 dxOK
+ dxMissing40:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_41.dll" $R0 $R1
+ IfErrors dxMissing41 dxOK
+ dxMissing41:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_42.dll" $R0 $R1
+ IfErrors dxMissing42 dxOK
+ dxMissing42:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_43.dll" $R0 $R1
+ IfErrors dxMissing43 dxOK
+ dxMissing43:
+ ClearErrors
+ GetDLLVersion "D3DCompiler_47.dll" $R0 $R1
+ IfErrors dxMissing47 dxOK
+ dxMissing47:
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION "Your system is missing DirectX components that ${APPNAME} requires. Would you like to download them?" IDYES dxtrue IDNO dxfalse
+ dxtrue:
+ ExecShell "open" "https://obsproject.com/go/dxwebsetup"
+ dxfalse:
+ Quit
+ dxOK:
+ ClearErrors
+
+ ; Check previous instance
+
+ OBSInstallerUtils::IsProcessRunning "obs32.exe"
+ IntCmp $R0 1 0 notRunning1
+ MessageBox MB_OK|MB_ICONEXCLAMATION "${APPNAME} is already running. Please close it first before installing a new version." /SD IDOK
+ Quit
+ notRunning1:
+
+
+ OBSInstallerUtils::IsProcessRunning "obs64.exe"
+ IntCmp $R0 1 0 notRunning2
+ MessageBox MB_OK|MB_ICONEXCLAMATION "${APPNAME} is already running. Please close it first before installing a new version." /SD IDOK
+ Quit
+ notRunning2:
+
+ OBSInstallerUtils::AddInUseFileCheck "$INSTDIR\data\obs-plugins\win-capture\graphics-hook32.dll"
+ OBSInstallerUtils::GetAppNameForInUseFiles
+ StrCmp $R0 "" gameCaptureNotRunning
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Game Capture is still in use by the following applications:$\r$\n$\r$\n$R0$\r$\nPlease close these applications before installing a new version of OBS." /SD IDOK
+ Quit
+ gameCaptureNotRunning:
+FunctionEnd
+
+Function filesInUse
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Some files were not able to be installed. If this is the first time you are installing OBS, please disable any anti-virus or other security software and try again. If you are re-installing or updating OBS, close any applications that may be have been hooked, or reboot and try again." /SD IDOK
+FunctionEnd
+
+Function LaunchOBS
+
+ Exec '"$WINDIR\explorer.exe" "$SMPROGRAMS\OBS Studio\OBS Studio (32bit).lnk"'
+
+FunctionEnd
+
+Var outputErrors
+
+Section "OBS Studio" SecCore
+
+ ; Set Section properties
+ SectionIn RO
+ SetOverwrite on
+ AllowSkipFiles off
+
+ SetShellVarContext all
+
+ ; Set Section Files and Shortcuts
+ SetOutPath "$INSTDIR"
+ OBSInstallerUtils::KillProcess "obs-plugins\32bit\cef-bootstrap.exe"
+ OBSInstallerUtils::KillProcess "obs-plugins\64bit\cef-bootstrap.exe"
+ File /r "..\..\vs2017\rundir\Release\data"
+ SetOutPath "$INSTDIR\bin"
+ File /r "..\..\vs2017\rundir\Release\bin\32bit"
+ SetOutPath "$INSTDIR\obs-plugins"
+ File /r "..\..\vs2017\rundir\Release\obs-plugins\32bit"
+
+ ClearErrors
+
+ IfErrors 0 +2
+ StrCpy $outputErrors "yes"
+
+ WriteUninstaller "$INSTDIR\uninstall.exe"
+
+ ; Delete Old "Multiplatform" Shortcuts
+ Delete "$DESKTOP\OBS Multiplatform.lnk"
+ Delete "$SMPROGRAMS\OBS Multiplatform\OBS Multiplatform (32bit).lnk"
+ Delete "$SMPROGRAMS\OBS Multiplatform\Uninstall.lnk"
+ ${if} ${RunningX64}
+ Delete "$SMPROGRAMS\OBS Multiplatform\OBS Multiplatform (64bit).lnk"
+ ${endif}
+ ;only 32bit
+ SetOutPath "$INSTDIR\bin\32bit"
+ CreateShortCut "$DESKTOP\OBS Studio.lnk" "$INSTDIR\bin\32bit\obs32.exe"
+
+ SetOutPath "$INSTDIR\bin\32bit"
+ CreateDirectory "$SMPROGRAMS\OBS Studio"
+ CreateShortCut "$SMPROGRAMS\OBS Studio\OBS Studio (32bit).lnk" "$INSTDIR\bin\32bit\obs32.exe"
+ CreateShortCut "$SMPROGRAMS\OBS Studio\Uninstall.lnk" "$INSTDIR\uninstall.exe"
+
+ SetOutPath "$INSTDIR\bin\32bit"
+
+ StrCmp $outputErrors "yes" 0 +2
+ Call filesInUse
+SectionEnd
+
+!ifdef FULL
+SectionGroup /e "Plugins" SecPlugins
+ Section "Browser Source" SecPlugins_Browser
+ ; Set Section properties
+ SetOverwrite on
+ AllowSkipFiles off
+ SetShellVarContext all
+
+ SetOutPath "$INSTDIR\obs-plugins"
+ OBSInstallerUtils::KillProcess "32bit\cef-bootstrap.exe"
+ File /r "new\obs-browser\obs-plugins\32bit"
+
+ SetOutPath "$INSTDIR\bin\32bit"
+ SectionEnd
+
+ !ifdef REALSENSE_PLUGIN
+ Section /o "Realsense Source" SecPlugins_Realsense
+ SetOverwrite on
+ AllowSkipFiles off
+ SetShellVarContext all
+
+ SetOutPath "$INSTDIR\obs-plugins"
+ File /r "new\realsense\obs-plugins\32bit"
+
+ SetOutPath "$INSTDIR\data\obs-plugins"
+ File /r "new\realsense\data\obs-plugins\win-ivcam"
+
+ ExecWait '"$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" /UnregServer'
+ ExecWait '"$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" /RegServer'
+
+ ReadRegStr $0 HKLM "Software\Intel\RSSDK\Dispatch" "Core"
+ ${if} ${Errors}
+ ReadRegStr $0 HKLM "Software\Intel\RSSDK\v10\Dispatch" "Core"
+ ${endif}
+
+ ${if} ${Errors}
+ InitPluginsDir
+ SetOutPath "$PLUGINSDIR\realsense"
+
+ File "intel_rs_sdk_runtime_websetup_10.0.26.0396.exe"
+ ExecWait '"$PLUGINSDIR\realsense\intel_rs_sdk_runtime_websetup_10.0.26.0396.exe" --finstall=personify --fnone=all'
+ ${endif}
+
+ SetOutPath "$INSTDIR\bin\32bit"
+ SectionEnd
+ !endif
+SectionGroupEnd
+!endif
+
+Section -FinishSection
+
+ WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "ProductID" "d16d2409-3151-4331-a9b1-dfd8cf3f0d9c"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\bin\32bit\obs32.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "OBS Project"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "HelpLink" "https://obsproject.com"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${APPVERSION}"
+
+SectionEnd
+
+; Modern install component descriptions
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "Core OBS Studio files"
+ !ifdef FULL
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} "Optional Plugins"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins_Browser} "Browser plugin (a source you can add to your scenes that displays web pages)"
+ !ifdef REALSENSE_PLUGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins_Realsense} "Plugin for Realsense cameras"
+ !endif
+ !endif
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;Uninstall section
+Section "un.obs-studio Program Files" UninstallSection1
+
+ SectionIn RO
+
+ ;Remove from registry...
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
+ DeleteRegKey HKLM "SOFTWARE\${APPNAME}"
+
+ ; Delete self
+ Delete "$INSTDIR\uninstall.exe"
+
+ ; Delete Shortcuts
+ Delete "$DESKTOP\OBS Studio.lnk"
+ Delete "$SMPROGRAMS\OBS Studio\OBS Studio (32bit).lnk"
+ Delete "$SMPROGRAMS\OBS Studio\Uninstall.lnk"
+ ${if} ${RunningX64}
+ Delete "$SMPROGRAMS\OBS Studio\OBS Studio (64bit).lnk"
+ ${endif}
+
+ IfFileExists "$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" UnregisterSegService SkipUnreg
+ UnregisterSegService:
+ ExecWait '"$INSTDIR\data\obs-plugins\win-ivcam\seg_service.exe" /UnregServer'
+ SkipUnreg:
+
+ ; Clean up OBS Studio
+ RMDir /r "$INSTDIR\bin"
+ RMDir /r "$INSTDIR\data"
+ RMDir /r "$INSTDIR\obs-plugins"
+ RMDir "$INSTDIR"
+
+ ; Remove remaining directories
+ RMDir "$SMPROGRAMS\OBS Studio"
+ RMDir "$INSTDIR\OBS Studio"
+SectionEnd
+
+Section /o "un.User Settings" UninstallSection2
+ RMDir /R "$APPDATA\obs-studio"
+SectionEnd
+
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${UninstallSection1} "Remove the OBS program files."
+ !insertmacro MUI_DESCRIPTION_TEXT ${UninstallSection2} "Removes all settings, plugins, scenes and sources, profiles, log files and other application data."
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
+
+; Version information
+VIProductVersion "${APPVERSION}.0"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "OBS Studio"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "obsproject.com"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "(c) 2012-2016"
+; FileDescription is what shows in the UAC elevation prompt when signed
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "OBS Studio"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "1.0"
+
+; eof
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
index 9668d415..8ea80b63 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
@@ -1496,10 +1496,6 @@ void OBSBasic::OBSInit()
throw "Failed to initialize service";
InitAgoraService();
-// const char* mainServiceType = obs_service_get_type(service);
-// if (mainServiceType && strcmp(mainServiceType, "rtmp_custom")){
-// ui->agoraPKButton->setEnabled(false);
-// }
InitPrimitives();
@@ -6266,17 +6262,17 @@ void OBSBasic::InitAgoraServiceSettings()
{
obs_data_t* settings = obs_service_get_settings(agoraService);
std::string rtmpcustom = "rtmp_custonm";
- if (rtmpcustom.compare( obs_service_get_type(service) )== 0)
+ if (rtmpcustom.compare(obs_service_get_type(service)) == 0)
{
obs_data_set_string(settings, "agora_url", obs_service_get_url(service));
obs_data_set_string(settings, "agora_key", obs_service_get_key(service));
}
-
+
obs_data_set_int(settings, "agora_video_bitrate", 2400);
int out_cx = config_get_uint(basicConfig, "Video", "OutputCX");
int out_cy = config_get_uint(basicConfig, "Video", "OutputCY");
-
+
obs_data_set_int(settings, "agora_out_cx", out_cx);
obs_data_set_int(settings, "agora_out_cy", out_cy);
@@ -6312,51 +6308,55 @@ void OBSBasic::MuteAudioDevice(bool bMute)
void OBSBasic::on_agoraPKButton_clicked()
{
- if (agoraOutputHandler->AgoraActive()){
- std::string rtmp_url = "";
- if (GetObsRtmpUrl(rtmp_url) && !rtmp_url.empty()){
- obs_service_agora_remove_publish_stream_url(GetAgoraService(), rtmp_url.c_str());
- }
- agoraOutputHandler->StopAgora();
- ClearRemoteVideos();
- m_lstUids.clear();
- m_lstRemoteVideoUids.clear();
- SetControlWhenPK(false);
- MuteAudioDevice(false);
- SetPreviewPK(false);
- }
- else{
- AgoraInitWidget agoraWidget(this);
- int ret = agoraWidget.exec();
- if (QDialog::Accepted != ret){
- return;
- }
-
- loacal_uid = agoraWidget.uid;
- agora_channel = agoraWidget.channel;
- agora_appid = agoraWidget.app_id;
-
- InitAgoraServiceSettings();
-
- if (outputHandler->StreamingActive()){
- StopStreaming();
- }
-
- if (IsPreviewProgramMode()){
- on_modeSwitch_clicked();
- }
-
- ui->agoraPKButton->setText(QTStr("Starting PK"));
- SetControlWhenPK(true);
- MuteAudioDevice(true);
- if (!agoraOutputHandler->StartAgora(agoraService))
- ui->agoraPKButton->setText(QTStr("Agora PK"));
- //for test
- //UpdateAgoraClientRole(2);
- //QString strLogFile = QString("D:/agora_sdk_log.log");
- //UpdateAgoraLogPath(QT_TO_UTF8(strLogFile));
- // end
- }
+ if (agoraOutputHandler->AgoraActive()) {
+ std::string rtmp_url = "";
+ if (GetObsRtmpUrl(rtmp_url) && !rtmp_url.empty()) {
+ obs_service_agora_remove_publish_stream_url(GetAgoraService(), rtmp_url.c_str());
+ }
+ agoraOutputHandler->StopAgora();
+ ClearRemoteVideos();
+ m_lstUids.clear();
+ m_lstRemoteVideoUids.clear();
+ SetControlWhenPK(false);
+ MuteAudioDevice(false);
+ SetPreviewPK(false);
+ }
+ else {
+ AgoraInitWidget agoraWidget(this);
+ int ret = agoraWidget.exec();
+ if (QDialog::Accepted != ret) {
+ return;
+ }
+
+ loacal_uid = agoraWidget.uid;
+ agora_channel = agoraWidget.channel;
+ agora_appid = agoraWidget.app_id;
+
+ InitAgoraServiceSettings();
+
+ if (outputHandler->StreamingActive()) {
+ StopStreaming();
+ }
+
+ if (IsPreviewProgramMode()) {
+ on_modeSwitch_clicked();
+ }
+
+ ui->agoraPKButton->setText(QTStr("Basic.Main.StartAgoraStreaming"));
+ SetControlWhenPK(true);
+ MuteAudioDevice(true);
+ if (!agoraOutputHandler->StartAgora(agoraService)) {
+ SetControlWhenPK(false);
+ ui->agoraPKButton->setText(QTStr("Basic.Main.StopAgoraStreaming"));
+
+ }
+
+ //for test
+ //UpdateAgoraClientRole(2);
+ //QString strLogFile = QString("D:/agora_sdk_log.log");
+ //UpdateAgoraLogPath(QT_TO_UTF8(strLogFile));
+ // end
+ }
}
void OBSBasic::UpdateAgoraClientRole(int role)
@@ -6395,30 +6395,30 @@ void OBSBasic::SetPreviewPK(bool bPK)
void OBSBasic::SetControlWhenPK(bool bPK)
{
- ui->streamButton->setEnabled(!bPK);
- ui->modeSwitch->setEnabled(!bPK);
- //ui->recordButton->setEnabled(!bPK);
+ ui->streamButton->setEnabled(!bPK);
+ ui->modeSwitch->setEnabled(!bPK);
+ //ui->recordButton->setEnabled(!bPK);
- if (bPK){
- calldata_t params = { 0 };
- signal_handler_connect(obs_service_get_signal_handler(agoraService), "initRtcEngineFailed", AgoraInitRtcEngineFailed, ¶ms);
- signal_handler_connect(obs_service_get_signal_handler(agoraService), "firstRemoteVideoDecoded", AgoraFirstRemoteVideoDecoded, ¶ms);
- signal_handler_connect(obs_service_get_signal_handler(agoraService), "userJoined", AgoraUserJoined, ¶ms);
- signal_handler_connect(obs_service_get_signal_handler(agoraService), "userOffline", AgoraUserOffline, ¶ms);
- signal_handler_connect(obs_service_get_signal_handler(agoraService), "joinChannelSuccess", AgoraJoinChannelSuccess, ¶ms);
-
- obsColorFormatReplacedByAgora = config_get_string(basicConfig, "Video", "ColorFormat");
- if (obsColorFormatReplacedByAgora.empty())
- obsColorFormatReplacedByAgora = "NV12";
- config_set_string(basicConfig, "Video", "ColorFormat", agoraColorFormat.c_str());
- ui->agoraPKButton->setText(QTStr("Stop PK"));
- }
- else{
- config_set_string(basicConfig, "Video", "ColorFormat", obsColorFormatReplacedByAgora.c_str());
- ui->agoraPKButton->setText(QTStr("Agora PK"));
- }
+ if (bPK) {
+ calldata_t params = { 0 };
+ signal_handler_connect(obs_service_get_signal_handler(agoraService), "initRtcEngineFailed", AgoraInitRtcEngineFailed, ¶ms);
+ signal_handler_connect(obs_service_get_signal_handler(agoraService), "firstRemoteVideoDecoded", AgoraFirstRemoteVideoDecoded, ¶ms);
+ signal_handler_connect(obs_service_get_signal_handler(agoraService), "userJoined", AgoraUserJoined, ¶ms);
+ signal_handler_connect(obs_service_get_signal_handler(agoraService), "userOffline", AgoraUserOffline, ¶ms);
+ signal_handler_connect(obs_service_get_signal_handler(agoraService), "joinChannelSuccess", AgoraJoinChannelSuccess, ¶ms);
+
+ obsColorFormatReplacedByAgora = config_get_string(basicConfig, "Video", "ColorFormat");
+ if (obsColorFormatReplacedByAgora.empty())
+ obsColorFormatReplacedByAgora = "NV12";
+ config_set_string(basicConfig, "Video", "ColorFormat", agoraColorFormat.c_str());
+ ui->agoraPKButton->setText(QTStr("Basic.Main.StopAgoraStreaming"));
+ }
+ else {
+ config_set_string(basicConfig, "Video", "ColorFormat", obsColorFormatReplacedByAgora.c_str());
+ ui->agoraPKButton->setText(QTStr("Basic.Main.StartAgoraStreaming"));
+ }
- ResetVideo();
+ ResetVideo();
}
bool OBSBasic::GetObsRtmpUrl(std::string& rtmp_url)
@@ -6761,4 +6761,4 @@ void OBSBasic::OnJoinChannelSuccess(QString channel, long long uid, long long el
void OBSBasic::OnError(int err, const char* msg)
{
-}
\ No newline at end of file
+}
diff --git a/UI/window-init-agora-widget.cpp b/UI/window-init-agora-widget.cpp
index fc67d68d..533fa864 100644
--- a/UI/window-init-agora-widget.cpp
+++ b/UI/window-init-agora-widget.cpp
@@ -14,6 +14,10 @@ AgoraInitWidget::AgoraInitWidget(QWidget *parent)
installEventFilter(CreateShortcutFilter());
+ ui->textEdit_uid->setText(QString(""));
+ ui->textEdit_appid->setText(QString(""));
+ ui->textEdit_channel->setText(QString(""));
+
// ui->textEdit_appid->setText(app_id);
// ui->textEdit_channel->setText(QT_UTF8(channel));
// ui->textEdit_uid->setText(QT_UTF8(text_uid.c_str()));
@@ -28,6 +32,7 @@ void AgoraInitWidget::on_saveButton_clicked()
QString strUid = ui->textEdit_uid->text();
QString strAppid = ui->textEdit_appid->text();
QString strChannel = ui->textEdit_channel->text();
+
strUid.trimmed();
strAppid.trimmed();
strChannel.trimmed();
@@ -40,7 +45,7 @@ void AgoraInitWidget::on_saveButton_clicked()
QMessageBox::warning(this, QString("agora warning"), QString("please input agora channel"));
}
else if (input_appid.empty()){
- QMessageBox::warning(this, QString("agora warning"), QString("please input agora channel"));
+ QMessageBox::warning(this, QString("agora warning"), QString("please input agora appid"));
}
else{
app_id = input_appid;
diff --git a/dependencies2013.zip b/dependencies2013.zip
index 1eee3a4a..38920ecd 100644
Binary files a/dependencies2013.zip and b/dependencies2013.zip differ
diff --git a/dependencies2013/win32/bin/agora_rtc_sdk.dll b/dependencies2013/win32/bin/agora_rtc_sdk.dll
deleted file mode 100644
index d201b5c5..00000000
Binary files a/dependencies2013/win32/bin/agora_rtc_sdk.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/agora_rtc_sdk.lib b/dependencies2013/win32/bin/agora_rtc_sdk.lib
deleted file mode 100644
index 62c39fb2..00000000
Binary files a/dependencies2013/win32/bin/agora_rtc_sdk.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/agora_sig_sdk.dll b/dependencies2013/win32/bin/agora_sig_sdk.dll
deleted file mode 100644
index 6c14aec7..00000000
Binary files a/dependencies2013/win32/bin/agora_sig_sdk.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/avcodec-57.dll b/dependencies2013/win32/bin/avcodec-57.dll
deleted file mode 100644
index baa77325..00000000
Binary files a/dependencies2013/win32/bin/avcodec-57.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/avcodec.lib b/dependencies2013/win32/bin/avcodec.lib
deleted file mode 100644
index cbe145ab..00000000
Binary files a/dependencies2013/win32/bin/avcodec.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/avdevice-57.dll b/dependencies2013/win32/bin/avdevice-57.dll
deleted file mode 100644
index d3945cd8..00000000
Binary files a/dependencies2013/win32/bin/avdevice-57.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/avdevice.lib b/dependencies2013/win32/bin/avdevice.lib
deleted file mode 100644
index bf45a4a2..00000000
Binary files a/dependencies2013/win32/bin/avdevice.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/avfilter-6.dll b/dependencies2013/win32/bin/avfilter-6.dll
deleted file mode 100644
index 80c640ea..00000000
Binary files a/dependencies2013/win32/bin/avfilter-6.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/avfilter.lib b/dependencies2013/win32/bin/avfilter.lib
deleted file mode 100644
index c42473f5..00000000
Binary files a/dependencies2013/win32/bin/avfilter.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/avformat-57.dll b/dependencies2013/win32/bin/avformat-57.dll
deleted file mode 100644
index 1b9852a6..00000000
Binary files a/dependencies2013/win32/bin/avformat-57.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/avformat.lib b/dependencies2013/win32/bin/avformat.lib
deleted file mode 100644
index 7c5a346d..00000000
Binary files a/dependencies2013/win32/bin/avformat.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/avutil-55.dll b/dependencies2013/win32/bin/avutil-55.dll
deleted file mode 100644
index 1bbeee06..00000000
Binary files a/dependencies2013/win32/bin/avutil-55.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/avutil.lib b/dependencies2013/win32/bin/avutil.lib
deleted file mode 100644
index c878bcdd..00000000
Binary files a/dependencies2013/win32/bin/avutil.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/freetype.lib b/dependencies2013/win32/bin/freetype.lib
deleted file mode 100644
index a9f67e12..00000000
Binary files a/dependencies2013/win32/bin/freetype.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/libcurl.dll b/dependencies2013/win32/bin/libcurl.dll
deleted file mode 100644
index a962806d..00000000
Binary files a/dependencies2013/win32/bin/libcurl.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/libcurl.lib b/dependencies2013/win32/bin/libcurl.lib
deleted file mode 100644
index 40cb8812..00000000
Binary files a/dependencies2013/win32/bin/libcurl.lib and /dev/null differ
diff --git a/dependencies2013/win32/bin/libogg-0.dll b/dependencies2013/win32/bin/libogg-0.dll
deleted file mode 100644
index ff169e78..00000000
Binary files a/dependencies2013/win32/bin/libogg-0.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/libopus-0.dll b/dependencies2013/win32/bin/libopus-0.dll
deleted file mode 100644
index b4db1d33..00000000
Binary files a/dependencies2013/win32/bin/libopus-0.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/libpng16-16.dll b/dependencies2013/win32/bin/libpng16-16.dll
deleted file mode 100644
index aca1b704..00000000
Binary files a/dependencies2013/win32/bin/libpng16-16.dll and /dev/null differ
diff --git a/dependencies2013/win32/bin/libpng16-config b/dependencies2013/win32/bin/libpng16-config
deleted file mode 100644
index 4f287f34..00000000
--- a/dependencies2013/win32/bin/libpng16-config
+++ /dev/null
@@ -1,127 +0,0 @@
-#! /bin/sh
-
-# libpng-config
-# provides configuration info for libpng.
-
-# Copyright (C) 2002, 2004, 2006, 2007 Glenn Randers-Pehrson
-
-# This code is released under the libpng license.
-# For conditions of distribution and use, see the disclaimer
-# and license in png.h
-
-# Modeled after libxml-config.
-
-version="1.6.30"
-prefix="/home/jim/packages/win32"
-exec_prefix="${prefix}"
-libdir="${exec_prefix}/lib"
-includedir="${prefix}/include/libpng16"
-libs="-lpng16"
-all_libs="-lpng16 -lz "
-I_opts="-I${includedir}"
-L_opts="-L${libdir}"
-R_opts=""
-cppflags=""
-ccopts=""
-ldopts=""
-
-usage()
-{
- cat <
-#include
-#include
-
-#if defined(_WIN32)
-#define WIN32_LEAN_AND_MEAN
-#include
-#define AGORA_CALL __cdecl
-#if defined(AGORARTC_EXPORT)
-#define AGORA_API extern "C" __declspec(dllexport)
-#else
-#define AGORA_API extern "C" __declspec(dllimport)
-#endif
-#elif defined(__APPLE__)
-#define AGORA_API __attribute__((visibility("default"))) extern "C"
-#define AGORA_CALL
-#elif defined(__ANDROID__) || defined(__linux__)
-#define AGORA_API extern "C" __attribute__((visibility("default")))
-#define AGORA_CALL
-#else
-#define AGORA_API extern "C"
-#define AGORA_CALL
-#endif
-
-namespace agora {
-namespace util {
-
-template
-class AutoPtr {
- typedef T value_type;
- typedef T* pointer_type;
-public:
- AutoPtr(pointer_type p=0)
- :ptr_(p)
- {}
- ~AutoPtr() {
- if (ptr_)
- ptr_->release();
- }
- operator bool() const { return ptr_ != (pointer_type)0; }
- value_type& operator*() const {
- return *get();
- }
-
- pointer_type operator->() const {
- return get();
- }
-
- pointer_type get() const {
- return ptr_;
- }
-
- pointer_type release() {
- pointer_type tmp = ptr_;
- ptr_ = 0;
- return tmp;
- }
-
- void reset(pointer_type ptr = 0) {
- if (ptr != ptr_ && ptr_)
- ptr_->release();
- ptr_ = ptr;
- }
- template
- bool queryInterface(C1* c, C2 iid) {
- pointer_type p = NULL;
- if (c && !c->queryInterface(iid, (void**)&p))
- {
- reset(p);
- }
- return p != NULL;
- }
-private:
- AutoPtr(const AutoPtr&);
- AutoPtr& operator=(const AutoPtr&);
-private:
- pointer_type ptr_;
-};
-class IString {
-public:
- virtual bool empty() const = 0;
- virtual const char* c_str() = 0;
- virtual const char* data() = 0;
- virtual size_t length() = 0;
- virtual void release() = 0;
-};
-typedef AutoPtr AString;
-
-}//namespace util
-
-enum INTERFACE_ID_TYPE
-{
- AGORA_IID_AUDIO_DEVICE_MANAGER = 1,
- AGORA_IID_VIDEO_DEVICE_MANAGER = 2,
- AGORA_IID_RTC_ENGINE_PARAMETER = 3,
- AGORA_IID_MEDIA_ENGINE = 4,
- AGORA_IID_SIGNALING_ENGINE = 8,
-};
-
-enum WARN_CODE_TYPE
-{
- WARN_INVALID_VIEW = 8,
- WARN_INIT_VIDEO = 16,
- WARN_PENDING = 20,
- WARN_NO_AVAILABLE_CHANNEL = 103,
- WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
- WARN_LOOKUP_CHANNEL_REJECTED = 105,
- WARN_OPEN_CHANNEL_TIMEOUT = 106,
- WARN_OPEN_CHANNEL_REJECTED = 107,
-
- // sdk: 100~1000
- WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
- WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
- WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
- WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
- WARN_AUDIO_MIXING_OPEN_ERROR = 701,
-
- WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
- WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
- WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
- WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
- WARN_ADM_RECORD_MALFUNCTION = 1021,
- WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD = 1029,
- WARN_ADM_IOS_SAMPLERATE_CHANGE = 1030,
- WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
- WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
- WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
- WARN_APM_HOWLING = 1051,
- WARN_ADM_GLITCH_STATE = 1052,
- WARN_ADM_IMPROPER_SETTINGS = 1053,
- WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
- WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
- WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
-};
-
-enum ERROR_CODE_TYPE
-{
- ERR_OK = 0,
- //1~1000
- ERR_FAILED = 1,
- ERR_INVALID_ARGUMENT = 2,
- ERR_NOT_READY = 3,
- ERR_NOT_SUPPORTED = 4,
- ERR_REFUSED = 5,
- ERR_BUFFER_TOO_SMALL = 6,
- ERR_NOT_INITIALIZED = 7,
- ERR_NO_PERMISSION = 9,
- ERR_TIMEDOUT = 10,
- ERR_CANCELED = 11,
- ERR_TOO_OFTEN = 12,
- ERR_BIND_SOCKET = 13,
- ERR_NET_DOWN = 14,
- ERR_NET_NOBUFS = 15,
- ERR_JOIN_CHANNEL_REJECTED = 17,
- ERR_LEAVE_CHANNEL_REJECTED = 18,
- ERR_ALREADY_IN_USE = 19,
- ERR_ABORTED = 20,
- ERR_INIT_NET_ENGINE = 21,
- ERR_RESOURCE_LIMITED = 22,
- ERR_INVALID_APP_ID = 101,
- ERR_INVALID_CHANNEL_NAME = 102,
- ERR_TOKEN_EXPIRED = 109,
- ERR_INVALID_TOKEN = 110,
- ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
- ERR_CONNECTION_LOST = 112, // only used in web sdk
-
- ERR_NOT_IN_CHANNEL = 113,
- ERR_SIZE_TOO_LARGE = 114,
- ERR_BITRATE_LIMIT = 115,
- ERR_TOO_MANY_DATA_STREAMS = 116,
- ERR_STREAM_MESSAGE_TIMEOUT = 117,
- ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
- ERR_DECRYPTION_FAILED = 120,
- ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
-
- ERR_WATERMARK_PARAM = 124,
- ERR_WATERMARK_PATH = 125,
- ERR_WATERMARK_PNG = 126,
- ERR_WATERMARKR_INFO = 127,
- ERR_WATERMARK_ARGB = 128,
- ERR_WATERMARK_READ = 129,
-
- ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
-
- //signaling: 400~600
- ERR_LOGOUT_OTHER = 400, //
- ERR_LOGOUT_USER = 401, // logout by user
- ERR_LOGOUT_NET = 402, // network failure
- ERR_LOGOUT_KICKED = 403, // login in other device
- ERR_LOGOUT_PACKET = 404, //
- ERR_LOGOUT_TOKEN_EXPIRED = 405, // token expired
- ERR_LOGOUT_OLDVERSION = 406, //
- ERR_LOGOUT_TOKEN_WRONG = 407,
- ERR_LOGOUT_ALREADY_LOGOUT = 408,
-
- ERR_LOGIN_OTHER = 420,
- ERR_LOGIN_NET = 421,
- ERR_LOGIN_FAILED = 422,
- ERR_LOGIN_CANCELED = 423,
- ERR_LOGIN_TOKEN_EXPIRED = 424,
- ERR_LOGIN_OLD_VERSION = 425,
- ERR_LOGIN_TOKEN_WRONG = 426,
- ERR_LOGIN_TOKEN_KICKED = 427,
- ERR_LOGIN_ALREADY_LOGIN = 428,
-
- ERR_JOIN_CHANNEL_OTHER = 440,
-
- ERR_SEND_MESSAGE_OTHER = 440,
- ERR_SEND_MESSAGE_TIMEOUT = 441,
-
- ERR_QUERY_USERNUM_OTHER = 450,
- ERR_QUERY_USERNUM_TIMEOUT = 451,
- ERR_QUERY_USERNUM_BYUSER = 452,
-
- ERR_LEAVE_CHANNEL_OTHER = 460,
- ERR_LEAVE_CHANNEL_KICKED = 461,
- ERR_LEAVE_CHANNEL_BYUSER = 462,
- ERR_LEAVE_CHANNEL_LOGOUT = 463,
- ERR_LEAVE_CHANNEL_DISCONNECTED = 464,
-
- ERR_INVITE_OTHER = 470,
- ERR_INVITE_REINVITE = 471,
- ERR_INVITE_NET = 472,
- ERR_INVITE_PEER_OFFLINE = 473,
- ERR_INVITE_TIMEOUT = 474,
- ERR_INVITE_CANT_RECV = 475,
-
-
- //1001~2000
- ERR_LOAD_MEDIA_ENGINE = 1001,
- ERR_START_CALL = 1002,
- ERR_START_CAMERA = 1003,
- ERR_START_VIDEO_RENDER = 1004,
- ERR_ADM_GENERAL_ERROR = 1005,
- ERR_ADM_JAVA_RESOURCE = 1006,
- ERR_ADM_SAMPLE_RATE = 1007,
- ERR_ADM_INIT_PLAYOUT = 1008,
- ERR_ADM_START_PLAYOUT = 1009,
- ERR_ADM_STOP_PLAYOUT = 1010,
- ERR_ADM_INIT_RECORDING = 1011,
- ERR_ADM_START_RECORDING = 1012,
- ERR_ADM_STOP_RECORDING = 1013,
- ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015,
- ERR_ADM_RUNTIME_RECORDING_ERROR = 1017,
- ERR_ADM_RECORD_AUDIO_FAILED = 1018,
- ERR_ADM_INIT_LOOPBACK = 1022,
- ERR_ADM_START_LOOPBACK = 1023,
- ERR_ADM_NO_PERMISSION = 1027,
- ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
- ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101,
- ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108,
- ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109,
- ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111,
- ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112,
- ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115,
- ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE = 1151,
- ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER = 1153,
- ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD = 1156,
- ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER = 1157,
- ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD = 1160,
- ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201,
- ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206,
- ERR_ADM_IOS_VPIO_INIT_FAIL = 1210,
- ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213,
- ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214,
- ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
- ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO = 1221,
- ERR_ADM_WIN_CORE_INIT = 1301,
- ERR_ADM_WIN_CORE_INIT_RECORDING = 1303,
- ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306,
- ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307,
- ERR_ADM_WIN_CORE_START_RECORDING = 1309,
- ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311,
- ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314,
- ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319,
- ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320,
- ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
- ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
- ERR_ADM_WIN_WAVE_INIT = 1351,
- ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353,
- ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354,
- ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355,
- ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356,
- ERR_ADM_WIN_WAVE_START_RECORDING = 1357,
- ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358,
- ERR_ADM_NO_RECORDING_DEVICE = 1359,
- ERR_ADM_NO_PLAYOUT_DEVICE = 1360,
-
- // VDM error code starts from 1500
- ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
-
- // VCM error code starts from 1600
- ERR_VCM_UNKNOWN_ERROR = 1600,
- ERR_VCM_ENCODER_INIT_ERROR = 1601,
- ERR_VCM_ENCODER_ENCODE_ERROR = 1602,
- ERR_VCM_ENCODER_SET_ERROR = 1603,
-};
-
-enum LOG_FILTER_TYPE
-{
- LOG_FILTER_OFF = 0,
- LOG_FILTER_DEBUG = 0x080f,
- LOG_FILTER_INFO = 0x000f,
- LOG_FILTER_WARN = 0x000e,
- LOG_FILTER_ERROR = 0x000c,
- LOG_FILTER_CRITICAL = 0x0008,
- LOG_FILTER_MASK = 0x80f,
-};
-} // namespace agora
-
-#endif
diff --git a/dependencies2013/win32/include/agora/IAgoraLiveEngine.h b/dependencies2013/win32/include/agora/IAgoraLiveEngine.h
deleted file mode 100644
index c5954f57..00000000
--- a/dependencies2013/win32/include/agora/IAgoraLiveEngine.h
+++ /dev/null
@@ -1,277 +0,0 @@
-//
-// Agora Rtc Engine SDK
-//
-// Created by Sting Feng in 2015-02.
-// Copyright (c) 2015 Agora IO. All rights reserved.
-//
-
-#ifndef AGORA_RTC_LIVE_ENGINE_H
-#define AGORA_RTC_LIVE_ENGINE_H
-
-#include
-#include
-#include
-
-#include "IAgoraRtcEngine.h"
-#include "IAgoraLivePublisher.h"
-#include "IAgoraLiveSubscriber.h"
-#if defined(_WIN32)
-#define WIN32_LEAN_AND_MEAN
-#include
-#define AGORA_CALL __cdecl
-#if defined(AGORARTC_EXPORT)
-#define AGORA_API extern "C" __declspec(dllexport)
-#else
-#define AGORA_API extern "C" __declspec(dllimport)
-#endif
-#elif defined(__APPLE__)
-#define AGORA_API __attribute__((visibility("default"))) extern "C"
-#define AGORA_CALL
-#elif defined(__ANDROID__) || defined(__linux__)
-#define AGORA_API extern "C" __attribute__((visibility("default")))
-#define AGORA_CALL
-#else
-#define AGORA_API extern "C"
-#define AGORA_CALL
-#endif
-namespace agora {
-
-namespace rtc {
-
-/*
-* meida type of stream
-*/
-enum MEDIA_TYPE
-{
- /*
- * No audio and video
- */
- MEDIA_TYPE_NONE = 0,
- /*
- * Audio only
- */
- MEDIA_TYPE_AUDIO_ONLY = 1,
- /*
- * Video only
- */
- MEDIA_TYPE_VIDEO_ONLY = 2,
- /*
- * Audio and Video
- */
- MEDIA_TYPE_AUDIO_AND_VIDEO = 3
-};
-
-/*
-* Channel configuration
-*/
-struct LiveChannelConfig {
- bool videoEnabled;
-};
-
-/*
-* stream statitics
-*/
-typedef RtcStats LiveStats;
-
-/**
-* the event call back interface
-*/
-class ILiveEngineEventHandler
-{
-public:
- virtual ~ILiveEngineEventHandler() {}
-
- /**
- * when warning message coming, the function will be called
- * @param [in] warn
- * warning code
- * @param [in] msg
- * the warning message
- */
- virtual void onWarning(int warn) {
- (void)warn;
- }
-
- /**
- * when error message come, the function will be called
- * @param [in] err
- * error code
- * @param [in] msg
- * the error message
- */
- virtual void onError(int err) {
- (void)err;
- }
-
- /**
- * when join channel success, the function will be called
- * @param [in] channel
- * the channel name you have joined
- * @param [in] uid
- * the UID of you in this channel
- * @param [in] elapsed
- * the time elapsed in ms from the joinChannel been called to joining completed
- */
- virtual void onJoinChannelSuccess(const char* channel, uid_t uid, int elapsed) {
- (void)channel;
- (void)uid;
- (void)elapsed;
- }
-
- /**
- * when re-join channel success, the function will be called
- * @param [in] channel
- * the channel name you have joined
- * @param [in] uid
- * the UID of you in this channel
- * @param [in] elapsed
- * the time elapsed in ms elapsed
- */
- virtual void onRejoinChannelSuccess(const char* channel, uid_t uid, int elapsed) {
- (void)channel;
- (void)uid;
- (void)elapsed;
- }
-
- /*
- * When leave channel success, the function will be called.
- */
- virtual void onLeaveChannel() {
- }
-
- /**
- * when the information of the RTC engine stats come, the function will be called
- * @param [in] stats
- * the RTC engine stats
- */
- virtual void onLiveStats(const LiveStats& stats) {
- (void)stats;
- }
-
- /**
- * report the network quality
- * @param [in] uid
- * the UID of the remote user
- * @param [in] txQuality
- * the score of the send network quality 0~5 the higher the better
- * @param [in] rxQuality
- * the score of the recv network quality 0~5 the higher the better
- */
- virtual void onNetworkQuality(uid_t uid, int txQuality, int rxQuality) {
- (void)uid;
- (void)txQuality;
- (void)rxQuality;
- }
-
- /**
- * when the network can not worked well, the function will be called
- */
- virtual void onConnectionLost() {}
-
- /**
- * when local user disconnected by accident, the function will be called(then SDK will try to reconnect itself)
- */
- virtual void onConnectionInterrupted() {}
-
- /**
- * when token is enabled, and specified token is invalid or expired, this function will be called.
- * APP should request a new token and call renewToken() to refresh the token.
- * NOTE: to be compatible with previous version, ERR_TOKEN_EXPIRED and ERR_INVALID_TOKEN are also reported via onError() callback.
- * You should move renew of token logic into this callback.
- */
- virtual void onRequestToken() {
- }
-
-};
-
-class ILiveEngine
-{
-public:
-
- /**
- * initialize the engine
- * @param [in] context
- * the RTC engine context
- * @return return 0 if success or an error code
- */
- virtual int initialize(const char *appId) = 0;
-
- /**
- * get the version information of the SDK
- * @param [in, out] build
- * the build number
- * @return return the version number string in char format
- */
- virtual const char* getVersion(int* build) = 0;
-
- /*
- * Get IRtcEngine interface
- */
- virtual IRtcEngine* getRtcEngine() = 0;
-
-
- /**
- * release the engine resource
- * @param [in] sync
- * true: release the engine resources and return after all resources have been destroyed.
- * APP should try not to call release(true) in the engine's callbacks, call it this way in a separate thread instead.
- * false: notify engine to release its resources and returns without waiting for resources are really destroyed
- */
- virtual void release(bool sync=false) = 0;
-
- /*
- * Set event handler for ILiveEngine
- */
- virtual int setEventHandler(ILiveEngineEventHandler* eventHandler) = 0;
-
- /**
- * join the channel, if the channel have not been created, it will been created automatically
- * @param [in] token
- * the token, if you have initialized the engine with an available APP ID, it can be null here. If you enable token on the dashboard, specify token here
- * @param [in] channelId
- * the channel Id
- * @param [in] info
- * the additional information, it can be null here
- * @param [in] uid
- * the uid of you, if 0 the system will automatically allocate one for you
- * @return return 0 if success or an error code
- */
- virtual int joinChannel(const char* token, const char* channelId, struct LiveChannelConfig *config, uid_t uid) = 0;
-
- /**
- * leave the current channel
- * @return return 0 if success or an error code
- */
- virtual int leaveChannel() = 0;
-
- /**
- * renew the token for the current channel
- * @param [in] token the renewed token, if old token expired.
- * @return return 0 if success or an error code
- */
- virtual int renewToken(const char* token) = 0;
-
- /**
- * start the local video previewing
- * @return return 0 if success or an error code
- */
- virtual int startPreview(view_t view, RENDER_MODE_TYPE type) = 0;
-
- /**
- * stop the local video previewing
- * @return return 0 if success or an error code
- */
- virtual int stopPreview() = 0;
-};
-
-
-} //namespace rtc
-} // namespace agora
-
-/**
-* create the RTC live engine object and return the pointer
-* @return returns the pointer of the RTC engine object
-*/
-AGORA_API agora::rtc::ILiveEngine* AGORA_CALL createAgoraLiveEngine();
-
-#endif
diff --git a/dependencies2013/win32/include/agora/IAgoraMediaEngine.h b/dependencies2013/win32/include/agora/IAgoraMediaEngine.h
deleted file mode 100644
index 265268c1..00000000
--- a/dependencies2013/win32/include/agora/IAgoraMediaEngine.h
+++ /dev/null
@@ -1,181 +0,0 @@
-#ifndef AGORA_MEDIA_ENGINE_H
-#define AGORA_MEDIA_ENGINE_H
-#if defined _WIN32 || defined __CYGWIN__
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-#include
-#endif
-
-namespace agora
-{
-namespace media
-{
-
-enum MEDIA_SOURCE_TYPE {
- AUDIO_PLAYOUT_SOURCE = 0,
- AUDIO_RECORDING_SOURCE = 1,
-};
-
-class IAudioFrameObserver
-{
-public:
- enum AUDIO_FRAME_TYPE {
- FRAME_TYPE_PCM16 = 0, //PCM 16bit little endian
- };
- struct AudioFrame {
- AUDIO_FRAME_TYPE type;
- int samples; //number of samples in this frame
- int bytesPerSample; //number of bytes per sample: 2 for PCM16
- int channels; //number of channels (data are interleaved if stereo)
- int samplesPerSec; //sampling rate
- void* buffer; //data buffer
- int64_t renderTimeMs;
- };
-public:
- virtual bool onRecordAudioFrame(AudioFrame& audioFrame) = 0;
- virtual bool onPlaybackAudioFrame(AudioFrame& audioFrame) = 0;
- virtual bool onMixedAudioFrame(AudioFrame& audioFrame) = 0;
- virtual bool onPlaybackAudioFrameBeforeMixing(unsigned int uid, AudioFrame& audioFrame) = 0;
-};
-
-class IVideoFrameObserver
-{
-public:
- enum VIDEO_FRAME_TYPE {
- FRAME_TYPE_YUV420 = 0, //YUV 420 format
- };
- struct VideoFrame {
- VIDEO_FRAME_TYPE type;
- int width; //width of video frame
- int height; //height of video frame
- int yStride; //stride of Y data buffer
- int uStride; //stride of U data buffer
- int vStride; //stride of V data buffer
- void* yBuffer; //Y data buffer
- void* uBuffer; //U data buffer
- void* vBuffer; //V data buffer
- int rotation; // rotation of this frame (0, 90, 180, 270)
- int64_t renderTimeMs;
- };
-public:
- virtual bool onCaptureVideoFrame(VideoFrame& videoFrame) = 0;
- virtual bool onRenderVideoFrame(unsigned int uid, VideoFrame& videoFrame) = 0;
-};
-
-class IVideoFrame
-{
-public:
- enum PLANE_TYPE {
- Y_PLANE = 0,
- U_PLANE = 1,
- V_PLANE = 2,
- NUM_OF_PLANES = 3
- };
- enum VIDEO_TYPE {
- VIDEO_TYPE_UNKNOWN = 0,
- VIDEO_TYPE_I420 = 1,
- VIDEO_TYPE_IYUV = 2,
- VIDEO_TYPE_RGB24 = 3,
- VIDEO_TYPE_ABGR = 4,
- VIDEO_TYPE_ARGB = 5,
- VIDEO_TYPE_ARGB4444 = 6,
- VIDEO_TYPE_RGB565 = 7,
- VIDEO_TYPE_ARGB1555 = 8,
- VIDEO_TYPE_YUY2 = 9,
- VIDEO_TYPE_YV12 = 10,
- VIDEO_TYPE_UYVY = 11,
- VIDEO_TYPE_MJPG = 12,
- VIDEO_TYPE_NV21 = 13,
- VIDEO_TYPE_NV12 = 14,
- VIDEO_TYPE_BGRA = 15,
- VIDEO_TYPE_RGBA = 16,
- };
- virtual void release() = 0;
- virtual const unsigned char* buffer(PLANE_TYPE type) const = 0;
-
- // Copy frame: If required size is bigger than allocated one, new buffers of
- // adequate size will be allocated.
- // Return value: 0 on success ,-1 on error.
- virtual int copyFrame(IVideoFrame** dest_frame) const = 0;
-
- // Convert frame
- // Input:
- // - src_frame : Reference to a source frame.
- // - dst_video_type : Type of output video.
- // - dst_sample_size : Required only for the parsing of MJPG.
- // - dst_frame : Pointer to a destination frame.
- // Return value: 0 if OK, < 0 otherwise.
- // It is assumed that source and destination have equal height.
- virtual int convertFrame(VIDEO_TYPE dst_video_type, int dst_sample_size, unsigned char* dst_frame) const = 0;
-
- // Get allocated size per plane.
- virtual int allocated_size(PLANE_TYPE type) const = 0;
-
- // Get allocated stride per plane.
- virtual int stride(PLANE_TYPE type) const = 0;
-
- // Get frame width.
- virtual int width() const = 0;
-
- // Get frame height.
- virtual int height() const = 0;
-
- // Get frame timestamp (90kHz).
- virtual unsigned int timestamp() const = 0;
-
- // Get render time in milliseconds.
- virtual int64_t render_time_ms() const = 0;
-
- // Return true if underlying plane buffers are of zero size, false if not.
- virtual bool IsZeroSize() const = 0;
-};
-
-class IExternalVideoRenderCallback
-{
-public:
- virtual void onViewSizeChanged(int width, int height) = 0;
- virtual void onViewDestroyed() = 0;
-};
-
-struct ExternalVideoRenerContext
-{
- IExternalVideoRenderCallback* renderCallback;
- void* view;
- int renderMode;
- int zOrder;
- float left;
- float top;
- float right;
- float bottom;
-};
-
-class IExternalVideoRender
-{
-public:
- virtual void release() = 0;
- virtual int initialize() = 0;
- virtual int deliverFrame(const IVideoFrame& videoFrame, int rotation, bool mirrored) = 0;
-};
-
-class IExternalVideoRenderFactory
-{
-public:
- virtual IExternalVideoRender* createRenderInstance(const ExternalVideoRenerContext& context) = 0;
-};
-
-class IMediaEngine
-{
-public:
- virtual void release() = 0;
- virtual int registerAudioFrameObserver(IAudioFrameObserver* observer) = 0;
- virtual int registerVideoFrameObserver(IVideoFrameObserver* observer) = 0;
- virtual int registerVideoRenderFactory(IExternalVideoRenderFactory* factory) = 0;
- virtual int pushAudioFrame(MEDIA_SOURCE_TYPE type, IAudioFrameObserver::AudioFrame *frame, bool wrap = false){ return -1; }
-};
-
-} //media
-
-} //agora
-
-#endif //AGORA_MEDIA_ENGINE_H
diff --git a/dependencies2013/win32/include/agora/IAgoraRtcEngine.h b/dependencies2013/win32/include/agora/IAgoraRtcEngine.h
deleted file mode 100644
index b21de8f6..00000000
--- a/dependencies2013/win32/include/agora/IAgoraRtcEngine.h
+++ /dev/null
@@ -1,2451 +0,0 @@
-//
-// Agora Rtc Engine SDK
-//
-// Created by Sting Feng in 2015-02.
-// Copyright (c) 2015 Agora IO. All rights reserved.
-//
-
-#ifndef AGORA_RTC_ENGINE_H
-#define AGORA_RTC_ENGINE_H
-#include "AgoraBase.h"
-#include "IAgoraService.h"
-
-namespace agora {
-namespace rtc {
- typedef unsigned int uid_t;
- typedef void* view_t;
-
-enum MAX_DEVICE_ID_LENGTH_TYPE
-{
- MAX_DEVICE_ID_LENGTH = 512
-};
-
-enum QUALITY_REPORT_FORMAT_TYPE
-{
- QUALITY_REPORT_JSON = 0,
- QUALITY_REPORT_HTML = 1,
-};
-
-enum MEDIA_ENGINE_EVENT_CODE_TYPE
-{
- MEDIA_ENGINE_RECORDING_ERROR = 0,
- MEDIA_ENGINE_PLAYOUT_ERROR = 1,
- MEDIA_ENGINE_RECORDING_WARNING = 2,
- MEDIA_ENGINE_PLAYOUT_WARNING = 3,
- MEDIA_ENGINE_AUDIO_FILE_MIX_FINISH = 10,
- MEDIA_ENGINE_AUDIO_FAREND_MUSIC_BEGINS = 12,
- MEDIA_ENGINE_AUDIO_FAREND_MUSIC_ENDS = 13,
- // media engine role changed
- MEDIA_ENGINE_ROLE_BROADCASTER_SOLO = 20,
- MEDIA_ENGINE_ROLE_BROADCASTER_INTERACTIVE = 21,
- MEDIA_ENGINE_ROLE_AUDIENCE = 22,
- MEDIA_ENGINE_ROLE_COMM_PEER = 23,
- MEDIA_ENGINE_ROLE_GAME_PEER = 24,
- // iOS adm sample rate changed
- MEDIA_ENGINE_AUDIO_ADM_REQUIRE_RESTART = 110,
- MEDIA_ENGINE_AUDIO_ADM_SPECIAL_RESTART = 111,
-};
-
-enum MEDIA_DEVICE_STATE_TYPE
-{
- MEDIA_DEVICE_STATE_ACTIVE = 1,
- MEDIA_DEVICE_STATE_DISABLED = 2,
- MEDIA_DEVICE_STATE_NOT_PRESENT = 4,
- MEDIA_DEVICE_STATE_UNPLUGGED = 8
-};
-
-enum MEDIA_DEVICE_TYPE
-{
- UNKNOWN_AUDIO_DEVICE = -1,
- AUDIO_PLAYOUT_DEVICE = 0,
- AUDIO_RECORDING_DEVICE = 1,
- VIDEO_RENDER_DEVICE = 2,
- VIDEO_CAPTURE_DEVICE = 3,
- AUDIO_APPLICATION_PLAYOUT_DEVICE = 4,
-};
-
-enum AUDIO_RECORDING_QUALITY_TYPE
-{
- AUDIO_RECORDING_QUALITY_LOW = 0,
- AUDIO_RECORDING_QUALITY_MEDIUM = 1,
- AUDIO_RECORDING_QUALITY_HIGH = 2,
-};
-
-enum QUALITY_TYPE
-{
- QUALITY_UNKNOWN = 0,
- QUALITY_EXCELLENT = 1,
- QUALITY_GOOD = 2,
- QUALITY_POOR = 3,
- QUALITY_BAD = 4,
- QUALITY_VBAD = 5,
- QUALITY_DOWN = 6,
- QUALITY_UNSUPPORTED = 7,
-};
-
-enum RENDER_MODE_TYPE
-{
- RENDER_MODE_HIDDEN = 1,
- RENDER_MODE_FIT = 2,
- RENDER_MODE_ADAPTIVE = 3,
-};
-
-enum VIDEO_MIRROR_MODE_TYPE
-{
- VIDEO_MIRROR_MODE_AUTO = 0,//determined by SDK
- VIDEO_MIRROR_MODE_ENABLED = 1,//enabled mirror
- VIDEO_MIRROR_MODE_DISABLED = 2,//disable mirror
-};
-
-enum VIDEO_PROFILE_TYPE
-{ // res fps
- VIDEO_PROFILE_LANDSCAPE_120P = 0, // 160x120 15
- VIDEO_PROFILE_LANDSCAPE_120P_3 = 2, // 120x120 15
- VIDEO_PROFILE_LANDSCAPE_180P = 10, // 320x180 15
- VIDEO_PROFILE_LANDSCAPE_180P_3 = 12, // 180x180 15
- VIDEO_PROFILE_LANDSCAPE_180P_4 = 13, // 240x180 15
- VIDEO_PROFILE_LANDSCAPE_240P = 20, // 320x240 15
- VIDEO_PROFILE_LANDSCAPE_240P_3 = 22, // 240x240 15
- VIDEO_PROFILE_LANDSCAPE_240P_4 = 23, // 424x240 15
- VIDEO_PROFILE_LANDSCAPE_360P = 30, // 640x360 15
- VIDEO_PROFILE_LANDSCAPE_360P_3 = 32, // 360x360 15
- VIDEO_PROFILE_LANDSCAPE_360P_4 = 33, // 640x360 30
- VIDEO_PROFILE_LANDSCAPE_360P_6 = 35, // 360x360 30
- VIDEO_PROFILE_LANDSCAPE_360P_7 = 36, // 480x360 15
- VIDEO_PROFILE_LANDSCAPE_360P_8 = 37, // 480x360 30
- VIDEO_PROFILE_LANDSCAPE_360P_9 = 38, // 640x360 15
- VIDEO_PROFILE_LANDSCAPE_360P_10 = 39, // 640x360 24
- VIDEO_PROFILE_LANDSCAPE_360P_11 = 100, // 640x360 24
- VIDEO_PROFILE_LANDSCAPE_480P = 40, // 640x480 15
- VIDEO_PROFILE_LANDSCAPE_480P_3 = 42, // 480x480 15
- VIDEO_PROFILE_LANDSCAPE_480P_4 = 43, // 640x480 30
- VIDEO_PROFILE_LANDSCAPE_480P_6 = 45, // 480x480 30
- VIDEO_PROFILE_LANDSCAPE_480P_8 = 47, // 848x480 15
- VIDEO_PROFILE_LANDSCAPE_480P_9 = 48, // 848x480 30
- VIDEO_PROFILE_LANDSCAPE_480P_10 = 49, // 640x480 10
- VIDEO_PROFILE_LANDSCAPE_720P = 50, // 1280x720 15
- VIDEO_PROFILE_LANDSCAPE_720P_3 = 52, // 1280x720 30
- VIDEO_PROFILE_LANDSCAPE_720P_5 = 54, // 960x720 15
- VIDEO_PROFILE_LANDSCAPE_720P_6 = 55, // 960x720 30
- VIDEO_PROFILE_LANDSCAPE_1080P = 60, // 1920x1080 15
- VIDEO_PROFILE_LANDSCAPE_1080P_3 = 62, // 1920x1080 30
- VIDEO_PROFILE_LANDSCAPE_1080P_5 = 64, // 1920x1080 60
- VIDEO_PROFILE_LANDSCAPE_1440P = 66, // 2560x1440 30
- VIDEO_PROFILE_LANDSCAPE_1440P_2 = 67, // 2560x1440 60
- VIDEO_PROFILE_LANDSCAPE_4K = 70, // 3840x2160 30
- VIDEO_PROFILE_LANDSCAPE_4K_3 = 72, // 3840x2160 60
-
- VIDEO_PROFILE_PORTRAIT_120P = 1000, // 120x160 15
- VIDEO_PROFILE_PORTRAIT_120P_3 = 1002, // 120x120 15
- VIDEO_PROFILE_PORTRAIT_180P = 1010, // 180x320 15
- VIDEO_PROFILE_PORTRAIT_180P_3 = 1012, // 180x180 15
- VIDEO_PROFILE_PORTRAIT_180P_4 = 1013, // 180x240 15
- VIDEO_PROFILE_PORTRAIT_240P = 1020, // 240x320 15
- VIDEO_PROFILE_PORTRAIT_240P_3 = 1022, // 240x240 15
- VIDEO_PROFILE_PORTRAIT_240P_4 = 1023, // 240x424 15
- VIDEO_PROFILE_PORTRAIT_360P = 1030, // 360x640 15
- VIDEO_PROFILE_PORTRAIT_360P_3 = 1032, // 360x360 15
- VIDEO_PROFILE_PORTRAIT_360P_4 = 1033, // 360x640 30
- VIDEO_PROFILE_PORTRAIT_360P_6 = 1035, // 360x360 30
- VIDEO_PROFILE_PORTRAIT_360P_7 = 1036, // 360x480 15
- VIDEO_PROFILE_PORTRAIT_360P_8 = 1037, // 360x480 30
- VIDEO_PROFILE_PORTRAIT_360P_9 = 1038, // 360x640 15
- VIDEO_PROFILE_PORTRAIT_360P_10 = 1039, // 360x640 24
- VIDEO_PROFILE_PORTRAIT_360P_11 = 1100, // 360x640 24
- VIDEO_PROFILE_PORTRAIT_480P = 1040, // 480x640 15
- VIDEO_PROFILE_PORTRAIT_480P_3 = 1042, // 480x480 15
- VIDEO_PROFILE_PORTRAIT_480P_4 = 1043, // 480x640 30
- VIDEO_PROFILE_PORTRAIT_480P_6 = 1045, // 480x480 30
- VIDEO_PROFILE_PORTRAIT_480P_8 = 1047, // 480x848 15
- VIDEO_PROFILE_PORTRAIT_480P_9 = 1048, // 480x848 30
- VIDEO_PROFILE_PORTRAIT_480P_10 = 1049, // 480x640 10
- VIDEO_PROFILE_PORTRAIT_720P = 1050, // 720x1280 15
- VIDEO_PROFILE_PORTRAIT_720P_3 = 1052, // 720x1280 30
- VIDEO_PROFILE_PORTRAIT_720P_5 = 1054, // 720x960 15
- VIDEO_PROFILE_PORTRAIT_720P_6 = 1055, // 720x960 30
- VIDEO_PROFILE_PORTRAIT_1080P = 1060, // 1080x1920 15
- VIDEO_PROFILE_PORTRAIT_1080P_3 = 1062, // 1080x1920 30
- VIDEO_PROFILE_PORTRAIT_1080P_5 = 1064, // 1080x1920 60
- VIDEO_PROFILE_PORTRAIT_1440P = 1066, // 1440x2560 30
- VIDEO_PROFILE_PORTRAIT_1440P_2 = 1067, // 1440x2560 60
- VIDEO_PROFILE_PORTRAIT_4K = 1070, // 2160x3840 30
- VIDEO_PROFILE_PORTRAIT_4K_3 = 1072, // 2160x3840 60
- VIDEO_PROFILE_DEFAULT = VIDEO_PROFILE_LANDSCAPE_360P,
-};
-
-enum AUDIO_PROFILE_TYPE // sample rate, bit rate, mono/stereo, speech/music codec
-{
- AUDIO_PROFILE_DEFAULT = 0, // use default settings
- AUDIO_PROFILE_SPEECH_STANDARD = 1, // 32Khz, 18kbps, mono, speech
- AUDIO_PROFILE_MUSIC_STANDARD = 2, // 48Khz, 48kbps, mono, music
- AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3, // 48Khz, 56kbps, stereo, music
- AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4, // 48Khz, 128kbps, mono, music
- AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5, // 48Khz, 192kbps, stereo, music
- AUDIO_PROFILE_NUM = 6,
-};
-
-enum AUDIO_SCENARIO_TYPE // set a suitable scenario for your app type
-{
- AUDIO_SCENARIO_DEFAULT = 0,
- AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT = 1,
- AUDIO_SCENARIO_EDUCATION = 2,
- AUDIO_SCENARIO_GAME_STREAMING = 3,
- AUDIO_SCENARIO_SHOWROOM = 4,
- AUDIO_SCENARIO_CHATROOM_GAMING = 5,
- AUDIO_SCENARIO_NUM = 6,
-};
-
-enum CHANNEL_PROFILE_TYPE
-{
- CHANNEL_PROFILE_COMMUNICATION = 0,
- CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
- CHANNEL_PROFILE_GAME = 2,
-};
-
-enum CLIENT_ROLE_TYPE
-{
- CLIENT_ROLE_BROADCASTER = 1,
- CLIENT_ROLE_AUDIENCE = 2,
-};
-
-enum USER_OFFLINE_REASON_TYPE
-{
- USER_OFFLINE_QUIT = 0,
- USER_OFFLINE_DROPPED = 1,
- USER_OFFLINE_BECOME_AUDIENCE = 2,
-};
-
-enum INJECT_STREAM_STATUS
-{
- INJECT_STREAM_STATUS_START_SUCCESS = 0,
- INJECT_STREAM_STATUS_START_ALREADY_EXISTS = 1,
- INJECT_STREAM_STATUS_START_UNAUTHORIZED = 2,
- INJECT_STREAM_STATUS_START_TIMEDOUT = 3,
- INJECT_STREAM_STATUS_START_FAILED = 4,
- INJECT_STREAM_STATUS_STOP_SUCCESS = 5,
- INJECT_STREAM_STATUS_STOP_NOT_FOUND = 6,
- INJECT_STREAM_STATUS_STOP_UNAUTHORIZED = 7,
- INJECT_STREAM_STATUS_STOP_TIMEDOUT = 8,
- INJECT_STREAM_STATUS_STOP_FAILED = 9,
- INJECT_STREAM_STATUS_BROKEN = 10,
-};
-
-enum REMOTE_VIDEO_STREAM_TYPE
-{
- REMOTE_VIDEO_STREAM_HIGH = 0,
- REMOTE_VIDEO_STREAM_LOW = 1,
-};
-
-enum RAW_AUDIO_FRAME_OP_MODE_TYPE
-{
- RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
- RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY = 1,
- RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
-};
-
-
-enum AUDIO_SAMPLE_RATE_TYPE
-{
- AUDIO_SAMPLE_RATE_32000 = 32000,
- AUDIO_SAMPLE_RATE_44100 = 44100,
- AUDIO_SAMPLE_RATE_48000 = 48000,
-};
-
-
-enum VIDEO_CODEC_PROFILE_TYPE
-{
- VIDEO_CODEC_PROFILE_BASELINE = 66,
- VIDEO_CODEC_PROFILE_MAIN = 77,
- VIDEO_CODEC_PROFILE_HIGH = 100,
-};
-
-enum AUDIO_EQUALIZATION_BAND_FREQUENCY
-{
- AUDIO_EQUALIZATION_BAND_31 = 0,
- AUDIO_EQUALIZATION_BAND_62 = 1,
- AUDIO_EQUALIZATION_BAND_125 = 2,
- AUDIO_EQUALIZATION_BAND_250 = 3,
- AUDIO_EQUALIZATION_BAND_500 = 4,
- AUDIO_EQUALIZATION_BAND_1K = 5,
- AUDIO_EQUALIZATION_BAND_2K = 6,
- AUDIO_EQUALIZATION_BAND_4K = 7,
- AUDIO_EQUALIZATION_BAND_8K = 8,
- AUDIO_EQUALIZATION_BAND_16K = 9,
-};
-
-enum AUDIO_REVERB_TYPE
-{
- AUDIO_REVERB_DRY_LEVEL = 0, // (dB, [-20,10]), the level of the dry signal
- AUDIO_REVERB_WET_LEVEL = 1, // (dB, [-20,10]), the level of the early reflection signal (wet signal)
- AUDIO_REVERB_ROOM_SIZE = 2, // ([0, 100]), the room size of the reflection
- AUDIO_REVERB_WET_DELAY = 3, // (ms, [0, 200]), the length of the initial delay of the wet signal in ms
- AUDIO_REVERB_STRENGTH = 4, // ([0, 100]), the strength of the late reverberation
-};
-
-enum REMOTE_VIDEO_STATE
-{
- // REMOTE_VIDEO_STATE_STOPPED is not used at this version. Ignore this value.
- // REMOTE_VIDEO_STATE_STOPPED = 0, // Default state, video is started or remote user disabled/muted video stream
- REMOTE_VIDEO_STATE_RUNNING = 1, // Running state, remote video can be displayed normally
- REMOTE_VIDEO_STATE_FROZEN = 2, // Remote video is frozen, probably due to network issue.
-};
-
-struct AudioVolumeInfo
-{
- uid_t uid;
- unsigned int volume; // [0,255]
-};
-
-struct RtcStats
-{
- unsigned int duration;
- unsigned int txBytes;
- unsigned int rxBytes;
- unsigned short txKBitRate;
- unsigned short rxKBitRate;
-
- unsigned short rxAudioKBitRate;
- unsigned short txAudioKBitRate;
-
- unsigned short rxVideoKBitRate;
- unsigned short txVideoKBitRate;
- unsigned int userCount;
- double cpuAppUsage;
- double cpuTotalUsage;
-};
-
-struct LocalVideoStats
-{
- int sentBitrate;
- int sentFrameRate;
-};
-
-struct RemoteVideoStats
-{
- uid_t uid;
- int delay; // obsolete
- int width;
- int height;
- int receivedBitrate;
- int receivedFrameRate;
- REMOTE_VIDEO_STREAM_TYPE rxStreamType;
-};
-
-struct VideoCompositingLayout
-{
- struct Region {
- uid_t uid;
- double x;//[0,1]
- double y;//[0,1]
- double width;//[0,1]
- double height;//[0,1]
- int zOrder; //optional, [0, 100] //0 (default): bottom most, 100: top most
-
- // Optional
- // [0, 1.0] where 0 denotes throughly transparent, 1.0 opaque
- double alpha;
-
- RENDER_MODE_TYPE renderMode;//RENDER_MODE_HIDDEN: Crop, RENDER_MODE_FIT: Zoom to fit
- Region()
- :uid(0)
- , x(0)
- , y(0)
- , width(0)
- , height(0)
- , zOrder(0)
- , alpha(1.0)
- , renderMode(RENDER_MODE_HIDDEN)
- {}
-
- };
- int canvasWidth;
- int canvasHeight;
- const char* backgroundColor;//e.g. "#C0C0C0" in RGB
- const Region* regions;
- int regionCount;
- const char* appData;
- int appDataLength;
- VideoCompositingLayout()
- :canvasWidth(0)
- ,canvasHeight(0)
- ,backgroundColor(NULL)
- ,regions(NULL)
- , regionCount(0)
- , appData(NULL)
- , appDataLength(0)
- {}
-};
-
-typedef struct Rect {
- int top;
- int left;
- int bottom;
- int right;
-
- Rect(): top(0), left(0), bottom(0), right(0) {}
- Rect(int t, int l, int b, int r): top(t), left(l), bottom(b), right(r) {}
-} Rect;
-
-
-typedef struct TranscodingUser {
- uid_t uid;
-
- int x;
- int y;
- int width;
- int height;
-
- int zOrder;
- double alpha;
- int audioChannel;
- TranscodingUser()
- : uid(0)
- , x(0)
- , y(0)
- , width(0)
- , height(0)
- , zOrder(0)
- , alpha(1.0)
- , audioChannel(0)
- {}
-
-} TranscodingUser;
-
-typedef struct RtcImage {
- RtcImage() :
- url(nullptr),
- x(0),
- y(0),
- width(0),
- height(0)
- {}
- const char* url;
- int x;
- int y;
- int width;
- int height;
-} RtcImage;
-
-typedef struct LiveTranscoding {
- int width;
- int height;
- int videoBitrate;
- int videoFramerate;
-
- bool lowLatency;
-
- int videoGop;
- VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
- unsigned int backgroundColor;
- unsigned int userCount;
- TranscodingUser *transcodingUsers;
- const char *transcodingExtraInfo;
- RtcImage* watermark;
-
- AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
- int audioBitrate;
- int audioChannels;
-
- LiveTranscoding()
- : width(360)
- , height(640)
- , videoBitrate(400)
- , videoFramerate(15)
- , lowLatency(false)
- , backgroundColor(0x000000)
- , videoGop(30)
- , videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH)
- , userCount(0)
- , transcodingUsers(nullptr)
- , transcodingExtraInfo(nullptr)
- , watermark(nullptr)
- , audioSampleRate(AUDIO_SAMPLE_RATE_48000)
- , audioBitrate(48)
- , audioChannels(1)
- {}
-} LiveTranscoding;
-
-struct InjectStreamConfig {
- int width;
- int height;
- int videoGop;
- int videoFramerate;
- int videoBitrate;
- AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
- int audioBitrate;
- int audioChannels;
-
- // width / height default set to 0 means pull the stream with its original resolution
- InjectStreamConfig()
- : width(0)
- , height(0)
- , videoGop(30)
- , videoFramerate(15)
- , videoBitrate(400)
- , audioSampleRate(AUDIO_SAMPLE_RATE_48000)
- , audioBitrate(48)
- , audioChannels(1)
- {}
-};
-
-enum RTMP_STREAM_LIFE_CYCLE_TYPE
-{
- RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL = 1,
- RTMP_STREAM_LIFE_CYCLE_BIND2OWNER = 2,
-};
-
-struct PublisherConfiguration {
- int width;
- int height;
- int framerate;
- int bitrate;
- int defaultLayout;
- int lifecycle;
- bool owner;
- int injectStreamWidth;
- int injectStreamHeight;
- const char* injectStreamUrl;
- const char* publishUrl;
- const char* rawStreamUrl;
- const char* extraInfo;
-
-
- PublisherConfiguration()
- : width(640)
- , height(360)
- , framerate(15)
- , bitrate(500)
- , defaultLayout(1)
- , lifecycle(RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL)
- , owner(true)
- , injectStreamWidth(0)
- , injectStreamHeight(0)
- , injectStreamUrl(NULL)
- , publishUrl(NULL)
- , rawStreamUrl(NULL)
- , extraInfo(NULL)
- {}
-
-};
-
-#if !defined(__ANDROID__)
-struct VideoCanvas
-{
- view_t view;
- int renderMode;
- uid_t uid;
- void *priv; // private data (underlying video engine denotes it)
-
- VideoCanvas()
- : view(NULL)
- , renderMode(RENDER_MODE_HIDDEN)
- , uid(0)
- , priv(NULL)
- {}
- VideoCanvas(view_t v, int m, uid_t u)
- : view(v)
- , renderMode(m)
- , uid(u)
- , priv(NULL)
- {}
-};
-#else
-struct VideoCanvas;
-#endif
-
-class IPacketObserver
-{
-public:
-
- struct Packet
- {
- const unsigned char* buffer;
- unsigned int size;
- };
- /**
- * called by sdk before the audio packet is sent to other participants
- * @param [in,out] packet
- * buffer *buffer points the data to be sent
- * size of buffer data to be sent
- * @return returns true to send out the packet, returns false to discard the packet
- */
- virtual bool onSendAudioPacket(Packet& packet) = 0;
- /**
- * called by sdk before the video packet is sent to other participants
- * @param [in,out] packet
- * buffer *buffer points the data to be sent
- * size of buffer data to be sent
- * @return returns true to send out the packet, returns false to discard the packet
- */
- virtual bool onSendVideoPacket(Packet& packet) = 0;
- /**
- * called by sdk when the audio packet is received from other participants
- * @param [in,out] packet
- * buffer *buffer points the data to be sent
- * size of buffer data to be sent
- * @return returns true to process the packet, returns false to discard the packet
- */
- virtual bool onReceiveAudioPacket(Packet& packet) = 0;
- /**
- * called by sdk when the video packet is received from other participants
- * @param [in,out] packet
- * buffer *buffer points the data to be sent
- * size of buffer data to be sent
- * @return returns true to process the packet, returns false to discard the packet
- */
- virtual bool onReceiveVideoPacket(Packet& packet) = 0;
-};
-
-
-/**
-* the event call back interface
-*/
-class IRtcEngineEventHandler
-{
-public:
- virtual ~IRtcEngineEventHandler() {}
-
- /**
- * when join channel success, the function will be called
- * @param [in] channel
- * the channel name you have joined
- * @param [in] uid
- * the UID of you in this channel
- * @param [in] elapsed
- * the time elapsed in ms from the joinChannel been called to joining completed
- */
- virtual void onJoinChannelSuccess(const char* channel, uid_t uid, int elapsed) {
- (void)channel;
- (void)uid;
- (void)elapsed;
- }
-
- /**
- * when join channel success, the function will be called
- * @param [in] channel
- * the channel name you have joined
- * @param [in] uid
- * the UID of you in this channel
- * @param [in] elapsed
- * the time elapsed in ms elapsed
- */
- virtual void onRejoinChannelSuccess(const char* channel, uid_t uid, int elapsed) {
- (void)channel;
- (void)uid;
- (void)elapsed;
- }
-
- /**
- * when warning message coming, the function will be called
- * @param [in] warn
- * warning code
- * @param [in] msg
- * the warning message
- */
- virtual void onWarning(int warn, const char* msg) {
- (void)warn;
- (void)msg;
- }
-
- /**
- * when error message come, the function will be called
- * @param [in] err
- * error code
- * @param [in] msg
- * the error message
- */
- virtual void onError(int err, const char* msg) {
- (void)err;
- (void)msg;
- }
-
- /**
- * when audio quality message come, the function will be called
- * @param [in] uid
- * the uid of the peer
- * @param [in] quality
- * the quality of the user, see QUALITY_TYPE for value definition
- * @param [in] delay
- * the average time of the audio packages delayed
- * @param [in] lost
- * the rate of the audio packages lost
- */
- virtual void onAudioQuality(uid_t uid, int quality, unsigned short delay, unsigned short lost) {
- (void)uid;
- (void)quality;
- (void)delay;
- (void)lost;
- }
-
- /**
- * when the audio volume information come, the function will be called
- * @param [in] speakers
- * the array of the speakers' audio volume information
- * @param [in] speakerNumber
- * the count of speakers in this array
- * @param [in] totalVolume
- * the total volume of all users
- */
- virtual void onAudioVolumeIndication(const AudioVolumeInfo* speakers, unsigned int speakerNumber, int totalVolume) {
- (void)speakers;
- (void)speakerNumber;
- (void)totalVolume;
- }
-
- /**
- * when the audio volume information come, the function will be called
- * @param [in] stats
- * the statistics of the call
- */
- virtual void onLeaveChannel(const RtcStats& stats) {
- (void)stats;
- }
-
- /**
- * when the information of the RTC engine stats come, the function will be called
- * @param [in] stats
- * the RTC engine stats
- */
- virtual void onRtcStats(const RtcStats& stats) {
- (void)stats;
- }
-
- /**
- * when the audio device state changed(plugged or removed), the function will be called
- * @param [in] deviceId
- * the ID of the state changed audio device
- * @param [in] deviceType
- * the type of the audio device(playout device or record device)
- * @param [in] deviceState
- * the device is been removed or added
- */
- virtual void onAudioDeviceStateChanged(const char* deviceId, int deviceType, int deviceState) {
- (void)deviceId;
- (void)deviceType;
- (void)deviceState;
- }
-
- /**
- * When audio mixing file playback finished, this function will be called
- */
- virtual void onAudioMixingFinished() {
- }
-
- /**
- * When far-end rhythm begins/ends, these functions will be called
- */
- virtual void onRemoteAudioMixingBegin() {
- }
- virtual void onRemoteAudioMixingEnd() {
- }
-
- /**
- * When audio effect playback finished, this function will be called
- */
- virtual void onAudioEffectFinished(int soundId) {
- }
-
- /**
- * when the video device state changed(plugged or removed), the function will be called
- * @param [in] deviceId
- * the ID of the state changed video device
- * @param [in] deviceType
- * not used
- * @param [in] deviceState
- * the device is been removed or added
- */
- virtual void onVideoDeviceStateChanged(const char* deviceId, int deviceType, int deviceState) {
- (void)deviceId;
- (void)deviceType;
- (void)deviceState;
- }
-
- /**
- * report the network quality
- * @param [in] uid
- * the UID of the remote user
- * @param [in] txQuality
- * the score of the send network quality 0~5 the higher the better
- * @param [in] rxQuality
- * the score of the recv network quality 0~5 the higher the better
- */
- virtual void onNetworkQuality(uid_t uid, int txQuality, int rxQuality) {
- (void)uid;
- (void)txQuality;
- (void)rxQuality;
- }
-
- /**
- * report the last-mile test network quality
- * @param [in] quality
- * the score of the network quality 0~5 the higher the better
- */
- virtual void onLastmileQuality(int quality) {
- (void)quality;
- }
-
- /**
- * when the first local video frame displayed, the function will be called
- * @param [in] width
- * the width of the video frame
- * @param [in] height
- * the height of the video frame
- * @param [in] elapsed
- * the time elapsed from channel joined in ms
- */
- virtual void onFirstLocalVideoFrame(int width, int height, int elapsed) {
- (void)width;
- (void)height;
- (void)elapsed;
- }
-
- /**
- * when the first remote video frame decoded, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] width
- * the width of the video frame
- * @param [in] height
- * the height of the video frame
- * @param [in] elapsed
- * the time elapsed from channel joined in ms
- */
- virtual void onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed) {
- (void)uid;
- (void)width;
- (void)height;
- (void)elapsed;
- }
-
- /**
- * when video size changed or rotation changed, the function will be called
- * @param [in] uid
- * the UID of the remote user or local user (0)
- * @param [in] width
- * the new width of the video
- * @param [in] height
- * the new height of the video
- * @param [in] rotation
- * the rotation of the video
- */
- virtual void onVideoSizeChanged(uid_t uid, int width, int height, int rotation) {
- (void)uid;
- (void)width;
- (void)height;
- (void)rotation;
- }
-
- virtual void onRemoteVideoStateChanged(uid_t uid, REMOTE_VIDEO_STATE state) {
- (void)uid;
- (void)state;
- }
-
- /**
- * when the first remote video frame displayed, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] width
- * the width of the video frame
- * @param [in] height
- * the height of the video frame
- * @param [in] elapsed
- * the time elapsed from remote user called joinChannel in ms
- */
- virtual void onFirstRemoteVideoFrame(uid_t uid, int width, int height, int elapsed) {
- (void)uid;
- (void)width;
- (void)height;
- (void)elapsed;
- }
-
- /**
- * when any other user joined in the same channel, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] elapsed
- * the time elapsed from remote used called joinChannel to joining completed in ms
- */
- virtual void onUserJoined(uid_t uid, int elapsed) {
- (void)uid;
- (void)elapsed;
- }
-
- /**
- * when user offline(exit channel or offline by accident), the function will be called
- * @param [in] uid
- * the UID of the remote user
- */
- virtual void onUserOffline(uid_t uid, USER_OFFLINE_REASON_TYPE reason) {
- (void)uid;
- (void)reason;
- }
-
- /**
- * when remote user muted the audio stream, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] muted
- * true: the remote user muted the audio stream, false: the remote user unmuted the audio stream
- */
- virtual void onUserMuteAudio(uid_t uid, bool muted) {
- (void)uid;
- (void)muted;
- }
-
- /**
- * when remote user muted the video stream, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] muted
- * true: the remote user muted the video stream, false: the remote user unmuted the video stream
- */
- virtual void onUserMuteVideo(uid_t uid, bool muted) {
- (void)uid;
- (void)muted;
- }
-
- /**
- * when remote user enable video function, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] enabled
- * true: the remote user has enabled video function, false: the remote user has disabled video function
- */
- virtual void onUserEnableVideo(uid_t uid, bool enabled) {
- (void)uid;
- (void)enabled;
- }
-
- /**
- * when remote user enable local video function, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] enabled
- * true: the remote user has enabled local video function, false: the remote user has disabled local video function
- */
- virtual void onUserEnableLocalVideo(uid_t uid, bool enabled) {
- (void)uid;
- (void)enabled;
- }
-
- /**
- * when api call executed completely, the function will be called
- * @param [in] api
- * the api name
- * @param [in] err
- * error code while 0 means OK
- */
- virtual void onApiCallExecuted(int err, const char* api, const char* result) {
- (void)err;
- (void)api;
- (void)result;
- }
-
- /**
- * reported local video stats
- * @param [in] stats
- * the latest local video stats
- */
- virtual void onLocalVideoStats(const LocalVideoStats& stats) {
- (void)stats;
- }
-
- /**
- * reported remote video stats
- * @param [in] stats
- * the latest remote video stats
- */
- virtual void onRemoteVideoStats(const RemoteVideoStats& stats) {
- (void)stats;
- }
-
- /**
- * when the camera is ready to work, the function will be called
- */
- virtual void onCameraReady() {}
-
- virtual void onCameraFocusAreaChanged(int x, int y, int width, int height) {
- (void)x;
- (void)y;
- (void)width;
- (void)height;
- }
-
- /**
- * when all video stopped, the function will be called then you can repaint the video windows
- */
- virtual void onVideoStopped() {}
-
- /**
- * when the network can not worked well, the function will be called
- */
- virtual void onConnectionLost() {}
-
- /**
- * when local user disconnected by accident, the function will be called(then SDK will try to reconnect itself)
- */
- virtual void onConnectionInterrupted() {}
-
- /**
- * when local user is banned by the server, the function will be called
- */
- virtual void onConnectionBanned() {}
-
- virtual void onRefreshRecordingServiceStatus(int status) {
- (void)status;
- }
-
-// virtual void onStreamError(int streamId, int code, int parameter, const char* message, size_t length) {}
- /**
- * when stream message received, the function will be called
- * @param [in] uid
- * UID of the peer who sends the message
- * @param [in] streamId
- * APP can create multiple streams for sending messages of different purposes
- * @param [in] data
- * the message data
- * @param [in] length
- * the message length, in bytes
- * frame rate
- */
- virtual void onStreamMessage(uid_t uid, int streamId, const char* data, size_t length) {
- (void)uid;
- (void)streamId;
- (void)data;
- (void)length;
- }
-
- /**
- *
- */
- virtual void onStreamMessageError(uid_t uid, int streamId, int code, int missed, int cached) {
- (void)uid;
- (void)streamId;
- (void)code;
- (void)missed;
- (void)cached;
- }
-
- virtual void onMediaEngineLoadSuccess() {
- }
- virtual void onMediaEngineStartCallSuccess() {
- }
- /**
- * when token is enabled, and specified token is invalid or expired, this function will be called.
- * APP should generate a new token and call renewToken() to refresh the token.
- * NOTE: to be compatible with previous version, ERR_TOKEN_EXPIRED and ERR_INVALID_TOKEN are also reported via onError() callback.
- * You should move renew of token logic into this callback.
- */
- virtual void onRequestToken() {
- }
-
- /**
- * when the first local audio frame generated, the function will be called
- * @param [in] elapsed
- * the time elapsed from remote user called joinChannel in ms
- */
- virtual void onFirstLocalAudioFrame(int elapsed) {
- (void)elapsed;
- }
-
- /**
- * when the first remote audio frame arrived, the function will be called
- * @param [in] uid
- * the UID of the remote user
- * @param [in] elapsed
- * the time elapsed from remote user called joinChannel in ms
- */
- virtual void onFirstRemoteAudioFrame(uid_t uid, int elapsed) {
- (void)uid;
- (void)elapsed;
- }
- /** @param [in] uid
- * the speaker uid who is talking in the channel
- */
- virtual void onActiveSpeaker(uid_t uid) {
- (void)uid;
- }
-
- /**
- * when client role is successfully changed, the function will be called
- */
- virtual void onClientRoleChanged(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole) {
- }
-
- virtual void onAudioDeviceVolumeChanged(MEDIA_DEVICE_TYPE deviceType, int volume, bool muted) {
- (void)deviceType;
- (void)volume;
- (void)muted;
- }
-
- virtual void onStreamPublished(const char *url, int error) {
- (void)url;
- (void)error;
- }
-
- virtual void onStreamUnpublished(const char *url) {
- (void)url;
- }
-
- virtual void onTranscodingUpdated() {
- }
-
- virtual void onStreamInjectedStatus(const char* url, uid_t uid, int status) {
- (void)url;
- (void)uid;
- (void)status;
- }
-
-};
-
-/**
-* the video device collection interface
-*/
-class IVideoDeviceCollection
-{
-public:
- /**
- * get the audio device count
- * @return returns the audio device count
- */
- virtual int getCount() = 0;
-
- /**
- * get audio device information
- * @param [in] index
- * the index of the device in the device list
- * @param [in, out] deviceName
- * the device name, UTF8 format
- * @param [in, out] deviceId
- * the device ID, UTF8 format
- * @return return 0 if success or an error code
- */
- virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * set current active audio device
- * @param [in] deviceId
- * the deviceId of the device you want to active currently
- * @return return 0 if success or an error code
- */
- virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * release the resource
- */
- virtual void release() = 0;
-};
-
-class IVideoDeviceManager
-{
-public:
-
- /**
- * create the IVideoDeviceCollection interface pointer
- * @return return the IVideoDeviceCollection interface or nullptr if failed
- */
- virtual IVideoDeviceCollection* enumerateVideoDevices() = 0;
-
- /**
- * active the video device for current using
- * @param [in] deviceId
- * the deviceId of the device you want to active currently
- * @return return 0 if success or the error code.
- */
- virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * get the current active video device
- * @param [in, out] deviceId
- * the device id of the current active video device
- * @return return 0 if success or an error code
- */
- virtual int getDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * test the video capture device to know whether it can worked well
- * @param [in] hwnd
- * the HWND of the video-display window
- * @return return 0 if success or an error code
- */
- virtual int startDeviceTest(view_t hwnd) = 0;
-
- /**
- * stop the video device testing
- * @return return 0 if success or an error code
- */
- virtual int stopDeviceTest() = 0;
-
- /**
- * release the resource
- */
- virtual void release() = 0;
-};
-
-class IAudioDeviceCollection
-{
-public:
- /**
- * get the available devices count
- * @return return the device count
- */
- virtual int getCount() = 0;
-
- /**
- * get video device information
- * @param [in] index
- * the index of the device in the device list
- * @param [in, out] deviceName
- * the device name, UTF8 format
- * @param [in, out] deviceId
- * the device ID, UTF8 format
- * @return return 0 if success or an error code
- */
- virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * active the device for current using
- * @param [in] deviceId
- * the deviceId of the device you want to active currently
- * @return return 0 if success or the error code.
- */
- virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- virtual int setApplicationVolume(int volume) = 0;
- virtual int getApplicationVolume(int& volume) = 0;
- virtual int setApplicationMute(bool mute) = 0;
- virtual int isApplicationMute(bool& mute) = 0;
- /**
- * release the resource
- */
- virtual void release() = 0;
-};
-
-class IAudioDeviceManager
-{
-public:
- /**
- * create the IAudioDeviceCollection interface pointer of the playback devices
- * @return return the IVideoDeviceCollection interface or nullptr if failed
- */
- virtual IAudioDeviceCollection* enumeratePlaybackDevices() = 0;
-
- /**
- * create the IAudioDeviceCollection interface pointer of the Recording devices
- * @return return the IVideoDeviceCollection interface or nullptr if failed
- */
- virtual IAudioDeviceCollection* enumerateRecordingDevices() = 0;
-
- /**
- * active the playback device for current using
- * @param [in] deviceId
- * the deviceId of the playback device you want to active currently
- * @return return 0 if success or the error code.
- */
- virtual int setPlaybackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * get the current active playback device
- * @param [in, out] deviceId
- * the device id of the current active video device
- * @return return 0 if success or an error code
- */
- virtual int getPlaybackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * set current playback device volume
- * @param [in] volume
- * the volume you want to set 0-255
- * @return return 0 if success or an error code
- */
- virtual int setPlaybackDeviceVolume(int volume) = 0;
-
- /**
- * get current playback device volume
- * @param [in, out] volume
- * the current playback device volume 0-255
- * @return return 0 if success or an error code
- */
- virtual int getPlaybackDeviceVolume(int *volume) = 0;
-
- /**
- * active the recording audio device for current using
- * @param [in] deviceId
- * the deviceId of the recording audio device you want to active currently
- * @return return 0 if success or the error code.
- */
- virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * get the current active recording device
- * @param [in, out] deviceId
- * the device id of the current active recording audio device
- * @return return 0 if success or an error code
- */
- virtual int getRecordingDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
- /**
- * set current recording device volume
- * @param [in] volume
- * the volume you want to set 0-255
- * @return return 0 if success or an error code
- */
- virtual int setRecordingDeviceVolume(int volume) = 0;
-
- /**
- * get current recording device volume
- * @param [in, out] volume
- * the current recording device volume 0-255
- * @return return 0 if success or an error code
- */
- virtual int getRecordingDeviceVolume(int *volume) = 0;
-
- virtual int setPlaybackDeviceMute(bool mute) = 0;
- virtual int getPlaybackDeviceMute(bool *mute) = 0;
- virtual int setRecordingDeviceMute(bool mute) = 0;
- virtual int getRecordingDeviceMute(bool *mute) = 0;
-
- /**
- * test the playback audio device to know whether it can worked well
- * @param [in] testAudioFilePath
- * the path of the .wav file
- * @return return 0 if success and you can hear the sound of the .wav file or an error code.
- */
- virtual int startPlaybackDeviceTest(const char* testAudioFilePath) = 0;
-
- /**
- * stop the playback audio device testing
- * @return return 0 if success or an error code
- */
- virtual int stopPlaybackDeviceTest() = 0;
-
- /**
- * test the recording audio device to know whether it can worked well
- * @param [in] indicationInterval
- * the period in ms of the call back cycle
- * @return return 0 if success or an error code
- */
- virtual int startRecordingDeviceTest(int indicationInterval) = 0;
-
- /**
- * stop the recording audio device testing
- * @return return 0 if success or an error code
- */
- virtual int stopRecordingDeviceTest() = 0;
-
- /**
- * release the resource
- */
- virtual void release() = 0;
-};
-
-struct RtcEngineContext
-{
- IRtcEngineEventHandler* eventHandler;
- const char* appId;
- RtcEngineContext()
- :eventHandler(NULL)
- ,appId(NULL)
- {}
-};
-
-class IRtcEngine
-{
-public:
- /**
- * release the engine resource
- * @param [in] sync
- * true: release the engine resources and return after all resources have been destroyed.
- * APP should try not to call release(true) in the engine's callbacks, call it this way in a separate thread instead.
- * false: notify engine to release its resources and returns without waiting for resources are really destroyed
- */
- virtual void release(bool sync=false) = 0;
-
- /**
- * initialize the engine
- * @param [in] context
- * the RTC engine context
- * @return return 0 if success or an error code
- */
- virtual int initialize(const RtcEngineContext& context) = 0;
-
- /**
- * get the pointer of the device manager object.
- * @param [in] iid
- * the iid of the interface you want to get
- * @param [in, out] inter
- * the pointer of the pointer you want to point to DeviceManager object
- * @return return 0 if success or an error code
- */
- virtual int queryInterface(INTERFACE_ID_TYPE iid, void** inter) = 0;
-
- /**
- * get the version information of the SDK
- * @param [in, out] build
- * the build number
- * @return return the version number string in char format
- */
- virtual const char* getVersion(int* build) = 0;
-
- /**
- * get the version information of the SDK
- * @param [in, out] code
- * the build number
- * @return return the version number string in char format
- */
- virtual const char* getErrorDescription(int code) = 0;
-
- /**
- * join the channel, if the channel have not been created, it will been created automatically
- * @param [in] token
- * the token, if you have initialized the engine with an available APP ID, it can be null here. If you enable token on the dashboard, specify token here
- * @param [in] channelId
- * the channel id
- * @param [in] info
- * the additional information, it can be null here
- * @param [in] uid
- * the uid of you, if 0 the system will automatically allocate one for you
- * @return return 0 if success or an error code
- */
- virtual int joinChannel(const char* token, const char* channelId, const char* info, uid_t uid) = 0;
-
- /**
- * leave the current channel
- * @return return 0 if success or an error code
- */
- virtual int leaveChannel() = 0;
-
- /**
- * renew the token for the current channel
- * @param [in] token the renewed token, if old token expired.
- * @return return 0 if success or an error code
- */
- virtual int renewToken(const char* token) = 0;
-
- virtual int setChannelProfile(CHANNEL_PROFILE_TYPE profile) = 0;
- virtual int setClientRole(CLIENT_ROLE_TYPE role) = 0;
-
- /**
- * start the echo testing, if every thing goes well you can hear your echo from the server
- * @return return 0 if success or an error code
- */
- virtual int startEchoTest() = 0;
-
- /**
- * stop the echo testing
- * @return return 0 if success or an error code
- */
- virtual int stopEchoTest() = 0;
-
- /**
- * start the network testing
- * @return return 0 if success or an error code
- */
- virtual int enableLastmileTest() = 0;
-
- /**
- * stop the network testing
- * @return return 0 if success or an error code
- */
- virtual int disableLastmileTest() = 0;
-
- /**
- * enable video function
- * @return return 0 if success or an error code
- */
- virtual int enableVideo() = 0;
-
- /**
- * disable video function
- * @return return 0 if success or an error code
- */
- virtual int disableVideo() = 0;
-
- /**
- * start the local video previewing
- * @return return 0 if success or an error code
- */
- virtual int startPreview() = 0;
-
- /**
- * stop the local video previewing
- * @return return 0 if success or an error code
- */
- virtual int stopPreview() = 0;
-
- virtual int setVideoProfile(VIDEO_PROFILE_TYPE profile, bool swapWidthAndHeight) = 0;
- /**
- * set the remote video canvas
- * @param [in] canvas
- * the canvas information
- * @return return 0 if success or an error code
- */
- virtual int setupRemoteVideo(const VideoCanvas& canvas) = 0;
-
- /**
- * set the local video canvas
- * @param [in] canvas
- * the canvas information
- * @return return 0 if success or an error code
- */
- virtual int setupLocalVideo(const VideoCanvas& canvas) = 0;
-
- /**
- * enable audio function, which is enabled by deault.
- * @return return 0 if success or an error code
- */
- virtual int enableAudio() = 0;
-
- /**
- * disable audio function
- * @return return 0 if success or an error code
- */
- virtual int disableAudio() = 0;
-
- virtual int setAudioProfile(AUDIO_PROFILE_TYPE profile, AUDIO_SCENARIO_TYPE scenario) = 0;
-
-#if defined(__APPLE__) || defined(_WIN32)
-
-#if defined(__APPLE__)
- typedef unsigned int WindowIDType;
-#elif defined(_WIN32)
- typedef HWND WindowIDType;
-#endif
- /**
- * start screen/windows capture
- *
- * @param windowId screen capture, if windowId is 0; windows capture if windowsId isn't 0;
- * @param rect valid when windowId is 0; whole screen if rect is NULL.
- *
- * @return return 0 if success or an error code
- */
- virtual int startScreenCapture(WindowIDType windowId, int captureFreq, const Rect *rect, int bitrate) = 0;
-
- /**
- * stop screen capture
- * @return return 0 if success or an error code
- */
- virtual int stopScreenCapture() = 0;
-
- /**
- * update screen capture region
- *
- * @param rect valid when windowId is 0; whole screen if rect is NULL.
- *
- * @return return 0 if success or an error code
- */
- virtual int updateScreenCaptureRegion(const Rect *rect) = 0;
-#endif
-
- /**
- * get self call id in the current channel
- * @param [in, out] callId
- * the self call Id
- * @return return 0 if success or an error code
- */
- virtual int getCallId(agora::util::AString& callId) = 0;
-
- virtual int rate(const char* callId, int rating, const char* description) = 0; // 0~10
- virtual int complain(const char* callId, const char* description) = 0;
-
- /**
- * register a packet observer while the packet arrived or ready to be sent, the observer can touch the packet data
- * @param [in] observer
- * the pointer of the observer object
- * @return return 0 if success or an error code
- */
- virtual int registerPacketObserver(IPacketObserver* observer) = 0;
-
- /**
- * Specify encryption mode of AES encryption algorithm.
- * @param [in] encryptionMode
- * encryption mode of AES algorithm, could be one of the following:
- * "aes-128-xts", "aes-256-xts".
- * The default value is "aes-128-xts". specify NULL value will use default encryption mode.
- * @return return 0 if success or an error code
- */
- virtual int setEncryptionMode(const char* encryptionMode) = 0;
- /**
- * Specify encryption secret enables built-in encryption function. Leaving channel will clear the secret specified in last channel
- * @param [in] secret
- * secret to enable encryption
- * @return return 0 if success or an error code
- */
- virtual int setEncryptionSecret(const char* secret) = 0;
-
- virtual int createDataStream(int* streamId, bool reliable, bool ordered) = 0;
- virtual int sendStreamMessage(int streamId, const char* data, size_t length) = 0;
-
- virtual int setVideoCompositingLayout(const VideoCompositingLayout& sei) = 0;
- virtual int clearVideoCompositingLayout() = 0;
- virtual int configPublisher(const PublisherConfiguration& config) = 0;
-
- virtual int addPublishStreamUrl(const char *url, bool transcodingEnabled) = 0;
- virtual int removePublishStreamUrl(const char *url) = 0;
- virtual int setLiveTranscoding(const LiveTranscoding &transcoding) = 0;
-
- virtual int addVideoWatermark(const RtcImage& watermark) = 0;
- virtual int clearVideoWatermarks() = 0;
-
- virtual int addInjectStreamUrl(const char* url, const InjectStreamConfig& config) = 0;
- virtual int removeInjectStreamUrl(const char* url) = 0;
-
- virtual bool registerEventHandler(IRtcEngineEventHandler *eventHandler) = 0;
- virtual bool unregisterEventHandler(IRtcEngineEventHandler *eventHandler) = 0;
-};
-
-
-class IRtcEngineParameter
-{
-public:
- /**
- * release the resource
- */
- virtual void release() = 0;
-
- /**
- * set bool value of the json
- * @param [in] key
- * the key name
- * @param [in] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int setBool(const char* key, bool value) = 0;
-
- /**
- * set int value of the json
- * @param [in] key
- * the key name
- * @param [in] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int setInt(const char* key, int value) = 0;
-
- /**
- * set unsigned int value of the json
- * @param [in] key
- * the key name
- * @param [in] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int setUInt(const char* key, unsigned int value) = 0;
-
- /**
- * set double value of the json
- * @param [in] key
- * the key name
- * @param [in] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int setNumber(const char* key, double value) = 0;
-
- /**
- * set string value of the json
- * @param [in] key
- * the key name
- * @param [in] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int setString(const char* key, const char* value) = 0;
-
- /**
- * set object value of the json
- * @param [in] key
- * the key name
- * @param [in] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int setObject(const char* key, const char* value) = 0;
-
- /**
- * get bool value of the json
- * @param [in] key
- * the key name
- * @param [in, out] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int getBool(const char* key, bool& value) = 0;
-
- /**
- * get int value of the json
- * @param [in] key
- * the key name
- * @param [in, out] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int getInt(const char* key, int& value) = 0;
-
- /**
- * get unsigned int value of the json
- * @param [in] key
- * the key name
- * @param [in, out] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int getUInt(const char* key, unsigned int& value) = 0;
-
- /**
- * get double value of the json
- * @param [in] key
- * the key name
- * @param [in, out] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int getNumber(const char* key, double& value) = 0;
-
- /**
- * get string value of the json
- * @param [in] key
- * the key name
- * @param [in, out] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int getString(const char* key, agora::util::AString& value) = 0;
-
- /**
- * get a child object value of the json
- * @param [in] key
- * the key name
- * @param [in, out] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int getObject(const char* key, agora::util::AString& value) = 0;
-
- /**
- * get array value of the json
- * @param [in] key
- * the key name
- * @param [in, out] value
- * the value
- * @return return 0 if success or an error code
- */
- virtual int getArray(const char* key, agora::util::AString& value) = 0;
-
- /**
- * set parameters of the sdk or engine
- * @param [in] parameters
- * the parameters
- * @return return 0 if success or an error code
- */
- virtual int setParameters(const char* parameters) = 0;
-
- /**
- * set profile to control the RTC engine
- * @param [in] profile
- * the profile
- * @param [in] merge
- * if merge with the original value
- * @return return 0 if success or an error code
- */
- virtual int setProfile(const char* profile, bool merge) = 0;
-
- virtual int convertPath(const char* filePath, agora::util::AString& value) = 0;
-};
-
-class AAudioDeviceManager : public agora::util::AutoPtr
-{
-public:
- AAudioDeviceManager(IRtcEngine* engine)
- {
- queryInterface(engine, AGORA_IID_AUDIO_DEVICE_MANAGER);
- }
-};
-
-class AVideoDeviceManager : public agora::util::AutoPtr
-{
-public:
- AVideoDeviceManager(IRtcEngine* engine)
- {
- queryInterface(engine, AGORA_IID_VIDEO_DEVICE_MANAGER);
- }
-};
-
-class AParameter : public agora::util::AutoPtr
-{
-public:
- AParameter(IRtcEngine& engine) { initialize(&engine); }
- AParameter(IRtcEngine* engine) { initialize(engine); }
- AParameter(IRtcEngineParameter* p) :agora::util::AutoPtr(p) {}
-private:
- bool initialize(IRtcEngine* engine)
- {
- IRtcEngineParameter* p = NULL;
- if (engine && !engine->queryInterface(AGORA_IID_RTC_ENGINE_PARAMETER, (void**)&p))
- reset(p);
- return p != NULL;
- }
-};
-
-class RtcEngineParameters
-{
-public:
- RtcEngineParameters(IRtcEngine& engine)
- :m_parameter(&engine){}
- RtcEngineParameters(IRtcEngine* engine)
- :m_parameter(engine){}
-
- /**
- * mute/unmute the local stream capturing
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int muteLocalAudioStream(bool mute) {
- return setParameters("{\"rtc.audio.mute_me\":%s,\"che.audio.mute_me\":%s}", mute ? "true" : "false", mute ? "true" : "false");
- }
- // mute/unmute all peers. unmute will clear all muted peers specified mutePeer() interface
- /**
- * mute/unmute all the remote audio stream receiving
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int muteAllRemoteAudioStreams(bool mute) {
- return m_parameter ? m_parameter->setBool("rtc.audio.mute_peers", mute) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * set default mute/unmute all the remote audio stream receiving
- * default value is false
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int setDefaultMuteAllRemoteAudioStreams(bool mute) {
- return m_parameter ? m_parameter->setBool("rtc.audio.set_default_mute_peers", mute) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * mute/unmute one remote audio stream receiving
- * @param [in] uid
- * the uid of the remote user you want to mute/unmute
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int muteRemoteAudioStream(uid_t uid, bool mute) {
- return setObject("rtc.audio.mute_peer", "{\"uid\":%u,\"mute\":%s}", uid, mute?"true":"false");
- }
-
- /**
- * mute/unmute local video stream sending
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int muteLocalVideoStream(bool mute) {
- return setParameters("{\"rtc.video.mute_me\":%s,\"che.video.local.send\":%s}", mute ? "true" : "false", mute ? "false" : "true");
- }
-
- int enableLocalVideo(bool enabled) {
- return setParameters("{\"rtc.video.capture\":%s,\"che.video.local.capture\":%s,\"che.video.local.render\":%s,\"che.video.local.send\":%s}", enabled ? "true" : "false", enabled ? "true" : "false", enabled ? "true" : "false", enabled ? "true" : "false");
- }
- /**
- * mute/unmute all the remote video stream receiving
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int muteAllRemoteVideoStreams(bool mute) {
- return m_parameter ? m_parameter->setBool("rtc.video.mute_peers", mute) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * set default mute/unmute all the remote video stream receiving
- * default value is false
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int setDefaultMuteAllRemoteVideoStreams(bool mute) {
- return m_parameter ? m_parameter->setBool("rtc.video.set_default_mute_peers", mute) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * mute/unmute one remote video stream receiving
- * @param [in] uid
- * the uid of the remote user you want to mute/unmute
- * @param [in] mute
- * true: mute
- * false: unmute
- * @return return 0 if success or an error code
- */
- int muteRemoteVideoStream(uid_t uid, bool mute) {
- return setObject("rtc.video.mute_peer", "{\"uid\":%u,\"mute\":%s}", uid, mute ? "true" : "false");
- }
-
- int setRemoteVideoStreamType(uid_t uid, REMOTE_VIDEO_STREAM_TYPE streamType) {
- return setParameters("{\"rtc.video.set_remote_video_stream\":{\"uid\":%u,\"stream\":%d}, \"che.video.setstream\":{\"uid\":%u,\"stream\":%d}}", uid, streamType, uid, streamType);
-// return setObject("rtc.video.set_remote_video_stream", "{\"uid\":%u,\"stream\":%d}", uid, streamType);
- }
-
- int setRemoteDefaultVideoStreamType(REMOTE_VIDEO_STREAM_TYPE streamType) {
- return m_parameter ? m_parameter->setInt("rtc.video.set_remote_default_video_stream_type", streamType) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * set play sound volume
- * @param [in] volume
- * the volume 0~255
- * @return return 0 if success or an error code
- */
- int setPlaybackDeviceVolume(int volume) {// [0,255]
- return m_parameter ? m_parameter->setInt("che.audio.output.volume", volume) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * enable or disable the audio volume indication
- * @param [in] interval
- * the period of the call back cycle, in ms
- * interval <= 0: disable
- * interval > 0: enable
- * @param [in] smooth
- * the smooth parameter
- * @return return 0 if success or an error code
- */
- int enableAudioVolumeIndication(int interval, int smooth) { // in ms: <= 0: disable, > 0: enable, interval in ms
- if (interval < 0)
- interval = 0;
- return setObject("che.audio.volume_indication", "{\"interval\":%d,\"smooth\":%d}", interval, smooth);
- }
-
- /**
- * start recording the audio stream
- * @param [in] filePath
- * the .wav file path you want to saved
- * @return return 0 if success or an error code
- */
- int startAudioRecording(const char* filePath, AUDIO_RECORDING_QUALITY_TYPE quality) {
- if (!m_parameter) return -ERR_NOT_INITIALIZED;
-#if defined(_WIN32)
- util::AString path;
- if (!m_parameter->convertPath(filePath, path))
- filePath = path->c_str();
- else
- return -ERR_INVALID_ARGUMENT;
-#endif
- return setObject("che.audio.start_recording", "{\"filePath\":\"%s\",\"quality\":%d}", filePath, quality);
- }
-
- /**
- * stop recording the audio stream
- * @return return 0 if success or an error code
- */
- int stopAudioRecording() {
- return m_parameter ? m_parameter->setBool("che.audio.stop_recording", true) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * mix microphone and local audio file into the audio stream
- * @param [in] filePath
- * specify the path and file name of the audio file to be played
- * @param [in] loopback
- * specify if local and remote participant can hear the audio file.
- * false (default): both local and remote party can hear the the audio file
- * true: only the local party can hear the audio file
- * @param [in] replace
- * false (default): mix the local microphone captured voice with the audio file
- * true: replace the microphone captured voice with the audio file
- * @param [in] cycle
- * specify the number of cycles to play
- * -1, infinite loop playback
- * @return return 0 if success or an error code
- */
- int startAudioMixing(const char* filePath, bool loopback, bool replace, int cycle) {
- if (!m_parameter) return -ERR_NOT_INITIALIZED;
-#if defined(_WIN32)
- util::AString path;
- if (!m_parameter->convertPath(filePath, path))
- filePath = path->c_str();
- else
- return -ERR_INVALID_ARGUMENT;
-#endif
- return setObject("che.audio.start_file_as_playout", "{\"filePath\":\"%s\",\"loopback\":%s,\"replace\":%s,\"cycle\":%d}",
- filePath,
- loopback?"true":"false",
- replace?"true":"false",
- cycle);
- }
- /**
- * stop mixing the local audio stream
- * @return return 0 if success or an error code
- */
- int stopAudioMixing() {
- return m_parameter ? m_parameter->setBool("che.audio.stop_file_as_playout", true) : -ERR_NOT_INITIALIZED;
- }
-
- int pauseAudioMixing() {
- return m_parameter ? m_parameter->setBool("che.audio.pause_file_as_playout", true) : -ERR_NOT_INITIALIZED;
- }
-
- int resumeAudioMixing() {
- return m_parameter ? m_parameter->setBool("che.audio.pause_file_as_playout", false) : -ERR_NOT_INITIALIZED;
- }
-
- int adjustAudioMixingVolume(int volume) {
- return m_parameter ? m_parameter->setInt("che.audio.set_file_as_playout_volume", volume) : -ERR_NOT_INITIALIZED;
- }
- int getAudioMixingDuration() {
- int duration = 0;
- int r = m_parameter ? m_parameter->getInt("che.audio.get_mixing_file_length_ms", duration) : -ERR_NOT_INITIALIZED;
- if (r == 0)
- r = duration;
- return r;
- }
- int getAudioMixingCurrentPosition() {
- if (!m_parameter) return -ERR_NOT_INITIALIZED;
- int pos = 0;
- int r = m_parameter->getInt("che.audio.get_mixing_file_played_ms", pos);
- if (r == 0)
- r = pos;
- return r;
- }
- int setAudioMixingPosition(int pos /*in ms*/) {
- return m_parameter ? m_parameter->setInt("che.audio.mixing.file.position", pos) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * Get audio effect volume.
- * @return return audio effect volume on success, or one value less than 0 otherwise.
- */
- int getEffectsVolume() {
- if (!m_parameter) return -ERR_NOT_INITIALIZED;
- int volume = 0;
- int r = m_parameter->getInt("che.audio.game_get_effects_volume", volume);
- if (r == 0)
- r = volume;
- return r;
- }
-
- /**
- * Set audio effect volume.
- * param [in] volume
- The volume to be set.
- * @return return 0 on success or error number otherwise.
- */
- int setEffectsVolume(int volume) {
- return m_parameter ? m_parameter->setInt("che.audio.game_set_effects_volume", volume) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * Set audio effect volume for effect with id : soundId
- * @param [in] soundId
- The soundId of the effect to be set.
- * @param [in] volume
- The volume value to be set
- * @return return 0 on success, and error number otherwise.
- */
- int setVolumeOfEffect(int soundId, int volume) {
- return setObject(
- "che.audio.game_adjust_effect_volume",
- "{\"soundId\":%d,\"gain\":%d}",
- soundId, volume);
- }
-
- /**
- * To play effect
- * @param [in] soundId
- * effect id
- * @param [in] filePath
- * effect file path
- * @param [in] loopCount
- * if loopCount
- * @param [in] sendToFar
- * if send the effect to remote
- * @param [in] pitch
- * sound pitch
- * @param [in] pan
- * sound pan
- * @param [in] gain
- * sound gain
- * @param [in] publish
- * true indicates that when this sound effect is played locally,
- * it is also published to Agora Could, so it can be heard by remote audience.
- *
- * false indicates that when any sound effect is only heard locally without published to Agora Cloud.
- * @return return 0 on success, error code otherwise.
- *
- */
- int playEffect(int soundId, const char* filePath, int loopCount, double pitch, double pan, int gain, bool publish = false) {
-#if defined(_WIN32)
- util::AString path;
- if (!m_parameter->convertPath(filePath, path))
- filePath = path->c_str();
- else if (!filePath)
- filePath = "";
-#endif
- return setObject(
- "che.audio.game_play_effect",
- "{\"soundId\":%d,\"filePath\":\"%s\",\"loopCount\":%d, \"pitch\":%lf,\"pan\":%lf,\"gain\":%d, \"send2far\":%d}",
- soundId, filePath, loopCount, pitch, pan, gain, publish);
- }
-
- /**
- * To stop effect
- * @param [in] soundId
- * The effect's soundId
- * @return return 0 on success, error code otherwise
- */
- int stopEffect(int soundId) {
- return m_parameter ? m_parameter->setInt(
- "che.audio.game_stop_effect", soundId) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * To stop all effects
- * @return return 0 on success, error code otherwise
- */
- int stopAllEffects() {
- return m_parameter ? m_parameter->setBool(
- "che.audio.game_stop_all_effects", true) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * To preload effect
- * @param [in] sound Id
- * effect sound id
- * @param [in] filepath
- * effect file path
- * @return return 0 on success or error code otherwise
- */
- int preloadEffect(int soundId, char* filePath) {
- return setObject(
- "che.audio.game_preload_effect",
- "{\"soundId\":%d,\"filePath\":\"%s\"}",
- soundId, filePath);
- }
-
- /**
- * To unload effect
- * @param [in] soundId
- * effect id
- * @return return 0 on success, error code otherwise
- */
- int unloadEffect(int soundId) {
- return m_parameter ? m_parameter->setInt(
- "che.audio.game_unload_effect", soundId) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * To pause effect
- * @param [in] soundId
- * effect id
- * @return return 0 on success, error code otherwise.
- */
- int pauseEffect(int soundId) {
- return m_parameter ? m_parameter->setInt(
- "che.audio.game_pause_effect", soundId) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * To pause all effects
- * @return return 0 on success, error code otherwise.
- */
- int pauseAllEffects() {
- return m_parameter ? m_parameter->setBool(
- "che.audio.game_pause_all_effects", true) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * To resume effect
- * @param [in] soundId
- * effect id
- * @return return 0 on success, error code otherwise
- */
- int resumeEffect(int soundId) {
- return m_parameter ? m_parameter->setInt(
- "che.audio.game_resume_effect", soundId) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * To resume all effects
- * @return return 0 on success, error code otherwise.
- */
- int resumeAllEffects() {
- return m_parameter ? m_parameter->setBool(
- "che.audio.game_resume_all_effects", true) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * Change the pitch of local speaker's voice
- * @param [in] pitch
- * frequency, in the range of [0.5..2.0], default value is 1.0
- *
- * @return return 0 if success or an error code
- */
- int setLocalVoicePitch(double pitch) {
- return m_parameter ? m_parameter->setInt(
- "che.audio.morph.pitch_shift",
- static_cast(pitch * 100)) : -ERR_NOT_INITIALIZED;
- }
- int setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY bandFrequency, int bandGain) {
- return setObject(
- "che.audio.morph.equalization",
- "{\"index\":%d,\"gain\":%d}",
- static_cast(bandFrequency), bandGain);
- }
- int setLocalVoiceReverb(AUDIO_REVERB_TYPE reverbKey, int value) {
- return setObject(
- "che.audio.morph.reverb",
- "{\"key\":%d,\"value\":%d}",
- static_cast(reverbKey), value);
- }
- /**
- * Set the audio ears back's volume and effect
- * @param [in] volume
- * set volume of audio ears back, in the range of [0..100], default value is 100
- *
- * @return return 0 if success or an error code
- */
- int setInEarMonitoringVolume(int volume) {
- return m_parameter ? m_parameter->setInt("che.audio.headset.monitoring.parameter", volume) : -ERR_NOT_INITIALIZED;
- }
- /**
- * set audio profile and scenario
- * including sample rate, bit rate, mono/stereo, speech/music codec
- *
- * @param [in] profile
- * enumeration definition about the audio's samplerate, bitrate, mono/stereo, speech/music codec
- * @param [in] scenario
- * enumeration definition about the audio scenario
- *
- * @return 0 when executed successfully. return negative value if failed.
- */
- int setAudioProfile(AUDIO_PROFILE_TYPE profile, AUDIO_SCENARIO_TYPE scenario) {
- return setObject(
- "che.audio.profile",
- "{\"config\":%d,\"scenario\":%d}",
- static_cast(profile), static_cast(scenario));
- }
-
- /**
- * disable audio function in channel, which will be recovered when leave channel.
- * @return return 0 if success or an error code
- */
- int pauseAudio() {
- return m_parameter ? m_parameter->setBool("che.pause.audio", true) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * resume audio function in channel.
- * @return return 0 if success or an error code
- */
- int resumeAudio() {
- return m_parameter ? m_parameter->setBool("che.pause.audio", false) : -ERR_NOT_INITIALIZED;
- }
-
- int setExternalAudioSource(bool enabled, int sampleRate, int channels) {
- if (enabled)
- return setParameters("{\"che.audio.external_capture\":true,\"che.audio.external_capture.push\":true,\"che.audio.set_capture_raw_audio_format\":{\"sampleRate\":%d,\"channelCnt\":%d,\"mode\":%d}}", sampleRate, channels, RAW_AUDIO_FRAME_OP_MODE_TYPE::RAW_AUDIO_FRAME_OP_MODE_READ_WRITE);
- else
- return setParameters("{\"che.audio.external_capture\":false,\"che.audio.external_capture.push\":false}");
- }
-
- /**
- * set path to save the log file
- * @param [in] filePath
- * the .log file path you want to saved
- * @return return 0 if success or an error code
- */
- int setLogFile(const char* filePath) {
- if (!m_parameter) return -ERR_NOT_INITIALIZED;
-#if defined(_WIN32)
- util::AString path;
- if (!m_parameter->convertPath(filePath, path))
- filePath = path->c_str();
- else if (!filePath)
- filePath = "";
-#endif
- return m_parameter->setString("rtc.log_file", filePath);
- }
-
- /**
- * set the log information filter level
- * @param [in] filter
- * the filter level
- * @return return 0 if success or an error code
- */
- int setLogFilter(unsigned int filter) {
- return m_parameter ? m_parameter->setUInt("rtc.log_filter", filter&LOG_FILTER_MASK) : -ERR_NOT_INITIALIZED;
- }
-
- /**
- * set local video render mode
- * @param [in] renderMode
- * the render mode
- * @return return 0 if success or an error code
- */
- int setLocalRenderMode(RENDER_MODE_TYPE renderMode) {
- return setRemoteRenderMode(0, renderMode);
- }
-
- /**
- * set remote video render mode
- * @param [in] renderMode
- * the render mode
- * @return return 0 if success or an error code
- */
- int setRemoteRenderMode(uid_t uid, RENDER_MODE_TYPE renderMode) {
- return setObject("che.video.render_mode", "{\"uid\":%u,\"mode\":%d}", uid, renderMode);
- }
-
- int setLocalVideoMirrorMode(VIDEO_MIRROR_MODE_TYPE mirrorMode) {
- if (!m_parameter) return -ERR_NOT_INITIALIZED;
- const char *value;
- switch (mirrorMode) {
- case VIDEO_MIRROR_MODE_AUTO:
- value = "default";
- break;
- case VIDEO_MIRROR_MODE_ENABLED:
- value = "forceMirror";
- break;
- case VIDEO_MIRROR_MODE_DISABLED:
- value = "disableMirror";
- break;
- default:
- return -ERR_INVALID_ARGUMENT;
- }
- return m_parameter->setString("che.video.localViewMirrorSetting", value);
- }
- int startRecordingService(const char* recordingKey) {
- return m_parameter ? m_parameter->setString("rtc.api.start_recording_service", recordingKey) : -ERR_NOT_INITIALIZED;
- }
-
- int stopRecordingService(const char* recordingKey) {
- return m_parameter ? m_parameter->setString("rtc.api.stop_recording_service", recordingKey) : -ERR_NOT_INITIALIZED;
- }
-
- int refreshRecordingServiceStatus() {
- return m_parameter ? m_parameter->setBool("rtc.api.query_recording_service_status", true) : -ERR_NOT_INITIALIZED;
- }
-
- int enableDualStreamMode(bool enabled) {
- return setParameters("{\"rtc.dual_stream_mode\":%s,\"che.video.enableLowBitRateStream\":%d}", enabled ? "true" : "false", enabled ? 1 : 0);
- }
-
- int setRecordingAudioFrameParameters(int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall) {
- return setObject("che.audio.set_capture_raw_audio_format", "{\"sampleRate\":%d,\"channelCnt\":%d,\"mode\":%d,\"samplesPerCall\":%d}", sampleRate, channel, mode, samplesPerCall);
- }
- int setPlaybackAudioFrameParameters(int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall) {
- return setObject("che.audio.set_render_raw_audio_format", "{\"sampleRate\":%d,\"channelCnt\":%d,\"mode\":%d,\"samplesPerCall\":%d}", sampleRate, channel, mode, samplesPerCall);
- }
- int setMixedAudioFrameParameters(int sampleRate, int samplesPerCall) {
- return setObject("che.audio.set_mixed_raw_audio_format", "{\"sampleRate\":%d,\"samplesPerCall\":%d}", sampleRate, samplesPerCall);
- }
-
- int adjustRecordingSignalVolume(int volume) {//[0, 400]: e.g. 50~0.5x 100~1x 400~4x
- if (volume < 0)
- volume = 0;
- else if (volume > 400)
- volume = 400;
- return m_parameter ? m_parameter->setInt("che.audio.record.signal.volume", volume) : -ERR_NOT_INITIALIZED;
- }
- int adjustPlaybackSignalVolume(int volume) {//[0, 400]
- if (volume < 0)
- volume = 0;
- else if (volume > 400)
- volume = 400;
- return m_parameter ? m_parameter->setInt("che.audio.playout.signal.volume", volume) : -ERR_NOT_INITIALIZED;
- }
- /**
- * @Deprecated. Agora does not recommend using this method.
- * If you want to set the audio profile, see Set the Audio Profile (setAudioProfile).
- */
- int setHighQualityAudioParameters(bool fullband, bool stereo, bool fullBitrate) {
- return setObject("che.audio.codec.hq", "{\"fullband\":%s,\"stereo\":%s,\"fullBitrate\":%s}", fullband ? "true" : "false", stereo ? "true" : "false", fullBitrate ? "true" : "false");
- }
- int enableWebSdkInteroperability(bool enabled) {//enable interoperability with zero-plugin web sdk
- return setParameters("{\"rtc.video.web_h264_interop_enable\":%s,\"che.video.web_h264_interop_enable\":%s}", enabled ? "true" : "false", enabled ? "true" : "false");
- }
- //only for live broadcasting
- int setVideoQualityParameters(bool preferFrameRateOverImageQuality) {
- return setParameters("{\"rtc.video.prefer_frame_rate\":%s,\"che.video.prefer_frame_rate\":%s}", preferFrameRateOverImageQuality ? "true" : "false", preferFrameRateOverImageQuality ? "true" : "false");
- }
-
- int enableLoopbackRecording(bool enabled) {
- return setParameters("{\"che.audio.loopback.recording\":%s}", enabled ? "true" : "false");
- }
-
-protected:
- AParameter& parameter() {
- return m_parameter;
- }
- int setParameters(const char* format, ...) {
- char buf[512];
- va_list args;
- va_start(args, format);
- vsnprintf(buf, sizeof(buf)-1, format, args);
- va_end(args);
- return m_parameter ? m_parameter->setParameters(buf) : -ERR_NOT_INITIALIZED;
- }
- int setObject(const char* key, const char* format, ...) {
- char buf[512];
- va_list args;
- va_start(args, format);
- vsnprintf(buf, sizeof(buf)-1, format, args);
- va_end(args);
- return m_parameter ? m_parameter->setObject(key, buf) : -ERR_NOT_INITIALIZED;
- }
- int enableLocalVideoCapture(bool enabled) {
- return m_parameter ? m_parameter->setBool("che.video.local.capture", enabled) : -ERR_NOT_INITIALIZED;
- }
- int enableLocalVideoRender(bool enabled) {
- return m_parameter ? m_parameter->setBool("che.video.local.render", enabled) : -ERR_NOT_INITIALIZED;
- }
- int enableLocalVideoSend(bool enabled) {
- return muteLocalVideoStream(!enabled);
- }
- int stopAllRemoteVideo() {
- return m_parameter ? m_parameter->setBool("che.video.peer.stop_render", true) : -ERR_NOT_INITIALIZED;
- }
-private:
- AParameter m_parameter;
-};
-
-} //namespace rtc
-} // namespace agora
-
-
-/**
-* to get the version number of the SDK
-* @param [in, out] build
-* the build number of Agora SDK
-* @return returns the string of the version of the SDK
-*/
-#define getAgoraRtcEngineVersion getAgoraSdkVersion
-
-/**
-* create the RTC engine object and return the pointer
-* @return returns the pointer of the RTC engine object
-*/
-AGORA_API agora::rtc::IRtcEngine* AGORA_CALL createAgoraRtcEngine();
-
-/**
-* create the RTC engine object and return the pointer
-* @param [in] err
-* the error code
-* @return returns the description of the error code
-*/
-#define getAgoraRtcEngineErrorDescription getAgoraSdkErrorDescription
-#define setAgoraRtcEngineExternalSymbolLoader setAgoraSdkExternalSymbolLoader
-
-#endif
diff --git a/dependencies2013/win32/include/agora/IAgoraRtcEngine2.h b/dependencies2013/win32/include/agora/IAgoraRtcEngine2.h
deleted file mode 100644
index c6c80203..00000000
--- a/dependencies2013/win32/include/agora/IAgoraRtcEngine2.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// Agora Media SDK
-//
-// Created by Sting Feng in 2015-05.
-// Copyright (c) 2015 Agora IO. All rights reserved.
-//
-#pragma once
-#include "IAgoraRtcEngine.h"
-
-namespace agora {
-namespace rtc {
-
-class IRtcEngine2 : public IRtcEngine
-{
-public:
- /**
- * Specify video stream parameters based on video profile
- * @param [in] width
- * width of video resolution in pixel
- * @param [in] height
- * height of video resolution in pixel
- * @param [in] frameRate
- * frame rate in fps
- * @param [in] bitrate
- * bit rate in kbps
- * @return return 0 if success or an error code
- */
- virtual int setVideoProfileEx(int width, int height, int frameRate, int bitrate) = 0;
-};
-
-}}
diff --git a/dependencies2013/win32/include/agora/IAgoraService.h b/dependencies2013/win32/include/agora/IAgoraService.h
deleted file mode 100644
index e459f715..00000000
--- a/dependencies2013/win32/include/agora/IAgoraService.h
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// Agora SDK
-//
-// Created by Sting Feng in 2017-11.
-// Copyright (c) 2017 Agora.io. All rights reserved.
-//
-
-#ifndef AGORA_SERVICE_H
-#define AGORA_SERVICE_H
-#include "AgoraBase.h"
-
-namespace agora {
- namespace rtc {
- class IRtcEngine;
- }
- namespace signaling {
- class ISignalingEngine;
- }
-namespace base {
-
-struct AgoraServiceContext
-{
-};
-
-
-class IAgoraService
-{
-public:
- virtual void release() = 0;
-
- /**
- * initialize the engine
- * @param [in] context
- * the RTC engine context
- * @return return 0 if success or an error code
- */
- virtual int initialize(const AgoraServiceContext& context) = 0;
-
- /**
- * get the version information of the SDK
- * @param [in, out] build
- * the build number
- * @return return the version number string in char format
- */
- virtual const char* getVersion(int* build) = 0;
-
- virtual rtc::IRtcEngine* createRtcEngine() = 0;
- virtual signaling::ISignalingEngine* createSignalingEngine() = 0;
-};
-
-} //namespace base
-} // namespace agora
-
-/**
-* to get the version number of the SDK
-* @param [in, out] build
-* the build number of Agora SDK
-* @return returns the string of the version of the SDK
-*/
-AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
-
-/**
-* create the RTC engine object and return the pointer
-* @param [in] err
-* the error code
-* @return returns the description of the error code
-*/
-AGORA_API const char* AGORA_CALL getAgoraSdkErrorDescription(int err);
-
-/**
-* create the Agora Service object and return the pointer
-* @return returns pointer of the Agora Service object
-*/
-AGORA_API agora::base::IAgoraService* AGORA_CALL createAgoraService();
-
-AGORA_API int AGORA_CALL setAgoraSdkExternalSymbolLoader(void* (*func)(const char* symname));
-
-#endif
diff --git a/dependencies2013/win32/include/curl/curl.h b/dependencies2013/win32/include/curl/curl.h
deleted file mode 100644
index 1df50841..00000000
--- a/dependencies2013/win32/include/curl/curl.h
+++ /dev/null
@@ -1,2429 +0,0 @@
-#ifndef __CURL_CURL_H
-#define __CURL_CURL_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/*
- * If you have libcurl problems, all docs and details are found here:
- * https://curl.haxx.se/libcurl/
- *
- * curl-library mailing list subscription and unsubscription web interface:
- * https://cool.haxx.se/mailman/listinfo/curl-library/
- */
-
-#include "curlver.h" /* libcurl version defines */
-#include "curlbuild.h" /* libcurl build definitions */
-#include "curlrules.h" /* libcurl rules enforcement */
-
-/*
- * Define WIN32 when build target is Win32 API
- */
-
-#if (defined(_WIN32) || defined(__WIN32__)) && \
- !defined(WIN32) && !defined(__SYMBIAN32__)
-#define WIN32
-#endif
-
-#include
-#include
-
-#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
-/* Needed for __FreeBSD_version symbol definition */
-#include
-#endif
-
-/* The include stuff here below is mainly for time_t! */
-#include
-#include
-
-#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
-#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
- defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
-/* The check above prevents the winsock2 inclusion if winsock.h already was
- included, since they can't co-exist without problems */
-#include
-#include
-#endif
-#endif
-
-/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
- libc5-based Linux systems. Only include it on systems that are known to
- require it! */
-#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
- defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
- defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
- (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
-#include
-#endif
-
-#if !defined(WIN32) && !defined(_WIN32_WCE)
-#include
-#endif
-
-#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
-#include
-#endif
-
-#ifdef __BEOS__
-#include
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void CURL;
-
-/*
- * libcurl external API function linkage decorations.
- */
-
-#ifdef CURL_STATICLIB
-# define CURL_EXTERN
-#elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)
-# if defined(BUILDING_LIBCURL)
-# define CURL_EXTERN __declspec(dllexport)
-# else
-# define CURL_EXTERN __declspec(dllimport)
-# endif
-#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)
-# define CURL_EXTERN CURL_EXTERN_SYMBOL
-#else
-# define CURL_EXTERN
-#endif
-
-#ifndef curl_socket_typedef
-/* socket typedef */
-#if defined(WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H)
-typedef SOCKET curl_socket_t;
-#define CURL_SOCKET_BAD INVALID_SOCKET
-#else
-typedef int curl_socket_t;
-#define CURL_SOCKET_BAD -1
-#endif
-#define curl_socket_typedef
-#endif /* curl_socket_typedef */
-
-struct curl_httppost {
- struct curl_httppost *next; /* next entry in the list */
- char *name; /* pointer to allocated name */
- long namelength; /* length of name length */
- char *contents; /* pointer to allocated data contents */
- long contentslength; /* length of contents field, see also
- CURL_HTTPPOST_LARGE */
- char *buffer; /* pointer to allocated buffer contents */
- long bufferlength; /* length of buffer field */
- char *contenttype; /* Content-Type */
- struct curl_slist* contentheader; /* list of extra headers for this form */
- struct curl_httppost *more; /* if one field name has more than one
- file, this link should link to following
- files */
- long flags; /* as defined below */
-
-/* specified content is a file name */
-#define CURL_HTTPPOST_FILENAME (1<<0)
-/* specified content is a file name */
-#define CURL_HTTPPOST_READFILE (1<<1)
-/* name is only stored pointer do not free in formfree */
-#define CURL_HTTPPOST_PTRNAME (1<<2)
-/* contents is only stored pointer do not free in formfree */
-#define CURL_HTTPPOST_PTRCONTENTS (1<<3)
-/* upload file from buffer */
-#define CURL_HTTPPOST_BUFFER (1<<4)
-/* upload file from pointer contents */
-#define CURL_HTTPPOST_PTRBUFFER (1<<5)
-/* upload file contents by using the regular read callback to get the data and
- pass the given pointer as custom pointer */
-#define CURL_HTTPPOST_CALLBACK (1<<6)
-/* use size in 'contentlen', added in 7.46.0 */
-#define CURL_HTTPPOST_LARGE (1<<7)
-
- char *showfilename; /* The file name to show. If not set, the
- actual file name will be used (if this
- is a file part) */
- void *userp; /* custom pointer used for
- HTTPPOST_CALLBACK posts */
- curl_off_t contentlen; /* alternative length of contents
- field. Used if CURL_HTTPPOST_LARGE is
- set. Added in 7.46.0 */
-};
-
-/* This is the CURLOPT_PROGRESSFUNCTION callback proto. It is now considered
- deprecated but was the only choice up until 7.31.0 */
-typedef int (*curl_progress_callback)(void *clientp,
- double dltotal,
- double dlnow,
- double ultotal,
- double ulnow);
-
-/* This is the CURLOPT_XFERINFOFUNCTION callback proto. It was introduced in
- 7.32.0, it avoids floating point and provides more detailed information. */
-typedef int (*curl_xferinfo_callback)(void *clientp,
- curl_off_t dltotal,
- curl_off_t dlnow,
- curl_off_t ultotal,
- curl_off_t ulnow);
-
-#ifndef CURL_MAX_WRITE_SIZE
- /* Tests have proven that 20K is a very bad buffer size for uploads on
- Windows, while 16K for some odd reason performed a lot better.
- We do the ifndef check to allow this value to easier be changed at build
- time for those who feel adventurous. The practical minimum is about
- 400 bytes since libcurl uses a buffer of this size as a scratch area
- (unrelated to network send operations). */
-#define CURL_MAX_WRITE_SIZE 16384
-#endif
-
-#ifndef CURL_MAX_HTTP_HEADER
-/* The only reason to have a max limit for this is to avoid the risk of a bad
- server feeding libcurl with a never-ending header that will cause reallocs
- infinitely */
-#define CURL_MAX_HTTP_HEADER (100*1024)
-#endif
-
-/* This is a magic return code for the write callback that, when returned,
- will signal libcurl to pause receiving on the current transfer. */
-#define CURL_WRITEFUNC_PAUSE 0x10000001
-
-typedef size_t (*curl_write_callback)(char *buffer,
- size_t size,
- size_t nitems,
- void *outstream);
-
-
-
-/* enumeration of file types */
-typedef enum {
- CURLFILETYPE_FILE = 0,
- CURLFILETYPE_DIRECTORY,
- CURLFILETYPE_SYMLINK,
- CURLFILETYPE_DEVICE_BLOCK,
- CURLFILETYPE_DEVICE_CHAR,
- CURLFILETYPE_NAMEDPIPE,
- CURLFILETYPE_SOCKET,
- CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */
-
- CURLFILETYPE_UNKNOWN /* should never occur */
-} curlfiletype;
-
-#define CURLFINFOFLAG_KNOWN_FILENAME (1<<0)
-#define CURLFINFOFLAG_KNOWN_FILETYPE (1<<1)
-#define CURLFINFOFLAG_KNOWN_TIME (1<<2)
-#define CURLFINFOFLAG_KNOWN_PERM (1<<3)
-#define CURLFINFOFLAG_KNOWN_UID (1<<4)
-#define CURLFINFOFLAG_KNOWN_GID (1<<5)
-#define CURLFINFOFLAG_KNOWN_SIZE (1<<6)
-#define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7)
-
-/* Content of this structure depends on information which is known and is
- achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man
- page for callbacks returning this structure -- some fields are mandatory,
- some others are optional. The FLAG field has special meaning. */
-struct curl_fileinfo {
- char *filename;
- curlfiletype filetype;
- time_t time;
- unsigned int perm;
- int uid;
- int gid;
- curl_off_t size;
- long int hardlinks;
-
- struct {
- /* If some of these fields is not NULL, it is a pointer to b_data. */
- char *time;
- char *perm;
- char *user;
- char *group;
- char *target; /* pointer to the target filename of a symlink */
- } strings;
-
- unsigned int flags;
-
- /* used internally */
- char * b_data;
- size_t b_size;
- size_t b_used;
-};
-
-/* return codes for CURLOPT_CHUNK_BGN_FUNCTION */
-#define CURL_CHUNK_BGN_FUNC_OK 0
-#define CURL_CHUNK_BGN_FUNC_FAIL 1 /* tell the lib to end the task */
-#define CURL_CHUNK_BGN_FUNC_SKIP 2 /* skip this chunk over */
-
-/* if splitting of data transfer is enabled, this callback is called before
- download of an individual chunk started. Note that parameter "remains" works
- only for FTP wildcard downloading (for now), otherwise is not used */
-typedef long (*curl_chunk_bgn_callback)(const void *transfer_info,
- void *ptr,
- int remains);
-
-/* return codes for CURLOPT_CHUNK_END_FUNCTION */
-#define CURL_CHUNK_END_FUNC_OK 0
-#define CURL_CHUNK_END_FUNC_FAIL 1 /* tell the lib to end the task */
-
-/* If splitting of data transfer is enabled this callback is called after
- download of an individual chunk finished.
- Note! After this callback was set then it have to be called FOR ALL chunks.
- Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC.
- This is the reason why we don't need "transfer_info" parameter in this
- callback and we are not interested in "remains" parameter too. */
-typedef long (*curl_chunk_end_callback)(void *ptr);
-
-/* return codes for FNMATCHFUNCTION */
-#define CURL_FNMATCHFUNC_MATCH 0 /* string corresponds to the pattern */
-#define CURL_FNMATCHFUNC_NOMATCH 1 /* pattern doesn't match the string */
-#define CURL_FNMATCHFUNC_FAIL 2 /* an error occurred */
-
-/* callback type for wildcard downloading pattern matching. If the
- string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */
-typedef int (*curl_fnmatch_callback)(void *ptr,
- const char *pattern,
- const char *string);
-
-/* These are the return codes for the seek callbacks */
-#define CURL_SEEKFUNC_OK 0
-#define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */
-#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
- libcurl might try other means instead */
-typedef int (*curl_seek_callback)(void *instream,
- curl_off_t offset,
- int origin); /* 'whence' */
-
-/* This is a return code for the read callback that, when returned, will
- signal libcurl to immediately abort the current transfer. */
-#define CURL_READFUNC_ABORT 0x10000000
-/* This is a return code for the read callback that, when returned, will
- signal libcurl to pause sending data on the current transfer. */
-#define CURL_READFUNC_PAUSE 0x10000001
-
-typedef size_t (*curl_read_callback)(char *buffer,
- size_t size,
- size_t nitems,
- void *instream);
-
-typedef enum {
- CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */
- CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
- CURLSOCKTYPE_LAST /* never use */
-} curlsocktype;
-
-/* The return code from the sockopt_callback can signal information back
- to libcurl: */
-#define CURL_SOCKOPT_OK 0
-#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
- CURLE_ABORTED_BY_CALLBACK */
-#define CURL_SOCKOPT_ALREADY_CONNECTED 2
-
-typedef int (*curl_sockopt_callback)(void *clientp,
- curl_socket_t curlfd,
- curlsocktype purpose);
-
-struct curl_sockaddr {
- int family;
- int socktype;
- int protocol;
- unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it
- turned really ugly and painful on the systems that
- lack this type */
- struct sockaddr addr;
-};
-
-typedef curl_socket_t
-(*curl_opensocket_callback)(void *clientp,
- curlsocktype purpose,
- struct curl_sockaddr *address);
-
-typedef int
-(*curl_closesocket_callback)(void *clientp, curl_socket_t item);
-
-typedef enum {
- CURLIOE_OK, /* I/O operation successful */
- CURLIOE_UNKNOWNCMD, /* command was unknown to callback */
- CURLIOE_FAILRESTART, /* failed to restart the read */
- CURLIOE_LAST /* never use */
-} curlioerr;
-
-typedef enum {
- CURLIOCMD_NOP, /* no operation */
- CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
- CURLIOCMD_LAST /* never use */
-} curliocmd;
-
-typedef curlioerr (*curl_ioctl_callback)(CURL *handle,
- int cmd,
- void *clientp);
-
-/*
- * The following typedef's are signatures of malloc, free, realloc, strdup and
- * calloc respectively. Function pointers of these types can be passed to the
- * curl_global_init_mem() function to set user defined memory management
- * callback routines.
- */
-typedef void *(*curl_malloc_callback)(size_t size);
-typedef void (*curl_free_callback)(void *ptr);
-typedef void *(*curl_realloc_callback)(void *ptr, size_t size);
-typedef char *(*curl_strdup_callback)(const char *str);
-typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);
-
-#define CURL_DID_MEMORY_FUNC_TYPEDEFS
-
-/* the kind of data that is passed to information_callback*/
-typedef enum {
- CURLINFO_TEXT = 0,
- CURLINFO_HEADER_IN, /* 1 */
- CURLINFO_HEADER_OUT, /* 2 */
- CURLINFO_DATA_IN, /* 3 */
- CURLINFO_DATA_OUT, /* 4 */
- CURLINFO_SSL_DATA_IN, /* 5 */
- CURLINFO_SSL_DATA_OUT, /* 6 */
- CURLINFO_END
-} curl_infotype;
-
-typedef int (*curl_debug_callback)
- (CURL *handle, /* the handle/transfer this concerns */
- curl_infotype type, /* what kind of data */
- char *data, /* points to the data */
- size_t size, /* size of the data pointed to */
- void *userptr); /* whatever the user please */
-
-/* All possible error codes from all sorts of curl functions. Future versions
- may return other values, stay prepared.
-
- Always add new return codes last. Never *EVER* remove any. The return
- codes must remain the same!
- */
-
-typedef enum {
- CURLE_OK = 0,
- CURLE_UNSUPPORTED_PROTOCOL, /* 1 */
- CURLE_FAILED_INIT, /* 2 */
- CURLE_URL_MALFORMAT, /* 3 */
- CURLE_NOT_BUILT_IN, /* 4 - [was obsoleted in August 2007 for
- 7.17.0, reused in April 2011 for 7.21.5] */
- CURLE_COULDNT_RESOLVE_PROXY, /* 5 */
- CURLE_COULDNT_RESOLVE_HOST, /* 6 */
- CURLE_COULDNT_CONNECT, /* 7 */
- CURLE_FTP_WEIRD_SERVER_REPLY, /* 8 */
- CURLE_REMOTE_ACCESS_DENIED, /* 9 a service was denied by the server
- due to lack of access - when login fails
- this is not returned. */
- CURLE_FTP_ACCEPT_FAILED, /* 10 - [was obsoleted in April 2006 for
- 7.15.4, reused in Dec 2011 for 7.24.0]*/
- CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */
- CURLE_FTP_ACCEPT_TIMEOUT, /* 12 - timeout occurred accepting server
- [was obsoleted in August 2007 for 7.17.0,
- reused in Dec 2011 for 7.24.0]*/
- CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */
- CURLE_FTP_WEIRD_227_FORMAT, /* 14 */
- CURLE_FTP_CANT_GET_HOST, /* 15 */
- CURLE_HTTP2, /* 16 - A problem in the http2 framing layer.
- [was obsoleted in August 2007 for 7.17.0,
- reused in July 2014 for 7.38.0] */
- CURLE_FTP_COULDNT_SET_TYPE, /* 17 */
- CURLE_PARTIAL_FILE, /* 18 */
- CURLE_FTP_COULDNT_RETR_FILE, /* 19 */
- CURLE_OBSOLETE20, /* 20 - NOT USED */
- CURLE_QUOTE_ERROR, /* 21 - quote command failure */
- CURLE_HTTP_RETURNED_ERROR, /* 22 */
- CURLE_WRITE_ERROR, /* 23 */
- CURLE_OBSOLETE24, /* 24 - NOT USED */
- CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */
- CURLE_READ_ERROR, /* 26 - couldn't open/read from file */
- CURLE_OUT_OF_MEMORY, /* 27 */
- /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error
- instead of a memory allocation error if CURL_DOES_CONVERSIONS
- is defined
- */
- CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */
- CURLE_OBSOLETE29, /* 29 - NOT USED */
- CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */
- CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */
- CURLE_OBSOLETE32, /* 32 - NOT USED */
- CURLE_RANGE_ERROR, /* 33 - RANGE "command" didn't work */
- CURLE_HTTP_POST_ERROR, /* 34 */
- CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */
- CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */
- CURLE_FILE_COULDNT_READ_FILE, /* 37 */
- CURLE_LDAP_CANNOT_BIND, /* 38 */
- CURLE_LDAP_SEARCH_FAILED, /* 39 */
- CURLE_OBSOLETE40, /* 40 - NOT USED */
- CURLE_FUNCTION_NOT_FOUND, /* 41 */
- CURLE_ABORTED_BY_CALLBACK, /* 42 */
- CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */
- CURLE_OBSOLETE44, /* 44 - NOT USED */
- CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */
- CURLE_OBSOLETE46, /* 46 - NOT USED */
- CURLE_TOO_MANY_REDIRECTS, /* 47 - catch endless re-direct loops */
- CURLE_UNKNOWN_OPTION, /* 48 - User specified an unknown option */
- CURLE_TELNET_OPTION_SYNTAX, /* 49 - Malformed telnet option */
- CURLE_OBSOLETE50, /* 50 - NOT USED */
- CURLE_PEER_FAILED_VERIFICATION, /* 51 - peer's certificate or fingerprint
- wasn't verified fine */
- CURLE_GOT_NOTHING, /* 52 - when this is a specific error */
- CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */
- CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as
- default */
- CURLE_SEND_ERROR, /* 55 - failed sending network data */
- CURLE_RECV_ERROR, /* 56 - failure in receiving network data */
- CURLE_OBSOLETE57, /* 57 - NOT IN USE */
- CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */
- CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */
- CURLE_SSL_CACERT, /* 60 - problem with the CA cert (path?) */
- CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized/bad encoding */
- CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */
- CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */
- CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */
- CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind
- that failed */
- CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */
- CURLE_LOGIN_DENIED, /* 67 - user, password or similar was not
- accepted and we failed to login */
- CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */
- CURLE_TFTP_PERM, /* 69 - permission problem on server */
- CURLE_REMOTE_DISK_FULL, /* 70 - out of disk space on server */
- CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */
- CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */
- CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */
- CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */
- CURLE_CONV_FAILED, /* 75 - conversion failed */
- CURLE_CONV_REQD, /* 76 - caller must register conversion
- callbacks using curl_easy_setopt options
- CURLOPT_CONV_FROM_NETWORK_FUNCTION,
- CURLOPT_CONV_TO_NETWORK_FUNCTION, and
- CURLOPT_CONV_FROM_UTF8_FUNCTION */
- CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing
- or wrong format */
- CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */
- CURLE_SSH, /* 79 - error from the SSH layer, somewhat
- generic so the error message will be of
- interest when this has happened */
-
- CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL
- connection */
- CURLE_AGAIN, /* 81 - socket is not ready for send/recv,
- wait till it's ready and try again (Added
- in 7.18.2) */
- CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or
- wrong format (Added in 7.19.0) */
- CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in
- 7.19.0) */
- CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */
- CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */
- CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Ids */
- CURLE_FTP_BAD_FILE_LIST, /* 87 - unable to parse FTP file list */
- CURLE_CHUNK_FAILED, /* 88 - chunk callback reported error */
- CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the
- session will be queued */
- CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not
- match */
- CURLE_SSL_INVALIDCERTSTATUS, /* 91 - invalid certificate status */
- CURLE_HTTP2_STREAM, /* 92 - stream error in HTTP/2 framing layer
- */
- CURL_LAST /* never use! */
-} CURLcode;
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
- the obsolete stuff removed! */
-
-/* Previously obsolete error code re-used in 7.38.0 */
-#define CURLE_OBSOLETE16 CURLE_HTTP2
-
-/* Previously obsolete error codes re-used in 7.24.0 */
-#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
-#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
-
-/* compatibility with older names */
-#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING
-
-/* The following were added in 7.21.5, April 2011 */
-#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION
-
-/* The following were added in 7.17.1 */
-/* These are scheduled to disappear by 2009 */
-#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION
-
-/* The following were added in 7.17.0 */
-/* These are scheduled to disappear by 2009 */
-#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */
-#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46
-#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44
-#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10
-#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16
-#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32
-#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29
-#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12
-#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20
-#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40
-#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24
-#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57
-#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN
-
-#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED
-#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE
-#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR
-#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL
-#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS
-#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR
-#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED
-
-/* The following were added earlier */
-
-#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT
-
-#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
-#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
-#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
-
-#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
-#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
-
-/* This was the error code 50 in 7.7.3 and a few earlier versions, this
- is no longer used by libcurl but is instead #defined here only to not
- make programs break */
-#define CURLE_ALREADY_COMPLETE 99999
-
-/* Provide defines for really old option names */
-#define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */
-#define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */
-#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA
-
-/* Since long deprecated options with no code in the lib that does anything
- with them. */
-#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40
-#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72
-
-#endif /*!CURL_NO_OLDIES*/
-
-/* This prototype applies to all conversion callbacks */
-typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);
-
-typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */
- void *ssl_ctx, /* actually an
- OpenSSL SSL_CTX */
- void *userptr);
-
-typedef enum {
- CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use
- CONNECT HTTP/1.1 */
- CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT
- HTTP/1.0 */
- CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already
- in 7.10 */
- CURLPROXY_SOCKS5 = 5, /* added in 7.10 */
- CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */
- CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the
- host name rather than the IP address. added
- in 7.18.0 */
-} curl_proxytype; /* this enum was added in 7.10 */
-
-/*
- * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options:
- *
- * CURLAUTH_NONE - No HTTP authentication
- * CURLAUTH_BASIC - HTTP Basic authentication (default)
- * CURLAUTH_DIGEST - HTTP Digest authentication
- * CURLAUTH_NEGOTIATE - HTTP Negotiate (SPNEGO) authentication
- * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated)
- * CURLAUTH_NTLM - HTTP NTLM authentication
- * CURLAUTH_DIGEST_IE - HTTP Digest authentication with IE flavour
- * CURLAUTH_NTLM_WB - HTTP NTLM authentication delegated to winbind helper
- * CURLAUTH_ONLY - Use together with a single other type to force no
- * authentication or just that single type
- * CURLAUTH_ANY - All fine types set
- * CURLAUTH_ANYSAFE - All fine types except Basic
- */
-
-#define CURLAUTH_NONE ((unsigned long)0)
-#define CURLAUTH_BASIC (((unsigned long)1)<<0)
-#define CURLAUTH_DIGEST (((unsigned long)1)<<1)
-#define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2)
-/* Deprecated since the advent of CURLAUTH_NEGOTIATE */
-#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE
-#define CURLAUTH_NTLM (((unsigned long)1)<<3)
-#define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4)
-#define CURLAUTH_NTLM_WB (((unsigned long)1)<<5)
-#define CURLAUTH_ONLY (((unsigned long)1)<<31)
-#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE)
-#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))
-
-#define CURLSSH_AUTH_ANY ~0 /* all types supported by the server */
-#define CURLSSH_AUTH_NONE 0 /* none allowed, silly but complete */
-#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */
-#define CURLSSH_AUTH_PASSWORD (1<<1) /* password */
-#define CURLSSH_AUTH_HOST (1<<2) /* host key files */
-#define CURLSSH_AUTH_KEYBOARD (1<<3) /* keyboard interactive */
-#define CURLSSH_AUTH_AGENT (1<<4) /* agent (ssh-agent, pageant...) */
-#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY
-
-#define CURLGSSAPI_DELEGATION_NONE 0 /* no delegation (default) */
-#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */
-#define CURLGSSAPI_DELEGATION_FLAG (1<<1) /* delegate always */
-
-#define CURL_ERROR_SIZE 256
-
-enum curl_khtype {
- CURLKHTYPE_UNKNOWN,
- CURLKHTYPE_RSA1,
- CURLKHTYPE_RSA,
- CURLKHTYPE_DSS
-};
-
-struct curl_khkey {
- const char *key; /* points to a zero-terminated string encoded with base64
- if len is zero, otherwise to the "raw" data */
- size_t len;
- enum curl_khtype keytype;
-};
-
-/* this is the set of return values expected from the curl_sshkeycallback
- callback */
-enum curl_khstat {
- CURLKHSTAT_FINE_ADD_TO_FILE,
- CURLKHSTAT_FINE,
- CURLKHSTAT_REJECT, /* reject the connection, return an error */
- CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now so
- this causes a CURLE_DEFER error but otherwise the
- connection will be left intact etc */
- CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */
-};
-
-/* this is the set of status codes pass in to the callback */
-enum curl_khmatch {
- CURLKHMATCH_OK, /* match */
- CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
- CURLKHMATCH_MISSING, /* no matching host/key found */
- CURLKHMATCH_LAST /* not for use, only a marker for last-in-list */
-};
-
-typedef int
- (*curl_sshkeycallback) (CURL *easy, /* easy handle */
- const struct curl_khkey *knownkey, /* known */
- const struct curl_khkey *foundkey, /* found */
- enum curl_khmatch, /* libcurl's view on the keys */
- void *clientp); /* custom pointer passed from app */
-
-/* parameter for the CURLOPT_USE_SSL option */
-typedef enum {
- CURLUSESSL_NONE, /* do not attempt to use SSL */
- CURLUSESSL_TRY, /* try using SSL, proceed anyway otherwise */
- CURLUSESSL_CONTROL, /* SSL for the control connection or fail */
- CURLUSESSL_ALL, /* SSL for all communication or fail */
- CURLUSESSL_LAST /* not an option, never use */
-} curl_usessl;
-
-/* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */
-
-/* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the
- name of improving interoperability with older servers. Some SSL libraries
- have introduced work-arounds for this flaw but those work-arounds sometimes
- make the SSL communication fail. To regain functionality with those broken
- servers, a user can this way allow the vulnerability back. */
-#define CURLSSLOPT_ALLOW_BEAST (1<<0)
-
-/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those
- SSL backends where such behavior is present. */
-#define CURLSSLOPT_NO_REVOKE (1<<1)
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
- the obsolete stuff removed! */
-
-/* Backwards compatibility with older names */
-/* These are scheduled to disappear by 2009 */
-
-#define CURLFTPSSL_NONE CURLUSESSL_NONE
-#define CURLFTPSSL_TRY CURLUSESSL_TRY
-#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL
-#define CURLFTPSSL_ALL CURLUSESSL_ALL
-#define CURLFTPSSL_LAST CURLUSESSL_LAST
-#define curl_ftpssl curl_usessl
-#endif /*!CURL_NO_OLDIES*/
-
-/* parameter for the CURLOPT_FTP_SSL_CCC option */
-typedef enum {
- CURLFTPSSL_CCC_NONE, /* do not send CCC */
- CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */
- CURLFTPSSL_CCC_ACTIVE, /* Initiate the shutdown */
- CURLFTPSSL_CCC_LAST /* not an option, never use */
-} curl_ftpccc;
-
-/* parameter for the CURLOPT_FTPSSLAUTH option */
-typedef enum {
- CURLFTPAUTH_DEFAULT, /* let libcurl decide */
- CURLFTPAUTH_SSL, /* use "AUTH SSL" */
- CURLFTPAUTH_TLS, /* use "AUTH TLS" */
- CURLFTPAUTH_LAST /* not an option, never use */
-} curl_ftpauth;
-
-/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */
-typedef enum {
- CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */
- CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD
- again if MKD succeeded, for SFTP this does
- similar magic */
- CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD
- again even if MKD failed! */
- CURLFTP_CREATE_DIR_LAST /* not an option, never use */
-} curl_ftpcreatedir;
-
-/* parameter for the CURLOPT_FTP_FILEMETHOD option */
-typedef enum {
- CURLFTPMETHOD_DEFAULT, /* let libcurl pick */
- CURLFTPMETHOD_MULTICWD, /* single CWD operation for each path part */
- CURLFTPMETHOD_NOCWD, /* no CWD at all */
- CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */
- CURLFTPMETHOD_LAST /* not an option, never use */
-} curl_ftpmethod;
-
-/* bitmask defines for CURLOPT_HEADEROPT */
-#define CURLHEADER_UNIFIED 0
-#define CURLHEADER_SEPARATE (1<<0)
-
-/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
-#define CURLPROTO_HTTP (1<<0)
-#define CURLPROTO_HTTPS (1<<1)
-#define CURLPROTO_FTP (1<<2)
-#define CURLPROTO_FTPS (1<<3)
-#define CURLPROTO_SCP (1<<4)
-#define CURLPROTO_SFTP (1<<5)
-#define CURLPROTO_TELNET (1<<6)
-#define CURLPROTO_LDAP (1<<7)
-#define CURLPROTO_LDAPS (1<<8)
-#define CURLPROTO_DICT (1<<9)
-#define CURLPROTO_FILE (1<<10)
-#define CURLPROTO_TFTP (1<<11)
-#define CURLPROTO_IMAP (1<<12)
-#define CURLPROTO_IMAPS (1<<13)
-#define CURLPROTO_POP3 (1<<14)
-#define CURLPROTO_POP3S (1<<15)
-#define CURLPROTO_SMTP (1<<16)
-#define CURLPROTO_SMTPS (1<<17)
-#define CURLPROTO_RTSP (1<<18)
-#define CURLPROTO_RTMP (1<<19)
-#define CURLPROTO_RTMPT (1<<20)
-#define CURLPROTO_RTMPE (1<<21)
-#define CURLPROTO_RTMPTE (1<<22)
-#define CURLPROTO_RTMPS (1<<23)
-#define CURLPROTO_RTMPTS (1<<24)
-#define CURLPROTO_GOPHER (1<<25)
-#define CURLPROTO_SMB (1<<26)
-#define CURLPROTO_SMBS (1<<27)
-#define CURLPROTO_ALL (~0) /* enable everything */
-
-/* long may be 32 or 64 bits, but we should never depend on anything else
- but 32 */
-#define CURLOPTTYPE_LONG 0
-#define CURLOPTTYPE_OBJECTPOINT 10000
-#define CURLOPTTYPE_STRINGPOINT 10000
-#define CURLOPTTYPE_FUNCTIONPOINT 20000
-#define CURLOPTTYPE_OFF_T 30000
-
-/* *STRINGPOINT is an alias for OBJECTPOINT to allow tools to extract the
- string options from the header file */
-
-/* name is uppercase CURLOPT_,
- type is one of the defined CURLOPTTYPE_
- number is unique identifier */
-#ifdef CINIT
-#undef CINIT
-#endif
-
-#ifdef CURL_ISOCPP
-#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define LONG CURLOPTTYPE_LONG
-#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT
-#define STRINGPOINT CURLOPTTYPE_OBJECTPOINT
-#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
-#define OFF_T CURLOPTTYPE_OFF_T
-#define CINIT(name,type,number) CURLOPT_/**/name = type + number
-#endif
-
-/*
- * This macro-mania below setups the CURLOPT_[what] enum, to be used with
- * curl_easy_setopt(). The first argument in the CINIT() macro is the [what]
- * word.
- */
-
-typedef enum {
- /* This is the FILE * or void * the regular output should be written to. */
- CINIT(WRITEDATA, OBJECTPOINT, 1),
-
- /* The full URL to get/put */
- CINIT(URL, STRINGPOINT, 2),
-
- /* Port number to connect to, if other than default. */
- CINIT(PORT, LONG, 3),
-
- /* Name of proxy to use. */
- CINIT(PROXY, STRINGPOINT, 4),
-
- /* "user:password;options" to use when fetching. */
- CINIT(USERPWD, STRINGPOINT, 5),
-
- /* "user:password" to use with proxy. */
- CINIT(PROXYUSERPWD, STRINGPOINT, 6),
-
- /* Range to get, specified as an ASCII string. */
- CINIT(RANGE, STRINGPOINT, 7),
-
- /* not used */
-
- /* Specified file stream to upload from (use as input): */
- CINIT(READDATA, OBJECTPOINT, 9),
-
- /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
- * bytes big. If this is not used, error messages go to stderr instead: */
- CINIT(ERRORBUFFER, OBJECTPOINT, 10),
-
- /* Function that will be called to store the output (instead of fwrite). The
- * parameters will use fwrite() syntax, make sure to follow them. */
- CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11),
-
- /* Function that will be called to read the input (instead of fread). The
- * parameters will use fread() syntax, make sure to follow them. */
- CINIT(READFUNCTION, FUNCTIONPOINT, 12),
-
- /* Time-out the read operation after this amount of seconds */
- CINIT(TIMEOUT, LONG, 13),
-
- /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about
- * how large the file being sent really is. That allows better error
- * checking and better verifies that the upload was successful. -1 means
- * unknown size.
- *
- * For large file support, there is also a _LARGE version of the key
- * which takes an off_t type, allowing platforms with larger off_t
- * sizes to handle larger files. See below for INFILESIZE_LARGE.
- */
- CINIT(INFILESIZE, LONG, 14),
-
- /* POST static input fields. */
- CINIT(POSTFIELDS, OBJECTPOINT, 15),
-
- /* Set the referrer page (needed by some CGIs) */
- CINIT(REFERER, STRINGPOINT, 16),
-
- /* Set the FTP PORT string (interface name, named or numerical IP address)
- Use i.e '-' to use default address. */
- CINIT(FTPPORT, STRINGPOINT, 17),
-
- /* Set the User-Agent string (examined by some CGIs) */
- CINIT(USERAGENT, STRINGPOINT, 18),
-
- /* If the download receives less than "low speed limit" bytes/second
- * during "low speed time" seconds, the operations is aborted.
- * You could i.e if you have a pretty high speed connection, abort if
- * it is less than 2000 bytes/sec during 20 seconds.
- */
-
- /* Set the "low speed limit" */
- CINIT(LOW_SPEED_LIMIT, LONG, 19),
-
- /* Set the "low speed time" */
- CINIT(LOW_SPEED_TIME, LONG, 20),
-
- /* Set the continuation offset.
- *
- * Note there is also a _LARGE version of this key which uses
- * off_t types, allowing for large file offsets on platforms which
- * use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE.
- */
- CINIT(RESUME_FROM, LONG, 21),
-
- /* Set cookie in request: */
- CINIT(COOKIE, STRINGPOINT, 22),
-
- /* This points to a linked list of headers, struct curl_slist kind. This
- list is also used for RTSP (in spite of its name) */
- CINIT(HTTPHEADER, OBJECTPOINT, 23),
-
- /* This points to a linked list of post entries, struct curl_httppost */
- CINIT(HTTPPOST, OBJECTPOINT, 24),
-
- /* name of the file keeping your private SSL-certificate */
- CINIT(SSLCERT, STRINGPOINT, 25),
-
- /* password for the SSL or SSH private key */
- CINIT(KEYPASSWD, STRINGPOINT, 26),
-
- /* send TYPE parameter? */
- CINIT(CRLF, LONG, 27),
-
- /* send linked-list of QUOTE commands */
- CINIT(QUOTE, OBJECTPOINT, 28),
-
- /* send FILE * or void * to store headers to, if you use a callback it
- is simply passed to the callback unmodified */
- CINIT(HEADERDATA, OBJECTPOINT, 29),
-
- /* point to a file to read the initial cookies from, also enables
- "cookie awareness" */
- CINIT(COOKIEFILE, STRINGPOINT, 31),
-
- /* What version to specifically try to use.
- See CURL_SSLVERSION defines below. */
- CINIT(SSLVERSION, LONG, 32),
-
- /* What kind of HTTP time condition to use, see defines */
- CINIT(TIMECONDITION, LONG, 33),
-
- /* Time to use with the above condition. Specified in number of seconds
- since 1 Jan 1970 */
- CINIT(TIMEVALUE, LONG, 34),
-
- /* 35 = OBSOLETE */
-
- /* Custom request, for customizing the get command like
- HTTP: DELETE, TRACE and others
- FTP: to use a different list command
- */
- CINIT(CUSTOMREQUEST, STRINGPOINT, 36),
-
- /* FILE handle to use instead of stderr */
- CINIT(STDERR, OBJECTPOINT, 37),
-
- /* 38 is not used */
-
- /* send linked-list of post-transfer QUOTE commands */
- CINIT(POSTQUOTE, OBJECTPOINT, 39),
-
- CINIT(OBSOLETE40, OBJECTPOINT, 40), /* OBSOLETE, do not use! */
-
- CINIT(VERBOSE, LONG, 41), /* talk a lot */
- CINIT(HEADER, LONG, 42), /* throw the header out too */
- CINIT(NOPROGRESS, LONG, 43), /* shut off the progress meter */
- CINIT(NOBODY, LONG, 44), /* use HEAD to get http document */
- CINIT(FAILONERROR, LONG, 45), /* no output on http error codes >= 400 */
- CINIT(UPLOAD, LONG, 46), /* this is an upload */
- CINIT(POST, LONG, 47), /* HTTP POST method */
- CINIT(DIRLISTONLY, LONG, 48), /* bare names when listing directories */
-
- CINIT(APPEND, LONG, 50), /* Append instead of overwrite on upload! */
-
- /* Specify whether to read the user+password from the .netrc or the URL.
- * This must be one of the CURL_NETRC_* enums below. */
- CINIT(NETRC, LONG, 51),
-
- CINIT(FOLLOWLOCATION, LONG, 52), /* use Location: Luke! */
-
- CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */
- CINIT(PUT, LONG, 54), /* HTTP PUT */
-
- /* 55 = OBSOLETE */
-
- /* DEPRECATED
- * Function that will be called instead of the internal progress display
- * function. This function should be defined as the curl_progress_callback
- * prototype defines. */
- CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56),
-
- /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION
- callbacks */
- CINIT(PROGRESSDATA, OBJECTPOINT, 57),
-#define CURLOPT_XFERINFODATA CURLOPT_PROGRESSDATA
-
- /* We want the referrer field set automatically when following locations */
- CINIT(AUTOREFERER, LONG, 58),
-
- /* Port of the proxy, can be set in the proxy string as well with:
- "[host]:[port]" */
- CINIT(PROXYPORT, LONG, 59),
-
- /* size of the POST input data, if strlen() is not good to use */
- CINIT(POSTFIELDSIZE, LONG, 60),
-
- /* tunnel non-http operations through a HTTP proxy */
- CINIT(HTTPPROXYTUNNEL, LONG, 61),
-
- /* Set the interface string to use as outgoing network interface */
- CINIT(INTERFACE, STRINGPOINT, 62),
-
- /* Set the krb4/5 security level, this also enables krb4/5 awareness. This
- * is a string, 'clear', 'safe', 'confidential' or 'private'. If the string
- * is set but doesn't match one of these, 'private' will be used. */
- CINIT(KRBLEVEL, STRINGPOINT, 63),
-
- /* Set if we should verify the peer in ssl handshake, set 1 to verify. */
- CINIT(SSL_VERIFYPEER, LONG, 64),
-
- /* The CApath or CAfile used to validate the peer certificate
- this option is used only if SSL_VERIFYPEER is true */
- CINIT(CAINFO, STRINGPOINT, 65),
-
- /* 66 = OBSOLETE */
- /* 67 = OBSOLETE */
-
- /* Maximum number of http redirects to follow */
- CINIT(MAXREDIRS, LONG, 68),
-
- /* Pass a long set to 1 to get the date of the requested document (if
- possible)! Pass a zero to shut it off. */
- CINIT(FILETIME, LONG, 69),
-
- /* This points to a linked list of telnet options */
- CINIT(TELNETOPTIONS, OBJECTPOINT, 70),
-
- /* Max amount of cached alive connections */
- CINIT(MAXCONNECTS, LONG, 71),
-
- CINIT(OBSOLETE72, LONG, 72), /* OBSOLETE, do not use! */
-
- /* 73 = OBSOLETE */
-
- /* Set to explicitly use a new connection for the upcoming transfer.
- Do not use this unless you're absolutely sure of this, as it makes the
- operation slower and is less friendly for the network. */
- CINIT(FRESH_CONNECT, LONG, 74),
-
- /* Set to explicitly forbid the upcoming transfer's connection to be re-used
- when done. Do not use this unless you're absolutely sure of this, as it
- makes the operation slower and is less friendly for the network. */
- CINIT(FORBID_REUSE, LONG, 75),
-
- /* Set to a file name that contains random data for libcurl to use to
- seed the random engine when doing SSL connects. */
- CINIT(RANDOM_FILE, STRINGPOINT, 76),
-
- /* Set to the Entropy Gathering Daemon socket pathname */
- CINIT(EGDSOCKET, STRINGPOINT, 77),
-
- /* Time-out connect operations after this amount of seconds, if connects are
- OK within this time, then fine... This only aborts the connect phase. */
- CINIT(CONNECTTIMEOUT, LONG, 78),
-
- /* Function that will be called to store headers (instead of fwrite). The
- * parameters will use fwrite() syntax, make sure to follow them. */
- CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79),
-
- /* Set this to force the HTTP request to get back to GET. Only really usable
- if POST, PUT or a custom request have been used first.
- */
- CINIT(HTTPGET, LONG, 80),
-
- /* Set if we should verify the Common name from the peer certificate in ssl
- * handshake, set 1 to check existence, 2 to ensure that it matches the
- * provided hostname. */
- CINIT(SSL_VERIFYHOST, LONG, 81),
-
- /* Specify which file name to write all known cookies in after completed
- operation. Set file name to "-" (dash) to make it go to stdout. */
- CINIT(COOKIEJAR, STRINGPOINT, 82),
-
- /* Specify which SSL ciphers to use */
- CINIT(SSL_CIPHER_LIST, STRINGPOINT, 83),
-
- /* Specify which HTTP version to use! This must be set to one of the
- CURL_HTTP_VERSION* enums set below. */
- CINIT(HTTP_VERSION, LONG, 84),
-
- /* Specifically switch on or off the FTP engine's use of the EPSV command. By
- default, that one will always be attempted before the more traditional
- PASV command. */
- CINIT(FTP_USE_EPSV, LONG, 85),
-
- /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */
- CINIT(SSLCERTTYPE, STRINGPOINT, 86),
-
- /* name of the file keeping your private SSL-key */
- CINIT(SSLKEY, STRINGPOINT, 87),
-
- /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */
- CINIT(SSLKEYTYPE, STRINGPOINT, 88),
-
- /* crypto engine for the SSL-sub system */
- CINIT(SSLENGINE, STRINGPOINT, 89),
-
- /* set the crypto engine for the SSL-sub system as default
- the param has no meaning...
- */
- CINIT(SSLENGINE_DEFAULT, LONG, 90),
-
- /* Non-zero value means to use the global dns cache */
- CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* DEPRECATED, do not use! */
-
- /* DNS cache timeout */
- CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
-
- /* send linked-list of pre-transfer QUOTE commands */
- CINIT(PREQUOTE, OBJECTPOINT, 93),
-
- /* set the debug function */
- CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94),
-
- /* set the data for the debug function */
- CINIT(DEBUGDATA, OBJECTPOINT, 95),
-
- /* mark this as start of a cookie session */
- CINIT(COOKIESESSION, LONG, 96),
-
- /* The CApath directory used to validate the peer certificate
- this option is used only if SSL_VERIFYPEER is true */
- CINIT(CAPATH, STRINGPOINT, 97),
-
- /* Instruct libcurl to use a smaller receive buffer */
- CINIT(BUFFERSIZE, LONG, 98),
-
- /* Instruct libcurl to not use any signal/alarm handlers, even when using
- timeouts. This option is useful for multi-threaded applications.
- See libcurl-the-guide for more background information. */
- CINIT(NOSIGNAL, LONG, 99),
-
- /* Provide a CURLShare for mutexing non-ts data */
- CINIT(SHARE, OBJECTPOINT, 100),
-
- /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default),
- CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and CURLPROXY_SOCKS5. */
- CINIT(PROXYTYPE, LONG, 101),
-
- /* Set the Accept-Encoding string. Use this to tell a server you would like
- the response to be compressed. Before 7.21.6, this was known as
- CURLOPT_ENCODING */
- CINIT(ACCEPT_ENCODING, STRINGPOINT, 102),
-
- /* Set pointer to private data */
- CINIT(PRIVATE, OBJECTPOINT, 103),
-
- /* Set aliases for HTTP 200 in the HTTP Response header */
- CINIT(HTTP200ALIASES, OBJECTPOINT, 104),
-
- /* Continue to send authentication (user+password) when following locations,
- even when hostname changed. This can potentially send off the name
- and password to whatever host the server decides. */
- CINIT(UNRESTRICTED_AUTH, LONG, 105),
-
- /* Specifically switch on or off the FTP engine's use of the EPRT command (
- it also disables the LPRT attempt). By default, those ones will always be
- attempted before the good old traditional PORT command. */
- CINIT(FTP_USE_EPRT, LONG, 106),
-
- /* Set this to a bitmask value to enable the particular authentications
- methods you like. Use this in combination with CURLOPT_USERPWD.
- Note that setting multiple bits may cause extra network round-trips. */
- CINIT(HTTPAUTH, LONG, 107),
-
- /* Set the ssl context callback function, currently only for OpenSSL ssl_ctx
- in second argument. The function must be matching the
- curl_ssl_ctx_callback proto. */
- CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108),
-
- /* Set the userdata for the ssl context callback function's third
- argument */
- CINIT(SSL_CTX_DATA, OBJECTPOINT, 109),
-
- /* FTP Option that causes missing dirs to be created on the remote server.
- In 7.19.4 we introduced the convenience enums for this option using the
- CURLFTP_CREATE_DIR prefix.
- */
- CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110),
-
- /* Set this to a bitmask value to enable the particular authentications
- methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
- Note that setting multiple bits may cause extra network round-trips. */
- CINIT(PROXYAUTH, LONG, 111),
-
- /* FTP option that changes the timeout, in seconds, associated with
- getting a response. This is different from transfer timeout time and
- essentially places a demand on the FTP server to acknowledge commands
- in a timely manner. */
- CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112),
-#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
-
- /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
- tell libcurl to resolve names to those IP versions only. This only has
- affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */
- CINIT(IPRESOLVE, LONG, 113),
-
- /* Set this option to limit the size of a file that will be downloaded from
- an HTTP or FTP server.
-
- Note there is also _LARGE version which adds large file support for
- platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. */
- CINIT(MAXFILESIZE, LONG, 114),
-
- /* See the comment for INFILESIZE above, but in short, specifies
- * the size of the file being uploaded. -1 means unknown.
- */
- CINIT(INFILESIZE_LARGE, OFF_T, 115),
-
- /* Sets the continuation offset. There is also a LONG version of this;
- * look above for RESUME_FROM.
- */
- CINIT(RESUME_FROM_LARGE, OFF_T, 116),
-
- /* Sets the maximum size of data that will be downloaded from
- * an HTTP or FTP server. See MAXFILESIZE above for the LONG version.
- */
- CINIT(MAXFILESIZE_LARGE, OFF_T, 117),
-
- /* Set this option to the file name of your .netrc file you want libcurl
- to parse (using the CURLOPT_NETRC option). If not set, libcurl will do
- a poor attempt to find the user's home directory and check for a .netrc
- file in there. */
- CINIT(NETRC_FILE, STRINGPOINT, 118),
-
- /* Enable SSL/TLS for FTP, pick one of:
- CURLUSESSL_TRY - try using SSL, proceed anyway otherwise
- CURLUSESSL_CONTROL - SSL for the control connection or fail
- CURLUSESSL_ALL - SSL for all communication or fail
- */
- CINIT(USE_SSL, LONG, 119),
-
- /* The _LARGE version of the standard POSTFIELDSIZE option */
- CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120),
-
- /* Enable/disable the TCP Nagle algorithm */
- CINIT(TCP_NODELAY, LONG, 121),
-
- /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 123 OBSOLETE. Gone in 7.16.0 */
- /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 127 OBSOLETE. Gone in 7.16.0 */
- /* 128 OBSOLETE. Gone in 7.16.0 */
-
- /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option
- can be used to change libcurl's default action which is to first try
- "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK
- response has been received.
-
- Available parameters are:
- CURLFTPAUTH_DEFAULT - let libcurl decide
- CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS
- CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL
- */
- CINIT(FTPSSLAUTH, LONG, 129),
-
- CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130),
- CINIT(IOCTLDATA, OBJECTPOINT, 131),
-
- /* 132 OBSOLETE. Gone in 7.16.0 */
- /* 133 OBSOLETE. Gone in 7.16.0 */
-
- /* zero terminated string for pass on to the FTP server when asked for
- "account" info */
- CINIT(FTP_ACCOUNT, STRINGPOINT, 134),
-
- /* feed cookie into cookie engine */
- CINIT(COOKIELIST, STRINGPOINT, 135),
-
- /* ignore Content-Length */
- CINIT(IGNORE_CONTENT_LENGTH, LONG, 136),
-
- /* Set to non-zero to skip the IP address received in a 227 PASV FTP server
- response. Typically used for FTP-SSL purposes but is not restricted to
- that. libcurl will then instead use the same IP address it used for the
- control connection. */
- CINIT(FTP_SKIP_PASV_IP, LONG, 137),
-
- /* Select "file method" to use when doing FTP, see the curl_ftpmethod
- above. */
- CINIT(FTP_FILEMETHOD, LONG, 138),
-
- /* Local port number to bind the socket to */
- CINIT(LOCALPORT, LONG, 139),
-
- /* Number of ports to try, including the first one set with LOCALPORT.
- Thus, setting it to 1 will make no additional attempts but the first.
- */
- CINIT(LOCALPORTRANGE, LONG, 140),
-
- /* no transfer, set up connection and let application use the socket by
- extracting it with CURLINFO_LASTSOCKET */
- CINIT(CONNECT_ONLY, LONG, 141),
-
- /* Function that will be called to convert from the
- network encoding (instead of using the iconv calls in libcurl) */
- CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142),
-
- /* Function that will be called to convert to the
- network encoding (instead of using the iconv calls in libcurl) */
- CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143),
-
- /* Function that will be called to convert from UTF8
- (instead of using the iconv calls in libcurl)
- Note that this is used only for SSL certificate processing */
- CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144),
-
- /* if the connection proceeds too quickly then need to slow it down */
- /* limit-rate: maximum number of bytes per second to send or receive */
- CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145),
- CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146),
-
- /* Pointer to command string to send if USER/PASS fails. */
- CINIT(FTP_ALTERNATIVE_TO_USER, STRINGPOINT, 147),
-
- /* callback function for setting socket options */
- CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148),
- CINIT(SOCKOPTDATA, OBJECTPOINT, 149),
-
- /* set to 0 to disable session ID re-use for this transfer, default is
- enabled (== 1) */
- CINIT(SSL_SESSIONID_CACHE, LONG, 150),
-
- /* allowed SSH authentication methods */
- CINIT(SSH_AUTH_TYPES, LONG, 151),
-
- /* Used by scp/sftp to do public/private key authentication */
- CINIT(SSH_PUBLIC_KEYFILE, STRINGPOINT, 152),
- CINIT(SSH_PRIVATE_KEYFILE, STRINGPOINT, 153),
-
- /* Send CCC (Clear Command Channel) after authentication */
- CINIT(FTP_SSL_CCC, LONG, 154),
-
- /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */
- CINIT(TIMEOUT_MS, LONG, 155),
- CINIT(CONNECTTIMEOUT_MS, LONG, 156),
-
- /* set to zero to disable the libcurl's decoding and thus pass the raw body
- data to the application even when it is encoded/compressed */
- CINIT(HTTP_TRANSFER_DECODING, LONG, 157),
- CINIT(HTTP_CONTENT_DECODING, LONG, 158),
-
- /* Permission used when creating new files and directories on the remote
- server for protocols that support it, SFTP/SCP/FILE */
- CINIT(NEW_FILE_PERMS, LONG, 159),
- CINIT(NEW_DIRECTORY_PERMS, LONG, 160),
-
- /* Set the behaviour of POST when redirecting. Values must be set to one
- of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */
- CINIT(POSTREDIR, LONG, 161),
-
- /* used by scp/sftp to verify the host's public key */
- CINIT(SSH_HOST_PUBLIC_KEY_MD5, STRINGPOINT, 162),
-
- /* Callback function for opening socket (instead of socket(2)). Optionally,
- callback is able change the address or refuse to connect returning
- CURL_SOCKET_BAD. The callback should have type
- curl_opensocket_callback */
- CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163),
- CINIT(OPENSOCKETDATA, OBJECTPOINT, 164),
-
- /* POST volatile input fields. */
- CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165),
-
- /* set transfer mode (;type=) when doing FTP via an HTTP proxy */
- CINIT(PROXY_TRANSFER_MODE, LONG, 166),
-
- /* Callback function for seeking in the input stream */
- CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),
- CINIT(SEEKDATA, OBJECTPOINT, 168),
-
- /* CRL file */
- CINIT(CRLFILE, STRINGPOINT, 169),
-
- /* Issuer certificate */
- CINIT(ISSUERCERT, STRINGPOINT, 170),
-
- /* (IPv6) Address scope */
- CINIT(ADDRESS_SCOPE, LONG, 171),
-
- /* Collect certificate chain info and allow it to get retrievable with
- CURLINFO_CERTINFO after the transfer is complete. */
- CINIT(CERTINFO, LONG, 172),
-
- /* "name" and "pwd" to use when fetching. */
- CINIT(USERNAME, STRINGPOINT, 173),
- CINIT(PASSWORD, STRINGPOINT, 174),
-
- /* "name" and "pwd" to use with Proxy when fetching. */
- CINIT(PROXYUSERNAME, STRINGPOINT, 175),
- CINIT(PROXYPASSWORD, STRINGPOINT, 176),
-
- /* Comma separated list of hostnames defining no-proxy zones. These should
- match both hostnames directly, and hostnames within a domain. For
- example, local.com will match local.com and www.local.com, but NOT
- notlocal.com or www.notlocal.com. For compatibility with other
- implementations of this, .local.com will be considered to be the same as
- local.com. A single * is the only valid wildcard, and effectively
- disables the use of proxy. */
- CINIT(NOPROXY, STRINGPOINT, 177),
-
- /* block size for TFTP transfers */
- CINIT(TFTP_BLKSIZE, LONG, 178),
-
- /* Socks Service */
- CINIT(SOCKS5_GSSAPI_SERVICE, STRINGPOINT, 179), /* DEPRECATED, do not use! */
-
- /* Socks Service */
- CINIT(SOCKS5_GSSAPI_NEC, LONG, 180),
-
- /* set the bitmask for the protocols that are allowed to be used for the
- transfer, which thus helps the app which takes URLs from users or other
- external inputs and want to restrict what protocol(s) to deal
- with. Defaults to CURLPROTO_ALL. */
- CINIT(PROTOCOLS, LONG, 181),
-
- /* set the bitmask for the protocols that libcurl is allowed to follow to,
- as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
- to be set in both bitmasks to be allowed to get redirected to. Defaults
- to all protocols except FILE and SCP. */
- CINIT(REDIR_PROTOCOLS, LONG, 182),
-
- /* set the SSH knownhost file name to use */
- CINIT(SSH_KNOWNHOSTS, STRINGPOINT, 183),
-
- /* set the SSH host key callback, must point to a curl_sshkeycallback
- function */
- CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184),
-
- /* set the SSH host key callback custom pointer */
- CINIT(SSH_KEYDATA, OBJECTPOINT, 185),
-
- /* set the SMTP mail originator */
- CINIT(MAIL_FROM, STRINGPOINT, 186),
-
- /* set the list of SMTP mail receiver(s) */
- CINIT(MAIL_RCPT, OBJECTPOINT, 187),
-
- /* FTP: send PRET before PASV */
- CINIT(FTP_USE_PRET, LONG, 188),
-
- /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */
- CINIT(RTSP_REQUEST, LONG, 189),
-
- /* The RTSP session identifier */
- CINIT(RTSP_SESSION_ID, STRINGPOINT, 190),
-
- /* The RTSP stream URI */
- CINIT(RTSP_STREAM_URI, STRINGPOINT, 191),
-
- /* The Transport: header to use in RTSP requests */
- CINIT(RTSP_TRANSPORT, STRINGPOINT, 192),
-
- /* Manually initialize the client RTSP CSeq for this handle */
- CINIT(RTSP_CLIENT_CSEQ, LONG, 193),
-
- /* Manually initialize the server RTSP CSeq for this handle */
- CINIT(RTSP_SERVER_CSEQ, LONG, 194),
-
- /* The stream to pass to INTERLEAVEFUNCTION. */
- CINIT(INTERLEAVEDATA, OBJECTPOINT, 195),
-
- /* Let the application define a custom write method for RTP data */
- CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196),
-
- /* Turn on wildcard matching */
- CINIT(WILDCARDMATCH, LONG, 197),
-
- /* Directory matching callback called before downloading of an
- individual file (chunk) started */
- CINIT(CHUNK_BGN_FUNCTION, FUNCTIONPOINT, 198),
-
- /* Directory matching callback called after the file (chunk)
- was downloaded, or skipped */
- CINIT(CHUNK_END_FUNCTION, FUNCTIONPOINT, 199),
-
- /* Change match (fnmatch-like) callback for wildcard matching */
- CINIT(FNMATCH_FUNCTION, FUNCTIONPOINT, 200),
-
- /* Let the application define custom chunk data pointer */
- CINIT(CHUNK_DATA, OBJECTPOINT, 201),
-
- /* FNMATCH_FUNCTION user pointer */
- CINIT(FNMATCH_DATA, OBJECTPOINT, 202),
-
- /* send linked-list of name:port:address sets */
- CINIT(RESOLVE, OBJECTPOINT, 203),
-
- /* Set a username for authenticated TLS */
- CINIT(TLSAUTH_USERNAME, STRINGPOINT, 204),
-
- /* Set a password for authenticated TLS */
- CINIT(TLSAUTH_PASSWORD, STRINGPOINT, 205),
-
- /* Set authentication type for authenticated TLS */
- CINIT(TLSAUTH_TYPE, STRINGPOINT, 206),
-
- /* Set to 1 to enable the "TE:" header in HTTP requests to ask for
- compressed transfer-encoded responses. Set to 0 to disable the use of TE:
- in outgoing requests. The current default is 0, but it might change in a
- future libcurl release.
-
- libcurl will ask for the compressed methods it knows of, and if that
- isn't any, it will not ask for transfer-encoding at all even if this
- option is set to 1.
-
- */
- CINIT(TRANSFER_ENCODING, LONG, 207),
-
- /* Callback function for closing socket (instead of close(2)). The callback
- should have type curl_closesocket_callback */
- CINIT(CLOSESOCKETFUNCTION, FUNCTIONPOINT, 208),
- CINIT(CLOSESOCKETDATA, OBJECTPOINT, 209),
-
- /* allow GSSAPI credential delegation */
- CINIT(GSSAPI_DELEGATION, LONG, 210),
-
- /* Set the name servers to use for DNS resolution */
- CINIT(DNS_SERVERS, STRINGPOINT, 211),
-
- /* Time-out accept operations (currently for FTP only) after this amount
- of miliseconds. */
- CINIT(ACCEPTTIMEOUT_MS, LONG, 212),
-
- /* Set TCP keepalive */
- CINIT(TCP_KEEPALIVE, LONG, 213),
-
- /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */
- CINIT(TCP_KEEPIDLE, LONG, 214),
- CINIT(TCP_KEEPINTVL, LONG, 215),
-
- /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */
- CINIT(SSL_OPTIONS, LONG, 216),
-
- /* Set the SMTP auth originator */
- CINIT(MAIL_AUTH, STRINGPOINT, 217),
-
- /* Enable/disable SASL initial response */
- CINIT(SASL_IR, LONG, 218),
-
- /* Function that will be called instead of the internal progress display
- * function. This function should be defined as the curl_xferinfo_callback
- * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
- CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219),
-
- /* The XOAUTH2 bearer token */
- CINIT(XOAUTH2_BEARER, STRINGPOINT, 220),
-
- /* Set the interface string to use as outgoing network
- * interface for DNS requests.
- * Only supported by the c-ares DNS backend */
- CINIT(DNS_INTERFACE, STRINGPOINT, 221),
-
- /* Set the local IPv4 address to use for outgoing DNS requests.
- * Only supported by the c-ares DNS backend */
- CINIT(DNS_LOCAL_IP4, STRINGPOINT, 222),
-
- /* Set the local IPv4 address to use for outgoing DNS requests.
- * Only supported by the c-ares DNS backend */
- CINIT(DNS_LOCAL_IP6, STRINGPOINT, 223),
-
- /* Set authentication options directly */
- CINIT(LOGIN_OPTIONS, STRINGPOINT, 224),
-
- /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */
- CINIT(SSL_ENABLE_NPN, LONG, 225),
-
- /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */
- CINIT(SSL_ENABLE_ALPN, LONG, 226),
-
- /* Time to wait for a response to a HTTP request containing an
- * Expect: 100-continue header before sending the data anyway. */
- CINIT(EXPECT_100_TIMEOUT_MS, LONG, 227),
-
- /* This points to a linked list of headers used for proxy requests only,
- struct curl_slist kind */
- CINIT(PROXYHEADER, OBJECTPOINT, 228),
-
- /* Pass in a bitmask of "header options" */
- CINIT(HEADEROPT, LONG, 229),
-
- /* The public key in DER form used to validate the peer public key
- this option is used only if SSL_VERIFYPEER is true */
- CINIT(PINNEDPUBLICKEY, STRINGPOINT, 230),
-
- /* Path to Unix domain socket */
- CINIT(UNIX_SOCKET_PATH, STRINGPOINT, 231),
-
- /* Set if we should verify the certificate status. */
- CINIT(SSL_VERIFYSTATUS, LONG, 232),
-
- /* Set if we should enable TLS false start. */
- CINIT(SSL_FALSESTART, LONG, 233),
-
- /* Do not squash dot-dot sequences */
- CINIT(PATH_AS_IS, LONG, 234),
-
- /* Proxy Service Name */
- CINIT(PROXY_SERVICE_NAME, STRINGPOINT, 235),
-
- /* Service Name */
- CINIT(SERVICE_NAME, STRINGPOINT, 236),
-
- /* Wait/don't wait for pipe/mutex to clarify */
- CINIT(PIPEWAIT, LONG, 237),
-
- /* Set the protocol used when curl is given a URL without a protocol */
- CINIT(DEFAULT_PROTOCOL, STRINGPOINT, 238),
-
- /* Set stream weight, 1 - 256 (default is 16) */
- CINIT(STREAM_WEIGHT, LONG, 239),
-
- /* Set stream dependency on another CURL handle */
- CINIT(STREAM_DEPENDS, OBJECTPOINT, 240),
-
- /* Set E-xclusive stream dependency on another CURL handle */
- CINIT(STREAM_DEPENDS_E, OBJECTPOINT, 241),
-
- /* Do not send any tftp option requests to the server */
- CINIT(TFTP_NO_OPTIONS, LONG, 242),
-
- /* Linked-list of host:port:connect-to-host:connect-to-port,
- overrides the URL's host:port (only for the network layer) */
- CINIT(CONNECT_TO, STRINGPOINT, 243),
-
- CURLOPT_LASTENTRY /* the last unused */
-} CURLoption;
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
- the obsolete stuff removed! */
-
-/* Backwards compatibility with older names */
-/* These are scheduled to disappear by 2011 */
-
-/* This was added in version 7.19.1 */
-#define CURLOPT_POST301 CURLOPT_POSTREDIR
-
-/* These are scheduled to disappear by 2009 */
-
-/* The following were added in 7.17.0 */
-#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD
-#define CURLOPT_FTPAPPEND CURLOPT_APPEND
-#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY
-#define CURLOPT_FTP_SSL CURLOPT_USE_SSL
-
-/* The following were added earlier */
-
-#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
-#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
-
-#else
-/* This is set if CURL_NO_OLDIES is defined at compile-time */
-#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
-#endif
-
-
- /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
- name resolves addresses using more than one IP protocol version, this
- option might be handy to force libcurl to use a specific IP version. */
-#define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP
- versions that your system allows */
-#define CURL_IPRESOLVE_V4 1 /* resolve to IPv4 addresses */
-#define CURL_IPRESOLVE_V6 2 /* resolve to IPv6 addresses */
-
- /* three convenient "aliases" that follow the name scheme better */
-#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
-
- /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
-enum {
- CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd
- like the library to choose the best possible
- for us! */
- CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */
- CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */
- CURL_HTTP_VERSION_2_0, /* please use HTTP 2 in the request */
- CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */
- CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, /* please use HTTP 2 without HTTP/1.1
- Upgrade */
-
- CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
-};
-
-/* Convenience definition simple because the name of the version is HTTP/2 and
- not 2.0. The 2_0 version of the enum name was set while the version was
- still planned to be 2.0 and we stick to it for compatibility. */
-#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0
-
-/*
- * Public API enums for RTSP requests
- */
-enum {
- CURL_RTSPREQ_NONE, /* first in list */
- CURL_RTSPREQ_OPTIONS,
- CURL_RTSPREQ_DESCRIBE,
- CURL_RTSPREQ_ANNOUNCE,
- CURL_RTSPREQ_SETUP,
- CURL_RTSPREQ_PLAY,
- CURL_RTSPREQ_PAUSE,
- CURL_RTSPREQ_TEARDOWN,
- CURL_RTSPREQ_GET_PARAMETER,
- CURL_RTSPREQ_SET_PARAMETER,
- CURL_RTSPREQ_RECORD,
- CURL_RTSPREQ_RECEIVE,
- CURL_RTSPREQ_LAST /* last in list */
-};
-
- /* These enums are for use with the CURLOPT_NETRC option. */
-enum CURL_NETRC_OPTION {
- CURL_NETRC_IGNORED, /* The .netrc will never be read.
- * This is the default. */
- CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred
- * to one in the .netrc. */
- CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored.
- * Unless one is set programmatically, the .netrc
- * will be queried. */
- CURL_NETRC_LAST
-};
-
-enum {
- CURL_SSLVERSION_DEFAULT,
- CURL_SSLVERSION_TLSv1, /* TLS 1.x */
- CURL_SSLVERSION_SSLv2,
- CURL_SSLVERSION_SSLv3,
- CURL_SSLVERSION_TLSv1_0,
- CURL_SSLVERSION_TLSv1_1,
- CURL_SSLVERSION_TLSv1_2,
-
- CURL_SSLVERSION_LAST /* never use, keep last */
-};
-
-enum CURL_TLSAUTH {
- CURL_TLSAUTH_NONE,
- CURL_TLSAUTH_SRP,
- CURL_TLSAUTH_LAST /* never use, keep last */
-};
-
-/* symbols to use with CURLOPT_POSTREDIR.
- CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303
- can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302
- | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */
-
-#define CURL_REDIR_GET_ALL 0
-#define CURL_REDIR_POST_301 1
-#define CURL_REDIR_POST_302 2
-#define CURL_REDIR_POST_303 4
-#define CURL_REDIR_POST_ALL \
- (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303)
-
-typedef enum {
- CURL_TIMECOND_NONE,
-
- CURL_TIMECOND_IFMODSINCE,
- CURL_TIMECOND_IFUNMODSINCE,
- CURL_TIMECOND_LASTMOD,
-
- CURL_TIMECOND_LAST
-} curl_TimeCond;
-
-
-/* curl_strequal() and curl_strnequal() are subject for removal in a future
- libcurl, see lib/README.curlx for details */
-CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);
-CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n);
-
-/* name is uppercase CURLFORM_ */
-#ifdef CFINIT
-#undef CFINIT
-#endif
-
-#ifdef CURL_ISOCPP
-#define CFINIT(name) CURLFORM_ ## name
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define CFINIT(name) CURLFORM_/**/name
-#endif
-
-typedef enum {
- CFINIT(NOTHING), /********* the first one is unused ************/
-
- /* */
- CFINIT(COPYNAME),
- CFINIT(PTRNAME),
- CFINIT(NAMELENGTH),
- CFINIT(COPYCONTENTS),
- CFINIT(PTRCONTENTS),
- CFINIT(CONTENTSLENGTH),
- CFINIT(FILECONTENT),
- CFINIT(ARRAY),
- CFINIT(OBSOLETE),
- CFINIT(FILE),
-
- CFINIT(BUFFER),
- CFINIT(BUFFERPTR),
- CFINIT(BUFFERLENGTH),
-
- CFINIT(CONTENTTYPE),
- CFINIT(CONTENTHEADER),
- CFINIT(FILENAME),
- CFINIT(END),
- CFINIT(OBSOLETE2),
-
- CFINIT(STREAM),
- CFINIT(CONTENTLEN), /* added in 7.46.0, provide a curl_off_t length */
-
- CURLFORM_LASTENTRY /* the last unused */
-} CURLformoption;
-
-#undef CFINIT /* done */
-
-/* structure to be used as parameter for CURLFORM_ARRAY */
-struct curl_forms {
- CURLformoption option;
- const char *value;
-};
-
-/* use this for multipart formpost building */
-/* Returns code for curl_formadd()
- *
- * Returns:
- * CURL_FORMADD_OK on success
- * CURL_FORMADD_MEMORY if the FormInfo allocation fails
- * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form
- * CURL_FORMADD_NULL if a null pointer was given for a char
- * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed
- * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
- * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error)
- * CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated
- * CURL_FORMADD_MEMORY if some allocation for string copying failed.
- * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array
- *
- ***************************************************************************/
-typedef enum {
- CURL_FORMADD_OK, /* first, no error */
-
- CURL_FORMADD_MEMORY,
- CURL_FORMADD_OPTION_TWICE,
- CURL_FORMADD_NULL,
- CURL_FORMADD_UNKNOWN_OPTION,
- CURL_FORMADD_INCOMPLETE,
- CURL_FORMADD_ILLEGAL_ARRAY,
- CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */
-
- CURL_FORMADD_LAST /* last */
-} CURLFORMcode;
-
-/*
- * NAME curl_formadd()
- *
- * DESCRIPTION
- *
- * Pretty advanced function for building multi-part formposts. Each invoke
- * adds one part that together construct a full post. Then use
- * CURLOPT_HTTPPOST to send it off to libcurl.
- */
-CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
- struct curl_httppost **last_post,
- ...);
-
-/*
- * callback function for curl_formget()
- * The void *arg pointer will be the one passed as second argument to
- * curl_formget().
- * The character buffer passed to it must not be freed.
- * Should return the buffer length passed to it as the argument "len" on
- * success.
- */
-typedef size_t (*curl_formget_callback)(void *arg, const char *buf,
- size_t len);
-
-/*
- * NAME curl_formget()
- *
- * DESCRIPTION
- *
- * Serialize a curl_httppost struct built with curl_formadd().
- * Accepts a void pointer as second argument which will be passed to
- * the curl_formget_callback function.
- * Returns 0 on success.
- */
-CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
- curl_formget_callback append);
-/*
- * NAME curl_formfree()
- *
- * DESCRIPTION
- *
- * Free a multipart formpost previously built with curl_formadd().
- */
-CURL_EXTERN void curl_formfree(struct curl_httppost *form);
-
-/*
- * NAME curl_getenv()
- *
- * DESCRIPTION
- *
- * Returns a malloc()'ed string that MUST be curl_free()ed after usage is
- * complete. DEPRECATED - see lib/README.curlx
- */
-CURL_EXTERN char *curl_getenv(const char *variable);
-
-/*
- * NAME curl_version()
- *
- * DESCRIPTION
- *
- * Returns a static ascii string of the libcurl version.
- */
-CURL_EXTERN char *curl_version(void);
-
-/*
- * NAME curl_easy_escape()
- *
- * DESCRIPTION
- *
- * Escapes URL strings (converts all letters consider illegal in URLs to their
- * %XX versions). This function returns a new allocated string or NULL if an
- * error occurred.
- */
-CURL_EXTERN char *curl_easy_escape(CURL *handle,
- const char *string,
- int length);
-
-/* the previous version: */
-CURL_EXTERN char *curl_escape(const char *string,
- int length);
-
-
-/*
- * NAME curl_easy_unescape()
- *
- * DESCRIPTION
- *
- * Unescapes URL encoding in strings (converts all %XX codes to their 8bit
- * versions). This function returns a new allocated string or NULL if an error
- * occurred.
- * Conversion Note: On non-ASCII platforms the ASCII %XX codes are
- * converted into the host encoding.
- */
-CURL_EXTERN char *curl_easy_unescape(CURL *handle,
- const char *string,
- int length,
- int *outlength);
-
-/* the previous version */
-CURL_EXTERN char *curl_unescape(const char *string,
- int length);
-
-/*
- * NAME curl_free()
- *
- * DESCRIPTION
- *
- * Provided for de-allocation in the same translation unit that did the
- * allocation. Added in libcurl 7.10
- */
-CURL_EXTERN void curl_free(void *p);
-
-/*
- * NAME curl_global_init()
- *
- * DESCRIPTION
- *
- * curl_global_init() should be invoked exactly once for each application that
- * uses libcurl and before any call of other libcurl functions.
- *
- * This function is not thread-safe!
- */
-CURL_EXTERN CURLcode curl_global_init(long flags);
-
-/*
- * NAME curl_global_init_mem()
- *
- * DESCRIPTION
- *
- * curl_global_init() or curl_global_init_mem() should be invoked exactly once
- * for each application that uses libcurl. This function can be used to
- * initialize libcurl and set user defined memory management callback
- * functions. Users can implement memory management routines to check for
- * memory leaks, check for mis-use of the curl library etc. User registered
- * callback routines with be invoked by this library instead of the system
- * memory management routines like malloc, free etc.
- */
-CURL_EXTERN CURLcode curl_global_init_mem(long flags,
- curl_malloc_callback m,
- curl_free_callback f,
- curl_realloc_callback r,
- curl_strdup_callback s,
- curl_calloc_callback c);
-
-/*
- * NAME curl_global_cleanup()
- *
- * DESCRIPTION
- *
- * curl_global_cleanup() should be invoked exactly once for each application
- * that uses libcurl
- */
-CURL_EXTERN void curl_global_cleanup(void);
-
-/* linked-list structure for the CURLOPT_QUOTE option (and other) */
-struct curl_slist {
- char *data;
- struct curl_slist *next;
-};
-
-/*
- * NAME curl_slist_append()
- *
- * DESCRIPTION
- *
- * Appends a string to a linked list. If no list exists, it will be created
- * first. Returns the new list, after appending.
- */
-CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
- const char *);
-
-/*
- * NAME curl_slist_free_all()
- *
- * DESCRIPTION
- *
- * free a previously built curl_slist.
- */
-CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
-
-/*
- * NAME curl_getdate()
- *
- * DESCRIPTION
- *
- * Returns the time, in seconds since 1 Jan 1970 of the time string given in
- * the first argument. The time argument in the second parameter is unused
- * and should be set to NULL.
- */
-CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
-
-/* info about the certificate chain, only for OpenSSL builds. Asked
- for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */
-struct curl_certinfo {
- int num_of_certs; /* number of certificates with information */
- struct curl_slist **certinfo; /* for each index in this array, there's a
- linked list with textual information in the
- format "name: value" */
-};
-
-/* enum for the different supported SSL backends */
-typedef enum {
- CURLSSLBACKEND_NONE = 0,
- CURLSSLBACKEND_OPENSSL = 1,
- CURLSSLBACKEND_GNUTLS = 2,
- CURLSSLBACKEND_NSS = 3,
- CURLSSLBACKEND_OBSOLETE4 = 4, /* Was QSOSSL. */
- CURLSSLBACKEND_GSKIT = 5,
- CURLSSLBACKEND_POLARSSL = 6,
- CURLSSLBACKEND_CYASSL = 7,
- CURLSSLBACKEND_SCHANNEL = 8,
- CURLSSLBACKEND_DARWINSSL = 9,
- CURLSSLBACKEND_AXTLS = 10,
- CURLSSLBACKEND_MBEDTLS = 11
-} curl_sslbackend;
-
-/* Information about the SSL library used and the respective internal SSL
- handle, which can be used to obtain further information regarding the
- connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION. */
-struct curl_tlssessioninfo {
- curl_sslbackend backend;
- void *internals;
-};
-
-#define CURLINFO_STRING 0x100000
-#define CURLINFO_LONG 0x200000
-#define CURLINFO_DOUBLE 0x300000
-#define CURLINFO_SLIST 0x400000
-#define CURLINFO_SOCKET 0x500000
-#define CURLINFO_MASK 0x0fffff
-#define CURLINFO_TYPEMASK 0xf00000
-
-typedef enum {
- CURLINFO_NONE, /* first, never use this */
- CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1,
- CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2,
- CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3,
- CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4,
- CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5,
- CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,
- CURLINFO_SIZE_UPLOAD = CURLINFO_DOUBLE + 7,
- CURLINFO_SIZE_DOWNLOAD = CURLINFO_DOUBLE + 8,
- CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9,
- CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 10,
- CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11,
- CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12,
- CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13,
- CURLINFO_FILETIME = CURLINFO_LONG + 14,
- CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15,
- CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16,
- CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
- CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
- CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19,
- CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20,
- CURLINFO_PRIVATE = CURLINFO_STRING + 21,
- CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22,
- CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23,
- CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24,
- CURLINFO_OS_ERRNO = CURLINFO_LONG + 25,
- CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26,
- CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27,
- CURLINFO_COOKIELIST = CURLINFO_SLIST + 28,
- CURLINFO_LASTSOCKET = CURLINFO_LONG + 29,
- CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,
- CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31,
- CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32,
- CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,
- CURLINFO_CERTINFO = CURLINFO_SLIST + 34,
- CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35,
- CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36,
- CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37,
- CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38,
- CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39,
- CURLINFO_PRIMARY_PORT = CURLINFO_LONG + 40,
- CURLINFO_LOCAL_IP = CURLINFO_STRING + 41,
- CURLINFO_LOCAL_PORT = CURLINFO_LONG + 42,
- CURLINFO_TLS_SESSION = CURLINFO_SLIST + 43,
- CURLINFO_ACTIVESOCKET = CURLINFO_SOCKET + 44,
- CURLINFO_TLS_SSL_PTR = CURLINFO_SLIST + 45,
- /* Fill in new entries below here! */
-
- CURLINFO_LASTONE = 45
-} CURLINFO;
-
-/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
- CURLINFO_HTTP_CODE */
-#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE
-
-typedef enum {
- CURLCLOSEPOLICY_NONE, /* first, never use this */
-
- CURLCLOSEPOLICY_OLDEST,
- CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
- CURLCLOSEPOLICY_LEAST_TRAFFIC,
- CURLCLOSEPOLICY_SLOWEST,
- CURLCLOSEPOLICY_CALLBACK,
-
- CURLCLOSEPOLICY_LAST /* last, never use this */
-} curl_closepolicy;
-
-#define CURL_GLOBAL_SSL (1<<0)
-#define CURL_GLOBAL_WIN32 (1<<1)
-#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
-#define CURL_GLOBAL_NOTHING 0
-#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
-#define CURL_GLOBAL_ACK_EINTR (1<<2)
-
-
-/*****************************************************************************
- * Setup defines, protos etc for the sharing stuff.
- */
-
-/* Different data locks for a single share */
-typedef enum {
- CURL_LOCK_DATA_NONE = 0,
- /* CURL_LOCK_DATA_SHARE is used internally to say that
- * the locking is just made to change the internal state of the share
- * itself.
- */
- CURL_LOCK_DATA_SHARE,
- CURL_LOCK_DATA_COOKIE,
- CURL_LOCK_DATA_DNS,
- CURL_LOCK_DATA_SSL_SESSION,
- CURL_LOCK_DATA_CONNECT,
- CURL_LOCK_DATA_LAST
-} curl_lock_data;
-
-/* Different lock access types */
-typedef enum {
- CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */
- CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */
- CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */
- CURL_LOCK_ACCESS_LAST /* never use */
-} curl_lock_access;
-
-typedef void (*curl_lock_function)(CURL *handle,
- curl_lock_data data,
- curl_lock_access locktype,
- void *userptr);
-typedef void (*curl_unlock_function)(CURL *handle,
- curl_lock_data data,
- void *userptr);
-
-typedef void CURLSH;
-
-typedef enum {
- CURLSHE_OK, /* all is fine */
- CURLSHE_BAD_OPTION, /* 1 */
- CURLSHE_IN_USE, /* 2 */
- CURLSHE_INVALID, /* 3 */
- CURLSHE_NOMEM, /* 4 out of memory */
- CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */
- CURLSHE_LAST /* never use */
-} CURLSHcode;
-
-typedef enum {
- CURLSHOPT_NONE, /* don't use */
- CURLSHOPT_SHARE, /* specify a data type to share */
- CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */
- CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */
- CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */
- CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock
- callback functions */
- CURLSHOPT_LAST /* never use */
-} CURLSHoption;
-
-CURL_EXTERN CURLSH *curl_share_init(void);
-CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
-CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
-
-/****************************************************************************
- * Structures for querying information about the curl library at runtime.
- */
-
-typedef enum {
- CURLVERSION_FIRST,
- CURLVERSION_SECOND,
- CURLVERSION_THIRD,
- CURLVERSION_FOURTH,
- CURLVERSION_LAST /* never actually use this */
-} CURLversion;
-
-/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by
- basically all programs ever that want to get version information. It is
- meant to be a built-in version number for what kind of struct the caller
- expects. If the struct ever changes, we redefine the NOW to another enum
- from above. */
-#define CURLVERSION_NOW CURLVERSION_FOURTH
-
-typedef struct {
- CURLversion age; /* age of the returned struct */
- const char *version; /* LIBCURL_VERSION */
- unsigned int version_num; /* LIBCURL_VERSION_NUM */
- const char *host; /* OS/host/cpu/machine when configured */
- int features; /* bitmask, see defines below */
- const char *ssl_version; /* human readable string */
- long ssl_version_num; /* not used anymore, always 0 */
- const char *libz_version; /* human readable string */
- /* protocols is terminated by an entry with a NULL protoname */
- const char * const *protocols;
-
- /* The fields below this were added in CURLVERSION_SECOND */
- const char *ares;
- int ares_num;
-
- /* This field was added in CURLVERSION_THIRD */
- const char *libidn;
-
- /* These field were added in CURLVERSION_FOURTH */
-
- /* Same as '_libiconv_version' if built with HAVE_ICONV */
- int iconv_ver_num;
-
- const char *libssh_version; /* human readable string */
-
-} curl_version_info_data;
-
-#define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */
-#define CURL_VERSION_KERBEROS4 (1<<1) /* Kerberos V4 auth is supported
- (deprecated) */
-#define CURL_VERSION_SSL (1<<2) /* SSL options are present */
-#define CURL_VERSION_LIBZ (1<<3) /* libz features are present */
-#define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */
-#define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth is supported
- (deprecated) */
-#define CURL_VERSION_DEBUG (1<<6) /* Built with debug capabilities */
-#define CURL_VERSION_ASYNCHDNS (1<<7) /* Asynchronous DNS resolves */
-#define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth is supported */
-#define CURL_VERSION_LARGEFILE (1<<9) /* Supports files larger than 2GB */
-#define CURL_VERSION_IDN (1<<10) /* Internationized Domain Names are
- supported */
-#define CURL_VERSION_SSPI (1<<11) /* Built against Windows SSPI */
-#define CURL_VERSION_CONV (1<<12) /* Character conversions supported */
-#define CURL_VERSION_CURLDEBUG (1<<13) /* Debug memory tracking supported */
-#define CURL_VERSION_TLSAUTH_SRP (1<<14) /* TLS-SRP auth is supported */
-#define CURL_VERSION_NTLM_WB (1<<15) /* NTLM delegation to winbind helper
- is suported */
-#define CURL_VERSION_HTTP2 (1<<16) /* HTTP2 support built-in */
-#define CURL_VERSION_GSSAPI (1<<17) /* Built against a GSS-API library */
-#define CURL_VERSION_KERBEROS5 (1<<18) /* Kerberos V5 auth is supported */
-#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */
-#define CURL_VERSION_PSL (1<<20) /* Mozilla's Public Suffix List, used
- for cookie domain verification */
-
- /*
- * NAME curl_version_info()
- *
- * DESCRIPTION
- *
- * This function returns a pointer to a static copy of the version info
- * struct. See above.
- */
-CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
-
-/*
- * NAME curl_easy_strerror()
- *
- * DESCRIPTION
- *
- * The curl_easy_strerror function may be used to turn a CURLcode value
- * into the equivalent human readable error string. This is useful
- * for printing meaningful error messages.
- */
-CURL_EXTERN const char *curl_easy_strerror(CURLcode);
-
-/*
- * NAME curl_share_strerror()
- *
- * DESCRIPTION
- *
- * The curl_share_strerror function may be used to turn a CURLSHcode value
- * into the equivalent human readable error string. This is useful
- * for printing meaningful error messages.
- */
-CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
-
-/*
- * NAME curl_easy_pause()
- *
- * DESCRIPTION
- *
- * The curl_easy_pause function pauses or unpauses transfers. Select the new
- * state by setting the bitmask, use the convenience defines below.
- *
- */
-CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
-
-#define CURLPAUSE_RECV (1<<0)
-#define CURLPAUSE_RECV_CONT (0)
-
-#define CURLPAUSE_SEND (1<<2)
-#define CURLPAUSE_SEND_CONT (0)
-
-#define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND)
-#define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)
-
-#ifdef __cplusplus
-}
-#endif
-
-/* unfortunately, the easy.h and multi.h include files need options and info
- stuff before they can be included! */
-#include "easy.h" /* nothing in curl is fun without the easy stuff */
-#include "multi.h"
-
-/* the typechecker doesn't work in C++ (yet) */
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
- ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
- !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)
-#include "typecheck-gcc.h"
-#else
-#if defined(__STDC__) && (__STDC__ >= 1)
-/* This preprocessor magic that replaces a call with the exact same call is
- only done to make sure application authors pass exactly three arguments
- to these functions. */
-#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)
-#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg)
-#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
-#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
-#endif /* __STDC__ >= 1 */
-#endif /* gcc >= 4.3 && !__cplusplus */
-
-#endif /* __CURL_CURL_H */
diff --git a/dependencies2013/win32/include/curl/curlbuild.h b/dependencies2013/win32/include/curl/curlbuild.h
deleted file mode 100644
index 58323d06..00000000
--- a/dependencies2013/win32/include/curl/curlbuild.h
+++ /dev/null
@@ -1,586 +0,0 @@
-#ifndef __CURL_CURLBUILD_H
-#define __CURL_CURLBUILD_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* ================================================================ */
-/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
-/* ================================================================ */
-
-/*
- * NOTE 1:
- * -------
- *
- * See file include/curl/curlbuild.h.in, run configure, and forget
- * that this file exists it is only used for non-configure systems.
- * But you can keep reading if you want ;-)
- *
- */
-
-/* ================================================================ */
-/* NOTES FOR NON-CONFIGURE SYSTEMS */
-/* ================================================================ */
-
-/*
- * NOTE 1:
- * -------
- *
- * Nothing in this file is intended to be modified or adjusted by the
- * curl library user nor by the curl library builder.
- *
- * If you think that something actually needs to be changed, adjusted
- * or fixed in this file, then, report it on the libcurl development
- * mailing list: https://cool.haxx.se/mailman/listinfo/curl-library/
- *
- * Try to keep one section per platform, compiler and architecture,
- * otherwise, if an existing section is reused for a different one and
- * later on the original is adjusted, probably the piggybacking one can
- * be adversely changed.
- *
- * In order to differentiate between platforms/compilers/architectures
- * use only compiler built in predefined preprocessor symbols.
- *
- * This header file shall only export symbols which are 'curl' or 'CURL'
- * prefixed, otherwise public name space would be polluted.
- *
- * NOTE 2:
- * -------
- *
- * For any given platform/compiler curl_off_t must be typedef'ed to a
- * 64-bit wide signed integral data type. The width of this data type
- * must remain constant and independent of any possible large file
- * support settings.
- *
- * As an exception to the above, curl_off_t shall be typedef'ed to a
- * 32-bit wide signed integral data type if there is no 64-bit type.
- *
- * As a general rule, curl_off_t shall not be mapped to off_t. This
- * rule shall only be violated if off_t is the only 64-bit data type
- * available and the size of off_t is independent of large file support
- * settings. Keep your build on the safe side avoiding an off_t gating.
- * If you have a 64-bit off_t then take for sure that another 64-bit
- * data type exists, dig deeper and you will find it.
- *
- * NOTE 3:
- * -------
- *
- * Right now you might be staring at file include/curl/curlbuild.h.dist or
- * at file include/curl/curlbuild.h, this is due to the following reason:
- * file include/curl/curlbuild.h.dist is renamed to include/curl/curlbuild.h
- * when the libcurl source code distribution archive file is created.
- *
- * File include/curl/curlbuild.h.dist is not included in the distribution
- * archive. File include/curl/curlbuild.h is not present in the git tree.
- *
- * The distributed include/curl/curlbuild.h file is only intended to be used
- * on systems which can not run the also distributed configure script.
- *
- * On systems capable of running the configure script, the configure process
- * will overwrite the distributed include/curl/curlbuild.h file with one that
- * is suitable and specific to the library being configured and built, which
- * is generated from the include/curl/curlbuild.h.in template file.
- *
- * If you check out from git on a non-configure platform, you must run the
- * appropriate buildconf* script to set up curlbuild.h and other local files.
- *
- */
-
-/* ================================================================ */
-/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
-/* ================================================================ */
-
-#ifdef CURL_SIZEOF_LONG
-# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
-#endif
-
-#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
-# error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined
-#endif
-
-#ifdef CURL_SIZEOF_CURL_SOCKLEN_T
-# error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined
-#endif
-
-#ifdef CURL_TYPEOF_CURL_OFF_T
-# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
-#endif
-
-#ifdef CURL_FORMAT_CURL_OFF_T
-# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
-#endif
-
-#ifdef CURL_FORMAT_CURL_OFF_TU
-# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
-#endif
-
-#ifdef CURL_FORMAT_OFF_T
-# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
-#endif
-
-#ifdef CURL_SIZEOF_CURL_OFF_T
-# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
-#endif
-
-#ifdef CURL_SUFFIX_CURL_OFF_T
-# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
-#endif
-
-#ifdef CURL_SUFFIX_CURL_OFF_TU
-# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
- Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
-#endif
-
-/* ================================================================ */
-/* EXTERNAL INTERFACE SETTINGS FOR NON-CONFIGURE SYSTEMS ONLY */
-/* ================================================================ */
-
-#if defined(__DJGPP__) || defined(__GO32__)
-# if defined(__DJGPP__) && (__DJGPP__ > 1)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# else
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__SALFORDC__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__BORLANDC__)
-# if (__BORLANDC__ < 0x520)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_FORMAT_OFF_T "%I64d"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__TURBOC__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__WATCOMC__)
-# if defined(__386__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_FORMAT_OFF_T "%I64d"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# else
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__POCC__)
-# if (__POCC__ < 280)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# elif defined(_MSC_VER)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_FORMAT_OFF_T "%I64d"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# else
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__LCC__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__SYMBIAN32__)
-# if defined(__EABI__) /* Treat all ARM compilers equally */
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(__CW32__)
-# pragma longlong on
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(__VC32__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__MWERKS__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(_WIN32_WCE)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_FORMAT_OFF_T "%I64d"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__MINGW32__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_FORMAT_OFF_T "%I64d"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__VMS)
-# if defined(__VAX)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-#elif defined(__OS400__)
-# if defined(__ILEC400__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(__MVS__)
-# if defined(__IBMC__) || defined(__IBMCPP__)
-# if defined(_ILP32)
-# define CURL_SIZEOF_LONG 4
-# elif defined(_LP64)
-# define CURL_SIZEOF_LONG 8
-# endif
-# if defined(_LONG_LONG)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(_LP64)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(__370__)
-# if defined(__IBMC__) || defined(__IBMCPP__)
-# if defined(_ILP32)
-# define CURL_SIZEOF_LONG 4
-# elif defined(_LP64)
-# define CURL_SIZEOF_LONG 8
-# endif
-# if defined(_LONG_LONG)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(_LP64)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(TPF)
-# define CURL_SIZEOF_LONG 8
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-/* ===================================== */
-/* KEEP MSVC THE PENULTIMATE ENTRY */
-/* ===================================== */
-
-#elif defined(_MSC_VER)
-# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_FORMAT_OFF_T "%I64d"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# else
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 4
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-
-/* ===================================== */
-/* KEEP GENERIC GCC THE LAST ENTRY */
-/* ===================================== */
-
-#elif defined(__GNUC__)
-# if defined(__ILP32__) || \
- defined(__i386__) || defined(__ppc__) || defined(__arm__) || \
- defined(__sparc__) || defined(__mips__) || defined(__sh__)
-# define CURL_SIZEOF_LONG 4
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_FORMAT_OFF_T "%lld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(__LP64__) || \
- defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__)
-# define CURL_SIZEOF_LONG 8
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_FORMAT_OFF_T "%ld"
-# define CURL_SIZEOF_CURL_OFF_T 8
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_SIZEOF_CURL_SOCKLEN_T 4
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-
-#else
-# error "Unknown non-configure build target!"
- Error Compilation_aborted_Unknown_non_configure_build_target
-#endif
-
-/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */
-/* sys/types.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_SYS_TYPES_H
-# include
-#endif
-
-/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
-/* sys/socket.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_SYS_SOCKET_H
-# include
-#endif
-
-/* Data type definition of curl_socklen_t. */
-
-#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
- typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
-#endif
-
-/* Data type definition of curl_off_t. */
-
-#ifdef CURL_TYPEOF_CURL_OFF_T
- typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
-#endif
-
-#endif /* __CURL_CURLBUILD_H */
diff --git a/dependencies2013/win32/include/curl/curlrules.h b/dependencies2013/win32/include/curl/curlrules.h
deleted file mode 100644
index 55d21f68..00000000
--- a/dependencies2013/win32/include/curl/curlrules.h
+++ /dev/null
@@ -1,262 +0,0 @@
-#ifndef __CURL_CURLRULES_H
-#define __CURL_CURLRULES_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* ================================================================ */
-/* COMPILE TIME SANITY CHECKS */
-/* ================================================================ */
-
-/*
- * NOTE 1:
- * -------
- *
- * All checks done in this file are intentionally placed in a public
- * header file which is pulled by curl/curl.h when an application is
- * being built using an already built libcurl library. Additionally
- * this file is also included and used when building the library.
- *
- * If compilation fails on this file it is certainly sure that the
- * problem is elsewhere. It could be a problem in the curlbuild.h
- * header file, or simply that you are using different compilation
- * settings than those used to build the library.
- *
- * Nothing in this file is intended to be modified or adjusted by the
- * curl library user nor by the curl library builder.
- *
- * Do not deactivate any check, these are done to make sure that the
- * library is properly built and used.
- *
- * You can find further help on the libcurl development mailing list:
- * https://cool.haxx.se/mailman/listinfo/curl-library/
- *
- * NOTE 2
- * ------
- *
- * Some of the following compile time checks are based on the fact
- * that the dimension of a constant array can not be a negative one.
- * In this way if the compile time verification fails, the compilation
- * will fail issuing an error. The error description wording is compiler
- * dependent but it will be quite similar to one of the following:
- *
- * "negative subscript or subscript is too large"
- * "array must have at least one element"
- * "-1 is an illegal array size"
- * "size of array is negative"
- *
- * If you are building an application which tries to use an already
- * built libcurl library and you are getting this kind of errors on
- * this file, it is a clear indication that there is a mismatch between
- * how the library was built and how you are trying to use it for your
- * application. Your already compiled or binary library provider is the
- * only one who can give you the details you need to properly use it.
- */
-
-/*
- * Verify that some macros are actually defined.
- */
-
-#ifndef CURL_SIZEOF_LONG
-# error "CURL_SIZEOF_LONG definition is missing!"
- Error Compilation_aborted_CURL_SIZEOF_LONG_is_missing
-#endif
-
-#ifndef CURL_TYPEOF_CURL_SOCKLEN_T
-# error "CURL_TYPEOF_CURL_SOCKLEN_T definition is missing!"
- Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_is_missing
-#endif
-
-#ifndef CURL_SIZEOF_CURL_SOCKLEN_T
-# error "CURL_SIZEOF_CURL_SOCKLEN_T definition is missing!"
- Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_is_missing
-#endif
-
-#ifndef CURL_TYPEOF_CURL_OFF_T
-# error "CURL_TYPEOF_CURL_OFF_T definition is missing!"
- Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_is_missing
-#endif
-
-#ifndef CURL_FORMAT_CURL_OFF_T
-# error "CURL_FORMAT_CURL_OFF_T definition is missing!"
- Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_is_missing
-#endif
-
-#ifndef CURL_FORMAT_CURL_OFF_TU
-# error "CURL_FORMAT_CURL_OFF_TU definition is missing!"
- Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_is_missing
-#endif
-
-#ifndef CURL_FORMAT_OFF_T
-# error "CURL_FORMAT_OFF_T definition is missing!"
- Error Compilation_aborted_CURL_FORMAT_OFF_T_is_missing
-#endif
-
-#ifndef CURL_SIZEOF_CURL_OFF_T
-# error "CURL_SIZEOF_CURL_OFF_T definition is missing!"
- Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_is_missing
-#endif
-
-#ifndef CURL_SUFFIX_CURL_OFF_T
-# error "CURL_SUFFIX_CURL_OFF_T definition is missing!"
- Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_is_missing
-#endif
-
-#ifndef CURL_SUFFIX_CURL_OFF_TU
-# error "CURL_SUFFIX_CURL_OFF_TU definition is missing!"
- Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_is_missing
-#endif
-
-/*
- * Macros private to this header file.
- */
-
-#define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1
-
-#define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1
-
-/*
- * Verify that the size previously defined and expected for long
- * is the same as the one reported by sizeof() at compile time.
- */
-
-typedef char
- __curl_rule_01__
- [CurlchkszEQ(long, CURL_SIZEOF_LONG)];
-
-/*
- * Verify that the size previously defined and expected for
- * curl_off_t is actually the the same as the one reported
- * by sizeof() at compile time.
- */
-
-typedef char
- __curl_rule_02__
- [CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];
-
-/*
- * Verify at compile time that the size of curl_off_t as reported
- * by sizeof() is greater or equal than the one reported for long
- * for the current compilation.
- */
-
-typedef char
- __curl_rule_03__
- [CurlchkszGE(curl_off_t, long)];
-
-/*
- * Verify that the size previously defined and expected for
- * curl_socklen_t is actually the the same as the one reported
- * by sizeof() at compile time.
- */
-
-typedef char
- __curl_rule_04__
- [CurlchkszEQ(curl_socklen_t, CURL_SIZEOF_CURL_SOCKLEN_T)];
-
-/*
- * Verify at compile time that the size of curl_socklen_t as reported
- * by sizeof() is greater or equal than the one reported for int for
- * the current compilation.
- */
-
-typedef char
- __curl_rule_05__
- [CurlchkszGE(curl_socklen_t, int)];
-
-/* ================================================================ */
-/* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */
-/* ================================================================ */
-
-/*
- * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow
- * these to be visible and exported by the external libcurl interface API,
- * while also making them visible to the library internals, simply including
- * curl_setup.h, without actually needing to include curl.h internally.
- * If some day this section would grow big enough, all this should be moved
- * to its own header file.
- */
-
-/*
- * Figure out if we can use the ## preprocessor operator, which is supported
- * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__
- * or __cplusplus so we need to carefully check for them too.
- */
-
-#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
- defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
- defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
- defined(__ILEC400__)
- /* This compiler is believed to have an ISO compatible preprocessor */
-#define CURL_ISOCPP
-#else
- /* This compiler is believed NOT to have an ISO compatible preprocessor */
-#undef CURL_ISOCPP
-#endif
-
-/*
- * Macros for minimum-width signed and unsigned curl_off_t integer constants.
- */
-
-#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551)
-# define __CURL_OFF_T_C_HLPR2(x) x
-# define __CURL_OFF_T_C_HLPR1(x) __CURL_OFF_T_C_HLPR2(x)
-# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \
- __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)
-# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \
- __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)
-#else
-# ifdef CURL_ISOCPP
-# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix
-# else
-# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix
-# endif
-# define __CURL_OFF_T_C_HLPR1(Val,Suffix) __CURL_OFF_T_C_HLPR2(Val,Suffix)
-# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)
-# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)
-#endif
-
-/*
- * Get rid of macros private to this header file.
- */
-
-#undef CurlchkszEQ
-#undef CurlchkszGE
-
-/*
- * Get rid of macros not intended to exist beyond this point.
- */
-
-#undef CURL_PULL_WS2TCPIP_H
-#undef CURL_PULL_SYS_TYPES_H
-#undef CURL_PULL_SYS_SOCKET_H
-#undef CURL_PULL_SYS_POLL_H
-#undef CURL_PULL_STDINT_H
-#undef CURL_PULL_INTTYPES_H
-
-#undef CURL_TYPEOF_CURL_SOCKLEN_T
-#undef CURL_TYPEOF_CURL_OFF_T
-
-#ifdef CURL_NO_OLDIES
-#undef CURL_FORMAT_OFF_T /* not required since 7.19.0 - obsoleted in 7.20.0 */
-#endif
-
-#endif /* __CURL_CURLRULES_H */
diff --git a/dependencies2013/win32/include/curl/curlver.h b/dependencies2013/win32/include/curl/curlver.h
deleted file mode 100644
index 5d756b3f..00000000
--- a/dependencies2013/win32/include/curl/curlver.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef __CURL_CURLVER_H
-#define __CURL_CURLVER_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* This header file contains nothing but libcurl version info, generated by
- a script at release-time. This was made its own header file in 7.11.2 */
-
-/* This is the global package copyright */
-#define LIBCURL_COPYRIGHT "1996 - 2016 Daniel Stenberg, ."
-
-/* This is the version number of the libcurl package from which this header
- file origins: */
-#define LIBCURL_VERSION "7.49.0-DEV"
-
-/* The numeric version number is also available "in parts" by using these
- defines: */
-#define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 49
-#define LIBCURL_VERSION_PATCH 0
-
-/* This is the numeric version of the libcurl version number, meant for easier
- parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
- always follow this syntax:
-
- 0xXXYYZZ
-
- Where XX, YY and ZZ are the main version, release and patch numbers in
- hexadecimal (using 8 bits each). All three numbers are always represented
- using two digits. 1.2 would appear as "0x010200" while version 9.11.7
- appears as "0x090b07".
-
- This 6-digit (24 bits) hexadecimal number does not show pre-release number,
- and it is always a greater number in a more recent release. It makes
- comparisons with greater than and less than work.
-
- Note: This define is the full hex number and _does not_ use the
- CURL_VERSION_BITS() macro since curl's own configure script greps for it
- and needs it to contain the full number.
-*/
-#define LIBCURL_VERSION_NUM 0x073100
-
-/*
- * This is the date and time when the full source package was created. The
- * timestamp is not stored in git, as the timestamp is properly set in the
- * tarballs by the maketgz script.
- *
- * The format of the date should follow this template:
- *
- * "Mon Feb 12 11:35:33 UTC 2007"
- */
-#define LIBCURL_TIMESTAMP "DEV"
-
-#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z)
-#define CURL_AT_LEAST_VERSION(x,y,z) \
- (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
-
-#endif /* __CURL_CURLVER_H */
diff --git a/dependencies2013/win32/include/curl/easy.h b/dependencies2013/win32/include/curl/easy.h
deleted file mode 100644
index afc766cd..00000000
--- a/dependencies2013/win32/include/curl/easy.h
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef __CURL_EASY_H
-#define __CURL_EASY_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-CURL_EXTERN CURL *curl_easy_init(void);
-CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
-CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
-CURL_EXTERN void curl_easy_cleanup(CURL *curl);
-
-/*
- * NAME curl_easy_getinfo()
- *
- * DESCRIPTION
- *
- * Request internal information from the curl session with this function. The
- * third argument MUST be a pointer to a long, a pointer to a char * or a
- * pointer to a double (as the documentation describes elsewhere). The data
- * pointed to will be filled in accordingly and can be relied upon only if the
- * function returns CURLE_OK. This function is intended to get used *AFTER* a
- * performed transfer, all results from this function are undefined until the
- * transfer is completed.
- */
-CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
-
-
-/*
- * NAME curl_easy_duphandle()
- *
- * DESCRIPTION
- *
- * Creates a new curl session handle with the same options set for the handle
- * passed in. Duplicating a handle could only be a matter of cloning data and
- * options, internal state info and things like persistent connections cannot
- * be transferred. It is useful in multithreaded applications when you can run
- * curl_easy_duphandle() for each new thread to avoid a series of identical
- * curl_easy_setopt() invokes in every thread.
- */
-CURL_EXTERN CURL* curl_easy_duphandle(CURL *curl);
-
-/*
- * NAME curl_easy_reset()
- *
- * DESCRIPTION
- *
- * Re-initializes a CURL handle to the default values. This puts back the
- * handle to the same state as it was in when it was just created.
- *
- * It does keep: live connections, the Session ID cache, the DNS cache and the
- * cookies.
- */
-CURL_EXTERN void curl_easy_reset(CURL *curl);
-
-/*
- * NAME curl_easy_recv()
- *
- * DESCRIPTION
- *
- * Receives data from the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
- */
-CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
- size_t *n);
-
-/*
- * NAME curl_easy_send()
- *
- * DESCRIPTION
- *
- * Sends data over the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
- */
-CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
- size_t buflen, size_t *n);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/dependencies2013/win32/include/curl/mprintf.h b/dependencies2013/win32/include/curl/mprintf.h
deleted file mode 100644
index e20f546e..00000000
--- a/dependencies2013/win32/include/curl/mprintf.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef __CURL_MPRINTF_H
-#define __CURL_MPRINTF_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include
-#include /* needed for FILE */
-#include "curl.h" /* for CURL_EXTERN */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-CURL_EXTERN int curl_mprintf(const char *format, ...);
-CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
-CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
-CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
- const char *format, ...);
-CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
-CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
-CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
-CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
- const char *format, va_list args);
-CURL_EXTERN char *curl_maprintf(const char *format, ...);
-CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __CURL_MPRINTF_H */
diff --git a/dependencies2013/win32/include/curl/multi.h b/dependencies2013/win32/include/curl/multi.h
deleted file mode 100644
index 0fbbd96f..00000000
--- a/dependencies2013/win32/include/curl/multi.h
+++ /dev/null
@@ -1,435 +0,0 @@
-#ifndef __CURL_MULTI_H
-#define __CURL_MULTI_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/*
- This is an "external" header file. Don't give away any internals here!
-
- GOALS
-
- o Enable a "pull" interface. The application that uses libcurl decides where
- and when to ask libcurl to get/send data.
-
- o Enable multiple simultaneous transfers in the same thread without making it
- complicated for the application.
-
- o Enable the application to select() on its own file descriptors and curl's
- file descriptors simultaneous easily.
-
-*/
-
-/*
- * This header file should not really need to include "curl.h" since curl.h
- * itself includes this file and we expect user applications to do #include
- * without the need for especially including multi.h.
- *
- * For some reason we added this include here at one point, and rather than to
- * break existing (wrongly written) libcurl applications, we leave it as-is
- * but with this warning attached.
- */
-#include "curl.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void CURLM;
-
-typedef enum {
- CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
- curl_multi_socket*() soon */
- CURLM_OK,
- CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle */
- CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
- CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */
- CURLM_INTERNAL_ERROR, /* this is a libcurl bug */
- CURLM_BAD_SOCKET, /* the passed in socket argument did not match */
- CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */
- CURLM_ADDED_ALREADY, /* an easy handle already added to a multi handle was
- attempted to get added - again */
- CURLM_LAST
-} CURLMcode;
-
-/* just to make code nicer when using curl_multi_socket() you can now check
- for CURLM_CALL_MULTI_SOCKET too in the same style it works for
- curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
-#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
-
-/* bitmask bits for CURLMOPT_PIPELINING */
-#define CURLPIPE_NOTHING 0L
-#define CURLPIPE_HTTP1 1L
-#define CURLPIPE_MULTIPLEX 2L
-
-typedef enum {
- CURLMSG_NONE, /* first, not used */
- CURLMSG_DONE, /* This easy handle has completed. 'result' contains
- the CURLcode of the transfer */
- CURLMSG_LAST /* last, not used */
-} CURLMSG;
-
-struct CURLMsg {
- CURLMSG msg; /* what this message means */
- CURL *easy_handle; /* the handle it concerns */
- union {
- void *whatever; /* message-specific data */
- CURLcode result; /* return code for transfer */
- } data;
-};
-typedef struct CURLMsg CURLMsg;
-
-/* Based on poll(2) structure and values.
- * We don't use pollfd and POLL* constants explicitly
- * to cover platforms without poll(). */
-#define CURL_WAIT_POLLIN 0x0001
-#define CURL_WAIT_POLLPRI 0x0002
-#define CURL_WAIT_POLLOUT 0x0004
-
-struct curl_waitfd {
- curl_socket_t fd;
- short events;
- short revents; /* not supported yet */
-};
-
-/*
- * Name: curl_multi_init()
- *
- * Desc: inititalize multi-style curl usage
- *
- * Returns: a new CURLM handle to use in all 'curl_multi' functions.
- */
-CURL_EXTERN CURLM *curl_multi_init(void);
-
-/*
- * Name: curl_multi_add_handle()
- *
- * Desc: add a standard curl handle to the multi stack
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
- CURL *curl_handle);
-
- /*
- * Name: curl_multi_remove_handle()
- *
- * Desc: removes a curl handle from the multi stack again
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
- CURL *curl_handle);
-
- /*
- * Name: curl_multi_fdset()
- *
- * Desc: Ask curl for its fd_set sets. The app can use these to select() or
- * poll() on. We want curl_multi_perform() called as soon as one of
- * them are ready.
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
- fd_set *read_fd_set,
- fd_set *write_fd_set,
- fd_set *exc_fd_set,
- int *max_fd);
-
-/*
- * Name: curl_multi_wait()
- *
- * Desc: Poll on all fds within a CURLM set as well as any
- * additional fds passed to the function.
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
- struct curl_waitfd extra_fds[],
- unsigned int extra_nfds,
- int timeout_ms,
- int *ret);
-
- /*
- * Name: curl_multi_perform()
- *
- * Desc: When the app thinks there's data available for curl it calls this
- * function to read/write whatever there is right now. This returns
- * as soon as the reads and writes are done. This function does not
- * require that there actually is data available for reading or that
- * data can be written, it can be called just in case. It returns
- * the number of handles that still transfer data in the second
- * argument's integer-pointer.
- *
- * Returns: CURLMcode type, general multi error code. *NOTE* that this only
- * returns errors etc regarding the whole multi stack. There might
- * still have occurred problems on invidual transfers even when this
- * returns OK.
- */
-CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
- int *running_handles);
-
- /*
- * Name: curl_multi_cleanup()
- *
- * Desc: Cleans up and removes a whole multi stack. It does not free or
- * touch any individual easy handles in any way. We need to define
- * in what state those handles will be if this function is called
- * in the middle of a transfer.
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
-
-/*
- * Name: curl_multi_info_read()
- *
- * Desc: Ask the multi handle if there's any messages/informationals from
- * the individual transfers. Messages include informationals such as
- * error code from the transfer or just the fact that a transfer is
- * completed. More details on these should be written down as well.
- *
- * Repeated calls to this function will return a new struct each
- * time, until a special "end of msgs" struct is returned as a signal
- * that there is no more to get at this point.
- *
- * The data the returned pointer points to will not survive calling
- * curl_multi_cleanup().
- *
- * The 'CURLMsg' struct is meant to be very simple and only contain
- * very basic informations. If more involved information is wanted,
- * we will provide the particular "transfer handle" in that struct
- * and that should/could/would be used in subsequent
- * curl_easy_getinfo() calls (or similar). The point being that we
- * must never expose complex structs to applications, as then we'll
- * undoubtably get backwards compatibility problems in the future.
- *
- * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out
- * of structs. It also writes the number of messages left in the
- * queue (after this read) in the integer the second argument points
- * to.
- */
-CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
- int *msgs_in_queue);
-
-/*
- * Name: curl_multi_strerror()
- *
- * Desc: The curl_multi_strerror function may be used to turn a CURLMcode
- * value into the equivalent human readable error string. This is
- * useful for printing meaningful error messages.
- *
- * Returns: A pointer to a zero-terminated error message.
- */
-CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
-
-/*
- * Name: curl_multi_socket() and
- * curl_multi_socket_all()
- *
- * Desc: An alternative version of curl_multi_perform() that allows the
- * application to pass in one of the file descriptors that have been
- * detected to have "action" on them and let libcurl perform.
- * See man page for details.
- */
-#define CURL_POLL_NONE 0
-#define CURL_POLL_IN 1
-#define CURL_POLL_OUT 2
-#define CURL_POLL_INOUT 3
-#define CURL_POLL_REMOVE 4
-
-#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD
-
-#define CURL_CSELECT_IN 0x01
-#define CURL_CSELECT_OUT 0x02
-#define CURL_CSELECT_ERR 0x04
-
-typedef int (*curl_socket_callback)(CURL *easy, /* easy handle */
- curl_socket_t s, /* socket */
- int what, /* see above */
- void *userp, /* private callback
- pointer */
- void *socketp); /* private socket
- pointer */
-/*
- * Name: curl_multi_timer_callback
- *
- * Desc: Called by libcurl whenever the library detects a change in the
- * maximum number of milliseconds the app is allowed to wait before
- * curl_multi_socket() or curl_multi_perform() must be called
- * (to allow libcurl's timed events to take place).
- *
- * Returns: The callback should return zero.
- */
-typedef int (*curl_multi_timer_callback)(CURLM *multi, /* multi handle */
- long timeout_ms, /* see above */
- void *userp); /* private callback
- pointer */
-
-CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
- int *running_handles);
-
-CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
- curl_socket_t s,
- int ev_bitmask,
- int *running_handles);
-
-CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
- int *running_handles);
-
-#ifndef CURL_ALLOW_OLD_MULTI_SOCKET
-/* This macro below was added in 7.16.3 to push users who recompile to use
- the new curl_multi_socket_action() instead of the old curl_multi_socket()
-*/
-#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)
-#endif
-
-/*
- * Name: curl_multi_timeout()
- *
- * Desc: Returns the maximum number of milliseconds the app is allowed to
- * wait before curl_multi_socket() or curl_multi_perform() must be
- * called (to allow libcurl's timed events to take place).
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
- long *milliseconds);
-
-#undef CINIT /* re-using the same name as in curl.h */
-
-#ifdef CURL_ISOCPP
-#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define LONG CURLOPTTYPE_LONG
-#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT
-#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
-#define OFF_T CURLOPTTYPE_OFF_T
-#define CINIT(name,type,number) CURLMOPT_/**/name = type + number
-#endif
-
-typedef enum {
- /* This is the socket callback function pointer */
- CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1),
-
- /* This is the argument passed to the socket callback */
- CINIT(SOCKETDATA, OBJECTPOINT, 2),
-
- /* set to 1 to enable pipelining for this multi handle */
- CINIT(PIPELINING, LONG, 3),
-
- /* This is the timer callback function pointer */
- CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4),
-
- /* This is the argument passed to the timer callback */
- CINIT(TIMERDATA, OBJECTPOINT, 5),
-
- /* maximum number of entries in the connection cache */
- CINIT(MAXCONNECTS, LONG, 6),
-
- /* maximum number of (pipelining) connections to one host */
- CINIT(MAX_HOST_CONNECTIONS, LONG, 7),
-
- /* maximum number of requests in a pipeline */
- CINIT(MAX_PIPELINE_LENGTH, LONG, 8),
-
- /* a connection with a content-length longer than this
- will not be considered for pipelining */
- CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9),
-
- /* a connection with a chunk length longer than this
- will not be considered for pipelining */
- CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10),
-
- /* a list of site names(+port) that are blacklisted from
- pipelining */
- CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11),
-
- /* a list of server types that are blacklisted from
- pipelining */
- CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12),
-
- /* maximum number of open connections in total */
- CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),
-
- /* This is the server push callback function pointer */
- CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),
-
- /* This is the argument passed to the server push callback */
- CINIT(PUSHDATA, OBJECTPOINT, 15),
-
- CURLMOPT_LASTENTRY /* the last unused */
-} CURLMoption;
-
-
-/*
- * Name: curl_multi_setopt()
- *
- * Desc: Sets options for the multi handle.
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
- CURLMoption option, ...);
-
-
-/*
- * Name: curl_multi_assign()
- *
- * Desc: This function sets an association in the multi handle between the
- * given socket and a private pointer of the application. This is
- * (only) useful for curl_multi_socket uses.
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
- curl_socket_t sockfd, void *sockp);
-
-
-/*
- * Name: curl_push_callback
- *
- * Desc: This callback gets called when a new stream is being pushed by the
- * server. It approves or denies the new stream.
- *
- * Returns: CURL_PUSH_OK or CURL_PUSH_DENY.
- */
-#define CURL_PUSH_OK 0
-#define CURL_PUSH_DENY 1
-
-struct curl_pushheaders; /* forward declaration only */
-
-CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
- size_t num);
-CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
- const char *name);
-
-typedef int (*curl_push_callback)(CURL *parent,
- CURL *easy,
- size_t num_headers,
- struct curl_pushheaders *headers,
- void *userp);
-
-#ifdef __cplusplus
-} /* end of extern "C" */
-#endif
-
-#endif
diff --git a/dependencies2013/win32/include/curl/stdcheaders.h b/dependencies2013/win32/include/curl/stdcheaders.h
deleted file mode 100644
index 6f0f7f34..00000000
--- a/dependencies2013/win32/include/curl/stdcheaders.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef __STDC_HEADERS_H
-#define __STDC_HEADERS_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2010, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include
-
-size_t fread (void *, size_t, size_t, FILE *);
-size_t fwrite (const void *, size_t, size_t, FILE *);
-
-int strcasecmp(const char *, const char *);
-int strncasecmp(const char *, const char *, size_t);
-
-#endif /* __STDC_HEADERS_H */
diff --git a/dependencies2013/win32/include/curl/typecheck-gcc.h b/dependencies2013/win32/include/curl/typecheck-gcc.h
deleted file mode 100644
index 6ec8bcfd..00000000
--- a/dependencies2013/win32/include/curl/typecheck-gcc.h
+++ /dev/null
@@ -1,622 +0,0 @@
-#ifndef __CURL_TYPECHECK_GCC_H
-#define __CURL_TYPECHECK_GCC_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* wraps curl_easy_setopt() with typechecking */
-
-/* To add a new kind of warning, add an
- * if(_curl_is_sometype_option(_curl_opt))
- * if(!_curl_is_sometype(value))
- * _curl_easy_setopt_err_sometype();
- * block and define _curl_is_sometype_option, _curl_is_sometype and
- * _curl_easy_setopt_err_sometype below
- *
- * NOTE: We use two nested 'if' statements here instead of the && operator, in
- * order to work around gcc bug #32061. It affects only gcc 4.3.x/4.4.x
- * when compiling with -Wlogical-op.
- *
- * To add an option that uses the same type as an existing option, you'll just
- * need to extend the appropriate _curl_*_option macro
- */
-#define curl_easy_setopt(handle, option, value) \
-__extension__ ({ \
- __typeof__ (option) _curl_opt = option; \
- if(__builtin_constant_p(_curl_opt)) { \
- if(_curl_is_long_option(_curl_opt)) \
- if(!_curl_is_long(value)) \
- _curl_easy_setopt_err_long(); \
- if(_curl_is_off_t_option(_curl_opt)) \
- if(!_curl_is_off_t(value)) \
- _curl_easy_setopt_err_curl_off_t(); \
- if(_curl_is_string_option(_curl_opt)) \
- if(!_curl_is_string(value)) \
- _curl_easy_setopt_err_string(); \
- if(_curl_is_write_cb_option(_curl_opt)) \
- if(!_curl_is_write_cb(value)) \
- _curl_easy_setopt_err_write_callback(); \
- if((_curl_opt) == CURLOPT_READFUNCTION) \
- if(!_curl_is_read_cb(value)) \
- _curl_easy_setopt_err_read_cb(); \
- if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \
- if(!_curl_is_ioctl_cb(value)) \
- _curl_easy_setopt_err_ioctl_cb(); \
- if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \
- if(!_curl_is_sockopt_cb(value)) \
- _curl_easy_setopt_err_sockopt_cb(); \
- if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \
- if(!_curl_is_opensocket_cb(value)) \
- _curl_easy_setopt_err_opensocket_cb(); \
- if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \
- if(!_curl_is_progress_cb(value)) \
- _curl_easy_setopt_err_progress_cb(); \
- if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \
- if(!_curl_is_debug_cb(value)) \
- _curl_easy_setopt_err_debug_cb(); \
- if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \
- if(!_curl_is_ssl_ctx_cb(value)) \
- _curl_easy_setopt_err_ssl_ctx_cb(); \
- if(_curl_is_conv_cb_option(_curl_opt)) \
- if(!_curl_is_conv_cb(value)) \
- _curl_easy_setopt_err_conv_cb(); \
- if((_curl_opt) == CURLOPT_SEEKFUNCTION) \
- if(!_curl_is_seek_cb(value)) \
- _curl_easy_setopt_err_seek_cb(); \
- if(_curl_is_cb_data_option(_curl_opt)) \
- if(!_curl_is_cb_data(value)) \
- _curl_easy_setopt_err_cb_data(); \
- if((_curl_opt) == CURLOPT_ERRORBUFFER) \
- if(!_curl_is_error_buffer(value)) \
- _curl_easy_setopt_err_error_buffer(); \
- if((_curl_opt) == CURLOPT_STDERR) \
- if(!_curl_is_FILE(value)) \
- _curl_easy_setopt_err_FILE(); \
- if(_curl_is_postfields_option(_curl_opt)) \
- if(!_curl_is_postfields(value)) \
- _curl_easy_setopt_err_postfields(); \
- if((_curl_opt) == CURLOPT_HTTPPOST) \
- if(!_curl_is_arr((value), struct curl_httppost)) \
- _curl_easy_setopt_err_curl_httpost(); \
- if(_curl_is_slist_option(_curl_opt)) \
- if(!_curl_is_arr((value), struct curl_slist)) \
- _curl_easy_setopt_err_curl_slist(); \
- if((_curl_opt) == CURLOPT_SHARE) \
- if(!_curl_is_ptr((value), CURLSH)) \
- _curl_easy_setopt_err_CURLSH(); \
- } \
- curl_easy_setopt(handle, _curl_opt, value); \
-})
-
-/* wraps curl_easy_getinfo() with typechecking */
-/* FIXME: don't allow const pointers */
-#define curl_easy_getinfo(handle, info, arg) \
-__extension__ ({ \
- __typeof__ (info) _curl_info = info; \
- if(__builtin_constant_p(_curl_info)) { \
- if(_curl_is_string_info(_curl_info)) \
- if(!_curl_is_arr((arg), char *)) \
- _curl_easy_getinfo_err_string(); \
- if(_curl_is_long_info(_curl_info)) \
- if(!_curl_is_arr((arg), long)) \
- _curl_easy_getinfo_err_long(); \
- if(_curl_is_double_info(_curl_info)) \
- if(!_curl_is_arr((arg), double)) \
- _curl_easy_getinfo_err_double(); \
- if(_curl_is_slist_info(_curl_info)) \
- if(!_curl_is_arr((arg), struct curl_slist *)) \
- _curl_easy_getinfo_err_curl_slist(); \
- } \
- curl_easy_getinfo(handle, _curl_info, arg); \
-})
-
-/* TODO: typechecking for curl_share_setopt() and curl_multi_setopt(),
- * for now just make sure that the functions are called with three
- * arguments
- */
-#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
-#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
-
-
-/* the actual warnings, triggered by calling the _curl_easy_setopt_err*
- * functions */
-
-/* To define a new warning, use _CURL_WARNING(identifier, "message") */
-#define _CURL_WARNING(id, message) \
- static void __attribute__((__warning__(message))) \
- __attribute__((__unused__)) __attribute__((__noinline__)) \
- id(void) { __asm__(""); }
-
-_CURL_WARNING(_curl_easy_setopt_err_long,
- "curl_easy_setopt expects a long argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_off_t,
- "curl_easy_setopt expects a curl_off_t argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_string,
- "curl_easy_setopt expects a "
- "string (char* or char[]) argument for this option"
- )
-_CURL_WARNING(_curl_easy_setopt_err_write_callback,
- "curl_easy_setopt expects a curl_write_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_read_cb,
- "curl_easy_setopt expects a curl_read_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb,
- "curl_easy_setopt expects a curl_ioctl_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb,
- "curl_easy_setopt expects a curl_sockopt_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb,
- "curl_easy_setopt expects a "
- "curl_opensocket_callback argument for this option"
- )
-_CURL_WARNING(_curl_easy_setopt_err_progress_cb,
- "curl_easy_setopt expects a curl_progress_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_debug_cb,
- "curl_easy_setopt expects a curl_debug_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb,
- "curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_conv_cb,
- "curl_easy_setopt expects a curl_conv_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_seek_cb,
- "curl_easy_setopt expects a curl_seek_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_cb_data,
- "curl_easy_setopt expects a "
- "private data pointer as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_error_buffer,
- "curl_easy_setopt expects a "
- "char buffer of CURL_ERROR_SIZE as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_FILE,
- "curl_easy_setopt expects a FILE* argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_postfields,
- "curl_easy_setopt expects a void* or char* argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_httpost,
- "curl_easy_setopt expects a struct curl_httppost* argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_slist,
- "curl_easy_setopt expects a struct curl_slist* argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_CURLSH,
- "curl_easy_setopt expects a CURLSH* argument for this option")
-
-_CURL_WARNING(_curl_easy_getinfo_err_string,
- "curl_easy_getinfo expects a pointer to char * for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_long,
- "curl_easy_getinfo expects a pointer to long for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_double,
- "curl_easy_getinfo expects a pointer to double for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
- "curl_easy_getinfo expects a pointer to struct curl_slist * for this info")
-
-/* groups of curl_easy_setops options that take the same type of argument */
-
-/* To add a new option to one of the groups, just add
- * (option) == CURLOPT_SOMETHING
- * to the or-expression. If the option takes a long or curl_off_t, you don't
- * have to do anything
- */
-
-/* evaluates to true if option takes a long argument */
-#define _curl_is_long_option(option) \
- (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)
-
-#define _curl_is_off_t_option(option) \
- ((option) > CURLOPTTYPE_OFF_T)
-
-/* evaluates to true if option takes a char* argument */
-#define _curl_is_string_option(option) \
- ((option) == CURLOPT_ACCEPT_ENCODING || \
- (option) == CURLOPT_CAINFO || \
- (option) == CURLOPT_CAPATH || \
- (option) == CURLOPT_COOKIE || \
- (option) == CURLOPT_COOKIEFILE || \
- (option) == CURLOPT_COOKIEJAR || \
- (option) == CURLOPT_COOKIELIST || \
- (option) == CURLOPT_CRLFILE || \
- (option) == CURLOPT_CUSTOMREQUEST || \
- (option) == CURLOPT_DEFAULT_PROTOCOL || \
- (option) == CURLOPT_DNS_INTERFACE || \
- (option) == CURLOPT_DNS_LOCAL_IP4 || \
- (option) == CURLOPT_DNS_LOCAL_IP6 || \
- (option) == CURLOPT_DNS_SERVERS || \
- (option) == CURLOPT_EGDSOCKET || \
- (option) == CURLOPT_FTPPORT || \
- (option) == CURLOPT_FTP_ACCOUNT || \
- (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \
- (option) == CURLOPT_INTERFACE || \
- (option) == CURLOPT_ISSUERCERT || \
- (option) == CURLOPT_KEYPASSWD || \
- (option) == CURLOPT_KRBLEVEL || \
- (option) == CURLOPT_LOGIN_OPTIONS || \
- (option) == CURLOPT_MAIL_AUTH || \
- (option) == CURLOPT_MAIL_FROM || \
- (option) == CURLOPT_NETRC_FILE || \
- (option) == CURLOPT_NOPROXY || \
- (option) == CURLOPT_PASSWORD || \
- (option) == CURLOPT_PINNEDPUBLICKEY || \
- (option) == CURLOPT_PROXY || \
- (option) == CURLOPT_PROXYPASSWORD || \
- (option) == CURLOPT_PROXYUSERNAME || \
- (option) == CURLOPT_PROXYUSERPWD || \
- (option) == CURLOPT_PROXY_SERVICE_NAME || \
- (option) == CURLOPT_RANDOM_FILE || \
- (option) == CURLOPT_RANGE || \
- (option) == CURLOPT_REFERER || \
- (option) == CURLOPT_RTSP_SESSION_ID || \
- (option) == CURLOPT_RTSP_STREAM_URI || \
- (option) == CURLOPT_RTSP_TRANSPORT || \
- (option) == CURLOPT_SERVICE_NAME || \
- (option) == CURLOPT_SOCKS5_GSSAPI_SERVICE || \
- (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
- (option) == CURLOPT_SSH_KNOWNHOSTS || \
- (option) == CURLOPT_SSH_PRIVATE_KEYFILE || \
- (option) == CURLOPT_SSH_PUBLIC_KEYFILE || \
- (option) == CURLOPT_SSLCERT || \
- (option) == CURLOPT_SSLCERTTYPE || \
- (option) == CURLOPT_SSLENGINE || \
- (option) == CURLOPT_SSLKEY || \
- (option) == CURLOPT_SSLKEYTYPE || \
- (option) == CURLOPT_SSL_CIPHER_LIST || \
- (option) == CURLOPT_TLSAUTH_PASSWORD || \
- (option) == CURLOPT_TLSAUTH_TYPE || \
- (option) == CURLOPT_TLSAUTH_USERNAME || \
- (option) == CURLOPT_UNIX_SOCKET_PATH || \
- (option) == CURLOPT_URL || \
- (option) == CURLOPT_USERAGENT || \
- (option) == CURLOPT_USERNAME || \
- (option) == CURLOPT_USERPWD || \
- (option) == CURLOPT_XOAUTH2_BEARER || \
- 0)
-
-/* evaluates to true if option takes a curl_write_callback argument */
-#define _curl_is_write_cb_option(option) \
- ((option) == CURLOPT_HEADERFUNCTION || \
- (option) == CURLOPT_WRITEFUNCTION)
-
-/* evaluates to true if option takes a curl_conv_callback argument */
-#define _curl_is_conv_cb_option(option) \
- ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \
- (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \
- (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)
-
-/* evaluates to true if option takes a data argument to pass to a callback */
-#define _curl_is_cb_data_option(option) \
- ((option) == CURLOPT_CHUNK_DATA || \
- (option) == CURLOPT_CLOSESOCKETDATA || \
- (option) == CURLOPT_DEBUGDATA || \
- (option) == CURLOPT_FNMATCH_DATA || \
- (option) == CURLOPT_HEADERDATA || \
- (option) == CURLOPT_INTERLEAVEDATA || \
- (option) == CURLOPT_IOCTLDATA || \
- (option) == CURLOPT_OPENSOCKETDATA || \
- (option) == CURLOPT_PRIVATE || \
- (option) == CURLOPT_PROGRESSDATA || \
- (option) == CURLOPT_READDATA || \
- (option) == CURLOPT_SEEKDATA || \
- (option) == CURLOPT_SOCKOPTDATA || \
- (option) == CURLOPT_SSH_KEYDATA || \
- (option) == CURLOPT_SSL_CTX_DATA || \
- (option) == CURLOPT_WRITEDATA || \
- 0)
-
-/* evaluates to true if option takes a POST data argument (void* or char*) */
-#define _curl_is_postfields_option(option) \
- ((option) == CURLOPT_POSTFIELDS || \
- (option) == CURLOPT_COPYPOSTFIELDS || \
- 0)
-
-/* evaluates to true if option takes a struct curl_slist * argument */
-#define _curl_is_slist_option(option) \
- ((option) == CURLOPT_HTTP200ALIASES || \
- (option) == CURLOPT_HTTPHEADER || \
- (option) == CURLOPT_MAIL_RCPT || \
- (option) == CURLOPT_POSTQUOTE || \
- (option) == CURLOPT_PREQUOTE || \
- (option) == CURLOPT_PROXYHEADER || \
- (option) == CURLOPT_QUOTE || \
- (option) == CURLOPT_RESOLVE || \
- (option) == CURLOPT_TELNETOPTIONS || \
- 0)
-
-/* groups of curl_easy_getinfo infos that take the same type of argument */
-
-/* evaluates to true if info expects a pointer to char * argument */
-#define _curl_is_string_info(info) \
- (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG)
-
-/* evaluates to true if info expects a pointer to long argument */
-#define _curl_is_long_info(info) \
- (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)
-
-/* evaluates to true if info expects a pointer to double argument */
-#define _curl_is_double_info(info) \
- (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)
-
-/* true if info expects a pointer to struct curl_slist * argument */
-#define _curl_is_slist_info(info) \
- (CURLINFO_SLIST < (info))
-
-
-/* typecheck helpers -- check whether given expression has requested type*/
-
-/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros,
- * otherwise define a new macro. Search for __builtin_types_compatible_p
- * in the GCC manual.
- * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is
- * the actual expression passed to the curl_easy_setopt macro. This
- * means that you can only apply the sizeof and __typeof__ operators, no
- * == or whatsoever.
- */
-
-/* XXX: should evaluate to true iff expr is a pointer */
-#define _curl_is_any_ptr(expr) \
- (sizeof(expr) == sizeof(void*))
-
-/* evaluates to true if expr is NULL */
-/* XXX: must not evaluate expr, so this check is not accurate */
-#define _curl_is_NULL(expr) \
- (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))
-
-/* evaluates to true if expr is type*, const type* or NULL */
-#define _curl_is_ptr(expr, type) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), type *) || \
- __builtin_types_compatible_p(__typeof__(expr), const type *))
-
-/* evaluates to true if expr is one of type[], type*, NULL or const type* */
-#define _curl_is_arr(expr, type) \
- (_curl_is_ptr((expr), type) || \
- __builtin_types_compatible_p(__typeof__(expr), type []))
-
-/* evaluates to true if expr is a string */
-#define _curl_is_string(expr) \
- (_curl_is_arr((expr), char) || \
- _curl_is_arr((expr), signed char) || \
- _curl_is_arr((expr), unsigned char))
-
-/* evaluates to true if expr is a long (no matter the signedness)
- * XXX: for now, int is also accepted (and therefore short and char, which
- * are promoted to int when passed to a variadic function) */
-#define _curl_is_long(expr) \
- (__builtin_types_compatible_p(__typeof__(expr), long) || \
- __builtin_types_compatible_p(__typeof__(expr), signed long) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned long) || \
- __builtin_types_compatible_p(__typeof__(expr), int) || \
- __builtin_types_compatible_p(__typeof__(expr), signed int) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned int) || \
- __builtin_types_compatible_p(__typeof__(expr), short) || \
- __builtin_types_compatible_p(__typeof__(expr), signed short) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned short) || \
- __builtin_types_compatible_p(__typeof__(expr), char) || \
- __builtin_types_compatible_p(__typeof__(expr), signed char) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned char))
-
-/* evaluates to true if expr is of type curl_off_t */
-#define _curl_is_off_t(expr) \
- (__builtin_types_compatible_p(__typeof__(expr), curl_off_t))
-
-/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */
-/* XXX: also check size of an char[] array? */
-#define _curl_is_error_buffer(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), char *) || \
- __builtin_types_compatible_p(__typeof__(expr), char[]))
-
-/* evaluates to true if expr is of type (const) void* or (const) FILE* */
-#if 0
-#define _curl_is_cb_data(expr) \
- (_curl_is_ptr((expr), void) || \
- _curl_is_ptr((expr), FILE))
-#else /* be less strict */
-#define _curl_is_cb_data(expr) \
- _curl_is_any_ptr(expr)
-#endif
-
-/* evaluates to true if expr is of type FILE* */
-#define _curl_is_FILE(expr) \
- (__builtin_types_compatible_p(__typeof__(expr), FILE *))
-
-/* evaluates to true if expr can be passed as POST data (void* or char*) */
-#define _curl_is_postfields(expr) \
- (_curl_is_ptr((expr), void) || \
- _curl_is_arr((expr), char))
-
-/* FIXME: the whole callback checking is messy...
- * The idea is to tolerate char vs. void and const vs. not const
- * pointers in arguments at least
- */
-/* helper: __builtin_types_compatible_p distinguishes between functions and
- * function pointers, hide it */
-#define _curl_callback_compatible(func, type) \
- (__builtin_types_compatible_p(__typeof__(func), type) || \
- __builtin_types_compatible_p(__typeof__(func), type*))
-
-/* evaluates to true if expr is of type curl_read_callback or "similar" */
-#define _curl_is_read_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), __typeof__(fread)) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_read_callback) || \
- _curl_callback_compatible((expr), _curl_read_callback1) || \
- _curl_callback_compatible((expr), _curl_read_callback2) || \
- _curl_callback_compatible((expr), _curl_read_callback3) || \
- _curl_callback_compatible((expr), _curl_read_callback4) || \
- _curl_callback_compatible((expr), _curl_read_callback5) || \
- _curl_callback_compatible((expr), _curl_read_callback6))
-typedef size_t (_curl_read_callback1)(char *, size_t, size_t, void*);
-typedef size_t (_curl_read_callback2)(char *, size_t, size_t, const void*);
-typedef size_t (_curl_read_callback3)(char *, size_t, size_t, FILE*);
-typedef size_t (_curl_read_callback4)(void *, size_t, size_t, void*);
-typedef size_t (_curl_read_callback5)(void *, size_t, size_t, const void*);
-typedef size_t (_curl_read_callback6)(void *, size_t, size_t, FILE*);
-
-/* evaluates to true if expr is of type curl_write_callback or "similar" */
-#define _curl_is_write_cb(expr) \
- (_curl_is_read_cb(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), __typeof__(fwrite)) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_write_callback) || \
- _curl_callback_compatible((expr), _curl_write_callback1) || \
- _curl_callback_compatible((expr), _curl_write_callback2) || \
- _curl_callback_compatible((expr), _curl_write_callback3) || \
- _curl_callback_compatible((expr), _curl_write_callback4) || \
- _curl_callback_compatible((expr), _curl_write_callback5) || \
- _curl_callback_compatible((expr), _curl_write_callback6))
-typedef size_t (_curl_write_callback1)(const char *, size_t, size_t, void*);
-typedef size_t (_curl_write_callback2)(const char *, size_t, size_t,
- const void*);
-typedef size_t (_curl_write_callback3)(const char *, size_t, size_t, FILE*);
-typedef size_t (_curl_write_callback4)(const void *, size_t, size_t, void*);
-typedef size_t (_curl_write_callback5)(const void *, size_t, size_t,
- const void*);
-typedef size_t (_curl_write_callback6)(const void *, size_t, size_t, FILE*);
-
-/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */
-#define _curl_is_ioctl_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_ioctl_callback) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback1) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback2) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback3) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback4))
-typedef curlioerr (_curl_ioctl_callback1)(CURL *, int, void*);
-typedef curlioerr (_curl_ioctl_callback2)(CURL *, int, const void*);
-typedef curlioerr (_curl_ioctl_callback3)(CURL *, curliocmd, void*);
-typedef curlioerr (_curl_ioctl_callback4)(CURL *, curliocmd, const void*);
-
-/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */
-#define _curl_is_sockopt_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_sockopt_callback) || \
- _curl_callback_compatible((expr), _curl_sockopt_callback1) || \
- _curl_callback_compatible((expr), _curl_sockopt_callback2))
-typedef int (_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);
-typedef int (_curl_sockopt_callback2)(const void *, curl_socket_t,
- curlsocktype);
-
-/* evaluates to true if expr is of type curl_opensocket_callback or
- "similar" */
-#define _curl_is_opensocket_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_opensocket_callback) ||\
- _curl_callback_compatible((expr), _curl_opensocket_callback1) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback2) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback3) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback4))
-typedef curl_socket_t (_curl_opensocket_callback1)
- (void *, curlsocktype, struct curl_sockaddr *);
-typedef curl_socket_t (_curl_opensocket_callback2)
- (void *, curlsocktype, const struct curl_sockaddr *);
-typedef curl_socket_t (_curl_opensocket_callback3)
- (const void *, curlsocktype, struct curl_sockaddr *);
-typedef curl_socket_t (_curl_opensocket_callback4)
- (const void *, curlsocktype, const struct curl_sockaddr *);
-
-/* evaluates to true if expr is of type curl_progress_callback or "similar" */
-#define _curl_is_progress_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_progress_callback) || \
- _curl_callback_compatible((expr), _curl_progress_callback1) || \
- _curl_callback_compatible((expr), _curl_progress_callback2))
-typedef int (_curl_progress_callback1)(void *,
- double, double, double, double);
-typedef int (_curl_progress_callback2)(const void *,
- double, double, double, double);
-
-/* evaluates to true if expr is of type curl_debug_callback or "similar" */
-#define _curl_is_debug_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_debug_callback) || \
- _curl_callback_compatible((expr), _curl_debug_callback1) || \
- _curl_callback_compatible((expr), _curl_debug_callback2) || \
- _curl_callback_compatible((expr), _curl_debug_callback3) || \
- _curl_callback_compatible((expr), _curl_debug_callback4) || \
- _curl_callback_compatible((expr), _curl_debug_callback5) || \
- _curl_callback_compatible((expr), _curl_debug_callback6) || \
- _curl_callback_compatible((expr), _curl_debug_callback7) || \
- _curl_callback_compatible((expr), _curl_debug_callback8))
-typedef int (_curl_debug_callback1) (CURL *,
- curl_infotype, char *, size_t, void *);
-typedef int (_curl_debug_callback2) (CURL *,
- curl_infotype, char *, size_t, const void *);
-typedef int (_curl_debug_callback3) (CURL *,
- curl_infotype, const char *, size_t, void *);
-typedef int (_curl_debug_callback4) (CURL *,
- curl_infotype, const char *, size_t, const void *);
-typedef int (_curl_debug_callback5) (CURL *,
- curl_infotype, unsigned char *, size_t, void *);
-typedef int (_curl_debug_callback6) (CURL *,
- curl_infotype, unsigned char *, size_t, const void *);
-typedef int (_curl_debug_callback7) (CURL *,
- curl_infotype, const unsigned char *, size_t, void *);
-typedef int (_curl_debug_callback8) (CURL *,
- curl_infotype, const unsigned char *, size_t, const void *);
-
-/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */
-/* this is getting even messier... */
-#define _curl_is_ssl_ctx_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_ssl_ctx_callback) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback8))
-typedef CURLcode (_curl_ssl_ctx_callback1)(CURL *, void *, void *);
-typedef CURLcode (_curl_ssl_ctx_callback2)(CURL *, void *, const void *);
-typedef CURLcode (_curl_ssl_ctx_callback3)(CURL *, const void *, void *);
-typedef CURLcode (_curl_ssl_ctx_callback4)(CURL *, const void *, const void *);
-#ifdef HEADER_SSL_H
-/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX
- * this will of course break if we're included before OpenSSL headers...
- */
-typedef CURLcode (_curl_ssl_ctx_callback5)(CURL *, SSL_CTX, void *);
-typedef CURLcode (_curl_ssl_ctx_callback6)(CURL *, SSL_CTX, const void *);
-typedef CURLcode (_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX, void *);
-typedef CURLcode (_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX,
- const void *);
-#else
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;
-#endif
-
-/* evaluates to true if expr is of type curl_conv_callback or "similar" */
-#define _curl_is_conv_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_conv_callback) || \
- _curl_callback_compatible((expr), _curl_conv_callback1) || \
- _curl_callback_compatible((expr), _curl_conv_callback2) || \
- _curl_callback_compatible((expr), _curl_conv_callback3) || \
- _curl_callback_compatible((expr), _curl_conv_callback4))
-typedef CURLcode (*_curl_conv_callback1)(char *, size_t length);
-typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);
-typedef CURLcode (*_curl_conv_callback3)(void *, size_t length);
-typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);
-
-/* evaluates to true if expr is of type curl_seek_callback or "similar" */
-#define _curl_is_seek_cb(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), curl_seek_callback) || \
- _curl_callback_compatible((expr), _curl_seek_callback1) || \
- _curl_callback_compatible((expr), _curl_seek_callback2))
-typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);
-typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);
-
-
-#endif /* __CURL_TYPECHECK_GCC_H */
diff --git a/dependencies2013/win32/include/freetype/config/ftconfig.h b/dependencies2013/win32/include/freetype/config/ftconfig.h
deleted file mode 100644
index 157a704f..00000000
--- a/dependencies2013/win32/include/freetype/config/ftconfig.h
+++ /dev/null
@@ -1,473 +0,0 @@
-/***************************************************************************/
-/* */
-/* ftconfig.h */
-/* */
-/* ANSI-specific configuration file (specification only). */
-/* */
-/* Copyright 1996-2016 by */
-/* David Turner, Robert Wilhelm, and Werner Lemberg. */
-/* */
-/* This file is part of the FreeType project, and may only be used, */
-/* modified, and distributed under the terms of the FreeType project */
-/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
-/* this file you indicate that you have read the license and */
-/* understand and accept it fully. */
-/* */
-/***************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* This header file contains a number of macro definitions that are used */
- /* by the rest of the engine. Most of the macros here are automatically */
- /* determined at compile time, and you should not need to change it to */
- /* port FreeType, except to compile the library with a non-ANSI */
- /* compiler. */
- /* */
- /* Note however that if some specific modifications are needed, we */
- /* advise you to place a modified copy in your build directory. */
- /* */
- /* The build directory is usually `builds/', and contains */
- /* system-specific files that are always included first when building */
- /* the library. */
- /* */
- /* This ANSI version should stay in `include/config/'. */
- /* */
- /*************************************************************************/
-
-#ifndef FTCONFIG_H_
-#define FTCONFIG_H_
-
-#include
-#include FT_CONFIG_OPTIONS_H
-#include FT_CONFIG_STANDARD_LIBRARY_H
-
-
-FT_BEGIN_HEADER
-
-
- /*************************************************************************/
- /* */
- /* PLATFORM-SPECIFIC CONFIGURATION MACROS */
- /* */
- /* These macros can be toggled to suit a specific system. The current */
- /* ones are defaults used to compile FreeType in an ANSI C environment */
- /* (16bit compilers are also supported). Copy this file to your own */
- /* `builds/' directory, and edit it to port the engine. */
- /* */
- /*************************************************************************/
-
-
- /* There are systems (like the Texas Instruments 'C54x) where a `char' */
- /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */
- /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */
- /* is probably unexpected. */
- /* */
- /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */
- /* `char' type. */
-
-#ifndef FT_CHAR_BIT
-#define FT_CHAR_BIT CHAR_BIT
-#endif
-
-
- /* The size of an `int' type. */
-#if FT_UINT_MAX == 0xFFFFUL
-#define FT_SIZEOF_INT (16 / FT_CHAR_BIT)
-#elif FT_UINT_MAX == 0xFFFFFFFFUL
-#define FT_SIZEOF_INT (32 / FT_CHAR_BIT)
-#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
-#define FT_SIZEOF_INT (64 / FT_CHAR_BIT)
-#else
-#error "Unsupported size of `int' type!"
-#endif
-
- /* The size of a `long' type. A five-byte `long' (as used e.g. on the */
- /* DM642) is recognized but avoided. */
-#if FT_ULONG_MAX == 0xFFFFFFFFUL
-#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
-#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
-#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
-#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
-#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT)
-#else
-#error "Unsupported size of `long' type!"
-#endif
-
-
- /* FT_UNUSED is a macro used to indicate that a given parameter is not */
- /* used -- this is only used to get rid of unpleasant compiler warnings */
-#ifndef FT_UNUSED
-#define FT_UNUSED( arg ) ( (arg) = (arg) )
-#endif
-
-
- /*************************************************************************/
- /* */
- /* AUTOMATIC CONFIGURATION MACROS */
- /* */
- /* These macros are computed from the ones defined above. Don't touch */
- /* their definition, unless you know precisely what you are doing. No */
- /* porter should need to mess with them. */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* Mac support */
- /* */
- /* This is the only necessary change, so it is defined here instead */
- /* providing a new configuration file. */
- /* */
-#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
- /* no Carbon frameworks for 64bit 10.4.x */
- /* AvailabilityMacros.h is available since Mac OS X 10.2, */
- /* so guess the system version by maximum errno before inclusion */
-#include
-#ifdef ECANCELED /* defined since 10.2 */
-#include "AvailabilityMacros.h"
-#endif
-#if defined( __LP64__ ) && \
- ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
-#undef FT_MACINTOSH
-#endif
-
-#elif defined( __SC__ ) || defined( __MRC__ )
- /* Classic MacOS compilers */
-#include "ConditionalMacros.h"
-#if TARGET_OS_MAC
-#define FT_MACINTOSH 1
-#endif
-
-#endif
-
-
- /*************************************************************************/
- /* */
- /* */
- /* basic_types */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Int16 */
- /* */
- /* */
- /* A typedef for a 16bit signed integer type. */
- /* */
- typedef signed short FT_Int16;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_UInt16 */
- /* */
- /* */
- /* A typedef for a 16bit unsigned integer type. */
- /* */
- typedef unsigned short FT_UInt16;
-
- /* */
-
-
- /* this #if 0 ... #endif clause is for documentation purposes */
-#if 0
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Int32 */
- /* */
- /* */
- /* A typedef for a 32bit signed integer type. The size depends on */
- /* the configuration. */
- /* */
- typedef signed XXX FT_Int32;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_UInt32 */
- /* */
- /* A typedef for a 32bit unsigned integer type. The size depends on */
- /* the configuration. */
- /* */
- typedef unsigned XXX FT_UInt32;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Int64 */
- /* */
- /* A typedef for a 64bit signed integer type. The size depends on */
- /* the configuration. Only defined if there is real 64bit support; */
- /* otherwise, it gets emulated with a structure (if necessary). */
- /* */
- typedef signed XXX FT_Int64;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_UInt64 */
- /* */
- /* A typedef for a 64bit unsigned integer type. The size depends on */
- /* the configuration. Only defined if there is real 64bit support; */
- /* otherwise, it gets emulated with a structure (if necessary). */
- /* */
- typedef unsigned XXX FT_UInt64;
-
- /* */
-
-#endif
-
-#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT)
-
- typedef signed int FT_Int32;
- typedef unsigned int FT_UInt32;
-
-#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT)
-
- typedef signed long FT_Int32;
- typedef unsigned long FT_UInt32;
-
-#else
-#error "no 32bit type found -- please check your configuration files"
-#endif
-
-
- /* look up an integer type that is at least 32 bits */
-#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT)
-
- typedef int FT_Fast;
- typedef unsigned int FT_UFast;
-
-#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT)
-
- typedef long FT_Fast;
- typedef unsigned long FT_UFast;
-
-#endif
-
-
- /* determine whether we have a 64-bit int type for platforms without */
- /* Autoconf */
-#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT)
-
- /* FT_LONG64 must be defined if a 64-bit type is available */
-#define FT_LONG64
-#define FT_INT64 long
-#define FT_UINT64 unsigned long
-
- /*************************************************************************/
- /* */
- /* A 64-bit data type may create compilation problems if you compile */
- /* in strict ANSI mode. To avoid them, we disable other 64-bit data */
- /* types if __STDC__ is defined. You can however ignore this rule */
- /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
- /* */
-#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
-
-#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
-
-#define FT_LONG64
-#define FT_INT64 long long int
-#define FT_UINT64 unsigned long long int
-
-#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
-
- /* this compiler provides the __int64 type */
-#define FT_LONG64
-#define FT_INT64 __int64
-#define FT_UINT64 unsigned __int64
-
-#elif defined( __BORLANDC__ ) /* Borland C++ */
-
- /* XXXX: We should probably check the value of __BORLANDC__ in order */
- /* to test the compiler version. */
-
- /* this compiler provides the __int64 type */
-#define FT_LONG64
-#define FT_INT64 __int64
-#define FT_UINT64 unsigned __int64
-
-#elif defined( __WATCOMC__ ) /* Watcom C++ */
-
- /* Watcom doesn't provide 64-bit data types */
-
-#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
-
-#define FT_LONG64
-#define FT_INT64 long long int
-#define FT_UINT64 unsigned long long int
-
-#elif defined( __GNUC__ )
-
- /* GCC provides the `long long' type */
-#define FT_LONG64
-#define FT_INT64 long long int
-#define FT_UINT64 unsigned long long int
-
-#endif /* __STDC_VERSION__ >= 199901L */
-
-#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
-
-#ifdef FT_LONG64
- typedef FT_INT64 FT_Int64;
- typedef FT_UINT64 FT_UInt64;
-#endif
-
-
- /*************************************************************************/
- /* */
- /* miscellaneous */
- /* */
- /*************************************************************************/
-
-
-#define FT_BEGIN_STMNT do {
-#define FT_END_STMNT } while ( 0 )
-#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
-
-
- /* typeof condition taken from gnulib's `intprops.h' header file */
-#if ( __GNUC__ >= 2 || \
- defined( __IBM__TYPEOF__ ) || \
- ( __SUNPRO_C >= 0x5110 && !__STDC__ ) )
-#define FT_TYPEOF( type ) (__typeof__ (type))
-#else
-#define FT_TYPEOF( type ) /* empty */
-#endif
-
-
-#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-
-#define FT_LOCAL( x ) static x
-#define FT_LOCAL_DEF( x ) static x
-
-#else
-
-#ifdef __cplusplus
-#define FT_LOCAL( x ) extern "C" x
-#define FT_LOCAL_DEF( x ) extern "C" x
-#else
-#define FT_LOCAL( x ) extern x
-#define FT_LOCAL_DEF( x ) x
-#endif
-
-#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
-
-#define FT_LOCAL_ARRAY( x ) extern const x
-#define FT_LOCAL_ARRAY_DEF( x ) const x
-
-
-#ifndef FT_BASE
-
-#ifdef __cplusplus
-#define FT_BASE( x ) extern "C" x
-#else
-#define FT_BASE( x ) extern x
-#endif
-
-#endif /* !FT_BASE */
-
-
-#ifndef FT_BASE_DEF
-
-#ifdef __cplusplus
-#define FT_BASE_DEF( x ) x
-#else
-#define FT_BASE_DEF( x ) x
-#endif
-
-#endif /* !FT_BASE_DEF */
-
-
-#ifndef FT_EXPORT
-
-#ifdef __cplusplus
-#define FT_EXPORT( x ) extern "C" x
-#else
-#define FT_EXPORT( x ) extern x
-#endif
-
-#endif /* !FT_EXPORT */
-
-
-#ifndef FT_EXPORT_DEF
-
-#ifdef __cplusplus
-#define FT_EXPORT_DEF( x ) extern "C" x
-#else
-#define FT_EXPORT_DEF( x ) extern x
-#endif
-
-#endif /* !FT_EXPORT_DEF */
-
-
-#ifndef FT_EXPORT_VAR
-
-#ifdef __cplusplus
-#define FT_EXPORT_VAR( x ) extern "C" x
-#else
-#define FT_EXPORT_VAR( x ) extern x
-#endif
-
-#endif /* !FT_EXPORT_VAR */
-
- /* The following macros are needed to compile the library with a */
- /* C++ compiler and with 16bit compilers. */
- /* */
-
- /* This is special. Within C++, you must specify `extern "C"' for */
- /* functions which are used via function pointers, and you also */
- /* must do that for structures which contain function pointers to */
- /* assure C linkage -- it's not possible to have (local) anonymous */
- /* functions which are accessed by (global) function pointers. */
- /* */
- /* */
- /* FT_CALLBACK_DEF is used to _define_ a callback function. */
- /* */
- /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */
- /* contains pointers to callback functions. */
- /* */
- /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */
- /* that contains pointers to callback functions. */
- /* */
- /* */
- /* Some 16bit compilers have to redefine these macros to insert */
- /* the infamous `_cdecl' or `__fastcall' declarations. */
- /* */
-#ifndef FT_CALLBACK_DEF
-#ifdef __cplusplus
-#define FT_CALLBACK_DEF( x ) extern "C" x
-#else
-#define FT_CALLBACK_DEF( x ) static x
-#endif
-#endif /* FT_CALLBACK_DEF */
-
-#ifndef FT_CALLBACK_TABLE
-#ifdef __cplusplus
-#define FT_CALLBACK_TABLE extern "C"
-#define FT_CALLBACK_TABLE_DEF extern "C"
-#else
-#define FT_CALLBACK_TABLE extern
-#define FT_CALLBACK_TABLE_DEF /* nothing */
-#endif
-#endif /* FT_CALLBACK_TABLE */
-
-
-FT_END_HEADER
-
-
-#endif /* FTCONFIG_H_ */
-
-
-/* END */
diff --git a/dependencies2013/win32/include/freetype/config/ftheader.h b/dependencies2013/win32/include/freetype/config/ftheader.h
deleted file mode 100644
index 68e14834..00000000
--- a/dependencies2013/win32/include/freetype/config/ftheader.h
+++ /dev/null
@@ -1,833 +0,0 @@
-/***************************************************************************/
-/* */
-/* ftheader.h */
-/* */
-/* Build macros of the FreeType 2 library. */
-/* */
-/* Copyright 1996-2016 by */
-/* David Turner, Robert Wilhelm, and Werner Lemberg. */
-/* */
-/* This file is part of the FreeType project, and may only be used, */
-/* modified, and distributed under the terms of the FreeType project */
-/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
-/* this file you indicate that you have read the license and */
-/* understand and accept it fully. */
-/* */
-/***************************************************************************/
-
-#ifndef FTHEADER_H_
-#define FTHEADER_H_
-
-
- /*@***********************************************************************/
- /* */
- /* */
- /* FT_BEGIN_HEADER */
- /* */
- /* */
- /* This macro is used in association with @FT_END_HEADER in header */
- /* files to ensure that the declarations within are properly */
- /* encapsulated in an `extern "C" { .. }' block when included from a */
- /* C++ compiler. */
- /* */
-#ifdef __cplusplus
-#define FT_BEGIN_HEADER extern "C" {
-#else
-#define FT_BEGIN_HEADER /* nothing */
-#endif
-
-
- /*@***********************************************************************/
- /* */
- /* */
- /* FT_END_HEADER */
- /* */
- /* */
- /* This macro is used in association with @FT_BEGIN_HEADER in header */
- /* files to ensure that the declarations within are properly */
- /* encapsulated in an `extern "C" { .. }' block when included from a */
- /* C++ compiler. */
- /* */
-#ifdef __cplusplus
-#define FT_END_HEADER }
-#else
-#define FT_END_HEADER /* nothing */
-#endif
-
-
- /*************************************************************************/
- /* */
- /* Aliases for the FreeType 2 public and configuration files. */
- /* */
- /*************************************************************************/
-
- /*************************************************************************/
- /* */
- /* */
- /* header_file_macros */
- /* */
- /* */
- /* Header File Macros */
- /* */
- /* */
- /* Macro definitions used to #include specific header files. */
- /* */
- /* */
- /* The following macros are defined to the name of specific */
- /* FreeType~2 header files. They can be used directly in #include */
- /* statements as in: */
- /* */
- /* { */
- /* #include FT_FREETYPE_H */
- /* #include FT_MULTIPLE_MASTERS_H */
- /* #include FT_GLYPH_H */
- /* } */
- /* */
- /* There are several reasons why we are now using macros to name */
- /* public header files. The first one is that such macros are not */
- /* limited to the infamous 8.3~naming rule required by DOS (and */
- /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */
- /* */
- /* The second reason is that it allows for more flexibility in the */
- /* way FreeType~2 is installed on a given system. */
- /* */
- /*************************************************************************/
-
-
- /* configuration files */
-
- /*************************************************************************
- *
- * @macro:
- * FT_CONFIG_CONFIG_H
- *
- * @description:
- * A macro used in #include statements to name the file containing
- * FreeType~2 configuration data.
- *
- */
-#ifndef FT_CONFIG_CONFIG_H
-#define FT_CONFIG_CONFIG_H
-#endif
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CONFIG_STANDARD_LIBRARY_H
- *
- * @description:
- * A macro used in #include statements to name the file containing
- * FreeType~2 interface to the standard C library functions.
- *
- */
-#ifndef FT_CONFIG_STANDARD_LIBRARY_H
-#define FT_CONFIG_STANDARD_LIBRARY_H
-#endif
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CONFIG_OPTIONS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing
- * FreeType~2 project-specific configuration options.
- *
- */
-#ifndef FT_CONFIG_OPTIONS_H
-#define FT_CONFIG_OPTIONS_H
-#endif
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CONFIG_MODULES_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * list of FreeType~2 modules that are statically linked to new library
- * instances in @FT_Init_FreeType.
- *
- */
-#ifndef FT_CONFIG_MODULES_H
-#define FT_CONFIG_MODULES_H
-#endif
-
- /* */
-
- /* public headers */
-
- /*************************************************************************
- *
- * @macro:
- * FT_FREETYPE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * base FreeType~2 API.
- *
- */
-#define FT_FREETYPE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_ERRORS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * list of FreeType~2 error codes (and messages).
- *
- * It is included by @FT_FREETYPE_H.
- *
- */
-#define FT_ERRORS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_MODULE_ERRORS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * list of FreeType~2 module error offsets (and messages).
- *
- */
-#define FT_MODULE_ERRORS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_SYSTEM_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 interface to low-level operations (i.e., memory management
- * and stream i/o).
- *
- * It is included by @FT_FREETYPE_H.
- *
- */
-#define FT_SYSTEM_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_IMAGE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing type
- * definitions related to glyph images (i.e., bitmaps, outlines,
- * scan-converter parameters).
- *
- * It is included by @FT_FREETYPE_H.
- *
- */
-#define FT_IMAGE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_TYPES_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * basic data types defined by FreeType~2.
- *
- * It is included by @FT_FREETYPE_H.
- *
- */
-#define FT_TYPES_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_LIST_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * list management API of FreeType~2.
- *
- * (Most applications will never need to include this file.)
- *
- */
-#define FT_LIST_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_OUTLINE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * scalable outline management API of FreeType~2.
- *
- */
-#define FT_OUTLINE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_SIZES_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * API which manages multiple @FT_Size objects per face.
- *
- */
-#define FT_SIZES_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_MODULE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * module management API of FreeType~2.
- *
- */
-#define FT_MODULE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_RENDER_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * renderer module management API of FreeType~2.
- *
- */
-#define FT_RENDER_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_AUTOHINTER_H
- *
- * @description:
- * A macro used in #include statements to name the file containing
- * structures and macros related to the auto-hinting module.
- *
- */
-#define FT_AUTOHINTER_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CFF_DRIVER_H
- *
- * @description:
- * A macro used in #include statements to name the file containing
- * structures and macros related to the CFF driver module.
- *
- */
-#define FT_CFF_DRIVER_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_TRUETYPE_DRIVER_H
- *
- * @description:
- * A macro used in #include statements to name the file containing
- * structures and macros related to the TrueType driver module.
- *
- */
-#define FT_TRUETYPE_DRIVER_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_TYPE1_TABLES_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * types and API specific to the Type~1 format.
- *
- */
-#define FT_TYPE1_TABLES_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_TRUETYPE_IDS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * enumeration values which identify name strings, languages, encodings,
- * etc. This file really contains a _large_ set of constant macro
- * definitions, taken from the TrueType and OpenType specifications.
- *
- */
-#define FT_TRUETYPE_IDS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_TRUETYPE_TABLES_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * types and API specific to the TrueType (as well as OpenType) format.
- *
- */
-#define FT_TRUETYPE_TABLES_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_TRUETYPE_TAGS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * definitions of TrueType four-byte `tags' which identify blocks in
- * SFNT-based font formats (i.e., TrueType and OpenType).
- *
- */
-#define FT_TRUETYPE_TAGS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_BDF_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which accesses BDF-specific strings from a
- * face.
- *
- */
-#define FT_BDF_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CID_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which access CID font information from a
- * face.
- *
- */
-#define FT_CID_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_GZIP_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which supports gzip-compressed files.
- *
- */
-#define FT_GZIP_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_LZW_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which supports LZW-compressed files.
- *
- */
-#define FT_LZW_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_BZIP2_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which supports bzip2-compressed files.
- *
- */
-#define FT_BZIP2_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_WINFONTS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which supports Windows FNT files.
- *
- */
-#define FT_WINFONTS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_GLYPH_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * API of the optional glyph management component.
- *
- */
-#define FT_GLYPH_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_BITMAP_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * API of the optional bitmap conversion component.
- *
- */
-#define FT_BITMAP_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_BBOX_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * API of the optional exact bounding box computation routines.
- *
- */
-#define FT_BBOX_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CACHE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * API of the optional FreeType~2 cache sub-system.
- *
- */
-#define FT_CACHE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CACHE_IMAGE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * `glyph image' API of the FreeType~2 cache sub-system.
- *
- * It is used to define a cache for @FT_Glyph elements. You can also
- * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
- * store small glyph bitmaps, as it will use less memory.
- *
- * This macro is deprecated. Simply include @FT_CACHE_H to have all
- * glyph image-related cache declarations.
- *
- */
-#define FT_CACHE_IMAGE_H FT_CACHE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CACHE_SMALL_BITMAPS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * `small bitmaps' API of the FreeType~2 cache sub-system.
- *
- * It is used to define a cache for small glyph bitmaps in a relatively
- * memory-efficient way. You can also use the API defined in
- * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,
- * including scalable outlines.
- *
- * This macro is deprecated. Simply include @FT_CACHE_H to have all
- * small bitmaps-related cache declarations.
- *
- */
-#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_CACHE_CHARMAP_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * `charmap' API of the FreeType~2 cache sub-system.
- *
- * This macro is deprecated. Simply include @FT_CACHE_H to have all
- * charmap-based cache declarations.
- *
- */
-#define FT_CACHE_CHARMAP_H FT_CACHE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_MAC_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * Macintosh-specific FreeType~2 API. The latter is used to access
- * fonts embedded in resource forks.
- *
- * This header file must be explicitly included by client applications
- * compiled on the Mac (note that the base API still works though).
- *
- */
-#define FT_MAC_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_MULTIPLE_MASTERS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * optional multiple-masters management API of FreeType~2.
- *
- */
-#define FT_MULTIPLE_MASTERS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_SFNT_NAMES_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * optional FreeType~2 API which accesses embedded `name' strings in
- * SFNT-based font formats (i.e., TrueType and OpenType).
- *
- */
-#define FT_SFNT_NAMES_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_OPENTYPE_VALIDATE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * optional FreeType~2 API which validates OpenType tables (BASE, GDEF,
- * GPOS, GSUB, JSTF).
- *
- */
-#define FT_OPENTYPE_VALIDATE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_GX_VALIDATE_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,
- * mort, morx, bsln, just, kern, opbd, trak, prop).
- *
- */
-#define FT_GX_VALIDATE_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_PFR_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which accesses PFR-specific data.
- *
- */
-#define FT_PFR_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_STROKER_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which provides functions to stroke outline paths.
- */
-#define FT_STROKER_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_SYNTHESIS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which performs artificial obliquing and emboldening.
- */
-#define FT_SYNTHESIS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_FONT_FORMATS_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which provides functions specific to font formats.
- */
-#define FT_FONT_FORMATS_H
-
- /* deprecated */
-#define FT_XFREE86_H FT_FONT_FORMATS_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_TRIGONOMETRY_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which performs trigonometric computations (e.g.,
- * cosines and arc tangents).
- */
-#define FT_TRIGONOMETRY_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_LCD_FILTER_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which performs color filtering for subpixel rendering.
- */
-#define FT_LCD_FILTER_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_UNPATENTED_HINTING_H
- *
- * @description:
- * Deprecated.
- */
-#define FT_UNPATENTED_HINTING_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_INCREMENTAL_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which performs incremental glyph loading.
- */
-#define FT_INCREMENTAL_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_GASP_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which returns entries from the TrueType GASP table.
- */
-#define FT_GASP_H
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_ADVANCES_H
- *
- * @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which returns individual and ranged glyph advances.
- */
-#define FT_ADVANCES_H
-
-
- /* */
-
-#define FT_ERROR_DEFINITIONS_H
-
-
- /* The internals of the cache sub-system are no longer exposed. We */
- /* default to FT_CACHE_H at the moment just in case, but we know of */
- /* no rogue client that uses them. */
- /* */
-#define FT_CACHE_MANAGER_H
-#define FT_CACHE_INTERNAL_MRU_H
-#define FT_CACHE_INTERNAL_MANAGER_H
-#define FT_CACHE_INTERNAL_CACHE_H
-#define FT_CACHE_INTERNAL_GLYPH_H
-#define FT_CACHE_INTERNAL_IMAGE_H
-#define FT_CACHE_INTERNAL_SBITS_H
-
-
-#define FT_INCREMENTAL_H
-
-#define FT_TRUETYPE_UNPATENTED_H
-
-
- /*
- * Include internal headers definitions from
- * only when building the library.
- */
-#ifdef FT2_BUILD_LIBRARY
-#define FT_INTERNAL_INTERNAL_H
-#include FT_INTERNAL_INTERNAL_H
-#endif /* FT2_BUILD_LIBRARY */
-
-
-#endif /* FTHEADER_H_ */
-
-
-/* END */
diff --git a/dependencies2013/win32/include/freetype/config/ftmodule.h b/dependencies2013/win32/include/freetype/config/ftmodule.h
deleted file mode 100644
index 76d271a7..00000000
--- a/dependencies2013/win32/include/freetype/config/ftmodule.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * This file registers the FreeType modules compiled into the library.
- *
- * If you use GNU make, this file IS NOT USED! Instead, it is created in
- * the objects directory (normally `/objs/') based on information
- * from `/modules.cfg'.
- *
- * Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile
- * FreeType without GNU make.
- *
- */
-
-FT_USE_MODULE( FT_Module_Class, autofit_module_class )
-FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class )
-FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class )
-FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class )
-FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class )
-FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class )
-FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
-FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
-FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
-FT_USE_MODULE( FT_Module_Class, psaux_module_class )
-FT_USE_MODULE( FT_Module_Class, psnames_module_class )
-FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
-FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
-FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
-FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
-FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class )
-FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class )
-FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
-
-/* EOF */
diff --git a/dependencies2013/win32/include/freetype/config/ftoption.h b/dependencies2013/win32/include/freetype/config/ftoption.h
deleted file mode 100644
index a8097feb..00000000
--- a/dependencies2013/win32/include/freetype/config/ftoption.h
+++ /dev/null
@@ -1,851 +0,0 @@
-/***************************************************************************/
-/* */
-/* ftoption.h */
-/* */
-/* User-selectable configuration macros (specification only). */
-/* */
-/* Copyright 1996-2016 by */
-/* David Turner, Robert Wilhelm, and Werner Lemberg. */
-/* */
-/* This file is part of the FreeType project, and may only be used, */
-/* modified, and distributed under the terms of the FreeType project */
-/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
-/* this file you indicate that you have read the license and */
-/* understand and accept it fully. */
-/* */
-/***************************************************************************/
-
-
-#ifndef FTOPTION_H_
-#define FTOPTION_H_
-
-
-#include
-
-
-FT_BEGIN_HEADER
-
- /*************************************************************************/
- /* */
- /* USER-SELECTABLE CONFIGURATION MACROS */
- /* */
- /* This file contains the default configuration macro definitions for */
- /* a standard build of the FreeType library. There are three ways to */
- /* use this file to build project-specific versions of the library: */
- /* */
- /* - You can modify this file by hand, but this is not recommended in */
- /* cases where you would like to build several versions of the */
- /* library from a single source directory. */
- /* */
- /* - You can put a copy of this file in your build directory, more */
- /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */
- /* is the name of a directory that is included _before_ the FreeType */
- /* include path during compilation. */
- /* */
- /* The default FreeType Makefiles and Jamfiles use the build */
- /* directory `builds/' by default, but you can easily change */
- /* that for your own projects. */
- /* */
- /* - Copy the file to `$BUILD/ft2build.h' and modify it */
- /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */
- /* locate this file during the build. For example, */
- /* */
- /* #define FT_CONFIG_OPTIONS_H */
- /* #include */
- /* */
- /* will use `$BUILD/myftoptions.h' instead of this file for macro */
- /* definitions. */
- /* */
- /* Note also that you can similarly pre-define the macro */
- /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */
- /* that are statically linked to the library at compile time. By */
- /* default, this file is . */
- /* */
- /* We highly recommend using the third method whenever possible. */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /*************************************************************************/
- /**** ****/
- /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/
- /**** ****/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* Uncomment the line below if you want to activate sub-pixel rendering */
- /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */
- /* */
- /* Note that this feature is covered by several Microsoft patents */
- /* and should not be activated in any default build of the library. */
- /* */
- /* This macro has no impact on the FreeType API, only on its */
- /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
- /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */
- /* the original size in case this macro isn't defined; however, each */
- /* triplet of subpixels has R=G=B. */
- /* */
- /* This is done to allow FreeType clients to run unmodified, forcing */
- /* them to display normal gray-level anti-aliased glyphs. */
- /* */
-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
-
-
- /*************************************************************************/
- /* */
- /* Many compilers provide a non-ANSI 64-bit data type that can be used */
- /* by FreeType to speed up some computations. However, this will create */
- /* some problems when compiling the library in strict ANSI mode. */
- /* */
- /* For this reason, the use of 64-bit integers is normally disabled when */
- /* the __STDC__ macro is defined. You can however disable this by */
- /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */
- /* */
- /* For most compilers, this will only create compilation warnings when */
- /* building the library. */
- /* */
- /* ObNote: The compiler-specific 64-bit integers are detected in the */
- /* file `ftconfig.h' either statically or through the */
- /* `configure' script on supported platforms. */
- /* */
-#undef FT_CONFIG_OPTION_FORCE_INT64
-
-
- /*************************************************************************/
- /* */
- /* If this macro is defined, do not try to use an assembler version of */
- /* performance-critical functions (e.g. FT_MulFix). You should only do */
- /* that to verify that the assembler function works properly, or to */
- /* execute benchmark tests of the various implementations. */
-/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
-
-
- /*************************************************************************/
- /* */
- /* If this macro is defined, try to use an inlined assembler version of */
- /* the `FT_MulFix' function, which is a `hotspot' when loading and */
- /* hinting glyphs, and which should be executed as fast as possible. */
- /* */
- /* Note that if your compiler or CPU is not supported, this will default */
- /* to the standard and portable implementation found in `ftcalc.c'. */
- /* */
-#define FT_CONFIG_OPTION_INLINE_MULFIX
-
-
- /*************************************************************************/
- /* */
- /* LZW-compressed file support. */
- /* */
- /* FreeType now handles font files that have been compressed with the */
- /* `compress' program. This is mostly used to parse many of the PCF */
- /* files that come with various X11 distributions. The implementation */
- /* uses NetBSD's `zopen' to partially uncompress the file on the fly */
- /* (see src/lzw/ftgzip.c). */
- /* */
- /* Define this macro if you want to enable this `feature'. */
- /* */
-#define FT_CONFIG_OPTION_USE_LZW
-
-
- /*************************************************************************/
- /* */
- /* Gzip-compressed file support. */
- /* */
- /* FreeType now handles font files that have been compressed with the */
- /* `gzip' program. This is mostly used to parse many of the PCF files */
- /* that come with XFree86. The implementation uses `zlib' to */
- /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */
- /* */
- /* Define this macro if you want to enable this `feature'. See also */
- /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */
- /* */
-#define FT_CONFIG_OPTION_USE_ZLIB
-
-
- /*************************************************************************/
- /* */
- /* ZLib library selection */
- /* */
- /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */
- /* It allows FreeType's `ftgzip' component to link to the system's */
- /* installation of the ZLib library. This is useful on systems like */
- /* Unix or VMS where it generally is already available. */
- /* */
- /* If you let it undefined, the component will use its own copy */
- /* of the zlib sources instead. These have been modified to be */
- /* included directly within the component and *not* export external */
- /* function names. This allows you to link any program with FreeType */
- /* _and_ ZLib without linking conflicts. */
- /* */
- /* Do not #undef this macro here since the build system might define */
- /* it for certain configurations only. */
- /* */
-/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
-
-
- /*************************************************************************/
- /* */
- /* Bzip2-compressed file support. */
- /* */
- /* FreeType now handles font files that have been compressed with the */
- /* `bzip2' program. This is mostly used to parse many of the PCF */
- /* files that come with XFree86. The implementation uses `libbz2' to */
- /* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */
- /* Contrary to gzip, bzip2 currently is not included and need to use */
- /* the system available bzip2 implementation. */
- /* */
- /* Define this macro if you want to enable this `feature'. */
- /* */
-/* #define FT_CONFIG_OPTION_USE_BZIP2 */
-
-
- /*************************************************************************/
- /* */
- /* Define to disable the use of file stream functions and types, FILE, */
- /* fopen() etc. Enables the use of smaller system libraries on embedded */
- /* systems that have multiple system libraries, some with or without */
- /* file stream support, in the cases where file stream support is not */
- /* necessary such as memory loading of font files. */
- /* */
-/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
-
-
- /*************************************************************************/
- /* */
- /* PNG bitmap support. */
- /* */
- /* FreeType now handles loading color bitmap glyphs in the PNG format. */
- /* This requires help from the external libpng library. Uncompressed */
- /* color bitmaps do not need any external libraries and will be */
- /* supported regardless of this configuration. */
- /* */
- /* Define this macro if you want to enable this `feature'. */
- /* */
-/* #define FT_CONFIG_OPTION_USE_PNG */
-
-
- /*************************************************************************/
- /* */
- /* HarfBuzz support. */
- /* */
- /* FreeType uses the HarfBuzz library to improve auto-hinting of */
- /* OpenType fonts. If available, many glyphs not directly addressable */
- /* by a font's character map will be hinted also. */
- /* */
- /* Define this macro if you want to enable this `feature'. */
- /* */
-/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
-
-
- /*************************************************************************/
- /* */
- /* DLL export compilation */
- /* */
- /* When compiling FreeType as a DLL, some systems/compilers need a */
- /* special keyword in front OR after the return type of function */
- /* declarations. */
- /* */
- /* Two macros are used within the FreeType source code to define */
- /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
- /* */
- /* FT_EXPORT( return_type ) */
- /* */
- /* is used in a function declaration, as in */
- /* */
- /* FT_EXPORT( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ); */
- /* */
- /* */
- /* FT_EXPORT_DEF( return_type ) */
- /* */
- /* is used in a function definition, as in */
- /* */
- /* FT_EXPORT_DEF( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ) */
- /* { */
- /* ... some code ... */
- /* return FT_Err_Ok; */
- /* } */
- /* */
- /* You can provide your own implementation of FT_EXPORT and */
- /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */
- /* will be later automatically defined as `extern return_type' to */
- /* allow normal compilation. */
- /* */
- /* Do not #undef these macros here since the build system might define */
- /* them for certain configurations only. */
- /* */
-/* #define FT_EXPORT(x) extern x */
-/* #define FT_EXPORT_DEF(x) x */
-
-
- /*************************************************************************/
- /* */
- /* Glyph Postscript Names handling */
- /* */
- /* By default, FreeType 2 is compiled with the `psnames' module. This */
- /* module is in charge of converting a glyph name string into a */
- /* Unicode value, or return a Macintosh standard glyph name for the */
- /* use with the TrueType `post' table. */
- /* */
- /* Undefine this macro if you do not want `psnames' compiled in your */
- /* build of FreeType. This has the following effects: */
- /* */
- /* - The TrueType driver will provide its own set of glyph names, */
- /* if you build it to support postscript names in the TrueType */
- /* `post' table. */
- /* */
- /* - The Type 1 driver will not be able to synthesize a Unicode */
- /* charmap out of the glyphs found in the fonts. */
- /* */
- /* You would normally undefine this configuration macro when building */
- /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */
- /* */
-#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
-
-
- /*************************************************************************/
- /* */
- /* Postscript Names to Unicode Values support */
- /* */
- /* By default, FreeType 2 is built with the `PSNames' module compiled */
- /* in. Among other things, the module is used to convert a glyph name */
- /* into a Unicode value. This is especially useful in order to */
- /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */
- /* through a big table named the `Adobe Glyph List' (AGL). */
- /* */
- /* Undefine this macro if you do not want the Adobe Glyph List */
- /* compiled in your `PSNames' module. The Type 1 driver will not be */
- /* able to synthesize a Unicode charmap out of the glyphs found in the */
- /* fonts. */
- /* */
-#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
-
- /*************************************************************************/
- /* */
- /* Support for Mac fonts */
- /* */
- /* Define this macro if you want support for outline fonts in Mac */
- /* format (mac dfont, mac resource, macbinary containing a mac */
- /* resource) on non-Mac platforms. */
- /* */
- /* Note that the `FOND' resource isn't checked. */
- /* */
-#define FT_CONFIG_OPTION_MAC_FONTS
-
-
- /*************************************************************************/
- /* */
- /* Guessing methods to access embedded resource forks */
- /* */
- /* Enable extra Mac fonts support on non-Mac platforms (e.g. */
- /* GNU/Linux). */
- /* */
- /* Resource forks which include fonts data are stored sometimes in */
- /* locations which users or developers don't expected. In some cases, */
- /* resource forks start with some offset from the head of a file. In */
- /* other cases, the actual resource fork is stored in file different */
- /* from what the user specifies. If this option is activated, */
- /* FreeType tries to guess whether such offsets or different file */
- /* names must be used. */
- /* */
- /* Note that normal, direct access of resource forks is controlled via */
- /* the FT_CONFIG_OPTION_MAC_FONTS option. */
- /* */
-#ifdef FT_CONFIG_OPTION_MAC_FONTS
-#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-#endif
-
-
- /*************************************************************************/
- /* */
- /* Allow the use of FT_Incremental_Interface to load typefaces that */
- /* contain no glyph data, but supply it via a callback function. */
- /* This is required by clients supporting document formats which */
- /* supply font data incrementally as the document is parsed, such */
- /* as the Ghostscript interpreter for the PostScript language. */
- /* */
-#define FT_CONFIG_OPTION_INCREMENTAL
-
-
- /*************************************************************************/
- /* */
- /* The size in bytes of the render pool used by the scan-line converter */
- /* to do all of its work. */
- /* */
-#define FT_RENDER_POOL_SIZE 16384L
-
-
- /*************************************************************************/
- /* */
- /* FT_MAX_MODULES */
- /* */
- /* The maximum number of modules that can be registered in a single */
- /* FreeType library object. 32 is the default. */
- /* */
-#define FT_MAX_MODULES 32
-
-
- /*************************************************************************/
- /* */
- /* Debug level */
- /* */
- /* FreeType can be compiled in debug or trace mode. In debug mode, */
- /* errors are reported through the `ftdebug' component. In trace */
- /* mode, additional messages are sent to the standard output during */
- /* execution. */
- /* */
- /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */
- /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */
- /* */
- /* Don't define any of these macros to compile in `release' mode! */
- /* */
- /* Do not #undef these macros here since the build system might define */
- /* them for certain configurations only. */
- /* */
-/* #define FT_DEBUG_LEVEL_ERROR */
-/* #define FT_DEBUG_LEVEL_TRACE */
-
-
- /*************************************************************************/
- /* */
- /* Autofitter debugging */
- /* */
- /* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */
- /* control the autofitter behaviour for debugging purposes with global */
- /* boolean variables (consequently, you should *never* enable this */
- /* while compiling in `release' mode): */
- /* */
- /* _af_debug_disable_horz_hints */
- /* _af_debug_disable_vert_hints */
- /* _af_debug_disable_blue_hints */
- /* */
- /* Additionally, the following functions provide dumps of various */
- /* internal autofit structures to stdout (using `printf'): */
- /* */
- /* af_glyph_hints_dump_points */
- /* af_glyph_hints_dump_segments */
- /* af_glyph_hints_dump_edges */
- /* af_glyph_hints_get_num_segments */
- /* af_glyph_hints_get_segment_offset */
- /* */
- /* As an argument, they use another global variable: */
- /* */
- /* _af_debug_hints */
- /* */
- /* Please have a look at the `ftgrid' demo program to see how those */
- /* variables and macros should be used. */
- /* */
- /* Do not #undef these macros here since the build system might define */
- /* them for certain configurations only. */
- /* */
-/* #define FT_DEBUG_AUTOFIT */
-
-
- /*************************************************************************/
- /* */
- /* Memory Debugging */
- /* */
- /* FreeType now comes with an integrated memory debugger that is */
- /* capable of detecting simple errors like memory leaks or double */
- /* deletes. To compile it within your build of the library, you */
- /* should define FT_DEBUG_MEMORY here. */
- /* */
- /* Note that the memory debugger is only activated at runtime when */
- /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */
- /* */
- /* Do not #undef this macro here since the build system might define */
- /* it for certain configurations only. */
- /* */
-/* #define FT_DEBUG_MEMORY */
-
-
- /*************************************************************************/
- /* */
- /* Module errors */
- /* */
- /* If this macro is set (which is _not_ the default), the higher byte */
- /* of an error code gives the module in which the error has occurred, */
- /* while the lower byte is the real error code. */
- /* */
- /* Setting this macro makes sense for debugging purposes only, since */
- /* it would break source compatibility of certain programs that use */
- /* FreeType 2. */
- /* */
- /* More details can be found in the files ftmoderr.h and fterrors.h. */
- /* */
-#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
-
-
- /*************************************************************************/
- /* */
- /* Position Independent Code */
- /* */
- /* If this macro is set (which is _not_ the default), FreeType2 will */
- /* avoid creating constants that require address fixups. Instead the */
- /* constants will be moved into a struct and additional intialization */
- /* code will be used. */
- /* */
- /* Setting this macro is needed for systems that prohibit address */
- /* fixups, such as BREW. */
- /* */
-/* #define FT_CONFIG_OPTION_PIC */
-
-
- /*************************************************************************/
- /*************************************************************************/
- /**** ****/
- /**** S F N T D R I V E R C O N F I G U R A T I O N ****/
- /**** ****/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */
- /* embedded bitmaps in all formats using the SFNT module (namely */
- /* TrueType & OpenType). */
- /* */
-#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
-
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */
- /* load and enumerate the glyph Postscript names in a TrueType or */
- /* OpenType file. */
- /* */
- /* Note that when you do not compile the `PSNames' module by undefining */
- /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */
- /* contain additional code used to read the PS Names table from a font. */
- /* */
- /* (By default, the module uses `PSNames' to extract glyph names.) */
- /* */
-#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
-
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */
- /* access the internal name table in a SFNT-based format like TrueType */
- /* or OpenType. The name table contains various strings used to */
- /* describe the font, like family name, copyright, version, etc. It */
- /* does not contain any glyph name though. */
- /* */
- /* Accessing SFNT names is done through the functions declared in */
- /* `ftsnames.h'. */
- /* */
-#define TT_CONFIG_OPTION_SFNT_NAMES
-
-
- /*************************************************************************/
- /* */
- /* TrueType CMap support */
- /* */
- /* Here you can fine-tune which TrueType CMap table format shall be */
- /* supported. */
-#define TT_CONFIG_CMAP_FORMAT_0
-#define TT_CONFIG_CMAP_FORMAT_2
-#define TT_CONFIG_CMAP_FORMAT_4
-#define TT_CONFIG_CMAP_FORMAT_6
-#define TT_CONFIG_CMAP_FORMAT_8
-#define TT_CONFIG_CMAP_FORMAT_10
-#define TT_CONFIG_CMAP_FORMAT_12
-#define TT_CONFIG_CMAP_FORMAT_13
-#define TT_CONFIG_CMAP_FORMAT_14
-
-
- /*************************************************************************/
- /*************************************************************************/
- /**** ****/
- /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/
- /**** ****/
- /*************************************************************************/
- /*************************************************************************/
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
- /* a bytecode interpreter in the TrueType driver. */
- /* */
- /* By undefining this, you will only compile the code necessary to load */
- /* TrueType glyphs without hinting. */
- /* */
- /* Do not #undef this macro here, since the build system might */
- /* define it for certain configurations only. */
- /* */
-#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
-
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */
- /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */
- /* replaces the native TrueType hinting mechanism when anything but */
- /* FT_RENDER_MODE_MONO is requested. */
- /* */
- /* Enabling this causes the TrueType driver to ignore instructions under */
- /* certain conditions. This is done in accordance with the guide here, */
- /* with some minor differences: */
- /* */
- /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
- /* */
- /* By undefining this, you only compile the code necessary to hint */
- /* TrueType glyphs with native TT hinting. */
- /* */
- /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */
- /* defined. */
- /* */
-/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */
-
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */
- /* TrueType glyph loader to use Apple's definition of how to handle */
- /* component offsets in composite glyphs. */
- /* */
- /* Apple and MS disagree on the default behavior of component offsets */
- /* in composites. Apple says that they should be scaled by the scaling */
- /* factors in the transformation matrix (roughly, it's more complex) */
- /* while MS says they should not. OpenType defines two bits in the */
- /* composite flags array which can be used to disambiguate, but old */
- /* fonts will not have them. */
- /* */
- /* http://www.microsoft.com/typography/otspec/glyf.htm */
- /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */
- /* */
-#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
-
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */
- /* support for Apple's distortable font technology (fvar, gvar, cvar, */
- /* and avar tables). This has many similarities to Type 1 Multiple */
- /* Masters support. */
- /* */
-#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
-
-
- /*************************************************************************/
- /* */
- /* Define TT_CONFIG_OPTION_BDF if you want to include support for */
- /* an embedded `BDF ' table within SFNT-based bitmap formats. */
- /* */
-#define TT_CONFIG_OPTION_BDF
-
-
- /*************************************************************************/
- /* */
- /* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum */
- /* number of bytecode instructions executed for a single run of the */
- /* bytecode interpreter, needed to prevent infinite loops. You don't */
- /* want to change this except for very special situations (e.g., making */
- /* a library fuzzer spend less time to handle broken fonts). */
- /* */
- /* It is not expected that this value is ever modified by a configuring */
- /* script; instead, it gets surrounded with #ifndef ... #endif so that */
- /* the value can be set as a preprocessor option on the compiler's */
- /* command line. */
- /* */
-#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
-#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L
-#endif
-
-
- /*************************************************************************/
- /*************************************************************************/
- /**** ****/
- /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/
- /**** ****/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */
- /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */
- /* required. */
- /* */
-#define T1_MAX_DICT_DEPTH 5
-
-
- /*************************************************************************/
- /* */
- /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
- /* calls during glyph loading. */
- /* */
-#define T1_MAX_SUBRS_CALLS 16
-
-
- /*************************************************************************/
- /* */
- /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */
- /* minimum of 16 is required. */
- /* */
- /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
- /* */
-#define T1_MAX_CHARSTRINGS_OPERANDS 256
-
-
- /*************************************************************************/
- /* */
- /* Define this configuration macro if you want to prevent the */
- /* compilation of `t1afm', which is in charge of reading Type 1 AFM */
- /* files into an existing face. Note that if set, the T1 driver will be */
- /* unable to produce kerning distances. */
- /* */
-#undef T1_CONFIG_OPTION_NO_AFM
-
-
- /*************************************************************************/
- /* */
- /* Define this configuration macro if you want to prevent the */
- /* compilation of the Multiple Masters font support in the Type 1 */
- /* driver. */
- /* */
-#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
-
-
- /*************************************************************************/
- /*************************************************************************/
- /**** ****/
- /**** C F F D R I V E R C O N F I G U R A T I O N ****/
- /**** ****/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is */
- /* possible to set up the default values of the four control points that */
- /* define the stem darkening behaviour of the (new) CFF engine. For */
- /* more details please read the documentation of the */
- /* `darkening-parameters' property of the cff driver module (file */
- /* `ftcffdrv.h'), which allows the control at run-time. */
- /* */
- /* Do *not* undefine these macros! */
- /* */
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400
-
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275
-
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275
-
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333
-#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0
-
-
- /*************************************************************************/
- /* */
- /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */
- /* engine gets compiled into FreeType. If defined, it is possible to */
- /* switch between the two engines using the `hinting-engine' property of */
- /* the cff driver module. */
- /* */
-/* #define CFF_CONFIG_OPTION_OLD_ENGINE */
-
-
- /*************************************************************************/
- /*************************************************************************/
- /**** ****/
- /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/
- /**** ****/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */
- /* support. */
- /* */
-#define AF_CONFIG_OPTION_CJK
-
- /*************************************************************************/
- /* */
- /* Compile autofit module with Indic script support. */
- /* */
-#define AF_CONFIG_OPTION_INDIC
-
- /*************************************************************************/
- /* */
- /* Compile autofit module with warp hinting. The idea of the warping */
- /* code is to slightly scale and shift a glyph within a single dimension */
- /* so that as much of its segments are aligned (more or less) on the */
- /* grid. To find out the optimal scaling and shifting value, various */
- /* parameter combinations are tried and scored. */
- /* */
- /* This experimental option is active only if the rendering mode is */
- /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */
- /* `warping' property of the auto-hinter (see file `ftautoh.h' for more */
- /* information; by default it is switched off). */
- /* */
-#define AF_CONFIG_OPTION_USE_WARPER
-
- /* */
-
-
- /*
- * This macro is obsolete. Support has been removed in FreeType
- * version 2.5.
- */
-/* #define FT_CONFIG_OPTION_OLD_INTERNALS */
-
-
- /*
- * This macro is defined if native TrueType hinting is requested by the
- * definitions above.
- */
-#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
-#define TT_USE_BYTECODE_INTERPRETER
-#endif
-
-
- /*
- * Check CFF darkening parameters. The checks are the same as in function
- * `cff_property_set' in file `cffdrivr.c'.
- */
-#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \
- \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \
- \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \
- \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \
- CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500
-#error "Invalid CFF darkening parameters!"
-#endif
-
-FT_END_HEADER
-
-
-#endif /* FTOPTION_H_ */
-
-
-/* END */
diff --git a/dependencies2013/win32/include/freetype/config/ftstdlib.h b/dependencies2013/win32/include/freetype/config/ftstdlib.h
deleted file mode 100644
index 9daea56f..00000000
--- a/dependencies2013/win32/include/freetype/config/ftstdlib.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/***************************************************************************/
-/* */
-/* ftstdlib.h */
-/* */
-/* ANSI-specific library and header configuration file (specification */
-/* only). */
-/* */
-/* Copyright 2002-2016 by */
-/* David Turner, Robert Wilhelm, and Werner Lemberg. */
-/* */
-/* This file is part of the FreeType project, and may only be used, */
-/* modified, and distributed under the terms of the FreeType project */
-/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
-/* this file you indicate that you have read the license and */
-/* understand and accept it fully. */
-/* */
-/***************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* This file is used to group all #includes to the ANSI C library that */
- /* FreeType normally requires. It also defines macros to rename the */
- /* standard functions within the FreeType source code. */
- /* */
- /* Load a file which defines FTSTDLIB_H_ before this one to override it. */
- /* */
- /*************************************************************************/
-
-
-#ifndef FTSTDLIB_H_
-#define FTSTDLIB_H_
-
-
-#include
-
-#define ft_ptrdiff_t ptrdiff_t
-
-
- /**********************************************************************/
- /* */
- /* integer limits */
- /* */
- /* UINT_MAX and ULONG_MAX are used to automatically compute the size */
- /* of `int' and `long' in bytes at compile-time. So far, this works */
- /* for all platforms the library has been tested on. */
- /* */
- /* Note that on the extremely rare platforms that do not provide */
- /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */
- /* old Crays where `int' is 36 bits), we do not make any guarantee */
- /* about the correct behaviour of FT2 with all fonts. */
- /* */
- /* In these case, `ftconfig.h' will refuse to compile anyway with a */
- /* message like `couldn't find 32-bit type' or something similar. */
- /* */
- /**********************************************************************/
-
-
-#include
-
-#define FT_CHAR_BIT CHAR_BIT
-#define FT_USHORT_MAX USHRT_MAX
-#define FT_INT_MAX INT_MAX
-#define FT_INT_MIN INT_MIN
-#define FT_UINT_MAX UINT_MAX
-#define FT_LONG_MAX LONG_MAX
-#define FT_ULONG_MAX ULONG_MAX
-
-
- /**********************************************************************/
- /* */
- /* character and string processing */
- /* */
- /**********************************************************************/
-
-
-#include
-
-#define ft_memchr memchr
-#define ft_memcmp memcmp
-#define ft_memcpy memcpy
-#define ft_memmove memmove
-#define ft_memset memset
-#define ft_strcat strcat
-#define ft_strcmp strcmp
-#define ft_strcpy strcpy
-#define ft_strlen strlen
-#define ft_strncmp strncmp
-#define ft_strncpy strncpy
-#define ft_strrchr strrchr
-#define ft_strstr strstr
-
-
- /**********************************************************************/
- /* */
- /* file handling */
- /* */
- /**********************************************************************/
-
-
-#include
-
-#define FT_FILE FILE
-#define ft_fclose fclose
-#define ft_fopen fopen
-#define ft_fread fread
-#define ft_fseek fseek
-#define ft_ftell ftell
-#define ft_sprintf sprintf
-
-
- /**********************************************************************/
- /* */
- /* sorting */
- /* */
- /**********************************************************************/
-
-
-#include
-
-#define ft_qsort qsort
-
-
- /**********************************************************************/
- /* */
- /* memory allocation */
- /* */
- /**********************************************************************/
-
-
-#define ft_scalloc calloc
-#define ft_sfree free
-#define ft_smalloc malloc
-#define ft_srealloc realloc
-
-
- /**********************************************************************/
- /* */
- /* miscellaneous */
- /* */
- /**********************************************************************/
-
-
-#define ft_atol atol
-
-
- /**********************************************************************/
- /* */
- /* execution control */
- /* */
- /**********************************************************************/
-
-
-#include
-
-#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */
- /* jmp_buf is defined as a macro */
- /* on certain platforms */
-
-#define ft_longjmp longjmp
-#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */
-
-
- /* the following is only used for debugging purposes, i.e., if */
- /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */
-
-#include
-
-
-#endif /* FTSTDLIB_H_ */
-
-
-/* END */
diff --git a/dependencies2013/win32/include/freetype/freetype.h b/dependencies2013/win32/include/freetype/freetype.h
deleted file mode 100644
index 250f405f..00000000
--- a/dependencies2013/win32/include/freetype/freetype.h
+++ /dev/null
@@ -1,4272 +0,0 @@
-/***************************************************************************/
-/* */
-/* freetype.h */
-/* */
-/* FreeType high-level API and common types (specification only). */
-/* */
-/* Copyright 1996-2016 by */
-/* David Turner, Robert Wilhelm, and Werner Lemberg. */
-/* */
-/* This file is part of the FreeType project, and may only be used, */
-/* modified, and distributed under the terms of the FreeType project */
-/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
-/* this file you indicate that you have read the license and */
-/* understand and accept it fully. */
-/* */
-/***************************************************************************/
-
-
-#ifndef FREETYPE_H_
-#define FREETYPE_H_
-
-
-#ifndef FT_FREETYPE_H
-#error "`ft2build.h' hasn't been included yet!"
-#error "Please always use macros to include FreeType header files."
-#error "Example:"
-#error " #include "
-#error " #include FT_FREETYPE_H"
-#endif
-
-
-#include
-#include FT_CONFIG_CONFIG_H
-#include FT_TYPES_H
-#include FT_ERRORS_H
-
-
-FT_BEGIN_HEADER
-
-
-
- /*************************************************************************/
- /* */
- /* */
- /* header_inclusion */
- /* */
- /* */
- /* FreeType's header inclusion scheme */
- /* */
- /* */
- /* How client applications should include FreeType header files. */
- /* */
- /* */
- /* To be as flexible as possible (and for historical reasons), */
- /* FreeType uses a very special inclusion scheme to load header */
- /* files, for example */
- /* */
- /* { */
- /* #include */
- /* */
- /* #include FT_FREETYPE_H */
- /* #include FT_OUTLINE_H */
- /* } */
- /* */
- /* A compiler and its preprocessor only needs an include path to find */
- /* the file `ft2build.h'; the exact locations and names of the other */
- /* FreeType header files are hidden by preprocessor macro names, */
- /* loaded by `ft2build.h'. The API documentation always gives the */
- /* header macro name needed for a particular function. */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* */
- /* user_allocation */
- /* */
- /* */
- /* User allocation */
- /* */
- /* */
- /* How client applications should allocate FreeType data structures. */
- /* */
- /* */
- /* FreeType assumes that structures allocated by the user and passed */
- /* as arguments are zeroed out except for the actual data. In other */
- /* words, it is recommended to use `calloc' (or variants of it) */
- /* instead of `malloc' for allocation. */
- /* */
- /*************************************************************************/
-
-
-
- /*************************************************************************/
- /*************************************************************************/
- /* */
- /* B A S I C T Y P E S */
- /* */
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* */
- /* base_interface */
- /* */
- /* */
- /* Base Interface */
- /* */
- /* */
- /* The FreeType~2 base font interface. */
- /* */
- /* */
- /* This section describes the most important public high-level API */
- /* functions of FreeType~2. */
- /* */
- /* */
- /* FT_Library */
- /* FT_Face */
- /* FT_Size */
- /* FT_GlyphSlot */
- /* FT_CharMap */
- /* FT_Encoding */
- /* FT_ENC_TAG */
- /* */
- /* FT_FaceRec */
- /* */
- /* FT_FACE_FLAG_SCALABLE */
- /* FT_FACE_FLAG_FIXED_SIZES */
- /* FT_FACE_FLAG_FIXED_WIDTH */
- /* FT_FACE_FLAG_HORIZONTAL */
- /* FT_FACE_FLAG_VERTICAL */
- /* FT_FACE_FLAG_COLOR */
- /* FT_FACE_FLAG_SFNT */
- /* FT_FACE_FLAG_CID_KEYED */
- /* FT_FACE_FLAG_TRICKY */
- /* FT_FACE_FLAG_KERNING */
- /* FT_FACE_FLAG_MULTIPLE_MASTERS */
- /* FT_FACE_FLAG_GLYPH_NAMES */
- /* FT_FACE_FLAG_EXTERNAL_STREAM */
- /* FT_FACE_FLAG_HINTER */
- /* */
- /* FT_HAS_HORIZONTAL */
- /* FT_HAS_VERTICAL */
- /* FT_HAS_KERNING */
- /* FT_HAS_FIXED_SIZES */
- /* FT_HAS_GLYPH_NAMES */
- /* FT_HAS_MULTIPLE_MASTERS */
- /* FT_HAS_COLOR */
- /* */
- /* FT_IS_SFNT */
- /* FT_IS_SCALABLE */
- /* FT_IS_FIXED_WIDTH */
- /* FT_IS_CID_KEYED */
- /* FT_IS_TRICKY */
- /* */
- /* FT_STYLE_FLAG_BOLD */
- /* FT_STYLE_FLAG_ITALIC */
- /* */
- /* FT_SizeRec */
- /* FT_Size_Metrics */
- /* */
- /* FT_GlyphSlotRec */
- /* FT_Glyph_Metrics */
- /* FT_SubGlyph */
- /* */
- /* FT_Bitmap_Size */
- /* */
- /* FT_Init_FreeType */
- /* FT_Done_FreeType */
- /* */
- /* FT_New_Face */
- /* FT_Done_Face */
- /* FT_Reference_Face */
- /* FT_New_Memory_Face */
- /* FT_Open_Face */
- /* FT_Open_Args */
- /* FT_Parameter */
- /* FT_Attach_File */
- /* FT_Attach_Stream */
- /* */
- /* FT_Set_Char_Size */
- /* FT_Set_Pixel_Sizes */
- /* FT_Request_Size */
- /* FT_Select_Size */
- /* FT_Size_Request_Type */
- /* FT_Size_RequestRec */
- /* FT_Size_Request */
- /* FT_Set_Transform */
- /* FT_Load_Glyph */
- /* FT_Get_Char_Index */
- /* FT_Get_First_Char */
- /* FT_Get_Next_Char */
- /* FT_Get_Name_Index */
- /* FT_Load_Char */
- /* */
- /* FT_OPEN_MEMORY */
- /* FT_OPEN_STREAM */
- /* FT_OPEN_PATHNAME */
- /* FT_OPEN_DRIVER */
- /* FT_OPEN_PARAMS */
- /* */
- /* FT_LOAD_DEFAULT */
- /* FT_LOAD_RENDER */
- /* FT_LOAD_MONOCHROME */
- /* FT_LOAD_LINEAR_DESIGN */
- /* FT_LOAD_NO_SCALE */
- /* FT_LOAD_NO_HINTING */
- /* FT_LOAD_NO_BITMAP */
- /* FT_LOAD_NO_AUTOHINT */
- /* FT_LOAD_COLOR */
- /* */
- /* FT_LOAD_VERTICAL_LAYOUT */
- /* FT_LOAD_IGNORE_TRANSFORM */
- /* FT_LOAD_FORCE_AUTOHINT */
- /* FT_LOAD_NO_RECURSE */
- /* FT_LOAD_PEDANTIC */
- /* */
- /* FT_LOAD_TARGET_NORMAL */
- /* FT_LOAD_TARGET_LIGHT */
- /* FT_LOAD_TARGET_MONO */
- /* FT_LOAD_TARGET_LCD */
- /* FT_LOAD_TARGET_LCD_V */
- /* */
- /* FT_LOAD_TARGET_MODE */
- /* */
- /* FT_Render_Glyph */
- /* FT_Render_Mode */
- /* FT_Get_Kerning */
- /* FT_Kerning_Mode */
- /* FT_Get_Track_Kerning */
- /* FT_Get_Glyph_Name */
- /* FT_Get_Postscript_Name */
- /* */
- /* FT_CharMapRec */
- /* FT_Select_Charmap */
- /* FT_Set_Charmap */
- /* FT_Get_Charmap_Index */
- /* */
- /* FT_Get_FSType_Flags */
- /* FT_Get_SubGlyph_Info */
- /* */
- /* FT_Face_Internal */
- /* FT_Size_Internal */
- /* FT_Slot_Internal */
- /* */
- /* FT_FACE_FLAG_XXX */
- /* FT_STYLE_FLAG_XXX */
- /* FT_OPEN_XXX */
- /* FT_LOAD_XXX */
- /* FT_LOAD_TARGET_XXX */
- /* FT_SUBGLYPH_FLAG_XXX */
- /* FT_FSTYPE_XXX */
- /* */
- /* FT_HAS_FAST_GLYPHS */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Glyph_Metrics */
- /* */
- /* */
- /* A structure used to model the metrics of a single glyph. The */
- /* values are expressed in 26.6 fractional pixel format; if the flag */
- /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */
- /* are expressed in font units instead. */
- /* */
- /* */
- /* width :: */
- /* The glyph's width. */
- /* */
- /* height :: */
- /* The glyph's height. */
- /* */
- /* horiBearingX :: */
- /* Left side bearing for horizontal layout. */
- /* */
- /* horiBearingY :: */
- /* Top side bearing for horizontal layout. */
- /* */
- /* horiAdvance :: */
- /* Advance width for horizontal layout. */
- /* */
- /* vertBearingX :: */
- /* Left side bearing for vertical layout. */
- /* */
- /* vertBearingY :: */
- /* Top side bearing for vertical layout. Larger positive values */
- /* mean further below the vertical glyph origin. */
- /* */
- /* vertAdvance :: */
- /* Advance height for vertical layout. Positive values mean the */
- /* glyph has a positive advance downward. */
- /* */
- /* */
- /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */
- /* dimensions of the hinted glyph (in case hinting is applicable). */
- /* */
- /* Stroking a glyph with an outside border does not increase */
- /* `horiAdvance' or `vertAdvance'; you have to manually adjust these */
- /* values to account for the added width and height. */
- /* */
- typedef struct FT_Glyph_Metrics_
- {
- FT_Pos width;
- FT_Pos height;
-
- FT_Pos horiBearingX;
- FT_Pos horiBearingY;
- FT_Pos horiAdvance;
-
- FT_Pos vertBearingX;
- FT_Pos vertBearingY;
- FT_Pos vertAdvance;
-
- } FT_Glyph_Metrics;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Bitmap_Size */
- /* */
- /* */
- /* This structure models the metrics of a bitmap strike (i.e., a set */
- /* of glyphs for a given point size and resolution) in a bitmap font. */
- /* It is used for the `available_sizes' field of @FT_Face. */
- /* */
- /* */
- /* height :: The vertical distance, in pixels, between two */
- /* consecutive baselines. It is always positive. */
- /* */
- /* width :: The average width, in pixels, of all glyphs in the */
- /* strike. */
- /* */
- /* size :: The nominal size of the strike in 26.6 fractional */
- /* points. This field is not very useful. */
- /* */
- /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */
- /* pixels. */
- /* */
- /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */
- /* pixels. */
- /* */
- /* */
- /* Windows FNT: */
- /* The nominal size given in a FNT font is not reliable. Thus when */
- /* the driver finds it incorrect, it sets `size' to some calculated */
- /* values and sets `x_ppem' and `y_ppem' to the pixel width and */
- /* height given in the font, respectively. */
- /* */
- /* TrueType embedded bitmaps: */
- /* `size', `width', and `height' values are not contained in the */
- /* bitmap strike itself. They are computed from the global font */
- /* parameters. */
- /* */
- typedef struct FT_Bitmap_Size_
- {
- FT_Short height;
- FT_Short width;
-
- FT_Pos size;
-
- FT_Pos x_ppem;
- FT_Pos y_ppem;
-
- } FT_Bitmap_Size;
-
-
- /*************************************************************************/
- /*************************************************************************/
- /* */
- /* O B J E C T C L A S S E S */
- /* */
- /*************************************************************************/
- /*************************************************************************/
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Library */
- /* */
- /* */
- /* A handle to a FreeType library instance. Each `library' is */
- /* completely independent from the others; it is the `root' of a set */
- /* of objects like fonts, faces, sizes, etc. */
- /* */
- /* It also embeds a memory manager (see @FT_Memory), as well as a */
- /* scan-line converter object (see @FT_Raster). */
- /* */
- /* In multi-threaded applications it is easiest to use one */
- /* `FT_Library' object per thread. In case this is too cumbersome, */
- /* a single `FT_Library' object across threads is possible also */
- /* (since FreeType version 2.5.6), as long as a mutex lock is used */
- /* around @FT_New_Face and @FT_Done_Face. */
- /* */
- /* */
- /* Library objects are normally created by @FT_Init_FreeType, and */
- /* destroyed with @FT_Done_FreeType. If you need reference-counting */
- /* (cf. @FT_Reference_Library), use @FT_New_Library and */
- /* @FT_Done_Library. */
- /* */
- typedef struct FT_LibraryRec_ *FT_Library;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* module_management */
- /* */
- /*************************************************************************/
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Module */
- /* */
- /* */
- /* A handle to a given FreeType module object. Each module can be a */
- /* font driver, a renderer, or anything else that provides services */
- /* to the formers. */
- /* */
- typedef struct FT_ModuleRec_* FT_Module;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Driver */
- /* */
- /* */
- /* A handle to a given FreeType font driver object. Each font driver */
- /* is a special module capable of creating faces from font files. */
- /* */
- typedef struct FT_DriverRec_* FT_Driver;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Renderer */
- /* */
- /* */
- /* A handle to a given FreeType renderer. A renderer is a special */
- /* module in charge of converting a glyph image to a bitmap, when */
- /* necessary. Each renderer supports a given glyph image format, and */
- /* one or more target surface depths. */
- /* */
- typedef struct FT_RendererRec_* FT_Renderer;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* base_interface */
- /* */
- /*************************************************************************/
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Face */
- /* */
- /* */
- /* A handle to a given typographic face object. A face object models */
- /* a given typeface, in a given style. */
- /* */
- /* */
- /* Each face object also owns a single @FT_GlyphSlot object, as well */
- /* as one or more @FT_Size objects. */
- /* */
- /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */
- /* a given filepathname or a custom input stream. */
- /* */
- /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */
- /* */
- /* An `FT_Face' object can only be safely used from one thread at a */
- /* time. Similarly, creation and destruction of `FT_Face' with the */
- /* same @FT_Library object can only be done from one thread at a */
- /* time. On the other hand, functions like @FT_Load_Glyph and its */
- /* siblings are thread-safe and do not need the lock to be held as */
- /* long as the same `FT_Face' object is not used from multiple */
- /* threads at the same time. */
- /* */
- /* */
- /* See @FT_FaceRec for the publicly accessible fields of a given face */
- /* object. */
- /* */
- typedef struct FT_FaceRec_* FT_Face;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Size */
- /* */
- /* */
- /* A handle to an object used to model a face scaled to a given */
- /* character size. */
- /* */
- /* */
- /* Each @FT_Face has an _active_ @FT_Size object that is used by */
- /* functions like @FT_Load_Glyph to determine the scaling */
- /* transformation that in turn is used to load and hint glyphs and */
- /* metrics. */
- /* */
- /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */
- /* @FT_Request_Size or even @FT_Select_Size to change the content */
- /* (i.e., the scaling values) of the active @FT_Size. */
- /* */
- /* You can use @FT_New_Size to create additional size objects for a */
- /* given @FT_Face, but they won't be used by other functions until */
- /* you activate it through @FT_Activate_Size. Only one size can be */
- /* activated at any given time per face. */
- /* */
- /* */
- /* See @FT_SizeRec for the publicly accessible fields of a given size */
- /* object. */
- /* */
- typedef struct FT_SizeRec_* FT_Size;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_GlyphSlot */
- /* */
- /* */
- /* A handle to a given `glyph slot'. A slot is a container where it */
- /* is possible to load any of the glyphs contained in its parent */
- /* face. */
- /* */
- /* In other words, each time you call @FT_Load_Glyph or */
- /* @FT_Load_Char, the slot's content is erased by the new glyph data, */
- /* i.e., the glyph's metrics, its image (bitmap or outline), and */
- /* other control information. */
- /* */
- /* */
- /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */
- /* */
- typedef struct FT_GlyphSlotRec_* FT_GlyphSlot;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_CharMap */
- /* */
- /* */
- /* A handle to a given character map. A charmap is used to translate */
- /* character codes in a given encoding into glyph indexes for its */
- /* parent's face. Some font formats may provide several charmaps per */
- /* font. */
- /* */
- /* Each face object owns zero or more charmaps, but only one of them */
- /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */
- /* */
- /* The list of available charmaps in a face is available through the */
- /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */
- /* */
- /* The currently active charmap is available as `face->charmap'. */
- /* You should call @FT_Set_Charmap to change it. */
- /* */
- /* */
- /* When a new face is created (either through @FT_New_Face or */
- /* @FT_Open_Face), the library looks for a Unicode charmap within */
- /* the list and automatically activates it. */
- /* */
- /* */
- /* See @FT_CharMapRec for the publicly accessible fields of a given */
- /* character map. */
- /* */
- typedef struct FT_CharMapRec_* FT_CharMap;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_ENC_TAG */
- /* */
- /* */
- /* This macro converts four-letter tags into an unsigned long. It is */
- /* used to define `encoding' identifiers (see @FT_Encoding). */
- /* */
- /* */
- /* Since many 16-bit compilers don't like 32-bit enumerations, you */
- /* should redefine this macro in case of problems to something like */
- /* this: */
- /* */
- /* { */
- /* #define FT_ENC_TAG( value, a, b, c, d ) value */
- /* } */
- /* */
- /* to get a simple enumeration without assigning special numbers. */
- /* */
-
-#ifndef FT_ENC_TAG
-#define FT_ENC_TAG( value, a, b, c, d ) \
- value = ( ( (FT_UInt32)(a) << 24 ) | \
- ( (FT_UInt32)(b) << 16 ) | \
- ( (FT_UInt32)(c) << 8 ) | \
- (FT_UInt32)(d) )
-
-#endif /* FT_ENC_TAG */
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Encoding */
- /* */
- /* */
- /* An enumeration used to specify character sets supported by */
- /* charmaps. Used in the @FT_Select_Charmap API function. */
- /* */
- /* */
- /* Despite the name, this enumeration lists specific character */
- /* repertories (i.e., charsets), and not text encoding methods (e.g., */
- /* UTF-8, UTF-16, etc.). */
- /* */
- /* Other encodings might be defined in the future. */
- /* */
- /* */
- /* FT_ENCODING_NONE :: */
- /* The encoding value~0 is reserved. */
- /* */
- /* FT_ENCODING_UNICODE :: */
- /* Corresponds to the Unicode character set. This value covers */
- /* all versions of the Unicode repertoire, including ASCII and */
- /* Latin-1. Most fonts include a Unicode charmap, but not all */
- /* of them. */
- /* */
- /* For example, if you want to access Unicode value U+1F028 (and */
- /* the font contains it), use value 0x1F028 as the input value for */
- /* @FT_Get_Char_Index. */
- /* */
- /* FT_ENCODING_MS_SYMBOL :: */
- /* Corresponds to the Microsoft Symbol encoding, used to encode */
- /* mathematical symbols and wingdings. For more information, see */
- /* `http://www.microsoft.com/typography/otspec/recom.htm', */
- /* `http://www.kostis.net/charsets/symbol.htm', and */
- /* `http://www.kostis.net/charsets/wingding.htm'. */
- /* */
- /* This encoding uses character codes from the PUA (Private Unicode */
- /* Area) in the range U+F020-U+F0FF. */
- /* */
- /* FT_ENCODING_SJIS :: */
- /* Corresponds to Japanese SJIS encoding. More info at */
- /* at `http://en.wikipedia.org/wiki/Shift_JIS'. */
- /* See note on multi-byte encodings below. */
- /* */
- /* FT_ENCODING_GB2312 :: */
- /* Corresponds to an encoding system for Simplified Chinese as used */
- /* used in mainland China. */
- /* */
- /* FT_ENCODING_BIG5 :: */
- /* Corresponds to an encoding system for Traditional Chinese as */
- /* used in Taiwan and Hong Kong. */
- /* */
- /* FT_ENCODING_WANSUNG :: */
- /* Corresponds to the Korean encoding system known as Wansung. */
- /* For more information see */
- /* `https://msdn.microsoft.com/en-US/goglobal/cc305154'. */
- /* */
- /* FT_ENCODING_JOHAB :: */
- /* The Korean standard character set (KS~C 5601-1992), which */
- /* corresponds to MS Windows code page 1361. This character set */
- /* includes all possible Hangeul character combinations. */
- /* */
- /* FT_ENCODING_ADOBE_LATIN_1 :: */
- /* Corresponds to a Latin-1 encoding as defined in a Type~1 */
- /* PostScript font. It is limited to 256 character codes. */
- /* */
- /* FT_ENCODING_ADOBE_STANDARD :: */
- /* Corresponds to the Adobe Standard encoding, as found in Type~1, */
- /* CFF, and OpenType/CFF fonts. It is limited to 256 character */
- /* codes. */
- /* */
- /* FT_ENCODING_ADOBE_EXPERT :: */
- /* Corresponds to the Adobe Expert encoding, as found in Type~1, */
- /* CFF, and OpenType/CFF fonts. It is limited to 256 character */
- /* codes. */
- /* */
- /* FT_ENCODING_ADOBE_CUSTOM :: */
- /* Corresponds to a custom encoding, as found in Type~1, CFF, and */
- /* OpenType/CFF fonts. It is limited to 256 character codes. */
- /* */
- /* FT_ENCODING_APPLE_ROMAN :: */
- /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */
- /* and OpenType fonts contain a charmap for this encoding, since */
- /* older versions of Mac OS are able to use it. */
- /* */
- /* FT_ENCODING_OLD_LATIN_2 :: */
- /* This value is deprecated and was never used nor reported by */
- /* FreeType. Don't use or test for it. */
- /* */
- /* FT_ENCODING_MS_SJIS :: */
- /* Same as FT_ENCODING_SJIS. Deprecated. */
- /* */
- /* FT_ENCODING_MS_GB2312 :: */
- /* Same as FT_ENCODING_GB2312. Deprecated. */
- /* */
- /* FT_ENCODING_MS_BIG5 :: */
- /* Same as FT_ENCODING_BIG5. Deprecated. */
- /* */
- /* FT_ENCODING_MS_WANSUNG :: */
- /* Same as FT_ENCODING_WANSUNG. Deprecated. */
- /* */
- /* FT_ENCODING_MS_JOHAB :: */
- /* Same as FT_ENCODING_JOHAB. Deprecated. */
- /* */
- /* */
- /* By default, FreeType automatically synthesizes a Unicode charmap */
- /* for PostScript fonts, using their glyph names dictionaries. */
- /* However, it also reports the encodings defined explicitly in the */
- /* font file, for the cases when they are needed, with the Adobe */
- /* values as well. */
- /* */
- /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */
- /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */
- /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */
- /* which encoding is really present. If, for example, the */
- /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */
- /* the font is encoded in KOI8-R. */
- /* */
- /* FT_ENCODING_NONE is always set (with a single exception) by the */
- /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */
- /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */
- /* which encoding is really present. For example, */
- /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */
- /* Russian). */
- /* */
- /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */
- /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */
- /* FT_ENCODING_APPLE_ROMAN). */
- /* */
- /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */
- /* @FT_Get_CMap_Language_ID to query the Mac language ID that may */
- /* be needed to be able to distinguish Apple encoding variants. See */
- /* */
- /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt */
- /* */
- /* to get an idea how to do that. Basically, if the language ID */
- /* is~0, don't use it, otherwise subtract 1 from the language ID. */
- /* Then examine `encoding_id'. If, for example, `encoding_id' is */
- /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */
- /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */
- /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */
- /* variant the Arabic encoding. */
- /* */
- typedef enum FT_Encoding_
- {
- FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ),
-
- FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ),
- FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ),
-
- FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ),
- FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ),
- FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ),
- FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ),
- FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ),
-
- /* for backwards compatibility */
- FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS,
- FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312,
- FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5,
- FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG,
- FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB,
-
- FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ),
- FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ),
- FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ),
- FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ),
-
- FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ),
-
- FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' )
-
- } FT_Encoding;
-
-
- /* these constants are deprecated; use the corresponding `FT_Encoding' */
- /* values instead */
-#define ft_encoding_none FT_ENCODING_NONE
-#define ft_encoding_unicode FT_ENCODING_UNICODE
-#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL
-#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1
-#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2
-#define ft_encoding_sjis FT_ENCODING_SJIS
-#define ft_encoding_gb2312 FT_ENCODING_GB2312
-#define ft_encoding_big5 FT_ENCODING_BIG5
-#define ft_encoding_wansung FT_ENCODING_WANSUNG
-#define ft_encoding_johab FT_ENCODING_JOHAB
-
-#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD
-#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT
-#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM
-#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_CharMapRec */
- /* */
- /* */
- /* The base charmap structure. */
- /* */
- /* */
- /* face :: A handle to the parent face object. */
- /* */
- /* encoding :: An @FT_Encoding tag identifying the charmap. Use */
- /* this with @FT_Select_Charmap. */
- /* */
- /* platform_id :: An ID number describing the platform for the */
- /* following encoding ID. This comes directly from */
- /* the TrueType specification and should be emulated */
- /* for other formats. */
- /* */
- /* encoding_id :: A platform specific encoding number. This also */
- /* comes from the TrueType specification and should be */
- /* emulated similarly. */
- /* */
- typedef struct FT_CharMapRec_
- {
- FT_Face face;
- FT_Encoding encoding;
- FT_UShort platform_id;
- FT_UShort encoding_id;
-
- } FT_CharMapRec;
-
-
- /*************************************************************************/
- /*************************************************************************/
- /* */
- /* B A S E O B J E C T C L A S S E S */
- /* */
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Face_Internal */
- /* */
- /* */
- /* An opaque handle to an `FT_Face_InternalRec' structure, used to */
- /* model private data of a given @FT_Face object. */
- /* */
- /* This structure might change between releases of FreeType~2 and is */
- /* not generally available to client applications. */
- /* */
- typedef struct FT_Face_InternalRec_* FT_Face_Internal;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FaceRec */
- /* */
- /* */
- /* FreeType root face class structure. A face object models a */
- /* typeface in a font file. */
- /* */
- /* */
- /* num_faces :: The number of faces in the font file. Some */
- /* font formats can have multiple faces in */
- /* a font file. */
- /* */
- /* face_index :: This field holds two different values. */
- /* Bits 0-15 are the index of the face in the */
- /* font file (starting with value~0). They */
- /* are set to~0 if there is only one face in */
- /* the font file. */
- /* */
- /* Bits 16-30 are relevant to GX variation */
- /* fonts only, holding the named instance */
- /* index for the current face index (starting */
- /* with value~1; value~0 indicates font access */
- /* without GX variation data). For non-GX */
- /* fonts, bits 16-30 are ignored. If we have */
- /* the third named instance of face~4, say, */
- /* `face_index' is set to 0x00030004. */
- /* */
- /* Bit 31 is always zero (this is, */
- /* `face_index' is always a positive value). */
- /* */
- /* face_flags :: A set of bit flags that give important */
- /* information about the face; see */
- /* @FT_FACE_FLAG_XXX for the details. */
- /* */
- /* style_flags :: The lower 16~bits contain a set of bit */
- /* flags indicating the style of the face; see */
- /* @FT_STYLE_FLAG_XXX for the details. Bits */
- /* 16-30 hold the number of named instances */
- /* available for the current face if we have a */
- /* GX variation (sub)font. Bit 31 is always */
- /* zero (this is, `style_flags' is always a */
- /* positive value). */
- /* */
- /* num_glyphs :: The number of glyphs in the face. If the */
- /* face is scalable and has sbits (see */
- /* `num_fixed_sizes'), it is set to the number */
- /* of outline glyphs. */
- /* */
- /* For CID-keyed fonts, this value gives the */
- /* highest CID used in the font. */
- /* */
- /* family_name :: The face's family name. This is an ASCII */
- /* string, usually in English, that describes */
- /* the typeface's family (like `Times New */
- /* Roman', `Bodoni', `Garamond', etc). This */
- /* is a least common denominator used to list */
- /* fonts. Some formats (TrueType & OpenType) */
- /* provide localized and Unicode versions of */
- /* this string. Applications should use the */
- /* format specific interface to access them. */
- /* Can be NULL (e.g., in fonts embedded in a */
- /* PDF file). */
- /* */
- /* In case the font doesn't provide a specific */
- /* family name entry, FreeType tries to */
- /* synthesize one, deriving it from other name */
- /* entries. */
- /* */
- /* style_name :: The face's style name. This is an ASCII */
- /* string, usually in English, that describes */
- /* the typeface's style (like `Italic', */
- /* `Bold', `Condensed', etc). Not all font */
- /* formats provide a style name, so this field */
- /* is optional, and can be set to NULL. As */
- /* for `family_name', some formats provide */
- /* localized and Unicode versions of this */
- /* string. Applications should use the format */
- /* specific interface to access them. */
- /* */
- /* num_fixed_sizes :: The number of bitmap strikes in the face. */
- /* Even if the face is scalable, there might */
- /* still be bitmap strikes, which are called */
- /* `sbits' in that case. */
- /* */
- /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */
- /* strikes in the face. It is set to NULL if */
- /* there is no bitmap strike. */
- /* */
- /* num_charmaps :: The number of charmaps in the face. */
- /* */
- /* charmaps :: An array of the charmaps of the face. */
- /* */
- /* generic :: A field reserved for client uses. See the */
- /* @FT_Generic type description. */
- /* */
- /* bbox :: The font bounding box. Coordinates are */
- /* expressed in font units (see */
- /* `units_per_EM'). The box is large enough */
- /* to contain any glyph from the font. Thus, */
- /* `bbox.yMax' can be seen as the `maximum */
- /* ascender', and `bbox.yMin' as the `minimum */
- /* descender'. Only relevant for scalable */
- /* formats. */
- /* */
- /* Note that the bounding box might be off by */
- /* (at least) one pixel for hinted fonts. See */
- /* @FT_Size_Metrics for further discussion. */
- /* */
- /* units_per_EM :: The number of font units per EM square for */
- /* this face. This is typically 2048 for */
- /* TrueType fonts, and 1000 for Type~1 fonts. */
- /* Only relevant for scalable formats. */
- /* */
- /* ascender :: The typographic ascender of the face, */
- /* expressed in font units. For font formats */
- /* not having this information, it is set to */
- /* `bbox.yMax'. Only relevant for scalable */
- /* formats. */
- /* */
- /* descender :: The typographic descender of the face, */
- /* expressed in font units. For font formats */
- /* not having this information, it is set to */
- /* `bbox.yMin'. Note that this field is */
- /* usually negative. Only relevant for */
- /* scalable formats. */
- /* */
- /* height :: This value is the vertical distance */
- /* between two consecutive baselines, */
- /* expressed in font units. It is always */
- /* positive. Only relevant for scalable */
- /* formats. */
- /* */
- /* If you want the global glyph height, use */
- /* `ascender - descender'. */
- /* */
- /* max_advance_width :: The maximum advance width, in font units, */
- /* for all glyphs in this face. This can be */
- /* used to make word wrapping computations */
- /* faster. Only relevant for scalable */
- /* formats. */
- /* */
- /* max_advance_height :: The maximum advance height, in font units, */
- /* for all glyphs in this face. This is only */
- /* relevant for vertical layouts, and is set */
- /* to `height' for fonts that do not provide */
- /* vertical metrics. Only relevant for */
- /* scalable formats. */
- /* */
- /* underline_position :: The position, in font units, of the */
- /* underline line for this face. It is the */
- /* center of the underlining stem. Only */
- /* relevant for scalable formats. */
- /* */
- /* underline_thickness :: The thickness, in font units, of the */
- /* underline for this face. Only relevant for */
- /* scalable formats. */
- /* */
- /* glyph :: The face's associated glyph slot(s). */
- /* */
- /* size :: The current active size for this face. */
- /* */
- /* charmap :: The current active charmap for this face. */
- /* */
- /* */
- /* Fields may be changed after a call to @FT_Attach_File or */
- /* @FT_Attach_Stream. */
- /* */
- typedef struct FT_FaceRec_
- {
- FT_Long num_faces;
- FT_Long face_index;
-
- FT_Long face_flags;
- FT_Long style_flags;
-
- FT_Long num_glyphs;
-
- FT_String* family_name;
- FT_String* style_name;
-
- FT_Int num_fixed_sizes;
- FT_Bitmap_Size* available_sizes;
-
- FT_Int num_charmaps;
- FT_CharMap* charmaps;
-
- FT_Generic generic;
-
- /*# The following member variables (down to `underline_thickness') */
- /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */
- /*# for bitmap fonts. */
- FT_BBox bbox;
-
- FT_UShort units_per_EM;
- FT_Short ascender;
- FT_Short descender;
- FT_Short height;
-
- FT_Short max_advance_width;
- FT_Short max_advance_height;
-
- FT_Short underline_position;
- FT_Short underline_thickness;
-
- FT_GlyphSlot glyph;
- FT_Size size;
- FT_CharMap charmap;
-
- /*@private begin */
-
- FT_Driver driver;
- FT_Memory memory;
- FT_Stream stream;
-
- FT_ListRec sizes_list;
-
- FT_Generic autohint; /* face-specific auto-hinter data */
- void* extensions; /* unused */
-
- FT_Face_Internal internal;
-
- /*@private end */
-
- } FT_FaceRec;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_XXX */
- /* */
- /* */
- /* A list of bit flags used in the `face_flags' field of the */
- /* @FT_FaceRec structure. They inform client applications of */
- /* properties of the corresponding face. */
- /* */
- /* */
- /* FT_FACE_FLAG_SCALABLE :: */
- /* Indicates that the face contains outline glyphs. This doesn't */
- /* prevent bitmap strikes, i.e., a face can have both this and */
- /* and @FT_FACE_FLAG_FIXED_SIZES set. */
- /* */
- /* FT_FACE_FLAG_FIXED_SIZES :: */
- /* Indicates that the face contains bitmap strikes. See also the */
- /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */
- /* */
- /* FT_FACE_FLAG_FIXED_WIDTH :: */
- /* Indicates that the face contains fixed-width characters (like */
- /* Courier, Lucido, MonoType, etc.). */
- /* */
- /* FT_FACE_FLAG_SFNT :: */
- /* Indicates that the face uses the `sfnt' storage scheme. For */
- /* now, this means TrueType and OpenType. */
- /* */
- /* FT_FACE_FLAG_HORIZONTAL :: */
- /* Indicates that the face contains horizontal glyph metrics. This */
- /* should be set for all common formats. */
- /* */
- /* FT_FACE_FLAG_VERTICAL :: */
- /* Indicates that the face contains vertical glyph metrics. This */
- /* is only available in some formats, not all of them. */
- /* */
- /* FT_FACE_FLAG_KERNING :: */
- /* Indicates that the face contains kerning information. If set, */
- /* the kerning distance can be retrieved through the function */
- /* @FT_Get_Kerning. Otherwise the function always return the */
- /* vector (0,0). Note that FreeType doesn't handle kerning data */
- /* from the `GPOS' table (as present in some OpenType fonts). */
- /* */
- /* FT_FACE_FLAG_FAST_GLYPHS :: */
- /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */
- /* */
- /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */
- /* Indicates that the font contains multiple masters and is capable */
- /* of interpolating between them. See the multiple-masters */
- /* specific API for details. */
- /* */
- /* FT_FACE_FLAG_GLYPH_NAMES :: */
- /* Indicates that the font contains glyph names that can be */
- /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */
- /* fonts contain broken glyph name tables. Use the function */
- /* @FT_Has_PS_Glyph_Names when needed. */
- /* */
- /* FT_FACE_FLAG_EXTERNAL_STREAM :: */
- /* Used internally by FreeType to indicate that a face's stream was */
- /* provided by the client application and should not be destroyed */
- /* when @FT_Done_Face is called. Don't read or test this flag. */
- /* */
- /* FT_FACE_FLAG_HINTER :: */
- /* Set if the font driver has a hinting machine of its own. For */
- /* example, with TrueType fonts, it makes sense to use data from */
- /* the SFNT `gasp' table only if the native TrueType hinting engine */
- /* (with the bytecode interpreter) is available and active. */
- /* */
- /* FT_FACE_FLAG_CID_KEYED :: */
- /* Set if the font is CID-keyed. In that case, the font is not */
- /* accessed by glyph indices but by CID values. For subsetted */
- /* CID-keyed fonts this has the consequence that not all index */
- /* values are a valid argument to FT_Load_Glyph. Only the CID */
- /* values for which corresponding glyphs in the subsetted font */
- /* exist make FT_Load_Glyph return successfully; in all other cases */
- /* you get an `FT_Err_Invalid_Argument' error. */
- /* */
- /* Note that CID-keyed fonts that are in an SFNT wrapper don't */
- /* have this flag set since the glyphs are accessed in the normal */
- /* way (using contiguous indices); the `CID-ness' isn't visible to */
- /* the application. */
- /* */
- /* FT_FACE_FLAG_TRICKY :: */
- /* Set if the font is `tricky', this is, it always needs the */
- /* font format's native hinting engine to get a reasonable result. */
- /* A typical example is the Chinese font `mingli.ttf' that uses */
- /* TrueType bytecode instructions to move and scale all of its */
- /* subglyphs. */
- /* */
- /* It is not possible to auto-hint such fonts using */
- /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */
- /* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */
- /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */
- /* probably never want this except for demonstration purposes. */
- /* */
- /* Currently, there are about a dozen TrueType fonts in the list of */
- /* tricky fonts; they are hard-coded in file `ttobjs.c'. */
- /* */
- /* FT_FACE_FLAG_COLOR :: */
- /* Set if the font has color glyph tables. To access color glyphs */
- /* use @FT_LOAD_COLOR. */
- /* */
-#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
-#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
-#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 )
-#define FT_FACE_FLAG_SFNT ( 1L << 3 )
-#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 )
-#define FT_FACE_FLAG_VERTICAL ( 1L << 5 )
-#define FT_FACE_FLAG_KERNING ( 1L << 6 )
-#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 )
-#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 )
-#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 )
-#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 )
-#define FT_FACE_FLAG_HINTER ( 1L << 11 )
-#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 )
-#define FT_FACE_FLAG_TRICKY ( 1L << 13 )
-#define FT_FACE_FLAG_COLOR ( 1L << 14 )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_HORIZONTAL( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains
- * horizontal metrics (this is true for all font formats though).
- *
- * @also:
- * @FT_HAS_VERTICAL can be used to check for vertical metrics.
- *
- */
-#define FT_HAS_HORIZONTAL( face ) \
- ( face->face_flags & FT_FACE_FLAG_HORIZONTAL )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_VERTICAL( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains real
- * vertical metrics (and not only synthesized ones).
- *
- */
-#define FT_HAS_VERTICAL( face ) \
- ( face->face_flags & FT_FACE_FLAG_VERTICAL )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_KERNING( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains kerning
- * data that can be accessed with @FT_Get_Kerning.
- *
- */
-#define FT_HAS_KERNING( face ) \
- ( face->face_flags & FT_FACE_FLAG_KERNING )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_IS_SCALABLE( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains a scalable
- * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF,
- * and PFR font formats.
- *
- */
-#define FT_IS_SCALABLE( face ) \
- ( face->face_flags & FT_FACE_FLAG_SCALABLE )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_IS_SFNT( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains a font
- * whose format is based on the SFNT storage scheme. This usually
- * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded
- * bitmap fonts.
- *
- * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and
- * @FT_TRUETYPE_TABLES_H are available.
- *
- */
-#define FT_IS_SFNT( face ) \
- ( face->face_flags & FT_FACE_FLAG_SFNT )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_IS_FIXED_WIDTH( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains a font face
- * that contains fixed-width (or `monospace', `fixed-pitch', etc.)
- * glyphs.
- *
- */
-#define FT_IS_FIXED_WIDTH( face ) \
- ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_FIXED_SIZES( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains some
- * embedded bitmaps. See the `available_sizes' field of the
- * @FT_FaceRec structure.
- *
- */
-#define FT_HAS_FIXED_SIZES( face ) \
- ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_FAST_GLYPHS( face )
- *
- * @description:
- * Deprecated.
- *
- */
-#define FT_HAS_FAST_GLYPHS( face ) 0
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_GLYPH_NAMES( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains some glyph
- * names that can be accessed through @FT_Get_Glyph_Name.
- *
- */
-#define FT_HAS_GLYPH_NAMES( face ) \
- ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_MULTIPLE_MASTERS( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains some
- * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H
- * are then available to choose the exact design you want.
- *
- */
-#define FT_HAS_MULTIPLE_MASTERS( face ) \
- ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_IS_CID_KEYED( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains a CID-keyed
- * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more
- * details.
- *
- * If this macro is true, all functions defined in @FT_CID_H are
- * available.
- *
- */
-#define FT_IS_CID_KEYED( face ) \
- ( face->face_flags & FT_FACE_FLAG_CID_KEYED )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_IS_TRICKY( face )
- *
- * @description:
- * A macro that returns true whenever a face represents a `tricky' font.
- * See the discussion of @FT_FACE_FLAG_TRICKY for more details.
- *
- */
-#define FT_IS_TRICKY( face ) \
- ( face->face_flags & FT_FACE_FLAG_TRICKY )
-
-
- /*************************************************************************
- *
- * @macro:
- * FT_HAS_COLOR( face )
- *
- * @description:
- * A macro that returns true whenever a face object contains
- * tables for color glyphs.
- *
- */
-#define FT_HAS_COLOR( face ) \
- ( face->face_flags & FT_FACE_FLAG_COLOR )
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_STYLE_FLAG_XXX */
- /* */
- /* */
- /* A list of bit flags used to indicate the style of a given face. */
- /* These are used in the `style_flags' field of @FT_FaceRec. */
- /* */
- /* */
- /* FT_STYLE_FLAG_ITALIC :: */
- /* Indicates that a given face style is italic or oblique. */
- /* */
- /* FT_STYLE_FLAG_BOLD :: */
- /* Indicates that a given face is bold. */
- /* */
- /* */
- /* The style information as provided by FreeType is very basic. More */
- /* details are beyond the scope and should be done on a higher level */
- /* (for example, by analyzing various fields of the `OS/2' table in */
- /* SFNT based fonts). */
- /* */
-#define FT_STYLE_FLAG_ITALIC ( 1 << 0 )
-#define FT_STYLE_FLAG_BOLD ( 1 << 1 )
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Size_Internal */
- /* */
- /* */
- /* An opaque handle to an `FT_Size_InternalRec' structure, used to */
- /* model private data of a given @FT_Size object. */
- /* */
- typedef struct FT_Size_InternalRec_* FT_Size_Internal;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Size_Metrics */
- /* */
- /* */
- /* The size metrics structure gives the metrics of a size object. */
- /* */
- /* */
- /* x_ppem :: The width of the scaled EM square in pixels, hence */
- /* the term `ppem' (pixels per EM). It is also */
- /* referred to as `nominal width'. */
- /* */
- /* y_ppem :: The height of the scaled EM square in pixels, */
- /* hence the term `ppem' (pixels per EM). It is also */
- /* referred to as `nominal height'. */
- /* */
- /* x_scale :: A 16.16 fractional scaling value used to convert */
- /* horizontal metrics from font units to 26.6 */
- /* fractional pixels. Only relevant for scalable */
- /* font formats. */
- /* */
- /* y_scale :: A 16.16 fractional scaling value used to convert */
- /* vertical metrics from font units to 26.6 */
- /* fractional pixels. Only relevant for scalable */
- /* font formats. */
- /* */
- /* ascender :: The ascender in 26.6 fractional pixels. See */
- /* @FT_FaceRec for the details. */
- /* */
- /* descender :: The descender in 26.6 fractional pixels. See */
- /* @FT_FaceRec for the details. */
- /* */
- /* height :: The height in 26.6 fractional pixels. See */
- /* @FT_FaceRec for the details. */
- /* */
- /* max_advance :: The maximum advance width in 26.6 fractional */
- /* pixels. See @FT_FaceRec for the details. */
- /* */
- /* */
- /* The scaling values, if relevant, are determined first during a */
- /* size changing operation. The remaining fields are then set by the */
- /* driver. For scalable formats, they are usually set to scaled */
- /* values of the corresponding fields in @FT_FaceRec. */
- /* */
- /* Note that due to glyph hinting, these values might not be exact */
- /* for certain fonts. Thus they must be treated as unreliable */
- /* with an error margin of at least one pixel! */
- /* */
- /* Indeed, the only way to get the exact metrics is to render _all_ */
- /* glyphs. As this would be a definite performance hit, it is up to */
- /* client applications to perform such computations. */
- /* */
- /* The FT_Size_Metrics structure is valid for bitmap fonts also. */
- /* */
- typedef struct FT_Size_Metrics_
- {
- FT_UShort x_ppem; /* horizontal pixels per EM */
- FT_UShort y_ppem; /* vertical pixels per EM */
-
- FT_Fixed x_scale; /* scaling values used to convert font */
- FT_Fixed y_scale; /* units to 26.6 fractional pixels */
-
- FT_Pos ascender; /* ascender in 26.6 frac. pixels */
- FT_Pos descender; /* descender in 26.6 frac. pixels */
- FT_Pos height; /* text height in 26.6 frac. pixels */
- FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */
-
- } FT_Size_Metrics;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_SizeRec */
- /* */
- /* */
- /* FreeType root size class structure. A size object models a face */
- /* object at a given size. */
- /* */
- /* */
- /* face :: Handle to the parent face object. */
- /* */
- /* generic :: A typeless pointer, unused by the FreeType library or */
- /* any of its drivers. It can be used by client */
- /* applications to link their own data to each size */
- /* object. */
- /* */
- /* metrics :: Metrics for this size object. This field is read-only. */
- /* */
- typedef struct FT_SizeRec_
- {
- FT_Face face; /* parent face object */
- FT_Generic generic; /* generic pointer for client uses */
- FT_Size_Metrics metrics; /* size metrics */
- FT_Size_Internal internal;
-
- } FT_SizeRec;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_SubGlyph */
- /* */
- /* */
- /* The subglyph structure is an internal object used to describe */
- /* subglyphs (for example, in the case of composites). */
- /* */
- /* */
- /* The subglyph implementation is not part of the high-level API, */
- /* hence the forward structure declaration. */
- /* */
- /* You can however retrieve subglyph information with */
- /* @FT_Get_SubGlyph_Info. */
- /* */
- typedef struct FT_SubGlyphRec_* FT_SubGlyph;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Slot_Internal */
- /* */
- /* */
- /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */
- /* model private data of a given @FT_GlyphSlot object. */
- /* */
- typedef struct FT_Slot_InternalRec_* FT_Slot_Internal;
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_GlyphSlotRec */
- /* */
- /* */
- /* FreeType root glyph slot class structure. A glyph slot is a */
- /* container where individual glyphs can be loaded, be they in */
- /* outline or bitmap format. */
- /* */
- /* */
- /* library :: A handle to the FreeType library instance */
- /* this slot belongs to. */
- /* */
- /* face :: A handle to the parent face object. */
- /* */
- /* next :: In some cases (like some font tools), several */
- /* glyph slots per face object can be a good */
- /* thing. As this is rare, the glyph slots are */
- /* listed through a direct, single-linked list */
- /* using its `next' field. */
- /* */
- /* generic :: A typeless pointer unused by the FreeType */
- /* library or any of its drivers. It can be */
- /* used by client applications to link their own */
- /* data to each glyph slot object. */
- /* */
- /* metrics :: The metrics of the last loaded glyph in the */
- /* slot. The returned values depend on the last */
- /* load flags (see the @FT_Load_Glyph API */
- /* function) and can be expressed either in 26.6 */
- /* fractional pixels or font units. */
- /* */
- /* Note that even when the glyph image is */
- /* transformed, the metrics are not. */
- /* */
- /* linearHoriAdvance :: The advance width of the unhinted glyph. */
- /* Its value is expressed in 16.16 fractional */
- /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */
- /* when loading the glyph. This field can be */
- /* important to perform correct WYSIWYG layout. */
- /* Only relevant for outline glyphs. */
- /* */
- /* linearVertAdvance :: The advance height of the unhinted glyph. */
- /* Its value is expressed in 16.16 fractional */
- /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */
- /* when loading the glyph. This field can be */
- /* important to perform correct WYSIWYG layout. */
- /* Only relevant for outline glyphs. */
- /* */
- /* advance :: This shorthand is, depending on */
- /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */
- /* (hinted) advance width for the glyph, in 26.6 */
- /* fractional pixel format. As specified with */
- /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */
- /* `horiAdvance' or the `vertAdvance' value of */
- /* `metrics' field. */
- /* */
- /* format :: This field indicates the format of the image */
- /* contained in the glyph slot. Typically */
- /* @FT_GLYPH_FORMAT_BITMAP, */
- /* @FT_GLYPH_FORMAT_OUTLINE, or */
- /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */
- /* possible. */
- /* */
- /* bitmap :: This field is used as a bitmap descriptor */
- /* when the slot format is */
- /* @FT_GLYPH_FORMAT_BITMAP. Note that the */
- /* address and content of the bitmap buffer can */
- /* change between calls of @FT_Load_Glyph and a */
- /* few other functions. */
- /* */
- /* bitmap_left :: The bitmap's left bearing expressed in */
- /* integer pixels. Only valid if the format is */
- /* @FT_GLYPH_FORMAT_BITMAP, this is, if the */
- /* glyph slot contains a bitmap. */
- /* */
- /* bitmap_top :: The bitmap's top bearing expressed in integer */
- /* pixels. Remember that this is the distance */
- /* from the baseline to the top-most glyph */
- /* scanline, upwards y~coordinates being */
- /* *positive*. */
- /* */
- /* outline :: The outline descriptor for the current glyph */
- /* image if its format is */
- /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */
- /* loaded, `outline' can be transformed, */
- /* distorted, embolded, etc. However, it must */
- /* not be freed. */
- /* */
- /* num_subglyphs :: The number of subglyphs in a composite glyph. */
- /* This field is only valid for the composite */
- /* glyph format that should normally only be */
- /* loaded with the @FT_LOAD_NO_RECURSE flag. */
- /* */
- /* subglyphs :: An array of subglyph descriptors for */
- /* composite glyphs. There are `num_subglyphs' */
- /* elements in there. Currently internal to */
- /* FreeType. */
- /* */
- /* control_data :: Certain font drivers can also return the */
- /* control data for a given glyph image (e.g. */
- /* TrueType bytecode, Type~1 charstrings, etc.). */
- /* This field is a pointer to such data. */
- /* */
- /* control_len :: This is the length in bytes of the control */
- /* data. */
- /* */
- /* other :: Really wicked formats can use this pointer to */
- /* present their own glyph image to client */
- /* applications. Note that the application */
- /* needs to know about the image format. */
- /* */
- /* lsb_delta :: The difference between hinted and unhinted */
- /* left side bearing while auto-hinting is */
- /* active. Zero otherwise. */
- /* */
- /* rsb_delta :: The difference between hinted and unhinted */
- /* right side bearing while auto-hinting is */
- /* active. Zero otherwise. */
- /* */
- /* */
- /* If @FT_Load_Glyph is called with default flags (see */
- /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */
- /* its native format (e.g., an outline glyph for TrueType and Type~1 */
- /* formats). */
- /* */
- /* This image can later be converted into a bitmap by calling */
- /* @FT_Render_Glyph. This function finds the current renderer for */
- /* the native image's format, then invokes it. */
- /* */
- /* The renderer is in charge of transforming the native image through */
- /* the slot's face transformation fields, then converting it into a */
- /* bitmap that is returned in `slot->bitmap'. */
- /* */
- /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */
- /* to specify the position of the bitmap relative to the current pen */
- /* position (e.g., coordinates (0,0) on the baseline). Of course, */
- /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */
- /* */
- /* */
- /* Here is a small pseudo code fragment that shows how to use */
- /* `lsb_delta' and `rsb_delta': */
- /* */
- /* { */
- /* FT_Pos origin_x = 0; */
- /* FT_Pos prev_rsb_delta = 0; */
- /* */
- /* */
- /* for all glyphs do */
- /* */
- /* */
- /* */
- /* */
- /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */
- /* origin_x -= 64; */
- /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */
- /* origin_x += 64; */
- /* */
- /* prev_rsb_delta = face->glyph->rsb_delta; */
- /* */
- /* */
- /* */
- /* origin_x += face->glyph->advance.x; */
- /* endfor */
- /* } */
- /* */
- typedef struct FT_GlyphSlotRec_
- {
- FT_Library library;
- FT_Face face;
- FT_GlyphSlot next;
- FT_UInt reserved; /* retained for binary compatibility */
- FT_Generic generic;
-
- FT_Glyph_Metrics metrics;
- FT_Fixed linearHoriAdvance;
- FT_Fixed linearVertAdvance;
- FT_Vector advance;
-
- FT_Glyph_Format format;
-
- FT_Bitmap bitmap;
- FT_Int bitmap_left;
- FT_Int bitmap_top;
-
- FT_Outline outline;
-
- FT_UInt num_subglyphs;
- FT_SubGlyph subglyphs;
-
- void* control_data;
- long control_len;
-
- FT_Pos lsb_delta;
- FT_Pos rsb_delta;
-
- void* other;
-
- FT_Slot_Internal internal;
-
- } FT_GlyphSlotRec;
-
-
- /*************************************************************************/
- /*************************************************************************/
- /* */
- /* F U N C T I O N S */
- /* */
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_Init_FreeType */
- /* */
- /* */
- /* Initialize a new FreeType library object. The set of modules */
- /* that are registered by this function is determined at build time. */
- /* */
- /*