11 #include "threads/CriticalSection.h"    17 #define SUBTITLE_CACHESIZE 50    18 #define TELETEXT_PAGE_SIZE (40 * 25)    20 #define number2char(c) ((c) + (((c) <= 9) ? '0' : ('A' - 10)))    57 enum enumTeletextColor
    67   TXT_ColorMenu1 = (4*8),
    72   TXT_Color_SIZECOLTABLE
   121   NAT_MAX_FROM_HEADER = 13,
   130 const unsigned char CountryConversionTable[] = { NAT_UK, NAT_DE, NAT_SW, NAT_IT, NAT_FR, NAT_SP, NAT_CZ, NAT_RO};
   131 const unsigned char MapTblFG[] = {  0,  0,  8,  8, 16, 16, 16 };
   132 const unsigned char MapTblBG[] = {  8, 16,  8, 16,  8, 16, 24 };
   133 const unsigned short DefaultColors[] =  
   135   0x000, 0x00f, 0x0f0, 0x0ff, 0xf00, 0xf0f, 0xff0, 0xfff,
   136   0x000, 0x007, 0x070, 0x077, 0x700, 0x707, 0x770, 0x777,
   137   0x50f, 0x07f, 0x7f0, 0xbff, 0xac0, 0x005, 0x256, 0x77c,
   138   0x333, 0x77f, 0x7f7, 0x7ff, 0xf77, 0xf7f, 0xff7, 0xddd,
   139   0x420, 0x210, 0x420, 0x000, 0x000
   143 const unsigned char dehamming[] =
   145   0x01, 0xFF, 0x01, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0x02, 0x01, 0xFF, 0x0A, 0xFF, 0xFF, 0x07,
   146   0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x06, 0xFF, 0xFF, 0x0B, 0xFF, 0x00, 0x03, 0xFF,
   147   0xFF, 0x0C, 0x01, 0xFF, 0x04, 0xFF, 0xFF, 0x07, 0x06, 0xFF, 0xFF, 0x07, 0xFF, 0x07, 0x07, 0x07,
   148   0x06, 0xFF, 0xFF, 0x05, 0xFF, 0x00, 0x0D, 0xFF, 0x06, 0x06, 0x06, 0xFF, 0x06, 0xFF, 0xFF, 0x07,
   149   0xFF, 0x02, 0x01, 0xFF, 0x04, 0xFF, 0xFF, 0x09, 0x02, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0x03, 0xFF,
   150   0x08, 0xFF, 0xFF, 0x05, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x02, 0x03, 0xFF, 0x03, 0xFF, 0x03, 0x03,
   151   0x04, 0xFF, 0xFF, 0x05, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0x02, 0x0F, 0xFF, 0x04, 0xFF, 0xFF, 0x07,
   152   0xFF, 0x05, 0x05, 0x05, 0x04, 0xFF, 0xFF, 0x05, 0x06, 0xFF, 0xFF, 0x05, 0xFF, 0x0E, 0x03, 0xFF,
   153   0xFF, 0x0C, 0x01, 0xFF, 0x0A, 0xFF, 0xFF, 0x09, 0x0A, 0xFF, 0xFF, 0x0B, 0x0A, 0x0A, 0x0A, 0xFF,
   154   0x08, 0xFF, 0xFF, 0x0B, 0xFF, 0x00, 0x0D, 0xFF, 0xFF, 0x0B, 0x0B, 0x0B, 0x0A, 0xFF, 0xFF, 0x0B,
   155   0x0C, 0x0C, 0xFF, 0x0C, 0xFF, 0x0C, 0x0D, 0xFF, 0xFF, 0x0C, 0x0F, 0xFF, 0x0A, 0xFF, 0xFF, 0x07,
   156   0xFF, 0x0C, 0x0D, 0xFF, 0x0D, 0xFF, 0x0D, 0x0D, 0x06, 0xFF, 0xFF, 0x0B, 0xFF, 0x0E, 0x0D, 0xFF,
   157   0x08, 0xFF, 0xFF, 0x09, 0xFF, 0x09, 0x09, 0x09, 0xFF, 0x02, 0x0F, 0xFF, 0x0A, 0xFF, 0xFF, 0x09,
   158   0x08, 0x08, 0x08, 0xFF, 0x08, 0xFF, 0xFF, 0x09, 0x08, 0xFF, 0xFF, 0x0B, 0xFF, 0x0E, 0x03, 0xFF,
   159   0xFF, 0x0C, 0x0F, 0xFF, 0x04, 0xFF, 0xFF, 0x09, 0x0F, 0xFF, 0x0F, 0x0F, 0xFF, 0x0E, 0x0F, 0xFF,
   160   0x08, 0xFF, 0xFF, 0x05, 0xFF, 0x0E, 0x0D, 0xFF, 0xFF, 0x0E, 0x0F, 0xFF, 0x0E, 0x0E, 0xFF, 0x0E
   164 const unsigned char deparity[] =
   166   ' ' , 0x01, 0x02, 
