123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #ifndef ID3LIB_TAG_H
- #define ID3LIB_TAG_H
- #include <windows.h>
- #include <wchar.h>
- #include <stdio.h>
- #include "id3_types.h"
- #include "id3_frame.h"
- #include "id3_header_frame.h"
- #include "id3_header_tag.h"
- #include "id3_version.h"
- #define BUFF_SIZE (65536)
- struct ID3_Elem
- {
- ID3_Elem *next;
- ID3_Frame *frame;
- uchar *binary;
- size_t binarySize;
- bool tagOwns;
- };
- class ID3_Tag
- {
- public:
- ID3_Tag();
- ~ID3_Tag(void);
- void Clear(void);
- bool HasChanged(void);
- void SetUnsync(bool newSync);
- void SetExtendedHeader(bool ext);
- void SetCompression(bool comp);
- void SetPadding(bool pad);
- void ForcePading(luint _padding);
- void AddFrame(ID3_Frame *newFrame, bool freeWhenDone = false);
- void RemoveFrame(ID3_Frame *oldFrame);
- luint Render(uchar *buffer);
- luint Size(void);
- void Parse(const uchar header[ID3_TAGHEADERSIZE], const uchar *buffer);
- ID3_Frame *Find(ID3_FrameID id);
- ID3_Frame *Find(ID3_FrameID id, ID3_FieldID fld, luint data);
- ID3_Frame *Find(ID3_FrameID id, ID3_FieldID fld, const wchar_t *data);
- ID3_Frame *Find(ID3_FrameID id, ID3_FieldID fld, const char *data);
- luint NumFrames(void);
- ID3_Frame *GetFrameNum(luint num);
- ID3_Frame *operator[] (luint num);
-
- void SetupTag();
- void SetVersion(uchar ver, uchar rev);
- void ClearList(ID3_Elem *list);
- void DeleteElem(ID3_Elem *cur);
- void AddBinary(const uchar *buffer, luint size);
- void ExpandBinaries(const uchar *buffer, luint size);
- void ProcessBinaries(ID3_FrameID whichFrame = ID3FID_NOFRAME, bool attach = true);
- void RemoveFromList(ID3_Elem *which, ID3_Elem **list);
- ID3_Elem *GetLastElem(ID3_Elem *list);
- ID3_Elem *Find(ID3_Frame *frame);
- luint PaddingSize(luint curSize);
- void RenderExtHeader(uchar *buffer);
- luint GetUnSyncSize (uchar *buffer, luint size);
- void UnSync (uchar *destData, luint destSize, uchar *sourceData, luint sourceSize);
- luint ReSync (uchar *binarySourceData, luint sourceSize);
- uchar version;
- uchar revision;
- ID3_Elem *frameList;
- ID3_Elem *binaryList;
- ID3_Elem *findCursor;
- bool syncOn;
- bool compression;
- bool padding;
- bool extendedHeader;
- bool hasChanged;
-
- luint forcedPadding;
-
- bool globalUnsync;
- static luint instances;
- ID3_Quirks quirks;
- uchar *syncBuffer;
- };
- ID3_Tag& operator<< (ID3_Tag& tag, ID3_Frame& frame);
- ID3_Tag& operator<< (ID3_Tag& tag, ID3_Frame *frame);
- #endif
|