Gets the data that is ready to be saved as tagged data in a TIFF file. This lets you see the data that was specified with the LFileSettings::SetTag function.
#include "ltwrappr.h"
static L_INT LFileSettings::GetTag(uTag, pType, pCount, pData)
Tag to identify the data in the TIFF file. Use the same tag that you specified in the LFileSettings::SetTag function.
Address of the variable to be updated with the tagged data type. The following are possible values:
Value | Meaning |
---|---|
TAG_BYTE | [1] Byte. |
TAG_ASCII | [2] Byte in the range of 0 to 255. |
TAG_SBYTE | [6] Byte used as signed number in the range of -128 to +127. |
TAG_UNDEFINED | [7] Byte, with application-defined usage. |
TAG_SHORT | [3] Two bytes, unsigned. |
TAG_SSHORT | [8] Two bytes, signed. |
TAG_LONG | [4] Four bytes, unsigned. |
TAG_SLONG | [9] Four bytes, signed. |
TAG_RATIONAL | [5] Eight bytes, used as a pair of unsigned long integers, where the first number is the numerator and the second is the denominator of a fraction. |
TAG_SRATIONAL | [10] Eight bytes, used as a pair of signed long integers, where the first number is the numerator and the second is the denominator of a fraction. |
TAG_FLOAT | [11] Four bytes used as a floating point number. |
TAG_DOUBLE | [12] Eight bytes used as a double-precision floating point number. |
TAG_IFD | [13] 32-bit IFD offset. |
TAG_LONG8 | [16] Unsigned 64-bit integer (valid only for BigTIFF formats). |
TAG_SLONG8 | [17] Signed 64-bit integer (valid only for BigTIFF formats). |
TAG_IFD8 | [18] 64-bit IFD offset (valid only for BigTIFF formats). |
Address of the variable to be updated with the count of data items. The count is based on the tagged data type. For example, if the count is 2 and the data type is TAG_DOUBLE, the required buffer size is 16.
Pointer to the buffer to be updated with the data. You can pass NULL if you want to use this function's return value to determine the required buffer size.
Value | Meaning |
---|---|
>0 | Length of the tagged data, in bytes. |
<= 0 | An error occurred. Refer to Return Codes. |
It is often convenient to call this function twice, as follows:
Call the function the first time, specifying NULL in the pData parameter, and using the return value to determine the required size of the buffer.
Allocate the buffer.
Call the function the second time, passing a pointer to your buffer in the pData parameter.
For general information about TIFF tags, refer to Implementing TIFF Comments and Tags.
To detect whether a file has annotation information, you should call LFileSettings::GetTag and see if ANNTAG_TYPE is present.
Win32, x64.
L_INT LFileSettings__GetTagExample()
{
L_INT nRet;
L_TCHAR msgbuf[80]; /* buffer for the message string */
L_UINT16 LogoPosition = 0x8001; /* my private tag */
L_UINT16 TagType = TAG_SSHORT; /* tagged data type */
L_UINT32 TagCount = 4; /* count of data items */
L_INT TagData[] = {5, 5, 24, 37};
L_VOID * pTagData = &TagData; /* pointer to the buffer containing the data */
LBitmap LeadBitmap;
LFileSettings fileSettings;
/* Set the tag data to be saved */
nRet = LeadBitmap.Load(MAKE_IMAGE_PATH(TEXT("clean.tif")));
if(nRet != SUCCESS)
return nRet;
nRet = fileSettings.SetTag(LogoPosition, TagType, TagCount, pTagData);
if(nRet != SUCCESS)
return nRet;
/* Clear the variables so that we can validate the data */
TagType = 0;
TagCount = 0;
TagData[0] = 0;
TagData[1] = 0;
TagData[2] = 0;
TagData[3] = 0;
/* Get the tag data that is ready to be saved */
nRet = fileSettings.GetTag(LogoPosition, &TagType, &TagCount, pTagData);
if(nRet <=0 )
return nRet;
/* Display a message showing the data */
if ((TagType == TAG_SSHORT) && (TagCount == 4))
{
wsprintf(msgbuf, TEXT("X = %d\nY= %d\nWidth = %d\nHeight = %d"),
((L_INT *)pTagData)[0],
((L_INT *)pTagData)[1],
((L_INT *)pTagData)[2],
((L_INT *)pTagData)[3]);
MessageBox (NULL, msgbuf, TEXT("Logo Position"), MB_OK);
}
/* Save the file with the tag */
LeadBitmap.SetFileName(MAKE_IMAGE_PATH(TEXT("Test.tif")));
nRet = LeadBitmap.Save(FILE_TIF, LeadBitmap.GetBitsPerPixel(), 0, 0);
if(nRet != SUCCESS)
return nRet;
/* Clear the tag from memory */
nRet = fileSettings.SetTag(0, 0, 0, NULL);
if(nRet != SUCCESS)
return nRet;
return SUCCESS;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document