tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
7
Task/Pinstripe-Printer/0DESCRIPTION
Normal file
7
Task/Pinstripe-Printer/0DESCRIPTION
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
The task is to demonstrate the creation of a series of 1 point wide vertical pinstripes with a sufficient number of pinstripes to span the entire width of the printed page (except for the last pinstripe). The pinstripes should alternate one point white, one point black. (Where the printer does not support producing graphics in terms of points, pixels may be substituted in this task.)
|
||||
|
||||
After the first inch of printing, we switch to a wider 2 point wide vertical pinstripe pattern. alternating two points white, two points black. We then switch to 3 points wide for the next inch, and then 4 points wide, etc. This trend continues for the entire length of the page (or for 12 inches of run length in the case of a printer using continuous roll stationery). After printing the test pattern the page is ejected (or the test pattern is rolled clear of the printer enclosure, in the case of continuous roll printers).
|
||||
|
||||
Note that it is an acceptable solution to use the smallest marks that the language provides, rather than working at native printer resolution, where this is not achievable from within the language.
|
||||
|
||||
Optionally, on systems where the printer resolution cannot be determined, it is permissible to prompt the user for printer resolution, and to calculate point size based on user input, enabling fractional point sizes to be used.
|
||||
4
Task/Pinstripe-Printer/1META.yaml
Normal file
4
Task/Pinstripe-Printer/1META.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
category:
|
||||
- Test card
|
||||
- Printer
|
||||
37
Task/Pinstripe-Printer/BBC-BASIC/pinstripe-printer.bbc
Normal file
37
Task/Pinstripe-Printer/BBC-BASIC/pinstripe-printer.bbc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
PD_RETURNDC = 256
|
||||
_LOGPIXELSY = 90
|
||||
|
||||
DIM pd{lStructSize%, hwndOwner%, hDevMode%, hDevNames%, \
|
||||
\ hdc%, flags%, nFromPage{l&,h&}, nToPage{l&,h&}, \
|
||||
\ nMinPage{l&,h&}, nMaxPage{l&,h&}, nCopies{l&,h&}, \
|
||||
\ hInstance%, lCustData%, lpfnPrintHook%, lpfnSetupHook%, \
|
||||
\ lpPrintTemplateName%, lpSetupTemplateName%, \
|
||||
\ hPrintTemplate%, hSetupTemplate%}
|
||||
pd.lStructSize% = DIM(pd{})
|
||||
pd.hwndOwner% = @hwnd%
|
||||
pd.flags% = PD_RETURNDC
|
||||
|
||||
SYS "PrintDlg", pd{} TO ok%
|
||||
IF ok%=0 THEN QUIT
|
||||
SYS "DeleteDC", @prthdc%
|
||||
@prthdc% = pd.hdc%
|
||||
*MARGINS 0,0,0,0
|
||||
|
||||
dx% = @vdu%!236-@vdu%!232
|
||||
dy% = @vdu%!244-@vdu%!240
|
||||
SYS "GetDeviceCaps", @prthdc%, _LOGPIXELSY TO dpi%
|
||||
|
||||
DIM rc{l%,t%,r%,b%}
|
||||
SYS "CreateSolidBrush", 0 TO brush%
|
||||
|
||||
VDU 2,1,32,3
|
||||
pitch% = 2
|
||||
FOR y% = 0 TO dy% STEP dpi%
|
||||
FOR x% = 0 TO dx%-pitch% STEP pitch%
|
||||
rc.l% = x% : rc.r% = x% + pitch%/2
|
||||
rc.t% = y% : rc.b% = y% + dpi%
|
||||
SYS "FillRect", @prthdc%, rc{}, brush%
|
||||
NEXT
|
||||
pitch% += 2
|
||||
NEXT y%
|
||||
VDU 2,1,12,3
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
nomainwin
|
||||
|
||||
'paperW = 8.5 ' for US letter paper
|
||||
'paperH = 11
|
||||
|
||||
paperW = 8.2677165 ' for A4 paper
|
||||
paperH = 11.6929134
|
||||
|
||||
dpi= 300
|
||||
|
||||
prompt "Enter your printer DPI" +chr$( 13) + "(300 is OK for laser one, 360 likely for inkjet)"; dpi
|
||||
|
||||
w = paperW *dpi 'pixel size of paper
|
||||
h = paperH *dpi
|
||||
|
||||
graphicbox #main.gr, 0, 0, 300, 300 'picture could be bigger
|
||||
|
||||
open "Pinstripe/Printer" for window as #main
|
||||
|
||||
#main "trapclose [quit]"
|
||||
#main.gr "autoresize" 'now we can maximize window with picture
|
||||
#main.gr "down"
|
||||
#main.gr "horizscrollbar on 0 "; w -300 'so we can scroll it
|
||||
#main.gr "vertscrollbar on 0 "; h -300
|
||||
#main.gr "place 0 0"
|
||||
#main.gr "color white"
|
||||
#main.gr "boxfilled "; w; " ";h
|
||||
#main.gr "color black"
|
||||
#main.gr "backcolor black"
|
||||
|
||||
for i = 0 to int( paperH)
|
||||
ww = i + 1
|
||||
yy =( i + 1) * dpi
|
||||
if yy > h then yy = h
|
||||
for x = ww to w step ww * 2 'start with white strip
|
||||
x1 = x + ww
|
||||
if x1 >= w then x1 = w
|
||||
#main.gr "place "; x; " "; i * dpi
|
||||
#main.gr "boxfilled "; x1; " "; yy
|
||||
next
|
||||
next
|
||||
|
||||
#main.gr "flush"
|
||||
#main.gr "print "; w
|
||||
|
||||
wait
|
||||
[quit]
|
||||
close #main
|
||||
end
|
||||
9
Task/Pinstripe-Printer/PicoLisp/pinstripe-printer.l
Normal file
9
Task/Pinstripe-Printer/PicoLisp/pinstripe-printer.l
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
(load "@lib/ps.l")
|
||||
|
||||
(call 'lpr
|
||||
(pdf "pinstripes"
|
||||
(a4) # 595 x 842 dots
|
||||
(for X 595
|
||||
(gray (if (bit? 1 X) 0 100)
|
||||
(vline X 0 842) ) )
|
||||
(page) ) )
|
||||
14
Task/Pinstripe-Printer/Tcl/pinstripe-printer.tcl
Normal file
14
Task/Pinstripe-Printer/Tcl/pinstripe-printer.tcl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package require Tk
|
||||
# Allocate a temporary drawing surface
|
||||
canvas .c
|
||||
# Draw the output we want
|
||||
for {set y 0;set dx 1} {$y < 11*72} {incr y 72;incr dx} {
|
||||
for {set x 0;set c 0} {$x < 8.5*72} {incr x $dx;set c [expr {!$c}]} {
|
||||
.c create rectangle $x $y [expr {$x+$dx+1}] [expr {$y+73}] \
|
||||
-fill [lindex {black white} $c] -outline {}
|
||||
}
|
||||
}
|
||||
# Send postscript to default printer, scaled 1 pixel -> 1 point
|
||||
exec lp - << [.c postscript -height $y -width $x -pageheight $y -pagewidth $x]
|
||||
# Explicit exit; no GUI desired
|
||||
exit
|
||||
Loading…
Add table
Add a link
Reference in a new issue