Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#626 Le 05/06/2013, à 17:51

ragamatrix

Re : [Conky] Alternative à weather.com (3)

Didier-T a écrit :

j'ai bien peur de ne pas pouvoir t'aider en perl.
tu devrais poster ta demande dans la section développeur du forum.

J'ai commenté les lignes concernant la création d'image et cela à l'air de fonctionner...

 #my @images = ( 'xplanetemp.png', 'xplanetemp2.png' ); 

et

  #system( "xplanet -num_times 1 -output $root$images[$image] -geometry $screen -longitude $longitude -latitude $latitude -projection $projection -config $root$config" );
    #system( "gconftool-2 -t str -s /desktop/gnome/background/picture_filename $root$images[$image]" );
    #$image = 1 - $image;
    #unlink( "$root$images[$image]" );
    sleep( $update );
} 

Hors ligne

#627 Le 05/06/2013, à 17:58

ragamatrix

Re : [Conky] Alternative à weather.com (3)

ragamatrix a écrit :
Didier-T a écrit :

j'ai bien peur de ne pas pouvoir t'aider en perl.
tu devrais poster ta demande dans la section développeur du forum.

J'ai commenté les lignes concernant la création d'image et cela à l'air de fonctionner...

 #my @images = ( 'xplanetemp.png', 'xplanetemp2.png' ); 

et

  #system( "xplanet -num_times 1 -output $root$images[$image] -geometry $screen -longitude $longitude -latitude $latitude -projection $projection -config $root$config" );
    #system( "gconftool-2 -t str -s /desktop/gnome/background/picture_filename $root$images[$image]" );
    #$image = 1 - $image;
    #unlink( "$root$images[$image]" );
    sleep( $update );
} 

En fait non hmm ; je vais voir plus tard pour poster ça vers "developpeur"
Merci quand même.

Hors ligne

#628 Le 07/06/2013, à 10:05

ragamatrix

Re : [Conky] Alternative à weather.com (3)

EDIT: J'ai trouvé la solution je la mets en bas si ça interesse... J'éspère que je ne t'ai pas réveillé lol
jpdipsy es-tu là ?
Salut;
J'aurais besoin d'un ptit coup de main convert...
J'arrive à détourer deux cercles en créant des masques et composer les deux images que je souhaite mais je voudrais faire un seul masque créant une seule image...
Illustration:
masque 1

 convert -size 1280x720 xc:none -fill blue -draw 'translate 319,359 circle 0,0 286,0' -alpha extract ~/globmask1.png
 

masque 2

 convert -size 1280x720 xc:none -fill blue -draw 'translate 956,359 circle 0,0 286,0' -alpha extract ~/globmask2.png
 

globe 1

 convert ~/xplanetemp.png  ~/globmask1.png  -alpha off -compose CopyOpacity -composite  ~/globus1.png
 

globe 2

 convert ~/xplanetemp.png  ~/globmask2.png  -alpha off -compose CopyOpacity -composite  ~/globus2.png
 

1370592163.png1370592329.png
La solution doit sûrement être simple mais je bloque ici... hmm
Solution:

 convert -size 1280x720 xc:none -fill blue -draw 'translate 319,359 circle 0,0 286,0' ~/globmask1.png
convert ~/globmask1.png -fill blue -draw 'translate 956,359 circle 0,0 286,0' -alpha extract ~/globmask2.png
convert ~/xplanetemp.png  ~/globmask2.png  -alpha off -compose CopyOpacity -composite  ~/globusfinal.png 

resultat

Dernière modification par ragamatrix (Le 07/06/2013, à 10:23)

Hors ligne

#629 Le 11/06/2013, à 14:05

ragamatrix

Re : [Conky] Alternative à weather.com (3)

Je viens de découvrir une fonction intéressante de xplanet; pouvant générer les planètes avec la transparence (à condition que les images soient en .png) option -transpng
Les images crées par xplanet ensuite affichées avec le script de jpdipsy (rotation, taille transparence...)
Exemple avec saturne qui aurait été un peu difficile à détourer pour avoir un fond transparent (anneaux)... wink
1370952129.png

Hors ligne

#630 Le 18/06/2013, à 07:10

Didier-T

Re : [Conky] Alternative à weather.com (3)

bonjour a tous,
sa faisait longtemps qu'il n'y avait pas eut de modification sur accuweather.
donc changement de version, recmeteo.py v1.29 et meteo2.lua 1.09

A+

Hors ligne

#631 Le 18/06/2013, à 08:47

Yvance77

Re : [Conky] Alternative à weather.com (3)

