Snippet
A Snippet is an image of LabVIEW code. LabVIEW 2009 added native support to embed actual code inside a PNG image. With this functionality it is possible to distribute code on a website, inside of a PNG image, and use the image to import the code into a VI.
Creation
Native
Starting with LabVIEW 2009, to create a snippet:
- Select the code to include on the Block Diagram.
- Sselect Create Snippet from selection from the Edit menu. [1]
Advanced
With the Code Capture Tool version 2.0 it's possible to create a snippet in any version from LabVIEW 7.0 and up.
Importing
LabVIEW 2009
To import the actual code into a VI, just drag and drop the image onto the block diagram of a VI. With Internet Explorer it's possible to drag and drop the image from a web-page directly into a VI's Block Diagram.
For Firefox and Google Chrome it's necessary to drop the image in an OS folder or use a plugin IETab (for Firefox).
LabVIEW 8.2, 8.5 and 8.6
To import a snippet into LabVIEW 8.20 it's possible if the snippet is created with the Code Capture Tool in the same (or an older) version of LabVIEW. Second you need a special tool developed by JCarmody. This tool is available for download in the LAVA Uncertified Code Repository.
Technique
The code of a LabVIEW snippet is stored inside a PNG Chunk named 'niVI'. The capitalization of this chunkname makes sure the code is removed if someone alters the image, thus preventing the creation of malicious snippets.
Inside this chunk a filestream representing a VI is stored. LabVIEW interprets this as a normal VI to be embedded.
Code integrity
Technically it's possible to have a different codeset embedded than represented by the PNG image chunk. This is proven by Darin.K on the NI Forum with the following snippet:
Upon dropping this image on a LabVIEW diagram another image was placed.
The name of the Snippet Chunk (niVI), describes this chunk as unsave to copy, tests with Paint.net shows that indeed the chunk is removed when the image is altered. However usage of Microsoft Paint show that the snippet is not removed upon editing of the image.