Commit 4c59501a authored by Klaus Schmidinger's avatar Klaus Schmidinger Committed by Dieter Hametner

Version 1.7.38

VDR developer version 1.7.38 is now available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.38.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.37-1.7.38.diff

MD5 checksums:

f4ef0f60ed662f3c983a830da67df9b2  vdr-1.7.38.tar.bz2
e945b0f44e13ed768de726cf6e66317c  vdr-1.7.37-1.7.38.diff

WARNING:
========

This is a developer version. Even though I use it in my productive
environment. I strongly recommend that you only use it under controlled
conditions and for testing and debugging.

Approaching version 2.0.0:
==========================

If all goes well, there should be no more functional or API changes
before the final version 2.0.0. There will just be a few more fixes.

From the HISTORY file:
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the French OSD texts (thanks to Marc Perrudin, Bernard Jaulini and Peter
  Münster).
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Fixed moving editing marks, so that they don't get overwritten with old values
  through an update of the marks file.
- Removed an invalid line from channels.conf.terr (reported by Lars Hanisch).
- Fixed an unexpected k_Repeat key event after a k_Release in lirc.c.
- Fixed permissions of po/sr_SR.po (reported by Dominic Evans).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed using "Pause" and "Slow motion" near the end of a recording (replay stopped
  a few seconds after the end of the recording file has been reached).
- Fixed selecting the last replayed recording in the Recordings menu in case there
  are folders and plain recordings with names that differ only in non-alphanumeric
  characters (reported by Andre Weidemann).
- Fixed the description of the OSD drawing functions DrawEllipse() (the values -5...-8
  for the Quadrants parameter are not implemented).
- Made cOsd::DestroyPixmap() "NULL proof".
- Now deleting any previously allocated pixmaps in cOsd::SetAreas().
- Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo'
  plugin (press '1' or '2', respectively).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- The timeout for trying to switch to a valid programme is now reset immediately once
  a programme has been found.
- No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking
  this function in case the driver suddenly decides to return a different errno value
  if an operation is not supported.
- Moved the definition of TIMERMACRO_TITLE and TIMERMACRO_EPISODE from recording.h to
  config.h and using them to initialize Setup.NameInstantRecord (avoids having the same
  information in two places).
- Fixed the return value of cOsdProvider::StoreImage() in case there is no OSD provider.
- Fixed a crash in cMenuEditChanItem::Set() when entering a channel number that
  doesn't exist (reported by Mikael Hübsch).
- Fixed displaying pending timers in "alert" mode in the LCARS skin.
- Added missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin (thanks to Ville
  Skyttä).
- Fixed some spellings in PLUGINS.html and Doxyfile (thanks to Ville Skyttä).
- Added '-p' to the cp command in the install-conf target of the Makefile (thanks to
  Ville Skyttä).
- Added missing 'const' to cDevice::HasProgramme() and cDevice::HasLock().
- Fixed determining the priority of the primary device in case it is neither replaying
  nor receiving a live channel (thanks to Matthias Senzel for reporting a problem with
  switching back to live viewing after replay in a setup with device bonding).
- Removed all \return and \param tags from comment lines marked with "///<" for Doxygen.
  There was only a rather small number of these, and I would probably always forget to
  put them in place when writing future comments, so I decided to drop them entirely.
- Added Doxyfile.filter to have special characters escaped that would otherwise be
  dropped by Doxygen (reported by Ville Skyttä).
- Using 'cat' instead of 'cp' to copy the Doxyfile to avoid problems in case Doxyfile
  is write protected.
