text: LEADTOOLS Support Imaging Imaging SDK Questions Technical solution between JS and c++ for display some tif files and annotations.
  Technical solution between JS and c++ for display some tif files and annotations. - Technical solution choice
  Options
  Email this topic
  Watch this topic
  Print this topic
  View
  » Normal
  Threaded
  Last Unread
  Previous Topic Next Topic
  This topic and its replies were posted before the current version of LEADTOOLS was released and may no longer be applicable.
  #1 Posted : Sunday, February 10, 2019 11:22:16 PM(UTC)
  Chris Lee
  Groups: Registered
  Posts: 3
  Thanks: 1 times
  Now, we are in the process of totally new project, which needs to display some tif files and manipulate some annotations on the image using LEADTOOLS.
  The project will mainly be using c++ for UI and database connection. And there are 2 solutions of using the LEADTOOLS ahead.
  We could use the c++ api or using the js version. Here're the pros and cons.
  1.c++
  document link: https://www.leadtools.co...leadtools/v20/main/api/#!
  pros:
  1. The c++ would usually be faster that js, and there is potential requirement of dealing with hundreds of annotations.
  cons:
  1. The c++ api is rather trivial. It's related to some low level windows painting apis and would potentially prolong the time cost of the project.
  2. js version
  document link: https://www.leadtools.co...html?platform=JavaScript
  pros:
  1. The js version of the viewer would be more high level and would be faster to develop.
  2. The viewer control would be sealed by some CEF technology and would gain some GPU hardware acceleration, while the c++ version would only be drawn by CPU.
  3. The JS document viewer is officially provided and could be considered of better understanding of the control and better code quality.
  4. It would be cross platform. Which is not important now, as It's not a valid requirement of the project so far.
  cons:
  1. There might be performance issues when dealing with large amounts of annotations. But I'm unsure of this considering the GPU hardware acceleration.
  So any suggestions?
  User Profile
  View All Posts by User
  View Thanks
  Try the latest version of LEADTOOLS for free for 60 days by downloading the evaluation: https://www.leadtools.com/downloads
  Wanna join the discussion? Login to your LEADTOOLS Support accountor Register a new forum account.
  #2 Posted : Tuesday, February 12, 2019 3:06:35 PM(UTC)
  Anthony Northrup
  Groups: Registered, Tech Support, Administrators
  Posts: 199
  Was thanked: 27 time(s) in 27 post(s)
  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.html
  Additional information regarding our C++ annotation functionality can be found here:
  https://www.leadtools.com/help/leadtools/v20/main/clib/leadtoolsrasterimagingfeatures-annotations--rollup.html
  JavaScript
  Our 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.html
  Regarding 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.
  Summary
  From 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.
  1 user thanked Anthony Northrup for this useful post.
  Chris Lee on 2/13/2019(UTC)
  User Profile
  View All Posts by User
  View Thanks
  #3 Posted : Wednesday, February 13, 2019 5:04:48 AM(UTC)
  Chris Lee
  Groups: Registered
  Posts: 3
  Thanks: 1 times
  Your help is greatly appreciated.
  User Profile
  View All Posts by User
  View Thanks
  LEADTOOLS Support Imaging Imaging SDK Questions Technical solution between JS and c++ for display some tif files and annotations.