bool HDD_TAP_isDisabledAll(void) { TRACEENTER(); dword i; tTMSTAPTaskTable *TMSTAPTaskTable; TMSTAPTaskTable = (tTMSTAPTaskTable*)FIS_vTAPTable(); //The curTapTask variable is not thread safe. Call InitTAPex() if this function will be called from a sub thread if(TAP_TableIndex == 0xffffffff) { dword *curTapTask; curTapTask = (dword*)FIS_vCurTapTask(); if(!curTapTask) { TRACEEXIT(); return FALSE; } TAP_TableIndex = *curTapTask; } for(i = 0; i < TAP_MAX; i++) { if((i != TAP_TableIndex) && (TMSTAPTaskTable[i].Status == 1) && (TMSTAPTaskTable[i].unused5 == 0)) { TRACEEXIT(); return FALSE; } } TRACEEXIT(); return TRUE; }
bool OSDMenuItemModifyValue(int ItemIndex, char *Text) { TRACEENTER(); tMenu *pMenu; pMenu = &Menu[CurrentMenuLevel]; if((pMenu->NrItems == 0) || (ItemIndex >= pMenu->NrItems)) { TRACEEXIT(); return FALSE; } if(!Text) { TRACEEXIT(); return FALSE; } strncpy(pMenu->Item[ItemIndex].Value, Text, ITEMNAMESIZE); pMenu->Item[ItemIndex].Value[ITEMNAMESIZE - 1] = '\0'; ListDirty = TRUE; TRACEEXIT(); return TRUE; }
TYPE_GrData *LogoManager_GetLogoByChannel(int SvcType, int SvcNum, tLogoStyle LogoStyle, tLogoSize LogoSize, tLogoAspect LogoAR) { TRACEENTER(); ulong64 ChannelID; tFlashService ServiceInfo; TYPE_GrData *GrData; LogoManager_Initialize(LogoManager_CB); if(!FlashServiceGetInfo(SvcType, SvcNum, &ServiceInfo)) { TRACEEXIT(); return NULL; } //First retrieve by the channel name GrData = LogoManager_GetLogoByChannelName(ServiceInfo.ServiceName, LogoStyle, LogoSize, LogoAR); if(GrData) { TRACEEXIT(); return GrData; } //Logo not available via channel name, now try it via the ID ChannelID = LogoManager_GetChannelID(SvcType, SvcNum); GrData = LogoManager_GetLogoByChannelID(ChannelID, LogoStyle, LogoSize, LogoAR); TRACEEXIT(); return GrData; }
dword TryResolve(char *Function) { TRACEENTER(); void *pvr; dword *ret; pvr = dlopen(NULL, RTLD_GLOBAL | RTLD_LAZY); if(!pvr) { TRACEEXIT(); return 0; } ret = dlsym(pvr, Function); if(dlerror() != NULL) { dlclose(pvr); TRACEEXIT(); return 0; } dlclose(pvr); TRACEEXIT(); return (dword)ret; }
bool HDD_TAP_isDisabledAll(void) { TRACEENTER(); dword i; tTMSTAPTaskTable *TMSTAPTaskTable; TMSTAPTaskTable = (tTMSTAPTaskTable*)FIS_vTAPTable(); if(!TMSTAPTaskTable || (!LibInitialized && !InitTAPex())) { TRACEEXIT(); return FALSE; } for(i = 0; i < TAP_MAX; i++) { if((i != TAP_TableIndex) && (TMSTAPTaskTable[i].Status == 1) && (TMSTAPTaskTable[i].unused5 == 0)) { TRACEEXIT(); return FALSE; } } TRACEEXIT(); return TRUE; }
byte *strcpyUC(byte *dest, byte *src) { TRACEENTER(); byte *p; int CharTableBytes; if(!src || !dest) { TRACEEXIT(); return NULL; } p = SkipCharTableBytes(src); CharTableBytes = p - src; if(CharTableBytes == 0) strcpy(dest, src); else { memcpy(dest, src, CharTableBytes); strcpy(&dest[CharTableBytes], p); } TRACEEXIT(); return dest; }
bool FlashTimeGetInfo(tFlashTimeInfo *TimeInfo) { TRACEENTER(); bool ret; //TimeInfo is NULL if(!TimeInfo) { TRACEEXIT(); return FALSE; } ret = FALSE; switch(GetSystemType()) { //Unknown and old 5k/6k systems are not supported case ST_UNKNOWN: case ST_S: case ST_ST: case ST_T: case ST_C: case ST_CT: case ST_T5700: case ST_T5800: case ST_TF7k7HDPVR: break; case ST_TMSS: { tFlashTimeInfo *p; p = (tFlashTimeInfo*)(FIS_vFlashBlockTimeInfo()); if(p) ret = FlashTimeDecode(p, TimeInfo); break; } case ST_TMST: { tFlashTimeInfo *p; p = (tFlashTimeInfo*)(FIS_vFlashBlockTimeInfo()); if(p) ret = FlashTimeDecode(p, TimeInfo); break; } case ST_TMSC: { tFlashTimeInfo *p; p = (tFlashTimeInfo*)(FIS_vFlashBlockTimeInfo()); if(p) ret = FlashTimeDecode(p, TimeInfo); break; } case ST_NRTYPES: break; } TRACEEXIT(); return ret; }
bool OSDMenuSelectTopItem(int TopIndex) { TRACEENTER(); tMenu *pMenu; pMenu = &Menu[CurrentMenuLevel]; if(pMenu->NrItems == 0) { TRACEEXIT(); return FALSE; } if(TopIndex < 0) TopIndex = 0; if(TopIndex >= (int)pMenu->NrItems) TopIndex = (int)pMenu->NrItems - 1; if(TopIndex != (int)pMenu->CurrentTopIndex) { pMenu->CurrentTopIndex = TopIndex; ListDirty = TRUE; } TRACEEXIT(); return TRUE; }
void OSDMenuButtonAdd(dword Line, tButtonIcon ButtonIcon, TYPE_GrData *ButtonGd, char *Text) { TRACEENTER(); tMenu *pMenu; TYPE_GrData *IconGd; IconGd = OSDMenuGetIconPointer(ButtonIcon, ButtonGd); if((Line == 0) || (Line > 3) || (!IconGd) || (!Text)) { TRACEEXIT(); return; } pMenu = &Menu[CurrentMenuLevel]; pMenu->Buttons[pMenu->NrButtons].X = pMenu->ButtonXStart[Line]; switch(Line) { case 1: pMenu->Buttons[pMenu->NrButtons].Y = 487; break; case 2: pMenu->Buttons[pMenu->NrButtons].Y = 511; break; case 3: pMenu->Buttons[pMenu->NrButtons].Y = 535; break; } pMenu->Buttons[pMenu->NrButtons].pButtonGd = IconGd; strncpy(pMenu->Buttons[pMenu->NrButtons].Text, Text, STDSTRINGSIZE); pMenu->Buttons[pMenu->NrButtons].Text[STDSTRINGSIZE - 1] = '\0'; pMenu->Buttons[pMenu->NrButtons].Color = ButtonColor; pMenu->NrButtons++; ButtonsDirty = TRUE; pMenu->ButtonXStart[Line] = pMenu->ButtonXStart[Line] + IconGd->width + OSDMenuGetW(Text, 12) + 8; TRACEEXIT(); }
bool HDD_GetRecSlotFiles(byte Slot, TYPE_File **RecFile, TYPE_File **InfFile, TYPE_File **NavFile) { TRACEENTER(); tHddRecordFile *HddRecordFile; //Sanity check of the parameters HddRecordFile = (tHddRecordFile*)FIS_vhddRecordFile(); if(Slot > HDD_NumberOfRECSlots() || !HddRecordFile) { if(RecFile) *RecFile = NULL; if(InfFile) *InfFile = NULL; if(NavFile) *NavFile = NULL; TRACEEXIT(); return FALSE; } if(RecFile) *RecFile = HddRecordFile[Slot].RecFile; if(InfFile) *InfFile = HddRecordFile[Slot].InfFile; if(NavFile) *NavFile = HddRecordFile[Slot].NavFile; TRACEEXIT(); return TRUE; }
bool StringDBInit(tStringDB *StringDB, dword InitialSize) { TRACEENTER(); bool ret; if(!StringDB) { TRACEEXIT(); return FALSE; } StringDB->DBSize = InitialSize; if(InitialSize) { StringDB->DB = TAP_MemAlloc(InitialSize); if(StringDB->DB) TAP_MemSet(StringDB->DB, 0, InitialSize); } else StringDB->DB = NULL; StringDB->DBPtr = StringDB->DB; StringDB->DBEnd = StringDB->DB; ret = (StringDB->DB != NULL) || (InitialSize == 0); TRACEEXIT(); return ret; }
bool VFD_SetSmallText(char *Text) { TRACEENTER(); dword i; byte *grid = (byte*)FIS_vGrid(); if(!VFDUsedByTAP || !grid) { TRACEEXIT(); return FALSE; } if(Text) { i = strlen(Text); if(i > 0) VFD_SetDisplayDigit(grid, Text[0], VFD_14, 0); else VFD_SetDisplayDigit(grid, ' ', VFD_14, 0); if(i > 1) VFD_SetDisplayDigit(grid, Text[1], VFD_14, 1); else VFD_SetDisplayDigit(grid, ' ', VFD_14, 1); if(i > 2) VFD_SetDisplayDigit(grid, Text[2], VFD_14, 2); else VFD_SetDisplayDigit(grid, ' ', VFD_14, 2); if(i > 3) VFD_SetDisplayDigit(grid, Text[3], VFD_14, 3); else VFD_SetDisplayDigit(grid, ' ', VFD_14, 3); } TRACEEXIT(); return TRUE; }
byte *strncpyUC(byte *dest, byte *src, size_t n) { TRACEENTER(); byte *p; size_t CharTableBytes; if(!src || !dest) { TRACEEXIT(); return NULL; } p = SkipCharTableBytes(src); CharTableBytes = p - src; if(CharTableBytes == 0) strncpy(dest, src, n); else { memcpy(dest, src, CharTableBytes < n ? CharTableBytes : n); strncpy(&dest[CharTableBytes], p, n - CharTableBytes); } TRACEEXIT(); return dest; }
bool VFD_SetCDValue(int Percent) { TRACEENTER(); byte *grid = (byte*)FIS_vGrid(); if(!VFDUsedByTAP || !grid || !CDEnabled) { TRACEEXIT(); return FALSE; } grid[25] &= 0xfe; grid[26] = 0x00; grid[27] &= 0x1f; if(Percent > 7) grid[25] |= 0x01; if(Percent > 15) grid[26] |= 0x80; if(Percent > 23) grid[26] |= 0x40; if(Percent > 30) grid[26] |= 0x20; if(Percent > 38) grid[26] |= 0x10; if(Percent > 46) grid[26] |= 0x08; if(Percent > 53) grid[26] |= 0x04; if(Percent > 61) grid[26] |= 0x02; if(Percent > 69) grid[26] |= 0x01; if(Percent > 76) grid[27] |= 0x80; if(Percent > 84) grid[27] |= 0x40; if(Percent > 92) grid[27] |= 0x20; TRACEEXIT(); return TRUE; }
bool FlashSatTablesDecode_ST_TMSS(TYPE_SatInfo_TMSS *Data, tFlashSatTable *SatTable) { TRACEENTER(); if(!Data || !SatTable) { TRACEEXIT(); return FALSE; } memset(SatTable, 0, sizeof(tFlashSatTable)); SatTable->NrOfTransponders = Data->NrOfTransponders; SatTable->unused1 = Data->unused1; SatTable->SatPosition = Data->SatPosition; memcpy(SatTable->unknown1, Data->unknown1, 22); memcpy(SatTable->unused2, Data->unused2, 8); strncpy(SatTable->SatName, Data->SatName, MAX_SatName - 1); //LNB 1 SatTable->LNB[0].LNBSupply = Data->LNB[0].LNBSupply; SatTable->LNB[0].unused1 = Data->LNB[0].unused1; SatTable->LNB[0].DiSEqC10 = Data->LNB[0].DiSEqC10; SatTable->LNB[0].unused2 = Data->LNB[0].unused2; SatTable->LNB[0].DiSEqC12 = Data->LNB[0].DiSEqC12; SatTable->LNB[0].UniversalLNB = Data->LNB[0].UniversalLNB; SatTable->LNB[0].Switch22 = Data->LNB[0].Switch22; SatTable->LNB[0].LowBand = Data->LNB[0].LowBand; SatTable->LNB[0].HBFrq = Data->LNB[0].HBFrq; SatTable->LNB[0].unused3 = Data->LNB[0].unused3; SatTable->LNB[0].LoopThrough = Data->LNB[0].LoopThrough; SatTable->LNB[0].unused4 = Data->LNB[0].unused4; SatTable->LNB[0].DiSEqC11 = Data->LNB[0].DiSEqC11; memcpy(SatTable->LNB[0].DiSEqC12Flags, Data->LNB[0].DiSEqC12Flags, 3); memcpy(SatTable->LNB[0].unused5, Data->LNB[0].unused5, 5); //LNB 2 SatTable->LNB[1].LNBSupply = Data->LNB[1].LNBSupply; SatTable->LNB[1].unused1 = Data->LNB[1].unused1; SatTable->LNB[1].DiSEqC10 = Data->LNB[1].DiSEqC10; SatTable->LNB[1].unused2 = Data->LNB[1].unused2; SatTable->LNB[1].DiSEqC12 = Data->LNB[1].DiSEqC12; SatTable->LNB[1].UniversalLNB = Data->LNB[1].UniversalLNB; SatTable->LNB[1].Switch22 = Data->LNB[1].Switch22; SatTable->LNB[1].LowBand = Data->LNB[1].LowBand; SatTable->LNB[1].HBFrq = Data->LNB[1].HBFrq; SatTable->LNB[1].unused3 = Data->LNB[1].unused3; SatTable->LNB[1].LoopThrough = Data->LNB[1].LoopThrough; SatTable->LNB[1].unused4 = Data->LNB[1].unused4; SatTable->LNB[1].DiSEqC11 = Data->LNB[1].DiSEqC11; memcpy(SatTable->LNB[1].DiSEqC12Flags, Data->LNB[1].DiSEqC12Flags, 3); memcpy(SatTable->LNB[1].unused5, Data->LNB[1].unused5, 5); TRACEEXIT(); return TRUE; }
bool EPGInfo_CreateCache(int NrRecords) { TRACEENTER(); extern dword __tap_ud__; TAP_SPrint(EPGCacheFile, "/mnt/hd/tmp/EPGCache_%x.bin", __tap_ud__); if(EPGInfoCacheFile) EPGInfo_DestroyCache(); EPGInfoCacheSize = NrRecords * sizeof(TYPE_EPGInfo); //Delete the old cache unlink(EPGCacheFile); mkdir("/mnt/hd/tmp", 0777); EPGInfoCacheFile = open(EPGCacheFile, O_RDWR | O_CREAT | O_TRUNC, (mode_t)0600); if(EPGInfoCacheFile == -1) { LogEntryFBLibPrintf(TRUE, "EPGInfo: failed to create the memory mapped EPG cache"); TRACEEXIT(); return FALSE; } //Increase the size of the cache as needed if(lseek(EPGInfoCacheFile, EPGInfoCacheSize, SEEK_SET) == -1) { LogEntryFBLibPrintf(TRUE, "EPGInfo: failed to stretch the memory mapped EPG cache"); close(EPGInfoCacheFile); unlink(EPGCacheFile); TRACEEXIT(); return FALSE; } write(EPGInfoCacheFile, "", 1); //Map the memory EPGInfoCacheMap = mmap(0, EPGInfoCacheSize, PROT_READ | PROT_WRITE, MAP_SHARED, EPGInfoCacheFile, 0); if(EPGInfoCacheMap == MAP_FAILED) { LogEntryFBLibPrintf(TRUE, "EPGInfo: failed to memory map the EPG cache file"); close(EPGInfoCacheFile); unlink(EPGCacheFile); TRACEEXIT(); return FALSE; } EPGInfoCache = (TYPE_EPGInfo*)EPGInfoCacheMap; TRACEEXIT(); return TRUE; }
bool StringDBLoad(tStringDB *StringDB, char *FileName) { TRACEENTER(); int f; bool ret; dword l, p; char AbsFileName[FBLIB_DIR_SIZE]; if(!StringDB || !StringDB->DB || !FileName || !*FileName) { TRACEEXIT(); return FALSE; } ConvertPathType(FileName, AbsFileName, PF_FullLinuxPath); ret = FALSE; if(*AbsFileName) { f = open(AbsFileName, O_RDONLY); if(f >= 0) { TAP_MemFree(StringDB->DB); //DB Size read(f, &l, sizeof(dword)); StringDB->DB = TAP_MemAlloc(l); if(!StringDB->DB) { StringDB->DBSize = 0; close(f); TRACEEXIT(); return FALSE; } StringDB->DBSize = l; StringDB->DBEnd = l + StringDB->DB - 1; //Current pointer read(f, &p, sizeof(dword)); StringDB->DBPtr = p + StringDB->DB; read(f, StringDB->DB, l); close(f); ret = TRUE; } } TRACEEXIT(); return ret; }
dword KeyTranslateHook(word event, dword param1, dword param2) { TRACEENTER(); dword KeyFlags, NativeKeyCode, TranslatedKeyCode; dword ret; dword SysID; if(event == EVT_KEY) { KeyFlags = param1 & 0xfffe0000; NativeKeyCode = param1 & 0x0001ffff; TranslatedKeyCode = NativeKeyCode; //Nothing to do for RT_5000 and RT_2100 SysID = GetSysID(); if(RemoteType == RT_7100PLUS) { switch(NativeKeyCode) { case RKEY_Ab: TranslatedKeyCode = 0x10049; break; case RKEY_Bookmark: TranslatedKeyCode = RKEY_VolDown; break; case RKEY_Goto: TranslatedKeyCode = RKEY_ChUp; break; case RKEY_Check: TranslatedKeyCode = RKEY_ChDown; break; case RKEY_NewF1: TranslatedKeyCode = RKEY_VolUp; break; case RKEY_ChUp: TranslatedKeyCode = RKEY_VFormat; break; case RKEY_VolUp: TranslatedKeyCode = RKEY_NewF1; break; case RKEY_VolDown: TranslatedKeyCode = RKEY_Bookmark; break; case 0x10049: TranslatedKeyCode = RKEY_Goto; break; case 0x1004a: TranslatedKeyCode = RKEY_Check; break; } } if(RemoteType == RT_7260PLUS) { switch(NativeKeyCode) { case RKEY_F1: TranslatedKeyCode = RKEY_NewF1; break; } } ret = Original_TAP_EventHandler(EVT_KEY, TranslatedKeyCode | KeyFlags, param2); TRACEEXIT(); return (ret ? NativeKeyCode | KeyFlags : 0); } ret = Original_TAP_EventHandler(event, param1, param2); TRACEEXIT(); return ret; }
void DumpMemoryDword(dword *p, dword size) { TRACEENTER(); dword *StartAddress = p; int CollectedBytes; char Header[20]; char s[255]; int Remaining; if(!p) { TAP_Print("0x00000000 NULL\n"); TRACEEXIT(); return; } s[0] = '\0'; CollectedBytes = 0; TAP_SPrint(Header, "%p 0x%4.4x: ", p, (dword)p - (dword)StartAddress); Remaining = size; while(Remaining > 0) { TAP_SPrint(&s[strlen(s)], "%8.8x ", *p); CollectedBytes += 4; p++; Remaining -= 4; if(CollectedBytes >= 16) { strcat(s, "\n"); TAP_Print(Header); TAP_Print(s); s[0] = '\0'; TAP_SPrint(Header, "%p 0x%4.4x: ", p, (dword)p - (dword)StartAddress); CollectedBytes = 0; } } if(strlen(s)) { strcat(s, "\n"); TAP_Print(Header); TAP_Print(s); } TRACEEXIT(); }
dword HDD_TAP_GetIDByFileName(char *TAPFileName) { TRACEENTER(); tTAPInfo pTAPInfo; if(HDD_TAP_GetInfo(TAPFileName, &pTAPInfo)) { TRACEEXIT(); return pTAPInfo.TAPID; } TRACEEXIT(); return 0; }
char *LangGetStringDefault(dword StringID, char *DefaultString) { TRACEENTER(); char *ret = LangGetString(StringID); if((ret[0] == '\0') && DefaultString) { TRACEEXIT(); return DefaultString; } TRACEEXIT(); return ret; }
dword SuperFastHash(register unsigned char * data, int len, dword hash) { TRACEENTER(); register dword tmp, tmp2; int rem; if(len <= 0 || data == NULL) { TRACEEXIT(); return 0; } rem = len & 3; len >>= 2; /* Main loop */ while(len>0) { tmp = get16bits(data); data += 2; tmp2 = get16bits(data); data += 2; if(tmp || tmp2) { hash += tmp; tmp2 <<= 11; tmp2 ^= hash; hash <<= 16; hash ^= tmp2; hash += hash >> 11; } len -= 4; }
char *GetRecExtension(void) { TRACEENTER(); dword i; tToppyInfo *ToppyInfo; tFWDATHeader *FWDatHeader; static char *RecExtension = NULL; if(RecExtension == NULL) { if(LoadFirmwareDat(&FWDatHeader, &ToppyInfo, NULL)) { for(i = 0; i < FWDatHeader->NrOfToppyInfoEntries; i++, ToppyInfo++) { if(ToppyInfo->SysID == TAP_GetSystemId()) { switch(ToppyInfo->RecExtension) { case 0: RecExtension = ".rec"; break; case 1: RecExtension = ".mpg"; break; default: break; } break; } } } } TRACEEXIT(); return RecExtension ? RecExtension : ".rec"; }
bool StringDBEOF(tStringDB *StringDB) { TRACEENTER(); bool ret; if(!StringDB) { TRACEEXIT(); return TRUE; } ret = (StringDB->DBPtr[0] == '\0'); TRACEEXIT(); return ret; }
bool GetPIPPosition(int *North, int *South, int *East, int *West) { TRACEENTER(); byte *_isPipActive; word *_pipX, *_pipY, *_pipW, *_pipH; _isPipActive = (byte*)FIS_vIsPipActive(); _pipX = (word*)FIS_vPipX(); _pipY = (word*)FIS_vPipY(); _pipW = (word*)FIS_vPipW(); _pipH = (word*)FIS_vPipH(); if(_isPipActive) { if(*_isPipActive) { if(West) *West = *_pipX; if(East) *East = *_pipX + *_pipW; if(North) *North = *_pipY; if(South) *South = *_pipY + *_pipH; } else { if(West) *West = 0; if(East) *East = 0; if(North) *North = 0; if(South) *South = 0; } } TRACEEXIT(); return (_isPipActive != 0); }
void OSDMenuMessageBoxDestroyNoOSDUpdate(void) { TRACEENTER(); tOSDMapInfo *OSDMapInfo; if(MessageBoxOSDRgn) { TAP_Osd_Delete(MessageBoxOSDRgn); MessageBoxOSDRgn = 0; if(InfoBoxSaveArea) { if(MyOSDRgn) { OSDMapInfo = (tOSDMapInfo*) FIS_vOsdMap(); if(OSDMapInfo) TAP_Osd_RestoreBox(MyOSDRgn, InfoBoxSaveAreaX - OSDMapInfo[MyOSDRgn].x, InfoBoxSaveAreaY - OSDMapInfo[MyOSDRgn].y, _InfoBox_Gd.width, _InfoBox_Gd.height, InfoBoxSaveArea); } else if(OSDRgn) TAP_Osd_RestoreBox(OSDRgn, InfoBoxSaveAreaX, InfoBoxSaveAreaY, _InfoBox_Gd.width, _InfoBox_Gd.height, InfoBoxSaveArea); TAP_MemFree(InfoBoxSaveArea); InfoBoxSaveArea = NULL; MyOSDRgn = 0; } } OSDMenuFreeStdFonts(); TRACEEXIT(); }
// Return codes: 0..15 = Position in the TAP table // -1 = TAPID not found // int HDD_TAP_GetIndexByID(dword TAPID) { TRACEENTER(); int i; for(i = 0; i < TAP_MAX; i++) if(HDD_TAP_GetIDByIndex(i) == TAPID) { TRACEEXIT(); return i; } TRACEEXIT(); return -1; }
char *LogoManager_ChannelNameToLogoName(char *ChannelName, char *LogoName, int LogoNameSize) { TRACEENTER(); char *pLogoName; char AllowedChars[] = "abcdefghijklmnoprqstuvwxyz0123456789הצ�+"; if(LogoName && LogoNameSize) { memset(LogoName, 0, LogoNameSize); strncpy(LogoName, SkipCharTableBytes(ChannelName), LogoNameSize - 1); StrMkISO(LogoName); MakeValidFileName(LogoName, ControlChars | LFChars); LowerCase(LogoName); pLogoName = LogoName; while(*pLogoName) { if(index(AllowedChars, *pLogoName) == NULL) DeleteAt(pLogoName, 0, 1); else pLogoName++; } StrReplace(LogoName, "ה", "ae"); StrReplace(LogoName, "צ", "oe"); StrReplace(LogoName, "�", "ue"); } TRACEEXIT(); return LogoName; }
char *LogoManager_GetDirectory(tLogoStyle LogoStyle, tLogoAspect LogoAR, char *LogoPath) { TRACEENTER(); if(LogoPath) { strcpy(LogoPath, LOGOROOT); switch(LogoStyle) { case LGST_3pgstyle: strcat(LogoPath, "/3pg/"); break; case LGST_QtstyleBlue: strcat(LogoPath, "/qtblue/"); break; case LGST_QtstyleGrey: strcat(LogoPath, "/qtgrey/"); break; case LGST_QtstyleTMS: strcat(LogoPath, "/qttms/"); break; case LGST_TransBlack: strcat(LogoPath, "/trans-black/"); break; case LGST_TransIBBlue: strcat(LogoPath, "/trans-ibblue/"); break; case LGST_TransIBGrey: strcat(LogoPath, "/trans-ibgrey/"); break; case LGST_TransQTBlue: strcat(LogoPath, "/trans-qtblue/"); break; case LGST_TransQTGrey: strcat(LogoPath, "/trans-qtgrey/"); break; default: break; } switch(LogoAR) { case LGAR_43: strcat(LogoPath, "43"); break; case LGAR_169: strcat(LogoPath, "169"); break; default: break; } } TRACEEXIT(); return LogoPath; }
bool LogoManager_LogosAvailable(tLogoStyle LogoStyle) { TRACEENTER(); int i; for(i = 0; i < LogoManager_NrLogos; i++) if(LogoManager_LogoData[i].Style == LogoStyle) { TRACEEXIT(); return TRUE; } TRACEEXIT(); return FALSE; }