From 21ce6773132b9e9aa25b75050a07eb3cc894010b Mon Sep 17 00:00:00 2001 From: John Whitington Date: Fri, 3 Oct 2014 15:55:03 +0100 Subject: [PATCH] Added -center option for text, soon to be used for stamps too. --- cpdf.ml | 102 +++++++++++++++++++++++++------------------------ cpdf.mli | 1 + cpdfcommand.ml | 14 +++++-- cpdfmanual.pdf | Bin 207516 -> 207528 bytes cpdfmanual.tex | 3 +- 5 files changed, 65 insertions(+), 55 deletions(-) diff --git a/cpdf.ml b/cpdf.ml index 860c6ae..1af65ff 100644 --- a/cpdf.ml +++ b/cpdf.ml @@ -1694,6 +1694,7 @@ type position = | Right of float | Diagonal | ReverseDiagonal + | Centre let string_of_position = function | PosCentre (a, b) -> Printf.sprintf "PosCentre %f %f" a b @@ -1709,6 +1710,7 @@ let string_of_position = function | Right a -> Printf.sprintf "Right %f" a | Diagonal -> "Diagonal" | ReverseDiagonal -> "Reverse Diagonal" + | Centre -> "Centre" type orientation = | Horizontal @@ -1719,53 +1721,53 @@ type justification = LeftJustify | CentreJustify | RightJustify (* Given the mediabox, calculate an absolute position for the text. *) let calculate_position ignore_d w (xmin, ymin, xmax, ymax) orientation pos = - (*i Printf.printf "calculate_position %b %f %f %f %f %f %b\n" ignore_d w xmin ymin xmax ymax shorterside; i*) - let rot = if orientation = VerticalDown then rad_of_deg 270. else 0. in - match pos with - | Diagonal -> - let angle = atan ((ymax -. ymin) /. (xmax -. xmin)) - in let cx, cy = (xmax +. xmin) /. 2., (ymax +. ymin) /. 2. in - let dl = w /. 2. in - let dx = dl *. cos angle - in let dy = dl *. sin angle in - (*i Printf.printf "Diagonal: angle = %f, cx = %f, cy = %f, dx = %f, dy = %f\n" angle cx cy dx dy; i*) - cx -. dx, cy -. dy, angle - | ReverseDiagonal -> - (*flprint "REVERSE DIAGONAL IN CALCULATE POSITION\n";*) - let angle = atan ((ymax -. ymin) /. (xmax -. xmin)) - in let cx, cy = (xmax +. xmin) /. 2., (ymax +. ymin) /. 2. in - let dl = w /. 2. in - let dx = dl *. cos angle - in let dy = dl *. sin angle in - (*Printf.printf "Diagonal: angle = %f\n" (deg_of_rad angle);*) - cx -. dx, (ymax +. ymin) -. (cy -. dy), angle -. ((2. *. pi) -. ((pi -. (2. *. angle)) *. 2.) /. 2.) +. pi - | PosLeft (x, y) -> xmin +. x, ymin +. y, rot - | PosCentre (x, y) -> xmin +. x -. (w /. 2.), ymin +. y, rot - | PosRight (x, y) -> xmin +. x -. w, ymin +. y, rot - | Top d -> - let d = if ignore_d then 0. else d in - (xmin +. xmax) /. 2. -. w /. 2., ymax -. d, rot - | TopLeft d -> - let d = if ignore_d then 0. else d in - xmin +. d, ymax -. d, rot - | TopRight d -> - let d = if ignore_d then 0. else d in - xmax -. d -. w, ymax -. d, rot - | Left d -> - let d = if ignore_d then 0. else d in - xmin +. d, (ymax +. ymin) /. 2., rot - | BottomLeft d -> - let d = if ignore_d then 0. else d in - xmin +. d, ymin +. d, rot - | Bottom d -> - let d = if ignore_d then 0. else d in - (xmin +. xmax) /. 2. -. w /. 2., ymin +. d, rot - | BottomRight d -> - let d = if ignore_d then 0. else d in - xmax -. d -. w, ymin +. d, rot - | Right d -> - let d = if ignore_d then 0. else d in - xmax -. d -. w, (ymax +. ymin) /. 2., rot + let rot = if orientation = VerticalDown then rad_of_deg 270. else 0. in + match pos with + | Centre -> + (xmin +. xmax) /. 2. -. w /. 2., + (ymin +. ymax) /. 2., + rot + | Diagonal -> + let angle = atan ((ymax -. ymin) /. (xmax -. xmin)) + in let cx, cy = (xmax +. xmin) /. 2., (ymax +. ymin) /. 2. in + let dl = w /. 2. in + let dx = dl *. cos angle + in let dy = dl *. sin angle in + cx -. dx, cy -. dy, angle + | ReverseDiagonal -> + let angle = atan ((ymax -. ymin) /. (xmax -. xmin)) + in let cx, cy = (xmax +. xmin) /. 2., (ymax +. ymin) /. 2. in + let dl = w /. 2. in + let dx = dl *. cos angle + in let dy = dl *. sin angle in + cx -. dx, (ymax +. ymin) -. (cy -. dy), angle -. ((2. *. pi) -. ((pi -. (2. *. angle)) *. 2.) /. 2.) +. pi + | PosLeft (x, y) -> xmin +. x, ymin +. y, rot + | PosCentre (x, y) -> xmin +. x -. (w /. 2.), ymin +. y, rot + | PosRight (x, y) -> xmin +. x -. w, ymin +. y, rot + | Top d -> + let d = if ignore_d then 0. else d in + (xmin +. xmax) /. 2. -. w /. 2., ymax -. d, rot + | TopLeft d -> + let d = if ignore_d then 0. else d in + xmin +. d, ymax -. d, rot + | TopRight d -> + let d = if ignore_d then 0. else d in + xmax -. d -. w, ymax -. d, rot + | Left d -> + let d = if ignore_d then 0. else d in + xmin +. d, (ymax +. ymin) /. 2., rot + | BottomLeft d -> + let d = if ignore_d then 0. else d in + xmin +. d, ymin +. d, rot + | Bottom d -> + let d = if ignore_d then 0. else d in + (xmin +. xmax) /. 2. -. w /. 2., ymin +. d, rot + | BottomRight d -> + let d = if ignore_d then 0. else d in + xmax -. d -. w, ymin +. d, rot + | Right d -> + let d = if ignore_d then 0. else d in + xmax -. d -. w, (ymax +. ymin) /. 2., rot (* Process UTF8 text to /WinAnsiEncoding string. *) let winansi_of_utf8 s = @@ -1861,7 +1863,7 @@ let find_justification_offsets longest_w w position = function | LeftJustify -> begin match position with | TopLeft _ | Left _ | PosLeft _ | BottomLeft _ -> 0. - | Top _ | PosCentre _ | Bottom _ -> (longest_w -. w) /. 2. + | Top _ | PosCentre _ | Bottom _ | Centre -> (longest_w -. w) /. 2. | TopRight _ | BottomRight _ | PosRight _ | Right _ -> longest_w -. w | Diagonal -> 0. | ReverseDiagonal -> 0. @@ -1869,7 +1871,7 @@ let find_justification_offsets longest_w w position = function | RightJustify -> begin match position with | TopLeft _ | Left _ | PosLeft _ | BottomLeft _ -> ~-.(longest_w -. w) - | Top _ | PosCentre _ | Bottom _ -> ~-.((longest_w -. w) /. 2.) + | Top _ | PosCentre _ | Bottom _ | Centre -> ~-.((longest_w -. w) /. 2.) | TopRight _ | BottomRight _ | PosRight _ | Right _ -> 0. | Diagonal -> 0. | ReverseDiagonal -> 0. @@ -1877,7 +1879,7 @@ let find_justification_offsets longest_w w position = function | CentreJustify -> begin match position with | TopLeft _ | Left _ | PosLeft _ | BottomLeft _ -> ~-.((longest_w -. w) /. 2.) - | Top _ | PosCentre _ | Bottom _ -> 0. + | Top _ | PosCentre _ | Bottom _ | Centre -> 0. | TopRight _ | BottomRight _ | PosRight _ | Right _ -> (longest_w -. w) /. 2. | Diagonal -> 0. | ReverseDiagonal -> 0. diff --git a/cpdf.mli b/cpdf.mli index e85c7aa..7888e1c 100644 --- a/cpdf.mli +++ b/cpdf.mli @@ -232,6 +232,7 @@ type position = | Right of float | Diagonal | ReverseDiagonal + | Centre (** Produce a debug string of a [position] *) val string_of_position : position -> string diff --git a/cpdfcommand.ml b/cpdfcommand.ml index 5ad830b..88ff257 100644 --- a/cpdfcommand.ml +++ b/cpdfcommand.ml @@ -932,9 +932,12 @@ let setreversediagonal n = args.position <- Cpdf.ReverseDiagonal; args.justification <- Cpdf.CentreJustify -(* FIXME: We will add a center option to text positioning, which can be used for this too *) let setcenter n = - args.position <- Cpdf.Diagonal; + args.position <- Cpdf.Centre; + args.justification <- Cpdf.CentreJustify + +let setscalecenter n = + args.position <- Cpdf.ReverseDiagonal; args.justification <- Cpdf.CentreJustify let setbates n = @@ -1331,8 +1334,8 @@ and specs = ("-scale-contents", Arg.Float setscalecontents, " Scale Contents by the given factor"); - ("-center", - Arg.Float setcenter, + ("-scale-center", + Arg.Float setscalecenter, " Scale contents around center"); ("-scale-to-fit-scale", Arg.Float setscaletofitscale, @@ -1510,6 +1513,9 @@ and specs = ("-reverse-diagonal", Arg.Unit setreversediagonal, " Place text diagonally across page from top left"); + ("-center", + Arg.Unit setcenter, + " Place text in the center of the page"); ("-justify-left", Arg.Unit setjustifyleft, " Justify multiline text left"); diff --git a/cpdfmanual.pdf b/cpdfmanual.pdf index ad46ab9f509dc295df5f1f5a3907137c6f726757..df8aa59255b9f63b714f29c76562d0287d4d902e 100644 GIT binary patch delta 11085 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 B1yKM1 delta 11112 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 TFu{?daPV`Z(9%k)$e{cm*1j-W diff --git a/cpdfmanual.tex b/cpdfmanual.tex index c3b8e6f..4268419 100644 --- a/cpdfmanual.tex +++ b/cpdfmanual.tex @@ -1275,7 +1275,8 @@ The starting point can be set with the \texttt{-bates} option. For example: \small\verb!-bottomright 10! & Right of baseline 10 pts up and in from bottom right \\ \small\verb!-right 10! & Right of baseline 10 pts in from the center right \\ \small\verb!-diagonal! & Diagonal, bottom left to top right, centered on page\\ - \small\verb!-reverse-diagonal! & Diagonal, bottom right to top left, centered on page\\ + \small\verb!-reverse-diagonal! & Diagonal, bottom right to top left, centered on page\\ + \small\verb!-center! & Centered on page\\ \end{tabular} \end{framed}