Didier-T a écrit :

donc changement de version, recmeteo.py v1.29 et meteo2.lua 1.09

Bonjour,

Et qu'est-ce que cela implique ? On doit faire le changement en réinstallant ? Est-ce automatique ?

Merci de vos précisions

Cordialement


A trop vouloir faire de l'économie un idéal, nous faisons l'économie de l'Idéal !

Linux Mint 15 Olivia - Mate Edition
Carte-mère Gygabites Combo GA - G41M socket 775

Hors ligne

#632 Le 18/06/2013, à 10:11

ragamatrix

Re : [Conky] Alternative à weather.com (3)

@Didier-T
Salut,
Je crois que tu as oublié de mettre 1.29 à la place de 1.28 après la mise à jour de ta version où bien ?recmeteo.py... smile

Hors ligne

#633 Le 18/06/2013, à 11:39

Didier-T

Re : [Conky] Alternative à weather.com (3)

@ ragamatrix,
bien vue, en effet, j'ai fait sa rapidement ce matin, et les deux fichiers ne sont pas a jours, mais le celui qui posait problèmes (meteo2.lua) est bien la version corrigée.
pour recmeteo.py, il s'agit d'une correction d'écriture (surtout utile pour les vielle machine)

@ Yvance77,
peut importe la méthode employée, il faut simplement modifier les fichiers recmeto.py ainsi que meteo2.lua.
après soit tu décompresse l'archive et fais la manip a la main, soit tu relance le script d'installation.

Je ferais un script de mise a jour pour l'avenir.

Dernière modification par Didier-T (Le 18/06/2013, à 11:40)

Hors ligne

#634 Le 18/06/2013, à 11:47

ti_tux

Re : [Conky] Alternative à weather.com (3)

Didier la dernière version de meteo2.lua c'est la 1.08 ou 1.09 ? dans ton archive c'est toujours la 1.08


Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/
THE gourou www.cyrille-borne.com
Kubuntu 13.04 | Lubuntu 13.04

Hors ligne

#635 Le 18/06/2013, à 11:52

Didier-T

Re : [Conky] Alternative à weather.com (3)

Il faut croire que je perd la boulle.
Bon je renverrai l'archive ce soir.

Dernière modification par Didier-T (Le 18/06/2013, à 11:53)

Hors ligne

#636 Le 18/06/2013, à 13:37

Yvance77

Re : [Conky] Alternative à weather.com (3)

Didier T,

Merci pour la précision. Par contre, un petit complément si vous permettez, le conky « meteo6jours » se trouvant sur l'introduction de ce fil et qui avait retenu votre attention, fait-il aussi l'objet d'une mise à jour. En d'autres termes dois-je procéder aussi à un  nouvel ./install.sh ?

Merci

Dernière modification par Yvance77 (Le 18/06/2013, à 13:38)


A trop vouloir faire de l'économie un idéal, nous faisons l'économie de l'Idéal !

Linux Mint 15 Olivia - Mate Edition
Carte-mère Gygabites Combo GA - G41M socket 775

Hors ligne

#637 Le 18/06/2013, à 17:21

Didier-T

Re : [Conky] Alternative à weather.com (3)

@ Yvance77,

non, il n'y a que le pack de base qui contiens les scripts, il est donc le seul à mettre à jour

Hors ligne

#638 Le 18/06/2013, à 21:32

Didier-T

Re : [Conky] Alternative à weather.com (3)

j'ai trouvé pourquoi la mise a jour n'était pas passé.
J'ai oublié de réinstaller Dropbox, du coup sa synchronise moins bien. roll

Hors ligne

#639 Le 18/06/2013, à 22:00

ti_tux

Re : [Conky] Alternative à weather.com (3)

Forcément ça marchait beaucoup moins bien... En effet ça va mieux maintenant ! Merci à toi !


Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/
THE gourou www.cyrille-borne.com
Kubuntu 13.04 | Lubuntu 13.04

Hors ligne

#640 Le 18/06/2013, à 22:04

Didier-T

Re : [Conky] Alternative à weather.com (3)

Et oui, snif...
je viens de refaire l'archive, et y ai ajouté le script Maj.sh.
je pense que sa fera plaisir a Yvance77... et certainement à d'autres...
la premier post est modifié en conséquence.

Hors ligne

#641 Le 18/06/2013, à 22:07

michel ruiz

Re : [Conky] Alternative à weather.com (3)

