more
This commit is contained in:
parent
f192a99a35
commit
9040630487
|
@ -1775,17 +1775,10 @@ let whingemalformed () =
|
|||
exit 1
|
||||
|
||||
(* Drawing operations. *)
|
||||
let drawops =
|
||||
let t = Hashtbl.create 10 in
|
||||
Hashtbl.add t "_" [];
|
||||
t
|
||||
|
||||
(* For now, re-using a save name is undefined, and nesting them is undefined too. To fix in both cases. *)
|
||||
let currstash = ref "_"
|
||||
let drawops = ref []
|
||||
|
||||
let addop o =
|
||||
let v = Hashtbl.find drawops !currstash in
|
||||
Hashtbl.replace drawops !currstash (o::v)
|
||||
drawops := o::!drawops
|
||||
|
||||
let tdeep = ref 0
|
||||
|
||||
|
@ -1949,18 +1942,13 @@ let setmsheary s =
|
|||
| [a; b; c] -> addop (Cpdfdraw.Matrix (Pdftransform.matrix_of_transform [Pdftransform.ShearY ((a, b), c)]))
|
||||
| _ | exception _ -> error "-msheary takes three numbers"
|
||||
|
||||
let savexobj s =
|
||||
Hashtbl.add drawops s [];
|
||||
currstash := s
|
||||
let saved_ops = ref []
|
||||
|
||||
let endsave s =
|
||||
currstash := "_"
|
||||
let setxobj s =
|
||||
saved_ops := []
|
||||
|
||||
let usexobj s =
|
||||
try
|
||||
addop (Cpdfdraw.SoftXObject (rev (Hashtbl.find drawops s)))
|
||||
with
|
||||
_ -> error (Printf.sprintf "Could not find stashed graphics %s\n" s)
|
||||
addop (Cpdfdraw.Use "/X1")
|
||||
|
||||
let obj_of_jpeg_data data =
|
||||
let w, h = Cpdfjpeg.jpeg_dimensions data in
|
||||
|
@ -2941,8 +2929,7 @@ and specs =
|
|||
("-mscale", Arg.String setmscale, " Scale the graphics matrix");
|
||||
("-mshearx", Arg.String setmshearx, " Shear the graphics matrix in X");
|
||||
("-msheary", Arg.String setmshearx, " Shear the graphics matrix in Y");
|
||||
("-save", Arg.String savexobj, " Begin to save graphics operators");
|
||||
("-endsave", Arg.String endsave, " End saving of graphics operators");
|
||||
("-xobj", Arg.String setxobj, " Save a sequence of graphics operators");
|
||||
("-use", Arg.String usexobj, " Use a saved sequence of graphics operators");
|
||||
("-draw-jpeg", Arg.String addjpeg, " Load a JPEG from file and name it");
|
||||
("-draw-png", Arg.String addpng, " Load a PNG from file and name it");
|
||||
|
@ -4470,7 +4457,7 @@ let go () =
|
|||
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
|
||||
write_pdf
|
||||
false
|
||||
(Cpdfdraw.draw ~filename:args.original_filename ~bates:args.bates ~batespad:args.batespad args.fast range pdf (rev (Hashtbl.find drawops "_")))
|
||||
(Cpdfdraw.draw ~filename:args.original_filename ~bates:args.bates ~batespad:args.batespad args.fast range pdf (rev !drawops))
|
||||
| Some (Composition json) ->
|
||||
let pdf = get_single_pdf args.op false in
|
||||
let filesize =
|
||||
|
@ -4575,10 +4562,7 @@ let go_withargv argv =
|
|||
let addrange pdf = AlreadyInMemory pdf, args.dashrange, "", "", ref false, None in
|
||||
args.inputs <- rev (map addrange !output_pdfs) @ rev args.inputs;
|
||||
output_pdfs := [];
|
||||
go ();
|
||||
Hashtbl.clear drawops;
|
||||
Hashtbl.add drawops "_" []
|
||||
)
|
||||
go ())
|
||||
sets;
|
||||
flush stdout; (*r for Windows *)
|
||||
exit 0
|
||||
|
|
10
cpdfdraw.ml
10
cpdfdraw.ml
|
@ -32,10 +32,10 @@ type drawops =
|
|||
| FillStrokeEvenOdd
|
||||
| Clip
|
||||
| ClipEvenOdd
|
||||
| SoftXObject of drawops list
|
||||
| HardXObject of drawops list
|
||||
| Image of string
|
||||
| FormXObject of drawops list
|
||||
| Use of string
|
||||
| ImageXObject of string * Pdf.pdfobject
|
||||
| Image of string
|
||||
| NewPage
|
||||
| Opacity of float
|
||||
| SOpacity of float
|
||||
|
@ -128,8 +128,8 @@ let rec ops_of_drawop pdf endpage filename bates batespad num page = function
|
|||
| SetLineJoin j -> [Pdfops.Op_j j]
|
||||
| SetMiterLimit m -> [Pdfops.Op_M m]
|
||||
| SetDashPattern (x, y) -> [Pdfops.Op_d (x, y)]
|
||||
| SoftXObject l | HardXObject l ->
|
||||
[Pdfops.Op_q] @ ops_of_drawops pdf endpage filename bates batespad num page l @ [Pdfops.Op_Q]
|
||||
(*| Use l ->
|
||||
[Pdfops.Op_q] @ ops_of_drawops pdf endpage filename bates batespad num page l @ [Pdfops.Op_Q]*)
|
||||
| Image s -> [Pdfops.Op_Do (try fst (Hashtbl.find images s) with _ -> Cpdferror.error ("Image not found: " ^ s))]
|
||||
| ImageXObject (s, obj) ->
|
||||
Hashtbl.add images s (fresh_xobj_name (), Pdf.addobj pdf obj);
|
||||
|
|
|
@ -30,10 +30,10 @@ type drawops =
|
|||
| FillStrokeEvenOdd
|
||||
| Clip
|
||||
| ClipEvenOdd
|
||||
| SoftXObject of drawops list
|
||||
| HardXObject of drawops list
|
||||
| Image of string
|
||||
| FormXObject of drawops list
|
||||
| Use of string
|
||||
| ImageXObject of string * Pdf.pdfobject
|
||||
| Image of string
|
||||
| NewPage
|
||||
| Opacity of float
|
||||
| SOpacity of float
|
||||
|
|
Loading…
Reference in New Issue