summaryrefslogtreecommitdiffstats
path: root/util/bin
diff options
context:
space:
mode:
Diffstat (limited to 'util/bin')
-rwxr-xr-xutil/bin/make-realwallpaper199
1 files changed, 199 insertions, 0 deletions
diff --git a/util/bin/make-realwallpaper b/util/bin/make-realwallpaper
new file mode 100755
index 00000000..a195b5f1
--- /dev/null
+++ b/util/bin/make-realwallpaper
@@ -0,0 +1,199 @@
+#!/bin/sh
+set -euf
+
+###### USAGE #####
+#run in new directory(will be polluted with images
+#just run ./make-realwallpaper
+
+main() {
+ # fetch source images in parallel
+ #fetch nightmap-old-raw.jpg \
+ # http://awka.sourceforge.net/Night_le_huge.jpg &
+ fetch nightmap-raw.jpg \
+ http://www.zeitnews.org/sites/default/files/users/20/article_slideshow_images/nasa-noaa-satellite-reveals-new-views-earth-night-1354814354_0.jpg &
+ fetch daymap-raw.png \
+ http://www.nnvl.noaa.gov/images/globaldata/SnowIceCover_Daily.png &
+ fetch clouds-raw.jpg \
+ http://user.chol.com/~winxplanet/cloud_data/clouds_2048.jpg &
+ fetch krebs.sat.tle \
+ http://www.celestrak.com/NORAD/elements/stations.txt
+ wait
+
+ #check_type nightmap-old-raw.jpg image
+ check_type nightmap-raw.jpg image
+ check_type daymap-raw.png image
+ check_type clouds-raw.jpg image
+
+ in_size=1466x1200
+ out_geometry=1366x768+100+160
+
+ nightsnow_color='#0c1a49' # nightmap
+ #nightsnow_color='#0a3b5c' # nightmap-old
+
+ # normalize *-raw.* to *.png
+ #nightmap-old-raw.jpg
+ for raw in \
+ nightmap-raw.jpg \
+ daymap-raw.png \
+ clouds-raw.jpg \
+ ;
+ do
+ normal=${raw%-raw.*}.png
+ needs_rebuild $normal $raw || continue
+ echo "make $normal; normalize $raw" >&2
+ convert $raw -scale $in_size $normal
+ done
+
+ # create nightmap-fullsnow
+ needs_rebuild nightmap-fullsnow.png \
+ && convert -size $in_size xc:$nightsnow_color nightmap-fullsnow.png
+
+ # extract daymap-snowmask from daymap-final
+ needs_rebuild daymap-snowmask.png \
+ daymap.png \
+ && convert daymap.png -threshold 95% daymap-snowmask.png
+
+ # extract nightmap-lightmask from nightmap
+ needs_rebuild nightmap-lightmask.png \
+ nightmap.png \
+ && convert nightmap.png -threshold 25% nightmap-lightmask.png
+
+ # create layers
+ make_layer nightmap-snowlayer.png nightmap-fullsnow.png daymap-snowmask.png
+ make_layer nightmap-lightlayer.png nightmap.png nightmap-lightmask.png
+
+ # apply layers
+ flatten nightmap-lightsnowlayer.png \
+ nightmap-lightlayer.png \
+ nightmap-snowlayer.png
+
+ flatten nightmap-final.png \
+ nightmap-lightsnowlayer.png \
+ nightmap.png
+ # nightmap-old.png
+
+ # make all unmodified files as final
+ for normal in \
+ daymap.png \
+ clouds.png \
+ ;
+ do
+ final=${normal%.png}-final.png
+ needs_rebuild $final &&
+ ln $normal $final
+ done
+
+ # create xplanet output
+ cat >xplanet.config <<EOF
+[earth]
+"Earth"
+map=daymap-final.png
+night_map=nightmap-final.png
+cloud_map=clouds-final.png
+cloud_threshold=10
+shade=15
+EOF
+
+ # create xplanet output satellite version
+ cat >xplanet-sat.config <<EOF
+[earth]
+"Earth"
+map=daymap-final.png
+night_map=nightmap-final.png
+cloud_map=clouds-final.png
+satellite_file=krebs.sat
+cloud_threshold=10
+shade=15
+EOF
+
+ needs_rebuild krebs.sat \
+ && cat >krebs.sat <<EOF
+25544 "ISS" Image=none trail={orbit,-2,2,1} color=grey thickness=1 fontsize=10
+37820 "T1" Image=none trail={orbit,-2,2,1} color=grey thickness=1 fontsize=10
+39175 "ATV-4" Image=none trail={orbit,-2,2,1} color=grey thickness=1 fontsize=10
+39258 "CYG" Image=none trail={orbit,-2,2,1} color=grey thickness=1 fontsize=10
+EOF
+
+ needs_rebuild krebs.mar \
+ && cat >krebs.mar <<EOF
+EOF
+
+ # rebuild every time to update shadow
+ xplanet --num_times 1 --geometry $in_size \
+ --output xplanet-output.png --projection merc -config xplanet.config
+
+ # rebuild everytime satellite version
+ xplanet --num_times 1 --geometry $in_size \
+ --output xplanet-sat-output.png --projection merc -config xplanet-sat.config
+
+ # trim xplanet output
+ needs_rebuild realwallpaper.png \
+ xplanet-output.png \
+ && convert xplanet-output.png -crop $out_geometry realwallpaper.png
+
+ # trim xplanet-sat output
+ needs_rebuild realwallpaper-sat.png \
+ xplanet-sat-output.png \
+ && convert xplanet-sat-output.png -crop $out_geometry realwallpaper-sat.png
+}
+
+# usage: getimg FILENAME URL
+fetch() {
+ echo "fetch $1"
+ curl -sS -z "$1" -o "$1" "$2"
+}
+
+# usage: check_type FILENAME TYPE
+check_type() {
+ if ! file -ib "$1" | grep -q "^$2/"; then
+ echo "$1 is not of type $2" >&2
+ rm "$1"
+ return 1
+ fi
+}
+
+# usage: image_size FILENAME
+image_size() {
+ identify "$1" | awk '{print$3}'
+}
+
+# usage: make_mask DST SRC MASK
+make_layer() {
+ if needs_rebuild "$@"; then
+ echo "make $1 (apply mask)" >&2
+ convert "$2" "$3" -alpha off -compose copy_opacity -composite "$1"
+ fi
+}
+
+# usage: flatten DST HILAYER LOLAYER
+flatten() {
+ if needs_rebuild "$@"; then
+ echo "make $1 (flatten)" >&2
+ composite "$2" "$3" "$1"
+ fi
+}
+
+# usage: needs_rebuild DST SRC...
+needs_rebuild() {
+ a="$1"
+ shift
+ if ! test -e "$a"; then
+ #echo " $a does not exist" >&2
+ result=0
+ else
+ result=1
+ for b; do
+ if test "$b" -nt "$a"; then
+ #echo " $b is newer than $a" >&2
+ result=0
+ fi
+ done
+ fi
+ #case $result in
+ # 0) echo "$a needs rebuild" >&2;;
+ #esac
+ return $result
+}
+
+
+main "$@"