mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 11:36:53 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a840fc9931 | ||
|
|
997ff44b18 | ||
|
|
4dd3c4a184 | ||
|
|
de92daf5f0 | ||
|
|
0fd4062c76 |
5
HISTORY
5
HISTORY
@@ -409,3 +409,8 @@ VDR Plugin 'femon' Revision History
|
||||
- Added Makefile depencency for objects.
|
||||
- Fixed detection of replaying.
|
||||
- Added support for LDFLAGS.
|
||||
|
||||
2011-05-15: Version 1.7.10
|
||||
|
||||
- Updated for vdr-1.7.18.
|
||||
- Added scaling for symbols.
|
||||
|
||||
6
Makefile
6
Makefile
@@ -23,7 +23,7 @@ VERSION = $(shell grep 'static const char VERSION\[\] *=' $(PLUGIN).c | awk '{ p
|
||||
### The C++ compiler and options:
|
||||
|
||||
CXX ?= g++
|
||||
CXXFLAGS ?= -fPIC -g -O2 -Wall -Wextra -Wswitch-default -Wfloat-equal -Wundef -Wpointer-arith -Wconversion -Wcast-align -Wredundant-decls -Wno-unused-parameter -Woverloaded-virtual -Wno-parentheses
|
||||
CXXFLAGS ?= -fPIC -g -O3 -Wall -Wextra -Wswitch-default -Wfloat-equal -Wundef -Wpointer-arith -Wconversion -Wcast-align -Wredundant-decls -Wno-unused-parameter -Woverloaded-virtual -Wno-parentheses
|
||||
LDFLAGS ?= -Wl,--as-needed
|
||||
|
||||
### The directory environment:
|
||||
@@ -96,7 +96,7 @@ I18Npot = $(PODIR)/$(PLUGIN).pot
|
||||
msgfmt -c -o $@ $<
|
||||
|
||||
$(I18Npot): $(wildcard *.c)
|
||||
xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<see README>' -o $@ $^
|
||||
xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name='vdr-$(PLUGIN)' --package-version='$(VERSION)' --msgid-bugs-address='<see README>' -o $@ $^
|
||||
|
||||
%.po: $(I18Npot)
|
||||
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
|
||||
@@ -118,7 +118,7 @@ ifndef FEMON_DEBUG
|
||||
endif
|
||||
@cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
||||
|
||||
dist: clean
|
||||
dist: $(I18Npo) clean
|
||||
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
||||
@mkdir $(TMPDIR)/$(ARCHIVE)
|
||||
@cp -a * $(TMPDIR)/$(ARCHIVE)
|
||||
|
||||
6
femon.c
6
femon.c
@@ -14,11 +14,11 @@
|
||||
#include "femonservice.h"
|
||||
#include "femontools.h"
|
||||
|
||||
#if defined(APIVERSNUM) && APIVERSNUM < 10716
|
||||
#error "VDR-1.7.16 API version or greater is required!"
|
||||
#if defined(APIVERSNUM) && APIVERSNUM < 10718
|
||||
#error "VDR-1.7.18 API version or greater is required!"
|
||||
#endif
|
||||
|
||||
static const char VERSION[] = "1.7.9";
|
||||
static const char VERSION[] = "1.7.10";
|
||||
static const char DESCRIPTION[] = trNOOP("DVB Signal Information Monitor (OSD)");
|
||||
static const char MAINMENUENTRY[] = trNOOP("Signal Information");
|
||||
|
||||
|
||||
107
femonosd.c
107
femonosd.c
@@ -25,8 +25,9 @@
|
||||
#define OSDROWHEIGHT m_Font->Height() // in pixels
|
||||
#define OSDINFOHEIGHT (OSDROWHEIGHT * 13) // in pixels (13 rows)
|
||||
#define OSDSTATUSHEIGHT (OSDROWHEIGHT * 6) // in pixels (6 rows)
|
||||
#define OSDSPACING 5
|
||||
#define OSDROUNDING 10
|
||||
#define OSDSYMBOL(id) femonSymbols.Get(id)
|
||||
#define OSDSPACING femonSymbols.GetSpacing()
|
||||
#define OSDROUNDING femonSymbols.GetRounding()
|
||||
#define IS_OSDROUNDING (femonConfig.skin == eFemonSkinElchi)
|
||||
#define IS_OSDRESOLUTION(r1, r2) (abs(r1 - r2) < 20)
|
||||
#define OSDINFOWIN_Y(offset) (femonConfig.position ? (OSDHEIGHT - OSDINFOHEIGHT + offset) : offset)
|
||||
@@ -144,6 +145,7 @@ public:
|
||||
virtual int Width(const char *s) const { return 50; }
|
||||
virtual int Height(void) const { return 20; }
|
||||
virtual void DrawText(cBitmap *Bitmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const {}
|
||||
virtual void DrawText(cPixmap *Pixmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const {}
|
||||
};
|
||||
|
||||
cFemonOsd *cFemonOsd::pInstance = NULL;
|
||||
@@ -192,12 +194,13 @@ cFemonOsd::cFemonOsd()
|
||||
memset(&m_FrontendStatus, 0, sizeof(m_FrontendStatus));
|
||||
memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo));
|
||||
m_SvdrpConnection.handle = -1;
|
||||
femonSymbols.Refresh();
|
||||
m_Font = cFont::CreateFont(Setup.FontSml, min(max(Setup.FontSmlSize, MINFONTSIZE), MAXFONTSIZE));
|
||||
if (!m_Font || !m_Font->Height()) {
|
||||
m_Font = new cFemonDummyFont;
|
||||
error("cFemonOsd::cFemonOsd() cannot create required font.");
|
||||
}
|
||||
tmp = 5 * bmSymbol[SYMBOL_LOCK].Width() + 6 * OSDSPACING;
|
||||
tmp = 5 * OSDSYMBOL(SYMBOL_LOCK).Width() + 6 * OSDSPACING;
|
||||
if (OSDWIDTH < tmp) {
|
||||
error("cFemonOsd::cFemonOsd() OSD width (%d) smaller than required (%d).", OSDWIDTH, tmp);
|
||||
OSDWIDTH = tmp;
|
||||
@@ -248,84 +251,84 @@ void cFemonOsd::DrawStatusWindow(void)
|
||||
if (m_Osd && channel) {
|
||||
OSDDRAWSTATUSTITLEBAR(*cString::sprintf("%d%s %s", m_Number ? m_Number : channel->Number(), m_Number ? "-" : "", channel->ShortName(true)));
|
||||
if (m_SvdrpFrontend >= 0) {
|
||||
bm = &bmSymbol[SYMBOL_SVDRP];
|
||||
bm = &OSDSYMBOL(SYMBOL_SVDRP);
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
}
|
||||
switch (cDevice::ActualDevice()->CardIndex()) {
|
||||
case 1: bm = &bmSymbol[SYMBOL_ONE]; break;
|
||||
case 2: bm = &bmSymbol[SYMBOL_TWO]; break;
|
||||
case 3: bm = &bmSymbol[SYMBOL_THREE]; break;
|
||||
case 4: bm = &bmSymbol[SYMBOL_FOUR]; break;
|
||||
case 5: bm = &bmSymbol[SYMBOL_FIVE]; break;
|
||||
case 6: bm = &bmSymbol[SYMBOL_SIX]; break;
|
||||
case 7: bm = &bmSymbol[SYMBOL_SEVEN]; break;
|
||||
case 8: bm = &bmSymbol[SYMBOL_EIGHT]; break;
|
||||
default: bm = &bmSymbol[SYMBOL_ZERO]; break;
|
||||
case 1: bm = &OSDSYMBOL(SYMBOL_ONE); break;
|
||||
case 2: bm = &OSDSYMBOL(SYMBOL_TWO); break;
|
||||
case 3: bm = &OSDSYMBOL(SYMBOL_THREE); break;
|
||||
case 4: bm = &OSDSYMBOL(SYMBOL_FOUR); break;
|
||||
case 5: bm = &OSDSYMBOL(SYMBOL_FIVE); break;
|
||||
case 6: bm = &OSDSYMBOL(SYMBOL_SIX); break;
|
||||
case 7: bm = &OSDSYMBOL(SYMBOL_SEVEN); break;
|
||||
case 8: bm = &OSDSYMBOL(SYMBOL_EIGHT); break;
|
||||
default: bm = &OSDSYMBOL(SYMBOL_ZERO); break;
|
||||
}
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
bm = &bmSymbol[SYMBOL_DEVICE];
|
||||
bm = &OSDSYMBOL(SYMBOL_DEVICE);
|
||||
OSDDRAWSTATUSBM(0);
|
||||
if (IS_AUDIO_TRACK(track)) {
|
||||
switch (int(track - ttAudioFirst)) {
|
||||
case 1: bm = &bmSymbol[SYMBOL_ONE]; break;
|
||||
case 2: bm = &bmSymbol[SYMBOL_TWO]; break;
|
||||
case 3: bm = &bmSymbol[SYMBOL_THREE]; break;
|
||||
case 4: bm = &bmSymbol[SYMBOL_FOUR]; break;
|
||||
case 5: bm = &bmSymbol[SYMBOL_FIVE]; break;
|
||||
case 6: bm = &bmSymbol[SYMBOL_SIX]; break;
|
||||
case 7: bm = &bmSymbol[SYMBOL_SEVEN]; break;
|
||||
case 8: bm = &bmSymbol[SYMBOL_EIGHT]; break;
|
||||
default: bm = &bmSymbol[SYMBOL_ZERO]; break;
|
||||
case 1: bm = &OSDSYMBOL(SYMBOL_ONE); break;
|
||||
case 2: bm = &OSDSYMBOL(SYMBOL_TWO); break;
|
||||
case 3: bm = &OSDSYMBOL(SYMBOL_THREE); break;
|
||||
case 4: bm = &OSDSYMBOL(SYMBOL_FOUR); break;
|
||||
case 5: bm = &OSDSYMBOL(SYMBOL_FIVE); break;
|
||||
case 6: bm = &OSDSYMBOL(SYMBOL_SIX); break;
|
||||
case 7: bm = &OSDSYMBOL(SYMBOL_SEVEN); break;
|
||||
case 8: bm = &OSDSYMBOL(SYMBOL_EIGHT); break;
|
||||
default: bm = &OSDSYMBOL(SYMBOL_ZERO); break;
|
||||
}
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
switch (cDevice::PrimaryDevice()->GetAudioChannel()) {
|
||||
case 1: bm = &bmSymbol[SYMBOL_MONO_LEFT]; break;
|
||||
case 2: bm = &bmSymbol[SYMBOL_MONO_RIGHT]; break;
|
||||
default: bm = &bmSymbol[SYMBOL_STEREO]; break;
|
||||
case 1: bm = &OSDSYMBOL(SYMBOL_MONO_LEFT); break;
|
||||
case 2: bm = &OSDSYMBOL(SYMBOL_MONO_RIGHT); break;
|
||||
default: bm = &OSDSYMBOL(SYMBOL_STEREO); break;
|
||||
}
|
||||
OSDDRAWSTATUSBM(0);
|
||||
}
|
||||
else if (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(track)) {
|
||||
if (m_Receiver->AC3_5_1()) bm = &bmSymbol[SYMBOL_DD51];
|
||||
else if (m_Receiver->AC3_2_0()) bm = &bmSymbol[SYMBOL_DD20];
|
||||
else bm = &bmSymbol[SYMBOL_DD];
|
||||
if (m_Receiver->AC3_5_1()) bm = &OSDSYMBOL(SYMBOL_DD51);
|
||||
else if (m_Receiver->AC3_2_0()) bm = &OSDSYMBOL(SYMBOL_DD20);
|
||||
else bm = &OSDSYMBOL(SYMBOL_DD);
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
}
|
||||
if (m_Receiver) {
|
||||
if (IS_OSDRESOLUTION(m_Receiver->VideoVerticalSize(), 1080))
|
||||
bm = &bmSymbol[SYMBOL_FORMAT_1080];
|
||||
bm = &OSDSYMBOL(SYMBOL_FORMAT_1080);
|
||||
else if (IS_OSDRESOLUTION(m_Receiver->VideoVerticalSize(), 720))
|
||||
bm = &bmSymbol[SYMBOL_FORMAT_720];
|
||||
bm = &OSDSYMBOL(SYMBOL_FORMAT_720);
|
||||
else if (IS_OSDRESOLUTION(m_Receiver->VideoVerticalSize(), 576))
|
||||
bm = &bmSymbol[SYMBOL_FORMAT_576];
|
||||
bm = &OSDSYMBOL(SYMBOL_FORMAT_576);
|
||||
else if (IS_OSDRESOLUTION(m_Receiver->VideoVerticalSize(), 480))
|
||||
bm = &bmSymbol[SYMBOL_FORMAT_480];
|
||||
bm = &OSDSYMBOL(SYMBOL_FORMAT_480);
|
||||
else
|
||||
bm = NULL;
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
switch (m_Receiver->VideoCodec()) {
|
||||
case VIDEO_CODEC_MPEG2: bm = &bmSymbol[SYMBOL_MPEG2]; break;
|
||||
case VIDEO_CODEC_H264: bm = &bmSymbol[SYMBOL_H264]; break;
|
||||
default: bm = NULL; break;
|
||||
case VIDEO_CODEC_MPEG2: bm = &OSDSYMBOL(SYMBOL_MPEG2); break;
|
||||
case VIDEO_CODEC_H264: bm = &OSDSYMBOL(SYMBOL_H264); break;
|
||||
default: bm = NULL; break;
|
||||
}
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
switch (m_Receiver->VideoFormat()) {
|
||||
case VIDEO_FORMAT_PAL: bm = &bmSymbol[SYMBOL_PAL]; break;
|
||||
case VIDEO_FORMAT_NTSC: bm = &bmSymbol[SYMBOL_NTSC]; break;
|
||||
default: bm = NULL; break;
|
||||
case VIDEO_FORMAT_PAL: bm = &OSDSYMBOL(SYMBOL_PAL); break;
|
||||
case VIDEO_FORMAT_NTSC: bm = &OSDSYMBOL(SYMBOL_NTSC); break;
|
||||
default: bm = NULL; break;
|
||||
}
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
switch (m_Receiver->VideoAspectRatio()) {
|
||||
case VIDEO_ASPECT_RATIO_1_1: bm = &bmSymbol[SYMBOL_AR_1_1]; break;
|
||||
case VIDEO_ASPECT_RATIO_4_3: bm = &bmSymbol[SYMBOL_AR_4_3]; break;
|
||||
case VIDEO_ASPECT_RATIO_16_9: bm = &bmSymbol[SYMBOL_AR_16_9]; break;
|
||||
case VIDEO_ASPECT_RATIO_2_21_1: bm = &bmSymbol[SYMBOL_AR_2_21_1]; break;
|
||||
default: bm = NULL; break;
|
||||
case VIDEO_ASPECT_RATIO_1_1: bm = &OSDSYMBOL(SYMBOL_AR_1_1); break;
|
||||
case VIDEO_ASPECT_RATIO_4_3: bm = &OSDSYMBOL(SYMBOL_AR_4_3); break;
|
||||
case VIDEO_ASPECT_RATIO_16_9: bm = &OSDSYMBOL(SYMBOL_AR_16_9); break;
|
||||
case VIDEO_ASPECT_RATIO_2_21_1: bm = &OSDSYMBOL(SYMBOL_AR_2_21_1); break;
|
||||
default: bm = NULL; break;
|
||||
}
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
}
|
||||
if (channel->Ca() > 0xFF) {
|
||||
bm = &bmSymbol[SYMBOL_ENCRYPTED];
|
||||
bm = &OSDSYMBOL(SYMBOL_ENCRYPTED);
|
||||
OSDDRAWSTATUSBM(OSDSPACING);
|
||||
}
|
||||
offset += OSDROWHEIGHT;
|
||||
@@ -344,14 +347,14 @@ void cFemonOsd::DrawStatusWindow(void)
|
||||
*cString::sprintf("%s:", (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(track)) ? tr("AC-3") : tr("Audio")),
|
||||
*getBitrateKbits(m_Receiver ? ((m_Receiver->AC3Valid() && IS_DOLBY_TRACK(track)) ? m_Receiver->AC3Bitrate() : m_Receiver->AudioBitrate()) : (m_SvdrpFrontend >= 0 ? m_SvdrpAudioBitrate : -1.0)));
|
||||
offset += OSDROWHEIGHT;
|
||||
x = bmSymbol[SYMBOL_LOCK].Width();
|
||||
y = (OSDROWHEIGHT - bmSymbol[SYMBOL_LOCK].Height()) / 2;
|
||||
x = OSDSYMBOL(SYMBOL_LOCK).Width();
|
||||
y = (OSDROWHEIGHT - OSDSYMBOL(SYMBOL_LOCK).Height()) / 2;
|
||||
if (m_FrontendStatusValid) {
|
||||
OSDDRAWSTATUSFRONTEND(1, bmSymbol[SYMBOL_LOCK], FE_HAS_LOCK);
|
||||
OSDDRAWSTATUSFRONTEND(2, bmSymbol[SYMBOL_SIGNAL], FE_HAS_SIGNAL);
|
||||
OSDDRAWSTATUSFRONTEND(3, bmSymbol[SYMBOL_CARRIER], FE_HAS_CARRIER);
|
||||
OSDDRAWSTATUSFRONTEND(4, bmSymbol[SYMBOL_VITERBI], FE_HAS_VITERBI);
|
||||
OSDDRAWSTATUSFRONTEND(5, bmSymbol[SYMBOL_SYNC], FE_HAS_SYNC);
|
||||
OSDDRAWSTATUSFRONTEND(1, OSDSYMBOL(SYMBOL_LOCK), FE_HAS_LOCK);
|
||||
OSDDRAWSTATUSFRONTEND(2, OSDSYMBOL(SYMBOL_SIGNAL), FE_HAS_SIGNAL);
|
||||
OSDDRAWSTATUSFRONTEND(3, OSDSYMBOL(SYMBOL_CARRIER), FE_HAS_CARRIER);
|
||||
OSDDRAWSTATUSFRONTEND(4, OSDSYMBOL(SYMBOL_VITERBI), FE_HAS_VITERBI);
|
||||
OSDDRAWSTATUSFRONTEND(5, OSDSYMBOL(SYMBOL_SYNC), FE_HAS_SYNC);
|
||||
}
|
||||
OSDDRAWSTATUSBOTTOMBAR();
|
||||
m_Osd->Flush();
|
||||
|
||||
175
femonsymbol.c
175
femonsymbol.c
@@ -5,6 +5,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <vdr/device.h>
|
||||
#include "femontools.h"
|
||||
#include "femonsymbol.h"
|
||||
|
||||
#include "symbols/stereo.xpm"
|
||||
@@ -43,41 +45,140 @@
|
||||
#include "symbols/format576.xpm"
|
||||
#include "symbols/format480.xpm"
|
||||
|
||||
cBitmap bmSymbol[SYMBOL_MAX_COUNT] =
|
||||
static cBitmap bmStereo(stereo_xpm);
|
||||
static cBitmap bmMonoLeft(monoleft_xpm);
|
||||
static cBitmap bmMonoRight(monoright_xpm);
|
||||
static cBitmap bmDolbyDigital(dolbydigital_xpm);
|
||||
static cBitmap bmDolbyDigital20(dolbydigital20_xpm);
|
||||
static cBitmap bmDolbyDigital51(dolbydigital51_xpm);
|
||||
static cBitmap bmMpeg2(mpeg2_xpm);
|
||||
static cBitmap bmH264(h264_xpm);
|
||||
static cBitmap bmPal(pal_xpm);
|
||||
static cBitmap bmNtsc(ntsc_xpm);
|
||||
static cBitmap bmEncrypted(encrypted_xpm);
|
||||
static cBitmap bmSvdrp(svdrp_xpm);
|
||||
static cBitmap bmLock(lock_xpm);
|
||||
static cBitmap bmSignal(signal_xpm);
|
||||
static cBitmap bmCarrier(carrier_xpm);
|
||||
static cBitmap bmViterbi(viterbi_xpm);
|
||||
static cBitmap bmSync(sync_xpm);
|
||||
static cBitmap bmAspectRatio11(ar11_xpm);
|
||||
static cBitmap bmAspectRatio169(ar169_xpm);
|
||||
static cBitmap bmAspectRatio2211(ar2211_xpm);
|
||||
static cBitmap bmAspectRatio43(ar43_xpm);
|
||||
static cBitmap bmDevice(device_xpm);
|
||||
static cBitmap bmZero(zero_xpm);
|
||||
static cBitmap bmOne(one_xpm);
|
||||
static cBitmap bmTwo(two_xpm);
|
||||
static cBitmap bmThree(three_xpm);
|
||||
static cBitmap bmFour(four_xpm);
|
||||
static cBitmap bmFive(five_xpm);
|
||||
static cBitmap bmSix(six_xpm);
|
||||
static cBitmap bmSeven(seven_xpm);
|
||||
static cBitmap bmEight(eight_xpm);
|
||||
static cBitmap bmFormat1080(format1080_xpm);
|
||||
static cBitmap bmFormat720(format720_xpm);
|
||||
static cBitmap bmFormat576(format576_xpm);
|
||||
static cBitmap bmFormat480(format480_xpm);
|
||||
|
||||
cFemonSymbolCache femonSymbols;
|
||||
|
||||
cFemonSymbolCache::cFemonSymbolCache()
|
||||
: xFactorM(1.0),
|
||||
yFactorM(1.0),
|
||||
antiAliasM(false)
|
||||
{
|
||||
cBitmap(stereo_xpm), // SYMBOL_STEREO
|
||||
cBitmap(monoleft_xpm), // SYMBOL_MONO_LEFT
|
||||
cBitmap(monoright_xpm), // SYMBOL_MONO_RIGHT
|
||||
cBitmap(dolbydigital_xpm), // SYMBOL_DD
|
||||
cBitmap(dolbydigital20_xpm), // SYMBOL_DD20
|
||||
cBitmap(dolbydigital51_xpm), // SYMBOL_DD51
|
||||
cBitmap(mpeg2_xpm), // SYMBOL_MPEG2
|
||||
cBitmap(h264_xpm), // SYMBOL_H264
|
||||
cBitmap(pal_xpm), // SYMBOL_PAL
|
||||
cBitmap(ntsc_xpm), // SYMBOL_NTSC
|
||||
cBitmap(encrypted_xpm), // SYMBOL_ENCRYPTED
|
||||
cBitmap(svdrp_xpm), // SYMBOL_SVDRP
|
||||
cBitmap(lock_xpm), // SYMBOL_LOCK
|
||||
cBitmap(signal_xpm), // SYMBOL_SIGNAL
|
||||
cBitmap(carrier_xpm), // SYMBOL_CARRIER
|
||||
cBitmap(viterbi_xpm), // SYMBOL_VITERBI
|
||||
cBitmap(sync_xpm), // SYMBOL_SYNC
|
||||
cBitmap(ar11_xpm), // SYMBOL_AR_1_1
|
||||
cBitmap(ar169_xpm), // SYMBOL_AR_16_9
|
||||
cBitmap(ar2211_xpm), // SYMBOL_AR_2_21_1
|
||||
cBitmap(ar43_xpm), // SYMBOL_AR_4_3
|
||||
cBitmap(device_xpm), // SYMBOL_DEVICE
|
||||
cBitmap(zero_xpm), // SYMBOL_ZERO
|
||||
cBitmap(one_xpm), // SYMBOL_ONE
|
||||
cBitmap(two_xpm), // SYMBOL_TWO
|
||||
cBitmap(three_xpm), // SYMBOL_THREE
|
||||
cBitmap(four_xpm), // SYMBOL_FOUR
|
||||
cBitmap(five_xpm), // SYMBOL_FIVE
|
||||
cBitmap(six_xpm), // SYMBOL_SIX
|
||||
cBitmap(seven_xpm), // SYMBOL_SEVEN
|
||||
cBitmap(eight_xpm), // SYMBOL_EIGHT
|
||||
cBitmap(format1080_xpm), // SYMBOL_FORMAT_1080
|
||||
cBitmap(format720_xpm), // SYMBOL_FORMAT_720
|
||||
cBitmap(format576_xpm), // SYMBOL_FORMAT_576
|
||||
cBitmap(format480_xpm) // SYMBOL_FORMAT_480
|
||||
};
|
||||
Populate();
|
||||
}
|
||||
|
||||
cFemonSymbolCache::~cFemonSymbolCache()
|
||||
{
|
||||
Flush();
|
||||
}
|
||||
|
||||
void cFemonSymbolCache::Refresh()
|
||||
{
|
||||
int width, height;
|
||||
double aspect, xfactor, yfactor;
|
||||
cDevice::PrimaryDevice()->GetOsdSize(width, height, aspect);
|
||||
debug("%s(): %dx%d\n", __PRETTY_FUNCTION__, width, height);
|
||||
xfactor = (double)width / DEFAULT_WIDTH;
|
||||
yfactor = (double)height / DEFAULT_HEIGHT;
|
||||
if (!DoubleEqual(xfactor, xFactorM) || !DoubleEqual(yfactor, yFactorM)) {
|
||||
xFactorM = xfactor;
|
||||
yFactorM = yfactor;
|
||||
Populate();
|
||||
}
|
||||
}
|
||||
|
||||
bool cFemonSymbolCache::Populate(void)
|
||||
{
|
||||
debug("%s(): %.02fx%.02f\n", __PRETTY_FUNCTION__, xFactorM, yFactorM);
|
||||
if (!DoubleEqual(0.0, xFactorM) || !DoubleEqual(0.0, yFactorM)) {
|
||||
Flush();
|
||||
|
||||
// pushing order must follow the enumeration - keep original proportions except for frontend status ones
|
||||
cacheM.Append(bmStereo.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_STEREO
|
||||
cacheM.Append(bmMonoLeft.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MONO_LEFT
|
||||
cacheM.Append(bmMonoRight.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MONO_RIGHT
|
||||
cacheM.Append(bmDolbyDigital.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD
|
||||
cacheM.Append(bmDolbyDigital20.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD20
|
||||
cacheM.Append(bmDolbyDigital51.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD51
|
||||
cacheM.Append(bmMpeg2.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MPEG2
|
||||
cacheM.Append(bmH264.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_H264
|
||||
cacheM.Append(bmPal.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_PAL
|
||||
cacheM.Append(bmNtsc.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_NTSC
|
||||
cacheM.Append(bmEncrypted.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ENCRYPTED
|
||||
cacheM.Append(bmSvdrp.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SVDRP
|
||||
cacheM.Append(bmLock.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_LOCK
|
||||
cacheM.Append(bmSignal.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_SIGNAL
|
||||
cacheM.Append(bmCarrier.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_CARRIER
|
||||
cacheM.Append(bmViterbi.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_VITERBI
|
||||
cacheM.Append(bmSync.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_SYNC
|
||||
cacheM.Append(bmAspectRatio11.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_1_1
|
||||
cacheM.Append(bmAspectRatio169.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_16_9
|
||||
cacheM.Append(bmAspectRatio2211.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_2_21_1
|
||||
cacheM.Append(bmAspectRatio43.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_4_3
|
||||
cacheM.Append(bmDevice.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DEVICE
|
||||
cacheM.Append(bmZero.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ZERO
|
||||
cacheM.Append(bmOne.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ONE
|
||||
cacheM.Append(bmTwo.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_TWO
|
||||
cacheM.Append(bmThree.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_THREE
|
||||
cacheM.Append(bmFour.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FOUR
|
||||
cacheM.Append(bmFive.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FIVE
|
||||
cacheM.Append(bmSix.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SIX
|
||||
cacheM.Append(bmSeven.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SEVEN
|
||||
cacheM.Append(bmEight.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_EIGHT
|
||||
cacheM.Append(bmFormat1080.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_1080
|
||||
cacheM.Append(bmFormat720.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_720
|
||||
cacheM.Append(bmFormat576.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_576
|
||||
cacheM.Append(bmFormat480.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_480
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cFemonSymbolCache::Flush(void)
|
||||
{
|
||||
debug("%s()\n", __PRETTY_FUNCTION__);
|
||||
for (int i = 0; i < cacheM.Size(); ++i) {
|
||||
cBitmap *bmp = cacheM[i];
|
||||
DELETENULL(bmp);
|
||||
}
|
||||
cacheM.Clear();
|
||||
return true;
|
||||
}
|
||||
|
||||
cBitmap& cFemonSymbolCache::Get(eSymbols symbolP)
|
||||
{
|
||||
cBitmap *bitmapM = NULL;
|
||||
|
||||
if (symbolP < cacheM.Size())
|
||||
bitmapM = cacheM[symbolP];
|
||||
else
|
||||
error("%s(): Invalid symbol %d\n", __PRETTY_FUNCTION__, symbolP);
|
||||
|
||||
return *bitmapM;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#ifndef __FEMONSYMBOL_H
|
||||
#define __FEMONSYMBOL_H
|
||||
|
||||
#include <vdr/tools.h>
|
||||
#include <vdr/osd.h>
|
||||
|
||||
enum eSymbols {
|
||||
@@ -49,6 +50,29 @@ enum eSymbols {
|
||||
SYMBOL_MAX_COUNT
|
||||
};
|
||||
|
||||
extern cBitmap bmSymbol[SYMBOL_MAX_COUNT];
|
||||
class cFemonSymbolCache {
|
||||
private:
|
||||
enum {
|
||||
DEFAULT_SPACING = 5,
|
||||
DEFAULT_ROUNDING = 10,
|
||||
DEFAULT_HEIGHT = 576,
|
||||
DEFAULT_WIDTH = 720
|
||||
};
|
||||
double xFactorM;
|
||||
double yFactorM;
|
||||
bool antiAliasM;
|
||||
cVector<cBitmap*> cacheM;
|
||||
bool Populate(void);
|
||||
bool Flush(void);
|
||||
public:
|
||||
cFemonSymbolCache();
|
||||
~cFemonSymbolCache();
|
||||
void Refresh();
|
||||
cBitmap& Get(eSymbols symbolP);
|
||||
int GetSpacing() { return yFactorM * DEFAULT_SPACING; }
|
||||
int GetRounding() { return yFactorM * DEFAULT_ROUNDING; }
|
||||
};
|
||||
|
||||
extern cFemonSymbolCache femonSymbols;
|
||||
|
||||
#endif // __FEMONSYMBOL_H
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: femon 1.7.8\n"
|
||||
"Project-Id-Version: vdr-femon 1.7.10\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2010-10-10 10:10+0300\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0300\n"
|
||||
|
||||
Reference in New Issue
Block a user