Hello Chris,
Apologies for the delay in getting back to you on this. From your statements/questions it's unclear if you intend on using our viewers, or building your own using our toolkit as the internal calls. Below is a brief summary for both our C++ and JavaScript toolkits with regards to annotations:
C++We do have higher level controls for viewing/modifying annotations without requiring the low-level calls. As you can see from the following tutorial, the only interaction with the message loop itself is for handling our custom WM_LTANNEVENT message (seen in step 15):
https://www.leadtools.com/help/leadtools/v20/main/clib/implementing-an-automated-annotations-program-cpp-6-0-and-later3.htmlAdditional information regarding our C++ annotation functionality can be found here:
https://www.leadtools.com/help/leadtools/v20/main/clib/leadtoolsrasterimagingfeatures-annotations--rollup.htmlJavaScriptOur JavaScript viewer is more similar to our .NET annotation functionality, both in class/namespace structure and internal logic. And you are correct, getting annotations working takes about 50 lines of code (including both HTML and JavaScript) for the minimal functionality. The following tutorial is a little more than minimal, but it's a good demonstration of how to use the annotation functionality:
https://www.leadtools.com/help/leadtools/v20/dh/javascript/to/working-with-automated-annotations.htmlRegarding your statement about CEF technology, and GPU hardware acceleration: I believe our current control uses an HTML5 canvas for all of its drawing, because of this no GPU acceleration is used. You could of course use our SDK for the internal annotation object handling, and then use your own GPU accelerated drawing methods, however we do not currently ship an example of this functionality.
Regarding the JavaScript DocumentViewer: This uses a back-end service written using our document SDK. The source for these services are provided along with our SDK. Unfortunately our document SDK is
currently only available for .NET and Java, so C/C++ would not be supported as a back-end. What you could do however, is use our
ImageViewer directly (which the
DocumentViewer uses internally) and perform all the loading/saving requests yourself. I haven't built a back-end using C++ myself, however all the image loading/conversion and annotation functionality are fully available, just in the more low-level form.
SummaryFrom my own experience, you'll probably find it easier to use our JavaScript as a front-end viewer, and use a back-end service to handle your database connections or other functionality not supported through our native JavaScript SDK; the most common of which is file conversion. Web browsers typically do not have support for viewing formats such as DOCX, or PDF, without external plugins. Our DocumentViewer will utilize a back-end service to convert these files into PNG or SVG (to preserve the vector quality) for viewing.
Thanks,
Anthony Northrup
Developer Support Engineer
LEAD Technologies, Inc.