62 lines
1.3 KiB
C++
62 lines
1.3 KiB
C++
#ifndef NSVPLAY_SUBTITLES_H
|
|
#define NSVPLAY_SUBTITLES_H
|
|
|
|
#include "main.h"
|
|
#include "../nsvbs.h"
|
|
|
|
class SubsItem {
|
|
public:
|
|
SubsItem(unsigned int ptimestart, unsigned int ptimeend, const char *ptext) :
|
|
timestart(ptimestart) , timeend(ptimeend) {
|
|
text=_strdup(ptext);
|
|
xPos=128;
|
|
yPos=255;
|
|
colorRed=colorGreen=colorBlue=0xff;
|
|
extraDataSize=0;
|
|
extraData=0;
|
|
muxed_subtitle=0;
|
|
fontSize=origFontSize=0;
|
|
}
|
|
~SubsItem() {
|
|
free((void*)text);
|
|
if(extraDataSize) free((void *)extraData);
|
|
}
|
|
|
|
unsigned int timestart;
|
|
unsigned int timeend;
|
|
const char *text;
|
|
|
|
unsigned char xPos, yPos;
|
|
unsigned char colorRed, colorGreen, colorBlue;
|
|
int extraDataSize;
|
|
const void *extraData;
|
|
|
|
int muxed_subtitle; //so we free it when we seek/display
|
|
|
|
int fontSize;
|
|
|
|
int origFontSize;
|
|
};
|
|
|
|
class Subtitles {
|
|
public:
|
|
Subtitles(const char *filename);
|
|
|
|
SubsItem *getSubtitle(unsigned int time, unsigned int frame); // time in ms
|
|
void addSubtitlePacket(SUBTITLE_INFO *sti);
|
|
|
|
void setFontSizeModifier(int size) { m_font_size_mod=size; }
|
|
|
|
private:
|
|
void decodeSrtFile(char *text);
|
|
unsigned int getTimeFromSrtText(const char *text);
|
|
|
|
void decodeSubFile(char *text);
|
|
|
|
ClassList<SubsItem> m_subs;
|
|
int m_frame_based;
|
|
int m_last_sub;
|
|
int m_font_size_mod;
|
|
};
|
|
|
|
#endif |