Encrypt Annotation Object

The Encrypt annotation object (ANNOBJECT_ENCRYPT) is a rectangular object that is used to encrypt rectangular portions of a bitmap.

It can also be used to encrypt the entire bitmap. In automated mode, the Encrypt object is created by clicking and dragging the mouse to create the rectangular Encrypt object. In design mode, the Encrypt object is visible but partially transparent to show the part of the image that it covers. In run mode, the Encrypt object is invisible.

You must call the LAnnContainer::EncryptApply function to apply the Encrypt object. Once applied, the portion of the bitmap under the Encrypt object becomes scrambled, and the Encrypt object state changes to decryptor. Using different keys before calling this function gives different scrambling patterns. The decryptor state differs from the encryptor state in that a decryptor cannot be moved, and cannot be changed to an encryptor. The scrambling can be removed by calling the LAnnContainer::EncryptApply on the Decrypt object with the appropriate arguments. If successful, the decryptor state changes to encryptor. An Encrypt object in the encryptor state can be moved, can have its key changed, and can be changed to a decryptor object.

The Encrypt object is useful for encrypting portions of a bitmap. After encrypting, the scrambled bitmap cannot easily be unscrambled without the associated annotation file. The scrambling can be removed by using the associated annotation file, or by using automation mode to manually change the state from encryptor to a decryptor, position it correctly, and setting the key appropriately.

Overlapping regions can be encrypted. When encrypting overlapping regions, note the following points:

Use the LBitmap::Scramble function to scramble all or a portion of a Bitmap. Scrambling a rectangular area means that the pixels in that area are shuffled around into a pseudo-random location within the area.

The LBitmap::Scramble function can be used directly on a bitmap, and does not depend on annotations in any way.

Use the LAnnEncrypt::GetEncryptOptions function to get the encrypt options of an Encrypt or a Decrypt object. These options are in an ANNENCRYPTOPTIONS structure.

Use the LAnnEncrypt::SetEncryptOptions function to set the encrypt options of an Encrypt or a Decrypt object. These options are in an ANNENCRYPTOPTIONS structure.

Use the LAnnEncrypt::GetSecondaryMetafile function to retrieve the current metafile for an Encrypt object in a ‘decryptor’ state.

Use the LAnnEncrypt::GetMetafile function to retrieve the current metafile for an Encrypt object in an ‘encryptor’ state.

Use the LAnnEncrypt::SetMetafile function to change the metafile for an Encrypt or Decrypt object.

For information on flipping, reversing or rotating annotation objects, refer to Flipping, Reversing and Rotating Annotation Objects.

With low-level functions, you must define the size and position of the rectangle. Other applicable properties have the following defaults, which you can change:

Visible

Defaults to FALSE. It can be changed using the LAnnotation::SetVisible function.

Selected

Defaults to FALSE. It can be changed using the LAnnotation::SetSelected function.

Name

Defaults to an empty string. It can be changed using the LAnnotation::SetNameOptions function.

Metafile

Defaults to a black skeleton key. It can be changed using the LAnnEncrypt::SetMetafile function.

Secondary Metafile

Defaults to a red skeleton key. It can be changed using the LAnnEncrypt::SetMetafile function.

Hyperlink

Defaults to ANNLINK_NONE. It can be changed using the LAnnotation::SetHyperlink function.

Tag (identifier)

Defaults to 0. It can be changed using the LAnnotation::SetTag function.

Window handle

Defaults to NULL or the handle inherited from the container. It can be changed for all objects using LAnnContainer::SetWnd.

User mode

Defaults to design mode or the mode inherited from the container. It can be changed for all objects using LAnnContainer::SetUserMode.

Related topics:

LAnnEncrypt::GetEncryptOptions

LAnnEncrypt::SetEncryptOptions

LAnnContainer::EncryptApply

LBitmap::Scramble

 

Implementing Annotations.

Types of Annotations.

Low-Level Coordinate System for Annotations.

Annotation Objects - Automated Features