Je suis passé au bon moment smile
J'ai remplacé mes deux fichier et ça refonctionne nickel-chrome
Merci Didier-T (ainsi qu'aux autres contributeurs)

Hors ligne

#642 Le 19/06/2013, à 06:03

Didier-T

Re : [Conky] Alternative à weather.com (3)

aller une petite mise a jour.
ce matin pas d'alerte, et bug du meteo2.lua (lié a l'ajout d'un retour charriot dans les conditions courantes)
mise a jour recmeteo.py 1.30

Hors ligne

#643 Le 19/06/2013, à 07:25

fabsail

Re : [Conky] Alternative à weather.com (3)

Didier-T a écrit :

aller une petite mise a jour.

Merci pour toutes ces mises à jour très réactives et pour le script de MAJ qui est le bienvenu.
Sinon, quand est-ce que tu dors ?

Hors ligne

#644 Le 19/06/2013, à 07:59

Didier-T

Re : [Conky] Alternative à weather.com (3)

la nuit lol

Hors ligne

#645 Le 19/06/2013, à 08:03

franz256

Re : [Conky] Alternative à weather.com (3)

Bonjour,

Après changement de 1.08 vers 1.09 tout fonctionne. Merci Didier-T


Ubuntu 13.04-64 gnome-shell 3.6.1.3

Hors ligne

#646 Le 19/06/2013, à 08:08

Yvance77

Re : [Conky] Alternative à weather.com (3)

Didier-T a écrit :

je pense que sa fera plaisir a Yvance77... et certainement à d'autres....

Effectivement et merci pour cette belle réactivité. wink


A trop vouloir faire de l'économie un idéal, nous faisons l'économie de l'Idéal !

Linux Mint 15 Olivia - Mate Edition
Carte-mère Gygabites Combo GA - G41M socket 775

Hors ligne

#647 Le 19/06/2013, à 14:03

ragamatrix

Re : [Conky] Alternative à weather.com (3)

Salut à tous
Je viens d'avoir l'idée d'utiliser le script d'image sat de jpdipsy afin d'avoir une carte de relevé sismique actualisée...
Je ne sais pas si cela pourrais vous intéresser
Je ne sais pas encore si celui-ci s'actualise correctement, le résultat rendrait ça:
1371643214.png

Hors ligne

#648 Le 19/06/2013, à 16:49

cabrito

Re : [Conky] Alternative à weather.com (3)

Bonjour,

juste un petit commentaire pour signaler que le script « Maj.sh » du pack de base (pack meteo2.lua v1.09 et recmeteo.py v1.30) est défectueux.

Il manque simplement les instructions « echo » au début des lignes 7 et 9 :

01 #!/bin/bash
02 # Par @ Didier-T - Forum Ubuntu.fr
03 # Script de mise a jour
04
05 tar xzf meteo.tar.gz -C ~ --wildcards --no-anchored '.conky/conky-meteo/meteo_lua_2'
06 if [ $? = "0" ];then
07 "Mise a jour effectuée"
08 else
09 "Mise a jour non effectuée"
10 exit 1
11 fi
12
13 exit 0

Voilà, à bientôt.

Dernière modification par cabrito (Le 19/06/2013, à 17:12)

Hors ligne

#649 Le 19/06/2013, à 16:49

ragamatrix

Re : [Conky] Alternative à weather.com (3)

ça fonctionne, alors voici le script que vous pouvez appeler dans conky dans ce genre là (exemple):

 ${texeci 1200 /home/YOU/.conky/script/03-carte-seismes.sh}
${image /tmp/carte-seismes.png -p 16,610 -f 60} 

03-carte-seismes.sh:

 #!/bin/bash

# Crée par JPDipsy et modifié par ragamatrix
# script de recupération carte-seismes "euromed" http://www.emsc.eu/#2
# et mise en forme polaroïd imagemagick et pagecurl  doivent être installés
# ce script et le script pagecurl doivent être dans le même rep.
#----------------------------------------------------------------------------------
path=`dirname $0`
if [ -z "$1" ];then
reptemp="/tmp"
else
reptemp="$1"
fi

heuremodif=`date +%H`; minmodif=`date +%M`
# ce que vous voulez
fonte=Times-Bold
nomimage=carte-seismes
tailleimage=60 # ceci est en pourcentage
tailledecoupe=250x200
libelle="Relevé sismique à: "
#----------------------------------------------------------------------------------
# recup image sat
wget -q -O  $reptemp/$nomimage.jpg "http://static2.emsc.eu/Images/map_zoom/WEBMAPS/24H/TEUROMED.24hours.jpg?dt=1371641233"

function mise_en_forme_image {
convert  $reptemp/$nomimage.png -background white -bordercolor white  -border 5%  -gravity South -splice 0x22 -density 150 \
-font $fonte  -pointsize 10 -annotate 0x10+0+10 "$libelle $heuremodif h $minmodif"   $reptemp/$nomimage.png
#creation coin et masque à l'aide du script pagecurl
convert -size 128x128 xc: miff:- | $path/pagecurl  -m doublegrad -a 60 -e 0.3 -i $reptemp/"pagecurl" - null:
#composition image finale
convert $reptemp/$nomimage.png -background  none -alpha set -gravity SouthEast -define compose:outside-overlay=false \
$reptemp/pagecurl_overlay.png -composite $reptemp/pagecurl_mask.png  -compose DstIn -composite -virtual-pixel background  \
+distort ScaleRotateTranslate 90 +repage $reptemp/$nomimage.png
convert -size 256x32 xc: miff:- | $path/pagecurl  -m doublegrad -a 5 -e 0.5 -i $reptemp/"pagecurl" - null:
convert $reptemp/$nomimage.png -background  none -alpha set -gravity SouthEast -define compose:outside-overlay=false \
$reptemp/pagecurl_overlay.png -composite $reptemp/pagecurl_mask.png  -compose DstIn -composite  -virtual-pixel background  \
+distort ScaleRotateTranslate -105  +repage -resize $tailleimage% $reptemp/$nomimage.png
rm $reptemp/pagecurl_overlay.png ; rm $reptemp/pagecurl_mask.png	
}

function ombre {
convert   $reptemp/$nomimage.png  -background  black  \( +clone -shadow 60x4+14+14 \) +swap -background  none   -flatten $reptemp/$nomimage.png	
}	

if [[ -e $reptemp/$nomimage.jpg ]] ; then
	# decoupage de la partie utile
	
	convert $reptemp/$nomimage.jpg -filter Lanczos -crop  $tailledecoupe+150+130\!  -resize 200% $reptemp/$nomimage.png
	mise_en_forme_image ; ombre ; #rm $reptemp/$nomimage.gif
else
	# comme ça votre conky aura toujours une image au cas ou 
	convert -size $tailledecoupe plasma:  $reptemp/$nomimage.png
	libelle="Désolé pas d'image radar à "
	mise_en_forme_image ; ombre
fi

pagecurl qui doit être dans le même dossier que le précédent script:

 #!/bin/bash
#
# USAGE: pagecurl [options] infile outfile
#
# pagecurl - Applies a pagecurl effect to the lower right corner of an image.
#
# This program generates a pagecurl effect to the lower right corner of an
# image. The apex of the curl is nominally in the upper right corner of the
# image, but can be adjusted. The curl is always right to left. The curl can
# be shaded and/or colored. The removed area can be colored or transparent.
# Note that this is a 2D simulation and not a true 3D effect.
#
# OPTIONS:
#
#      -a amount       amount of pagecurl expressed as percent of image
#                      width; integer>=5; default=50
#      -m mode         mode of shading curl; plain, grad or doublegrad;
#                      default=grad
#      -c color        color to apply to curl; any valid IM color;
#                      default=white
#      -b bgcolor      background color to apply to image where curled away;
#                      any valid IM color; default=none (transparent)
#      -e ellipticity  curl flattening from circle to ellipse;
#                      0<=float<1; default=0 for circle; recommended value
#                      other 0 is 0.5 for ellipse shape
#      -x xcoord       x coordinate for apex of curl;
#                      default=right image edge
#      -y ycoord       y coordinate for apex of curl;
#                      default=upper image edge
#      -g gcontrast    contrast adjustment for mode=grad; 0<=integer<=100;
#                      increases contrast only; default=15
#      -d dcontrast    contrast adjustment for mode=doublegrad;
#                      -100<=integer<=100; positive increase contrast;
#                      negative decreases contrast; default=0
#      -i prefix       generate and save the overlay and masking images
#                      in PNG format using the filename prefix provided.
#
#      -help           output this documentation
#
###
#
# -a amount ... AMOUNT of pagecurl expressed as percent of image width. Values
# are in range integer>=5. The default=50
#
# -m mode ... MODE shading on the curl. Choices are: plain (or p), grad (or g)
# for gradient, or doublegrad (or d) for double gradient. Default=grad.
#
# -c color ... COLOR is the color to apply to curl. Any valid IM color is
# allowed. The default=white.
#
# -b bgcolor ... BGCOLOR is the color to apply to curled away part of the image.
# Any valid IM color is allowed. The default=none for transparent.
#
# -e ellipticity ... ELLIPTICITY is the amount of curl flattening from a circle
# to an ellipse. Values are in range 0<=float<1. The default=0 for circle.
# Recommended value other 0 is 0.5 for ellipse shape.
#
# -x xcoord ... XCOORD is the X coordinate for the apex of the curl. Values
# are 0<integers<width. The default is the right edge of the image.
#
# -y ycoord ... YCOORD is the Y coordinate for the apex of the curl. Values
# are integers. The default is the upper edge of the image.
#
# -g gcontrast ... GCONTRAST is the contrast adjustment for mode=grad. Values
# are in range 0<=integer<=100. This increases contrast only. The default=15
#
# -d dcontrast ... DCONTRAST is the contrast adjustment for mode=doublegrad.
# Values are in range -100<=integer<=100. Positive values increase contrast.
# Negative values decrease contrast. The default=0
#
# -i prefix ... save the overlay and masking images generated using the
# prefix/path provided. Filename created are "{prefix}_overlay.png" and
# "{prefix}_mask.png".
#
#
# Thanks to Anthony Thyssen for critiqing the original version and for
# several useful suggestions for improvement.
#
# CAVEAT: No guarantee that this script will work on all platforms,
# nor that trapping of inconsistent parameters is complete and foolproof.
# Use At Your Own Risk.
#
######
#
# Original script by Fred Weinhaus, 23 May 2010
# Re-developed by Anthony Thyssen, 4 December 2010
#

# set default values
amount=50            # approx percentage of curl of image width; 5 to 100
mode="grad"          # plain, grad, doublegrad
color="white"        # color for plain or gradients
bgcolor="none"       # background color
ellipticity=0        # how circular the curl is 0 circle 0.5 is elliptical
xcoord=""            # apex of cone; default=width (UL corner)
ycoord=""            # apex of cone; default=0 (UL corner)
gcontrast=15         # gradient contrast values; non-neg interger percent
dcontrast=0          # doublegrad contrast values; pos or neg integer percent
swidth=2             # strokewidth; thickness of curl

# set up functions to report Usage and Usage with Description
PROGNAME=`type $0 | awk '{print $3}'`  # search for executable on path
PROGDIR=`dirname $PROGNAME`            # extract directory of program
PROGNAME=`basename $PROGNAME`          # base name of program
usage1() {
  echo >&2 ""
  echo >&2 "$PROGNAME:" "$@"
  sed >&2 -n '/^###/q;  /^#/!q;  s/^#//;  s/^ //;  3,$p' \
      "$PROGDIR/$PROGNAME"
  exit 1
}
usage2() {
  echo >&2 ""
  echo >&2 "$PROGNAME:" "$@"
  sed >&2 -n '/^######/q;  /^#/!q;  s/^#*//;  s/^ //;  3,$p' \
      "$PROGDIR/$PROGNAME"
  exit 0
}


# function to report error messages
errMsg() {
  echo ""
  echo $1
  echo ""
  usage1
}


# function to test for minus at start of value of second part of option 1 or 2
checkMinus() {
  test=`echo "$1" | grep -c '^-.*$'`   # returns 1 if match; 0 otherwise
  [ $test -eq 1 ] && errMsg "$errorMsg"
}

# test for correct number of arguments and get values
if [ $# -eq 0 ]; then
  echo ""
  usage2
elif [ $# -gt 20 ]; then
  errMsg "--- TOO MANY ARGUMENTS WERE PROVIDED ---"
fi

while [ $# -gt 0 ]
  do
    # get parameter values
    case "$1" in
    -help)    # help information
        echo ""
        usage2
        exit 0
        ;;
    -a)  # get amount
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        errorMsg="--- INVALID AMOUNT SPECIFICATION ---"
        checkMinus "$1"
        amount=`expr "$1" : '\([0-9]*\)'`
        [ "$amount" = "" ] && errMsg "--- AMOUNT=$amount MUST BE A NON-NEGATIVE INTEGER (with no sign) ---"
        test1=`echo "$amount < 5" | bc`
        [ $test1 -eq 1 ] && errMsg "--- AMOUNT=$amount MUST BE AN GREATER THAN 4 ---"
        ;;
    -m) # get  mode
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        errorMsg="--- INVALID MODE SPECIFICATION ---"
        checkMinus "$1"
        mode=`echo "$1" | tr '[A-Z]' '[a-z]'`
        case "$mode" in
          plain|p) mode=plain ;;
          grad|g) mode=grad ;;
          doublegrad|d) mode=doublegrad ;;
          *) errMsg "--- MODE=$mode IS AN INVALID VALUE ---" ;;
        esac
        ;;
    -c) # get color
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        errorMsg="--- INVALID COLOR SPECIFICATION ---"
        checkMinus "$1"
        color="$1"
        ;;
    -b) # get bgcolor
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        errorMsg="--- INVALID BGCOLOR SPECIFICATION ---"
        checkMinus "$1"
        bgcolor="$1"
        ;;
    -e) # get ellipticity
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        errorMsg="--- INVALID ELLIPTICITY SPECIFICATION ---"
        checkMinus "$1"
        ellipticity=`expr "$1" : '\([.0-9]*\)'`
        [ "$ellipticity" = "" ] && errMsg "--- ELLIPTICITY=$arc MUST BE A NON-NEGATIVE FLOAT (with no sign) ---"
        test1=`echo "$ellipticity < 0" | bc`
        test2=`echo "$ellipticity >= 1" | bc`
        [ $test1 -eq 1 -o $test2 -eq 1 ] && errMsg "--- ELLIPTICITY=$arc MUST BE A FLOAT GREATER THAN OR EQUAL 0 AND LESS THAN 1 ---"
        ;;
    -x) # get xcoord
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        errorMsg="--- INVALID XCOORD SPECIFICATION ---"
        checkMinus "$1"
        xcoord=`expr "$1" : '\([0-9]*\)'`
        [ "$xcoord" = "" ] && errMsg "--- XCOORD=$xcoord MUST BE A NON-NEGATIVE INTEGER ---"
        ;;
    -y) # get ycoord
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        #errorMsg="--- INVALID YCOORD SPECIFICATION ---"
        #checkMinus "$1"
        ycoord=`expr "$1" : '\([-0-9]*\)'`
        [ "$ycoord" = "" ] && errMsg "--- YCOORD=$ycoord MUST BE AN INTEGER ---"
        ;;
    -g) # get gcontrast
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        errorMsg="--- INVALID GCONTRAST SPECIFICATION ---"
        checkMinus "$1"
        gcontrast=`expr "$1" : '\([0-9]*\)'`
        [ "$gcontrast" = "" ] && errMsg "--- GCONTRAST=$gcontrast MUST BE A NON-NEGATIVE INTEGER (with no sign) ---"
        test1=`echo "$gcontrast < 0" | bc`
        test2=`echo "$gcontrast > 100" | bc`
        [ $test1 -eq 1 -o $test2 -eq 1 ] && errMsg "--- GCONTRAST=$gcontrast MUST BE AN INTEGER BETWEEN 0 AND 100 ---"
        ;;
    -d) # get dcontrast
        shift  # to get the next parameter
        # test if parameter starts with minus sign
        #errorMsg="--- INVALID DCONTRAST SPECIFICATION ---"
        #checkMinus "$1"
        dcontrast=`expr "$1" : '\([-0-9]*\)'`
        [ "$dcontrast" = "" ] && errMsg "--- DCONTRAST=$dcontrast MUST BE AN INTEGER ---"
        test1=`echo "$dcontrast < -100" | bc`
        test2=`echo "$dcontrast > 100" | bc`
        [ $test1 -eq 1 -o $test2 -eq 1 ] && errMsg "--- DCONTRAST=$dcontrast MUST BE AN INTEGER BETWEEN -100 AND 100 ---"
        ;;
    -i) # save overlay and masking images
        shift
        prefix="$1"
        ;;

    --) shift; break ;;  # end of arguments
    -)  break ;;         # STDIN and end of arguments
    -*) errMsg "--- UNKNOWN OPTION ---" ;;
    *)  break ;;         # end of arguments
  esac
  shift   # next option
