# Annotation Use annotation to draw over shared content. Both users and hosts can annotate during screen sharing. ## Set up annotation 1. Check if the annotation feature is supported. ```swift // To check if annotation feature is supported ZMVideoSDK.shared()?.getShareHelper()?.isAnnotationFeatureSupport()) // If you are the share owner, you can check if your viewer has annotation rights. ZMVideoSDK.shared()?.getShareHelper()?.isViewerAnnotationDisabled() // If you are the share owner, you can enable or disable your viewer from annotation rights. ZMVideoSDK.shared()?.getShareHelper()?.disableViewerAnnotation(true/false) ``` If it is supported, continue. 2. Set up [screen sharing](/docs/video-sdk/macos/share/). Now you can use annotation in your implementation. ## Start and stop annotation In order to start annotation, the viewer must first have already subscribed to a shared view and input the same view to create a new `ZMVideoSDKAnnotationHelper` from the share helper. ```swift // Same as before, get the user's share canvas that you want to subscribe to let userShareCanvas: ZMVideoSDKVideoCanvas // Render the user's share stream into your view of choice. (This view is required for annotation) usersShareCanvas.subscribe(with: view, aspectMode: .panAndScan, andResolution: ._Auto) // Create annotation helper using the same view above and check for permission again if let annotationHelper = ZMVideoSDK.shared()?.getShareHelper()?.createAnnotationHelper(cell.speakerView), annotationHelper.canDoAnnotation() { annotationHelper.startAnnotation() // To stop annotation later annotationHelper.stopAnnotation() } ``` ## Annotation tools There are a list of annotation tools available. The full list of tools is located under `ZoomVideoSDKAnnotationToolType`. ```objectivec // Enum of ZMVideoSDKAnnotationToolType ZMVideoSDKAnnotationToolType_None, ZMVideoSDKAnnotationToolType_Pen, ZMVideoSDKAnnotationToolType_HighLighter, ZMVideoSDKAnnotationToolType_AutoLine, ZMVideoSDKAnnotationToolType_AutoRectangle, ZMVideoSDKAnnotationToolType_AutoEllipse, ZMVideoSDKAnnotationToolType_AutoArrow, ZMVideoSDKAnnotationToolType_AutoRectangleFill, ZMVideoSDKAnnotationToolType_AutoEllipseFill, ZMVideoSDKAnnotationToolType_SpotLight, ZMVideoSDKAnnotationToolType_Arrow, ZMVideoSDKAnnotationToolType_ERASER, ZMVideoSDKAnnotationToolType_Textbox, ZMVideoSDKAnnotationToolType_Picker, ZMVideoSDKAnnotationToolType_AutoRectangleSemiFill, ZMVideoSDKAnnotationToolType_AutoEllipseSemiFill, ZMVideoSDKAnnotationToolType_AutoDoubleArrow, ZMVideoSDKAnnotationToolType_AutoDiamond, ZMVideoSDKAnnotationToolType_AutoStampArrow, ZMVideoSDKAnnotationToolType_AutoStampCheck, ZMVideoSDKAnnotationToolType_AutoStampX, ZMVideoSDKAnnotationToolType_AutoStampStar, ZMVideoSDKAnnotationToolType_AutoStampHeart, ZMVideoSDKAnnotationToolType_AutoStampQm ``` Upon selecting the tool, the user can also get or set the current tool's color or width. ```swift // Get/set tool type annotationHelper.getToolType() annotationHelper.setToolType(.pen) // Get/set tool's color - Color annotationHelper.getToolColor() annotationHelper.setToolColor(.red) // Get/set tool's width - long annotationHelper.getToolWidth() annotationHelper.setToolWidth(5) ``` ## Other annotation methods You can also undo or redo annotations. And you can clear all annotations, just your own, or just others' annotations. ```swift annotationHelper.undo() annotationHelper.redo() annotationHelper.clear(.all) // .all, .my, .others ``` See the [ZMVideoSDKAnnotationHelper](https://marketplacefront.zoom.us/sdk/custom/macos/interface_z_m_video_s_d_k_annotation_helper.html) class reference and the [ZMVideoSDKShareHelper](https://marketplacefront.zoom.us/sdk/custom/macos/interface_z_m_video_s_d_k_share_helper.html) class reference for details. ## Destroy annotation Once annotation is no longer valid or required, you can destory it by calling the `destroyAnnotationHelper` method in the the [ZMVideoSDKShareHelper](https://marketplacefront.zoom.us/sdk/custom/macos/interface_z_m_video_s_d_k_share_helper.html) class. ```swift ZoomVideoSDK.shareInstance()?.getShareHelper()?.destroy(annotationHelper) ```