' ' , 0x04, 
' ' , 
' ' , 0x07, 0x08, 
' ' , 
' ' , 0x0b, 
' ' , 0x0d, 0x0e, 
' ' ,
   167   0x10, 
' ' , 
' ' , 0x13, 
' ' , 0x15, 0x16, 
' ' , 
' ' , 0x19, 0x1a, 
' ' , 0x1c, 
' ' , 
' ' , 0x1f,
   168   0x20, 
' ' , 
' ' , 0x23, 
' ' , 0x25, 0x26, 
' ' , 
' ' , 0x29, 0x2a, 
' ' , 0x2c, 
' ' , 
' ' , 0x2f,
   169   ' ' , 0x31, 0x32, 
' ' , 0x34, 
' ' , 
' ' , 0x37, 0x38, 
' ' , 
' ' , 0x3b, 
' ' , 0x3d, 0x3e, 
' ' ,
   170   0x40, 
' ' , 
' ' , 0x43, 
' ' , 0x45, 0x46, 
' ' , 
' ' , 0x49, 0x4a, 
' ' , 0x4c, 
' ' , 
' ' , 0x4f,
   171   ' ' , 0x51, 0x52, 
' ' , 0x54, 
' ' , 
' ' , 0x57, 0x58, 
' ' , 
' ' , 0x5b, 
' ' , 0x5d, 0x5e, 
' ' ,
   172   ' ' , 0x61, 0x62, 
' ' , 0x64, 
' ' , 
' ' , 0x67, 0x68, 
' ' , 
' ' , 0x6b, 
' ' , 0x6d, 0x6e, 
' ' ,
   173   0x70, 
' ' , 
' ' , 0x73, 
' ' , 0x75, 0x76, 
' ' , 
' ' , 0x79, 0x7a, 
' ' , 0x7c, 
' ' , 
' ' , 0x7f,
   174   0x00, 
' ' , 
' ' , 0x03, 
' ' , 0x05, 0x06, 
' ' , 
' ' , 0x09, 0x0a, 
' ' , 0x0c, 
' ' , 
' ' , 0x0f,
   175   ' ' , 0x11, 0x12, 
' ' , 0x14, 
' ' , 
' ' , 0x17, 0x18, 
' ' , 
' ' , 0x1b, 
' ' , 0x1d, 0x1e, 
' ' ,
   176   ' ' , 0x21, 0x22, 
' ' , 0x24, 
' ' , 
' ' , 0x27, 0x28, 
' ' , 
' ' , 0x2b, 
' ' , 0x2d, 0x2e, 
' ' ,
   177   0x30, 
' ' , 
' ' , 0x33, 
' ' , 0x35, 0x36, 
' ' , 
' ' , 0x39, 0x3a, 
' ' , 0x3c, 
' ' , 
' ' , 0x3f,
   178   ' ' , 0x41, 0x42, 
' ' , 0x44, 
' ' , 
' ' , 0x47, 0x48, 
' ' , 
' ' , 0x4b, 
' ' , 0x4d, 0x4e, 
' ' ,
   179   0x50, 
' ' , 
' ' , 0x53, 
' ' , 0x55, 0x56, 
' ' , 
' ' , 0x59, 0x5a, 
' ' , 0x5c, 
' ' , 
' ' , 0x5f,
   180   0x60, 