done
#
# get infile and outfile
infile="$1"
outfile="$2"

# test that infile provided
[ "X$infile" = "X" ] && errMsg "NO INPUT FILE SPECIFIED"

# test that outfile provided
[ "X$outfile" = "X" ] && errMsg "NO OUTPUT FILE SPECIFIED"

# create directory for temporary files in /tmp or $TMPDIR
tmp=`mktemp -d "${TMPDIR:-/tmp}/$PROGNAME.XXXXXXXXXX"` ||
  { echo >&2 "$PROGNAME: Unable to create temporary file"; exit 10;}
trap 'rm -rf "$tmp"' 0   # remove on any exit
trap 'exit 2' 1 2 3 15   # error exit on interupt

tmp1="$tmp/pagecurl_1.mpc"  # input file
tmp2="$tmp/pagecurl_2.mpc"  # overlay image
tmp3="$tmp/pagecurl_3.mpc"  # ellipse / transparency mask

# test input image
convert -quiet -regard-warnings "$infile" +gravity +repage "$tmp1" ||
        errMsg "--- FILE $infile DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE ---"

ww=`convert $tmp1 -ping -format "%w" info:`
hh=`convert $tmp1 -ping -format "%h" info:`
wm1=`convert xc: -format "%[fx:$ww-1]" info:`
hm1=`convert xc: -format "%[fx:$hh-1]" info:`
xc=`convert xc: -format "%[fx:$ww/2]" info:`
yc=`convert xc: -format "%[fx:$hh/2]" info:`

