mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 06:53:43 +00:00
101 lines
2.4 KiB
C++
101 lines
2.4 KiB
C++
#pragma once
|
|
|
|
#include "DataTypes.h"
|
|
#include "PascalStr.h"
|
|
|
|
class GpIOStream;
|
|
|
|
namespace PortabilityLayer
|
|
{
|
|
struct CombinedTimestamp;
|
|
|
|
enum FinderFileFlags
|
|
{
|
|
FINDER_FILE_FLAG_ALIAS = (1 << 15),
|
|
FINDER_FILE_FLAG_INVISIBLE = (1 << 14),
|
|
FINDER_FILE_FLAG_BUNDLE = (1 << 13),
|
|
FINDER_FILE_FLAG_NAME_LOCKED = (1 << 12),
|
|
FINDER_FILE_FLAG_STATIONARY = (1 << 11),
|
|
FINDER_FILE_FLAG_CUSTOM_ICON = (1 << 10),
|
|
FINDER_FILE_FLAG_INITED = (1 << 8),
|
|
FINDER_FILE_FLAG_NO_INITS = (1 << 7),
|
|
FINDER_FILE_FLAG_SHARED = (1 << 6),
|
|
FINDER_FILE_FLAG_COLOR_BIT2 = (1 << 3),
|
|
FINDER_FILE_FLAG_COLOR_BIT1 = (1 << 2),
|
|
FINDER_FILE_FLAG_COLOR_BIT0 = (1 << 1),
|
|
};
|
|
|
|
struct MacFileProperties
|
|
{
|
|
MacFileProperties();
|
|
|
|
char m_fileType[4];
|
|
char m_fileCreator[4];
|
|
int16_t m_xPos;
|
|
int16_t m_yPos;
|
|
uint16_t m_finderFlags;
|
|
uint8_t m_protected;
|
|
int64_t m_createdTimeMacEpoch;
|
|
int64_t m_modifiedTimeMacEpoch;
|
|
};
|
|
|
|
struct MacFilePropertiesSerialized
|
|
{
|
|
static const unsigned int kOffsetFileType = 0;
|
|
static const unsigned int kOffsetFileCreator = 4;
|
|
static const unsigned int kOffsetXPos = 8;
|
|
static const unsigned int kOffsetYPos = 10;
|
|
static const unsigned int kOffsetFinderFlags = 12;
|
|
static const unsigned int kOffsetProtected = 14;
|
|
static const unsigned int kOffsetCreatedDate = 15;
|
|
static const unsigned int kOffsetModifiedDate = 23;
|
|
|
|
static const unsigned int kSize = 31;
|
|
|
|
uint8_t m_data[kSize];
|
|
|
|
void Deserialize(MacFileProperties &props) const;
|
|
void Serialize(const MacFileProperties &props);
|
|
|
|
bool WriteAsPackage(GpIOStream &stream, const CombinedTimestamp &ts) const;
|
|
bool WriteIsolated(GpIOStream &stream, const CombinedTimestamp &ts) const;
|
|
bool ReadFromPackage(GpIOStream &stream);
|
|
|
|
static const char *GetPackagedName();
|
|
};
|
|
|
|
struct MacFileInfo
|
|
{
|
|
MacFileInfo();
|
|
|
|
PascalStr<64> m_fileName;
|
|
uint16_t m_commentSize;
|
|
uint32_t m_dataForkSize;
|
|
uint32_t m_resourceForkSize;
|
|
|
|
MacFileProperties m_properties;
|
|
};
|
|
}
|
|
|
|
namespace PortabilityLayer
|
|
{
|
|
inline MacFileProperties::MacFileProperties()
|
|
: m_xPos(0)
|
|
, m_yPos(0)
|
|
, m_finderFlags(0)
|
|
, m_protected(0)
|
|
, m_createdTimeMacEpoch(0)
|
|
, m_modifiedTimeMacEpoch(0)
|
|
{
|
|
m_fileType[0] = m_fileType[1] = m_fileType[2] = m_fileType[3] = '\0';
|
|
m_fileCreator[0] = m_fileCreator[1] = m_fileCreator[2] = m_fileCreator[3] = '\0';
|
|
}
|
|
|
|
inline MacFileInfo::MacFileInfo()
|
|
: m_dataForkSize(0)
|
|
, m_resourceForkSize(0)
|
|
, m_commentSize(0)
|
|
{
|
|
}
|
|
}
|