- Updated the Doxyfile with a newer version of Doxygen.
- Turned off following symlinks in the Doxyfile.
- Removed trailing whitespace.
- Expanded tabs in PLUGINS/src/dvbhddevice/setup.c.
- Some formatting fixes.
parent 14bd32b9
......@@ -1996,6 +1996,11 @@ Ville Skytt
for fixing cConfig::Load() for g++ version 4.7.0
for fixing some typos in HISTORY and CONTRIBUTORS
for fixing some spellings in osd.h and svdrp.c
for adding missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin
for fixing some spellings in PLUGINS.html and Doxyfile
for adding '-p' to the cp command in the install-conf target of the Makefile
for reporting that some special characters are dropped by Doxygen and thus need to
be escaped
Steffen Beyer <cpunk@reactor.de>
for fixing setting the colored button help after deleting a recording in case the next
......@@ -2248,6 +2253,9 @@ Andr
1.7.32 no longer generates a mark at that point
for suggesting to automatically go into Pause mode if an editing mark is set during
replay
for reporting a bug in selecting the last replayed recording in the Recordings menu
in case there are folders and plain recordings with names that differ only in
non-alphanumeric characters
Jürgen Schilling <juergen_schilling@web.de>
for reporting that color buttons were displayed in the recording info menu if it
......@@ -2801,6 +2809,7 @@ Lars Hanisch <dvb@flensrocker.de>
for reporting that the SVDRP command UPDR didn't update the global recordings list
for fixing a typo in skins.h
for fixing some #include statements in plugins to use <vdr/...> instead of "vdr/..."
for reporting an invalid line in channels.conf.terr
Alex Lasnier <alex@fepg.org>
for adding tuning support for ATSC devices
......@@ -2935,6 +2944,7 @@ Dominic Evans <oldmanuk@gmail.com>
for adding cap_net_raw to the capabilities that are not dropped
for suggesting to make the channel name column in the "What's on now/next" menu
adjust its width to display the full short name of each channel
for reporting wrong permissions of po/sr_SR.po
Torsten Lang <info@torstenlang.de>
for reporting a problem with newline characters in stream component descriptions
......@@ -3032,6 +3042,7 @@ S
Peter Münster <pmlists@free.fr>
for fixing 'make install' to not overwrite existing configuration files
for translating OSD texts to the French language
Mike Hay <mike.hay@linenshorts.com>
for reporting a problem with handling the case of the polarization character in
......@@ -3057,3 +3068,17 @@ Stefan Stolz <st.stolz@gmail.com>
Malte Forkel <malte.forkel@berlin.de>
for suggesting to make the SVDRP command NEWT no longer check whether a timer with the
given data already exists
Marc Perrudin <vdr@ekass.net>
for translating OSD texts to the French language
Bernard Jaulin <bernard.jaulin@gmail.com>
for translating OSD texts to the French language
Mikael Hübsch <mikael.hubsch@gmail.com>
for reporting a crash in cMenuEditChanItem::Set() when entering a channel number that
doesn't exist
Matthias Senzel <matthias.senzel@t-online.de>
for reporting a problem with switching back to live viewing after replay in a setup
with device bonding
This source diff could not be displayed because it is too large. You can view the blob instead.
#!/usr/bin/perl
# Filter source files for use with Doxygen.
#
# Escapes special characters in comments marked with "///<".
#
# Usage: Doxyfile.filter filename
#
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: Doxyfile.filter 2.1 2013/02/17 10:54:05 kls Exp $
$TAG = "///<";
while (<>) {
$t = $_;
$p = index($t, $TAG);
if ($p >= 0) {
$p += length($TAG);
print substr($t, 0, $p);
$quote = 0;
while (1) {
$s = substr($t, $p++, 1);
last if ($s eq "");
$quote ^= 1 if ($s eq '"');
print "\\" if (!$quote && $s =~ /[\\\@<>]/);
print $s;
}
}
else {
print $t;
}
}
......@@ -7567,7 +7567,7 @@ Video Disk Recorder Revision History
behavior of the remote control in case a key is held pressed down for a while, so
that the repeat function kicks in (see MANUAL).
The builtin LIRC and KBD remote controls already use these parameters. It is
recommended that plugins that implement an interface to any kind of remote controls
recommended that plugins that implement an interface to any kind of remote controls
also use the parameters Setup.RcRepeatDelay and Setup.RcRepeatDelta for the desired
purpose, and remove any setup options they might have that serve the same purpose.
- cTimer no longer does any special "VFAT" handling to shorten directory names to 40
......@@ -7584,3 +7584,63 @@ Video Disk Recorder Revision History
as few pixmaps as possible.
- Fixed formatting and removed some superfluous break statements in vdr.c's command
line option switch.
2013-02-17: Version 1.7.38
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Updated the French OSD texts (thanks to Marc Perrudin, Bernard Jaulini and Peter
Münster).
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
- Fixed moving editing marks, so that they don't get overwritten with old values
through an update of the marks file.
- Removed an invalid line from channels.conf.terr (reported by Lars Hanisch).
- Fixed an unexpected k_Repeat key event after a k_Release in lirc.c.
- Fixed permissions of po/sr_SR.po (reported by Dominic Evans).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed using "Pause" and "Slow motion" near the end of a recording (replay stopped
a few seconds after the end of the recording file has been reached).
- Fixed selecting the last replayed recording in the Recordings menu in case there
are folders and plain recordings with names that differ only in non-alphanumeric
characters (reported by Andre Weidemann).
- Fixed the description of the OSD drawing functions DrawEllipse() (the values -5...-8
for the Quadrants parameter are not implemented).
- Made cOsd::DestroyPixmap() "NULL proof".
- Now deleting any previously allocated pixmaps in cOsd::SetAreas().
- Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo'
plugin (press '1' or '2', respectively).
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
- The timeout for trying to switch to a valid programme is now reset immediately once
a programme has been found.
- No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking
this function in case the driver suddenly decides to return a different errno value
if an operation is not supported.
- Moved the definition of TIMERMACRO_TITLE and TIMERMACRO_EPISODE from recording.h to
config.h and using them to initialize Setup.NameInstantRecord (avoids having the same
information in two places).
- Fixed the return value of cOsdProvider::StoreImage() in case there is no OSD provider.
- Fixed a crash in cMenuEditChanItem::Set() when entering a channel number that
doesn't exist (reported by Mikael Hübsch).
- Fixed displaying pending timers in "alert" mode in the LCARS skin.
- Added missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin (thanks to Ville
Skyttä).
- Fixed some spellings in PLUGINS.html and Doxyfile (thanks to Ville Skyttä).
- Added '-p' to the cp command in the install-conf target of the Makefile (thanks to
Ville Skyttä).
- Added missing 'const' to cDevice::HasProgramme() and cDevice::HasLock().
- Fixed determining the priority of the primary device in case it is neither replaying
nor receiving a live channel (thanks to Matthias Senzel for reporting a problem with
switching back to live viewing after replay in a setup with device bonding).
- Removed all \return and \param tags from comment lines marked with "///<" for Doxygen.
There was only a rather small number of these, and I would probably always forget to
put them in place when writing future comments, so I decided to drop them entirely.
- Added Doxyfile.filter to have special characters escaped that would otherwise be
dropped by Doxygen (reported by Ville Skyttä).
- Using 'cat' instead of 'cp' to copy the Doxyfile to avoid problems in case Doxyfile
is write protected.
- Updated the Doxyfile with a newer version of Doxygen.
- Turned off following symlinks in the Doxyfile.
- Removed trailing whitespace.
- Expanded tabs in PLUGINS/src/dvbhddevice/setup.c.
- Some formatting fixes.
......@@ -699,7 +699,7 @@ Version 1.6
Defines the standard compliance mode:
0 = DVB
1 = ANSI/SCTE
Video format = 4:3 The video format (or aspect ratio) of the tv set in use
(4:3 or 16:9).
......
......@@ -4,7 +4,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: Makefile 2.50 2013/01/27 14:19:49 kls Exp $
# $Id: Makefile 2.52 2013/02/17 11:08:04 kls Exp $
.DELETE_ON_ERROR:
......@@ -264,7 +264,7 @@ install-dirs:
@mkdir -p $(DESTDIR)$(RESDIR)
install-conf:
@cp -n *.conf $(DESTDIR)$(CONFDIR)
@cp -pn *.conf $(DESTDIR)$(CONFDIR)
# Documentation:
......@@ -303,7 +303,7 @@ install-pc: vdr.pc
# Source documentation:
srcdoc:
@cp $(DOXYFILE) $(DOXYFILE).tmp
@cat $(DOXYFILE) > $(DOXYFILE).tmp
@echo PROJECT_NUMBER = $(VDRVERSION) >> $(DOXYFILE).tmp
$(DOXYGEN) $(DOXYFILE).tmp
@rm $(DOXYFILE).tmp
......
......@@ -575,7 +575,7 @@ If the plugin should print log messages, you can use <tt>dsyslog()</tt>, <tt>isy
<li><tt>esyslog()</tt> prints the log message only if the log level of vdr is set to 1 or above.
</ul>
The output of this log is the syslog of the system vdr is running on.
The logmessage can be formatted like <tt>printf()</tt>, as in
The log message can be formatted like <tt>printf()</tt>, as in
<p><table><tr><td class="code"><pre>
esyslog("pluginname: error #%d has occurred", ErrorNumber);
......@@ -918,7 +918,7 @@ original values that are stored elsewhere.
</modified>
<p>
<modified>
Threfore VDR provides the functions
Therefore VDR provides the functions
<p><table><tr><td class="code"><pre>
<modified>
......@@ -939,7 +939,7 @@ call to <tt>ConfigDirectory()</tt> will automatically make sure that the <tt>plu
subdirectory will exist. If, for some reason, this cannot be achieved, <tt>NULL</tt>
will be returned.
<modified>
The behavoir of <tt>CacheDirectory()</tt> and <tt>ResourceDirectory()</tt> is similar.
The behavior of <tt>CacheDirectory()</tt> and <tt>ResourceDirectory()</tt> is similar.
</modified>
<p>
The additional <tt>plugins</tt> directory is used to keep files from plugins apart
......@@ -2025,7 +2025,7 @@ operator!
VDR has builtin facilities that select which device is able to provide a given
transponder. However, there may be situations where the setup is so special
that it requires considerations that exceed the scope of the core VDR code.
This is where <i>device hooks</i> can be used.
This is where <i>device hooks</i> can be used.
<p><table><tr><td class="code"><pre>
class cMyDeviceHook : public cDeviceHook {
......
......@@ -55,3 +55,7 @@ VDR Plugin 'dvbhddevice' Revision History
2013-01-24: Version 0.0.7
- Fixed cHdffOsd::SetAreas() (didn't clear the OSD).
2013-02-16: Version 0.0.8
- Added missing $(LDFLAGS) to the Makefile (thanks to Ville Skyttä).
#
# Makefile for a Video Disk Recorder plugin
#
# $Id: Makefile 1.22 2013/01/12 13:45:01 kls Exp $
# $Id: Makefile 1.23 2013/02/16 10:34:53 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
......@@ -103,7 +103,7 @@ install-i18n: $(I18Nmsgs)
$(SOFILE): $(OBJS) libhdffcmd
@$(MAKE) --no-print-directory -C libhdffcmd all
$(CXX) $(CXXFLAGS) -shared $(OBJS) libhdffcmd/libhdffcmd.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) libhdffcmd/libhdffcmd.a -o $@
install-lib: $(SOFILE)
install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
......
......@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: dvbhddevice.c 1.21 2013/01/29 08:59:36 kls Exp $
* $Id: dvbhddevice.c 1.22 2013/02/16 10:35:42 kls Exp $
*/
#include <vdr/plugin.h>
......@@ -12,7 +12,7 @@
#include "menu.h"
#include "setup.h"
static const char *VERSION = "0.0.7";
static const char *VERSION = "0.0.8";
static const char *DESCRIPTION = trNOOP("HD Full Featured DVB device");
static const char *MAINMENUENTRY = "dvbhddevice";
......
......@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: dvbhdffdevice.c 1.48 2013/01/29 08:59:36 kls Exp $
* $Id: dvbhdffdevice.c 1.49 2013/02/17 14:10:06 kls Exp $
*/
#include <stdint.h>
......@@ -27,7 +27,7 @@
static uchar *YuvToJpeg(uchar *Mem, int Width, int Height, int &Size, int Quality);
// --- cDvbHdFfDevice ----------------------------------------------------------
// --- cDvbHdFfDevice --------------------------------------------------------
int cDvbHdFfDevice::devHdffOffset = -1;
......
......@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: setup.c 1.18 2012/11/15 09:20:50 kls Exp $
* $Id: setup.c 1.19 2013/02/17 13:25:17 kls Exp $
*/
#include "setup.h"
......@@ -436,26 +436,26 @@ void cHdffSetupPage::Store(void)
eOSState cHdffSetupPage::ProcessKey(eKeys key)
{
eOSState state = cMenuSetupPage::ProcessKey(key);
if (state == osContinue)
{
cOsdItem * item;
switch (key)
{
case kLeft:
case kRight:
item = Get(Current());
if (item == mTvFormatItem)
{
mVideoConversion = 0;
BuildVideoConversionItem();
Display();
}
break;
default:
break;
}
}
return state;
eOSState state = cMenuSetupPage::ProcessKey(key);
if (state == osContinue)
{
cOsdItem * item;
switch (key)
{
case kLeft:
case kRight:
item = Get(Current());
if (item == mTvFormatItem)
{
mVideoConversion = 0;
BuildVideoConversionItem();
Display();
}
break;
default:
break;
}
}
return state;
}
......@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: dvbsdffdevice.c 2.34 2013/01/25 10:48:29 kls Exp $
* $Id: dvbsdffdevice.c 2.35 2013/02/17 13:16:18 kls Exp $
*/
#include "dvbsdffdevice.h"
......@@ -795,5 +795,5 @@ bool cDvbSdFfDeviceProbe::Probe(int Adapter, int Frontend)
return true;
}
}
return false;
return false;
}
......@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: dvbsdffdevice.h 2.15 2013/01/25 10:43:14 kls Exp $
* $Id: dvbsdffdevice.h 2.16 2013/02/17 13:16:29 kls Exp $
*/
#ifndef __DVBSDFFDEVICE_H
......@@ -112,5 +112,5 @@ public:
void SetOutputOnly(bool On) { outputOnly = On; }
virtual bool Probe(int Adapter, int Frontend);
};
#endif //__DVBSDFFDEVICE_H
......@@ -46,3 +46,8 @@ VDR Plugin 'osddemo' Revision History
2013-01-12: Version 0.2.5
- Adapted Makefile to changes introduced in recent VDR versions.
2013-02-13: Version 0.3.0
- Added demos of the DrawEllipse() and DrawSlope() function (press '1' or '2',
respectively).
......@@ -26,4 +26,9 @@ pixmap is displayed, it can be moved around with the Up, Down, Left
and Right buttons. The Red button turns off the "Tiled Pixmaps"
display, and the Green button toggles the color display.
In both variants of the demo, pressing the '1' key displays all
possible ellipses that can be drawn with the DrawEllipse() function,
while pressing the '2' key shows all possible slopes the DrawSlope()
function can draw.
Press Ok to close the window.
......@@ -3,16 +3,93 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: osddemo.c 2.8 2013/01/12 14:12:23 kls Exp $
* $Id: osddemo.c 2.10 2013/02/17 13:16:34 kls Exp $
*/
#include <vdr/osd.h>
#include <vdr/plugin.h>
static const char *VERSION = "0.2.5";
static const char *VERSION = "0.3.0";
static const char *DESCRIPTION = "Demo of arbitrary OSD setup";
static const char *MAINMENUENTRY = "Osd Demo";
// --- DrawEllipses ----------------------------------------------------------
void DrawEllipse(cOsd *Osd, int x1, int y1, int x2, int y2, int Quadrants)
{
Osd->DrawRectangle(x1 + 2, y1 + 2, x2 - 2, y2 - 2, clrGreen);
Osd->DrawEllipse(x1 + 3, y1 + 3, x2 - 3, y2 - 3, clrRed, Quadrants);
}
void DrawEllipses(cOsd *Osd)
{
int xa = 0;
int ya = 0;
int xb = Osd->Width() - 1;
int yb = Osd->Height() - 1;
int x0 = xa;
int x5 = xb;
int x1 = x0 + (xb - xa) / 5;
int x2 = x0 + (xb - xa) * 2 / 5;
int x3 = x0 + (xb - xa) * 3 / 5;
int x4 = x0 + (xb - xa) * 4 / 5;
int y0 = ya;
int y4 = yb;
int y2 = (y0 + y4) / 2;
int y1 = (y0 + y2) / 2;
int y3 = (y2 + y4) / 2;
Osd->DrawRectangle(xa, ya, xb, yb, clrGray50);
DrawEllipse(Osd, x4, y0, x5, y4, 0);
DrawEllipse(Osd, x2, y1, x3, y2, 1);
DrawEllipse(Osd, x1, y1, x2, y2, 2);
DrawEllipse(Osd, x1, y2, x2, y3, 3);
DrawEllipse(Osd, x2, y2, x3, y3, 4);
DrawEllipse(Osd, x3, y1, x4, y3, 5);
DrawEllipse(Osd, x1, y0, x3, y1, 6);
DrawEllipse(Osd, x0, y1, x1, y3, 7);
DrawEllipse(Osd, x1, y3, x3, y4, 8);
DrawEllipse(Osd, x3, y0, x4, y1, -1);
DrawEllipse(Osd, x0, y0, x1, y1, -2);
DrawEllipse(Osd, x0, y3, x1, y4, -3);
DrawEllipse(Osd, x3, y3, x4, y4, -4);
Osd->Flush();
}
// --- DrawSlopes ------------------------------------------------------------
void DrawSlope(cOsd *Osd, int x1, int y1, int x2, int y2, int Type)
{
Osd->DrawRectangle(x1 + 2, y1 + 2, x2 - 2, y2 - 2, clrGreen);
Osd->DrawSlope(x1 + 3, y1 + 3, x2 - 3, y2 - 3, clrRed, Type);
}
void DrawSlopes(cOsd *Osd)
{
int xa = 0;
int ya = 0;
int xb = Osd->Width() - 1;
int yb = Osd->Height() - 1;
int x0 = xa;
int x4 = xb;
int x2 = (x0 + x4) / 2;
int x1 = (x0 + x2) / 2;
int x3 = (x2 + x4) / 2;
int y0 = ya;
int y3 = yb;
int y2 = (y0 + y3) / 2;
int y1 = (y0 + y2) / 2;
Osd->DrawRectangle(xa, ya, xb, yb, clrGray50);
DrawSlope(Osd, x0, y0, x2, y1, 0);
DrawSlope(Osd, x2, y0, x4, y1, 1);
DrawSlope(Osd, x0, y1, x2, y2, 2);
DrawSlope(Osd, x2, y1, x4, y2, 3);
DrawSlope(Osd, x0, y2, x1, y3, 4);
DrawSlope(Osd, x1, y2, x2, y3, 5);
DrawSlope(Osd, x2, y2, x3, y3, 6);
DrawSlope(Osd, x3, y2, x4, y3, 7);
Osd->Flush();
}
// --- cLineGame -------------------------------------------------------------
class cLineGame : public cOsdObject {
......@@ -31,7 +108,7 @@ public:
cLineGame::cLineGame(void)
{
osd = NULL;
x = y = 50;
x = y = 0;
color = clrRed;
}
......@@ -42,12 +119,23 @@ cLineGame::~cLineGame()
void cLineGame::Show(void)
{
osd = cOsdProvider::NewOsd(100, 50, 50);
osd = cOsdProvider::NewOsd(cOsd::OsdLeft(), cOsd::OsdTop(), 50);
if (osd) {
tArea Area = { 0, 0, 99, 199, 4 };
osd->SetAreas(&Area, 1);
osd->DrawRectangle(0, 0, 99, 199, clrGray50);
osd->Flush();
int x1 = cOsd::OsdWidth() - 1;
int y1 = cOsd::OsdHeight() - 1;
while (x1 > 0 && y1 > 0) {
tArea Area = { 0, 0, x1, y1, 4 };
if (osd->CanHandleAreas(&Area, 1) == oeOk) {
osd->SetAreas(&Area, 1);
osd->DrawRectangle(0, 0, osd->Width() - 1, osd->Height() - 1, clrGray50);
osd->Flush();
x = osd->Width() / 2;
y = osd->Height() / 2;
break;
}
x1 = x1 * 9 / 10;
y1 = y1 * 9 / 10;
}
}
}
......@@ -55,19 +143,24 @@ eOSState cLineGame::ProcessKey(eKeys Key)
{
eOSState state = cOsdObject::ProcessKey(Key);
if (state == osUnknown) {
const int d = 4;
switch (Key & ~k_Repeat) {
case kUp: if (y > 0) y--; break;
case kDown: if (y < 196) y++; break;
case kLeft: if (x > 0) x--; break;
case kRight: if (x < 96) x++; break;
case kUp: y = max(0, y - d); break;
case kDown: y = min(osd->Height() - d, y + d); break;
case kLeft: x = max(0, x - d); break;
case kRight: x = min(osd->Width() - d, x + d); break;
case kRed: color = clrRed; break;
case kGreen: color = clrGreen; break;
case kYellow: color = clrYellow; break;
case kBlue: color = clrBlue; break;
case k1: DrawEllipses(osd);
return osContinue;
case k2: DrawSlopes(osd);
return osContinue;
case kOk: return osEnd;
default: return state;
}
osd->DrawRectangle(x, y, x + 3, y + 3, color);
osd->DrawRectangle(x, y, x + d - 1, y + d - 1, color);
osd->Flush();
state = osContinue;
}
......@@ -84,6 +177,7 @@ private:
bool clockwise;
cPixmap *destroyablePixmap;
cPixmap *toggleablePixmap;
bool SetArea(void);
virtual void Action(void);
cPixmap *CreateTextPixmap(const char *s, int Line, int Layer, tColor ColorFg, tColor ColorBg, const cFont *Font);
public:
......@@ -241,7 +335,7 @@ void cTrueColorDemo::Action(void)
State++;
}
break;
case 1: {
case 1: {
FadeInPixmap = CreateTextPixmap("Video Disk Recorder", Line, 3, clrYellow, clrTransparent, OsdFont);
if (FadeInPixmap)
Line += FadeInPixmap->DrawPort().Height();
......@@ -390,13 +484,21 @@ void cTrueColorDemo::Action(void)
delete LrgFont;
}
bool cTrueColorDemo::SetArea(void)
{
if (osd) {
tArea Area = { 0, 0, cOsd::OsdWidth() - 1, cOsd::OsdHeight() - 1, 32 };
return osd->SetAreas(&Area, 1) == oeOk;
}
return false;
}
void cTrueColorDemo::Show(void)
{
osd = cOsdProvider::NewOsd(cOsd::OsdLeft(), cOsd::OsdTop(), 50);
if (osd) {
tArea Area = { 0, 0, cOsd::OsdWidth() - 1, cOsd::OsdHeight() - 1, 32 };
if (osd->SetAreas(&Area, 1) == oeOk) {
osd->DrawRectangle(0, 0, osd->Width() -1 , osd->Height() - 1, clrGray50);
if (SetArea()) {
osd->DrawRectangle(0, 0, osd->Width() - 1, osd->Height() - 1, clrGray50);
osd->Flush();
Start();
}
......@@ -423,6 +525,14 @@ eOSState cTrueColorDemo::ProcessKey(eKeys Key)
case kGreen: if (toggleablePixmap)
toggleablePixmap->SetLayer(-toggleablePixmap->Layer());
break;
case k1: Cancel(3);
SetArea();
DrawEllipses(osd);
break;
case k2: Cancel(3);
SetArea();
DrawSlopes(osd);
break;
case kOk: return osEnd;
default: return state;
}
......
......@@ -7,7 +7,7 @@
#
# See the README file for copyright information and how to reach the author.
#
# $Id: pic2mpg 2.4 2012/01/08 13:27:17 kls Exp $
# $Id: pic2mpg 2.5 2013/02/17 13:17:13 kls Exp $
use File::Path;
use File::Spec;
......@@ -37,9 +37,9 @@ $Verbose = $opt_v;
$ListFiles = $Verbose >= 1;
$Detailed = $Verbose >= 2;
# Supported picture types:
# Supported picture types:
%PICTYPES = (
%PICTYPES = (
bmp => 1,
gif => 1,
jpeg => 1,
......@@ -135,7 +135,7 @@ sub ConvertFile
return if (!defined $PICTYPES{$Type});
my $Exif = ImageInfo($Pict);
my $Orientation = $$Exif{"Orientation"};
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+)/;
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+)/;
my $Rotate = $Degrees ? "-rotate $Degrees" : "";
print "orientation = '$Orientation' -> rotation = $Rotate\n" if ($Detailed);
$Pict = EscapeMeta($Pict);
......
......@@ -154,7 +154,7 @@ sub ConvertFile
print "image size is $w x $h\n" if ($Detailed);
my $Exif = ImageInfo($Pict);
my $Orientation = $$Exif{"Orientation"};
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+) /;
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+) /;
my $Rotate = "-null";
$Rotate = "-cw" if $Degrees eq "90";
$Rotate = "-ccw" if $Degrees eq "270";
......
......@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: svccli.c 2.2 2013/01/12 14:13:00 kls Exp $
* $Id: svccli.c 2.3 2013/02/17 14:10:26 kls Exp $
*/
#include <stdlib.h>
......@@ -32,7 +32,7 @@ struct AddService_v1_0 {
int sum;
};
// --- cPluginSvcCli ----------------------------------------------------------
// --- cPluginSvcCli ---------------------------------------------------------
cOsdObject *cPluginSvcCli::MainMenuAction(void)
{
......
......@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: svcsvr.c 2.2 2013/01/12 14:13:05 kls Exp $
* $Id: svcsvr.c 2.3 2013/02/17 14:10:38 kls Exp $
*/
#include <stdlib.h>
......@@ -29,7 +29,7 @@ struct AddService_v1_0 {
int sum;
};
// --- cPluginSvcSvr ----------------------------------------------------------
// --- cPluginSvcSvr ---------------------------------------------------------
bool cPluginSvcSvr::Service(const char *Id, void *Data)
{
......
......@@ -36,5 +36,5 @@ the ones in this system, but here we have the full source code
and can modify the menus in whatever way desired.
"VDR Video Disk Recorder" is a registered trademark of Klaus Schmidinger.
"TVDR TV Done Right" is a registered trademark of Klaus Schmidinger.
"VDR Video Disk Recorder" is a registered trademark of Klaus Schmidinger.
"TVDR TV Done Right" is a registered trademark of Klaus Schmidinger.