if [ "X$xcoord" = "X" -a "X$ycoord" = "X" ]; then
  xcoord=$wm1
  ycoord=0
elif [ "X$xcoord" = "X" -a "X$ycoord" != "X" ]; then
  xcoord=$wm1
elif [ "X$xcoord" != "X" -a "X$ycoord" = "X" ]; then
  ycoord=0
fi

# set vertex nominally at upper left corner
x1=$xcoord
y1=$ycoord

# compute approx right angle
# dx=pixel distance from lower right corner along bottom edge
dx=`convert xc: -format "%[fx:$ww*$amount/100]" info:`
rangle=`convert xc: -format "%[fx:(180/pi)*atan($dx/($hh-$y1))]" info:`

# compute a=rx as semicircle arc length = dx
# compute b from a and ellipticity
a=`convert xc: -format "%[fx:($dx+$ww-$x1)/pi]" info:`
b=`convert xc: -format "%[fx:$a*(1-$ellipticity)]" info:`

# get diameter by sqrt(2) and a bit more to use for initial ellipse image as it will be trimmed
a2=`convert xc: -format "%[fx:3*$a]" info:`
a2h=`convert xc: -format "%[fx:$a2/2]" info:`

# compute approx center angle from p1 to dx and a
prx=`convert xc: -format "%[fx:$ww-$dx]" info:`
pry=$(($hh-1))
lenr=`convert xc: -format "%[fx:hypot(($y1-$pry),($x1-$prx))]" info:`
dangle=`convert xc: -format "%[fx:(180/pi)*asin(($a/2)/$lenr)]" info:`
angle=`convert xc: -format "%[fx:$rangle+$dangle]" info:`


