畫筆
ArctosLinks.Conference
提供了一套 API 來控制畫筆相關的操作;ArctosLinks.Media
則提供畫筆的參數設定。
!!! info "注意事項" 1. 畫筆功能僅能在會議進行時由會議室主持人使用。 2. 畫面旋轉時會清除當前繪製的筆跡。
啟動白板繪圖模式
功能: 啟動白板繪圖功能,可在畫面上做自由繪圖。
返回值:如果成功啟動則完成,若是使用時發生例外狀況,則返回錯誤。
!!! warning "注意事項" iOS: 可繪製的畫布邊界等於視訊通話顯示區,因此使用此方法前應先執行加入會議室,設定顯示區域。
Android :。
Swift
import ArctosLinks
private func startWhiteBoardDrawing() {
ArctosLinks.Conference.hostStartWhiteBoardDrawing { result in
switch result {
case .success():
break
case .failure(let error):
displayNotification(title: "🚨 Process ERROR", body: error.localizedDescription)
}
}
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun startWhiteboardDrawing() {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostStartWhiteboardDrawing()
.getOrThrow()
}.onSuccess {
Log.d(TAG, "Successfully start Whiteboard Drawing")
}.onFailure {
Log.d(TAG, "Failed : ${it.message}")
}
}
c++
#include "arctos_qt.h"
void startWhiteboardDrawing() {
arctos_app.media()->setPaintingMode(true);
}
設定顏色
功能: 設定畫筆的顏色。
參數:
- color: 要設定的畫筆顏色,型別為BrushColor。
返回值:如果成功設定則返回新的顏色,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
func setBrushColorMenu() {
var elements = [UIMenuElement]()
for color in ArctosLinks.Media.BrushColor.allCases {
elements.append(UIAction(title: color.title, handler: { _ in
ArctosLinks.Conference.hostSetWhiteBoardBrushColor(color) { result in
switch result {
case .success(let color):
displayNotification(title: "Selected color: \(color.title)", body: "")
case .failure(let error):
displayNotification(title: "🚨 Process ERROR", body: error.localizedDescription)
}
}
}))
}
paletteButton.menu = UIMenu(options: .displayInline, children: elements)
paletteButton.showsMenuAsPrimaryAction = true
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun setWhiteboardBrushColor(brushColor: ConferenceRoomInterface.BrushColor) {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostSetWhiteboardBrushColor(
brushColor
).getOrThrow()
}.onSuccess {
Log.d(TAG, "Successfully set Whiteboard Brush Color")
}.onFailure {
Log.d(TAG, "Failed : ${it.message}")
}
}
c++
#include "arctos_qt.h"
// cpp API is closer to immediate mode for painting, therefore, please store desired "color code" in string format manually
void setWhiteboardBrushColor(const std::string& color_code) {
my_color_code_ = color_code;
}
// later on
void paint(int x, int y) {
arctos_app.media()->paint(x, y, my_color_code_, my_pen_width_);
}
設定筆觸寬度
功能: 設定畫筆的筆觸寬度。
參數:
- stroke: 要設定的筆觸寬度,型別為BrushStroke。
返回值:如果成功設定則返回新的筆觸寬度,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
func setStrokeMenu() {
var elements = [UIMenuElement]()
for stroke in ArctosLinks.Media.BrushStroke.allCases {
elements.append(UIAction(title: stroke.title, handler: { _ in
ArctosLinks.Conference.hostSetWhiteBoardStroke(to: stroke) { result in
switch result {
case .success(let width):
displayNotification(title: "Selected \(width.title) stroke", body: "")
case .failure(let error):
displayNotification(title: "🚨 Process ERROR", body: error.localizedDescription)
}
}
}))
}
strokeWidthButton.menu = UIMenu(options: .displayInline, children: elements)
strokeWidthButton.showsMenuAsPrimaryAction = true
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun setWhiteboardStroke(stroke: ConferenceRoomInterface.BrushStroke) {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostSetWhiteboardStroke(
stroke
).getOrThrow()
}.onSuccess {
Log.d(TAG, "Successfully set Whiteboard Stroke")
}.onFailure {
Log.d(TAG, "Failed : ${it.message}")
}
}
c++
#include "arctos_qt.h"
// cpp API is closer to immediate mode for painting, therefore, please store desired "width" in double manually
void setWhiteboardStroke(double width) {
my_pen_width_ = width;
}
// later on
void paint(int x, int y) {
arctos_app.media()->paint(x, y, my_color_code_, my_pen_width_);
}
清除畫布
功能: 清除白板上的所有繪圖。
返回值:如果成功清除則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
@IBAction func eraserButtonTouchUpInside(_ sender: UIButton) {
ArctosLinks.Conference.hostClearWhiteBoard()
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun clearWhiteboard() {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostClearWhiteboard()
.getOrThrow()
}.onSuccess {
Log.d(TAG, "Successfully clear Whiteboard")
}.onFailure {
Log.d(TAG, "Failed : ${it.message}")
}
}
c++
#include "arctos_qt.h"
void clearWhiteboard() {
arctos_app.media()->clearPaintingMask();
}
停用畫筆
功能: 停止白板的繪圖模式。
返回值:如果成功停用則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
private func stopDrawingButtonDidTouchUpInside() {
ArctosLinks.Conference.hostStopWhiteBoardDrawing { result in
switch result {
case .success():
break
case .failure(let error):
displayNotification(title: "🚨 Process ERROR", body: error.localizedDescription)
}
}
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun stopWhiteboardDrawing() {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostStopWhiteboardDrawing()
.getOrThrow()
}.onSuccess {
Log.d(TAG, "Successfully stop Whiteboard Drawing")
}.onFailure {
Log.d(TAG, "Failed : ${it.message}")
}
}
c++
#include "arctos_qt.h"
void startWhiteboardDrawing() {
arctos_app.media()->setPaintingMode(false);
}
類型
枚舉類別
畫筆顏色 (BrushColor)
功能:用於列舉啟用畫筆功能時,可以選擇的畫筆顏色,預設為紅色。
成員:
- red: 紅色。
- magenta: 半透明的洋紅色。
- yellow: 半透明的黃色。
- cyan: 青色。
- green: 橄欖綠色。
- black: 黑色。
- white: 白色。
參數:
- title: 顏色的英文描述。
Swift
/// Represents the color options available for the paint brush.
enum BrushColor: CaseIterable {
/// Red color (#EA3323)
case red
/// Magenta color (#80EA33F7)
case magenta
/// Yellow color (#80FFFF55)
case yellow
/// Cyan color (#75FBFD)
case cyan
/// Green color (#78A75A)
case green
/// Black color (#000000)
case black
/// White color (#FFFFFF)
case white
/// The English name of the current color.
public var title: String {
switch self {
case .red:
return "Red"
case .magenta:
return "Magenta"
case .yellow:
return "Yellow"
case .cyan:
return "Cyan"
case .green:
return "Green"
case .black:
return "Black"
case .white:
return "White"
}
}
Kotlin
sealed class BrushColor {
data object RED : BrushColor()
data object MAGENTA : BrushColor()
data object YELLOW : BrushColor()
data object GREEN : BrushColor()
data object CYAN : BrushColor()
data object BLOCK : BrushColor()
data object WHITE : BrushColor()
}
c++
// No predefined, supports all `QColor`, feel free to maintain own color set(s)
筆觸寬度 (BrushStroke)
功能:用於列舉啟用畫筆功能時,可以選擇的筆觸寬度,預設為粗線。
成員:
- bold: 粗線
- regular: 細線
參數:
- title: 筆觸寬度的英文描述。
Swift
/// Represents the stroke width options available for the paint brush.
enum BrushStroke: CaseIterable {
/// Bold stroke width.
case bold
/// Regular stroke width.
case regular
/// The English name of the current stroke width.
public var title: String {
switch self {
case .bold:
return "Bold"
case .regular:
return "Regular"
}
}
}
Kotlin
sealed class BrushStroke {
data object REGULAR : BrushStroke()
data object BOLD : BrushStroke()
}
c++
// No predefined, supports reasonable sizes in double, feel free to maintain own set(s)