' ' , 
' ' , 0x63, 
' ' , 0x65, 0x66, 
' ' , 
' ' , 0x69, 0x6a, 
' ' , 0x6c, 
' ' , 
' ' , 0x6f,
   181   ' ' , 0x71, 0x72, 
' ' , 0x74, 
' ' , 
' ' , 0x77, 0x78, 
' ' , 
' ' , 0x7b, 
' ' , 0x7d, 0x7e, 
' ' ,
   192 const unsigned char hamm24par[3][256] =
   196    0, 33, 34,  3, 35,  2,  1, 32, 36,  5,  6, 39,  7, 38, 37,  4,
   197   37,  4,  7, 38,  6, 39, 36,  5,  1, 32, 35,  2, 34,  3,  0, 33,
   198   38,  7,  4, 37,  5, 36, 39,  6,  2, 35, 32,  1, 33,  0,  3, 34,
   199    3, 34, 33,  0, 32,  1,  2, 35, 39,  6,  5, 36,  4, 37, 38,  7,
   200   39,  6,  5, 36,  4, 37, 38,  7,  3, 34, 33,  0, 32,  1,  2, 35,
   201    2, 35, 32,  1, 33,  0,  3, 34, 38,  7,  4, 37,  5, 36, 39,  6,
   202    1, 32, 35,  2, 34,  3,  0, 33, 37,  4,  7, 38,  6, 39, 36,  5,
   203   36,  5,  6, 39,  7, 38, 37,  4,  0, 33, 34,  3, 35,  2,  1, 32,
   204   40,  9, 10, 43, 11, 42, 41,  8, 12, 45, 46, 15, 47, 14, 13, 44,
   205   13, 44, 47, 14, 46, 15, 12, 45, 41,  8, 11, 42, 10, 43, 40,  9,
   206   14, 47, 44, 13, 45, 12, 15, 46, 42, 11,  8, 41,  9, 40, 43, 10,
   207   43, 10,  9, 40,  8, 41, 42, 11, 15, 46, 45, 12, 44, 13, 14, 47,
   208   15, 46, 45, 12, 44, 13, 14, 47, 43, 10,  9, 40,  8, 41, 42, 11,
   209   42, 11,  8, 41,  9, 40, 43, 10, 14, 47, 44, 13, 45, 12, 15, 46,
   210   41,  8, 11, 42, 10, 43, 40,  9, 13, 44, 47, 14, 46, 15, 12, 45,
   211   12, 45, 46, 15, 47, 14, 13, 44, 40,  9, 10, 43, 11, 42, 41,  8
   214    0, 41, 42,  3, 43,  2,  1, 40, 44,  5,  6, 47,  7, 46, 45,  4,
   215   45,  4,  7, 46,  6, 47, 44,  5,  1, 40, 43,  2, 42,  3,  0, 41,
   216   46,  7,  4, 45,  5, 44, 47,  6,  2, 43, 40,  1, 41,  0,  3, 42,
   217    3, 42, 41,  0, 40,  1,  2, 43, 47,  6,  5, 44,  4, 45, 46,  7,
   218   47,  6,  5, 44,  4, 45, 46,  7,  3, 42, 41,  0, 40,  1,  2, 43,
   219    2, 43, 40,  1, 41,  0,  3, 42, 46,  7,  4, 45,  5, 44, 47,  6,
   220    1, 40, 43,  2, 42,  3,  0, 41, 45,  4,  7, 46,  6, 47, 44,  5,
   221   44,  5,  6, 47,  7, 46, 45,  4,  0, 41, 42,  3, 43,  2,  1, 40,
   222   48, 25, 26, 51, 27, 50, 49, 24, 28, 53, 54, 31, 55, 30, 29, 52,
   223   29, 52, 55, 30, 54, 31, 28, 53, 49, 24, 27, 50, 26, 51, 48, 25,
   224   30, 55, 52, 29, 53, 28, 31, 54, 50, 27, 24, 49, 25, 48, 51, 26,
   225   51, 26, 25, 48, 24, 49, 50, 27, 31, 54, 53, 28, 52, 29, 30, 55,
   226   31, 54, 53, 28, 52, 29, 30, 55, 51, 26, 25, 48, 24, 49, 50, 27,
   227   50, 27, 24, 49, 25, 48, 51, 26, 30, 55, 52, 29, 53, 28, 31, 54,
   228   49, 24, 27, 50, 26, 51, 48, 25, 29, 52, 55, 30, 54, 31, 28, 53,
   229   28, 53, 54, 31, 55, 30, 29, 52, 48, 25, 26, 51, 27, 50, 49, 24
   232   63, 14, 13, 60, 12, 61, 62, 15, 11, 58, 57,  8, 56,  9, 10, 59,
   233   10, 59, 56,  9, 57,  8, 11, 58, 62, 15, 12, 61, 13, 60, 63, 14,
   234    9, 56, 59, 10, 58, 11,  8, 57, 61, 12, 15, 62, 14, 63, 60, 13,
   235   60, 13, 14, 63, 15, 62, 61, 12,  8, 57, 58, 11, 59, 10,  9, 56,
   236    8, 57, 58, 11, 59, 10,  9, 56, 60, 13, 14, 63, 15, 62, 61, 12,
   237   61, 12, 15, 62, 14, 63, 60, 13,  9, 56, 59, 10, 58, 11,  8, 57,
   238   62, 15, 12, 61, 13, 60, 63, 14, 10, 59, 56,  9, 57,  8, 11, 58,
   239   11, 58, 57,  8, 56,  9, 10, 59, 63, 14, 13, 60, 12, 61, 62, 15,
   240   31, 46, 45, 28, 44, 29, 30, 47, 43, 26, 25, 40, 24, 41, 42, 27,
   241   42, 27, 24, 41, 25, 40, 43, 26, 30, 47, 44, 29, 45, 28, 31, 46,
   242   41, 24, 27, 42, 26, 43, 40, 25, 29, 44, 47, 30, 46, 31, 28, 45,
   243   28, 45, 46, 31, 47, 30, 29, 44, 40, 25, 26, 43, 27, 42, 41, 24,
   244   40, 25, 26, 43, 27, 42, 41, 24, 28, 45, 46, 31, 47, 30, 29, 44,
   245   29, 44, 47, 30, 46, 31, 28, 45, 41, 24, 27, 42, 26, 43, 40, 25,
   246   30, 47, 44, 29, 45, 28, 31, 46, 42, 27, 24, 41, 25, 40, 43, 26,
   247   43, 26, 25, 40, 24, 41, 42, 27, 31, 46, 45, 28, 44, 29, 30, 47
   256 const unsigned char hamm24val[256] =
   258       0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,
   259       2,  2,  2,  2,  3,  3,  3,  3,  2,  2,  2,  2,  3,  3,  3,  3,
   260       4,  4,  4,  4,  5,  5,  5,  5,  4,  4,  4,  4,  5,  5,  5,  5,
   261       6,  6,  6,  6,  7,  7,  7,  7,  6,  6,  6,  6,  7,  7,  7,  7,
   262       8,  8,  8,  8,  9,  9,  9,  9,  8,  8,  8,  8,  9,  9,  9,  9,
   263      10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
   264      12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
   265      14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15,
   266       0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,
   267       2,  2,  2,  2,  3,  3,  3,  3,  2,  2,  2,  2,  3,  3,  3,  3,
   268       4,  4,  4,  4,  5,  5,  5,  5,  4,  4,  4,  4,  5,  5,  5,  5,
   269       6,  6,  6,  6,  7,  7,  7,  7,  6,  6,  6,  6,  7,  7,  7,  7,
   270       8,  8,  8,  8,  9,  9,  9,  9,  8,  8,  8,  8,  9,  9,  9,  9,
   271      10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
   272      12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
   273      14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15
   276 const signed char hamm24err[64] =
   278      0, -1, -1, -1,  -1, -1, -1, -1,  -1, -1, -1, -1,  -1, -1, -1, -1,
   279     -1, -1, -1, -1,  -1, -1, -1, -1,  -1, -1, -1, -1,  -1, -1, -1, -1,
   280      0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,
   281      0,  0,  0,  0,   0,  0,  0,  0,  -1, -1, -1, -1,  -1, -1, -1, -1,
   290 const unsigned int hamm24cor[64] =
   292     0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
   293     0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
   294     0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
   295     0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
   296     0x00000, 0x00000, 0x00000, 0x00001, 0x00000, 0x00002, 0x00004, 0x00008,
   297     0x00000, 0x00010, 0x00020, 0x00040, 0x00080, 0x00100, 0x00200, 0x00400,
   298     0x00000, 0x00800, 0x01000, 0x02000, 0x04000, 0x08000, 0x10000, 0x20000,
   299     0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
   302 inline int IsDec(
int i)
   304   return ((i & 0x00F) <= 9) && ((i & 0x0F0) <= 0x90);
   312   unsigned char charset :6;           
   313   unsigned char doubleh :1;           
   314   unsigned char doublew :1;           
   318   unsigned char IgnoreAtBlackBgSubst:1;
   319   unsigned char concealed:1;            
   320   unsigned char inverted :1;            
   321   unsigned char flashing :5;            
   322   unsigned char diacrit  :4;            
   323   unsigned char underline:1;            
   324   unsigned char boxwin   :1;            
   325   unsigned char setX26   :1;            
   326   unsigned char setG0G2  :7;            
   333   unsigned short subpage;               
   336   unsigned char drcs:1;                 
   337   unsigned char local:1;                
   343   unsigned char *p26[16];               
   345   unsigned short bgr[16];               
   346   unsigned char DefaultCharset:7;       
   348   unsigned char SecondCharset:7;        
   350   unsigned char DefScreenColor:5;       
   351   unsigned char ColorTableRemapping:3;  
   352   unsigned char DefRowColor:5;          
   353   unsigned char BlackBgSubst:1;         
   354   unsigned char SPL25:1;                
   355   unsigned char p28Received:1;          
   356   unsigned char LSPColumns:4;           
   364   unsigned char boxed         :1;       
   365   unsigned char nationalvalid :1;       
   366   unsigned char national      :3;       
   367   unsigned char function      :3;       
   374   unsigned char p0[24];                 
   375   unsigned char data[23*40];            
   387   std::chrono::time_point<std::chrono::steady_clock> Timestamp;
   388   unsigned char  PageChar[TELETEXT_PAGE_SIZE];
   396   int               CurrentSubPage[9];
   399   unsigned char     SubPageTable[0x900];
   400   unsigned char     BasicTop[0x900];
   401   short             FlofPages[0x900][FLOFSIZE];
   402   char              ADIPTable[0x900][13];
   412   int               NationalSubsetSecondary;
   413   bool              ZapSubpageManual;
   415   unsigned char     TimeString[8];
   420   unsigned char   FullRowColor[25];
   421   unsigned char   FullScrColor;
   422   unsigned char   tAPx, tAPy;              
   423   short           pop, gpop, drcs, gdrcs;
   424   unsigned short *ColorTable;
   429   CCriticalSection m_critSection;
   446   int Prev_100, Prev_10, Next_10, Next_100;
   451   int FontWidth_Normal;
   452   unsigned short rd0[TXT_Color_SIZECOLTABLE];
   453   unsigned short gn0[TXT_Color_SIZECOLTABLE];
   454   unsigned short bl0[TXT_Color_SIZECOLTABLE];
   455   unsigned short tr0[TXT_Color_SIZECOLTABLE];
   457   unsigned char PageChar[25*40];
   463   unsigned char axdrcs[12+1+10+1];
   464   int TTFShiftX, TTFShiftY; 
   466   int ScreenMode, PrevScreenMode;
   468   unsigned int SubtitleDelay;
   474   static void NextDec(
int *i);
   475   static void PrevDec(
int *i);
   476   static void Hex2Str(
char *s, 
unsigned int n);
   477   static signed int deh24(
unsigned char *p);
 Definition: TeletextDefines.h:360
Definition: TeletextDefines.h:330
Definition: TeletextDefines.h:341
Definition: TeletextDefines.h:471
Definition: TeletextDefines.h:393
Definition: TeletextDefines.h:308
Definition: TeletextDefines.h:371
Definition: TeletextDefines.h:433
Definition: TeletextDefines.h:378
Definition: TeletextDefines.h:384