# create ellipse (and mask) for curl
convert -size ${a2}x${a2} xc:none -fill white \
        -draw "translate $a2h,$a2h rotate $angle ellipse 0,0 $a,$b 0,360" \
        -trim +repage $tmp3

# get width, height of ellipse image
eww=`convert $tmp3 -ping -format "%w" info:`
ehh=`convert $tmp3 -ping -format "%h" info:`

# get center and upper left corner of trimmed ellipse image
# for inserting into full size image for mask
y2=`convert xc: -format "%[fx:$hh-$ehh/2]" info:`
x2=`convert xc: -format "%[fx:$x1-($y2-$y1)*tan(pi*$angle/180)]" info:`
x0=`convert xc: -format "%[fx:$x2-$eww/2]" info:`
y0=`convert xc: -format "%[fx:$y2-$ehh/2]" info:`

# insert ellipse image in white background at correct location to form mask
testx=`convert xc: -format "%[fx:sign($x0)]" info:`
testy=`convert xc: -format "%[fx:sign($y0)]" info:`
if [ $testx -eq 1 -a $testy -eq 1 ]; then
        offsets="+${x0}+${y0}"
elif [ $testx -eq -1 -a $testy -eq 1 ]; then
        offsets="${x0}+${y0}"
elif [ $testx -eq 1 -a $testy -eq -1 ]; then
        offsets="+${x0}${y0}"
