[Printing-architecture] Contributing braille embosser support
Samuel Thibault
samuel.thibault at ens-lyon.org
Tue Nov 29 19:30:00 UTC 2016
Hello,
This is an update for the Index braille driver, to add support for text
margins.
Samuel
-------------- next part --------------
=== modified file 'filter/braille/drivers/index/index.defs'
--- filter/braille/drivers/index/index.defs 2015-12-12 02:11:10 +0000
+++ filter/braille/drivers/index/index.defs 2016-11-27 20:30:23 +0000
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2015 Samuel Thibault <samuel.thibault at ens-lyon.org>
+// Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault at ens-lyon.org>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@@ -56,3 +56,70 @@ Group "Braille"
Choice "3/User-defined Table 3" ""
Choice "4/User-defined Table 4" ""
+Option "TopMargin/Top margin" PickOne AnySetup 10
+ Choice "0" ""
+ Choice "1" ""
+ *Choice "2" ""
+ Choice "3" ""
+ Choice "4" ""
+ Choice "5" ""
+ Choice "6" ""
+ Choice "7" ""
+ Choice "8" ""
+ Choice "9" ""
+ Choice "10" ""
+
+Option "BottomMargin/Bottom margin" PickOne AnySetup 10
+ Choice "0" ""
+ Choice "1" ""
+ *Choice "2" ""
+ Choice "3" ""
+ Choice "4" ""
+ Choice "5" ""
+ Choice "6" ""
+ Choice "7" ""
+ Choice "8" ""
+ Choice "9" ""
+ Choice "10" ""
+
+Option "InnerMargin/Inner margin" PickOne AnySetup 10
+ Choice "0" ""
+ Choice "1" ""
+ *Choice "2" ""
+ Choice "3" ""
+ Choice "4" ""
+ Choice "5" ""
+ Choice "6" ""
+ Choice "7" ""
+ Choice "8" ""
+ Choice "9" ""
+ Choice "10" ""
+
+Option "OuterMargin/Outer margin" PickOne AnySetup 10
+ Choice "0" ""
+ Choice "1" ""
+ *Choice "2" ""
+ Choice "3" ""
+ Choice "4" ""
+ Choice "5" ""
+ Choice "6" ""
+ Choice "7" ""
+ Choice "8" ""
+ Choice "9" ""
+ Choice "10" ""
+
+Option "PageNumber/Page Number" PickOne AnySetup 10
+ Choice "None/None" ""
+ Choice "Top/Top-middle" ""
+ Choice "TopLeft/Top-left" ""
+ Choice "TopRight/Top-right" ""
+ Choice "Bottom/Bottom-middle" ""
+ Choice "BottomLeft/Bottom-left" ""
+ Choice "BottomRight/Bottom-right" ""
+
+UIConstraints "*TopMargin 0 *PageNumber Top"
+UIConstraints "*TopMargin 0 *PageNumber TopLeft"
+UIConstraints "*TopMargin 0 *PageNumber TopRight"
+UIConstraints "*BottomMargin 0 *PageNumber Bottom"
+UIConstraints "*BottomMargin 0 *PageNumber BottomLeft"
+UIConstraints "*BottomMargin 0 *PageNumber BottomRight"
=== modified file 'filter/braille/drivers/index/index.sh.in'
--- filter/braille/drivers/index/index.sh.in 2015-12-12 02:11:10 +0000
+++ filter/braille/drivers/index/index.sh.in 2016-11-27 20:47:11 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2015 Samuel Thibault <samuel.thibault at ens-lyon.org>
+# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault at ens-lyon.org>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -28,6 +28,7 @@ FIRMWARE=$(getOptionNumber IndexFirmware
FOLDING=$(getOption IndexFolding)
TABLE=$(getOptionNumber IndexTable)
MULTIPLEIMPACT=$(getOptionNumber IndexMultipleImpact)
+PAGENUMBER=$(getOption PageNumber)
# Convert from 100th of mm to Inch fraction
mmToIndexIn () {
@@ -71,7 +72,7 @@ mmToIndexIn () {
commonOptions() {
INIT=
# Disable options we don't want: first line offset and page numbering
- INIT+=,FO0,PN0
+ INIT+=,FO0
# Support hardware-assisted multiple copies
if [ $NB != 1 ]
@@ -82,7 +83,7 @@ commonOptions() {
INIT+=,MI$MULTIPLEIMPACT
# Support page folding
- case $FOLDING in
+ case "$FOLDING" in
Single) INIT+=,DP1 ;;
Double) INIT+=,DP2 ;;
SingleZ) INIT+=,DP5 ;;
@@ -101,11 +102,22 @@ commonOptions() {
320) INIT+=,TD2 ;;
*) printf "ERROR: unsupported '%s' text dot distance\n" "$TEXTDOTDISTANCE" >&2 ; exit 1 ;;
esac
- case $GRAPHICDOTDISTANCE in
+ case "$GRAPHICDOTDISTANCE" in
160) INIT+=,GD2 ;;
200) INIT+=,GD0 ;;
250) INIT+=,GD1 ;;
- *) printf "ERROR: unsupported '%s'graphic dot distance\n" "$GRAPHICDOTDISTANCE" >&2 ; exit 1 ;;
+ *) printf "ERROR: unsupported '%s' graphic dot distance\n" "$GRAPHICDOTDISTANCE" >&2 ; exit 1 ;;
+ esac
+
+ case "$PAGENUMBER" in
+ None) INIT+=,PN0 ;;
+ Top) INIT+=,PN1 ;;
+ TopLeft) INIT+=,PN2 ;;
+ TopRight) INIT+=,PN3 ;;
+ Bottom) INIT+=,PN4 ;;
+ BottomLeft) INIT+=,PN5 ;;
+ BottomRight) INIT+=,PN6 ;;
+ *) echo "ERROR: unsupported $PAGENUMBER page number" >&2 ; exit 1 ;;
esac
echo "$INIT"
=== modified file 'filter/braille/drivers/index/indexv3.sh.in'
--- filter/braille/drivers/index/indexv3.sh.in 2015-12-12 02:11:10 +0000
+++ filter/braille/drivers/index/indexv3.sh.in 2016-11-29 19:29:11 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2015 Samuel Thibault <samuel.thibault at ens-lyon.org>
+# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault at ens-lyon.org>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -33,7 +33,7 @@ then
INIT=$'\033'D
# Disable margins
- INIT+=TM0,BM0,IM0,OM0
+ INIT+=TM$TOPMARGIN,BM$BOTTOMMARGIN,IM$INNERMARGIN,OM$OUTERMARGIN
# Trying to disable banner page seems to pose problems
#INIT+=,BP
=== modified file 'filter/braille/drivers/index/indexv4.sh.in'
--- filter/braille/drivers/index/indexv4.sh.in 2015-12-12 02:11:10 +0000
+++ filter/braille/drivers/index/indexv4.sh.in 2016-11-29 19:29:12 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2015 Samuel Thibault <samuel.thibault at ens-lyon.org>
+# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault at ens-lyon.org>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -30,7 +30,7 @@ then
INIT=$'\033'D
# Disable margins
- INIT+=TM0,BI0
+ INIT+=TM$TOPMARGIN,BI$INNERMARGIN
# Common options
INIT+="$(setCommonOptions)"
=== modified file 'filter/braille/filters/cups-braille.sh.in'
--- filter/braille/filters/cups-braille.sh.in 2016-04-10 17:20:32 +0000
+++ filter/braille/filters/cups-braille.sh.in 2016-11-27 20:35:31 +0000
@@ -144,7 +144,7 @@ case "$PAGESIZE" in
;;
esac
-#?TODO: hardcoded margin
+#?TODO: hardcoded embosser margin
PRINTABLEWIDTH=$((PAGEWIDTH - 1000))
PRINTABLEHEIGHT=$((PAGEHEIGHT - 1000))
@@ -167,9 +167,30 @@ esac
TEXTDOTS=$(getOptionNumber TextDots)
LINESPACING=$(getOptionNumber LineSpacing)
+# Cell dimension, including spacing
+TEXTCELLWIDTH=$(( $TEXTDOTDISTANCE + $TEXTCELLDISTANCE ))
+TEXTCELLHEIGHT=$(( $TEXTDOTDISTANCE * ($TEXTDOTS / 2 - 1) + $LINESPACING ))
+
+if [ "$(getOption TopMargin)" = "" ]
+then
+ # No margin
+ TEXTAREAWIDTH=$PRINTABLEWIDTH
+ TEXTAREAHEIGHT=$PRINTABLEHEIGHT
+else
+ # Margins in cells
+ TOPMARGIN=$(getOptionNumber TopMargin)
+ BOTTOMMARGIN=$(getOptionNumber BottomMargin)
+ INNERMARGIN=$(getOptionNumber InnerMargin)
+ OUTERMARGIN=$(getOptionNumber OuterMargin)
+
+ # Subtract margins from printable area
+ TEXTAREAWIDTH=$(( $PRINTABLEWIDTH - ($INNERMARGIN + $OUTERMARGIN) * $TEXTCELLWIDTH ))
+ TEXTAREAHEIGHT=$(( $PRINTABLEHEIGHT - ($TOPMARGIN + $BOTTOMMARGIN) * $TEXTCELLHEIGHT ))
+fi
+
# Compute number of printable cells according to page width and height
-TEXTWIDTH=$(( ($PRINTABLEWIDTH + $TEXTCELLDISTANCE) / ($TEXTDOTDISTANCE + $TEXTCELLDISTANCE) ))
-TEXTHEIGHT=$(( ($PRINTABLEHEIGHT + $LINESPACING) / ($TEXTDOTDISTANCE * ($TEXTDOTS / 2 - 1) + $LINESPACING) ))
+TEXTWIDTH=$(( ($TEXTAREAWIDTH + $TEXTCELLDISTANCE) / $TEXTCELLWIDTH ))
+TEXTHEIGHT=$(( ($TEXTAREAHEIGHT + $LINESPACING) / $TEXTCELLHEIGHT ))
#
# Graphic spacing
More information about the Printing-architecture
mailing list