Helper class, has methods to deal with Photoshop "Information Resource Blocks" (IRBs).
More...
#include <photoshop.hpp>
|
static bool | isIrb (const byte *pPsData) |
| Checks an IRB. More...
|
|
static bool | valid (const byte *pPsData, size_t sizePsData) |
| Validates all IRBs. More...
|
|
static int | locateIrb (const byte *pPsData, size_t sizePsData, uint16_t psTag, const byte **record, uint32_t &sizeHdr, uint32_t &sizeData) |
| Locates the data for a Photoshop tag in a Photoshop formatted memory buffer. Operates on raw data to simplify reuse. More...
|
|
static int | locateIptcIrb (const byte *pPsData, size_t sizePsData, const byte **record, uint32_t &sizeHdr, uint32_t &sizeData) |
| Forwards to locateIrb() with psTag = iptc_.
|
|
static int | locatePreviewIrb (const byte *pPsData, size_t sizePsData, const byte **record, uint32_t &sizeHdr, uint32_t &sizeData) |
| Forwards to locatePreviewIrb() with psTag = preview_.
|
|
static DataBuf | setIptcIrb (const byte *pPsData, size_t sizePsData, const IptcData &iptcData) |
| Set the new IPTC IRB, keeps existing IRBs but removes the IPTC block if there is no new IPTC data to write. More...
|
|
|
static constexpr std::array< const char *, 4 > | irbId_ {"8BIM", "AgHg", "DCSR", "PHUT"} |
| Photoshop IRB markers
|
|
static constexpr auto | ps3Id_ = "Photoshop 3.0\0" |
| Photoshop marker
|
|
static constexpr uint16_t | iptc_ = 0x0404 |
| Photoshop IPTC marker
|
|
static constexpr uint16_t | preview_ = 0x040c |
| Photoshop preview marker
|
|
Helper class, has methods to deal with Photoshop "Information Resource Blocks" (IRBs).
◆ isIrb()
static bool Exiv2::Photoshop::isIrb |
( |
const byte * |
pPsData | ) |
|
|
static |
Checks an IRB.
- Parameters
-
pPsData | Existing IRB buffer. It is expected to be of size 4. |
- Returns
- true if the IRB marker is known
- Todo:
- This should be an implementation detail and not exposed in the API. An attacker could try to pass a smaller buffer or null pointer.
◆ locateIrb()
static int Exiv2::Photoshop::locateIrb |
( |
const byte * |
pPsData, |
|
|
size_t |
sizePsData, |
|
|
uint16_t |
psTag, |
|
|
const byte ** |
record, |
|
|
uint32_t & |
sizeHdr, |
|
|
uint32_t & |
sizeData |
|
) |
| |
|
static |
Locates the data for a Photoshop tag in a Photoshop formatted memory buffer. Operates on raw data to simplify reuse.
- Parameters
-
pPsData | Pointer to buffer containing entire payload of Photoshop formatted data (from APP13 Jpeg segment) |
sizePsData | Size in bytes of pPsData. |
psTag | Tag number of the block to look for. |
record | Output value that is set to the start of the data block within pPsData (may not be null). |
sizeHdr | Output value that is set to the size of the header within the data block pointed to by record (may not be null). |
sizeData | Output value that is set to the size of the actual data within the data block pointed to by record (may not be null). |
- Returns
- 0 if successful;
3 if no data for psTag was found in pPsData;
-2 if the pPsData buffer does not contain valid data.
◆ setIptcIrb()
static DataBuf Exiv2::Photoshop::setIptcIrb |
( |
const byte * |
pPsData, |
|
|
size_t |
sizePsData, |
|
|
const IptcData & |
iptcData |
|
) |
| |
|
static |
Set the new IPTC IRB, keeps existing IRBs but removes the IPTC block if there is no new IPTC data to write.
- Parameters
-
pPsData | Existing IRB buffer |
sizePsData | Size of the IRB buffer, may be 0 |
iptcData | Iptc data to embed, may be empty |
- Returns
- A data buffer containing the new IRB buffer, may have 0 size
◆ valid()
static bool Exiv2::Photoshop::valid |
( |
const byte * |
pPsData, |
|
|
size_t |
sizePsData |
|
) |
| |
|
static |
Validates all IRBs.
- Parameters
-
pPsData | Existing IRB buffer |
sizePsData | Size of the IRB buffer, may be 0 |
- Returns
- true if all IRBs are valid;
false otherwise
The documentation for this struct was generated from the following file: