2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 10:46:53 +00:00

- feature: 70_VIERA: Using non blocking for status update.

Added color button for remoteControl and SVG layout
                       Some new SVG icons for remoteControl layout

git-svn-id: https://svn.fhem.de/fhem/trunk@10463 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
teevau 2016-01-11 18:03:07 +00:00
parent 38dfd4f6da
commit f14b3ec3ad
10 changed files with 1045 additions and 184 deletions

View File

@ -1,5 +1,8 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- feature: 70_VIERA: Using non blocking for status update.
Added color button for remoteControl and SVG layout
Some new SVG icons for remoteControl layout
- change: 73_km200: New attribute "disabled" and default values changed.
- feature: HUEbridge: added set deletescene and get scenes detail
- feature: HUEDevice: added (hue|sat|ct)(Up|Down) commands

View File

@ -8,9 +8,19 @@
# written 2013 by Tobias Vaupel <fhem at 622 mbit dot de>
#
#
# Version = 1.23
# Version = 1.24
#
# Version History:
# - 1.24 - 2015-07-08
# -- Using non blocking as default for status update. Use attr to use blocking mode.
# -- Replaced when/given with if/elsif
# -- Added color buttons for remoteControl Layout
# -- Added remoteControl Layout with SVG
# -- InternalTimer is deleted at define. Avoid multiple internalTimer running in parallel when redefining device
# -- Added TCP-Port to internal PORT instead of fixed coding
# -- increased byte length at command read (IO::Socket::INET) from 1 to 1024
# -- in very few cases the TV is answering with HTTP Code 400 BAD REQUEST. This is considered now and is interpreted as device on instead of off.
#
# - 1.23 - 2014-08-01
# -- Add parameter "HDMI1" - "HDMI4" for command remoteControl to select HDMI input directly
# -- Add command "input" to select a HDMI port, TV or SD-Card as source
@ -27,7 +37,7 @@
#
# - 1.11 - 2013-08-13
# -- added "noArg" at get/set-command
# -- changed format of return() in VIERA_Get() for get-command dropdown menu in FHEMWEB
# -- changed format of return() in VIERA_Get() for get-command drop down menu in FHEMWEB
#
# - 1.10 - 2013-06-29
# -- Added support for module 95_remotecontrol
@ -45,10 +55,12 @@ use warnings;
use IO::Socket::INET;
use feature qw/say switch/;
use Time::HiRes qw(gettimeofday sleep);
use Blocking;
#########################
# Forward declaration for remotecontrol module
sub VIERA_RClayout_TV();
sub VIERA_RClayout_TV_SVG();
sub VIERA_RCmakenotify($$);
@ -113,18 +125,25 @@ my %VIERA_remoteControl_args = (
"NRC_HDMI4" => "Switch to HDMI input 4",
);
# Initialize the module and tell FHEM name of additional functions
# Param1: Hash of FHEM-Device
# Return: no return code
sub VIERA_Initialize($){
my ($hash) = @_;
$hash->{DefFn} = "VIERA_Define";
$hash->{SetFn} = "VIERA_Set";
$hash->{GetFn} = "VIERA_Get";
$hash->{UndefFn} = "VIERA_Undefine";
$hash->{AttrList} = $readingFnAttributes;
$hash->{AttrList} = "blocking:1,0 $readingFnAttributes";
$data{RC_layout}{VIERA_TV} = "VIERA_RClayout_TV";
$data{RC_layout}{VIERA_TV_SVG} = "VIERA_RClayout_TV_SVG";
$data{RC_makenotify}{VIERA} = "VIERA_RCmakenotify";
}
# Callback when 'define' is used at FHEM
# Param1: Hash of FHEM-Device
# Param2: String of 'define' command
# Return: Help text for FHEMWEB
sub VIERA_Define($$){
my ($hash, $def) = @_;
my @args = split("[ \t][ \t]*", $def);
@ -137,22 +156,32 @@ sub VIERA_Define($$){
}
$hash->{helper}{HOST} = $args[2];
readingsSingleUpdate($hash,"state","Initialized",1);
$hash->{helper}{PORT} = 55000;
if(defined($args[3]) and $args[3] > 10) {
$hash->{helper}{INTERVAL}=$args[3];
}
else{
else {
$hash->{helper}{INTERVAL}=30;
}
CommandAttr(undef,$name.' webCmd off') if( !defined( AttrVal($hash->{NAME}, "webCmd", undef) ) );
Log3 $name, 2, "VIERA: defined with host: $hash->{helper}{HOST} and interval: $hash->{helper}{INTERVAL}";
CommandAttr(undef,$name.' webCmd off') if( !defined( AttrVal($hash->{NAME}, "webCmd", undef)) );
BlockingKill($hash->{helper}{RUNNING_PID_GET}) if(defined($hash->{helper}{RUNNING_PID_GET}));
delete($hash->{helper}{RUNNING_PID_GET});
RemoveInternalTimer($hash);
InternalTimer(gettimeofday()+$hash->{helper}{INTERVAL}, "VIERA_GetStatus", $hash, 0);
Log3 $name, 2, "VIERA: defined with host: $hash->{helper}{HOST} and interval: $hash->{helper}{INTERVAL}";
readingsSingleUpdate($hash,"state","Initialized",1);
return undef;
}
# Callback when 'set' is used at FHEM
# Param1: Hash of FHEM-Device
# Param2: String of 'set' command
# Return: Help text for FHEMWEB
sub VIERA_Set($@){
my ($hash, @a) = @_;
my $name = $hash->{NAME};
@ -171,114 +200,92 @@ sub VIERA_Set($@){
return "VIERA: No argument given, $usage" if(!defined($a[1]));
my $state = lc($a[2]) if(defined($a[2]));
given($what) {
when("mute"){
Log3 $name, 3, "VIERA: Set mute $state";
if ($state eq "on") {$state = 1;} else {$state = 0;}
VIERA_connection(VIERA_BuildXML_RendCtrl($hash, "Set", "Mute", $state), $host);
VIERA_GetStatus($hash, 1);
break;
if ($what eq "mute"){
Log3 $name, 3, "VIERA: Set mute $state";
if ($state eq "on") {$state = 1;} else {$state = 0;}
VIERA_connection($hash, VIERA_BuildXML_RendCtrl($hash, "Set", "Mute", $state));
VIERA_GetStatus($hash, 1);
}
elsif ($what eq "volume"){
return "VIERA: Volume range is too high! Use Value 0 till 100 for volume." if($state < 0 || $state > 100);
Log3 $name, 3, "VIERA: Set volume $state";
VIERA_connection($hash, VIERA_BuildXML_RendCtrl($hash, "Set", "Volume", $state));
VIERA_GetStatus($hash, 1);
}
elsif ($what eq "volumeup"){
return "VIERA: Volume range is too high!" if(ReadingsVal($name, "volume", "0") > 100);
Log3 $name, 3, "VIERA: Set volumeUp";
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,"VOLUP"));
VIERA_GetStatus($hash, 1);
}
elsif ($what eq "volumedown"){
return "VIERA: Volume range is too low!" if(ReadingsVal($name, "volume", "0") < 1);
Log3 $name, 3, "VIERA: Set volumeDown";
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,"VOLDOWN"));
VIERA_GetStatus($hash, 1);
}
elsif ($what eq "channel"){
return "VIERA: Channel is too high or low!" if($state < 1 || $state > 9999);
Log3 $name, 3, "VIERA: Set channel $state";
for(my $i = 0; $i <= length($state)-1; $i++) {
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,"D" . substr($state, $i, 1)));
sleep 0.1;
}
when("volume"){
return "VIERA: Volume range is too high! Use Value 0 till 100 for volume." if($state < 0 || $state > 100);
Log3 $name, 3, "VIERA: Set volume $state";
VIERA_connection(VIERA_BuildXML_RendCtrl($hash, "Set", "Volume", $state), $host);
VIERA_GetStatus($hash, 1);
break;
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,"ENTER"));
}
elsif ($what eq "channelup"){
Log3 $name, 3, "VIERA: Set channelUp";
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,"CH_UP"));
}
elsif ($what eq "channeldown"){
Log3 $name, 3, "VIERA: Set channelDown";
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,"CH_DOWN"));
}
elsif ($what eq "remotecontrol"){
if($state eq "?"){
$usage = "choose one of the states:\n";
foreach $key (sort keys %VIERA_remoteControl_args){
if(length($key) < 17){ $tab = "\t\t"; }else{ $tab = "\t"; }
$usage .= "$key $tab=> $VIERA_remoteControl_args{$key}\n";
}
when("volumeup"){
return "VIERA: Volume range is too high!" if(ReadingsVal($name, "volume", "0") > 100);
Log3 $name, 3, "VIERA: Set volumeUp";
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,"VOLUP"), $host);
VIERA_GetStatus($hash, 1);
break;
$usage =~ s/(NRC_|-ONOFF)//g;
return $usage;
}
when("volumedown"){
return "VIERA: Volume range is too low!" if(ReadingsVal($name, "volume", "0") < 1);
Log3 $name, 3, "VIERA: Set volumeDown";
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,"VOLDOWN"), $host);
VIERA_GetStatus($hash, 1);
break;
else{
$state = uc($state);
Log3 $name, 3, "VIERA: Set remoteControl $state";
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,$state));
}
when("channel"){
return "VIERA: Channel is too high or low!" if($state < 1 || $state > 9999);
Log3 $name, 3, "VIERA: Set channel $state";
for(my $i = 0; $i <= length($state)-1; $i++) {
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,"D" . substr($state, $i, 1)), $host);
sleep 0.1;
}
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,"ENTER"), $host);
break;
}
when("channelup"){
Log3 $name, 3, "VIERA: Set channelUp";
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,"CH_UP"), $host);
break;
}
when("channeldown"){
Log3 $name, 3, "VIERA: Set channelDown";
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,"CH_DOWN"), $host);
break;
}
when("remotecontrol"){
if($state eq "?"){
$usage = "choose one of the states:\n";
foreach $key (sort keys %VIERA_remoteControl_args){
if(length($key) < 17){ $tab = "\t\t"; }else{ $tab = "\t"; }
$usage .= "$key $tab=> $VIERA_remoteControl_args{$key}\n";
}
$usage =~ s/(NRC_|-ONOFF)//g;
return $usage;
}
else{
$state = uc($state);
Log3 $name, 3, "VIERA: Set remoteControl $state";
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,$state), $host);
}
break;
}
when("off"){
Log3 $name, 3, "VIERA: Set off";
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,"POWER"), $host);
break;
}
when("statusrequest"){
Log3 $name, 3, "VIERA: Set statusRequest";
VIERA_GetStatus($hash, 1);
break;
}
when("input"){
$state = uc($state);
return "VIERA: Input $state isn't available." if($state ne "HDMI1" && $state ne "HDMI2" && $state ne "HDMI3" && $state ne "HDMI4" && $state ne "SDCARD" && $state ne "TV");
$state = "SD_CARD" if ($state eq "SDCARD");
Log3 $name, 3, "VIERA: Set input $state";
VIERA_connection(VIERA_BuildXML_NetCtrl($hash,$state), $host);
break;
}
when("?"){
return "$usage";
break;
}
default{
Log3 $name, 3, "VIERA: Unknown argument $what, $usage";
return "Unknown argument $what, $usage";
};
}
elsif ($what eq "off"){
Log3 $name, 3, "VIERA: Set off";
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,"POWER"));
}
elsif ($what eq "statusrequest"){
Log3 $name, 3, "VIERA: Set statusRequest";
VIERA_GetStatus($hash, 1);
}
elsif ($what eq "input"){
$state = uc($state);
return "VIERA: Input $state isn't available." if($state ne "HDMI1" && $state ne "HDMI2" && $state ne "HDMI3" && $state ne "HDMI4" && $state ne "SDCARD" && $state ne "TV");
$state = "SD_CARD" if ($state eq "SDCARD");
Log3 $name, 3, "VIERA: Set input $state";
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash,$state));
}
elsif ($what eq "?"){
return "$usage";
}
else {
Log3 $name, 3, "VIERA: Unknown argument $what, $usage";
return "Unknown argument $what, $usage";
}
return undef;
}
# Callback when 'get' is used at FHEM
# Param1: Hash of FHEM-Device
# Param2: String of 'set' command
# Return: Help text for FHEMWEB
sub VIERA_Get($@){
my ($hash, @a) = @_;
my $what;
@ -302,29 +309,51 @@ sub VIERA_Get($@){
}
}
# Callback when 'delete' is used at FHEM or FHEM is restarting/shutdown
# Param1: Hash of FHEM-Device
# Param2: Name of FHEM-Device
# Return: undef
sub VIERA_Undefine($$){
my($hash, $name) = @_;
# Stop the internal GetStatus-Loop and exist
RemoveInternalTimer($hash);
BlockingKill($hash->{helper}{RUNNING_PID_GET}) if(defined($hash->{helper}{RUNNING_PID_GET}));
return undef;
}
# Function is called periodically by InternalTimer and fetch informations from device. The decision if blocking or nonBlocking is used is made here.
# Param1: Hash of FHEM-Device
# Param2: Optional, if set to 1 fetch information from device without interrupting InternalTimer
sub VIERA_GetStatus($;$){
my ($hash, $local) = @_;
my $name = $hash->{NAME};
my $host = $hash->{helper}{HOST};
my $blocking = AttrVal($name, "blocking", 0); #use non-blocking in standard. Just use blocking when set by attr
#if $local is set to 1 just fetch informations from device without interupting InternalTimer
#if $local is set to 1 just fetch informations from device without interrupting InternalTimer
$local = 0 unless(defined($local));
InternalTimer(gettimeofday()+$hash->{helper}{INTERVAL}, "VIERA_GetStatus", $hash, 0) unless($local == 1);
return "" if(!defined($hash->{helper}{HOST}) or !defined($hash->{helper}{INTERVAL}));
my $returnVol = VIERA_connection(VIERA_BuildXML_RendCtrl($hash, "Get", "Volume", ""), $host);
Log3 $name, 5, "VIERA: GetStatusVol-Request returned: $returnVol" if(defined($returnVol));
if ($blocking == 0) {
Log3 $name, 4, "VIERA[VIERA_GetStatus]: Using non blocking...";
$hash->{helper}{RUNNING_PID_GET} = BlockingCall("VIERA_GetDoIt", $hash, "VIERA_GetDone", 10, "VIERA_GetAbortFn", $hash) unless(exists($hash->{helper}{RUNNING_PID_GET}));
if($hash->{helper}{RUNNING_PID_GET}) {
Log3 $name, 4, "VIERA[VIERA_GetStatus]: VIERA_GetDoIt() BlockingCall process started with PID $hash->{helper}{RUNNING_PID_GET}{pid}";
}
else {
Log3 $name, 3, "VIERA[VIERA_GetStatus]: BlockingCall process start failed for VIERA_GetDoIt()";
}
return;
}
Log3 $name, 4, "VIERA[VIERA_GetStatus]: Using blocking...";
my $returnVol = VIERA_connection($hash, VIERA_BuildXML_RendCtrl($hash, "Get", "Volume", ""));
Log3 $name, 5, "VIERA[VIERA_GetStatus]: Vol-Request returned: $returnVol" if(defined($returnVol));
if(not defined($returnVol) or $returnVol eq "") {
Log3 $name, 4, "VIERA: GetStatusVol-Request NO SOCKET!";
Log3 $name, 4, "VIERA[VIERA_GetStatus]: Vol-Request NO SOCKET!";
if( ReadingsVal($name,"state","absent") ne "absent") {
readingsBeginUpdate($hash);
readingsBulkUpdate($hash, "state", "absent");
@ -335,10 +364,10 @@ sub VIERA_GetStatus($;$){
return;
}
my $returnMute = VIERA_connection(VIERA_BuildXML_RendCtrl($hash, "Get", "Mute", ""), $host);
Log3 $name, 5, "VIERA: GetStatusMute-Request returned: $returnMute" if(defined($returnMute));
my $returnMute = VIERA_connection($hash, VIERA_BuildXML_RendCtrl($hash, "Get", "Mute", ""));
Log3 $name, 5, "VIERA[VIERA_GetStatus]: Mute-Request returned: $returnMute" if(defined($returnMute));
if(not defined($returnMute) or $returnMute eq "") {
Log3 $name, 4, "VIERA: GetStatusMute-Request NO SOCKET!";
Log3 $name, 4, "VIERA[VIERA_GetStatus]: Mute-Request NO SOCKET!";
if( ReadingsVal($name,"state","absent") ne "absent") {
readingsBeginUpdate($hash);
readingsBulkUpdate($hash, "state", "absent");
@ -351,14 +380,14 @@ sub VIERA_GetStatus($;$){
readingsBeginUpdate($hash);
if($returnVol =~ /<CurrentVolume>(.+)<\/CurrentVolume>/){
Log3 $name, 4, "VIERA: GetStatus-Set reading volume to $1";
Log3 $name, 4, "VIERA[VIERA_GetStatus]: Set reading volume to $1";
if( $1 != ReadingsVal($name, "volume", "0") ) {readingsBulkUpdate($hash, "volume", $1);}
}
if($returnMute =~ /<CurrentMute>(.+)<\/CurrentMute>/){
my $myMute = $1;
if ($myMute == 0) { $myMute = "off"; } else { $myMute = "on";}
Log3 $name, 4, "VIERA: GetStatus-Set reading mute to $myMute";
Log3 $name, 4, "VIERA[VIERA_GetStatus]: Set reading mute to $myMute";
if( $myMute ne ReadingsVal($name, "mute", "0") ) {readingsBulkUpdate($hash, "mute", $myMute);}
}
if( ReadingsVal($name,"state","absent") ne "on") {
@ -368,88 +397,132 @@ sub VIERA_GetStatus($;$){
}
readingsEndUpdate($hash, 1);
#Log3 $name, 4, "VIERA $name: $hash->{STATE}";
return $hash->{STATE};
}
# To sent RAW-Data as TCP Client to device
# param1: Hash of FHEM-Device
# param2: RAW Data
#return: RAW answer when successful or undef if no socket is available.
sub VIERA_connection($$){
my $tmp = shift ;
my $TV = shift;
my ($hash, $data) = @_;
my $name = $hash->{NAME};
my $buffer = "";
my $tmp2 = "";
my $buff = "";
my $blocking = "NonBlocking-VIERA_connection()" if (AttrVal($name, "blocking", 0) == 0);
$blocking = "Blocking-VIERA_connection()" if (AttrVal($name, "blocking", 0) == 1);
my $sock = new IO::Socket::INET (
PeerAddr => $TV,
PeerPort => '55000',
PeerAddr => $hash->{helper}{HOST},
PeerPort => $hash->{helper}{PORT},
Proto => 'tcp',
Timeout => 2
);
#Log3 $name, 5, "VIERA: connection message: $tmp";
if(defined ($sock)) {
Log3 $hash, 5, "VIERA[$blocking]: Send Data to $hash->{helper}{HOST}:$hash->{helper}{PORT}:\n$data";
print $sock $data;
if(defined ($sock)){
print $sock $tmp;
my $buff ="";
while ((read $sock, $buff, 1) > 0){
while ((read $sock, $buff, 1024) > 0){
$buffer .= $buff;
}
my @tmp2 = split (/\n/,$buffer);
#Log3 $name, 4, "VIERA: $TV response: $tmp2[0]";
#Log3 $name, 5, "VIERA: $TV buffer response: $buffer";
Log3 $hash, 5, "VIERA[$blocking]: $hash->{helper}{HOST} buffer response:\n$buffer";
$sock->close();
return $buffer;
}
else{
#Log3 $name, 4, "VIERA: $TV: not able to open socket";
else {
Log3 $hash, 4, "VIERA[$blocking]: $hash->{helper}{HOST}: not able to open socket";
return undef;
}
}
#####################################
# Callback from 95_remotecontrol for command makenotify.
# Param1: Name of remoteControl device
# Param2: Name of target FHEM device
sub VIERA_RCmakenotify($$) {
my ($nam, $ndev) = @_;
my $nname="notify_$nam";
fhem("define $nname notify $nam set $ndev remoteControl ".'$EVENT',1);
Log3 undef, 2, "[remotecontrol:VIERA] Notify created: $nname";
Log3 undef, 2, "[remoteControl:VIERA] Notify created: $nname";
return "Notify created by VIERA: $nname";
}
#####################################
# Default-layout for panasonic TV (maybe other VIERA devices will have other layouts)
# Callback from 95_remotecontrol for command layout. Creates non svg layout
sub VIERA_RClayout_TV() {
my @row;
my $i = 0;
$row[0]="power:POWEROFF2,TV, CHG_INPUT:HDMI";
$row[1]="MENU, disp_mode:ASPECT,epg:GUIDE";
$row[2]="VIERA_LINK,VTOOLS,INTERNET";
$row[3]=":blank,:blank,:blank";
$row[4]="INFO:INFO2,UP,cancel:EXIT";
$row[5]="LEFT,ENTER,RIGHT";
$row[6]="SUBMENU,DOWN,RETURN";
$row[7]=":blank,:blank,:blank";
$row[8]="d1:1,d2:2,d3:3";
$row[9]="d4:4,d5:5,d6:6";
$row[10]="d7:7,d8:8,d9:9";
$row[11]="MUTE,d0:0,r_tune:PRECH";
$row[12]=":blank,:blank,:blank";
$row[13]="VOLUP,:blank,ch_up:CHUP";
$row[14]=":VOL,:blank,:PROG";
$row[15]="VOLDOWN,:blank,ch_down:CHDOWN";
$row[16]=":blank,:blank,:blank";
$row[17]="rew:REWIND,PLAY,FF";
$row[18]="STOP,PAUSE,REC";
$row[$i++]="power:POWEROFF2, TV, CHG_INPUT:HDMI";
$row[$i++]="MENU, disp_mode:ASPECT, epg:GUIDE";
$row[$i++]="VIERA_LINK, VTOOLS, INTERNET";
$row[$i++]=":blank, :blank, :blank";
$row[$i++]="INFO:INFO2, UP, cancel:EXIT";
$row[$i++]="LEFT, ENTER, RIGHT";
$row[$i++]="SUBMENU, DOWN, RETURN";
$row[$i++]="red:RED, :blank, green:GREEN";
$row[$i++]="yellow:YELLOW, :blank, blue:BLUE";
$row[$i++]="d1:1, d2:2, d3:3";
$row[$i++]="d4:4, d5:5, d6:6";
$row[$i++]="d7:7, d8:8, d9:9";
$row[$i++]="MUTE, d0:0, r_tune:PRECH";
$row[$i++]=":blank, :blank, :blank";
$row[$i++]="VOLUP, :blank, ch_up:CHUP";
$row[$i++]=":VOL, :blank, :PROG";
$row[$i++]="VOLDOWN, :blank, ch_down:CHDOWN";
$row[$i++]=":blank, :blank, :blank";
$row[$i++]="rew:REWIND, PLAY, FF";
$row[$i++]="STOP, PAUSE, REC";
#Replace two or more spaces with one space
for (@row) {s/\s+/ /g}
$row[$i++]="attr rc_iconpath icons/remotecontrol";
$row[$i++]="attr rc_iconprefix black_btn_";
$row[19]="attr rc_iconpath icons/remotecontrol";
$row[20]="attr rc_iconprefix black_btn_";
return @row;
}
# Callback from 95_remotecontrol for command layout. Creates svg layout
sub VIERA_RClayout_TV_SVG() {
my @row;
my $i = 0;
$row[$i++]="power:rc_POWER.svg, TV:rc_TV2.svg, CHG_INPUT:rc_AV.svg";
$row[$i++]="MENU:rc_MENU.svg, disp_mode:rc_ASPECT.svg, epg:rc_EPG.svg";
$row[$i++]="VIERA_LINK:rc_VIERA_LINK.svg, VTOOLS:rc_VIERA_TOOLS.svg, INTERNET:rc_WEB.svg";
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
$row[$i++]="INFO:rc_INFO2.svg, UP:rc_UP.svg, cancel:rc_EXIT.svg";
$row[$i++]="LEFT:rc_LEFT.svg, ENTER:rc_dot.svg, RIGHT:rc_RIGHT.svg";
$row[$i++]="SUBMENU:rc_OPTIONS.svg, DOWN:rc_DOWN.svg, RETURN:rc_BACK.svg";
$row[$i++]="red:rc_RED.svg, :rc_BLANK.svg, green:rc_GREEN.svg";
$row[$i++]="yellow:rc_YELLOW.svg, :rc_BLANK.svg, blue:rc_BLUE.svg";
$row[$i++]="d1:rc_1.svg, d2:rc_2.svg, d3:rc_3.svg";
$row[$i++]="d4:rc_4.svg, d5:rc_5.svg, d6:rc_6.svg";
$row[$i++]="d7:rc_7.svg, d8:rc_8.svg, d9:rc_9.svg";
$row[$i++]="MUTE:rc_MUTE.svg, d0:rc_0.svg, r_tune:rc_BACK.svg";
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
$row[$i++]="VOLUP:rc_UP.svg, :rc_BLANK.svg, ch_up:rc_UP.svg";
$row[$i++]=":rc_VOL.svg, :rc_BLANK.svg, :rc_PROG.svg";
$row[$i++]="VOLDOWN:rc_DOWN.svg, :rc_BLANK.svg, ch_down:rc_DOWN.svg";
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
$row[$i++]="rew:rc_REW.svg, PLAY:rc_PLAY.svg, FF:rc_FF.svg";
$row[$i++]="STOP:rc_STOP.svg, PAUSE:rc_PAUSE.svg, REC:rc_REC.svg";
#Replace two or more spaces with one space
for (@row) {s/\s+/ /g}
return @row;
}
# Create RAW Data to sent pressed keys of remoteControl to device.
# Param1: Hash of FHEM-Device
# Param2: Name of key to send
# Return: RAW html request for xml soap
sub VIERA_BuildXML_NetCtrl($$){
my ($hash, $command) = @_;
my $host = $hash->{helper}{HOST};
my $port = $hash->{helper}{PORT};
my $callsoap = "";
my $message = "";
@ -468,7 +541,7 @@ sub VIERA_BuildXML_NetCtrl($$){
$size = length($callsoap);
$head .= "POST /nrc/control_0 HTTP/1.1\r\n";
$head .= "Host: $host:55000\r\n";
$head .= "Host: $host:$port\r\n";
$head .= "SOAPACTION: \"urn:panasonic-com:service:p00NetworkControl:1#X_SendKey\"\r\n";
$head .= "Content-Type: text/xml; charset=\"utf-8\"\r\n";
$head .= "Content-Length: $size\r\n";
@ -476,20 +549,27 @@ sub VIERA_BuildXML_NetCtrl($$){
$message .= $head;
$message .= $callsoap;
Log3 $hash, 5, "VIERA: Building XML SOAP (NetworkControl) for command $command to host $host:\n$message";
#Log3 $hash, 5, "VIERA: Building XML SOAP (NetworkControl) for command $command to host $host:\n$message";
return $message;
}
# Create RAW Data to send or get volume/mute state
# Param1: Hash of FHEM-Device
# Param2: get|set
# Param3: volume|mute
# Param4: value for set command
# Return: RAW html request for xml soap
sub VIERA_BuildXML_RendCtrl($$$$){
my ($hash, $methode, $command, $value) = @_;
my $host = $hash->{helper}{HOST};
my $port = $hash->{helper}{PORT};
my $callsoap = "";
my $message = "";
my $head = "";
my $size = "";
Log3 $hash, 5, "DEBUG: $command with $value to $host";
#Log3 $hash, 5, "VIERA: $command with $value to $host";
$callsoap .= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
$callsoap .= "<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n";
@ -504,8 +584,8 @@ sub VIERA_BuildXML_RendCtrl($$$$){
$size = length($callsoap);
$head .= "POST /dmr/control_0 HTTP/1.1\r\n";
$head .= "Host: $host:55000\r\n";
$head .= "POST /dmr/control_0 HTTP/1.0\r\n";
$head .= "Host: $host:$port\r\n";
$head .= "SOAPACTION: \"urn:schemas-upnp-org:service:RenderingControl:1#$methode$command\"\r\n";
$head .= "Content-Type: text/xml; charset=\"utf-8\"\r\n";
$head .= "Content-Length: $size\r\n";
@ -513,9 +593,133 @@ sub VIERA_BuildXML_RendCtrl($$$$){
$message .= $head;
$message .= $callsoap;
Log3 $hash, 5, "VIERA: Building XML SOAP (RenderingControl) for command $command with value $value to host $host:\n$message";
#Log3 $hash, 5, "VIERA: Building XML SOAP (RenderingControl) for command $command with value $value to host $host:\n$message";
return $message;
}
# Get volume and mute state from device. This function is called non blocking!
# Param1: Hash of FHEM-Device
# Return: <name of fhem-device>|<volume level>|<mute state>
sub VIERA_GetDoIt($) {
my ($hash) = @_;
my $myVol = "";
my $myMute = "";
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDoIt()]: BlockingCall for ".$hash->{NAME}." start...";
my $returnVol = VIERA_connection($hash, VIERA_BuildXML_RendCtrl($hash, "Get", "Volume", ""));
Log3 $hash, 5, "VIERA[NonBlocking-VIERA_GetDoIt()]: GetStatusVol-Request returned: $returnVol" if(defined($returnVol));
if(not defined($returnVol) or $returnVol eq "") {
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDoIt()]: GetStatusVol-Request NO SOCKET!";
return $hash->{NAME}. "|".
"error-noSocket" . "|".
"error-noSocket";
}
my $returnMute = VIERA_connection($hash, VIERA_BuildXML_RendCtrl($hash, "Get", "Mute", ""));
Log3 $hash, 5, "VIERA[NonBlocking-VIERA_GetDoIt()]: GetStatusMute-Request returned: $returnMute" if(defined($returnMute));
if(not defined($returnMute) or $returnMute eq "") {
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDoIt()]: GetStatusMute-Request NO SOCKET!";
return $hash->{NAME}. "|".
"error-noSocket" . "|".
"error-noSocket";
}
if ($returnVol =~ /HTTP\/1\.1 ([\d]{3}) (.*)/) {
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDoIt()]: Received HTTP Code $1 $2";
$myVol = "error-$1 $2" if ($1 ne "200");
}
if($returnVol =~ /<CurrentVolume>(.+)<\/CurrentVolume>/){
$myVol = $1;
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDoIt()]: Received volume with level $myVol";
}
if ($returnMute =~ /HTTP\/1\.1 ([\d]{3}) (.*)/) {
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDoIt()]: Received HTTP Code $1 $2";
$myMute = "error-$1 $2" if ($1 ne "200");
}
if($returnMute =~ /<CurrentMute>(.+)<\/CurrentMute>/){
$myMute = $1;
if ($myMute == 0) { $myMute = "off"; } else { $myMute = "on";}
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDoIt()]: Received mute state $myMute";
}
return $hash->{NAME}. "|".
"$myVol" . "|".
"$myMute";
}
# Callback of non blocking function VIERA_GetDoIt. Parse the results and set readings at fhem-device
# Param1: <name of fhem-device>|<volume level>|<mute state>
# volume level = 0 - 100
# mute state = 1 or 0
# If no socket is available Par1 and Par2 contains "error"
# Return: no return code
####################################################
sub VIERA_GetDone($) {
my ($string) = @_;
return unless(defined($string));
my @a = split("\\|",$string);
my $name = shift(@a);
my $myVol = shift(@a);
my $myMute = shift(@a);
my $hash = $defs{$name};
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDone()]: Param: $string";
if ($myVol =~ /error-(.*)/ || $myMute =~ /error-(.*)/) {
if ($1 eq "noSocket") {
Log3 $name, 4, "VIERA[NonBlocking-VIERA_GetDone()]: Seems to be there is no socket available. Guessing TV is off!";
if (ReadingsVal($name,"state","absent") ne "absent") {
readingsBeginUpdate($hash);
readingsBulkUpdate($hash, "state", "absent");
readingsBulkUpdate($hash, "power", "off");
readingsBulkUpdate($hash, "presence", "absent");
readingsEndUpdate($hash, 1);
}
delete($hash->{helper}{RUNNING_PID_GET});
return;
}
else {
Log3 $name, 3, "VIERA[NonBlocking-VIERA_GetDone()]: TV answered with $1. Seems to be on but delivering no data";
return;
}
}
readingsBeginUpdate($hash);
if ($myVol != ReadingsVal($name, "volume", "0")) {
Log3 $hash, 4, "VIERA[NonBlocking-VIERA_GetDone()]: Set reading volume to $myVol";
readingsBulkUpdate($hash, "volume", $myVol);
}
if ($myMute ne ReadingsVal($name, "mute", "0")) {
Log3 $name, 4, "VIERA[NonBlocking-VIERA_GetDone()]: Set reading mute to $myMute";
readingsBulkUpdate($hash, "mute", $myMute);
}
if (ReadingsVal($name,"state","absent") ne "on") {
readingsBulkUpdate($hash, "state", "on");
readingsBulkUpdate($hash, "power", "on");
readingsBulkUpdate($hash, "presence", "present");
}
readingsEndUpdate($hash, 1);
delete($hash->{helper}{RUNNING_PID_GET});
}
# Callback of non blocking when function VIERA_GetDoIt runs into timeout.
# Param1: Hash of FHEM-Device
# Return: no return code
sub VIERA_GetAbortFn($) {
my ($hash) = @_;
delete($hash->{helper}{RUNNING_PID_GET});
Log3 $hash, 2, "VIERA[NonBlocking-VIERA_GetAbortFn()]: BlockingCall for $hash->{NAME} was aborted, timeout reached";
}
1;
=pod
@ -537,7 +741,11 @@ sub VIERA_BuildXML_RendCtrl($$$$){
Defining a VIERA device will schedule an internal task (interval can be set
with optional parameter &lt;interval&gt; in seconds, if not set, the value is 30
seconds), which periodically reads the status of volume and mute status and triggers
notify/filelog commands.<br><br>
notify/filelog commands.
<br><br>
<b>Notes:</b><br>
<ul>Activate volume remotecontrol by DLNA: Menu -> Setup -> Network Setup -> Network Link Settings -> DLNA RemoteVolume -> On</ul>
<br>
Example:
<ul><code>
define myTV1 VIERA 192.168.178.20<br><br>
@ -564,6 +772,7 @@ sub VIERA_BuildXML_RendCtrl($$$$){
channelDown<br>
statusRequest<br>
remoteControl &lt;command&gt;<br>
input [hdmi1|hdmi2|hdmi3|hdmi4|sdCard|tv]<br>
</code>
</ul>
</ul>
@ -634,10 +843,6 @@ sub VIERA_BuildXML_RendCtrl($$$$){
set &lt;name&gt; volume 20<br>
set &lt;name&gt; remoteControl CH_DOWN<br>
</code></ul>
<br>
Notes:<br>
<ul>Activate volume remotecontrol by DLNA: Menu -> Setup -> Network Setup -> Network Link Settings -> DLNA RemoteVolume -> On</ul>
</ul>
<br>
@ -658,7 +863,7 @@ sub VIERA_BuildXML_RendCtrl($$$$){
<br>
<a name="VIERAattr"></a>
<b>Attributes</b>
<ul>N/A</ul>
<ul>blocking [0|1]</ul>
<br>
<a name="VIERAevents"></a>
@ -694,6 +899,9 @@ sub VIERA_BuildXML_RendCtrl($$$$){
den Status der Lautst&auml;rke und des Mute-Zustand ausliest. Das Intervall des Timer kann &uuml;ber den Parameter &lt;interval&gt;
ge&auml;ndert werden. Wird kein Interval angegeben, liest das Modul alle 30 Sekunden die Werte aus und triggert ein notify.
<br><br>
<b>Anmerkung:</b><br>
<ul>Aktivieren von Fernbedienung der Lautst&auml;rke per DLNA: Men&uuml; -> Setup -> Netzwerk-Setup -> Netzwerkverbindungsein. -> DLNA-Fernbed. Lautst. -> Ein</ul>
<br>
Beispiel:
<ul><code>
define myTV1 VIERA 192.168.178.20<br><br>
@ -719,6 +927,7 @@ sub VIERA_BuildXML_RendCtrl($$$$){
channelDown<br>
statusRequest<br>
remoteControl &lt;command&gt;<br>
input [hdmi1|hdmi2|hdmi3|hdmi4|sdCard|tv]<br>
</code></ul>
</ul>
<ul>
@ -788,10 +997,6 @@ sub VIERA_BuildXML_RendCtrl($$$$){
set &lt;name&gt; volume 20<br>
set &lt;name&gt; remoteControl CH_DOWN<br>
</code></ul>
<br>
Anmerkung:<br>
<ul>Aktivieren von Fernbedienung der Lautst&auml;rke per DLNA: Men&uuml; -> Setup -> Netzwerk-Setup -> Netzwerkverbindungsein. -> DLNA-Fernbed. Lautst. -> Ein</ul>
</ul>
<br>
@ -812,7 +1017,7 @@ sub VIERA_BuildXML_RendCtrl($$$$){
<br>
<a name="VIERAattr"></a>
<b>Attribute</b>
<ul>N/A</ul>
<ul>blocking [0|1]</ul>
<br>
<a name="VIERAevents"></a>

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="468pt"
height="468pt"
viewBox="0 0 468 468"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_ASPECT.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3363"
showgrid="false"
inkscape:zoom="1.31"
inkscape:cx="352.91661"
inkscape:cy="281.30022"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="true"
showguides="false" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.189474,0,0,-0.189474,0,468)"
id="g6">
<path
d="M 395,2455 C 244,2422 112,2322 57,2200 5,2083 6,2112 2,1260 0,702 2,446 10,400 43,208 198,52 398,11 c 71,-15 1628,-15 1692,0 174,40 322,190 365,370 22,94 22,1579 0,1683 -21,98 -66,187 -127,252 -61,64 -113,98 -201,128 -61,21 -75,21 -867,23 -640,1 -817,-1 -865,-12 z m 1737,-163 c 74,-36 132,-95 170,-170 l 23,-47 0,-840 0,-840 -28,-57 c -37,-76 -96,-134 -171,-169 l -63,-29 -839,2 -839,3 -50,27 C 273,204 196,285 167,348 l -22,47 0,840 0,840 27,52 c 53,100 128,162 227,189 35,10 236,12 856,11 l 810,-2 67,-33 z"
id="path8" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:120px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
id="text2993">
<path
d="m 120.5918,268.71982 -18.86719,0 -7.500001,-19.51172 -34.335937,0 -7.089844,19.51172 -18.398437,0 33.457031,-85.89844 18.339844,0 34.394534,85.89844 z m -31.933597,-33.98438 -11.835937,-31.875 -11.601563,31.875 23.4375,0 z"
style=""
id="path3384" />
<path
d="m 124.16602,250.96591 16.52343,-2.51953 q 1.05469,4.80469 4.27735,7.32422 3.22265,2.46094 9.02343,2.46094 6.38672,0 9.60938,-2.34375 2.16797,-1.64063 2.16797,-4.39453 0,-1.875 -1.17188,-3.10547 -1.23047,-1.17188 -5.50781,-2.16797 -19.92187,-4.39453 -25.25391,-8.02735 -7.38281,-5.03906 -7.38281,-14.0039 0,-8.08594 6.38672,-13.59375 6.38672,-5.50781 19.80469,-5.50781 12.77344,0 18.98437,4.16015 6.21094,4.16016 8.55469,12.30469 l -15.52734,2.87109 q -0.9961,-3.63281 -3.8086,-5.5664 -2.7539,-1.9336 -7.91015,-1.9336 -6.50391,0 -9.31641,1.81641 -1.875,1.28906 -1.875,3.33984 0,1.75782 1.64063,2.98828 2.22656,1.64063 15.35156,4.62891 13.18359,2.98828 18.39844,7.32422 5.15625,4.39453 5.15625,12.24609 0,8.55469 -7.14844,14.70703 -7.14844,6.15235 -21.15235,6.15235 -12.71484,0 -20.15625,-5.15625 -7.38281,-5.15625 -9.66796,-14.00391 z"
style=""
id="path3386" />
<path
d="m 196.29492,206.49326 15.35156,0 0,9.14062 q 2.98829,-4.6875 8.08594,-7.61719 5.09766,-2.92968 11.3086,-2.92968 10.83984,0 18.39843,8.49609 7.5586,8.49609 7.5586,23.67187 0,15.58594 -7.61719,24.25782 -7.61719,8.61328 -18.45703,8.61328 -5.15625,0 -9.375,-2.05078 -4.16016,-2.05078 -8.78906,-7.03125 l 0,31.34765 -16.46485,0 0,-85.89843 z m 16.28906,30.05859 q 0,10.48828 4.16016,15.52734 4.16016,4.98047 10.13672,4.98047 5.74219,0 9.55078,-4.57031 3.80859,-4.62891 3.80859,-15.11719 0,-9.78515 -3.92578,-14.53125 -3.92578,-4.74609 -9.72656,-4.74609 -6.03516,0 -10.01953,4.6875 -3.98438,4.6289 -3.98438,13.76953 z"
style=""
id="path3388" />
<path
d="m 306.1582,248.91513 16.40625,2.75391 q -3.16406,9.02343 -10.01953,13.76953 -6.79687,4.6875 -17.05078,4.6875 -16.23047,0 -24.02344,-10.60547 -6.15234,-8.49609 -6.15234,-21.44531 0,-15.46875 8.08594,-24.19922 8.08593,-8.78906 20.44922,-8.78906 13.88671,0 21.91406,9.19921 8.02734,9.14063 7.67578,28.06641 l -41.25,0 q 0.17578,7.32422 3.98437,11.42578 3.8086,4.04297 9.49219,4.04297 3.86719,0 6.50391,-2.10937 2.63672,-2.10938 3.98437,-6.79688 z m 0.9375,-16.64062 q -0.17578,-7.14844 -3.6914,-10.83985 -3.51563,-3.75 -8.55469,-3.75 -5.39063,0 -8.90625,3.92578 -3.51563,3.92578 -3.45703,10.66407 l 24.60937,0 z"
style=""
id="path3390" />
<path
d="m 391.17773,224.89169 -16.23046,2.92969 q -0.82032,-4.86328 -3.75,-7.32422 -2.8711,-2.46094 -7.5,-2.46094 -6.15235,0 -9.84375,4.27735 -3.63282,4.21875 -3.63282,14.17969 0,11.07421 3.69141,15.64453 3.75,4.57031 10.01953,4.57031 4.6875,0 7.67578,-2.63672 2.98828,-2.69531 4.21875,-9.19922 l 16.17188,2.75391 q -2.51953,11.13281 -9.66797,16.8164 -7.14844,5.6836 -19.16016,5.6836 -13.65234,0 -21.79687,-8.61328 -8.08594,-8.61328 -8.08594,-23.84766 0,-15.41016 8.14453,-23.96484 8.14453,-8.61328 22.03125,-8.61328 11.36719,0 18.04688,4.92187 6.73828,4.86328 9.66796,14.88281 z"
style=""
id="path3392" />
<path
d="m 432.25195,206.49326 0,13.125 -11.25,0 0,25.07812 q 0,7.61719 0.29297,8.90625 0.35156,1.23047 1.46485,2.05078 1.17187,0.82031 2.8125,0.82031 2.28515,0 6.62109,-1.58203 l 1.40625,12.77344 q -5.74219,2.46094 -13.00781,2.46094 -4.45313,0 -8.02735,-1.46485 -3.57422,-1.52343 -5.27343,-3.86718 -1.64063,-2.40235 -2.28516,-6.44532 -0.52734,-2.87109 -0.52734,-11.60156 l 0,-27.1289 -7.5586,0 0,-13.125 7.5586,0 0,-12.36329 16.52343,-9.60937 0,21.97266 11.25,0 z"
style=""
id="path3394" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="21.75pt"
height="1.5pt"
viewBox="0 0 468 468"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_BLANK2.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3339"
showgrid="false"
inkscape:zoom="1.0181848"
inkscape:cx="268.33048"
inkscape:cy="269.56994"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
units="pt" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="468pt"
height="468pt"
viewBox="0 0 468 468"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_INFO2.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3363"
showgrid="false"
inkscape:zoom="1.31"
inkscape:cx="352.91661"
inkscape:cy="281.30022"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="true"
showguides="false" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.189474,0,0,-0.189474,0,468)"
id="g6">
<path
d="M 395,2455 C 244,2422 112,2322 57,2200 5,2083 6,2112 2,1260 0,702 2,446 10,400 43,208 198,52 398,11 c 71,-15 1628,-15 1692,0 174,40 322,190 365,370 22,94 22,1579 0,1683 -21,98 -66,187 -127,252 -61,64 -113,98 -201,128 -61,21 -75,21 -867,23 -640,1 -817,-1 -865,-12 z m 1737,-163 c 74,-36 132,-95 170,-170 l 23,-47 0,-840 0,-840 -28,-57 c -37,-76 -96,-134 -171,-169 l -63,-29 -839,2 -839,3 -50,27 C 273,204 196,285 167,348 l -22,47 0,840 0,840 27,52 c 53,100 128,162 227,189 35,10 236,12 856,11 l 810,-2 67,-33 z"
id="path8" />
</g>
<g
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:600px;line-height:125%;font-family:'Angsana New';-inkscape-font-specification:'Angsana New, Bold Italic';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
id="text2993">
<path
d="m 260.29395,97.183594 q 12.01171,0 20.21484,8.203126 8.20312,8.20312 8.20312,20.21484 0,11.86524 -8.34961,20.21485 -8.20312,8.20312 -20.06835,8.20312 -11.71875,0 -20.06836,-8.20312 -8.20313,-8.34961 -8.20313,-20.21485 0,-11.86523 8.20313,-20.06836 8.20312,-8.349606 20.06836,-8.349606 z m 12.01171,88.916016 -39.69726,137.54883 q -3.22266,11.42578 -3.22266,15.38086 0,5.85937 5.41992,5.85937 3.07618,0 6.5918,-2.92969 8.93555,-7.4707 20.80078,-25.92773 l 6.5918,3.95508 q -29.15039,50.83008 -61.96289,50.83008 -27.53906,0 -27.53906,-24.90235 0,-6.88476 3.36914,-18.16406 l 26.80664,-92.43164 q 3.80859,-13.33008 3.80859,-20.21484 0,-10.83985 -13.62305,-10.83985 -2.92968,0 -7.03125,0.29297 l 2.49024,-7.76367 65.625,-10.69336 11.57226,0 z"
style=""
id="path3470" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="468pt"
height="234pt"
viewBox="0 0 468 234"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_PROG2.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3363"
showgrid="false"
inkscape:zoom="1.31"
inkscape:cx="247.95478"
inkscape:cy="281.30022"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="true"
showguides="false" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:133.91000366px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
id="text2993"
transform="translate(-4.9999999e-7,-117.00002)">
<path
d="m 45.689051,281.92776 0,-95.8555 31.058228,0 q 17.654151,0 23.015782,1.43849 8.238599,2.15773 13.796389,9.41555 5.55779,7.19243 5.55779,18.63493 0,8.82708 -3.2039,14.84257 -3.2039,6.01549 -8.17322,9.48093 -4.90393,3.40006 -10.004017,4.51162 -6.930889,1.3731 -20.073424,1.3731 l -12.619448,0 0,36.15831 -19.35418,0 z m 19.35418,-79.63983 0,27.20047 10.59249,0 q 11.442506,0 15.300264,-1.50387 3.857759,-1.50388 6.015489,-4.70778 2.223115,-3.2039 2.223115,-7.45397 0,-5.23086 -3.07313,-8.63092 -3.07313,-3.40006 -7.780903,-4.25007 -3.465445,-0.65386 -13.927164,-0.65386 l -9.350161,0 z"
id="path3456"
inkscape:connector-curvature="0" />
<path
d="m 135.20214,281.92776 0,-95.8555 40.73532,0 q 15.36565,0 22.29653,2.61543 6.99628,2.55005 11.18097,9.15401 4.18468,6.60396 4.18468,15.1041 0,10.78865 -6.34241,17.85031 -6.34242,6.99628 -18.96187,8.82708 6.27703,3.6616 10.33095,8.04245 4.1193,4.38084 11.05019,15.5618 l 11.70405,18.70032 -23.14656,0 -13.99255,-20.85805 q -7.45397,-11.18096 -10.20017,-14.05793 -2.7462,-2.94236 -5.81933,-3.98853 -3.07313,-1.11156 -9.74248,-1.11156 l -3.92314,0 0,40.01607 -19.35418,0 z m 19.35418,-55.31633 14.31948,0 q 13.92716,0 17.3926,-1.17695 3.46545,-1.17694 5.42702,-4.05391 1.96157,-2.87698 1.96157,-7.19244 0,-4.83854 -2.61543,-7.7809 -2.55004,-3.00774 -7.25782,-3.79237 -2.35388,-0.32693 -14.12332,-0.32693 l -15.1041,0 0,24.3235 z"
id="path3458"
inkscape:connector-curvature="0" />
<path
d="m 227.9845,234.58849 q 0,-14.64641 4.38085,-24.58504 3.26929,-7.32321 8.89246,-13.14254 5.68856,-5.81933 12.42329,-8.63092 8.95785,-3.79237 20.6619,-3.79237 21.18498,0 33.86981,13.14254 12.75022,13.14253 12.75022,36.55063 0,23.21194 -12.61945,36.35447 -12.61945,13.07715 -33.73904,13.07715 -21.38114,0 -34.00059,-13.01176 Q 227.9845,257.4735 227.9845,234.58849 Z m 19.94266,-0.65386 q 0,16.28105 7.51936,24.71581 7.51936,8.36938 19.09263,8.36938 11.57328,0 18.96187,-8.30399 7.45397,-8.36938 7.45397,-25.04274 0,-16.47721 -7.25781,-24.58504 -7.19244,-8.10784 -19.15803,-8.10784 -11.96559,0 -19.28879,8.23861 -7.3232,8.17322 -7.3232,24.71581 z"
id="path3460"
inkscape:connector-curvature="0" />
<path
d="m 380.59484,246.68485 0,-16.15028 41.71611,0 0,38.18527 q -6.08088,5.88472 -17.65415,10.39634 -11.5079,4.44623 -23.34272,4.44623 -15.03872,0 -26.21968,-6.27703 -11.18096,-6.34242 -16.80413,-18.04647 -5.62318,-11.76943 -5.62318,-25.56582 0,-14.97334 6.27703,-26.612 6.27703,-11.63866 18.3734,-17.85031 9.21939,-4.77316 22.95039,-4.77316 17.85031,0 27.85433,7.51936 10.0694,7.45398 12.94638,20.6619 l -19.22341,3.59621 q -2.02696,-7.06166 -7.65013,-11.11557 -5.55779,-4.11931 -13.92717,-4.11931 -12.68483,0 -20.20419,8.04245 -7.45398,8.04245 -7.45398,23.8658 0,17.06568 7.58475,25.63121 7.58475,8.50015 19.87727,8.50015 6.08087,0 12.16174,-2.35389 6.14626,-2.41927 10.52711,-5.81933 l 0,-12.16175 -22.16577,0 z"
id="path3462"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="468pt"
height="468pt"
viewBox="0 0 468 468"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_TV2.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3363"
showgrid="false"
inkscape:zoom="1.31"
inkscape:cx="352.91661"
inkscape:cy="281.30022"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="true"
showguides="false" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.189474,0,0,-0.189474,0,468)"
id="g6">
<path
d="M 395,2455 C 244,2422 112,2322 57,2200 5,2083 6,2112 2,1260 0,702 2,446 10,400 43,208 198,52 398,11 c 71,-15 1628,-15 1692,0 174,40 322,190 365,370 22,94 22,1579 0,1683 -21,98 -66,187 -127,252 -61,64 -113,98 -201,128 -61,21 -75,21 -867,23 -640,1 -817,-1 -865,-12 z m 1737,-163 c 74,-36 132,-95 170,-170 l 23,-47 0,-840 0,-840 -28,-57 c -37,-76 -96,-134 -171,-169 l -63,-29 -839,2 -839,3 -50,27 C 273,204 196,285 167,348 l -22,47 0,840 0,840 27,52 c 53,100 128,162 227,189 35,10 236,12 856,11 l 810,-2 67,-33 z"
id="path8" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:133.91000366px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
id="text2993">
<path
d="m 178.4875,281.92776 0,-79.63983 -28.4428,0 0,-16.21567 76.17439,0 0,16.21567 -28.37741,0 0,79.63983 -19.35418,0 z"
style=""
id="path3377" />
<path
d="m 262.96588,281.92776 -34.26213,-95.8555 20.98882,0 24.25811,70.94354 23.47349,-70.94354 20.53112,0 -34.32752,95.8555 -20.66189,0 z"
style=""
id="path3379" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="468pt"
height="468pt"
viewBox="0 0 468 468"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_VIERA_LINK.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3363"
showgrid="false"
inkscape:zoom="1.31"
inkscape:cx="352.91661"
inkscape:cy="281.30022"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="true"
showguides="false" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.189474,0,0,-0.189474,0,468)"
id="g6">
<path
d="M 395,2455 C 244,2422 112,2322 57,2200 5,2083 6,2112 2,1260 0,702 2,446 10,400 43,208 198,52 398,11 c 71,-15 1628,-15 1692,0 174,40 322,190 365,370 22,94 22,1579 0,1683 -21,98 -66,187 -127,252 -61,64 -113,98 -201,128 -61,21 -75,21 -867,23 -640,1 -817,-1 -865,-12 z m 1737,-163 c 74,-36 132,-95 170,-170 l 23,-47 0,-840 0,-840 -28,-57 c -37,-76 -96,-134 -171,-169 l -63,-29 -839,2 -839,3 -50,27 C 273,204 196,285 167,348 l -22,47 0,840 0,840 27,52 c 53,100 128,162 227,189 35,10 236,12 856,11 l 810,-2 67,-33 z"
id="path8" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:133.91000366px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
id="text2993">
<path
d="m 63.73551,198.23399 -34.26213,-95.8555 20.988824,0 24.258111,70.94354 23.473482,-70.94354 20.531123,0 -34.327515,95.8555 -20.661895,0 z"
style=""
id="path3401" />
<path
d="m 128.14047,198.23399 0,-95.8555 19.35418,0 0,95.8555 -19.35418,0 z"
style=""
id="path3403" />
<path
d="m 165.86805,198.23399 0,-95.8555 71.0743,0 0,16.21567 -51.72012,0 0,21.25036 48.12391,0 0,16.15028 -48.12391,0 0,26.08891 53.55092,0 0,16.15028 -72.9051,0 z"
style=""
id="path3405" />
<path
d="m 255.38113,198.23399 0,-95.8555 40.73532,0 q 15.36565,0 22.29653,2.61543 6.99628,2.55005 11.18097,9.15401 4.18468,6.60396 4.18468,15.1041 0,10.78865 -6.34241,17.85031 -6.34242,6.99628 -18.96187,8.82708 6.27703,3.6616 10.33095,8.04244 4.1193,4.38085 11.05019,15.56181 l 11.70405,18.70032 -23.14656,0 -13.99254,-20.85805 q -7.45398,-11.18096 -10.20018,-14.05793 -2.7462,-2.94236 -5.81933,-3.98853 -3.07313,-1.11156 -9.74248,-1.11156 l -3.92314,0 0,40.01607 -19.35418,0 z m 19.35418,-55.31634 14.31948,0 q 13.92716,0 17.3926,-1.17694 3.46545,-1.17694 5.42702,-4.05392 1.96157,-2.87697 1.96157,-7.19243 0,-4.83854 -2.61543,-7.7809 -2.55004,-3.00774 -7.25781,-3.79237 -2.35389,-0.32693 -14.12333,-0.32693 l -15.1041,0 0,24.32349 z"
style=""
id="path3407" />
<path
d="m 438.52662,198.23399 -21.05421,0 -8.36938,-21.77345 -38.31605,0 -7.91167,21.77345 -20.53112,0 37.33526,-95.8555 20.46573,0 38.38144,95.8555 z m -35.63524,-37.92373 -13.20792,-35.56984 -12.94637,35.56984 26.15429,0 z"
style=""
id="path3409" />
<path
d="m 107.02087,365.6215 0,-95.07087 19.35418,0 0,78.92059 48.12391,0 0,16.15028 -67.47809,0 z"
style=""
id="path3411" />
<path
d="m 188.22997,286.76629 0,-17.00029 18.37339,0 0,17.00029 -18.37339,0 z m 0,78.85521 0,-69.43966 18.37339,0 0,69.43966 -18.37339,0 z"
style=""
id="path3413" />
<path
d="m 288.5317,365.6215 -18.37339,0 0,-35.43908 q 0,-11.24634 -1.17694,-14.51563 -1.17695,-3.33467 -3.85776,-5.16547 -2.61543,-1.8308 -6.34242,-1.8308 -4.77316,0 -8.56553,2.61542 -3.79238,2.61543 -5.23086,6.93089 -1.3731,4.31546 -1.3731,15.95413 l 0,31.45054 -18.3734,0 0,-69.43966 17.06568,0 0,10.20017 q 9.08862,-11.76943 22.88501,-11.76943 6.08088,0 11.11558,2.22312 5.0347,2.15772 7.58475,5.55778 2.61543,3.40006 3.59621,7.71552 1.04617,4.31546 1.04617,12.35791 l 0,43.15459 z"
style=""
id="path3415" />
<path
d="m 306.57816,365.6215 0,-95.8555 18.3734,0 0,50.87011 21.51191,-24.45427 22.62346,0 -23.73502,25.36967 25.43505,44.06999 -19.81188,0 -17.45799,-31.189 -8.56553,8.95785 0,22.23115 -18.3734,0 z"
style=""
id="path3417" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="468pt"
height="468pt"
viewBox="0 0 468 468"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_VIERA_TOOLS.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3363"
showgrid="false"
inkscape:zoom="1.31"
inkscape:cx="352.91661"
inkscape:cy="281.30022"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="true"
showguides="false" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.189474,0,0,-0.189474,0,468)"
id="g6">
<path
d="M 395,2455 C 244,2422 112,2322 57,2200 5,2083 6,2112 2,1260 0,702 2,446 10,400 43,208 198,52 398,11 c 71,-15 1628,-15 1692,0 174,40 322,190 365,370 22,94 22,1579 0,1683 -21,98 -66,187 -127,252 -61,64 -113,98 -201,128 -61,21 -75,21 -867,23 -640,1 -817,-1 -865,-12 z m 1737,-163 c 74,-36 132,-95 170,-170 l 23,-47 0,-840 0,-840 -28,-57 c -37,-76 -96,-134 -171,-169 l -63,-29 -839,2 -839,3 -50,27 C 273,204 196,285 167,348 l -22,47 0,840 0,840 27,52 c 53,100 128,162 227,189 35,10 236,12 856,11 l 810,-2 67,-33 z"
id="path8" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:133.91000366px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
id="text2993">
<path
d="m 63.73551,198.23399 -34.26213,-95.8555 20.988824,0 24.258111,70.94354 23.473482,-70.94354 20.531123,0 -34.327515,95.8555 -20.661895,0 z"
style=""
id="path3424" />
<path
d="m 128.14047,198.23399 0,-95.8555 19.35418,0 0,95.8555 -19.35418,0 z"
style=""
id="path3426" />
<path
d="m 165.86805,198.23399 0,-95.8555 71.0743,0 0,16.21567 -51.72012,0 0,21.25036 48.12391,0 0,16.15028 -48.12391,0 0,26.08891 53.55092,0 0,16.15028 -72.9051,0 z"
style=""
id="path3428" />
<path
d="m 255.38113,198.23399 0,-95.8555 40.73532,0 q 15.36565,0 22.29653,2.61543 6.99628,2.55005 11.18097,9.15401 4.18468,6.60396 4.18468,15.1041 0,10.78865 -6.34241,17.85031 -6.34242,6.99628 -18.96187,8.82708 6.27703,3.6616 10.33095,8.04244 4.1193,4.38085 11.05019,15.56181 l 11.70405,18.70032 -23.14656,0 -13.99254,-20.85805 q -7.45398,-11.18096 -10.20018,-14.05793 -2.7462,-2.94236 -5.81933,-3.98853 -3.07313,-1.11156 -9.74248,-1.11156 l -3.92314,0 0,40.01607 -19.35418,0 z m 19.35418,-55.31634 14.31948,0 q 13.92716,0 17.3926,-1.17694 3.46545,-1.17694 5.42702,-4.05392 1.96157,-2.87697 1.96157,-7.19243 0,-4.83854 -2.61543,-7.7809 -2.55004,-3.00774 -7.25781,-3.79237 -2.35389,-0.32693 -14.12333,-0.32693 l -15.1041,0 0,24.32349 z"
style=""
id="path3430" />
<path
d="m 438.52662,198.23399 -21.05421,0 -8.36938,-21.77345 -38.31605,0 -7.91167,21.77345 -20.53112,0 37.33526,-95.8555 20.46573,0 38.38144,95.8555 z m -35.63524,-37.92373 -13.20792,-35.56984 -12.94637,35.56984 26.15429,0 z"
style=""
id="path3432" />
<path
d="m 92.243694,365.6215 0,-79.63984 -28.442798,0 0,-16.21566 76.174394,0 0,16.21566 -28.37742,0 0,79.63984 -19.354176,0 z"
style=""
id="path3434" />
<path
d="m 137.94833,329.92088 q 0,-9.154 4.51161,-17.71953 4.51162,-8.56554 12.75022,-13.07715 8.30399,-4.51162 18.50417,-4.51162 15.75796,0 25.82737,10.26556 10.0694,10.20018 10.0694,25.82737 0,15.75797 -10.20017,26.1543 -10.13479,10.33095 -25.56583,10.33095 -9.54632,0 -18.24262,-4.31546 -8.63092,-4.31546 -13.14254,-12.61945 -4.51161,-8.36938 -4.51161,-20.33497 z m 18.83109,0.98079 q 0,10.33095 4.90393,15.82335 4.90393,5.4924 12.09636,5.4924 7.19244,0 12.03098,-5.4924 4.90393,-5.4924 4.90393,-15.95412 0,-10.20018 -4.90393,-15.69258 -4.83854,-5.4924 -12.03098,-5.4924 -7.19243,0 -12.09636,5.4924 -4.90393,5.4924 -4.90393,15.82335 z"
style=""
id="path3436" />
<path
d="m 219.81128,329.92088 q 0,-9.154 4.51162,-17.71953 4.51161,-8.56554 12.75022,-13.07715 8.30399,-4.51162 18.50416,-4.51162 15.75797,0 25.82737,10.26556 10.06941,10.20018 10.06941,25.82737 0,15.75797 -10.20018,26.1543 -10.13479,10.33095 -25.56583,10.33095 -9.54631,0 -18.24262,-4.31546 -8.63092,-4.31546 -13.14253,-12.61945 -4.51162,-8.36938 -4.51162,-20.33497 z m 18.83109,0.98079 q 0,10.33095 4.90394,15.82335 4.90393,5.4924 12.09636,5.4924 7.19243,0 12.03097,-5.4924 4.90394,-5.4924 4.90394,-15.95412 0,-10.20018 -4.90394,-15.69258 -4.83854,-5.4924 -12.03097,-5.4924 -7.19243,0 -12.09636,5.4924 -4.90394,5.4924 -4.90394,15.82335 z"
style=""
id="path3438" />
<path
d="m 305.9243,365.6215 0,-95.8555 18.37339,0 0,95.8555 -18.37339,0 z"
style=""
id="path3440" />
<path
d="m 336.59021,345.80962 18.43878,-2.81159 q 1.17694,5.36163 4.77316,8.17322 3.59621,2.7462 10.0694,2.7462 7.12705,0 10.72327,-2.61543 2.41927,-1.8308 2.41927,-4.90393 0,-2.09234 -1.30772,-3.46545 -1.3731,-1.30771 -6.14626,-2.41927 -22.23115,-4.90393 -28.18125,-8.95784 -8.23861,-5.62318 -8.23861,-15.6272 0,-9.02323 7.12705,-15.16949 7.12705,-6.14626 22.10038,-6.14626 14.25409,0 21.18498,4.64239 6.93089,4.64239 9.54632,13.731 l -17.32722,3.20391 q -1.11156,-4.05392 -4.25007,-6.21165 -3.07313,-2.15773 -8.82708,-2.15773 -7.25782,0 -10.39633,2.02696 -2.09235,1.43848 -2.09235,3.72699 0,1.96157 1.8308,3.33467 2.48466,1.8308 17.13107,5.16547 14.71179,3.33468 20.53112,8.17322 5.75395,4.90393 5.75395,13.66562 0,9.54632 -7.97706,16.41182 -7.97706,6.86551 -23.60426,6.86551 -14.1887,0 -22.49269,-5.75395 -8.23861,-5.75394 -10.78865,-15.62719 z"
style=""
id="path3442" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="468pt"
height="234pt"
viewBox="0 0 468 234"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="rc_VOL2.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview3363"
showgrid="false"
inkscape:zoom="1.31"
inkscape:cx="175.43569"
inkscape:cy="159.16282"
inkscape:window-x="-9"
inkscape:window-y="891"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="true"
showguides="false"
units="pt" />
<defs
id="defs12" />
<metadata
id="metadata4">
Created by potrace 1.8, written by Peter Selinger 2001-2007
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:133.91000366px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Bold';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
id="text2993"
transform="translate(-7e-6,-117.00002)">
<path
d="m 132.58671,281.92776 -34.262126,-95.8555 20.988826,0 24.25811,70.94354 23.47348,-70.94354 20.53112,0 -34.32751,95.8555 -20.6619,0 z"
id="path3447"
inkscape:connector-curvature="0" />
<path
d="m 193.657,234.58849 q 0,-14.64641 4.38085,-24.58504 3.26928,-7.32321 8.89246,-13.14254 5.68856,-5.81933 12.42329,-8.63092 8.95785,-3.79237 20.66189,-3.79237 21.18498,0 33.86982,13.14254 12.75022,13.14253 12.75022,36.55063 0,23.21194 -12.61945,36.35447 -12.61945,13.07715 -33.73904,13.07715 -21.38114,0 -34.00059,-13.01176 Q 193.657,257.4735 193.657,234.58849 Z m 19.94265,-0.65386 q 0,16.28105 7.51936,24.71581 7.51936,8.36938 19.09264,8.36938 11.57328,0 18.96187,-8.30399 7.45397,-8.36938 7.45397,-25.04274 0,-16.47721 -7.25782,-24.58504 -7.19243,-8.10784 -19.15802,-8.10784 -11.96559,0 -19.28879,8.23861 -7.32321,8.17322 -7.32321,24.71581 z"
id="path3449"
inkscape:connector-curvature="0" />
<path
d="m 302.19734,281.92776 0,-95.07087 19.35418,0 0,78.9206 48.12391,0 0,16.15027 -67.47809,0 z"
id="path3451"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB