Take the following steps to create an application that implements LEADTOOLS HTML5 automated annotations:
Start with the html file you created in Displaying an Image.
Add the following additional LEADTOOLS Annotation JavaScript libraries by adding the below script tags in the head section of your HTML after the previous LEADTOOLS libraries and copy the mentioned libs to the lib folder we created in Displaying an Image:
<script type="text/javascript" src="lib/Leadtools.Annotations.Engine.js"></script><script type="text/javascript" src="lib/Leadtools.Annotations.Rendering.JavaScript.js"></script><script type="text/javascript" src="lib/Leadtools.Annotations.Designers.js"></script><script type="text/javascript" src="lib/Leadtools.Annotations.Automation.js"></script><script type="text/javascript" src="lib/Leadtools.Demos.Annotations.js"></script>
If you do not find library (Leadtools.Demos.Annotations.js), you can build it yourself. It comes from a demo included within the setup examples and is located here: "<LEADTOOLS_INSTALLDIR>\Examples\JS\Annotations\Leadtools.Demos.Annotations"
The annotation framework allows the user to define the images which are used for various annotations (stamps, point, lock, and hotspot). A default set of images for these objects is included with the toolkit. For this tutorial, we will use these default images. In order to make these objects available to your application, copy the "<LEADTOOLS_INSTALLDIR>\Examples\JS\Documents\Resources" directory to the same directory as your HTML file.
Add two select elements to your page by inserting the below code in the body section of your HTML before the image viewer DIV. These elements will be used to select the current user-mode, and the various types of annotation objects.
<label for="currentObject">Annotation Object:</label><select id="currentObject"></select><label for="userMode">User mode:</label><select id="userMode"><option>Design</option><option>Run</option></select>
Update app.js with the following code. This code will set up the automation manager and automation object for the application.
window.onload = function () {// Get the container DIVvar imageViewerDiv = document.getElementById("imageViewerDiv");// Create the image viewer inside itvar createOptions = new lt.Controls.ImageViewerCreateOptions(imageViewerDiv);var imageViewer = new lt.Controls.ImageViewer(createOptions);// Add handler to show an alert on errorsimageViewer.itemError.add(function (sender, e) {alert("Error loading " + e.data.srcElement.src);});imageViewer.imageUrl = "https://demo.leadtools.com/images/png/pngimage.png";// Create and set up the automation manager using the HTML5 rendering enginevar renderingEngine = new lt.Annotations.Rendering.AnnHtml5RenderingEngine();var manager = new lt.Annotations.Automation.AnnAutomationManager.create(renderingEngine);// Create the default annotations objectsmanager.createDefaultObjects();var currentObject = document.getElementById("currentObject");var automationObjCount = manager.objects.count;for (var i = 0; i < automationObjCount; i++) {// Get the objectvar automationObj = manager.objects.item(i);// Add its name to the select elementvar name = automationObj.name;var id = automationObj.id;currentObject.options[currentObject.options.length] = new Option(name, id);}// Hook to its change eventcurrentObject.addEventListener("change", function () {// Get the object IDvar id = parseInt(currentObject.options[currentObject.selectedIndex].value);// Set it as the current object in the managermanager.currentObjectId = id;});// When the current object ID changes, we need to update our selectmanager.currentObjectIdChanged.add(function (sender, e) {var currentObjectId = manager.currentObjectId;for (var i = 0; i < currentObject.options.length; i++) {var id = parseInt(currentObject.options[i].value);if (id === currentObjectId) {currentObject.selectedIndex = i;break;}}});var userMode = document.getElementById("userMode");// Hook to its change eventuserMode.addEventListener("change", function () {// Get the selected modevar mode = userMode.options[userMode.selectedIndex].innerHTML;if (mode == "Design") {manager.userMode = lt.Annotations.Engine.AnnUserMode.design;} else {manager.userMode = lt.Annotations.Engine.AnnUserMode.run;}});// Create an instance of the Automation control object that works with LEADTOOLS ImageViewervar automationControl = new lt.Demos.Annotations.ImageViewerAutomationControl();// Attach our image viewerautomationControl.imageViewer = imageViewer;// Set the image viewer interactive modevar automationInteractiveMode = new lt.Demos.Annotations.AutomationInteractiveMode();automationInteractiveMode.automationControl = automationControl;imageViewer.defaultInteractiveMode = automationInteractiveMode;// set up the automation (will create the container as well)var automation = new lt.Annotations.Automation.AnnAutomation(manager, automationControl);// Add handler to update the container size when the image size changesimageViewer.itemChanged.add(function (sender, e) {var container = automation.container;container.size = container.mapper.sizeToContainerCoordinates(imageViewer.imageSize);});// set up this automation as the active oneautomation.active = true;// Hook to the run even so we know when an object enters run modeautomation.run.add(function (sender, e) {// e is of type AnnRunDesignerEventArgsif (e.operationStatus == lt.Annotations.Engine.AnnDesignerOperationStatus.start) {// Get the object being runalert("In run mode, you clicked an object of id " + e.object.id);}});// Optional: Add the resources to the automation manageraddResources(manager);}function addResources(manager) {// Add images for the stamp, point, hot spot, and lock annotationsvar resources = new lt.Annotations.Engine.AnnResources();manager.resources = resources;var rubberStampsResources = resources.rubberStamps;var imagesResources = resources.images;rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampApproved] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/approved.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampAssigned] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Assigned.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampClient] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Client.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampChecked] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/checked.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampCopy] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Copy.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampDraft] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Draft.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampExtended] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Extended.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampFax] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Fax.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampFaxed] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Faxed.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampImportant] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Important.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampInvoice] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Invoice.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampNotice] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Notice.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampPaid] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Paid.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampOfficial] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Official.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampOnFile] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Onfile.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampPassed] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Passed.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampPending] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Pending.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampProcessed] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Processed.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampReceived] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Received.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampRejected] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/rejected.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampRelease] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Release.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampSent] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Sent.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampShipped] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/Shipped.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampTopSecret] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/topsecret.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampUrgent] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/urgent.png");rubberStampsResources[lt.Annotations.Engine.AnnRubberStampType.stampVoid] = new lt.Annotations.Engine.AnnPicture("resources/objects/RubberStamps/void.png");imagesResources.add(new lt.Annotations.Engine.AnnPicture("resources/objects/Point.png"));imagesResources.add(new lt.Annotations.Engine.AnnPicture("resources/objects/lock.png"));imagesResources.add(new lt.Annotations.Engine.AnnPicture("resources/objects/hotspot.png"));}