elif [ $testx -eq -1 -a $testy -eq -1 ]; then
        offsets="${x0}${y0}"
fi

# get length from apex p1 to center of ellipse p2
len=`convert xc: -format "%[fx:hypot(($x2-$x1),($y2-$y1))]" info:`

# get complement rotation angle
angle2=`convert xc: -format "%[fx:-90+$angle]" info:`


# compute tangent points as if ellipse at origin and apex vertically above at len
# ellipse (x/a)^2 + (y/b)^2 = 1, where a and b are semi-major and semi-minor radii
# differentiate: dy/dx = slope at tangent = -(x*b^2)/(y*a^2)
# tangent line to apex (x1,y1): y-y1=-(x-x1)*(x*b^2)/(y*a^2)
# solve for y and substitute into equation of ellipse to find x from quadratic equation
p0x=0
p0y=-$len
A=`convert xc: -format "%[fx:$a*$a*$p0y*$p0y + $b*$b*$p0x*$p0x]" info:`
B=`convert xc: -format "%[fx:-2*$a*$a*$b*$b*$p0x]" info:`
C=`convert xc: -format "%[fx:$a*$a*$a*$a*($b*$b-$p0y*$p0y)]" info:`
p3x=`convert xc: -format "%[fx:(-$B-sqrt($B*$B-4*$A*$C))/(2*$A)]" info:`
p4x=`convert xc: -format "%[fx:(-$B+sqrt($B*$B-4*$A*$C))/(2*$A)]" info:`
p3y=`convert xc: -format "%[fx:($a*$a*$b*$b-$b*$b*$p0x*$p3x)/($a*$a*$p0y)]" info:`
p4y=`convert xc: -format "%[fx:($a*$a*$b*$b-$b*$b*$p0x*$p4x)/($a*$a*$p0y)]" info:`

