LFileSettings::GetTag
#include "ltwrappr.h"
static L_INT LFileSettings::GetTag(uTag, pType, pCount, pData)
L_UINT16 uTag; |
/* tag to identify data in a TIFF file */ |
L_UINT16 * pType; |
/* data type of the tagged data */ |
L_UINT * pCount; |
/* number of data items */ |
L_VOID * pData; |
/* pointer to a buffer */ |
Parameter |
Description |
|
uTag |
Tag to identify the data in the TIFF file. Use the same tag that you specified in the LFileSettings::SetTag function. |
|
pType |
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. |
pCount |
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. |
|
pData |
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. |
Returns
>0 |
Length of the tagged data, in bytes. |
<= 0 |
An error occurred. Refer to Return Codes. |
Comments
It is often convenient to call this function twice, as follows:
1. |
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. |
2. |
Allocate the buffer. |
3. |
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.
Required DLLs and Libraries
LTFIL For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
See Also
Functions: |
|
Topics: |
Example
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 = 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(TEXT("C:\\Program Files\\LEAD Technologies, Inc\\LEADTOOLS 15.0\\Images\\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; }