# rotate p2 and p3 relative to p1 by angle3
x3=`convert xc: -format "%[fx:($p3x)cos(pi*$angle/180)-($p3y+$len)sin(pi*$angle/180)+$x1]" info:`
y3=`convert xc: -format "%[fx:($p3x)sin(pi*$angle/180)+($p3y+$len)cos(pi*$angle/180)+$y1]" info:`
x4=`convert xc: -format "%[fx:($p4x)cos(pi*$angle/180)-($p4y+$len)sin(pi*$angle/180)+$x1]" info:`
y4=`convert xc: -format "%[fx:($p4x)sin(pi*$angle/180)+($p4y+$len)cos(pi*$angle/180)+$y1]" info:`

# create triangle mask (using the color posibly given by user)
convert -size ${ww}x${hh} xc:none \
        -fill $color -stroke $color -strokewidth $swidth \
        -draw "polygon $x1,$y1 $x3,$y3 $x4,$y4" $tmp2

# Cut out an elliptical shape from trianglar overlay
convert $tmp2 $tmp3 -geometry $offsets -compose DstOut -composite $tmp2

# At this point the ellipse mask in no longer needed!

# setup for grad or doublegrad
if [ "$mode" = "grad" ]; then
  lo=$gcontrast
  hi=$((100-$lo))
  process="-level ${lo}x${hi}% +level-colors black,$color"
elif [ "$mode" = "doublegrad" ]; then
  lo=`convert xc: -format "%[fx:abs($dcontrast)]" info:`
  hi=$((100-$lo))
  test=`convert xc: -format "%[fx:sign($dcontrast)]" info:`
  if [ $test -eq 1 ]; then
    process="-level ${lo}x${hi}%"
  else
    process="+level ${lo}x${hi}%"
  fi
  process="$process -solarize 50% -level 0x50% +level-colors black,$color"
fi

# IF not generating a plain paper curl, recolor the overlay,
# using a -sparse-color gradient, with appropiate processing.
if [ "$mode" != "plain" ]; then
  convert -size ${ww}x${hh} xc: -sparse-color Barycentric \
          "$x3,$y3 white $x4,$y4 black" \
          $process \
          $tmp2 +swap -compose In -composite $tmp2
fi

# FUTURE add a offset shadow to to the overlay image.

# create the transparency mask (using an ellipse and tangent line)
convert -size ${ww}x${hh} xc:white \
        -fill red -draw "line $x1,$y1 $x4,$y4" \
        -draw "translate $x2,$y2 rotate $angle ellipse 0,0 $a,$b 0,360" \
        -fill black -draw "color $wm1,$hm1 floodfill" \
        -fill white +opaque black -blur 2x65000 -level 50x100% \
        -alpha shape $tmp3


# Output overlay and transparency masks
if [ "X$prefix" != "X" ]; then
  convert $tmp2 "${prefix}_overlay.png"   # shaped overlay image
  convert $tmp3 "${prefix}_mask.png"      # shaped masking image
fi

# Do a "paint 'n' mask" of the original image, outputing the final image
convert $tmp1 $tmp2 -composite \
        $tmp3 -compose DstIn -composite \
        -compose over -bordercolor $bgcolor -border 0 \
        "$outfile"

exit 0 

Dernière modification par ragamatrix (Le 19/06/2013, à 16:51)

Hors ligne

#650 Le 19/06/2013, à 18:30

Didier-T

Re : [Conky] Alternative à weather.com (3)

bien observé cabrito, le script est modifié.
merci.

Hors ligne

Haut de page ↑